如果存在通往同一目的網絡的多條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