BGP路徑屬性:Next Hop和Local-Preference

BGP路徑屬性:Next Hop和Local-Preference

下一跳(Next Hop)屬性

BGP路徑屬性:Next Hop和Local-Preference


(圖中的例子是,RTA與RTC通過直連以太網接口建立EBGP鄰居關係,RTA與RTB通過直連接口建立IBGP鄰居關係,而RTC與RTD通過直連以太網接口10.0.0.2和10.0.0.3建立IBGP鄰居關係)

1、BGP在向EBGP鄰居通告路由時,或者將本地發佈的BGP路由通告給IBGP鄰居時,下一跳屬性是本地BGP與對端連接的端口地址。如圖所示,RTC在向RTA通告路由18.0.0.0/8時,下一跳屬性為10.0.0.2;RTB在向RTA通告路由19.0.0.0/8時,下一跳屬性為21.0.0.1。

2、對於多路訪問的網絡(廣播網或NBMA網絡),下一跳情況有所不同:如圖所示,RTC在向RTA通告路由20.0.0.0/8時,發現本地端口10.0.0.2同此路由的下一跳10.0.0.3(指在RTC路由表中此路由的下一跳)為同一子網,將使用10.0.0.3作為向EBGP通告路由的下一跳,而不是10.0.0.2。

3、BGP在向IBGP通告從其它EBGP得到的路由時,不改變路由的下一跳屬性,而直接傳遞給IBGP鄰居。如圖所示,RTA通過IBGP向RTB通告路由18.0.0.0時,下一跳屬性為10.0.0.2。這樣做,有時會產生問題:如果RTB不知如何去往10.0.0.2,那麼此BGP路由將失效。

解決方法:方法一:可以在RTA的BGP視圖下引入直連路由;方法二:在RTA上,使用命令peer { group-name| ipv4-address } next-hop-local。此命令用來設置BGP向對等體組/對等體通告路由時,把下一跳屬性設為自身的IP地址。

相關特性:

peer next-hop-invariable命令有以下作用:

配置不同AS域的RR間向EBGP對等體發佈路由時不改變下一跳。

配置向IBGP對等體發佈標籤路由時也不改變下一跳。

配置向IBGP對等體發佈引入的IGP路由時使用IGP路由的下一跳地址。

undo peer next-hop-invariable命令用來恢復缺省配置。

缺省情況下:

BGP發言者在向EBGP對等體發佈路由時將下一跳改為自己的接口地址。

BGP發言者向IBGP對等體發佈標籤路由時將下一跳改為自己的接口地址。

BGP發言者向IBGP對等體發佈引入的IGP路由時將下一跳改為自己的接口地址。

本地優先級屬性(Local-Preference)

Local-Preference是公認任意屬性。表明路由器的BGP優先級,用於判斷流量離開AS時的最佳路由。EBGP默認為100,IBGP根據update消息中攜帶的值為依據,network/import進來的路由默認為100.

在某些情況下,一個ISP可能通過兩條高速鏈路連接兩個大的ISP作為自己到INTERNET的出口,如圖所示,ISP0通過兩條鏈路分別連接到ISP1和ISP2。

BGP路徑屬性:Next Hop和Local-Preference


RT3,RT4和RT5之間分別兩兩建立TCP連接來構成IBGP對等體關係,而RT3和RT4分別和位於ISP2和ISP1的路由器建立EBGP對等體關係。這樣路由器RT3和RT4都會從自己的EBGP對等體收到82和83這兩條路由,而且RT3和RT4也會通過IBGP對等體關係通告82、83這兩條路由給自己的IBGP對等體。由此可以看出,RT5分別有兩個來源獲得82和83路由,這樣我們只需要在RT3和RT4上適當的對路由屬性進行修改,就可以達到目的。在這裡,BGP可以給路由附加一種稱為本地優先級的屬性,路由器接收到去往同一目的地的多條路由,可以判斷本地優先級屬性值的高低進行路由選擇(本地優先級的數值越高越好)。解決方法:本例中,在RT3上,當從ISP2獲得路由82和83的時候,給83賦予本地優先級屬性100(默認,不需配置),而給82賦予本地優先級屬性200;同樣的道理,在RT4上,當從ISP1獲得路由82和83的時候,給82賦予100而給83賦予200。這樣對等體RT5就會從兩個地方接收到了帶有不同本地優先級屬性值的同一目的地址的兩條路由,根據本地優先級數值的高低進行路由選舉。最終,實現到達83的流量分佈在ISP1上,而到達82的流量分佈在ISP2上。


分享到:


相關文章: