Network系列:BGP路径优选实验(四)
BGP路径优选实验
1. 拓扑搭建
拓扑说明
- 所有的设备配置Loopback0接口,IP为x.x.x.x/32,其中x为设备编号。这个接口地址只作为设备Router-ID以及建立IBGP邻居关系时使用。
- AS345中,R3、R4、R5运行OSPF,在OSPF中,各设备宣告自己的直连接口以及Loopback0接口所在网段,但R3不在接口GE0/0/0口上激活OSPF、R5不在GE0/0/1上激活OSPF,这两个直连链路视为AS外的链路,不将其所在网段引入OSPF中。
- IBGP邻居关系的建立基于Loopback0口,EBGP邻居关系的建立基于直连物理接口。
配置详情
#R1配置
interface GigabitEthernet0/0/0
ip address 10.1.13.1 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
bgp 100
router-id 1.1.1.1
peer 10.1.13.3 as-number 345
#R2配置
interface GigabitEthernet0/0/0
ip address 10.1.25.2 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
bgp 200
router-id 2.2.2.2
peer 10.1.25.5 as-number 345
#R3配置
interface GigabitEthernet0/0/0
ip address 10.1.13.3 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.34.3 255.255.255.0
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 10.1.34.3 0.0.0.0
bgp 345
router-id 3.3.3.3
peer 4.4.4.4 as-number 345
peer 4.4.4.4 connect-interface LoopBack0
peer 10.1.13.1 as-number 100
#R4配置
interface GigabitEthernet0/0/0
ip address 10.1.34.4 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.45.4 255.255.255.0
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 10.1.34.4 0.0.0.0
network 10.1.45.4 0.0.0.0
bgp 345
router-id 4.4.4.4
peer 3.3.3.3 as-number 345
peer 3.3.3.3 connect-interface LoopBack0
peer 5.5.5.5 as-number 345
peer 5.5.5.5 connect-interface LoopBack0
#R5配置
interface GigabitEthernet0/0/0
ip address 10.1.45.5 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.25.5 255.255.255.0
interface LoopBack0
ip address 5.5.5.5 255.255.255.255
ospf 1 router-id 5.5.5.5
area 0.0.0.0
network 5.5.5.5 0.0.0.0
network 10.1.45.5 0.0.0.0
bgp 345
router-id 5.5.5.5
peer 4.4.4.4 as-number 345
peer 4.4.4.4 connect-interface LoopBack0
peer 10.1.25.2 as-number 200
2. 规则详解及实验验证
2.1 优选具有最大Preferred_Value的路由
规则描述
当路由器学习到多条到达同一个目的网络的BGP路由时,拥有最大Preferred_Value值的路由将会被优选。
Preferred_Value属性回顾
- 华为私有的路径属性,路由的Preferred_value可以理解为该路由在本路由器视角的权重值。
- 范围0-65535,默认值为0,值越大,则路由越优。
- 作用范围是本设备(不传递),该值不会被包含在update报文中,不会传递给任何BGP邻居。
规则验证
现在在R1、R2上配置一个Loopback1接口,配置IP地址:100.0.1.1/24,将此路由发布到BGP。
#R1
interface LoopBack1
ip address 100.0.1.1 255.255.255.0
bgp 100
network 100.0.1.0 255.255.255.0
#R2
interface LoopBack1
ip address 100.0.1.1 255.255.255.0
bgp 200
network 100.0.1.0 255.255.255.0
如此一来,R1将更新路由100.0.1.0/24给R3,而R3从自己的EBGP邻居R1学习到这条路由后,会更新给R4;同理,R5也会将学习自EBGP邻居R2的路由100.0.1.0/24更新给R4,那么对于R4来说就从R3及R5都学习到了去往100.0.1.0/24的路由,R4将如何优选?现在先查看R4上的BGP路由
现在通过操控路由的Preferred_Value值来让R4优选R5传递过来的路由,可以通过在R4上进行下面配置
bgp 345
peer 5.5.5.5 preferred-value 10
将R5传递过来的所有路由的Preferred_Value(在收到之后)都设置为10,而R3传递过来的路由Preferred_Value则在本地赋予默认值0,这么一对比,当然是优选R5所通告的路由了。但是这个方法“颗粒度”太大,如果我们只是想针对特定的路由设置Preferred_Value呢?
可以通过前缀列表(ip-prefix) 和路由策略(Route-Policy) 来进行。
下面在R1及R2上新增100.0.2.0/24网段并将其发布到BGP,并查看R4的BGP路由表情况
#R1
interface LoopBack2
ip address 100.0.2.1 255.255.255.0
bgp 100
network 100.0.2.0 255.255.255.0
#R2
interface LoopBack2
ip address 100.0.2.1 255.255.255.0
bgp 200
network 100.0.2.0 255.255.255.0
实现刚才“细粒度”的需求,R4配置如下:
#R4
ip ip-prefix 1 index 10 permit 100.0.1.0 24
ip ip-prefix 2 index 10 permit 100.0.2.0 24
route-policy RP1 permit node 10
if-match ip-prefix 1
apply preferred-value 10
route-policy RP1 permit node 20
route-policy RP2 permit node 10
if-match ip-prefix 2
apply preferred-value 10
route-policy RP2 permit node 20
bgp 345
peer 3.3.3.3 route-policy RP1 import
peer 5.5.5.5 route-policy RP2 import
注意:上述配置中route-policy RP1 permit node 20及route-policy RP2 permit node 20必须配置,因为route-policy在末尾隐含deny any,因此如果这两个node不加的话,相当于是只放行node 10中允许的路由。
再次查看R4的BGP路由表,R4优选来自R3的100.0.1.0/24的路由,优选来自R5的100.0.2.0/24路由,实现了“细粒度”的需求。
进一步查看路由的详细信息,例如查看100.0.1.0/24这条路由,best代表优选,后面也有没被优选的原因,同时看两者差别,pref-val 10和pref-val 0,很明显pref-val值大的来自R3传递的路由。
完成本项规则测试后,先删除以下配置,进入下一条规则的测试。
#R1
undo interface LoopBack 2
bgp 100
undo network 100.0.2.0 255.255.255.0
#R2
undo interface LoopBack 2
bgp 200
undo network 100.0.2.0 255.255.255.0
#R4
undo ip ip-prefix 1
undo ip ip-prefix 2
undo route-policy RP1
undo route-policy RP2
bgp 345
undo peer 3.3.3.3 route-policy RP1 import
undo peer 5.5.5.5 route-policy RP2 import
2.2 优选具有最大Local_Preference的路由
规则描述
当路由器学习到多条到达同一个目的网络的BGP路由时,拥有最大Preferred_Value值的路由将会被优选。如果路由的Preferred_Value值相等,则比较路由的Local_Preference值,优选具有最大Local_Preference值的路由。
Local_Preference属性回顾
- 公认自决属性,值越大则路由越优。
- Local_Preference只能在IBGP Peer之间传递,不能在EBGP Peer之间传递。
- 本地始发的路由默认Local_Preference为100。可用default local-preference ? 命令修改默认值。
规则验证
在R1及R2上都配置Loopback1口,IP地址为100.0.1.1/24,R1及R2都将到达100.0.1.0/24的路由发布到BGP。
前面没清除此配置,即不需要重复配置!
先查看R4的BGP路由表
通过操控Local_Preference让R4优选R5传递过来的100.0.1.0/24路由。可以在R5上对R4做export方向的策略,修改路由的Local_Preference值,将其设置为200;而R3这边则保持默认,也就是Local_Preference=100,如此一来,在R4上,到达100.0.1.0/24的两条BGP路径,首先Preferred_Value相等,然后继续比较Local_Preference,优选大的,因此来自R5的路由被优选。
R5进行一下配置:
ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply local-preference 200
route-policy RP permit node 20
bgp 345
peer 4.4.4.4 route-policy RP export
在R4的BGP路由表上验证一下,可以看到LocPrf被修改成200,成功优选R5传递过来的路由。
完成本项规则测试后,先删除以下配置,进入下一条规则的测试。
#R5
undo ip ip-prefix 1
undo route-policy RP
bgp 345
undo peer 4.4.4.4 route-policy RP export
2.3 优选起源于本地的路由
当路由器学习到多条到达同一个目的网络的BGP路由时,如果路由的Preferred_Value值相等,且Local_Preference值也相等。优选本地生成的路由,从对等体学习到的路由条目为次优。
同时本地生成的路由也可能存在多种途径,当本地存在多种途径学习到相同路由时,从高到低优先级如下:
- 手动聚合:手动通过aggregate命令在BGP视图内聚合生成的聚合路由
- 自动聚合:Summary automatic命令生成的自动聚合路由
- Network方式注入的路由
- Import-route方式注入的路由
- 从对等体学习到的路由
本条规则略过不做验证!
2.4 优选AS_PATH最短的路由
规则描述
当路由器学习到多条到达同一个目的网络的BGP路由时,如果路由的Preferred_Value属性值、Local_Preference属性值都相等,并且这些路由都是学习自其它邻居的,那么AS_PATH最短的路由将被优选。
规则验证
在R1及R2上都配置Loopback1口,IP地址为100.0.1.1/24,R1及R2都将到达100.0.1.0/24的路由发布到BGP。
前面没清除此配置,即不需要重复配置!
通过操控AS_PATH属性让R4优选R5传递过来的100.0.1.0/24路由,那么可以在R3上对R1做import方向的策略,在原有AS_PATH的基础上,增加一个100的AS号,使得路由的AS_PATH长度加长一个单位。如此一来R4将优选R5传递过来的100.0.1.0/24路由。
R3进行以下配置
#R3
ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply as-path 100 additive
route-policy RP permit node 20
bgp 345
peer 10.1.13.1 route-policy RP import
完成配置后,在R4上验证一下,R3接收来自R1的BGP路由,修改了AS_PATH属性。使得路由的AS_PATH长度加长一个单位,成功优选R5传递过来的路由。
另外,使用route-policy来修改BGP路由的AS_PATH时,需关注如下命令:
apply as-path xx additive 在已有AS_PATH基础上追加xx
apply as-path xx overwrite 将已有AS_PATH值替换(覆盖)成xx
完成本项规则测试后,先删除以下配置,进入下一条规则的测试。
#R3
undo ip ip-prefix 1
undo route-policy RP
bgp 345
undo peer 10.1.13.1 route-policy RP import
2.5 依次优选Origin类型为IGP、EGP、Incomplete的路由
规则描述
当路由器学习到多条到达同一个目的网络的BGP路由时,在其他条件相同的情况下,依次优选Origin属性为IGP、EGP、Incomplete的路由。
规则验证
在R1上,改用import-route的方式来注入100.0.1.0/24路由,R2则仍保持network的方式注入。
ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
bgp 100
undo network 100.0.1.0 255.255.255.0
import-route direct route-policy RP
这样一来R1引入的100.0.1.0/24路由,origin属性值就为incomplete,而R2引入的100.0.1.0/24的路由(使用network命令发布),origin属性值为IGP。接下来在R4上查看一下BGP路由表。
完成本项规则测试后,先删除以下配置并恢复成原来的network宣告路由方式,进入下一条规则的测试。
undo ip ip-prefix 1
undo route-policy RP
bgp 100
undo import-route direct
network 100.0.1.0 255.255.255.0
2.6 优选MED最小的路由
规则描述
当路由器学习到多条到达同一个目的网络的BGP路由时,在其他条件相同的情况下,比较这些路由的MED,优选拥有最小MED值的路由。
属性回顾
MED属性为可选非传递属性,值越小则路由越优,一般用于AS之间影响BGP路由决策。
规则详解
- BGP只比较来自同一个相邻AS的路由的MED值。
- 如果路由没有MED属性,BGP选路时将该路由的MED值按缺省值0来处理;而执行bestroute med-none-as-maximum命令后,BGP选路时将该路由的MED值按最大值4294967295来处理。
- 缺省情况下,不允许比较来自不同AS邻居的路由路径的MED属性值。而执行compare-different-as-med命令后,BGP将强制比较来自不同自治系统中的邻居的路由的MED值。除非能够确认不同的自治系统采用了同样的IGP和路由选择方式,否则不要使用compare-different-as-med命令(可能产生环路)。
规则验证
首先将R2规划为AS 100内,为什么呢?因为MED值的比较是需要来自同一AS的路由才行。R1、R2都向BGP发布路由100.0.1.0/24,最终R4将学习到两条路由更新。现在我们的需求是,通过操控MED值,让R4优选从R5更新过来的路由。
方法很简单,R5将100.0.1.0/24更新给R4时,MED为默认值0,那么我们只要在R1更新路由给R3时,将MED设置为999,这条路由再经由R3更新给R4时,也会一并将MED携带。最终,R4将优选MED小的路径,也就是R5传递过来的路由。
下面进行以下配置
#R2
undo bgp 200
bgp 100
router-id 2.2.2.2
peer 10.1.25.5 as-number 345
network 100.0.1.0 255.255.255.0
#R5
bgp 345
undo peer 10.1.25.2
peer 10.1.25.2 as 100
查看BGP对等体关系是否建立成功,已ok!
在R1上配置
#R1
ip ip-prefix 1 index 10 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply cost 999
bgp 100
peer 10.1.13.3 route-policy RP export
完成上述配置后,在R4上验证一下
从上面的输出可以看到,R4优选了R5传递过来的100.0.1.0/24的路由。因为从R3传递过来的路由MED为999,值更大,次优。
完成本项规则测试后,先删除以下配置并恢复成原来R2为AS 200并与R5建立BGP对等体关系,进入下一条规则的测试。
#R1
undo ip ip-prefix 1
undo route-policy RP
bgp 100
undo peer 10.1.13.3 route-policy RP export
#R2
undo bgp 100
bgp 200
router-id 2.2.2.2
peer 10.1.25.5 as-number 345
network 100.0.1.0 255.255.255.0
#R5
bgp 345
undo peer 10.1.25.2 as-number 100
peer 10.1.25.2 as-number 200
查看BGP对等体关系是否建立,ok,没问题!
2.7 相对于IBGP路由,优选EBGP路由
规则描述
当路由器学习到多条到达同一个目的网络的BGP路由时,在其他条件相同的情况下,EBGP路由的优先级高于IBGP路由。
规则验证
本规则的验证环境要发生一些改变,我们在R3-R5之间建立一条IBGP的邻居关系。这样一来R3会将自己从R1学习到的BGP路由传递给IBGP邻居R5,而R5又会从另一侧学习到R2更新过来的100.0.1.0/24路由,那么R5将如何优选呢?
在R3、R5上配置以下命令
#R3
bgp 345
peer 5.5.5.5 as 345
peer 5.5.5.5 connect-interface LoopBack 0
peer 5.5.5.5 next-hop-local
#R5
bgp 345
peer 3.3.3.3 as 345
peer 3.3.3.3 connect-interface LoopBack 0
peer 3.3.3.3 next-hop-local
查看对等体关系是否建立成功,ok!已建立成功。
完成配置后,我们在R5上观察一下BGP路由表,优选来自EBGP传递的路由。
完成本项规则测试后,先删除以下配置,进入下一条规则的测试。
#R3
bgp 345
undo peer 5.5.5.5
#R5
bgp 345
undo peer 3.3.3.3
2.8 优选到BGP下一跳IGP度量值最小的路由
规则描述
当路由器学习到多条到达同一个目的网络的BGP路由时,在其他条件相同的情况下,BGP将比较路由器到这些路由的Next_hop的IGP度量值,优选到Next_hop度量值最小的BGP路由。
规则验证
R1将路由100.0.1.0/24更新给了R3,R3将这条路由又更新给了R4,由于我们在R3上对R4做了next-hop-local,因此R4在收到这条路由时路由的Next_hop属性值为3.3.3.3;同理,R4从R5收到的路由100.0.1.0/24的Next_hop为5.5.5.5。而R4又通过OSPF学习到了去往3.3.3.3/32及5.5.5.5/32的路由,并且此刻在R4上,到达3.3.3.3及5.5.5.5的OSPF度量值都是相等的。
现在,我们在R4连接R3的接口上增加配置(该接口的缺省OSPF度量值为1):ospf cost 10,配置如下:
#R4
interface g0/0/0
ospf cost 10
如此一来,R4到达3.3.3.3的OSPF度量值就发生了变化,变得比到达5.5.5.5的OSPF度量值更大,因此最终,本规则将让R4优选R5传递过来的100.0.1.0/24路由,在R4查看BGP路由表看一下!
查看BGP路由详情, IGP cost=1,这的IGP cost事实上是R4学习到的5.5.5.5/32路由的OSPF cost,到3.3.3.3的IGP cost变成了10,比到5.5.5.5的IGP cost更大,因此PK输了。
IGP(OSPF)路由详情
完成本项规则测试后,先删除以下配置,进入下一条规则的测试。
#R4
interface g0/0/0
undo ospf cost 10
2.9 优选Cluster-List最短的路由
规则描述
如果经过前面的规则,都无法决策出最优路由,那么将进一步比较候选路由的Cluster_List属性,优选
最短Cluster_List的路由。
规则验证
略。
2.10 优选Router-ID最小的BGP邻居发来的路由
规则描述
如果经过前面的规则,都无法决策出最优路径,那么将优选Router-ID最小的BGP邻居发来的路由。
规则验证
仍然是将实验环境还原成初始化状态。在R1及R2上都发布100.0.1.0/24 BGP路由。那么在不做任何路
由策略配置的情况下,R4将学习到R3及R5传递过来的路由。
从上面的输出可以看到,R4已经优选了R3传递过来的路由,在其他条件相同的情况下,R4将比较通告这两条路由的邻居的Router-ID,由于R3的Router-ID 3.3.3.3要小于R5的Router-ID 5.5.5.5,因此R3传递过来的路由被优选。
2.11 优选peer IP地址最小的邻居发来的路由
规则描述
如果经过前面的一系列规则仍然无法优选出最优路由,那么将比较邻居的IP地址。这个IP地址是在BGP路由器的BGP配置中,peer命令后所指的那个IP地址。
规则验证
略。