BGP路由表


  今生所願,則是看一場奼紫嫣紅的春光,讀一卷賞心悅目的詩詞,做一個洗盡鉛華的女子。願所有世人,放下執念,清白一世。願與草木,隨遇而安。

一、BGP路由表的形成

  1、通過network命令

在BGP的address-family下使用network命令發布本設備上IGP路由表中的路由,network發布路由不一定是直連路由,只要本地路由表中有此路由非(BGP路由)即可發布。

發布命令:network x.x.x.x mask x.x.x.x

2、通過重分發IGP路由

在BGP的BGP視圖或者BGP-VPN實例視圖import-route protocol [ { process-id | all-processes} [ allow-direct | med med-value| route-policy route-policy-name ] * ]

將IGP路由協議的路由信息引入到BGP路由表中。此方式可以根據IGP路由表的變化而發布不同路由條目,可以理解為是一種“動態BGP路由“方式。

注意事項:使用network發布路由,要首先查看路由表。network發布的路由要求前綴和掩碼--對應才會被發布。不建議直接重分發直連路由。

二、BGP路由表的查看和路由有效標記

總結:

1、BGP只負責路由傳遞,不負責全網收斂。

2、BGP路由表中只顯示傳遞和接受的路由,並不一定是有效路由。

3、只有有效路由才會加載到IGP路由表中,路由器最終的通信與否只與IGP路由表有關。

三、BGP路由的三個公認強制屬性

BGP傳遞的路由都存在三個公認強制屬性

Original(起源者)

Next-hop(下一跳地址)

As-Path(AS路徑)

Original ·標記一條路由是如何成為BGP路由的(即network發布或者Redistribue重分發)

Next-hop ·到達目標網絡的下一跳地址,不一定是直連鄰居地址,只要在IGP路由中下一跳可達也可以

As-path ·BGP路由到達目的地所經過的所有AS號碼的集合(在EBGP之間用於防環功能,ibgp路由不攜帶)

下一跳屬性(Next-Hop)

  ·到達目標網絡的下一跳地址,不一定是直連鄰居地址,只要在IGP路由中下一跳可達也可以

  ·如果下一跳地址不與當前路由器直連,則BGP在將數據包發往下一跳時,通常需要采用遞歸查詢在IGP路由表中查詢該下一跳地址

  ·一台BGP路由器將路由傳遞給EBGP鄰居時,會將Next-hop屬性改為自己的地址,也就是和對方建立鄰居所使用的地址,而在將路由傳遞給IBGP鄰居時,不會改變Next-hop屬性

通常會針對iBGP鄰居都會使用next-hop-self修改下一跳地址

Original(起源屬性)

 · 使用network發布的路由,起源屬性為:i

 · 重分發到BGP中的路由,起源屬性為:?

AS_PATH屬性

 · AS_Path中包含了BGP路由器到達目的地所經過的所有AS號碼的集合

 · AS_Path中會包含了多個AS號碼,號碼的多少,邏輯上反映了到達目的地的遠近。

四、路由黑洞與BGP同步

a、EBGP鄰居傳來的路由可以通過AS_PATH防環,所以收到的不會有問題,因此直接是>,直接裝表、再傳給EBGP鄰居或IBGP鄰居。

b、IBGP鄰居傳來的路由由於是在同一個AS,所以沒法通過AS_PATH防環,於是BGP規定IBGP只能傳一跳。

c、BGP還有兩個問題。問題一:BGP規定從EBGP學到的路由,傳給IBGP鄰居,不改變下一跳。這樣通常對AS內部路由器來說,這個下一跳不可達。問題二:由於水平分割,IBGP鄰居只能傳一跳,所以設想把兩個IBGP建立在網絡邊緣,中間的路由器就成了黑洞。(所以只有解決這二個問題后IBGP傳來的路由才是優化的)

  假設圖中A宣告一條路由dest,傳給B,B直接是優化的,正常裝表並傳給E。問題一就是E收到這條dest路由時,下一跳是A的地址,這地址是AS外的地址通常是不可達的。問題二就是中間的C和D並不知道這條dest路由。(再強調下,EBGP傳來的直接就是優化的,能夠直接裝表並往下傳)

 

 

 

 

問題一的解決辦法:把下一跳改成自己;或者寫一跳關於下一跳的靜態路由,使得下一跳可達。

問題二的解決辦法:將BGP路由重發布到IGP中,使得該AS都知道A路由器的路由。這個重分發只能在B上做,因為B關於A的路由是優化的,E路由器是非優化的。另為,針對問題二,BGP還制定了一個同步規則,即打開了同步,則當BGP路由器從IBGP鄰居收到的路由時,必須同時從IGP路由表也能學習到,才能最優路由,才來繼續傳給EBGP鄰居,其實就是防止路由黑洞。注意BGP同步僅針對從IBGP鄰居收到的路由,從而EBGP鄰居收到的路由可以直接最優裝表。  啟用同步機制,執行重分發后可能會造成IGP內部的路由器不堪重負,因為C和D可能后面還接了很多路由器。

d、總結IBGP路由層面打通方法:下一跳可達+開同步+BGP重分發進IGP;下一跳可達+關同步。(即IBGP鄰居傳來的路由優化條件)

e、總結IBGP數據層面打通方法:下一跳可達+開同步+BGP重分發進IGP;下一跳可達+關同步+ALL RUN and Fullmesh/MPLS。

1、防環

 EBGP的水平分割:AS之間的防環,路由器不收帶有自己AS號的路由更新。(控制層面)

 IBGP的水平分割:從IBGP收到的路由不會通過給另一個IBGP(控制層面)

 RR的防環:RR打破了IBGP只傳一跳的規則,所以需要通過cluster-id防環

2、黑洞

 由於防環機制的存在,BGP中間途徑的路由器不會獲知外部的路由。

黑洞舉例:假設(A)-EBGP-(B-C-E)-EBGP-(F),B和E建立IBGP,此時A ping F不會通,因為A查去往F得仍給B,B查去往F需要扔給E(假設E開了nexthopself),遞歸查找經過C/D去E,但包到了C/D后就丟棄了,因為C/D沒有路由去往F。

1)AS65101中的路由條目傳到AS65103              
     EBGP:AB,EF。  IBGP:BE         
     控制層面:ABEF         
     數據層面:FE,到D和C會被丟棄      
2)解決方法              
     物理線路full mesh(關同步):不會用,代價貴,都直連了有路由         
     邏輯線路full mesh(關同步):全連接,所有路由器運行BGP並運行BGP,即BCDE全部建立BGP鄰居關系(無需直連),可以用RR,聯盟         
     重發布(開同步):將BGP重發布到IGP,只能實驗環境做,實際中要想這么做只能通過ACL導一部分         
     MPLS(關同步):BGP內部通過標簽走,不通過路由走,實際上就是利用了CEF解決遞歸查找的功能         
3)BGP路由黑洞,C和D能傳BE之間的路由,但是不能傳數據,這是因為:              
     控制層面源目的在變,分為三段(源A到目的B,源B到目的E,源E到目的F,每一段都有路由),通過TCP傳路由。         
     數據層面源目的不變,源F目的A,中間C和D沒有路由    
 
3、同步
     BGP的同步:為了確保宣告出去的路由都不會有黑洞問題,開啟同步后,BGP只會將IGP和BGP同步后(通過重發布)的路由宣告出去,即宣告的路由不可能有黑洞。
 
4、全互聯
     
要所有路由器都能更新路由,所有經過路由器運行BGP並且full mesh,full mesh只需路由可達,無需直連。不是全互聯,可能導致兩個問題:1,更新發不過去,例如防環中的那個例子。2,更新發過去了,但數據包過不去,例如黑洞例子。
 
本文部分摘自:https://www.cnblogs.com/guxh/p/8449347.html
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM