华为BGP十一条选路规则盘点

通信网络

650人已加入

描述

华为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
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

# 查看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只有一条路由,这是因为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的路由表
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

# 可以看到存在两条路由,并且去往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路由表
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

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

# 结果是跟第一种方式一样的
# 第三种方式,在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
# 查看路由表
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

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

# 得到结论跟前二者一样

 

 

选路规则第三条

依次优选手动聚合路由,自动聚合路由,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路由表
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

# 在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的路由表
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优选了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路由表
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

# 可以看到目前学到的两条路由起源属性都是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上的路由表
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上从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的默认选举
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访问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的选路
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选择了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下一跳
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跟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的路由表
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

# 通过上面可以看到有两条下一跳为3.3.3.3的路由,但是看起来都一模一样,看不出来区别,需要看详细信息。使用命令查看详细信息
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


# 根据以上命令回显可以看到,在下方的回显中 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的对等体学来的路由。

选路规则的最后一条是比较对等体的地址的,那么什么时候会用到第十一条比较呢?

实验目的:

配置实验,使得通过最后一条选路规则比较出最优。需要对拓扑有一个改变

路由器

R3学到R4的路由,R5跟R1做为RR反射给R2,此时在R2的路由表中就会存在着两条R4的路由。

配置命令:

# 配置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的对等体学来的路由。

审核编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分