1. 程式人生 > 實用技巧 >BGP常用屬性介紹

BGP常用屬性介紹

Origin屬性

 Origin屬性定義路徑資訊的來源,標記一條路由是怎麼成為BGP路由的
① AS 200內執行OSPF協議,200.0.0.0/24網段宣告到OSPF中。RTB通過network方式將200.0.0.0/24的路由變為BGP路由通告給RTA,RTC通過import方式將200.0.0.0/24的路由變為BGP路由通告給RTA
② BGP在AS之間傳遞資訊,承載大量的路由。如果到達同一目的IP有多條路徑,且BGP學到這些路由通過不同的方式,則Origin屬性是決定最優路徑的一個因素,用於標明路由的起源

 Origin的3種屬性:
① i表明BGP路由通過network命令注入
② e表明BGP路由是從EGP學來的,EGP協議在現網中很難見到,但可以通過路由策略將路由的Origin屬性修改為e(瞭解即可)

③ ?即Incomplete(未知)表明BGP路由通過其它方式學到路由資訊,如使用import命令引入的路由。
④ 3種Origin屬性的優先順序為:i>e>Incomplete(?)

AS_Path屬性

 AS 1內的RTA能夠從RTB與RTC收到100.0.0.0/24的路由,RTA如何進行自動優選?
 RTA->RTB->RTC之間在拓撲上存在環路,RTB->RTC->RTD->RTE之間在拓撲上也存在環路,因此BGP在路由傳遞的過程中也可能存在路由環路,BGP如何防止環路呢?

 BGP針對以上2個問題,設計了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的路由
② 以RTE為例,通過BGP釋出100.0.0.0/24的路由,路由可能通過RTE->RTB->RTC->RTD->RTE形成環路。為了防止環路的產生,RTE在收到RTD發來的路由時會檢查AS_Path(該路由攜帶的)屬性,如果發現該路由的AS_Path中包含自己的AS號,則丟棄該路由
 當前,AS_PATH屬性被定義為公認必遵屬性,該屬性由AS號所組成。AS_PATH屬性欄位由三元組所組成
Path Segment Type, Path Segment Length, Path Segment Value
 在BGPv4裡,path segment type欄位是由1位元組長的數值所組成,主要是標識AS_PATH的不同型別

   Value     Segment Type
      1       AS_SET: 由一系列AS號無序地組成,包含在UPDATE訊息裡
      2       AS_SEQUENCE: 由一系列AS號順序地組成,包含在UPDATE訊息裡
      3       AS_CONFED_SEQUENCE: 在本地聯盟內由一系列成員AS號按順序地組成,包含在UPDATE訊息中,只能在本地聯盟內傳遞
      4       AS_CONFED_SET: 在本地聯盟內由一系列成員AS無序地組成,包含在UPDATE訊息中,同樣只能在本地聯盟內傳遞

Next_hop屬性

① RTA將100.0.0.0/24的網段釋出給RTB時,Next_hop的IP地址是多少?
② RTB將100.0.0.0/24的網段釋出給RTC時,Next_hop的IP地址是多少?
③ RTA從RTB學到RTC釋出的200.0.0.0/24的網段時,Next_hop的IP地址是多少?

 BGP路由器將本端始發路由釋出給IBGP鄰居時,會把該路由資訊的Next_hop設為本端建立鄰居關係所使用的介面IP
① RTA將100.0.0.0/24的網段釋出給RTB時,如果RTA與RTB使用直連線口建立IBGP鄰居,則Next_hop為RTA上與RTB直連的介面IP;如果RTA與RTB使用Loopback介面建立IBGP鄰居,則Next_hop為RTA的Loopback介面IP
 BGP路由器在向EBGP鄰居釋出路由時,會把路由資訊的Next_hop設定為本端與對端建立BGP鄰居關係的介面IP
② RTB將100.0.0.0/24的網段釋出給RTC時,Next_hop為RTB上與RTC直連的介面IP
 BGP路由器在向IBGP鄰居通告從EBGP學來的路由時,不改變該路由下一跳屬性
③ RTC從RTB學到RTA釋出的100.0.0.0/24的網段時,Next_hop為RTB的介面IP,因為RTB與RTD在同一網段,RTC通告給RTD的Next_hop為RTB的介面IP
 對於上述三種情況的解釋
① EBGP鄰居之間一般採用直連線口建立鄰居關係,EBGP鄰居在相互通告路由時會修改Next_hop為自己的出介面IP
② IBGP鄰居通常採用Loopback介面建立鄰居,當路由是本路由器起源的,在傳送給鄰居之後Next_hop改為自己的更新源地址,這樣即使網路中出現鏈路故障,只要Next_hop可達,同樣可以訪問目的網段,提高網路穩定性
③ 相對於IGP,如RIP在釋出路由時,每經過一個路由器都會修改下一跳,釋出路由的路由器都宣稱自己能夠到達目標地址,並採用逐跳傳遞的方式將資料包傳送給目標網路,但網路中的路由器並不知道誰是真正的始發路由器,因此會造成環路。BGP在EBGP之間傳遞時才修改Next_hop,IBGP傳送從EBGP學來的路由給IBGP鄰居時並不修改下一跳,在一定程度上起到了防環作用

Local_Preference屬性

Local_Pref屬性僅在IBGP鄰居之間有效,不通告給其他AS。它表明路由器的BGP優先順序,用於判斷流量離開AS時的最佳路由 值越大越優 其預設值為100
AS 200內有一個200.0.0.0/24的使用者網段,通過BGP釋出給AS 100。AS 100內的管理員如何設定才可以實現通過高頻寬鏈路訪問200.0.0.0/24的網路?

 解決辦法:
① 在RTC上設定ip-prefix匹配200.0.0.0/24的路由,使用route-policy呼叫該ip-prefix,並設定Local_Preference為200,將策略應用在對RTA釋出路由的export方向
② Local_Pref屬性用於判斷流量離開AS時的最佳路由。當BGP路由器通過不同的IBGP鄰居獲得目的地址相同但下一跳不同的多條路由時,將優先選擇Local_Pref屬性值較高的路由

MED屬性

MED(Multi-Exit-Discriminator)屬性僅在相鄰兩個AS之間傳遞,收到此屬性的AS不會再將其通告給任何其他第三方AS,用於判斷流量進入AS時的最佳路由
AS 300內的管理員希望在AS 300內操作影響AS 200通過高頻寬鏈路訪問100.0.0.0/24,如何實現?
解決方法:在RTE上設定ip-prefix匹配100.0.0.0/24的路由,再設定route-policy呼叫該ip-prefix,並設定MED為100,將策略應用在對RTE釋出路由的export方向

MED(Multi-Exit-Discriminator 多出口標識)屬性僅在相鄰兩個AS之間傳遞,收到此屬性的AS不會再將其通告給任何其他第三方AS。如圖所示,AS100內並不會收到AS 300內設定的MED值,但是AS 200內會收到AS 300內設定的MED值,因此AS 200內可以選擇高頻寬的路由
MED屬性相當於IGP使用的度量值(Metric),它用於判斷流量進入AS時的最佳路由 當一個執行BGP的路由器通過不同的EBGP鄰居獲得目的地址相同但下一跳不同的多條路由時,在其它條件相同的情況下,將優先選擇MED值較小者作為最佳路由,其預設值為0

Community屬性

BGP的Community屬性的兩個作用:
① 限定路由的傳播範圍
② 打標記,便於對符合相同條件的路由進行統一處理
AS 10內有10.1.10.0/24的使用者網段,AS 11內有10.1.11.0/24的使用者網段。為了區分使用者網段,AS 10內的10.1.10.0/24設定了10:12的Community,AS 11的10.1.11.0/24設定了11:12的Community,通過BGP傳送給AS 12後,AS 12希望彙總後遮蔽掉明細路由再發送給AS 13,並且希望AS 13收到路由後不再傳遞給其他AS,如何實現

 解決方法
① 在RTC上設定Community-filter,匹配Community為10:12和10:13的路由,再設定route-policy匹配Community-filter,將兩條路由聚合成10.1.10.0/23的路由並呼叫route-policy
② 在RTC上設定route-policy,設定團體屬性為no-export,在RTC通告給RTD的export方向呼叫該route-policy
 Community屬性分為兩類:一類是公認團體屬性,另一類是擴充套件的團體屬性
 公認團體屬性分為4類
① Internet:預設屬性,所有路由都屬於Internet,此屬性的路由可以通告給所有BGP鄰居
② No_Export:收到此屬性的路由後,不將該路由釋出到其他AS。RTB上希望10.1.11.0/24的路由釋出給AS 12之後,不再發布給其他AS,則可將10.1.11.0/24的Community屬性設定為No_Export
③ No_Advertise:收到此屬性的路由後,不將該路由通告給任何其他的BGP鄰居。RTB上希望只將10.1.11.0/24的路由釋出給RTC,並且不再通告給任何其他的BGP鄰居,則可將10.1.11.0/24的Community屬性設定為No_Advertise
④ No_Export_Subconfed:在聯盟中使用
 擴充套件的團體屬性用一組4位元組為單位的列表來表示,路由器中擴充套件的團體屬性格式為aa:nn或團體號
① aa:nn中,aa通常為AS編號,nn是管理員定義的團體屬性標識
② 團體號範圍為0-4294967295,在RFC1997中,0-65535與4294901760-4294967295為預留值