BGP 選路規則難記?請速度收藏本文!

嵌入式小美老師 發佈 2024-03-03T10:09:02.455305+00:00

仍然看上一個小節最後的實驗,在R2上,最終將比較R1及R3的peer ip,在R2上配置鄰居R1時,我們用的命令是peer 1.1.1.1 as-number 1234;

BGP路由優選規則

  • 實驗環境介紹
  • 規則詳解及實驗驗證
    • 1.優選具有最大Preferred_Value的路由
    • 2.優選具有最大Local_Preference的路由
    • 3.優選起源於本地的路由
    • 4.優選AS_PATH最短的路由
    • 5.依次優選Origin類型為IGP、EGP、Incomplete的路由
    • 6.優選MED最小的路由
    • 7.相對於IBGP路由,優選EBGP路由
    • 8.優選到BGP下一跳IGP度量值最小的路由
    • 9.優選Cluster-List最短的路由
    • 10.優選Router-ID最小的BGP鄰居發來的路由
    • 11.優選peer IP位址最小的鄰居發來的路由


BGP路由優選規則

在BGP網絡設計中,針對BGP路由的各種路徑屬性的操作都將影響路由的優選,從而對網絡的流量產生影響,掌握BGP路由的優選規則十分之重要。

一台路由器有可能學習到多條去往相同目的網絡的BGP路由,BGP會在這些路由中選擇一條最優的路由。

BGP定義了一整套詳細的選路規則,使得路由器能夠在任何複雜的、冗餘的網絡環境下,決策出一條最優的路由:

  1. 優選具有最大Preferred_Value的路由;
  2. 優選具有最大Local_Preference的路由;
  3. 依次優選手動聚合路由、自動聚合路由、network命令引入的路由、import-route命令引入的路由、從對等體學習的路由;
  4. 優選AS_Path最短的路由;
  5. 依次優選Origin類型為IGP、EGP、Incomplete的路由;
  6. 優選MED最小的路由;
  7. EBGP路由優於IBGP路由;
  8. 優選到BGP下一跳的IGP度量值最小的路由;
  9. 優選Cluster_List最短的路由;
  10. 優選Router-ID最小的BGP鄰居發來的路由;
  11. 優選peer地址最小的鄰居發來的路由。

BGP在進行路由優選時,按照如上規則,依序進行判斷。例如,當路由器學習到多條到達同一個目的網絡的BGP路由時,擁有最大Preferred_Value值的路由將會被優選,如果路由的Preferred_Value相等,則進入下一條規則進行比較,即優選具有最大Local_Preference的路由,如果路由的Local_Preference相等,則繼續進入下一條規則進行比較,直到決策出最優路由為止。需要注意的是上述羅列的只是選路規則中比較有代表性的幾條,並不是全部規則,另外,不同的廠商在規則的實現上存在一定的差異,而同一個廠商的不同系統軟體版本,也存在實現差異。

實驗環境介紹

拓撲及描述:

  • IP位址規劃如圖所示,設備互聯IP採用10.1.xy.0/24的編址,x及y為設備編號。這種編址方式能夠在實驗過程中更好地觀察現象。同時所有的設備配置Loopback0接口,IP為x.x.x.x/32,其中x為設備編號。

這個接口地址只作為設備Router-ID以及建立IBGP鄰居關係時使用。

  • AS345中,R3、R4、R5運行OSPF,在OSPF中,各設備宣告自己的直連接口以及Loopback0接口所在網段,但R3不在接口GE0/0/0口上激活OSPF、R5不在GE0/0/1上激活OSPF,這兩個直連鏈路視為AS外的鏈路,不將其所在網段引入OSPF中。
  • 各設備的BGP連接情況如下:

其中,IBGP鄰居關係的建立基於loopback0口,EBGP鄰居關係的建立基於直連物理接口。 初始化配置:

註:以下羅列的設備配置中,省略了設備接口IP位址的配置。

R1的配置如下:

[R1] bgp 100
[R1-bgp] router-id 1.1.1.1
[R1-bgp] peer 10.1.13.3 as-number 345

R2的配置如下:

[R2] bgp 200
[R2-bgp] router-id 2.2.2.2
[R2-bgp] peer 10.1.25.5 as-number 345

R3的配置如下:

[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 0
[R3-ospf-1-area-0.0.0.0] network 10.1.34.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
[R3] BGP 345
[R3-bgp] router-id 3.3.3.3
[R3-bgp] peer 10.1.13.1 as-number 100
[R3-bgp] peer 4.4.4.4 as-number 345
[R3-bgp] peer 4.4.4.4 connect-interface loopback 0
[R3-bgp] peer 4.4.4.4 next-hop-local

R4的配置如下:

[R4] ospf 1 router-id 4.4.4.4
[R4-ospf-1] area 0
[R4-ospf-1-area-0.0.0.0] network 10.1.34.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0] network 10.1.45.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0] network 4.4.4.4 0.0.0.0
[R4] bgp 345
[R4-bgp] router-id 4.4.4.4
[R4-bgp] peer 3.3.3.3 as-number 345
[R4-bgp] peer 3.3.3.3 connect-interface loopback 0
[R4-bgp] peer 5.5.5.5 as-number 345
[R4-bgp] peer 5.5.5.5 connect-interface loopback 0

R5的配置如下:

[R5] ospf 1 router-id 5.5.5.5
[R5-ospf-1] area 0
[R5-ospf-1-area-0.0.0.0] network 10.1.45.5 0.0.0.0
[R5-ospf-1-area-0.0.0.0] network 5.5.5.5 0.0.0.0
[R5] bgp 345
[R5-bgp] router-id 5.5.5.5
[R5-bgp] peer 10.1.25.2 as-number 200
[R5-bgp] peer 4.4.4.4 as-number 345
[R5-bgp] peer 4.4.4.4 connect-interface loopback 0
[R5-bgp] peer 4.4.4.4 next-hop-local #R5對R4執行next-hop-local

規則詳解及實驗驗證

1.優選具有最大Preferred_Value的路由

1. 規則描述

當路由器學習到多條到達同一個目的網絡的BGP路由時,擁有最大Preferred_Value值的路由將會被優選。

2. Preferred_Value屬性回顧

  • 華為私有的路徑屬性,路由的Preferred_value可以理解為該路由在本路由器視角的權重值。
  • 範圍0-65535,默認值為0,值越大,則路由越優。
  • 作用範圍是本設備(不傳遞),該值不會被包含在update報文中,不會傳遞給任何BGP鄰居。

嵌入式物聯網需要學的東西真的非常多,千萬不要學錯了路線和內容,導致工資要不上去!

無償分享大家一個資料包,差不多150多G。裡面學習內容、面經、項目都比較新也比較全!某魚上買估計至少要好幾十。

點擊這裡找小助理0元領取:加微信領取資料


3. 規則驗證

現在我們在R1和R2上配置一個Loopback1接口,配置IP位址:100.0.1.1/24,然後將這條路由發布到BGP(這部分配置不再贅述)。如此一來,R1將更新路由100.0.1.0/24給R3,而R3從自己的EBGP鄰居R1學習到這條路由後,會更新給R4;同理,R5也會將學習自EBGP鄰居R2的路由100.0.1.0/24更新給R4,那麼對於R4來說就從R3及R5都學習到了去往100.0.1.0/24的路由,R4將如何優選?

現在,我們希望通過操控路由的Preferred_Value值來讓R4優選R5傳遞過來的路由。

在R4配置上述命令,將R5傳遞過來的所有路由的Preferred_Value(在收到之後)都設置為10,而R3傳遞過來的路由的Preferred_Value則在本地賦予默認值0,這麼一對比,當然是優選R5所通告的路由了。但是這個方法「顆粒度」太大,如果我們只是想針對特定的路由設置Preferred_Value呢?例如:

在R1及R2上新增100.0.2.0/24網段並將其發布到BGP。R1、R2的新增配置不再贅述。那麼實現上圖描述的需求,R4的配置可以變更成:

ip ip-prefix 1 permit 100.0.1.0 24
ip ip-prefix 2 permit 100.0.2.0 24
route-policy RP1 permit node 10
if-match ip-prefix 1
apply preferred-value 10  #設置所匹配路由的Preferred_value
route-policy RP1 permit node 20
route-policy RP2 permit node 10
if-match ip-prefix 2
apply preferred-value 10
route-policy RP2 permit node 20
bgp 345
peer 3.3.3.3 route-policy RP1 import
peer 5.5.5.5 route-policy RP2 import

注意:上述配置中route-policy RP1 permit node 20及route-policy RP2 permit node 20必須配置,因為route-policy在末尾隱含deny any,因此如果這兩個node不加的話,相當於是只放行node 10中允許的路由。

[R4] display bgp routing-table
BGP Local router ID is 4.4.4.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: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 3.3.3.3 0 100 10 100i
* i 5.5.5.5 0 100 0 200i
*>i 100.0.2.0/24 5.5.5.5 0 100 10 200i
* i 3.3.3.3 0 100 0 100i

我們看到,在R4上,對於100.0.1.0/24路由,優選的是R3傳遞過來的;對於100.0.2.0/24的路由,優選的是R5傳遞過來的。這就實現了我們的需求。事實上還可以進一步查看路由的詳細信息,例如查看100.0.1.0/24這條路由:

[R4] display bgp routing-table 100.0.1.0
BGP local router ID : 4.4.4.4
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24:  #路徑1
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h01m43s
Relay IP Nexthop: 10.1.34.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100, origin igp, MED 0, localpref 100, pref-val 10, valid, internal, best, select, active, pre 255, IGP cost 1
# best字樣表示本路徑被優選
Not advertised to any peer yet
BGP routing table entry information of 100.0.1.0/24:  #路徑2
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h01m43s
Relay IP Nexthop: 10.1.45.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 5.5.5.5
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred for PreVal
#這裡說明了本路徑沒被優選的原因:Pre_Val值
Not advertised to any peer yet

OK,完成了規則一的測試後,我們將用於驗證本條規則的相關配置刪除,恢復成初始化配置。繼續看下一條規則。

2.優選具有最大Local_Preference的路由

1. 規則描述

當路由器學習到多條到達同一個目的網絡的BGP路由時,擁有最大Preferred_Value值的路由將會被優選。如果路由的Preferred_Value值相等,則比較路由的Local_Preference值,優選具有最大Local_Preference值的路由。

2. Local_Preference屬性回顧

  • 公認自決屬性,值越大則路由越優。
  • Local_Preference只能在IBGP Peer之間傳遞,不能在EBGP Peer之間傳遞。
  • 本地始發的路由默認Local_Preference為100。可用default local-preference ? 命令修改默認值。

3. 規則驗證

現在實驗恢復成初始化環境,在R1及R2上都配置Loopback1口,IP位址為100.0.1.1/24,R1及R2都將到達100.0.1.0/24的路由發布到BGP。

我們要通過操控Local_Preference讓R4優選R3傳遞過來的100.0.1.0/24路由。可以在R3上對R4做export方向的策略,修改路由的Local_Preference值,將其設置為200;而R5這邊則保持默認,也就是Local_Preference=100,如此一來,在R4上,到達100.0.1.0/24的兩條BGP路徑,首先Preferred_Value相等,然後繼續比較Local_Preference,優選大的,因此來自R3的路由被優選。

R3的配置變更如下:

ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply local-preference 200
route-policy RP permit node 20
bgp 345
peer 4.4.4.4 route-policy RP export
在R4上驗證一下:
[R4] display bgp routing-table
BGP Local router ID is 4.4.4.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: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 3.3.3.3 0 200 0 100i
* i 5.5.5.5 0 100 0 200i

完成了本規則的驗證後,我們將用於驗證本條規則的相關配置刪除,恢復成初始化配置。繼續看下一條規則。

3.優選起源於本地的路由

當路由器學習到多條到達同一個目的網絡的BGP路由時,如果路由的Preferred_Value值相等,且Local_Preference值也相等,那麼依次優選手動聚合路由、自動聚合路由、network命令引入的路由、import-route命令引入的路由、從對等體學習的路由。

本條規則略過不做驗證。

4.優選AS_PATH最短的路由

1. 規則描述

當路由器學習到多條到達同一個目的網絡的BGP路由時,如果路由的Preferred_Value屬性值、Local_Preference屬性值都相等,並且這些路由都是學習自其它鄰居的,那麼AS_PATH最短的路由將被優選。

2. 規則驗證

現在實驗環境恢復成初始化環境,同樣讓R1及R2引入100.0.1.0/24路由。我們要通過操控AS_PATH屬性讓R4優選R5傳遞過來的100.0.1.0/24路由。那麼可以在R3上對R1做import方向的策略,在原有AS_PATH的基礎上,增加一個100的AS號,使得路由的AS_PATH長度加長一個單位。如此一來R4將優選R5傳遞過來的100.0.1.0/24路由。

R3的配置變更如下:

ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply as-path 100 additive
route-policy RP permit node 20
bgp 345
peer 10.1.13.1 route-policy RP import

完成配置後,在R4上驗證一下:

[R4]display bgp routing-table
BGP Local router ID is 4.4.4.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: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 5.5.5.5 0 100 0 200i
* i 3.3.3.3 0 100 0 100 100i

從上面的輸出可以看到,R4優選了R5傳遞過來的100.0.1.0/24路由。當然,可以進一步查看路由的詳細信息:

[R4] display bgp routing-table 100.0.1.0
BGP local router ID : 4.4.4.4
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24:
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h06m45s
Relay IP Nexthop: 10.1.45.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 5.5.5.5
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 1
Not advertised to any peer yet
BGP routing table entry information of 100.0.1.0/24:
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h02m37s
Relay IP Nexthop: 10.1.34.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100 100, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred for
AS-Path #這裡指出了本路徑沒有被優選的原因。
Not advertised to any peer yet

另外,使用route-policy來修改BGP路由的AS_PATH時,需關注如下命令:

apply as-path xx additive 在已有AS_PATH基礎上追加xx
apply as-path xx overwrite 將已有AS_PATH值替換(覆蓋)成xx
apply as-path none overwrite  清空AS_PATH

再有,執行bestroute as-path-ignore命令後,BGP在執行選路時,將忽略AS_PATH的比較,該命令需慎用。值得強調的是:BGP的路由防環很大程度上依賴於AS_PATH,因此任何對AS_PATH的策略在實施的時候都應該考慮周全。

3. 規則補充一

規則補充:AS_SET的長度為1,無論AS_SET中包括多少AS號,都將算作1個AS號。

4. 規則補充二

規則補充:AS_CONFED_SEQUENCE和AS_CONFED_SET長度不做計算依據。

R1將自己的直連路由10.0/24發布到BGP。R1會將10.0/24的路由通過BGP更新給R4,再由R4將路由傳

遞給R5,此時路由的AS_PATH是:「(64514)100」,此處AS_PATH長度為1 ;另一方面R1也會將路由傳遞給R2,R2再傳給R3,最後R3將路由傳給R5,路由傳遞給R5時AS_PATH是:「300 200 100」,此處AS_PATH長度為3。在R5上觀察到的現象是,它優選R4更新過來的這條10.0/24,這是因為該條路由的AS_PATH更短。

在上個環境及配置的基礎之上,在R1上配置route-policy,將10.0/24路由的AS_PATH增加兩個100的AS號,也就是插入「100 100 」並且將該route-policy對R4生效(export方向)。如此一來,R4收到的10.0/24的BGP路由,AS_PATH為「100 100 100」,而當它將路由發送給聯邦EBGP鄰居R5時,路由的AS_PATH變成「(64514) 100 100 100」,此時AS_PATH的長度為3,即聯邦的AS號是不做長度計算的。

另一邊R3傳遞過來的10.0/24的BGP路由,AS_PATH長度還是3,兩邊的AS_PATH長度相等,因此比AS_PATH是比不出來了,只能往後面的規則繼續PK。

5.依次優選Origin類型為IGP、EGP、Incomplete的路由

1. 規則描述

當路由器學習到多條到達同一個目的網絡的BGP路由時,在其他條件相同的情況下,依次優選Origin屬性為IGP、EGP、Incomplete的路由。

2. 規則驗證

現在,繼續將實驗環境恢復成初始化狀態。在這個規則的驗證中,在R1上,改用import-route的方式來注入100.0.1.0/24路由,R2則仍保持network的方式注入。

那麼R1的配置變更如下:

ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
bgp 100
import-route direct route-policy RP
……

或者使用route-policy來修改origin,同樣是修改R1的配置:

ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply origin incomplete
bgp 100
peer 10.1.13.3 route-policy RP export
network 100.0.1.0 24
……

這樣一來R1引入的100.0.1.0/24路由,origin屬性值就為incomplete,而R2引入的100.0.1.0/24的路由(使用network命令發布),origin屬性值為IGP。

完成配置後驗證一下:

[R4] display bgp routing-table
BGP Local router ID is 4.4.4.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: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 5.5.5.5 0 100 0 200i
* i 3.3.3.3 0 100 0 100?

當然,可以進一步看詳細信息:

[R4] display bgp routing-table 100.0.1.0
BGP local router ID : 4.4.4.4
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24:  #路徑1
From: 5.5.5.5 (5.5.5.5)
Route Duration: 01h01m29s
Relay IP Nexthop: 10.1.45.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 5.5.5.5
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best
, select, active, pre 255, IGP cost 1
Not advertised to any peer yet
BGP routing table entry information of 100.0.1.0/24:  #路徑2
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h03m11s
Relay IP Nexthop: 10.1.34.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred
for Origin #由於Origin為incomplete因此輸給了路徑1
Not advertised to any peer yet

6.優選MED最小的路由

1. 規則描述

當路由器學習到多條到達同一個目的網絡的BGP路由時,在其他條件相同的情況下,比較這些路由的 MED,優選擁有最小MED值的路由。

2. 屬性回顧

MED屬性為可選非傳遞屬性,值越小則路由越優,一般用於AS之間影響BGP路由決策。

3. 規則詳解

  • BGP只比較來自同一個相鄰AS的路由的MED值。
  • 如果路由沒有MED屬性,BGP選路時將該路由的MED值按預設值0來處理;而執行bestroute med-none-as-maximum命令後,BGP選路時將該路由的MED值按最大值4294967295來處理。
  • 預設情況下,不允許比較來自不同AS鄰居的路由路徑的MED屬性值。而執行compare-different-as-med命令後,BGP將強制比較來自不同自治系統中的鄰居的路由的MED值。除非能夠確認不同的自治系統採用了同樣的IGP和路由選擇方式,否則不要使用compare-different-as-med命令(可能產生環路)。

4. 規則驗證

在本規則的實驗中,我們將環境做了小小的變更,R2不再屬於AS200了,我們把他規劃到AS100,至於為什麼,這裡相信大家已經都想到了。R1、R2都向BGP發布路由100.0.1.0/24,最終R4將學習到兩條路由更新。現在我們的需求是,通過操控MED值,讓R4優選從R5更新過來的路由。

方法很簡單,R5將100.0.1.0/24更新給R4時,MED為默認值0,那麼我們只要在R1更新路由給R3時,將MED設置為999,這條路由再經由R3更新給R4時,也會一併將MED攜帶,最終,R4將優選MED小的路徑,也就是R5傳遞過來的路由。

R2及R5的配置變更這裡就不再贅述了。

重點看R1的配置:

ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply cost 999  #設置MED值為999
bgp 100
network 100.0.1.0 24
peer 10.1.13.3 as-number 345
peer 10.1.13.3 route-policy RP export
完成上述配置後,仍然在R4上驗證一下:
[R4] display bgp routing-table
BGP Local router ID is 4.4.4.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: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 5.5.5.5 0 100 0 100i
* i 3.3.3.3 999 100 0 100i

從上面的輸出可以看到,R4優選了R5傳遞過來的100.0.1.0/24的路由。因為從R3傳遞過來的路由MED為999,值更大。

7.相對於IBGP路由,優選EBGP路由

1. 規則描述

當路由器學習到多條到達同一個目的網絡的BGP路由時,在其他條件相同的情況下,EBGP路由的優先級高於IBGP路由。

2. 規則驗證

本規則的驗證環境要發生一些改變,我們在R3-R5之間建立一條IBGP的鄰居關係。這樣一來R3會將自己從R1學習到的BGP路由傳遞給IBGP鄰居R5,而R5又會從另一側學習到R2更新過來的100.0.1.0/24路由,那麼R5將如何優選呢?

變更的配置這裡就不在贅述了,這裡有一個小細節要注意,那就是R3別忘了要配置一條peer 5.5.5.5next-hop-local

完成配置後,我們在R5上觀察一下:

[R5] display bgp routing-table
BGP Local router ID is 5.5.5.5
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
*> 100.0.1.0/24 10.1.25.2 0 0 100i
* i 3.3.3.3 0 100 0 100i

從上面的輸出可以看到R5優選了來自R2的路由,可以進一步查看路由的詳細信息:

[R5] display bgp routing-table 100.0.1.0
BGP local router ID : 5.5.5.5
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24:
From: 10.1.25.2 (10.1.25.2)
Route Duration: 00h11m54s
Direct Out-interface: GigabitEthernet0/0/1
Original nexthop: 10.1.25.2
Qos information : 0x0
AS-path 100, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255
Advertised to such 2 peers:
4.4.4.4
3.3.3.3
BGP routing table entry information of 100.0.1.0/24:
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h02m14s
Relay IP Nexthop: 10.1.45.4
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 2, not preferred for peer
type #這裡指出了為何本路由不是best
Not advertised to any peer yet

8.優選到BGP下一跳IGP度量值最小的路由

1. 規則描述

當路由器學習到多條到達同一個目的網絡的BGP路由時,在其他條件相同的情況下,BGP將比較路由器到這些路由的Next_hop的IGP度量值,優選到Next_hop度量值最小的BGP路由。

2. 規則驗證一

仍然將實驗環境恢復到初始化狀態。R1將路由100.0.1.0/24更新給了R3,R3將這條路由又更新給了R4,由於我們在R3上對R4做了next-hop-local,因此R4在收到這條路由時路由的Next_hop屬性值為3.3.3.3;

同理,R4從R5收到的路由100.0.1.0/24的Next_hop為5.5.5.5。而R4又通過OSPF學習到了去往3.3.3.3/32及5.5.5.5/32的路由,並且此刻在R4上,到達3.3.3.3及5.5.5.5的OSPF度量值都是相等的。

現在,我們在R4連接R3的接口上增加配置(該接口的預設OSPF度量值為1):ospf cost 10。如此一來,R4到達3.3.3.3的OSPF度量值就發生了變化,變得比到達5.5.5.5的OSPF度量值更大,因此最終,本規則將讓R4優選R5傳遞過來的100.0.1.0/24路由.

[R4]display bgp routing-table 100.0.1.0
BGP local router ID : 4.4.4.4
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24:
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h20m06s
Relay IP Nexthop: 10.1.45.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 5.5.5.5
Qos information : 0x0
AS-path 100, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 1
# IGP cost=1,這的IGP cost事實上是R4學習到的5.5.5.5/32路由的OSPF cost,可以在R4的路由表中查看。
Not advertised to any peer yet
BGP routing table entry information of 100.0.1.0/24:
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h11m25s
Relay IP Nexthop: 10.1.34.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 10, not preferred for IGP
cost #到3.3.3.3的IGP cost變成了10,比到5.5.5.5的IGP cost更大,因此PK輸了。
Not advertised to any peer yet
  1. 規則驗證二

現在將網絡環境再做點調整:R3-R5之間增加一條IBGP連接。R4配置為路由反射器RR,R3是她的Client。

這樣一來,首先,R3通過IBGP連接直接將100.0.1.0/24的路由傳給了R5,另一方面又經由路由反射器R4反射給了R5,因此,R5將同時從R3及R4學習到100.0.1.0/24的BGP路由。這時候R5怎麼決策?

注意,由於這兩條BGP路由Next_Hop屬性值都是3.3.3.3,因此,本規則無法做出決策,因為兩條路由的Next_hop都相等,不具備度量值的可比性。只能再繼續到下一條規則中決策。

9.優選Cluster-List最短的路由

1. 規則描述

如果經過前面的規則,都無法決策出最優路由,那麼將進一步比較候選路由的Cluster_List屬性,優選最短Cluster_List的路由。

2. 規則驗證

略。

10.優選Router-ID最小的BGP鄰居發來的路由

1. 規則描述

如果經過前面的規則,都無法決策出最優路徑,那麼將優選Router-ID最小的BGP鄰居發來的路由。

2. 規則驗證

仍然是將實驗環境還原成初始化狀態。在R1及R2上都發布100.0.1.0/24 BGP路由。那麼在不做任何路由策略配置的情況下,R4將學習到R3及R5傳遞過來的路由:

從上面的輸出可以看到,R4已經優選了R3傳遞過來的路由,在其他條件相同的情況下,R4將比較通告這兩條路由的鄰居的Router-ID,由於R3的Router-ID 3.3.3.3要小於R5的Router-ID 5.5.5.5,因此R3傳遞過來的路由被優選。

3. 規則補充

如果路由攜帶Originator_ID屬性,則將使用Originator_ID代替Router-ID進行比較。

在上面的拓撲環境中:

  • R1、R2、R3、R4屬於AS 1234,AS內運行了OSPF,路由器都宣告各自的Loopback0接口,接口IP位址為x.x.x.x/32,x為設備編號。
  • R1-R4;R4-R3;R1-R2;R2-R3基於Loopback0建立IBGP鄰居關係。
  • R1配置為RR,R4是它的Client;R3配置為RR,R4是它的Client。
  • 在R4上發布44.44.44.0/24路由進BGP。 當R1收到R4更新過來的路由後,會將其反射給R2並插入Originator_ID及Cluster_List屬性。R3同理。

那麼最終R2將分別從R1和R3學習到44.44.44.0/24路由,R2會如何優選?這兩條路由擁有相同的Preferred_Value、Local_Preference,並且都通告自鄰居,AS_Path長度一樣,Origin也相同,MED也相等,還都是IBGP鄰居通告而來,連Next_Hop屬性也相同,另外,路由攜帶的Cluster_List長度也相同。那麼能否使用本規則來決策呢?

注意,由於兩條路由都攜帶了Originator_ID屬性,因此在這一輪PK中,就不是比較R1和R3的Router-ID了,而是比較這兩條路由的Originator_ID屬性。結果,由於這兩條路由的起源都是R4,因此Originator_ID相等,所以本條規則仍無法決策。那麼只能在往下面的規則繼續比較了,請看下文。

11.優選peer IP位址最小的鄰居發來的路由

1. 規則描述

如果經過前面的一系列規則仍然無法優選出最優路由,那麼將比較鄰居的IP位址。這個IP位址是在BGP路由器的BGP配置中,peer命令後所指的那個IP位址。

2. 規則驗證

仍然看上一個小節最後的實驗,在R2上,最終將比較R1及R3的peer ip,在R2上配置鄰居R1時,我們用的命令是peer 1.1.1.1 as-number 1234;配置鄰居R3時用的命令是peer 3.3.3.3 as-number 1234,因此R1的地址要小於R3,故優選R1傳遞過來的44.44.44.0/24路由。

[R2] display bgp ro 44.44.44.0
BGP routing table entry information of 44.44.44.0/24:
From: 1.1.1.1 (1.1.1.1)
……
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 2
Originator: 4.4.4.4
Cluster list: 1.1.1.1
BGP routing table entry information of 44.44.44.0/24:
From: 3.3.3.3 (3.3.3.3)
……
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 2, not preferred for peer
address
Originator: 4.4.4.4
Cluster list: 3.3.3.3

轉載自:網絡技術聯盟站

文章來源於BGP 選路規則難記?請速度收藏本文!

原文連結:https://www.wljslmz.cn/20182.html

關鍵字: