BGP路徑屬性:Origin和AS

BGP路徑屬性:Origin和AS_PATH

Origin屬性

某條路由是直接而具體的注入到BGP路由表中的,則origin屬性為IGP,如通過network命令注入BGP的路由;通過EGP(RFC904)學到的路由,則origin屬性為EGP;其他情形下如:import-route引入的路由,Origin屬性都為 Incomplete,如通過import命令注入BGP的路由。注意:Origin屬性值默認情況下不被任何路由器修改。

(1)IGP:在BGP路由表中(用display bgp routing-table查看)將會看到“i”的標識。通過network命令宣告的路由,起點屬性為IGP, network命令所宣告的網絡來自於IGP協議(包括靜態路由),這些路由是有選擇性的通過network命令轉換為BGP路由,所以稱為“半動態”。

(2)EGP:在BGP路由表中將會看到“E”的標識,通過EGP轉化(import)的BGP路由將具備此屬性,這個屬性我們在現實網絡中將很難遇到。

(3)Incomplete:在BGP路由表中將會有一個“?”標識,具備這種屬性的路由是通過一些別的方式學到的,屬於未知的不明確的狀態。一般來說,是通過將IGP或者靜態路由引入(import)以後產生的。

擴展內容:因為無條件的把IGP信息引入到BGP可能會造成副作用——不要的或者錯誤的信息會洩露(leak)進BGP中,比如IGP中可能會包含很多僅僅用於AS內部的專用地址或者未經註冊的地址。除此以外,這樣做還有可能造成BGP的動盪(因為BGP的路由依賴於IGP路由),對此問題BGP提供了一個解決方案,路由衰減(ROUTE DAMPENING)。

起點屬性三個值的優先順序為IGP>EGP>INCOMPLETE,這三個值對於BGP的選路起著控制作用。

AS_PATH屬性

AS_PATH指BGP路由在傳輸的路徑中所經歷的AS的列表,是BGP中一個非常重要的公認必遵屬性。 BGP不會接受AS_PATH屬性中包含本AS Number的路由,從而避免了產生環路的可能。為此,BGP在向EBGP對等體通告一條路由時,AS_PATH屬性列表以相反的順序列出了一條前綴先後經過的AS,每經過的一個AS,該AS號會被放入AS_PATH列表的最前面(開始處)。如果在路由更新消息中發現自己所在的AS號已經被包含在AS_PATH屬性中,則表明該路由之前曾經通過該AS或者是源自於該AS,為避免路由環路,將此路由信息丟棄。

另外,AS_PATH屬性在路徑選擇上也是一個很重要的衡量參數。當路由器中存在兩條或者兩條以上的到同一目的地的路由時,這些路由可以通過此屬性比較相互之間的優劣,AS_PATH越短的路徑越優先。注意:在大多數的實際網絡中,多條路徑的優劣往往是由AS_PATH來決定。

聚合路由中怎麼辦?

在進行BGP的路由聚合時,缺省情況下形成聚合路由的具體路由其獨特性將會丟失。這樣一來如果某一個AS將來自於不同的其他AS的具體路由聚合。聚合路由的AS_PATH中將不會包含具體路由的AS號,這樣此聚合路由就有可能會傳回到其具體路由所在的AS中,從而形成路由環路。對此使用as-set 參數後聚合路由的 AS 信息中包含被聚合的每條具體路由的AS 信息,並隨著被聚合路由的更新而變化。

Hub&Spoke組網方式下,我們需要接受AS號重複的BGP路由,怎麼辦?

BGP路徑屬性:Origin和AS_PATH


如圖所示,RTA-RTC、RTB-RTC建立EBGP鄰居關係,當RTB將路由信息通告給RTC時帶上本AS號(213)。然後RTA再從RTC接收路由時,路由的AS_PATH屬性中就會帶有本AS號(213),所以RTA不會接受這條路由信息。此時,可以用下面的命令來強制接受此類路由:

peer { group-name |ipv4-address } allow-as-loop [ number ]

參數:group-name:對等體組的名稱;ipv4-address:對等體的IPv4地址;number:本地AS號的的重複次數,範圍為1~10。缺省值為1。

選路時不想比較AS_PATH屬性如何做?

bestrouteas-path-ignore用來配置BGP在選擇最優路由時忽略AS路徑屬性。undo bestroute as-path-ignore用來配置BGP將AS路徑屬性作為選擇最優路由的一個條件。

網絡遷移更換AS號

peer fake-as命令用來為本端對等體指定一個偽AS號。缺省情況下,對等體使用本端實際的AS號。常規情況下,一個路由器只支持一個BGP進程,即只支持一個AS號。但是在某些特殊情況下,例如網絡遷移更換AS號的時候來為了保證網絡切換的順利進行,可以通過配置peer fake-as命令,為指定對等體設置一個偽AS號。如果本端使用真實AS號與對端建立EBGP鄰居,那麼發送給鄰居的路由的AS-Path列表就攜帶真實AS號。如果本端使用偽AS號與對端建立EBGP鄰居,那麼發送給鄰居的路由的AS-Path列表就只攜帶偽AS號。

配置發送BGP更新報文時僅攜帶公有AS號

peer public-as-only命令用來配置發送BGP更新報文時不攜帶私有自治系統號,僅攜帶公有AS號缺省情況下,發送BGP更新報文時,可以攜帶私有自治系統號。

以下兩種情況,配置該命令後,BGP不會刪除私有AS號:

路由的AS_Path屬性中含有對端的AS號時。這種情況下刪除私有AS號,可能會造成路由環路。

As_Path列表中同時含有公有AS號和私有AS號。該列表表明路由已經經過了公網,如果刪除私有AS號,可能會造成轉發錯誤。


分享到:


相關文章: