如果存在通往同一目的网络的多条BGP路由,那么BGP会根据路由属性,并按下列顺序选择最佳路径。

1.忽略下一跳未知的路由

2.忽略未能同步的IBGP路由

3.优选具有最高权重的路由

4.优选具有最高本地优先级的路由

5.优选本机生成的路由

6.优选具有最短AS路径的路由。

如果配置了bgp bestpath as-path ignore命令,则跳过这一步。带as-set选项执行路由聚合时,无论AS聚合中的AS项有多少,都记为1。不使用联盟子AS号来确定AS路径的长度。

7.优选具有最低起源代码值的路由

8.优选具有最低MED值的路由:只能在由同一外部AS通告的多条路由之间比较MED值。

注意:

1. 如果使用了bgp always-compare-med命令,则会比较所有路径的MED值。如果确需比较所有路径的MED值,则在AS中的每台BGP路由器上配置该命令。

2. 若配置了bgp bestpath med-confed命令,则只能对AS路径属性中含有AS联盟序列的路由进行比较。

3.若收到的前缀(路由)未设MED值,BGP路由器会将该值指定为0.若配置bgpbestpath and missing-as-worst命令,BGP路由器会以4294967294为未设置MED值的路由赋值

9.EBGPIBGP路由之间,优选前者。

10.优选由最近的IGP邻居通告的路由。

11.优选最先接收到的路由

12.优选由具有最低路由器ID的路由器通告的路径。

 

BGP专有命令的一些分析

下面对这些命令进行分析:

1.bgp always-compare-med

2.bgpbestpath as-path ignore

3.bgpbestpath med missing-as-worst

4.bgpbestpath med confed

为什么要研究这些命令呢?因为它与BGP的选路原则有关。

 

底层全用OSPF,在R1上将11.11.11.11宣告进BGP中,现在在R4上它优选哪一条路由呢?

R2!显然是R2,但这里注意,比较的并不是最小的router-id是比较的最近的IGP邻居!

 

看第一个命令:bgpalways-compare-med。

如果两条BGP路由as-path左边第一个AS值不一样,那么就不比较MED值(默认),如果输入这个命令仍然比较MED值。

现在我要优选走R3的路由,在R4上配置:

1.access-list 1 permit 11.11.11.11

2.route-mapmed permit 10

match ip address 1

set metric 100

route-mapmed permit 20

3.neighbor2.2.2.2 route-map med in

bgp always-compare-med

只要将来自于R2的BGP路由的MED值改大就可以了。

Network         Next Hop    Metric   LocPrf   Weight    Path

*>11.11.11.11/32  3.3.3.3                          0   3 1 i

*                  2.2.2.2             100         0   2 1 i

 

看第二条命令:bgpbest-path as-path ignore

我的IOS里没有这条命令

但我们分析一下,如果在R2上输入这命令,那么它将不比较AS-PATH的长度,从而选择R4(比较到了最近的IGP邻居)

 

看第三条命令:bgpbestpath med missing-as-worst

在R4上配置,它的作用是如果宣告个R4的路由不带MED属性,那么它就将MED属性变为4294967295。

现在我将R2通告给R4的路由MED设为10,看到R4上如下现象:

Network           Next Hop    Metric    LocPrf    Weight    Path

*11.11.11.11/32    3.3.3.3    4294967295                0   3 1 i

*>                 2.2.2.2     10                       0   2 1 i

突然想到一个问题:R2上收到几条BGP路由?为什么?

 

第四条命令:bgpbestpath med confed

一开始R1向R2通告一条路由MED为10,R3向R2通告一条路由MED为5.

R2#showip bgp

Network           Next Hop        Metric     LocPrf     Weight  Path

*13.13.13.13/32   3.3.3.3           5          100         0  (3) i

*>                1.1.1.1           10         100         0 (1) i

显然不同的自治系统之间是不比较MED值的。

但是键入命令:bgpbestpath med confed

现象:比较了MED值

R2#showip bgp

Network           Next Hop    Metric   LocPrf Weight Path

*13.13.13.13/32    1.1.1.1     10        100    0 (1) i

*>                  3.3.3.3     5        100    0 (3) i