BGP的13條選路原則

BGP的13條選路原則

 BGP路由器將路由通告給鄰居後,每個BGP鄰居都會進行路由優選,路由選擇有三種情況
① 該路由是到達目的地的唯一路由,直接優選
② 對到達同一目的地的多條路由,優選優先級最高的
③ 對到達同一目的地且具有相同優先級的多條路由,必須用更細的原則去選擇一條最優的
 一般來說,BGP計算路由優先級的規則如下
① 丟棄下一跳不可達的路由
② 優選Preference_Value值最高的路由(私有屬性,僅本地有效)
③ 優選本地優先級(Local_Preference)最高的路由
④ 優選手動聚合>自動聚合>network>import>從對等體學到的
⑤ 優選AS_Path短的路由
⑥ 起源類型IGP>EGP>Incomplete
⑦ 對於來自同一AS的路由,優選MED值小的
⑧ 優選從EBGP學來的路由(EBGP>IBGP)
⑨ 優選AS內部IGP的Metric最小的路由
⑩ 優選Cluster_List最短的路由
⑪ 優選Orginator_ID最小的路由
⑫ 優選Router_ID最小的路由器發佈的路由
⑬ 優選具有較小IP地址的鄰居學來的路由

1.Preferred-Value數值

Preference_Value是BGP的私有屬性(華爲私有屬性),Preference_Value相當於BGP選路規則中Weight值,僅在本地路由器生效。Preference_Value值越大,越優先,默認缺省值爲0 只能改變自己的入向選路
BGP的13條選路原則
默認情況下華爲這邊會選擇router ID小的作爲自己的最優下一跳

<R1>display bgp routing-table 
 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 8
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
*>i  44.44.44.44/32     2.2.2.2         0          100        0      200i
  * i                     3.3.3.3         0          100        0      200i

① 匹配44.44.44.44的條目 ---方法就是acl或者前綴列表(建議用它)

[R1]display ip ip-prefix 44
Prefix-list 44
Permitted 0
Denied 0
index: 10               permit  44.44.44.44/32
[R1]

② 創建路由策略

#
route-policy 44 permit node 10  ---這個就是我們需要進行關聯的方式
if-match ip-prefix 44       ---這個就是我們的條件
apply preferred-value 200       ---這個就是我們動作
#

③ 在BGP視圖下面進行調用

[R1-bgp]peer 3.3.3.3 route-policy 44 import     只能調用在入方向

④ 驗證(現象就是R1到達我們44.44.44.44的路由下一跳指向的就是R3)

[R1]display bgp routing-table 

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 7
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>i  44.44.44.44/32     3.3.3.3         0          100        200    200i
  * i                     2.2.2.2         0          100        0      200i
[R1]

小結:Pre-Value最大,Preference_Value值越大,越優先,默認缺省值爲0

2. Local_Preference

Local_Pref屬性僅在IBGP鄰居之間有效,不通告給其他AS。它表明路由器的BGP優先級,用於判斷流量離開AS時的最佳路由。一般用來控制我本區域流量怎麼出去,默認情況下Local-Pref值爲100 該數值越大 優先級越高
BGP的13條選路原則
① 匹配44.44.44.44的條目 ---方法就是acl或者前綴列表(建議用它)

[R3]display ip ip-prefix 44
Prefix-list 44
Permitted 0
Denied 0
index: 10               permit  44.44.44.44/32
[R1]

② 創建路由策略

#
route-policy 44 permit node 10  ---這個就是我們需要進行關聯的方式
if-match ip-prefix 44       ---這個就是我們的條件
apply local-preference 200      ---這個就是我們動作
#

③ 在BGP視圖下面進行調用

[R3-bgp]peer 1.1.1.1 route-policy 44 export

此時在BGP裏面調用的時候,可以調用在我們3個方向上面
 第一個方向:在R3的G0/0/0接口上進行調用,但這個調用的話,只能在G0/0/0的import方向
 第二個方向:在R3的G0/0/1接口的進行調用,但這個調用的話,只能在G0/0/1的export方向
 第三個方向:在R1的G0/0/1接口的進行調用,但這個調用的話,只能在G0/0/1的import方向
 不能調用在R4的export方向上面(因爲Local-preference只能在本AS內進行傳遞的)

3.路由聚合

 聚合路由的優先級:手動聚合>自動聚合
 自動聚合
只能對引入import-route的BGP路由進行聚合 如果說通過import-route到BGP的話,此時它的屬性是 ?
 手動聚合
手動聚合可以在BGP路由表中的路由進行聚合 如果說通過我們network宣告到我們BGP當中的話 此時它的屬性是 i(可以對引入路由和network宣告路由都生效)
 如果BGP路由表中既有引入的路由又有network宣告的路由時,只能採用手動聚合實現
 驗證手動聚合大於自動聚合
R4上面的44.44.44.44的路由條目他是network宣告的 此時自動聚合識別不了,我可以在R4上面進行修改我們44網段的起源屬性,通過我們前綴列表和router-policy,應用在我們R4的一個出方向上面 R2就可以對44.44.44.44路由進行自動聚合 R3上面開啓的是手動聚合(手動聚合可以對network宣告的路由和通過路由引入宣告的路由進行聚合)因爲R1這邊收到從R2這邊自動聚合的條目和R3這邊手動聚合條目,所以說 R1這邊到達這條聚合路由的下一跳就是R3
BGP的13條選路原則

自動聚合

① 默認情況下,BGP是沒有開啓自動聚合的
② 自動聚合只對引入的路由生效,對network路由不生效
③ 配置自動聚合後,成員明細路由將被抑制掉
④ 發現這些明細前面打了一個S(Suppressed)
⑤ 其他路由器學習到的就是自動聚合的路由
BGP的13條選路原則
① 在R1設備上創建loopback接口,用前綴列表匹配R1的loopback接口,將其引入到BGP協議中

[R1]display ip ip-prefix 1
Prefix-list 1
Permitted 3
Denied 10
        index: 10               permit  100.100.2.0/24          
        index: 20               permit  100.100.3.0/24          
        index: 30               permit  100.100.4.0/24  

② 創建路由策略

[R1]display route-policy 1
Route-policy : 1
  permit : 10 (matched counts: 16)
    Match clauses : 
      if-match ip-prefix 1

③ 在BGP視圖下面進行調用

#
bgp 100
import-route direct route-policy 1
  summary automatic    開啓我們自動聚合(注意啊,一定是對引入的路由進行聚合,network進來的路由是不生效的)
# 
return

④ 在R1查看實驗現象

[R1]display bgp routing-table 
 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 9
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   100.0.0.0          127.0.0.1                             0      ?
  s>   100.100.2.0/24     0.0.0.0         0                     0      ?
  s>   100.100.3.0/24     0.0.0.0         0                     0      ?
  s>   100.100.4.0/24     0.0.0.0         0                     0      ?
 [R1]

所以R2這邊學習到的路由就是我們聚合的路由

<R2>display bgp routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 5
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>i  100.0.0.0          1.1.1.1                    100        0      ?
<R2>

手動聚合

在R1設備在自動手動聚合路由 刪除自動聚合的命令
BGP的13條選路原則
BGP的13條選路原則
① detail-suppressed
注意:後面的detail-suppressed參數是把明細給抑制,如果不加的話,會把明細路由和聚合路由都傳過去

[R1-bgp]aggregate 100.100.0.0 16 detail-suppressed

② as-set
as-set信息在避免路由環路時很重要,因爲它記錄了被聚合路由所經過的AS

[R1-bgp]aggregate 100.100.0.0 16 as-set 

③ Suppress-policy
關鍵字suppress-policy能產生聚合路由,但抑制指定路由的通告,可以使用route-policy和if-match子句有選擇的抑制一些具體路由,其他具體路由仍被通告(抑制聚合中的某些路由)
④ Origin-policy
使用關鍵字origin-policy僅選擇符合route-policy的具體路由來生成聚合路由(只要有這條路由信息,我才能產生聚合路由)

路由聚合產生的問題

如果路由聚合後攜帶所有明細路由經過的AS信息,當明細路由發生頻繁震盪時,聚合路由也可能受其影響頻繁刷新。因此,聚合路由是否攜帶丟失的AS_Path信息,需要設計者綜合考慮網絡環境
BGP的13條選路原則

4.Network大於import引入

把4.4.4.4的路由在RT4發佈給RT2的時候,把屬性更改爲incomplete(也就是引入的方式)看下RT1到達4.4.4.4的路徑選擇
R1默認情況下根據13條選路原則,會選擇router id較小的進行選路,我們讓前3條選路原則不變,我可以改變第四條選路原則,因爲默認情況下,R4的44.44.44.44/32通過network方式發佈到我們的BGP裏面的,它的默認起源屬性是network(也就是我們的i) 我可以改變R2發往R1的起源屬性 那R1變成通過import學習到的路由
BGP的13條選路原則
1.匹配44.44.44.44的條目 ---方法就是acl或者前綴列表(建議用它)

[R2]display ip ip-prefix 44
Prefix-list 44
Permitted 2
Denied 1
        index: 10               permit  44.44.44.44/32   

2.創建路由策略

[R2]display  route-policy
Route-policy : 44
  permit : 10 (matched counts: 1)
    Match clauses : 
      if-match ip-prefix 44
    Apply clauses : 
      apply origin incomplete 

3.在BGP視圖下面進行調用

#
bgp 100
 router-id 2.2.2.2
 peer 1.1.1.1 as-number 100 
 peer 1.1.1.1 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  peer 1.1.1.1 enable
  peer 1.1.1.1 route-policy 44 export
#
return
[R2-bgp]

 注意:
① 可以調用在R2的export出方向(G0/0/0)
② 可以調用在R2的import方向(G0/0/1)
③ 可以調用在R1的import方向(G0/0/0)
④ 可以調用在R4的export方向上(G0/0/1)

5.AS_Path

 收到同一條路由裏面AS路徑最短的優先
RTA從RTB收到100.0.0.0/24的路由時,AS_Path爲(2,4),RTA從RTC收到100.0.0.0/24的路由時,AS_Path爲(3,5,4)。規定AS_Path越短(記錄的AS編號越少),路徑越優,因此RTA會優選從RTB收到的100.0.0.0/24的路由
 AS路徑屬性可以防止BGP環路
以RTE爲例,通過BGP發佈100.0.0.0/24的路由,路由可能通過RTE->RTB->RTC->RTD->RTE形成環路。爲了防止環路的產生,RTE在收到RTD發來的路由時會檢查AS_Path(該路由攜帶的)屬性,如果發現該路由的AS_Path中包含自己的AS號,則丟棄該路由
BGP的13條選路原則
 R1這邊默認情況下根據13條選路原則,會選擇router id較小的進行選路,我們讓前4條選路原則不變,改變第5條選路原則,在R2發往R1的44.44.44.44網段路由的時候 我可以增加一些AS-path屬性進來,可以通過一下兩種方式進行增加
① Additive:Append to original As Number追加as-path屬性 在原有的基礎上進行增加
② Overwrite:Overwrite original As Number覆蓋as-path屬性 把原有的AS-path給直接弄沒
BGP的13條選路原則

  1. 匹配44.44.44.44的條目 ---方法就是acl或者前綴列表(建議用它)
    [R2]display ip ip-prefix 44
    Prefix-list 44
    Permitted 4
    Denied 2
        index: 10               permit  44.44.44.44/32    

    2.創建路由策略

    [R2]display route-policy 44
    Route-policy : 44
    permit : 10 (matched counts: 2)
    Match clauses : 
      if-match ip-prefix 44
    Apply clauses : 
      apply as-path 1000 2000 3000 additive

    3.在BGP視圖下面進行調用

    #
    bgp 100
    router-id 2.2.2.2
    peer 1.1.1.1 as-number 100 
    peer 1.1.1.1 connect-interface LoopBack0
    peer 3.3.3.3 as-number 100 
    peer 3.3.3.3 connect-interface LoopBack0
    peer 24.1.1.4 as-number 200 
    #
    ipv4-family unicast
    undo synchronization
    network 22.22.22.22 255.255.255.255 
    peer 1.1.1.1 enable
    peer 1.1.1.1 route-policy 44 export
    peer 1.1.1.1 next-hop-local 
    peer 3.3.3.3 enable
    peer 3.3.3.3 next-hop-local 
    peer 24.1.1.4 enable
    #
    return
    [R2-bgp]

     注意:
    ① 可以調用在R2的export出方向(G0/0/0)
    ② 可以調用在R2的import方向(G0/0/1)
    ③ 可以調用在R1的import方向(G0/0/0)
    ④ 可以調用在R4的export方向上(G0/0/1)

    6.Origin

     Origin屬性定義路徑信息的來源,標記一條路由是怎麼成爲BGP路由的
     Origin的3種屬性
    ① i 表明BGP路由通過network命令注入
    ② e 表明BGP路由是從EGP學來的,EGP協議在現網中很難見到,但可以通過路由策略將路由的Origin屬性修改爲e
    ③ ? 即Incomplete表明BGP路由通過其它方式學到路由信息,如使用import命令引入的路由
     3種Origin屬性的優先級爲:i>e>Incomplete(?)所以network宣告的路由大於通過import-router引入的路由
    BGP的13條選路原則

    7.MED

    MED(Multi-Exit-Discriminator)屬性僅在相鄰兩個AS之間傳遞,收到此屬性的AS不會再將其通告給任何其他第三方AS,用於判斷流量進入AS時的最佳路由
    當一個運行BGP的路由器通過不同的EBGP鄰居獲得目的地址相同但下一跳不同的多條路由時,在其它條件相同的情況下,將優先選擇MED值較小者作爲最佳路由,其默認值爲0。 MED值較小者作爲最佳路由,其默認值爲0
    BGP的13條選路原則

  2. 匹配44.44.44.44的條目 ---方法就是acl或者前綴列表(建議用它)
    [R2]display ip ip-prefix 44
    Prefix-list 44
    Permitted 5
    Denied 2
        index: 10               permit  44.44.44.44/32     

    2.創建路由策略

    [R2]display  route-policy 44
    Route-policy : 44
    permit : 10 (matched counts: 3)
    Match clauses : 
      if-match ip-prefix 44
    Apply clauses : 
      apply cost 1000 
    #

    3.在BGP視圖下面進行調用

    bgp 100
    router-id 2.2.2.2
    peer 1.1.1.1 as-number 100 
    peer 1.1.1.1 connect-interface LoopBack0
    peer 3.3.3.3 as-number 100 
    peer 3.3.3.3 connect-interface LoopBack0
    peer 24.1.1.4 as-number 200 
    #
    ipv4-family unicast
    undo synchronization
    network 22.22.22.22 255.255.255.255 
    peer 1.1.1.1 enable
    peer 1.1.1.1 next-hop-local 
    peer 3.3.3.3 enable
    peer 3.3.3.3 next-hop-local 
    peer 24.1.1.4 enable
    peer 24.1.1.4 route-policy 44 import
    #
    return
    [R2-bgp]

     注意:
    ① 可以調用在R2的export方向(G0/0/0)
    ② 可以調用在R2的import方向(G0/0/1)
    ③ 可以調用在R1的import方向(G0/0/0)
    ④ 可以調用在R4的export方向(G0/0/1)

    8.EBGP優於IBGP路由

    根據選路原則,RTA會優選從EBGP鄰居學來的路由
    BGP的13條選路原則
    因爲R2可以從R4收到44網段ebgp的路由條目 R2也可以從R3收到IBGP的條目(因爲我R2和R3建立的是IBGP的BGP關係)如果說前面7條選路原則是一樣的話 會比較我們的第8條選擇的原則 所以R2到達44網段的路由要的是EBGP傳遞過來的
    BGP的13條選路原則

[R2]display bgp routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   44.44.44.44/32     24.1.1.4        0                     0      200i
    * i                     3.3.3.3         0          100        0      200i
 [R2]

9.IGP的開銷值

通過調整OSPF Cost,使RTA選擇R3路徑訪問44.44.44.44/32
BGP的13條選路原則
將R1的G0/0/0接口的ospf開銷修改爲2

#
interface GigabitEthernet0/0/0
 ip address 12.1.1.1 255.255.255.0 
#
return
[R1-GigabitEthernet0/0/0]ospf cost 2
[R1]display ip routing-table 44.44.44.44
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

    44.44.44.44/32  IBGP    255  0          RD   3.3.3.3         GigabitEthernet
0/0/1

查看R1得BGP路由表

[R1]display bgp routing-table 

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>i  44.44.44.44/32     3.3.3.3         0          100        0      200i
  * i                     2.2.2.2         0          100        0      200i

[R1]

10.Router-ID值

默認情況下 如果前面所有的選路原則都不變的話 那麼會選擇一個router ID較小的作爲自己的選路方式
BGP的13條選路原則

<R1>display bgp routing-table 

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>i  44.44.44.44/32     2.2.2.2         0          100        0      200i
  * i                     3.3.3.3         0          100        0      200i
<R1>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章