MP-BGP
MP-BGP
MP-BGP:
傳統的BGP-4隻能管理IPV4的路由信息,對於使用其他網路層協議(如ipv6)的應用,在跨自治系統傳播時就受到一定限制。為了提供對多種網路層協議的支持,IETF對BGP-4進行了擴展,形成MP-BGP,MP-BGP標準是RFC4760(Multiprotocol Extensions for BGP-4,BGP-4的多協議擴展)。
BGP-4使用的報文中,與IPv4相關的三處信息都由Update報文攜帶,這三條信息分別是:NLRI(Network Layer Reachability Information)欄位、Next_Hop屬性、Aggregator屬性(該屬性中包含形成聚合路由的BGP Speaker的IP地址)。
為實現對多種網路層協議的支持,BGP-4需要將網路層協議的信息反映到NLRI及Next_Hop。MP-BGP中引入了兩個新的路徑屬性:
MP_REACH_NLRI:Multiprotocol Reachable NLRI,多協議可達NLRI。用於發布可達路由及下一跳信息。MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多協議不可達NLRI。用於撤銷不可達路由。這兩種屬性都是可選非過渡(Optional non-transitive)的,因此,不提供多協議能力的BGP Speaker將忽略這兩個屬性的信息,不把它們傳遞給其它鄰居。
MP_REACH_NLRI
多協議可達NLRI提供了以下功能:
向對等體發布可達路由。發布下一跳信息。例如,BGP4+中的Next_Hop屬性用IPv6地址來表示,可以是IPv6全球單播地址或者下一跳的鏈路本地地址。使能路由器報告本地系統中的部分或全部SNPA(Sub-network Points of Attachment)。該屬性的欄位格式如下圖
主要欄位的解釋如下:
Address Family Identifier:該欄位攜帶了網路層協議的地址族標識,對應RFC1700的“Address Family Number”所定義的地址族值。例如IPv4的值是1,IPv6的值是2。Subsequent Address Family Identifier:該欄位提供了NLRI類型的附加信息。
− 1:用於單播模式的NLRI
− 2:用於組播模式的NLRI
− 3:同時用於單播和組播模式的NLRI
Length of Next Hop Network Address:“Network Address of Next Hop”欄位的長度,以位元組為單位。Network Address of Next Hop:下一跳網路地址,該欄位長度可變。Number of SNPAs:下面的欄位中SNPA的數量。如果該欄位取值為0,表示屬性中不包含SNPA。
Length of Nth SNPA:第N個SNPA欄位的長度,以半位元組(semi-octets)為單位。Nth SNPA of Next Hop:路由器的SNPA,該路由器的網路地址包含在“Network Address of Next Hop”欄位中。這個欄位的長度是位元組的整數倍,即以半位元組為單位的“Length of Nth SNPA”欄位四捨五入得出的整數值。如果SNPA包含奇數個半位元組,該欄位尾部剩餘的半個位元組以0補位。
Network Layer Reachability Information:可達路由列表。如果“Subsequent Address Family Identifier”欄位置位,則每個NLRI由一個二元組(Length-Prefix)表示。− Length表示IP地址前綴的長度,單位為比特。
如果為0,則說明該前綴匹配所有的IP地址。
攜帶了MP_REACH_NLRI屬性的Update消息必須攜帶用於EBGP和IBGP信息交換的Origin屬性和AS_Path屬性。另外,如果這個Update消息在IBGP對等體之間傳播,還要攜帶Local_Pref屬性。如果這條消息是從EBGP對等體接收的,本地系統需要檢查AS_Path列表最左側的AS號是否與發送該信息的AS號一致。如果不一致,本地系統會發送Notification消息(攜帶Update消息錯誤碼)給對端。
如果Update消息中MP_REACH_NLRI屬性沒有攜帶NLRI,則該消息也不允許攜帶Next_Hop屬性。如果這條消息中包含了Next_Hop屬性,Next_Hop屬性將被忽略。多協議不可達NLRI用於撤銷一條或多條不可達路由。
Withdrawn Routes:不可達路由列表。
攜帶了MP_UNREACH_NLRI屬性的Update消息不再需要攜帶其他的屬性。