13、BGP路由反射器、路由优选

由于水平分割的原因,为了保证AS内的路由器都学到完整路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板:

  • 路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时;
  • AS内BGP网络的可扩展性较差。

为此可以采用路由反射器技术。

路由反射器

引入路由反射器之后存在两种角色:

  • RR(Route Reflector):路由反射器
  • Client:RR客户端

RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联。

将一台BGP路由器指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,它并不知晓网络中存在RR。

路由反射器规则

RR在接收BGP路由时:

  • 如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户。
  • 如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户。
  • 如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体。(该规则,实际上就是BGP的基本规则之一:从EBGP学到的,会发送给所有IBGP)

总结:非非不传。从非客户学到的不会传给非客户。其他情况都传。

注意:路由反射只是在AS内部传递。

反射规则示例

注意此处“反射”和“发送”的区别。

  • “发送”指的是传统情况下(相当于RR不存在的场景下)的BGP路由传递行为。
  • “反射”指的是遵循路由反射规则的情况下,RR执行的路由传递动作,被反射出去的路由会被RR插入特殊的路径属性。

image-20250301092110003

RR场景下的路由防环

RR的设定使得IBGP水平分割原则失效,这就可能导致环

路的产生,为此RR会为BGP路由添加两个特殊的路径属

性来避免出现环路:

  • Originator_ID(起源者ID)
  • Cluster_List(集群列表、簇列表)

Originator_ID、Cluster_List属性都属于可选非过渡类型

Originator ID

RR将路由反射出去时,会加上Originator_ID属性,其值为通告该路由的路由器的Router ID。

如果AS内有多个RR,则Originator_ID由第一个RR创建,并且不会被后续的RR更改。

与AS_Path类似,当路由器收到的路由的Originator_ID的值与自己的Router ID相同时,则会忽略该条路由更新。

image-20250301094547375

路由反射簇(Cluster)

路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇(如下图)。

每一个簇都有唯一的簇ID(Cluster_ID,缺省时为RR的BGP Router ID )。

当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中。

当RR收到的路由的Cluster_list中包含自己的Cluster_ID时,则认为该路由存在环路,忽略该条路由更新。

image-20250301095049452

RR应用举例

image-20250301095154953

配置案例

基本配置介绍:

  1. 配置路由反射器及其客户端

缺省情况下,BGP未配置路由反射器及其客户。

[Huawei-bgp] peer {group-name | ipv4-address } reflect-client
# 例子
peer 1.1.1.1 reflect-client
  1. 配置路由反射器的集群ID

缺省情况下,每个路由反射器使用自己的Router ID作为集群ID。

[Huawei-bgp] reflector cluster-id cluster-id
# 例子
reflector cluster-id 2.2.2.2

PPT上的案例

注意:

  1. R3的g0/0/1接口也要宣告进OSPF。因为从EBGP学到的路由传递给IBFP时会保持下一跳不变【10.0.34.4,当R3收到路由10.4.4.0/24后下一跳仍然为34.4,但是R3却没有前往34网段的路由,所以认为路由不可达,不会讲路由反射出去。

    当路由反射器执行路由反射时,它只将自己使用的、最优的BGP路由进行反射

  2. 各R1、2、3的环回口也需要宣告进ospf,否则缺乏到达对等体的路由,路由器讲无法建立TCP连接,从而停留在idle状态。

image-20250301095547248

R1的配置:

bgp 100
router-id 10.0.1.1
peer 10.0.2.2 as-number 100
peer 10.0.2.2 connect-interface loopback 0

R2的配置:

bgp 100
router-id 10.0.2.2
peer 10.0.1.1 as-number 100
peer 10.0.1.1 connect-interface loopback 0
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface loopback 0
peer 10.0.3.3 reflect-client

R3的配置:

bgp 100
router-id 10.0.3.3
peer 10.0.2.2 as-number 100
peer 10.0.2.2 connect-interface loopback 0
peer 10.0.34.4 as-number 20

R4的配置:

bgp 200
router-id 10.0.4.4
peer 10.0.34.3 as-number 100
network 10.4.4.0 24

配置完成后,分别在R3和R1上查看BGP路由10.4.4.0/24的信息

display bgp routing-table 10.4.4.0 24

image-20250301111306169

思考题

  1. (单选题)AS_Path属性属于哪种类型的BGP属性?( C)

    • A. 可选过渡

    • B. 可选非过渡

    • C. 公认必遵

    • D. 公认任意

  2. (简答题)MED值的作用是什么?是否可以跨越AS传递该属性值?

在本AS存在多个入口时通过MED值可影响其他AS选择进入本AS的路径,MED作为可选非过渡属性,不可以跨越AS传递。

  1. (简单题)为防止环路产生,路由反射器使用了何种路径属性?

Originator_ID、Cluster_ID

BGP路由优选

BGP路由优选规则如下:

image-20250303102408761

当到达同一个目的网段存在多条路由时,BGP通过如下的次序进行路由优选:

0.丢弃下一跳不可达的路由。

  1. 优选Preferred-Value属性值最大的路由。
  2. 优选Local_Preference属性值最大的路由。
  3. 本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的。
  4. 优选AS_Path属性值最短的路由。
  5. 优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。
  6. 优选MED属性值最小的路由。
  7. 优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)。
  8. 优选到Next_Hop的IGP度量值最小的路由。
  9. 优选Cluster_List最短的路由。
  10. 优选Router ID(Orginator_ID)最小的设备通告的路由。
  11. 优选具有最小IP地址的对等体通告的路由。

BGP路由表中显示的路径属性比较的先后顺序。

image-20241005204930336

BGP路由聚合

第三条规则,简称本地优先。

从高到低优先级如下:

  1. 手动聚合:手动通过aggregate命令在BGP视图内聚合生成的聚合路由
  2. 自动聚合:Summary automatic命令生成的自动聚合路由
  3. Network方式注入的路由
  4. Import-route方式注入的路由

手动聚合:

ip route-static 10.0.45.0 255.255.255.128 null0
ip route-static 10.0.45.128 255.255.255.128 null0
bgp 200
# 配置手动聚合,detail-suppressed用于抑制明细路由的发布
aggregate 10.0.45.0 255.255.255.0 detail-suppressed
import-route static

自动聚合:

BGP将按照自然网段聚合路由(例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合为自然网段A类地址10.0.0.0/8),并且BGP只向对等体通告聚合后的路由。(也就是只聚合成有类路由)

ip route-static 10.0.45.0 255.255.255.128 null0
ip route-static 10.0.45.128 255.255.255.128 null0
bgp 200
# 开启自动聚合
summary automatic
import-route static

BGP负载分担

形成BGP路由等价负载分担的条件:

  1. Preferred-Value属性值相同。
  2. Local_Preference属性值相同。
  3. 都是聚合路由或者非聚合路由。
  4. AS_Path属性长度相同。
  5. Origin类型(IGP、EGP、Incomplete)相同。
  6. MED属性值相同。
  7. 都是EBGP路由或都是IBGP路由。
  8. AS内部IGP的Metric相同。
  9. AS_Path属性完全相同。(注意,该条条件不是BGP优选规则之一)

配置ibgp负载均衡:

bgp 200
# 启用ibgp多路径负载均衡,并允许在ibgp路由中选择最多两条路由进行负载均衡。
maximum load-balancing ibgp 2

配置BGP路由负载分担后:

image-20250303103358096

思考题

  1. (简答题)从EBGP对等体收到的BGP路由通告给IBGP对等体时如何修改next_hop属性值为自身更新源地址?

    答:使用peer x.x.x.x next-hop-local命令指定next_hop属性为TCP连接源地址。

  2. (判断题)当前三条优选规则相同的情况下,BGP会比较AS_Path长度,当AS_Path长度相同时会比较AS号的大小。

    错。AS_Path只比较长度,长度相同时,就比较下一跳规则(5、Origin属性)。

posted @ 2025-05-28 11:55  最爱喝开水  阅读(397)  评论(0)    收藏  举报