BGP(Border Gateway Protocol)在交换路由时遵循的规则

BGP(Border Gateway Protocol)在交换路由时遵循一系列严格的规则,这些规则决定了如何选择、传播和优选路由。以下是BGP路由交换的核心规则和流程:


一、BGP路由交换的基本规则

1. 路由通告规则

  • 只通告最优路由:BGP Speaker(路由器)只会将 自己最优的(Best Path) 路由通告给邻居。
  • 水平分割(Split Horizon)
    • 从 IBGP邻居 学到的路由,不会 通告给其他 IBGP邻居(防止环路)。
    • 从 EBGP邻居 学到的路由,可以通告给 IBGP和EBGP邻居
  • Next-Hop 处理
    • EBGP路由:下一跳(Next-Hop)会被改为自己的出口IP。
    • IBGP路由:默认不修改下一跳(除非配置 next-hop-self)。

2. 路由接收规则

  • 合法性检查
    • 检查 AS_PATH 是否包含自己的AS(防止环路)。
    • 检查 ORIGINNEXT_HOP 是否有效。
  • 路由优选(Best Path Selection)
    • 如果收到多条相同前缀的路由,BGP会按照 选路规则 选择最优路由。

二、BGP路由传播流程

1. EBGP 路由传递

  • 从EBGP邻居学习路由
    • 检查 AS_PATH,确保不包含自己的AS。
    • 修改 NEXT_HOP 为自己的出口IP。
    • 可以传递给 IBGP和EBGP邻居

2. IBGP 路由传递

  • 从IBGP邻居学习路由
    • 不会修改 NEXT_HOP(除非配置 next-hop-self)。
    • 不会传递给其他IBGP邻居(水平分割)。
    • 必须通过 路由反射器(RR) 或 全互联(Full Mesh) 解决IBGP传播问题。

三、BGP路由优选规则(Best Path Selection)

BGP在收到多条相同前缀的路由时,会按 顺序 比较以下属性,直到选出最优路由:

顺序比较规则说明
1最高 Weight(Cisco私有)本地优先级,越大越优(仅本地有效)。
2最高 LOCAL_PREF默认100,越大越优(IBGP范围内有效)。
3本地生成的路由(Network/聚合)优于从邻居学习的路由。
4最短 AS_PATHAS_PATH 越短越优(可配置 bgp bestpath as-path ignore 跳过)。
5最低 ORIGIN 类型IGP(0) < EGP(1) < Incomplete(2)
6最低 MED(Multi-Exit Discriminator)越小越优(影响入站流量)。
7EBGP 优于 IBGP从EBGP学到的优先于IBGP。
8到 NEXT_HOP 的 IGP 开销最小检查BGP下一跳的IGP cost(如OSPF、ISIS)。
9最老的 EBGP 路由稳定性优先(较长时间未变化的路由)。
10最低 Router ID作为最后的比较条件。
11最短 Cluster List(路由反射器环境)适用于RR场景。
12最低邻居 IP 地址最终决胜条件。

四、BGP路由策略控制

1. 影响入站流量

  • MED(Multi-Exit Discriminator):告诉邻居从哪个入口进来(值越小越优)。
  • AS_PATH Prepending:在 AS_PATH 中重复添加自己的AS,使路径看起来更长(降低优先级)。

2. 影响出站流量

  • LOCAL_PREF:调整IBGP路由的优先级(值越大越优)。
  • Weight(Cisco私有):本地有效,不影响邻居。

3. 过滤路由

  • Prefix-List / Distribute-List:基于IP前缀过滤。
  • AS_PATH Filter:基于正则表达式过滤特定AS的路由。
  • Route-Map:灵活控制路由属性(如修改 LOCAL_PREFMED)。

五、典型场景示例

1. 多宿主(Multi-Homing)

  • 目标:优化入站和出站流量。
  • 方法
    • 使用 LOCAL_PREF 控制出站流量。
    • 使用 MED 或 AS_PATH Prepending 影响入站流量。

2. 路由反射器(Route Reflector)

  • 问题:IBGP全互联难以维护。
  • 解决方案
    • 指定路由反射器(RR),允许IBGP路由反射给其他客户端。

3. 联盟(BGP Confederation)

  • 问题:AS太大,IBGP全互联复杂。
  • 解决方案
    • 将大AS划分为多个子AS(联盟),内部运行EBGP,但对端仍视为单个AS。

六、总结

  • BGP路由交换的核心规则
    • 只通告最优路由,遵循 水平分割
    • EBGP路由修改NEXT_HOP,IBGP默认不修改
    • 优选路由时按顺序比较12个属性(Weight > LOCAL_PREF > AS_PATH > …)。
  • 策略控制
    • 入站流量:MEDAS_PATH Prepending
    • 出站流量:LOCAL_PREFWeight
    • 过滤路由:Prefix-ListRoute-Map

BGP的灵活性使其成为互联网路由的核心协议,但同时也需要精细的策略控制以避免路由振荡和次优路径问题。