华为BGP选路规则详解
在华为设备上,BGP选路规则是有十一条规则,那么这么多选路规则中是怎么使用的,以下以实验方式对十一条选路规则一一分析做讲解。
华为BGP十一条选路规则
1、优选协议首选值(pref val) 最高的值
2、优选本地优先级(local_pref)最高的路由
3、依次优选手动聚合路由,自动聚合路由,network命令引入的路由,import-route命令引入的路由,从对等体学到的路由
4、优选AS_PATH最短的路由
5、依次优选origin类型为IGP,EGP,incomplete的路由
6、对于来自同一AS的路由,优选MED值最低的路由。
7、依次优选EBGP路由、IBGP路由、local cross路由、remote cross路由。
8、优选BGP下一跳IGP度量值metric最小的路由
9、优选cluster_list最短的路由
10、优选router ID最小的设备发布的路由(如果路由携带originator_ID属性,选路过程中将比较originator_ID的大小,不再比较router ID,并优选originator_ID最小的路由)
11、优选从具有最小IP address的对等体学来的路由。
实验拓扑图:
从以上拓扑可以看到,有四台路由器。AR1,AR2,AR3,AR4,其中R1,R2,R3属于AS 123,R4属于AS 4。
在R4上发布一条路由,4.4.4.4到BGP中,在R1上可以学到两条4.4.4.4的BGP路由
从上面可以看到学到的两条BGP路由,下一跳分别是R2和R3,根据BGP路由选路规则中的第十条,优选router-id最小的设备发布的路由,优选了R2。
选路规则第一条:
preferred-value
preferred-value主要控制怎么离开本设备,Preferred-value是BGP协议的私有属性,该命令只对BGP路由生效。Preferred-value是BGP选路规则中的weight值,不是RFC规定的标准属性,所以该命令仅在本地生效,在BGP的出口策略中不生效。
实验目的:
使用preferred-value修改R1前往R4时优选R3(控制流量怎么离开本设备)
配置命令:
# 配置路由策略
route-policy p_v permit node 10
apply preferred-value 1
#
# BGP视图下引用策略,该命令可以理解收到R3发过来的路由,调用路由策略p_v,在策略里面修改preferred-value为1
bgp 123
peer 3.3.3.3 route-policy p_v import
# 使用命令查看BGP路由,发现4.4.4.4路由的下一跳变为R3了,prefval值等于1.说明修改成功,也对路由有了影响。
[R1-bgp]display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 100 1 4i
* i 2.2.2.2 0 100 0 4i
验证查看:
选路规则第二条:
本地优先级表明路由器BGP路由本地优先级,用于判断怎么离开本AS的最佳路由,默认值是100,越大越优。
local-preference 属性只能在IBGP邻居之间传递,对于IBGP邻居可以配在出方向或者入方向都可以,对于EBGP邻居只能用在入方向上。
实验目的:
通过修改local-preference属性控制AS 123访问AS 4都优先走R3出去。
配置命令:
# 第一种方法,通过修改从EBGP收到的路由中的local-preference属性实现,其中的原理是从EBGP邻居学习到的路由会通告给IBGP邻居,在收到这个路由器上对该路由进行修改local-preference属性,那么通告给IBGP邻居的路由属性则是修改属性后的路由。
# 在R3配置路由策略
route-policy l_p permit node 10
apply local-preference 101
#
# 在R3的BGP下调用策略,
bgp 123
peer 10.1.34.4 route-policy l_p import
#
# 查看R1路由表,可以看到优选了R3去往R4,其中locprf是101
<R1>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 101 0 4i
* i 2.2.2.2 0 100 0 4i
<R1>
# 查看R2路由表
<R2>display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.4/32 10.1.24.4 0 0 4i
<R2>
# 从R2路由表中看到,R2只有一条路由,这是因为IBGP邻居从IBGP邻居学到的路由不会在通告给IBGP邻居,可以理解为R3把R4的路由通告给R1后,然后R1收到后,并不会把该路由通告给R2,而R2通告给R1的路由也如此,所以在R2上和R3上都只存在一条R4的路由。
# 可以通过把R1配置为路由反射器,使R2也可以学到R3通告的路由。
bgp 123
peer 2.2.2.2 reflect-client
peer 3.3.3.3 reflect-client
#
# 配置完路由反射后再次查看R2的路由表
<R2>display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 101 0 4i
* 10.1.24.4 0 0 4i
<R2>
# 可以看到存在两条路由,并且去往4.4.4.4的下一跳是R3,从而实现通过local-preference实现控制AS123去往AS4的选路。
# 第二种方式,在IBGP邻居配置local-preference对AS的路由控制,实现原理通过在R3上修改R3向IBGP邻居发送的路由属性从而实现,在IBGP邻居的出方向调用路由策略。
# 在R3的BGP下调用路由策略
bgp 123
peer 1.1.1.1 route-policy l_p export
# 配置完成后查看R1的BGP路由表和R2的BGP路由表
<R1>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 101 0 4i
<R1>
<R2>display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 101 0 4i
* 10.1.24.4 0 0 4i
<R2>
# 结果是跟第一种方式一样的
# 第三种方式,在IBGP邻居的入方向调用路由策略,需要在R1接收R3路由的入方向调用策略,实现原理是R1在收到R3路由的时候,对收到的路由修改local-perference值进行影响路哟选路。
# 在R1上配置路由策略
route-policy l_p permit node 10
apply local-preference 101
# 在R1的BGP下调用路由策略
bgp 123
peer 3.3.3.3 route-policy l_p import
# 查看路由表
<R1>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 101 0 4i
<R1>
<R2>display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 101 0 4i
* 10.1.24.4 0 0 4i
<R2>
# 得到结论跟前二者一样
选路规则第三条
依次优选手动聚合路由,自动聚合路由,network命令引入的路由,import-route命令引入的路由,从对等体学到的路由,这个可以理解为自身路由器有多种方式产生一条路由,那么对自己而言那一条路由才会被自己优选呢。
实验目的:
以下以R3和R4来做一个实验,R4通告给R3一条4.4.4.0/24的路由,R3自己import-route方式,network方式,手动聚合方式产生一条4.4.4.0/24的路由,进行观察R3会选择那一条路由。
配置命令:
# 首先看到R3上学到了R4发送的一条4.4.4.0/24的路由
[R3]display bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.0/24 10.1.34.4 0 0 4?
[R3]
# R3 通过import-route方式产生一条4.4.4.0/24的路由
ip route-static 4.4.4.0 255.255.255.0 NULL0
# BGP引入路由
bgp 123
import-route static
#
[R3-bgp]display bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.0/24 0.0.0.0 0 0 ?
* 10.1.34.4 0 0 4?
[R3-bgp]
# 查看R3路由表可以看到优选了import-route的路由
# 然后R3在通过network产生一条4.4.4.0/24的路由,在BGP下宣告4.4.4.0/24的路由
bgp 123
network 4.4.4.0 255.255.255.0
# 查看R3的路由表
[R3]display bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.0/24 0.0.0.0 0 0 i
* 0.0.0.0 0 0 ?
* 10.1.34.4 0 0 4?
[R3]
# 可以看到优选了network产生的路由
# 然后R3在通过手动聚合产生一条4.4.4.0/24的路由
bgp 123
aggregate 4.4.4.0 255.255.255.0
#
# 查看R3上的路由表
[R3-bgp]display bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.0/24 127.0.0.1 0 i
* 0.0.0.0 0 0 i
* 0.0.0.0 0 0 ?
* 10.1.34.4 0 0 4?
*> 4.4.4.4/32 10.1.34.4 0 0 4i
[R3-bgp]
# 根据以上路由表可以看到优选了手动聚合的路由,下一跳为127.0.0.1的这条为手动聚合的路由。
选路规则第四条
优选AS_PATH最短的路由,该规则比较容易理解,从字面意思上来看,就是携带的as_path最短的路由最优。从原理上来讲,可以理解为as_path越多,就是所跨越的AS域越多,路就越远就没那么优。
AS_Path属性是BGP的私有属性,记录了某条路由从本地到目的地址所要经过的所有AS编号,通过应用AS_Path属性可以控制路由选择及防止路由环路。当到达同一目的地存在多条路由时,BGP会比较路由的AS_Path属性,AS_Path列表较短的路由将被认为是最佳路由。
实验目的:
通过在R2和R3上修改AS_PATH长度,来影响R1的选路。
配置命令:
# 在修改as_path长度前进行查看R1的BGP路由表
<R1>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.0/24 2.2.2.2 0 100 0 4?
* i 3.3.3.3 0 100 0 4?
*>i 4.4.4.4/32 2.2.2.2 0 100 0 4i
* i 3.3.3.3 0 100 0 4i
<R1>
# 在R2配置as-path长度,首先使用路由策略定义好要增加的AS-PATH长度
route-policy as permit node 10
apply as-path 100 200 300 additive
# 然后在BGP接受EBGP路由时调用该策略
bgp 123
peer 10.1.24.4 route-policy as import
#
# 配置完成后查看R1的路由表
<R1>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.0/24 3.3.3.3 0 100 0 4?
*>i 4.4.4.4/32 3.3.3.3 0 100 0 4i
<R1>
# R1优选了R3出去,然后查看R2自身的BGP路由表
[R2-bgp]display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.0/24 3.3.3.3 0 100 0 4?
* 10.1.24.4 0 0 100 200 30
0 4?
*>i 4.4.4.4/32 3.3.3.3 0 100 0 4i
* 10.1.24.4 0 0 100 200 30
0 4i
[R2-bgp]
#可以看到R2自身修改了后,也优先选择R3做为下一跳了
选路规则第五条
依次优选origin类型为IGP,EGP,incomplete的路由。
origin标识BGP路由的来源,记录了一条路由怎么成为BGP路由的,network产生的BGP路由标识为IGP,import-route 产生的BGP路由标识为incomplete在路由表中显示为?号的路由。EGP为运行EGP协议产生的路由,BGP和EBGP不是同一个东西,在目前网络中基本见不到EGP的存在了。
该选路规则可以理解为network进BGP的路由优于引入进BGP的路由。
实验目的:
R1上存在着R2通告的路由和R3通告的路由,通过router-id优选了R2通告的路由,实现通过修改起源属性影响R1的选路。
配置命令:
# 先查看R1的BGP路由表
<R1>display bgp routing-table
BGP Local router ID is 10.1.12.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 2.2.2.2 0 100 0 4i
* i 3.3.3.3 0 100 0 4i
<R1>
# 可以看到目前学到的两条路由起源属性都是IGP的,通过在R2上修改起源属性为EGP的,进而影响选路,并且证实I>E
# 配置R2路由策略
route-policy ogn permit node 10
apply origin egp 10
# BGP下调用策略,因为origin属性是公认必遵属性,所有路由器都可以识别的属性,所以可以通过如方向调用,也可以通过出方向调用。
bgp 123
peer 10.1.24.4 route-policy ogn import
# 配置完成查看R2的路由表,检查结果
[R2-bgp]display bgp routing-table
BGP Local router ID is 10.1.12.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 100 0 4i
* 10.1.24.4 0 0 4e
[R2-bgp]
# 从路由表可以看到R2优选了从R3学到的IGP路由,而没有优选自己的EGP路由
# 在R3上修改origin属性为incomplete,证实E>?
route-policy origin permit node 10
apply origin incomplete
# 在R3的BGP下调用策略,在R1邻居上调用策略,使用出方向的方法,这样不会修改自身路由器所学到路由,只会对通告给R1的路由有影响。
# 查看R3的BGP路由表
[R3-bgp]display bgp routing-table
BGP Local router ID is 10.1.13.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.4/32 10.1.34.4 0 0 4i
* i 2.2.2.2 0 100 0 4e
[R3-bgp]
# 从上述路由表可以看到自己通过R4学到的路由是IGP的,优于EGP所以优选了从R4学到的路由,然后在看R1上的路由表
<R1>display bgp routing-table
BGP Local router ID is 10.1.12.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 2.2.2.2 0 100 0 4e
* i 3.3.3.3 0 100 0 4?
<R1>
# 从上述路由表可以看到R1上从R2学到的优选了,而没有优选从R3学到的,是因为R3学到的路由是incomplete。从而证实了I>E>?
选路规则第六条
对于来自同一AS的路由,优选MED值最低的路由。
该条选路规则跟第二条选路规则刚好是相反的,local-preference是控制流量怎么出本AS的,而MED是控制流量怎么回本AS的。
MED的传递范围,只能在两个AS之间携带,不能在到第三个AS。比如AS 10 通告给AS 20携带了MED,在AS 20是会携带MED属性的,而当AS20通告给AS 30时,就不会在携带MED属性。
MED传递规则:
从EBGP邻居学习来的路由,传递给自己IBGP邻居的时候MED可以传递
从EBGP邻居学习来的路由,传递给自己的EBGP邻居的时候,MED不携带
从IBGP邻居学习来的路由,传递给自己EBGP邻居的时候,MED不携带
MED功能:
将通告的BGP路由的本AS内的IGP开销通过MED值携带出去,让对端的AS知道我本地这条路由IGP的开销
default med:
可以在BGP下直接配置default med,但是该命令只对引入的路由和聚合路由生效,而且只会传递给自己的EBGP邻居,不会传递给自己的IBGP邻居。
限制:
默认情况下路由器只有收到来源于同一个AS邻居的BGP路由才会比较MED值,如果这条路由分别来自于不同的AS是不会比较MED值的。如果需要比较来自不同AS的MED值,需要配置命令compare-different-as-med
实验目的
在R2访问R1的开销为50,R3访问R1的开销为10,在R4访问R1的时候优选走到R3去访问。
配置命令:
# 先看一下R4访问R1的默认选举
<R4>display bgp routing-table
BGP Local router ID is 10.1.24.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.4/32 0.0.0.0 0 0 i
*> 10.10.10.10/32 10.1.24.2 0 123i
* 10.1.34.3 0 123i
<R4>
# 从路由表可以看出,R4访问R1是通过router-id比较出优先走R2的,然后通过在R2和R3上配置使得R4通过MED优选R3
# 配置R2的路由策略,并且修改IGP的开销
route-policy med permit node 10
apply cost-type internal
#
interface GigabitEthernet0/0/0
isis cost 50
#BGP下调用策略
bgp 123
peer 10.1.24.4 route-policy med export
#
# R3配置路由策略,并且调用策略
route-policy med permit node 10
apply cost-type internal
#
bgp 123
peer 10.1.34.4 route-policy med export
#配置完成,在R4上再次查看前往R1的选路
<R4>display bgp routing-table
BGP Local router ID is 10.1.24.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.4/32 0.0.0.0 0 0 i
*> 10.10.10.10/32 10.1.34.3 0 123i
* 10.1.24.2 50 0 123i
<R4>
# 根据路由表可以看到,R4选择了R3做为优选下一跳设备,使用该方法在没有对AS4进行配置时,从而影响了AS4的选路。
选路规则第七条
依次优选EBGP路由、IBGP路由、local cross路由、remote cross路由。
该选路规则的理解为,从EBGP邻居对等体学到的路由优于从IBGP邻居对等体学到的路由。
实验目的:
在R3上存在着两条4.4.4.4/32的路由,分别是从R4学到的和R1反射的路由。R4学到的路由为EBGP类型,R1反射的路由为IBGP路由,通过观察路由表看对比情况
配置命令:
# 查看R3的BGP路由表
[R3-bgp]display bgp routing-table
BGP Local router ID is 10.1.13.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 4.4.4.4/32 10.1.34.4 0 0 4i
* i 2.2.2.2 0 100 0 4i
*>i 10.10.10.10/32 1.1.1.1 0 100 0 i
[R3-bgp]
# 可以看到优选了下一跳为R4的路由表,然后看详细信息,查看下一跳为R2的路由为什么没被优选
[R3-bgp]display bgp routing-table 4.4.4.4
BGP local router ID : 10.1.13.3
Local AS number : 123
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 4.4.4.4/32:
From: 10.1.34.4 (10.1.24.4)
Route Duration: 04h43m10s
Direct Out-interface: GigabitEthernet0/0/1
Original nexthop: 10.1.34.4
Qos information : 0x0
AS-path 4, origin igp, MED 0, pref-val 0, valid, external, best, select, active
, pre 255
Advertised to such 1 peers:
1.1.1.1
BGP routing table entry information of 4.4.4.4/32:
From: 1.1.1.1 (10.1.12.1)
Route Duration: 03h21m11s
Relay IP Nexthop: 10.1.13.1
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 2.2.2.2
Qos information : 0x0
AS-path 4, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 20, not preferred for peer type
Originator: 10.1.12.2
Cluster list: 10.1.12.1
Not advertised to any peer yet
# 通过以上回显可以看到没被优选的原因是 not preferred for peer type 不是对等体类型首选,可以理解为对等体类型就是EBGP和IBGP
选路规则第八条
优选BGP下一跳IGP度量值metric最小的路由
可以理解为BGP下一跳IGP的开销值小的优选,比如有两条路由,不同的下一跳,其中preferred-value都为0,local-prefreence都为100,都是通过对等体学到的,AS_PATH长度一致,起源属性都是IGP,MED值都为空,都是通过IBGP邻居学到的,前七项都无法比较出这条路由的优选,然后就会比较第八项。根据上述的描述,有不同的下一跳,那么就会存在着到达这个下一跳的路由,而下一跳路由是通过IGP学到的,就存在着IGP的开销,比如R1到R2的开销是20,R1到R3的开销是10,那么就会优选R3。
实验目的:
R1访问R4优选了R2,通过修改IGP的开销值影响R1访问R4优选R3
配置命令:
# 查看R1路由表,在没有做修改前优先选择的R2下一跳
<R1>display bgp routing-table
BGP Local router ID is 10.1.12.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 2.2.2.2 0 100 0 4i
* i 3.3.3.3 0 100 0 4i
*> 10.10.10.10/32 0.0.0.0 0 0 i
<R1>
# 在R1上修改R1跟R2的互联的接口,修改ISIS开销值为20,增加开销
interface GigabitEthernet0/0/0
isis cost 20
# 查看R1的路由表
[R1]display bgp routing-table
BGP Local router ID is 10.1.12.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 100 0 4i
* i 2.2.2.2 0 100 0 4i
*> 10.10.10.10/32 0.0.0.0 0 0 i
[R1]
# 优选了R3做为下一跳设备
负载分担
在BGP选路规则中,当前八条都无法选择出最优路由的时候,就可以开启BGP的负载分担。
需要注意事项:
默认在前八条中的第四条AS_PATH在该场景中需要一样,当PA_PATH长度是一样,但是属于不同AS是无法进行负载分担的。当在这个场景下,需要实现负载分担可以通过命令忽略AS_PATH检查,可以在BGP下配置load-balancing as-path-ignore命令忽略AS_PATH检查。
实验目的:
默认BGP是不开启负载分担的,需要手动去开启BGP的负载分担。通过在R1上配置负载分担,实现R1访问R4的负载分担。
# 先查看没有修改配置的R1到R4的路由表
[R1-bgp]display ip routing-table 4.4.4.4
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
4.4.4.4/32 IBGP 255 0 RD 2.2.2.2 GigabitEthernet
0/0/0
[R1-bgp]
# 通过路由表看到只有一条路由
# 可以通过在R1的BGP下配置命令开启负载分担
bgp 123
maximum load-balancing 8
# 再次查看R1的IP路由表
[R1-bgp]display ip routing-table 4.4.4.4
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 2
Destination/Mask Proto Pre Cost Flags NextHop Interface
4.4.4.4/32 IBGP 255 0 RD 2.2.2.2 GigabitEthernet
0/0/0
IBGP 255 0 RD 3.3.3.3 GigabitEthernet
0/0/1
[R1-bgp]
# 从上面路由表可以看到去往R4有了两个下一跳了,这是在IP路由表中的表现,其原理就是BGP路由表在加载到IP路由表的时候,如果前面八条都没有比较出来后,配置maximum load-balancing命令后,就会把没比较出来的也加载到IP路由表中去,但是在BGP路由表中还是一样的会比较出一个最优。查看BGP路由表时,可以看到依然只有一条是最优的。
[R1-bgp]display bgp routing-table
BGP Local router ID is 10.1.12.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 2.2.2.2 0 100 0 4i
* i 3.3.3.3 0 100 0 4i
*> 10.10.10.10/32 0.0.0.0 0 0 i
[R1-bgp]
# 通过第十条选路原则比较出的最优,而不会把两条路由都标识为最优路由
选路规则第九条
优选cluster_list最短的路由,该选路原则的意思跟字面意思是一样的,在RR场景存在着一个属性cluster_list属性,这是一个列表类型,跟AS_PATH很像,每经过一个RR就会增加一条cluster_list记录
要模拟实现第九条选路场景需要对原有拓扑进行一个修改,改成分级RR的场景
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QCkF1Od7-1681473046862)(华为BGP选路规则详解.assets/image-20230413164802056.png)]
以上拓扑R3做为ASBR收到R4的路由,通告给R5,R5做为顶级RR,R1和R2都做为R5的客户端,R1也做为RR对R2进行反射路由。
实验目的:
通过实验现象验证第九条选路规则
配置命令:
# 根据以上描述进行配置R5
bgp 123
peer 1.1.1.1 as-number 123
peer 1.1.1.1 connect-interface LoopBack0
peer 2.2.2.2 as-number 123
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 123
peer 3.3.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 1.1.1.1 enable
peer 1.1.1.1 reflect-client
peer 2.2.2.2 enable
peer 2.2.2.2 reflect-client
peer 3.3.3.3 enable
#
#R1配置
bgp 123
peer 2.2.2.2 as-number 123
peer 2.2.2.2 connect-interface LoopBack0
peer 5.5.5.5 as-number 123
peer 5.5.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 2.2.2.2 reflect-client
peer 5.5.5.5 enable
#
# 完成配置查看R2的路由表
<R2>display bgp routing-table
BGP Local router ID is 10.1.12.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 100 0 4i
* i 3.3.3.3 0 100 0 4i
*>i 10.10.10.10/32 1.1.1.1 0 100 0 i
* i 1.1.1.1 0 100 0 i
<R2>
# 通过上面可以看到有两条下一跳为3.3.3.3的路由,但是看起来都一模一样,看不出来区别,需要看详细信息。使用命令查看详细信息
<R2>display bgp routing-table 4.4.4.4
BGP local router ID : 10.1.12.2
Local AS number : 123
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 4.4.4.4/32:
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h08m35s
Relay IP Nexthop: 10.1.25.5
Relay IP Out-Interface: GigabitEthernet0/0/2
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 4, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best,
select, active, pre 255, IGP cost 20
Originator: 10.1.13.3
Cluster list: 5.5.5.5
Not advertised to any peer yet
BGP routing table entry information of 4.4.4.4/32:
From: 1.1.1.1 (10.1.12.1)
Route Duration: 00h11m07s
Relay IP Nexthop: 10.1.25.5
Relay IP Out-Interface: GigabitEthernet0/0/2
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 4, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 20, not preferred for Cluster List
Originator: 10.1.13.3
Cluster list: 10.1.12.1, 5.5.5.5
Not advertised to any peer yet
<R2>
# 根据以上命令回显可以看到,在下方的回显中 Cluster list: 不一样,而没有优选的原因为not preferred for Cluster List。
选路规则第十条
优选router ID最小的设备发布的路由(如果路由携带originator_ID属性,选路过程中将比较originator_ID的大小,不再比较router ID,并优选originator_ID最小的路由)
要实现第十条选路原则,有两种概念,一种是比较router id之前一直都是通过该方式的,还有一种是在经过了RR后,存在着originator_ID属性就不会在比较router-id,以下以一个更改后的拓扑来体现出originator_ID的比较。
实验目的:
通过实验表现出originator_ID选举的现象
配置命令:
# 配置R1跟R6建立BGP邻居,配置R5跟R6建立BGP邻居,并且配置为反射客户端
# R6配置
bgp 123
peer 1.1.1.1 as-number 123
peer 1.1.1.1 connect-interface LoopBack0
peer 5.5.5.5 as-number 123
peer 5.5.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 1.1.1.1 enable
peer 5.5.5.5 enable
#
# 在R6上查看路由表
[R6-bgp]display bgp routing-table
BGP Local router ID is 6.6.6.6
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 2.2.2.2 0 100 0 4i
* i 3.3.3.3 0 100 0 4i
[R6-bgp]
# 可以看到优选了R2的,查看详细信息
[R6-bgp]display bgp routing-table 4.4.4.4
BGP local router ID : 6.6.6.6
Local AS number : 123
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 4.4.4.4/32:
From: 1.1.1.1 (10.1.12.1)
Route Duration: 00h14m51s
Relay IP Nexthop: 10.1.16.1
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 2.2.2.2
Qos information : 0x0
AS-path 4, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best,
select, active, pre 255, IGP cost 20
Originator: 10.1.12.2
Cluster list: 10.1.12.1
Not advertised to any peer yet
BGP routing table entry information of 4.4.4.4/32:
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h05m56s
Relay IP Nexthop: 10.1.56.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 4, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 20, not preferred for router ID
Originator: 10.1.13.3
Cluster list: 5.5.5.5
Not advertised to any peer yet
[R6-bgp]
# 查看详细信息可以看到,两条路由都携带了Originator属性,但是都不一样,从而比较了Originator属性的大小。在存在Originator属性的情况下,是不会比较router-id的。
选路规则第十一条
优选从具有最小IP address的对等体学来的路由。
选路规则的最后一条是比较对等体的地址的,那么什么时候会用到第十一条比较呢?
实验目的:
配置实验,使得通过最后一条选路规则比较出最优。需要对拓扑有一个改变
文章来源:https://www.toymoban.com/news/detail-487416.html
R3学到R4的路由,R5跟R1做为RR反射给R2,此时在R2的路由表中就会存在着两条R4的路由。文章来源地址https://www.toymoban.com/news/detail-487416.html
配置命令:
# 配置R3,跟R1和R5建立邻居
bgp 123
peer 1.1.1.1 as-number 123
peer 1.1.1.1 connect-interface LoopBack0
peer 5.5.5.5 as-number 123
peer 5.5.5.5 connect-interface LoopBack0
peer 10.1.34.4 as-number 4
#
ipv4-family unicast
undo synchronization
peer 1.1.1.1 enable
peer 1.1.1.1 next-hop-local
peer 5.5.5.5 enable
peer 5.5.5.5 next-hop-local
peer 10.1.34.4 enable
# 配置R5跟R2和R3建立邻居,并且配置路由反射
bgp 123
peer 2.2.2.2 as-number 123
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 123
peer 3.3.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 2.2.2.2 reflect-client
peer 3.3.3.3 enable
peer 3.3.3.3 reflect-client
# 配置R1,跟R5一样
bgp 123
peer 2.2.2.2 as-number 123
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 123
peer 3.3.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 2.2.2.2 reflect-client
peer 3.3.3.3 enable
peer 3.3.3.3 reflect-client
# 查看R2的路由表
[R2-bgp]display bgp routing-table
BGP Local router ID is 10.1.12.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 4.4.4.4/32 3.3.3.3 0 100 0 4i
* i 3.3.3.3 0 100 0 4i
[R2-bgp]
# 可以看到存在着两条R4的路由,然后通过查看详细信息,看是什么原因下面那条没被优选的
[R2-bgp]display bgp routing-table 4.4.4.4
BGP local router ID : 10.1.12.2
Local AS number : 123
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 4.4.4.4/32:
From: 1.1.1.1 (10.1.12.1)
Route Duration: 00h01m11s
Relay IP Nexthop: 10.1.12.1
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 4, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best,
select, active, pre 255, IGP cost 20
Originator: 10.1.13.3
Cluster list: 10.1.12.1
Not advertised to any peer yet
BGP routing table entry information of 4.4.4.4/32:
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h08m18s
Relay IP Nexthop: 10.1.12.1
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 4, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 20, not preferred for peer address
Originator: 10.1.13.3
Cluster list: 5.5.5.5
Not advertised to any peer yet
[R2-bgp]
# 查看详细信息可以看到,是因为not preferred for peer address才没有被优选的,然后通过上面的信息可以看到在携带了Originator: 属性的情况下,是没有比较router-id的,而此时是要比较Originator,但是都一样比较不出来,所以才比较到了具有最小IP address的对等体学来的路由。
到了这里,关于华为BGP选路规则详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!