Loading

Network系列:BGP路径优选实验(四)

BGP路径优选实验

1. 拓扑搭建

image-20221010211715742

拓扑说明

  1. 所有的设备配置Loopback0接口,IP为x.x.x.x/32,其中x为设备编号。这个接口地址只作为设备Router-ID以及建立IBGP邻居关系时使用。
  2. AS345中,R3、R4、R5运行OSPF,在OSPF中,各设备宣告自己的直连接口以及Loopback0接口所在网段,但R3不在接口GE0/0/0口上激活OSPF、R5不在GE0/0/1上激活OSPF,这两个直连链路视为AS外的链路,不将其所在网段引入OSPF中。
  3. 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路由

image-20221010222658875


现在通过操控路由的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 

image-20221010223642913


实现刚才“细粒度”的需求,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路由,实现了“细粒度”的需求。

image-20221011103840144


进一步查看路由的详细信息,例如查看100.0.1.0/24这条路由,best代表优选,后面也有没被优选的原因,同时看两者差别,pref-val 10和pref-val 0,很明显pref-val值大的来自R3传递的路由。

image-20221011104251224


完成本项规则测试后,先删除以下配置,进入下一条规则的测试。

#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路由表

image-20221011111217056


通过操控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传递过来的路由。

image-20221011111801051


完成本项规则测试后,先删除以下配置,进入下一条规则的测试。

#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值也相等。优选本地生成的路由,从对等体学习到的路由条目为次优。


同时本地生成的路由也可能存在多种途径,当本地存在多种途径学习到相同路由时,从高到低优先级如下:

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

本条规则略过不做验证!


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传递过来的路由。

image-20221011151916789


另外,使用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路由表。

image-20221011163512633


完成本项规则测试后,先删除以下配置并恢复成原来的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!

image-20221011220152817


在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上验证一下

image-20221011220903833

从上面的输出可以看到,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,没问题!

image-20221011221626889


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!已建立成功。

image-20221012083846236


完成配置后,我们在R5上观察一下BGP路由表,优选来自EBGP传递的路由。

image-20221012083936260


完成本项规则测试后,先删除以下配置,进入下一条规则的测试。

#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路由表看一下!

image-20221012085928092


查看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输了。

image-20221012090142286


IGP(OSPF)路由详情

image-20221012090302665


完成本项规则测试后,先删除以下配置,进入下一条规则的测试。

#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传递过来的路由。

image-20221012091802176


从上面的输出可以看到,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地址。


规则验证

略。

posted @ 2023-09-18 09:58  YinJayChen  阅读(185)  评论(0编辑  收藏  举报