天天看點

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

作者:HadesLing

一、屬性分類

公認屬性

(所有BGP路由都必須 識别的屬性)

  • 公認必遵(Well-known Mandatory)所有路由中都必須攜帶的屬性。
  • 公認任意(Well-known Discretionary)自由選擇是否包含的屬性。

可選屬性

(可不被BGP路由器所識别)

  • 可選過渡(Optional Transitive)不識别該屬性也會繼續轉發攜帶該屬性的路由。
  • 可選非過渡(Optional Non-transitive)不識别該屬性,不會繼續轉發攜帶該屬性的路由。

二、屬性條目

公認必遵:Origin、AS_Path、Next_Hop

公認任意:Local_Preference、Atomic_aggregate

可選過渡:Aggregator、Community

可選非過渡:Med、Cluster-List、Originator-ID

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

三、屬性詳解

公認必遵

Origin

名稱:起源Origin

作用:辨別了BGP路由的起源,該BGP路由通過什麼方式産生的。

介紹:

1、Origin的表示分為三種:i、e、?

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

2、當去往同一個目的地存在多條不同Origin屬性的路由時,在其他條件都相同的情況下,BGP将按如Origin的下順序優選路由:IGP > EGP > Incomplete,即 i > e > ?。

3、如何檢視該路徑屬性?display bgp routing-table

下圖紅框部分,Path與Origin相近:

1、預設從IBGP産生的路由其Path為空,而從EBGP傳入的路由其Path會攜帶AS号。

2、Origin為i表示從IBGP或EBGP所學習到的路由條目。

此處不要将EGP與EBGP混淆,EGP是早期實作AS自治系統之間交換路由資訊的協定,BGP的前身。
BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

AS_Path

名稱:AS_Path路徑

作用:辨別前往目标網絡時所需經過的AS号清單。

介紹:

1、以AS_Path 300 200 100為例,該路由從AS100産生,經過了AS200、AS300最後到達本地路由器。

2、AS_Path記錄了經過的AS号,故當AS100的路由再次傳遞回AS100的時候将會被丢棄,因為AS_Path中包含了自己的AS号。這是BGP常用的防環屬性。

3、AS_Path辨別經過的AS,當學習兩條相同目的的BGP路由時,如果其它屬性相同,但AS_Path不同,則AS_Path中AS号的數量越少越優先。AS_Path越短的路由,其優先級越高。

4、AS_Path的類型有常用的AS_SEQENCE,以及AS_SET。

 AS_SEQENCE表示方法:AS_PATH=300 200 100

 AS_SET表示方法:AS_PATH=300 {100,200}

AS_SET在什麼情況下出現呢?

  • 在BGP路由被聚合的情況下出現。
  • 路由聚合解決了兩類問題,一是減輕了裝置的負擔,二是隐藏了明細的路由資訊,減少了路由震蕩的影響。但是路由聚合後,AS_Path屬性丢失,存在産生環路的風險,為此可以通過AS_SET類型的AS_Path屬性攜帶聚合前的AS路徑資訊。
  • 當發生路由聚合後,如果需要聚合路由攜帶所有明細路由中AS_Path屬性攜帶的AS号防止環路,則在配置聚合的指令中增加as-set參數。
  • AS_PATH後面的{}表示經過的AS号,該集合内的AS号沒有先後順序,主要用以防止環路。
  • 如下圖,R3将R1、R2的路由進行路由聚合,聚合之後歸為AS300的路由傳遞給R4。
BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

Next_Hop

名稱:Next_Hop下一跳

作用:用于指定到達目标網絡的下一跳位址.

介紹:

在不同的場景中,裝置對BGP路由的預設Next_Hop屬性值的設定規則如下:

 1、BGP路由器在向IBGP或EBGP對等體釋出某條路由時,會把該路由的Next_Hop設定為本地與對端建立BGP鄰居關系的接口位址。

 2、路由器在收到EBGP路由後,轉發給其它IBGP對等體時,會保持路由的Next_Hop屬性值不變。

 3、如果路由器收到某條BGP路由,該路由的Next_Hop屬性值與EBGP對等體(更新對象)同屬一個網段,那麼該條路由的Next_Hop位址将保持不變并傳遞給它的BGP對等體。【與FA位址功能相似】

如下圖:

(1)R3收到R2傳去往10.0.2.0/24的EBGP路由下一跳為10.0.123.2。

(2)R3将學習到去往10.0.2.0/24下一跳為10.0.123.2的EBGP路由傳遞給R1時,下一跳不會修改成與R1建立EBGP鄰居的位址,因為其滿足Next_Hop屬性的中的“Next_Hop屬性值與EBGP對等體(更新對象)同屬一個網段,那麼該條路由的Next_Hop位址将保持不變并傳遞給它的BGP對等體”

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

公認任意

Local_Preference

名稱:Local_Preference本地優先級

作用:用于告訴AS中的路由器,哪條路徑是離開本AS的首選路徑。

介紹:

1、Local_Preference屬性值越大則路由越優,預設的Local_Preference值為100,可通過政策路由進行修改該值。

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

2、該屬性隻能傳遞給IBGP對等體,而不能傳遞給EBGP對等體。如果在EBGP對等體間收到攜帶了Local_Preference的路由,則會進行錯誤處理。

 問題:如果不能将LP值傳遞給EBGP,那麼EBGP又是否具備LP值呢?

 路由器在向其EBGP對等體發送路由更新時,不能攜帶Local_Preference屬性,但是對方接收路由之後,會在本地為這條路由賦一個預設Local_Preference值(100),然後再将路由傳遞給自己的IBGP對等體。

Atomic_aggregate

名稱:Atomic_aggregate聚合标記

作用:它隻相當于一種預警标記,而并不承載任何資訊,主要告訴路由器該路由經過了聚合。

介紹:

1、當路由器收到一條BGP路由更新且發現該條路由攜帶Atomic_Aggregate屬性時,它便知道該條路由可能出現了路徑屬性的丢失,此時該路由器把這條路由再通告給其他對等體時,需保留路由的Atomic_Aggregate屬性。

可選過渡

Aggregator

名稱:Aggregator聚合辨別

作用:标記路由聚合行為發生在哪個AS及哪台BGP路由器上。

介紹:

1、執行路由聚合操作的路由器為該聚合路由添加Aggregator屬性,并在該屬性中記錄本地AS号及自己的Router-ID,是以其它路由器可通過Aggregator知道聚合是發生在哪個AS及哪台BGP路由器上。

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

Community

名稱:Community 團體值

作用:一種路由标記,主要對引入的路由進行标記友善BGP進行路由控制。

介紹:

1、Community屬性值長度為32bit,也就是4Byte。可使用兩種形式呈現:

 十進制整數格式。

 AA:NN格式,其中AA表示AS号,NN是自定義的編号。

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

2、除此之外還有預設的Community值:

團體屬性名稱 團體屬性号 說明
Internet 0(0x00000000) 裝置在收到具有此屬性的路由後,可以向任何BGP對等體發送該路由。預設情況下,所有的路由都屬于Internet團體
No_Advertise 4294967042(0xFFFFFF02) 裝置收到具有此屬性的路由後,将不向任何BGP對等體發送該路由
No_Export 4294967041(0xFFFFFF01) 裝置收到具有此屬性的路由後,将不向AS外發送該路由
No_Export_Subconfed 4294967043(0xFFFFFF03) 裝置收到具有此屬性的路由後,将不向AS外發送該路由,也不向AS内其他子AS釋出此路由

可選非過渡

Med

名稱:Med 開銷

作用:一種路徑成本,用于向外部對等體指出進入本AS的首選路徑。

介紹:

1、當進入本AS的入口有多個時,AS可以使用MED動态地影響其他AS選擇進入的路徑。

 MED屬性值與開銷一緻,故MED越小則BGP路由越優,預設為0。

2、MED主要用于在AS之間影響BGP的選路。MED被傳遞給EBGP對等體後,對等體在其AS内傳遞路由時,攜帶該MED值,但将路由再次傳遞給其EBGP對等體時,預設不會攜帶MED屬性。

[下圖,R4優先使用R2傳來開銷最小的路由,并在IBGP内泛洪(開銷不變)。]

[但如果傳遞給另外一個EBGP鄰居的時候,将去掉該路由的MED值。]

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

3、預設情況下不會将攜帶MED值的路由傳遞給EBGP鄰居,那麼在什麼情況下可以攜帶呢?

 IBGP内進行路由引入時,會将引入的路由開銷繼承,并且在傳遞給EBGP時不會删除。

 如果路由器通過IGP學習到一條路由,并通過network或import-route的方式将路由引入BGP,産生的BGP路由的MED值繼承路由在IGP中的metric。

[例如下圖中如果R2通過OSPF學習到了10.0.1.0/24路由,并且該路由在R2的全局路由表中OSPF Cost=100,那麼當R2将路由network進BGP後,産生的BGP路由的MED值為100。]

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

 如果路由器将本地直連、靜态路由,那麼這條BGP路由的MED為0,因為直連、靜态路由預設cost為0。

4、能夠了解開銷繼承,但學習到繼承開銷的路由是否還會繼續繼承開銷傳遞給下一個EBGP鄰居嗎?

 回答:不能,因為MED不能跨AS傳遞。

 反問:那為什麼R2給R3又可以繼承?

 絕殺:所謂的繼承在IBGP内部可以這麼了解,但在R2上可以了解為将BGP發出時手動設定了MED開銷,并不是真正意義的繼承。

[是以再看下圖就可以了解,由于MED不能跨AS的原則,R2傳遞BGP路由給R3時自動修改MED值,而R3再傳遞給R4時,由于沒有了所謂的繼承,故不會自動修改MED,隻會傳遞不攜帶MED的路由給R4]

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

Originator-ID

名稱:Originator 起源者ID

作用:記錄反射前路由的起源通告者。RR在反射的路由中增加Originator_ID,其值為通告該路由的BGP路由器Router ID。

介紹:

1、與Origin起源相似,Originator ID主要用于記錄反射前路由的通告者,以便反射後的路由重新回到起源路由器上造成路由的環路。

2、若AS記憶體在多個RR,則Originator_ID屬性由第一個RR建立,并且不被後續的RR所更改。

3、當BGP路由器收到一條攜帶Originator_ID屬性的IBGP路由,并且Originator_ID屬性值與自身的Router ID相同,則它會忽略關于該條路由的更新。

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

3、如何檢視Originator ID呢?

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

Cluster-List

名稱:Cluster-List 反射簇清單

作用:用于RR反射簇環境下實作路由防環。

介紹:

1、每一個簇都有唯一的簇ID(Cluster_ID,預設時為RR的BGP Router ID )

2、當一條路由被反射器反射後,該RR(該簇)的Cluster_ID就會被添加至路由的Cluster_list屬性中。

3、一個AS内允許存在多個路由反射簇(如下圖)

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

4、 當RR收到一條攜帶Cluster_list屬性的BGP路由,且該屬性值中包含該簇的Cluster_ID時,RR認為該條路由存在環路,是以将忽略關于該條路由的更新/反射。

[如圖,R1将R2路由反射給R3(首次Cluster-list為自己RID),R3繼續反射給R4(Cluster-list增加R4的RID),最後R4反射回R1(Cluster-list增加R4的RID),R1收到反射後的路由發現Cluster-list中存在自己的RID,則不處理該路由]

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

本地屬性

Preferred-Value

名稱:Preferred-Value 協定首選值

作用:華為裝置的特有屬性,用于本地手動選舉最優路由。

介紹:

1、BGP十大路徑屬性,加上華為專屬的協定首選值共十一條路徑屬性。

2、該屬性隻在路由器本地有效,是以通過在本地建立政策并應用在對應的鄰居入方向上進行修改首選值。

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

3、用于當BGP路由表中存在到相同目的地的路由時,将優先選擇Preferred-Value值高的路由,預設值為0/空。

[如下圖,Prefval值高的将成為優選路由]

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

四、修改路徑屬性

由于篇幅原因,僅給出相關配置指令,可基于邏輯自行修改指令加以應用。

Origin

屬于公認必遵,是以通過政策路由修改之後可在IBGP與EBGP之間傳遞。

需求:将EBGP鄰居10.1.13.3傳遞來的192.168.30.0/24的路由,修改其Origin為EGP類型。

配置邏輯:

1、先建立ACL或字首清單比對192.168.30.0/24路由

2、建立政策路由,if-match比對路由,然後通過apply origin egp AS号 修改其類型

因為修改成EGP故需要指定原先的AS_Path資訊

3、配置政策對指定路由修改之後,還需要建立一個放行其它路由的政策,不然其它路由将無法傳遞。

4、最後将政策應用到對應的鄰居上

ip ip-prefix 30 permit 192.168.30.0 24

route-policy P30 permit node 5 
 if-match ip-prefix 30 
 apply origin egp 200

route-policy P30 permit node 10

[AR1-bgp]peer 10.1.13.3 route-policy P30 import

再次檢視BGP路由表:
[AR1-bgp]dis bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.30.0       10.1.13.3       0                     0      200e           

AS_Path

屬于公認必遵,是以通過政策路由修改之後可在IBGP與EBGP之間傳遞。

需求:将EBGP鄰居10.1.13.3傳遞來的192.168.30.0/24的路由,其AS_Path增加AS 65005進而降低該路由的優先級。

配置邏輯:

1、比對路由

2、建立政策,針對指定路由修改其AS_Path

3、建立政策,放行其它路由

4、指定鄰居上應用政策

ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy AS permit node 5 
 if-match ip-prefix 30 
 apply as-path 65505 additive
#
route-policy AS permit node 10

[AR1-bgp]peer 10.1.13.3 route-policy AS import

再次檢視BGP路由表:
[AR1-bgp]dis bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
*>   192.168.30.0       10.1.13.3       0                     0      65505 200i           

關于AS_Path的操作動作:

1、Additive ,AS_Path中增加指定的AS号【增加】。

2、Overwrite ,重寫AS_Path為指定的AS号【修改/删除】。

3、none overwrite,清空AS_Path值。

BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

Next_Hop

屬于公認必遵,是以通過政策路由修改之後可在IBGP與EBGP之間傳遞。

需求:将EBGP鄰居10.1.13.3傳遞來的192.168.30.0/24的路由,修改其下一跳為3.3.3.3。

ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy NextHOP permit node 5 
 if-match ip-prefix 30 
 apply ip-address next-hop 3.3.3.3 
#
route-policy NextHOP permit node 10

[AR1-bgp]peer 10.1.13.3 route-policy NextHOP import

再次檢視BGP路由表:
[AR1-bgp]dis bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
      192.168.30.0       3.3.3.3         0                     0      200i           

Local_Preference

屬于公認任意,是以通過政策路由修改之可在IBGP與EBGP之間傳遞,但由于本地優先級的特殊性即使傳遞給了EBGP鄰居,也不會進行處理。

需求:将EBGP鄰居10.1.13.3傳遞來的192.168.30.0/24的路由,修改其本地優先值為300。

ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy LPRI permit node 5 
 if-match ip-prefix 30 
 apply local-preference 300 
#
route-policy LPRI permit node 10 

[AR1-bgp]peer 10.1.13.3 route-policy LPRI import

再次檢視BGP路由表:
[AR1-bgp]dis bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.30.0       10.1.13.3       0          300        0      200i           

預設所有的本地優先級都為100,如果需要修改預設值:[AR1-bgp]default local-preference 新優先值

Atomic_aggregate

屬于公認任意,是以通過政策路由修改之後可在IBGP與EBGP之間傳遞。

Aggregator

屬于可選過渡,通過政策修改之後可在IBGP與EBGP之間傳遞,哪怕裝置無法識别也需要繼續保留該屬性。

該兩個屬性無法通過政策路由修改,此處僅給出配置指令:

需求:在AR1上配置聚合192.168.0.0/16,要求抑制相應明細路由的對外釋出,并對該聚合路由添加Aggregator屬性。

[AR1-bgp]aggregate 192.168.0.0 16 as-set detail-suppressed            
BGP 十大路徑屬性介紹,及其屬性的修改方法介紹

Community

屬于可選過渡,通過政策修改之後可在IBGP與EBGP之間傳遞,哪怕裝置無法識别也需要繼續保留該屬性。

需求:将EBGP鄰居10.1.13.3傳遞來的192.168.30.0/24的路由,将該路由的團體值設定為200:3。

ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy COM permit node 5 
 if-match ip-prefix 30 
 apply community 100:3 
#
route-policy COM permit node 10 
#
[AR1-bgp]peer 10.1.13.3 route-policy COM import

再次檢視BGP路由詳細資訊:
[AR1-bgp]display bgp routing-table 192.168.30.0

 BGP local router ID : 10.1.13.1
 Local AS number : 100
 Paths:   1 available, 1 best, 1 select
 BGP routing table entry information of 192.168.30.0/24:
 From: 10.1.13.3 (10.1.13.3)
 Route Duration: 00h00m35s  
 Direct Out-interface: GigabitEthernet0/0/1
 Original nexthop: 10.1.13.3
 Qos information : 0x0
 Community:<100:3>	【團體值在這】
 AS-path 200, origin igp, MED 0, pref-val 0, valid, external, best, select, acti
ve, pre 255
 Not advertised to any peer yet           

擴充:後繼介紹BGP選路時将會使用該屬性進行區分不同路由,進而控制路由的選路。

Med

屬于可選非過渡,可在IBGP與EBGP之間傳遞,但傳遞給EBGP鄰居時該屬性将預設被剔除。

需求:将EBGP鄰居10.1.13.3傳遞來的192.168.30.0/24的路由,将該路由的MED值修改為10。

ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy MED permit node 5 
 if-match ip-prefix 30 
 apply cost 10 
#
route-policy MED permit node 10 
#
[AR1-bgp]peer 10.1.13.3 route-policy MED import

再次檢視BGP路由表:
[AR1-bgp]dis bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.30.0       10.1.13.3       10                    0      200i
123456789101112131415           

預設BGP學習到的MED都為0,如果需要修改預設值:[AR1-bgp]default local-preference 新優先值

Cluster-List

屬于可選非過渡,應用于存在RR反射器簇場景用于防止路由多次反射。

Originator-ID

屬于可選非過渡,應用于存在RR反射器場景用于防止路由多次反射之後回到路由起源裝置上造成路由環路隐患問題。

以上兩種屬性無法通過政策路由修改,屬于預設啟用的功能,會自動進行記錄相應的資訊。

後繼介紹BGP反射器時再進行詳細的介紹。