BGP反射器和路由优选

发布于:2025-07-03 ⋅ 阅读:(13) ⋅ 点赞:(0)

前言:

  1. 当一台 BGP 路由器从多个路径(不同的邻居)学习到去往同一目的网络前缀的路由时,它需要根据一套严格的规则选择一条最优 (Best) 路径放入 IP 路由表,并用于数据转发
  2. BGP路由反射器(RR)是为解决IBGP全互联问题而设计的,通过减少IBGP邻居数量优化网络架构

BGP通告

BGP的通告遵循以下原则:

  • 只发布最优且有效路由
  • 从EBGP对等体获取的路由,会发布给所有对等体
  • IBGP水平分割:从IBGP对等体获取的路由,不会发送给IBGP对等体
  • BGP同步规则指的是:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等此处也包含静态路由)学习到这条路由,也就是要求IBGP路由与IGP路由同步。同步规则主要用于规避BGP路由黑洞问题

黑洞问题

简单来说: 我去快递站寄一个快递(数据包),快递站(路由器)明明知道最终目的地(目标 IP 地址),但中间的站点(路由器)却不知道下一步该把快递送到哪里去(没有有效的下一跳路由),或者知道送过去也没人签收(路由指向一个不存在的接口或设备)。结果,这个站点就直接把你的快递扔掉了(丢弃数据包),这就是BGP黑洞

总结:黑洞问题是 路由器知道目的地存在(通过 BGP 学到了这条路由),但它身没有能力将数据送达下一跳或者目的地

同步

同步的目的是为了防止上面说的“运营商内部路由缺失”导致的黑洞问题

简单来说黑洞是问题(数据消失),同步是过去用来防止特定黑洞问题的一种机制(通过限制路由广播)


水平分割

BGP 的水平分割是一种核心的防环机制,主要应用于 IBGP 对等体之间。其核心规则是:一条通过 IBGP 对等体学到的路由,不能再通告给另一个 IBGP 对等体

其目的是防止同一个 AS 内部的 BGP 路由环路(因为 IBGP 不修改 AS_PATH),EBGP不受限制

水平分割规则要求 IBGP 对等体之间必须形成全互联,于是产生了路由反射器和联盟

路由反射器(RR)

BGP 路由反射器 (Route Reflector - RR)

1. 解决的问题:IBGP 全互联困境
  • 规则限制: IBGP 路由器之间默认不能将从某个 IBGP 对等体学到的路由再通告给其他 IBGP 对等体,因为环路的存在

  • 扩展性问题: 在一个大型 AS 内部,如果要求所有 IBGP 路由器之间建立全互联 (Full Mesh) 连接(n*(n-1)/2 个连接),管理和维护成本会急剧上升,配置复杂且资源消耗巨大

2. RR 的核心思想
  • 角色定义:

    • 路由反射器 (RR): 允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备

    • 客户端 (Client): 与RR形成反射邻居关系的IBGP设备。RR 会将从客户端或非客户端学到的路由反射给其他客户端

    • 非客户端 (Non-Client): 既不是RR也不是客户机的IBGP设备。RR 只会将从非客户端学到的路由反射给客户端(不会反射给其他非客户端),只会将从客户端学到的路由反射给客户端和非客户端

  • 反射规则: RR 在收到一条 IBGP 路由后,会根据来源决定如何反射:

    1. 从客户端学到的路由: 反射给所有其他客户端所有非客户端

    2. 从非客户端学到的路由: 反射给所有客户端不反射给其他非客户端

    3. 从 EBGP 对等体学到的路由: 按照正常 IBGP 规则通告给所有 IBGP 对等体(包括客户端和非客户端),因为这条规则只限制 IBGP到 IBGP的传递

  • 优势: 减少 IBGP 连接数

  • RR的防环机制:由Originator_ID和Cluster_List这两个属性来阻止防环

  •  配置本设备为 RR,并指定客户端
    # 语法: peer <client-ip-address> reflect-client
    peer 2.2.2.2 reflect-client  # 将 2.2.2.2 配置为客户端
    peer 3.3.3.3 reflect-client  # 将 3.3.3.3 配置为客户端
    # peer 4.4.4.4 没有被配置为客户端,因此它是非客户端
    
     (可选) 配置 Cluster ID (默认是 Router ID)
    reflector cluster-id 10.10.10.10

联盟

联盟将一个AS内部划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。配置联盟后,原AS号将作为每个路由器的联盟ID

这样有两个好处:

  • 一是可以保留原有的IBGP属性,包括Local Preference属性、MED属性和NEXT_HOP属性等
  • 二是联盟相关的属性在传出联盟时会自动被删除,即无需在联盟的出口处配置过滤子AS号等信息的操作

核心思想: 对外部世界隐藏内部复杂的 AS 划分,整个联盟对外仍然表现为一个单一的 AS 号(称为联盟 ID (Confederation ID

联盟 ID (Confederation ID):这是整个联盟对外呈现的 AS 号

成员 AS (Member-AS):联盟内部划分成的逻辑子自治系统,每个成员AS有自己的AS号,这个 AS 号仅在联盟内部可见,对外部 AS 是不可见的

联盟边界路由器 (Confederation Border Router):指那些既与联盟内部其他成员 AS 的邻居建立会话(联盟内 EBGP),也与外部真实 AS 的邻居建立会话(标准 EBGP)的路由器

注意:

  • 同一个成员 AS 内的路由器之间运行标准IBGP

  • 不同成员 AS 的路由器之间运行联盟内EBGP (Confederation EBGP)

防环:

  • 通告路由时,在 AS_PATH 属性中会添加一个特殊的段类型 AS_CONFED_SEQUENCE,里面包含经过的成员 AS 号序列
  • 路由器如果在自己收到的 AS_PATH 的 AS_CONFED_SEQUENCE 段中看到自己所在的成员 AS 号,就会丢弃该路由更新,防止在联盟内部形成环路
[Router] bgp 100 // 所有路由器都使用联盟 ID 65000
[Router-bgp] confederation id 100  // 再次指定联盟 ID 
[Router-bgp] confederation peer-as 101 102  // 列出联盟内所有的成员 AS 号

在每个路由器上指定自己所属的成员 AS
[Router-bgp] confederation as-number <member-as>  // 例如 R1/R2: 101; R3/R4: 102

建立 BGP 邻居关系
IBGP
[Router-bgp] peer <R2_IP_Address> as-number 100  // AS号写联盟ID 100
[Router-bgp] peer <R2_IP_Address> connect-interface LoopBack0  // 通常用环回口建立

EBG
[Router-bgp] peer <R3_IP_Address> as-number 102  // AS号写邻居的 member-as
[Router-bgp] peer <R3_IP_Address> ebgp-max-hop 2   // 如果非直连,需要指定跳数
[Router-bgp] peer <R3_IP_Address> connect-interface LoopBack0 // 用环回口建立

与外部真实 AS,不再是联盟内部的
 [Router-bgp] peer <2.2.2.2> as-number 100  // 标准 EBGP

路由优选

当到达同一目的地存在多条路由时,BGP依次对比下列属性来选择路由:

  1. 丢弃下一跳不可达的路由,是必备的前置条件

  2. 优选协议首选值(PrefVal)最大的路由,值越大越优

    协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效

  3. 优选本地优先级(Local_Pref)最大的路由,值越大越优

  4. 依次优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由

  5. 优选AS路径(AS_Path)最短的路由,越短越优先

  6. 依次优选Origin类型为IGP、EGP、Incomplete的路由,优先级: (i) >(e) > (?)

  7. 对于来自同一AS的路由,优选MED值最低的路由,越小越优

  8. 依次优选EBGP路由、IBGP路由,EBGP 路由优先级高于 IBGP 路由

  9. 优选到BGP下一跳IGP度量值(metric)最小的路由,值越小越优

  10. 优选 Cluster_List 长度:越短越优

  11. 优选最低的 Router ID : 优选 BGP 邻居中 Router ID 最小 的那台路由器通告的路由。如果路由是通过 RR 反射来的,则比较 Originator_ID(如果存在且不为 0)

  12. 优选最低的 IP Address 邻居: 如果 Router ID 相同(或比较 Originator_ID 后相同),则优选邻居 IP 地址(建立 BGP 会话的源 IP)最小的那条路径

BGP负载分担

当到达同一目的地址存在多条等价路由时,可以通过BGP等价负载分担实现均衡流量的目的 

形成BGP等价负载分担的条件是“BGP选择路由的策略”中的前9条规则中需要比较的属性完全相同


网站公告

今日签到

点亮在社区的每一天
去签到