如果存在通往同一目的网络的多条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.EBGP和IBGP路由之间,优选前者。
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