网络学习笔记(8)- BGP路由优选
拓扑说明
- AS、设备互联地址如图所示,所有设备均创建Loopback0接口,IP地址为10.0.x.x(x为设备编号),所有设备使用环回口地址作为Router ID。
- AS200内运行OSPF,在内部互联接口(不包含连接外部AS的接口)、Loopback接口上激活OSPF。
- AS内部基于Loopback0接口建立IBGP对等体关系,AS之间基于直连接口建立EBGP对等体关系。
- R4、R5上存在相同的网段:10.0.45.0/24,通过import-route命令将该网段的直连路由注入到BGP,用于验证BGP路由优选规则。
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为非有效路由条目。
- 在R2、R3上通过next-hop-local命令修改Next_Hop属性值为本地更新源地址。
- R2、R3向R1通告BGP路由时Next_Hop属性值将会变为:10.0.2.2、10.0.3.3。
- 这两个下一跳地址在R1上能够成功进行路由迭代,BGP路由的下一跳地址将会变成可达。
优选Preferred-Value属性值最大的路由
使用preferred-value命令修改R3通告的BGP路由其Preferred-Value为100 ,优于R2通告BGP路由的默认Preferred-Value ,R1将会优选R3通告的BGP路由10.0.45.0/24。
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
下一跳可达、相同Preferred-Value的情况下将会比较Local_Preference,R3通告的BGP路由Local_Preference值为200,高于R2通告的BGP路由,R1将会优选R3通告的BGP路由。
优选本地始发的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
R3上查看BGP路由表存在两条BGP路由10.0.45.0/24:
- 本地产生的:静态路由注入到BGP中,由手动聚合产生
- 对等体通告:由对等体R5(10.0.35.5)通告
在R3上这两条路由都不存在local_preference、Preferred-Value值,此时比较路由来源:手动聚合最优,R3将会优选本地手动聚合产生的BGP路由。
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
R3上查看BGP路由表存在两条BGP路由10.0.0.0 :
- 本地产生:静态路由注入到BGP中,自动聚合产生
- 对等体通告:由对等体R5(10.0.35.5)通告
在R3上这两条路由都不存在local_preference、Preferred-Value值,此时比较路由来源:本地产生优于从对等体学习到的,R3将会优选本地自动聚合产生的BGP路由。
优选的依旧是本地产生的BGP路由,但是可以看到本地产生的BGP路由有两条,从该表项无法判断出优选的为手动聚合还是自动聚合产生的BGP路由。
在R3上执行手动聚合:
bgp 200
aggregate 10.0.0.0 255.0.0.0 detail-suppressed
查看R3的BGP路由表
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属性值最短的路由
优选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路由表。
此时R5注入的BGP路由10.0.45.0/24其Origin属性为“i”,在前几条优选规则相同情况下,起源类型为“i”的BGP路由成为优选路由。
优选MED最小
R2上通过路由策略修改通告给R1的BGP路由其MED属性值
默认情况下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路由。
优选从EBGP对等体学来的路由
在R1上创建一条10.0.45.0/24的静态路由(指向null0),将该条路由发布到BGP,同时为了保证R1、R5通告给R3的BGP路由AS_Path长度相同,使用路由策略为R1通告给R3的路由加上AS_Path属性,其值为:500。
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路由。
优选到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值。
R1上前往10.0.3.3的IGP cost值为默认值1,而前往10.0.2.2的IGP cost值为10。
R1上优选下一跳为10.0.3.3的BGP路由。
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路由的负载分担。
优选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进行优选。
从BGP路由表中无法看出优选的是R1反射的BGP路由还是R3通告的BGP路由,此时可以通过命令display bgp routing 10.0.45.0 24查看BGP路由详细信息。
经由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路由。
如果BGP路由携带Originator_ID属性,则在本条规则的优选过程中,将比较Originator_ID的大小,并优选Originator_ID最小的BGP路由。
R3反射过来的BGP路由未被优选,原因标注的还是Router ID,这里的Router ID其实是指Originator ID(其中携带的内容为原始路由发布者的Router ID)。
优选具有最小IP地址的对等体
当前面所有规则都无法比较出优选路由时,此时会根据对等体地址大小来进行优选,对等体地址较小者发送的路由较优。
修改前一条规则的验证拓扑,R2、R3都与R4相连,R4作为RR客户端,只在R4上将路由发布到BGP,此时R2、R3反射的BGP路由将拥有相同的Originator ID:10.0.4.4。
R3反射过来的BGP路由未被优选,原因为对等体地址较大:来自R2反射的路由对等体地址为10.0.2.2,而R3反射的路由对等体地址为10.0.3.3,因此未被优选。
总结图
作者:废权
链接:https://blog.yjscloud.com/archives/331
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
共有 0 条评论