天天看點

基于FRR全面解析BGP協定(二):BGP協定的路徑屬性

BGP協定的路徑屬性

當一條BGP路由被BGP路由器通告給其對等體時,這條BGP路由會攜帶多個路徑屬性值(Path Attributes)并傳遞給對等體。 這些路徑屬性,将影響BGP的路由優選,使得BGP的路由政策能力異常強大。

基于FRR全面解析BGP協定(二):BGP協定的路徑屬性

BGP路徑屬性分為公認屬性和可選屬性。公認屬性是所有BGP協定實作必須都能正确識别的屬性;可選屬性是BGP協定實作可不支援的屬性。公認屬性又分為公認必遵和公認自決屬性。公認必遵是在update封包中必須攜帶的屬性;而公認自決并不要求必須包含在update封包中。可選屬性分為可選傳遞和可選非傳遞。可選傳遞必須在封包接收到包含該屬性的路由後,将屬性傳遞給其他對等體;可選非傳遞即使在收到該屬性的路由,可不支援也可不傳遞該屬性給其他對等體。

Origin

Origin屬于公認必遵屬性,表示BGP路由的起源。根據路由被引入BGP的方式不同,存在三種類型的Origin:igp、egp和incomplete。當去往同一個目的地存在多條不同Origin屬性的路由時,在其他條件都相同的情況下,BGP将按Origin:IGP > EGP > Incomplete的順序優選路由。

名稱 标記 描述
igp i 通過BGP network通告的路由
egp E 通過EGP這種早期的協定重釋出而來
incomplete ? 通過import指令,從其他協定引入到BGP的路由

AS_Path

AS_Path屬于公認必遵屬性,是前往目标網絡的路由經過的AS号清單,該屬性有兩個作用,一是確定路由在EBGP對等體之間傳遞不會出現環路;二是作為路由優選的衡量标準之一。路由在被通告給EBGP對等體時,路由器會在該路由的AS_Path中追加上本地的AS号;路由被通告給IBGP對等體時,AS-path不會發生改變。

基于FRR全面解析BGP協定(二):BGP協定的路徑屬性

AS_Path的重要作用之一便是影響BGP路由的優選,在上圖中,R5同時從R2及R4學習到去往10.1.1.0/24網段的BGP路由,在其他條件相同的情況下,R5會優選R2通告的路由,因為該條路由的AS_Path屬性值較短,也即AS号的個數更少。

AS_Path類型

基于FRR全面解析BGP協定(二):BGP協定的路徑屬性

AS_Path分為四種類型:AS_SET、AS_SEQUENCE、AS_CONFED_SEQUENCE和AS_CONFED_SET。

  • AS_SET指去往目标網絡需要經過路徑的無序AS号清單,一般用于訓示彙總路由
  • AS_SEQUENCE指去往目标網絡需要經過路徑的有序AS号清單
  • AS_CONFED_SEQUENCE指去往目标網絡需要經過路徑的有序AS本地聯邦号清單
  • AS_CONFED_SET指去往目标網絡需要經過路徑的無序AS本地聯邦号清單

Next_hop

下一跳(Next_hop)屬于公認必遵屬性,用于指定到達目标網絡的下一跳位址 。當路由器學習到BGP路由後,需對BGP路由的Next_hop屬性值進行檢查,該屬性值(IP位址)必須在本地路由可達,如果不可達,則這條BGP路由不可用。

預設情況下,路由器将BGP路由通告給自己的EBGP對等體時,将該路由的Next_hop設定為自己的更新源IP位址 ,但是如果路由的Next_Hop位址值與EBGP對等體(更新對象)同屬一個網段,那麼該條路由的Next_Hop位址将保持不變并傳遞給它的BGP對等體

基于FRR全面解析BGP協定(二):BGP協定的路徑屬性

B将路由100.100.100.0/24傳遞給A,Next_Hop為10.1.123.2;

A将路由100.100.100.0/24傳遞給C,此時Next_Hop保持不變;

另外,在将路由傳遞給自己的IBGP對等體時,也會保持路由的Next_hop屬性值不變 ,這就會出現一種情況,就是IBGP對等體與下一跳屬性的IP位址網絡不可達,為了避免出現這樣的情況,可以通過next-hop-self變更next-hop屬性。

基于FRR全面解析BGP協定(二):BGP協定的路徑屬性

Local-Preference

又叫本地優先級屬性,屬于公認自決屬性,用于告訴AS中的路由器,哪條路徑是離開AS的首選路徑。

基于FRR全面解析BGP協定(二):BGP協定的路徑屬性

在A及C上分别對B部署路由政策,使得A發送給B的10.0.1.0/24路由的Local_Preference為200,而C則保

持預設,那麼對于B而言,關于10.0.1.0/24,會優選A傳遞過來的BGP路由。

預設的Local_Preference值為100,Local_Preference屬性值越大則BGP路由優先級越高。這裡的Local指的是AS内部,是以該屬性隻能被傳遞給IBGP對等體,而不會傳遞給EBGP對等體。本地使用network指令引入、重釋出引入和EBGP更新的路由可将該屬性的預設值(100)發給IBGP對等體,FRR可通過bgp default local-preference來修改預設值,set local-preference可以為路由政策設定獨立的Local-Preference。

Community

Community屬于可選傳遞屬性,是一種路由标記,類似于一種标簽,能對路由進行分類,用于簡化路由政策的執行。有了Community屬性,我們可以為不同種類的路由打上不同的Community屬性值,這些屬性值會随着BGP路由更新給其他對等體,那麼在其他對等體上,隻需要根據Community屬性值來執行差異化的政策即可。

Community屬性值長度為32個比特,也就是4個位元組,可用十進制表示,也常用(AS号:編号),其中AS号是高位2位元組,編号是低位2位元組。

FRR給出了Well-Known的Community值,具體可參考Community

Community 描述
no-advertise 路由不會傳遞給其他對等體
no-export 路由不會傳遞給EBGP對等體(聯邦除外)
no-export-subconfed 路由不會傳遞給EBGP對等體(包括聯邦)

MED

MED(Multi Exit Discriminator )屬于可選非傳遞屬性,用于向外部對等體指出進入本AS的首選路徑,即當進入本AS的入口有多個時,AS可以使用MED動态地影響其他AS選擇進入的路徑。MED屬性值越小則BGP路由越優。MED主要用于在AS之間影響BGP的選路。 MED被傳遞給EBGP對等體後,對等體在其AS内傳遞路由時,攜帶該MED值,但将路由傳遞給其EBGP對等體時,預設不會攜帶MED屬性。

基于FRR全面解析BGP協定(二):BGP協定的路徑屬性

在A、 B上部署政策,使得A通告給C的BGP路由1.1.1.0/24的MED值為10,而B通告的1.1.1.0/24路由的MED值為20。當其他條件相同時,C将優選A傳遞過來的BGP路由。預設情況下,路由器隻比較來自同一相鄰AS的BGP路由的MED值,也就是說如果去往同一個目的地的兩條路由來自不同的相鄰AS,則不進行MED值的比較 。

#FRR使能不同AS的MED值比較
bgp always-compare-med
           

其他

  • ORIGINATOR_ID

    Originator_ID用于路由反射器,參考路由反射器Originator_ID

  • Cluster_list

    Cluster_list用于路由反射器,參考路由反射器Cluster_list

繼續閱讀