今生所願,則是看一場奼紫嫣紅的春光,讀一卷賞心悅目的詩詞,做一個洗盡鉛華的女子。願所有世人,放下執念,清白一世。願與草木,隨遇而安。
一、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中間途徑的路由器不會獲知外部的路由。
EBGP:AB,EF。 IBGP:BE
控制層面:ABEF
數據層面:FE,到D和C會被丟棄