网络学习笔记(8)- BGP路由优选

拓扑说明

  • AS、设备互联地址如图所示,所有设备均创建Loopback0接口,IP地址为10.0.x.x(x为设备编号),所有设备使用环回口地址作为Router ID。
  • AS200内运行OSPF,在内部互联接口(不包含连接外部AS的接口)、Loopback接口上激活OSPF。

1657720282352.png

  • AS内部基于Loopback0接口建立IBGP对等体关系,AS之间基于直连接口建立EBGP对等体关系。
  • R4、R5上存在相同的网段:10.0.45.0/24,通过import-route命令将该网段的直连路由注入到BGP,用于验证BGP路由优选规则。

1657720332279.png

BGP路由优选规则

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

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

丢弃下一跳不可达的路由

  • R4、R5将BGP路由10.0.45.0/24通告给AS200时Next_Hop属性值为10.0.24.4、10.0.34.5。
  • R2、R3将路由通告给R1时不修改Next_Hop属性值,R1学习到的两条BGP路由10.0.45.0/24下一跳为10.0.24.4、10.0.34.5。
  • R1进行BGP路由下一跳迭代查询时,由于R2、R3未在连接外部AS的接口上激活OSPF,导致路由迭代失败,R1上的BGP路由10.0.45.0/24下一跳不可达。
  • 在R1上通过display bgp routing查看BGP路由表,此时BGP路由10.0.45.0/24为非有效路由条目。

1657720604567.png

  • 在R2、R3上通过next-hop-local命令修改Next_Hop属性值为本地更新源地址。
  • R2、R3向R1通告BGP路由时Next_Hop属性值将会变为:10.0.2.2、10.0.3.3。
  • 这两个下一跳地址在R1上能够成功进行路由迭代,BGP路由的下一跳地址将会变成可达。

1657720672432.png

1657720692952.png

优选Preferred-Value属性值最大的路由

使用preferred-value命令修改R3通告的BGP路由其Preferred-Value为100 ,优于R2通告BGP路由的默认Preferred-Value ,R1将会优选R3通告的BGP路由10.0.45.0/24。

1657720756392.png

R3(10.0.3.3)通告的BGP路由拥有更高的Preferred-Value(100),因此R1将会优选R3通告的BGP路由10.0.45.0/24。

优选Local_Preference属性值最大的路由

R3上执行如下操作:

ip ip-prefix local_pref index 10 permit 10.0.45.0 24
#
route-policy local_pref permit node 10
 if-match ip-prefix local_pref
 apply local-preference 200
route-policy local_pref permit node 20
#
bgp 200
peer 10.0.1.1 route-policy local_pref export

1657720926318.png

下一跳可达、相同Preferred-Value的情况下将会比较Local_Preference,R3通告的BGP路由Local_Preference值为200,高于R2通告的BGP路由,R1将会优选R3通告的BGP路由。

1657721616286.png

优选本地始发的BGP路由

  • 本条规则可以概括为在相同条件下,优选本地生成的路由,从对等体学习到的路由条目为次优。
  • 同时本地生成的路由也可能存在多种途径,当本地存在多种途径学习到相同路由时,从高到低优先级如下:
    • 手动聚合:手动通过aggregate命令在BGP视图内聚合生成的聚合路由
    • 自动聚合:Summary automatic命令生成的自动聚合路由
    • Network方式注入的路由
    • Import-route方式注入的路由

手动聚合

R3上配置两条静态路由,将静态路由通过import-route注入到BGP,并通过aggregate命令进行手动聚合,同时增加关键字detail-suppressed抑制明细路由的对外通告。

R3上执行如下操作:

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
 aggregate 10.0.45.0 255.255.255.0 detail-suppressed
 import-route static

1657721838414.png

R3上查看BGP路由表存在两条BGP路由10.0.45.0/24:

  • 本地产生的:静态路由注入到BGP中,由手动聚合产生
  • 对等体通告:由对等体R5(10.0.35.5)通告

在R3上这两条路由都不存在local_preference、Preferred-Value值,此时比较路由来源:手动聚合最优,R3将会优选本地手动聚合产生的BGP路由。

1657721946549.png

R3上通过display bgp routing-table 10.0.45.0 24查看BGP路由10.0.45.0/24的详细信息,存在两条有效路由,其中最优的为手动聚合产生的路由。

[R3]display bgp routing-table 10.0.45.0 24
 BGP local router ID : 10.0.3.3
 Local AS number : 200
 Paths:   2 available, 1 best, 1 select
 BGP routing table entry information of 10.0.45.0/24:
 Aggregated route. 
 Route Duration: 00h00m14s  
 Direct Out-interface: NULL0
 Original nexthop: 127.0.0.1
 Qos information : 0x0
 AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, active,
pre 255
 Aggregator: AS 200, Aggregator ID 10.0.3.3, Atomic-aggregate
 Advertised to such 2 peers:
    10.0.35.5
    10.0.1.1

自动聚合

  • R3上配置两条静态路由,将静态路由通过import-route注入到BGP,并开启自动聚合,BGP将按照自然网段聚合路由(例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合为自然网段A类地址10.0.0.0/8),并且BGP只向对等体通告聚合后的路由。
  • 在R3上将会看到路由被聚合为10.0.0.0/8。
  • R5上又注入了路由10.0.0.0/8,并通告给了R3。

R3上执行如下操作:

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

1657722057101.png

R3上查看BGP路由表存在两条BGP路由10.0.0.0 :

  • 本地产生:静态路由注入到BGP中,自动聚合产生
  • 对等体通告:由对等体R5(10.0.35.5)通告

在R3上这两条路由都不存在local_preference、Preferred-Value值,此时比较路由来源:本地产生优于从对等体学习到的,R3将会优选本地自动聚合产生的BGP路由。

1657722177014.png

优选的依旧是本地产生的BGP路由,但是可以看到本地产生的BGP路由有两条,从该表项无法判断出优选的为手动聚合还是自动聚合产生的BGP路由。

在R3上执行手动聚合:

bgp 200
 aggregate 10.0.0.0 255.0.0.0 detail-suppressed

1657722245686.png

查看R3的BGP路由表

1657722281158.png

R3上通过display bgp routing-table 10.0.0.0 查看BGP路由10.0.0.0/8的详细信息,存在三条有效路由,其中最优的条目由聚合产生,并且存在Atomic-aggregate属性,由此可以看出该聚合条目为手动聚合产生的条目。

R3上相同的BGP聚合路由:手动聚合 > 自动聚合。

在该案例中我们验证了手动聚合产生的BGP路由优于自动聚合产生的BGP路由。

 BGP local router ID : 10.0.3.3
 Local AS number : 200
 Paths:   3 available, 1 best, 1 select
 BGP routing table entry information of 10.0.0.0/8:
 Aggregated route. 
 Route Duration: 00h08m17s  
 Direct Out-interface: NULL0
 Original nexthop: 127.0.0.1
 Qos information : 0x0
 AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, active,
 pre 255
 Aggregator: AS 200, Aggregator ID 10.0.3.3, Atomic-aggregate
 Advertised to such 2 peers:
    10.0.35.5
    10.0.1.1

优选AS_Path属性值最短的路由

1657722507733.png

1657722534941.png

优选Origin属性最优的路由

  • R4、R5上默认采用import-route方式将路由10.0.45.0/24注入到BGP,R1的BGP路由表中两条BGP路由10.0.45.0/24其Origin属性都是“?”,此时R1优选R4注入的BGP路由。
  • 在R5上修改注入路由的方式为network
  • 之后在R1上再次查看BGP路由表。

1657722606638.png

此时R5注入的BGP路由10.0.45.0/24其Origin属性为“i”,在前几条优选规则相同情况下,起源类型为“i”的BGP路由成为优选路由。

1657722725236.png

优选MED最小

R2上通过路由策略修改通告给R1的BGP路由其MED属性值

1657722796070.png

默认情况下BGP只会对来自同一个AS的相同路由比较MED值,可以通过命令开启来自不同AS的相同路由也比较MED值。

ip ip-prefix med index 10 permit 10.0.45.0 24
#
route-policy med permit node 10
 if-match ip-prefix med
 apply cost 20
route-policy med permit node 20
#
bgp 200
peer 10.0.1.1 route-policy med export
compare-different-as-med

R4发布的BGP路由MED值为20,R5发布的BGP路由不携带MED值(不携带默认为0),R5发布的BGP路由拥有更小的MED值,R1优选R5发布的BGP路由。

1657722858566.png

优选从EBGP对等体学来的路由

在R1上创建一条10.0.45.0/24的静态路由(指向null0),将该条路由发布到BGP,同时为了保证R1、R5通告给R3的BGP路由AS_Path长度相同,使用路由策略为R1通告给R3的路由加上AS_Path属性,其值为:500。

1657722958301.png

R1上执行如下操作:

ip route-static 10.0.45.0 255.255.255.0 null0
ip ip-prefix ebgp index 10 permit 10.0.45.0 24
#
route-policy ebgp permit node 10
 if-match ip-prefix ebgp
 apply as-path 500 additive
route-policy ebgp permit node 20
#
bgp 200
  import-route static
  peer 10.0.3.3 route-policy ebgp export

R3上将会同时收到R1、R5通告的BGP路由10.0.45.0/24,并且前面的优选规则无法比较出优选路由。

此时比较通告路由的对等体类型,R5为EBGP对等体,R1为IBGP对等体,EBGP对等体通告的BGP路由优于IBGP对等体通告的BGP路由,R3优选R5通告的BGP路由。

1657723031494.png

优选到Next_Hop的IGP度量值最小的路由

在BGP路由详细信息中存在IGP cost值这一内容,该值为本地IP路由表中去往Original nexthop地址的路由Cost值。

Destination/Mask    Proto   Pre  Cost    NextHop       Interface
10.0.3.3/32              OSPF    10    1       10.0.13.3       GigabitEthernet0/0/1

当前7条优选规则无法比较出优选BGP路由时将会比较前往下一跳地址的IGP cost值。

1657723270685.png

R1上前往10.0.3.3的IGP cost值为默认值1,而前往10.0.2.2的IGP cost值为10。

R1上优选下一跳为10.0.3.3的BGP路由。

1657723356700.png

R1上通过display bgp routing-table 10.0.45.0 24 查看BGP路由的详细信息,下一跳10.0.2.2的BGP路由其IGP cost值变为了10,而下一跳为10.0.3.3的BGP路由其IGP cost为默认值1,所以R1优选下一跳为10.0.3.3的路由。

BGP路由等价负载分担

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

  • Preferred-Value属性值相同。
  • Local_Preference属性值相同。
  • 都是聚合路由或者非聚合路由。
  • AS_Path属性长度相同。
  • Origin类型(IGP、EGP、Incomplete)相同。
  • MED属性值相同。
  • 都是EBGP路由或都是IBGP路由。
  • AS内部IGP的Metric相同。
  • AS_Path属性完全相同。

以左侧拓扑为例,R1上两条BGP路由在不做任何路由策略、配置的情况下,前8条优选规则无法比较出优选路由。因此可以配置IBGP路由的负载分担。

1657723526910.png

1657723567261.png

优选Cluster_List最短的路由

对拓扑做如下修改:

  • 只在R5上将10.0.45.0/24发布到BGP
  • 配置R1为RR,R3为R1的客户端。
  • R2、R3之间基于环回口建立IBGP对等体关系

R2上将收到R3通告的BGP路由10.0.45.0/24、R1反射的BGP路由10.0.45.0/24。

默认配置下,前面介绍的规则无法比较出优选路由,此时将根据Cluster_List进行优选。

1657723751638.png

从BGP路由表中无法看出优选的是R1反射的BGP路由还是R3通告的BGP路由,此时可以通过命令display bgp routing 10.0.45.0 24查看BGP路由详细信息。

1657723772412.png

经由R1反射的路由不是最优路由,原因也被标出:not preferred for Cluster List

R3直接通告给R2的BGP路由因为没有经过路由反射器,不存在Cluster_List属性,即被认为Cluster_List长度为0,小于由R1反射的BGP路由其Cluster_List长度(1),所以R3通告的BGP路由为优选路由。

 BGP routing table entry information of 10.0.45.0/24:
 From: 10.0.1.1 (10.0.1.1)
 Route Duration: 00h03m10s  
 Relay IP Nexthop: 10.0.12.1
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.0.3.3
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 2, not preferred for Cluster List
 Originator:  10.0.3.3
 Cluster list: 10.0.1.1
 Not advertised to any peer yet

优选Router ID最小

默认配置下R1从R2、R3都会收到BGP路由10.0.45.0/24,并且前面的优选规则无法比较出优选路由,最终将会根据本条规则,优选Router ID最小的对等体通告的BGP路由,在本案例中也就是R2通告的BGP路由。

1657723868885.png

如果BGP路由携带Originator_ID属性,则在本条规则的优选过程中,将比较Originator_ID的大小,并优选Originator_ID最小的BGP路由。

1657723902604.png

R3反射过来的BGP路由未被优选,原因标注的还是Router ID,这里的Router ID其实是指Originator ID(其中携带的内容为原始路由发布者的Router ID)。

1657724086549.png

优选具有最小IP地址的对等体

当前面所有规则都无法比较出优选路由时,此时会根据对等体地址大小来进行优选,对等体地址较小者发送的路由较优。

修改前一条规则的验证拓扑,R2、R3都与R4相连,R4作为RR客户端,只在R4上将路由发布到BGP,此时R2、R3反射的BGP路由将拥有相同的Originator ID:10.0.4.4。

1657724009710.png

R3反射过来的BGP路由未被优选,原因为对等体地址较大:来自R2反射的路由对等体地址为10.0.2.2,而R3反射的路由对等体地址为10.0.3.3,因此未被优选。

1657724061955.png

总结图

BGP 选路.png

|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/331
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
网络学习笔记(8)- BGP路由优选
拓扑说明 AS、设备互联地址如图所示,所有设备均创建Loopback0接口,IP地址为10.0.x.x(x为设备编号),所有设备使用环回口地址作为Router ID。 AS200内运行O……
<<上一篇
下一篇>>
文章目录
关闭
目 录