教培參考
教育培訓(xùn)行業(yè)知識型媒體
發(fā)布時間: 2025年05月19日 15:16
回顧一下IGP協(xié)議的操作,以O(shè)SPF為例,當(dāng)我們在兩臺直連路由器的直連接口激活OSPF后,這兩個接口就開始收發(fā)Hello報文,在通過Hello報文發(fā)現(xiàn)了直連鏈路上的鄰居后,一個鄰接關(guān)系的建立過程也就開始了。
IGP協(xié)議要求需要建立鄰居關(guān)系的兩臺路由器必須是直連的,然而BGP則大不相同。BGP的對等體關(guān)系并不要求設(shè)備必須直連,BGP采用TCP作為傳輸層協(xié)議,兩臺路由器只要具備IP連通性,并且能夠順利地基于TCP179端口建立連接,就可以建立BGP對等體關(guān)系,因此BGP的對等體關(guān)系是可以跨設(shè)備建立的。
我們將建立BGP鄰居關(guān)系的路由器稱為BGP對等體(Peer)。BGP有兩種對等體關(guān)系,一種是EBGP,另一種是IBGP。
1.EBGP對等體關(guān)系(External BGP Peer)
如果建立對等體關(guān)系的兩臺BGP路由器位于不同的AS,那么它們之間的關(guān)系被稱為EBGP對等體關(guān)系。
在圖1中,顯示了3個AS通過BGP對接的場景。圖中對于這3個AS內(nèi)部的網(wǎng)絡(luò)架構(gòu)只是做了一個非常簡單的描繪,實際上AS內(nèi)部的網(wǎng)絡(luò)可能是龐大而復(fù)雜的,只不過站在BGP的視角,它并不關(guān)心AS內(nèi)部的網(wǎng)絡(luò)結(jié)構(gòu)。
在AS 100、AS 200及AS 300中,各自運行著IGP協(xié)議,目的是為了實現(xiàn)AS內(nèi)部的路由互通,而AS之間的路由信息交互則由BGP來完成。在本例中,R1及R2運行了BGP并且兩者建立了EBGP對等體關(guān)系,同樣,R3及R4之間也建立了EBGP對等體關(guān)系。
圖1 EBGP及IBGP對等體關(guān)系
一條BGP路由在EBGP對等體之間傳遞時,會發(fā)生有趣的變化。在圖2中,描述了AS 200中的一條路由——10.1.1.0/24在EBGP對等體之間的傳遞情況。R2將AS 200中的10.1.1.0/24路由發(fā)布到了BGP,它將這條路由通過BGP通告給自己的EBGP對等體R1。
每條BGP路由都攜帶著多個屬性,這些屬性被稱為路徑屬性,其中一個非常重要的路徑屬性就是AS_Path,AS_Path是每條BGP路由都會攜帶的屬性,它描述了一條BGP路由在傳遞過程中所經(jīng)過的AS的號碼。
R2將始發(fā)于AS 200的路由10.1.1.0/24通告給R1時,將該路由的AS_Path設(shè)置為200,而R1將這條路由通告給自己的IBGP對等體R3時,路由的AS_Path不發(fā)生改變。
R3將該路由通告給EBGP對等體R4時,則將路由的AS_Path修改為100 200,也就是在原有的AS_Path基礎(chǔ)上,插入自己所處AS的號碼,當(dāng)R4收到這條BGP路由更新時,它便知道要到達該目的網(wǎng)段,需要經(jīng)過100、200這兩個AS——您可能已經(jīng)發(fā)現(xiàn)了,BGP路由在EBGP對等體之間的傳遞過程,很有點距離矢量路由協(xié)議的味道。
實際上如果R2及R4之間也建立EBGP對等體關(guān)系的話,那么R4將會從R2直接收到10.1.1.0/24的路由更新,而這條路由的AS_Path為200,單純從AS_Path屬性值的長度(包含的AS號碼個數(shù))來衡量,顯然對于R4而言直接從R2到達目標(biāo)網(wǎng)段要更“近”一點。因此,AS_Path的長度會影響路由器對BGP路徑的優(yōu)選。
圖2 BGP路由在EBGP對等體之間的傳遞
另外,路由在EBGP對等體之間傳遞時,AS_Path還用于防止出現(xiàn)路由環(huán)路。R4從R3收到10.1.1.0/24路由后,如果它與R2之間存在EBGP對等體關(guān)系,那么它會將該路由通告給R2,此時路由的AS_Path為300 100 200,如圖7-3所示,R2從R4收到該路由后,會忽略這條路由更新,因為它在收到的路由中看到了自己本地的AS號碼,便意識到網(wǎng)絡(luò)中出現(xiàn)了環(huán)路。
通常情況下,EBGP對等體關(guān)系必須基于直連接口建立,例如本例中的R1及R2,它們是直連的,此時雙方便可使用直連接口來建立EBGP對等體關(guān)系。BGP之所以要設(shè)定這樣的規(guī)則,是因為缺省情況下,EBGP對等體之間發(fā)送的BGP協(xié)議報文的TTL值為1,這使得這些協(xié)議報文只能夠被傳送1跳。
當(dāng)然,在某些特殊的場景中我們可能需要在兩臺非直連的路由器之間建立EBGP對等體關(guān)系,那么就需要修改EBGP對等體的跳數(shù)限制,通過這個操作來修改協(xié)議報文中的TTL值。
2.IBGP對等體關(guān)系(Internal BGP Peer)
如果建立對等體關(guān)系的兩臺BGP路由器位于相同的AS,那么它們之間的關(guān)系被稱為IBGP對等體關(guān)系。例如在圖7-2所描述的網(wǎng)絡(luò)中,AS 100內(nèi)存在兩臺運行著BGP的路由器:R1及R3,由于它們同屬一個AS,因此它們之間所建立的關(guān)系為IBGP對等體關(guān)系。
同樣的,AS 200中的R2及R6也建立了IBGP對等體關(guān)系。值得注意的是,在兩臺路由器之間建立IBGP對等體關(guān)系時,并不要求它們必須直連,在本例中,AS 100里的R1和R3就并未直連,得益于AS 100中運行的IGP協(xié)議(例如OSPF等),R1及R3能夠發(fā)現(xiàn)到達對方的路由,從而兩者能夠借助這些路由建立TCP連接,并進一步建立IBGP對等體關(guān)系。
不同的BGP對等體關(guān)系,對路由的操作是有明顯區(qū)別的。例如BGP路由在EBGP對等體之間傳遞時,AS_Path屬性會發(fā)生改變,路由的發(fā)送方會在該條BGP路由原有AS_Path的基礎(chǔ)上,插入自己所處AS的號碼。而BGP路由在IBGP對等體之間傳遞時,AS_Path不會發(fā)生改變。
微信掃碼關(guān)注公眾號
獲取更多考試熱門資料