BGP選路原則及若干實驗

BGP選路原則及若干實驗

來自專欄風兮的筆記

BGP(邊界網關協議)有十三條選路原則:

(從上到下比較)

  1. 優先選擇最大weight(權重)的路由 (範圍:0~65535)
  2. 優先選擇有最大LOCAL_OREF(本地優先順序)的路由 (範圍:0~4294967295)
  3. 優先選擇從本地路由器始發的路由 (即下一跳0.0.0.0)
  4. 優先選擇AS-path數量最少的路由
  5. 根據origin屬性,優先選擇具有最低起源類型的路由 (IGP優先於EGP優先於incomplete)
  6. 優先選擇具有最小MED值的路由 (範圍:0~4294967295)
  7. EBGP優先於IBGP
  8. 優先選擇能夠通過最近的IGP鄰居到達的路徑 (即對BGP下一跳具有最低IGP度量值的路徑)
  9. 如果配置了maximum-path N(2≤N≤6),可實現負載均衡 (但BGP會繼續比較,只有一條路徑被打上「>」標籤)
  10. 如果都是external(外部的)路由,優先選擇最老(即最早學到)的路由
  11. 優先選擇擁有最小BGP-router-ID的路由
  12. 如果是從路由反射器(RR)學習到的路由,優先選擇擁有最小cluster-ID(路由反射器的router-ID)的路由
  13. 優先選擇具有最低對等體地址接收到的路由(即鄰居IP地址最小的)

實驗拓撲:

底層配置如圖所示,例如R1的e0/0介面地址為10.1.12.1/24,以此類推。每台路由器擁有一個環回口,例如R1的環回口為1.1.1.1/24,以此類推。R1、R2、R3將環回口宣告進EIGRP,6台路由器按照拓撲建立BGP並分別將環回口宣告進去。

配置完成後,R2上應看到如下BGP路由表:

修改weight值

從路由表中可以看到,R2去往5.5.5.5/32有兩條路徑,下一跳分別為1.1.1.1和3.3.3.3。BGP選擇的是從1.1.1.1走。為了使用另外一條路徑,需要在R2與R3建立鄰居時增加權重值。配置如下:

R2:

此時再查看R2的BGP路由表:

可以看到,R2上所有下一跳為3.3.3.3的路由weight值都變成了65535。

註:weight值這個屬性為Cisco私有,默認值為0,只能影響本地路由器。

修改本地優先順序

(清除修改weight值的配置)

在R3上設置本地優先順序為200.配置如下:

R3:

此時再查看R2的BGP路由表:

可以看到,所有下一跳為3.3.3.3的路由本地優先順序都變成了200。

註:LOCAL_OREF的默認值為100,修改後作用範圍為同一個AS內部。原理是告訴AS內的路由器哪一台路由器是出AS的最佳路徑。

修改AS-path

(清除修改本地優先順序的配置)

在R1上寫一條列表抓取6.6.6.6/32的路由(忘截圖了)

寫一條名為ASpath(名字可隨意取)的route-map,匹配列表並添加路由已經經過的AS號:

再在BGP中調用該route-map:

此時R2列表中,去往6.6.6.6的兩條路徑Path屬性一致,都為400 500 600 i (圖又忘截了)

註:BGP在選路時可通過命令:bgp bestpath as-path ignore忽視AS-path這一屬性

修改MED值

(清除修改AS-path的配置)

在R1上寫一條列表抓取5.5.5.5/32的路由

寫一條名為MED(名字可隨意取)的route-map,匹配列表並設置Metric值:

再在BGP中調用該route-map:

此時R2列表中,去往5.5.5.5、下一跳為1.1.1.1的路由MED值為100:

註:只有當路由來自同一AS的兩台設備時,才會比較MED。配置bgp always-compare-med後,即使路由來自不同AS的兩台設備,也會比較MED。


推薦閱讀:

銳捷實戰系類 (九) 明文enable(特權)密碼
銳捷實戰系類 (十五) 實訓14 SSH遠程登陸
銳捷實戰系類 (十七)VLAN創建
銳捷實戰系類 (七) 熟悉基本的show命令
銳捷實戰系類 (八) 清除三層交換機配置

TAG:網路工程 | 網路協議 | 網路工程師 |