bgp 路由宣告
參考
BGP數(shù)據(jù)庫
- IP路由表(IP-RIB): 全局路由信息庫, 包括所有IP路由信息
- BGP路由表(Loc-RIB): BGP路由信息庫, 包括本地BGP Speaker(運行了BGP的網(wǎng)絡(luò)設(shè)備)選擇的路由信息。存放的是BGP所有的路徑信息包括最優(yōu)的和不是最優(yōu)的路徑路徑都存放在這里演闭。 是已經(jīng)處理過的路由
- 鄰居表: 對等體鄰居清單列表
- Adj-RIB-In: 對等體宣告給本地Speaker的未處理的路由信息庫, 是對等體發(fā)送過來的還未處理過的路由表項
- Adj-RIB-Out: 本地Speaker宣告給指定對等體路由信息庫挡爵,自己要發(fā)送哪些路由項給對等體
BGP路由處理數(shù)據(jù)流
<img src="https://hexo-1234.pek3b.qingstor.com/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/BGP/BGP%E8%B7%AF%E7%94%B1%E4%BF%A1%E6%81%AF%E5%A4%84%E7%90%86%E6%95%B0%E6%8D%AE%E6%B5%81.png" alt="BGP路由處理數(shù)據(jù)流" style="zoom:50%;" />
上面綠色線指的是 OSPF 類型的 IGP 協(xié)議
紅色虛線是 IBGP pper
EBGP 有紅色文字標(biāo)識
BGP路由通告原則一
- 連接一建立established階段存崖, BGP Speaker將把自己所有BGP路由通告給新對等體(新加入的 peer诗茎,會獲得所有路由信息)
- 多條路徑時, BGP Speaker只選最優(yōu)的給自己使用 (選擇最優(yōu)路徑)
- BGP Speaker只把自己使用的最優(yōu)路由通告給對等體惭载。 通過display bgp routing-table展示出來的路由, 最左側(cè)顯示為*>响巢,箭頭>的為最優(yōu)的路由描滔, 則只會傳遞最佳路徑給對等體。(傳遞最優(yōu)路徑)
BGP路由通告原則二
-
BGP Speaker(R4)從EBGP(R5)獲得的路由會向它所有BGP對等體通告(包括EBGP(R6)和IBGP(R2))踪古;
- 從 EBGP 學(xué)來的路由信息含长,會告知所有的 EBGP 和 IBGP
-
IBGP鄰居(一個AS內(nèi))在路由通告的時候券腔, 不修改下一跳。 —— 會導(dǎo)致無法順利傳輸數(shù)據(jù)包拘泞,因為不改變的下一條不可達
在從EBGP學(xué)來的路由在發(fā)給IBGP時, 不改變下一跳纷纫。 比如下圖R4從R5上學(xué)習(xí)到192.168.1.0/24這條路由, 則R4上就將這個目的地址的下一跳設(shè)置為BGP PEER為R5的10.10.5.5(因為是從R5學(xué)來的, 回去肯定也是從R5)。
但是R4發(fā)給IBGP(R2)時【通過BGP peer】, 其發(fā)的路由下一跳還是10.10.5.5(R2上display bgp routing-table查看)陪腌, 但是R2是不知道10.10.5.5在哪辱魁, 會認為這R4發(fā)過來的路由不可用。
此時需要在R4上加一條配置, 將向IBGP傳遞學(xué)習(xí)到的路由的下一跳改成R4自己的BGP PEER 10.10.4.4诗鸭。 R4上操作染簇,保證IBGP下一跳可達
-
解決方法:兩種修改方法,
- 將對端發(fā)過來的下一跳改成自己: peer xxxx next-hop-local
- 將IBGP內(nèi)的路由和EBGP間的靜態(tài)路由注入到IBGP內(nèi)部路由協(xié)議系統(tǒng)只泼, 不保證來回可通
BGP路由通告原則三
- BGP Speaker從IBGP獲得的路由不會通告給它的IBGP鄰居: 防止環(huán)路的產(chǎn)生剖笙。
如下圖R3和R5從R2學(xué)習(xí)的R1通告的路由192.168.1.0/24就不會發(fā)給R4。
這就要求一個AS內(nèi)的所有IBGP設(shè)備全互聯(lián), 如圖中的AS200中所有IBGP設(shè)備R2/R3/R4/R5要全互聯(lián)请唱。但是這樣就會當(dāng)AS內(nèi)的IBGP設(shè)備過多時弥咪, 一個設(shè)備維護TCP連接變得很多。解決方有路由反射器和聯(lián)盟十绑。
環(huán)路解釋:
假如會通告給它的IBGP鄰居聚至,IBGP間可以傳遞路由: R2從R1學(xué)來的路由就會R2–>R3–>R4–>R5—R2形成環(huán)路
【為什么呢?
就是首先 R2 從 R1 學(xué)來路由信息本橙,那么在 R2 上此路由的下一跳為 R1
正常情況:接下來 R3 和 R5 會從 R2 學(xué)習(xí)到此路由扳躬,為了順利傳輸,R3 和 R5 會記錄此路由的下一跳為 R2
- 若是可以傳遞甚亭,接下來R3 和 R5會將此信息傳遞給 R4贷币,R4 隨便記錄一下此路由信息的下一跳為 R3 或 R5 ,這個算正常
環(huán)路情況:但 若 R3 和 R5 會從 R2 學(xué)習(xí)此路由時亏狰,R5 丟失了這條信息或沒有學(xué)到役纹,那么只有 R3 學(xué)到,R3 會記錄此路由的下一跳為 R2
若是可以傳遞暇唾,R3 會 傳遞給 R4 促脉,R4 記錄下一跳為 R3
R4 會傳遞給 R5,R5 記錄下一跳為 R4
R5 會傳遞個給 R2策州,R2 記錄下一跳為 R5
因此便形成了環(huán)瘸味,R2–>R3–>R4–>R5—R2
】
如果一個目的地址是AS100的192.168.1.1的數(shù)據(jù)包從AS400發(fā)到R3且R1與R2間斷了, 則出現(xiàn)R3-R2,R2發(fā)現(xiàn)R1不通了, 開始走環(huán)路R5–>R4–>R3, 這樣數(shù)據(jù)包就出不去了
BGP路由通告原則四
- 下圖BGP Speaker(R5)從IBGP(R2)獲得的路由是否通告給它的EBGP對等體(R6)要依IGP(AS)和BGP同步的情況來決定够挂。比如R2從R1上學(xué)到一條192.168.20.0/24的路由旁仿, 然后傳遞給R5, 此時R5是將這條路由通告給R6就要根據(jù)同步情況孽糖。
同步理解:
下圖R5上運行的IGP協(xié)議(OSPF等)是否學(xué)習(xí)到了192.168.20.0/24這條路由(沒有)丁逝?
學(xué)習(xí)到了汁胆,則IGP和R2傳遞過來的BGP一致,是同步的霜幼, 此時這條路由會從R5(IBGP)通告給R6(EBGP)嫩码。 反之不同步則不會通告。
現(xiàn)在默認關(guān)閉同步功能, 只要是最佳路徑IBGP都通告給相連的EBGP設(shè)備罪既。
同步指的是 IGP 協(xié)議獲得的信息 要和 BGP 協(xié)議獲得的信息是一致的
可通過display th返回信息如下undo synchronization 即為關(guān)閉了同步, 不會將bgp路由發(fā)給R6
- 關(guān)閉同步后想要AS實現(xiàn)BGP轉(zhuǎn)發(fā)的前提: 同一AS內(nèi)的所有設(shè)備都要運行BGP協(xié)議并全互聯(lián)才行
為什么要同步呢铸题?
因為如下圖R2和R5運行BGP協(xié)議,關(guān)閉同步后想要AS實現(xiàn)BGP轉(zhuǎn)發(fā)的前提: 同一AS內(nèi)的所有設(shè)備都要運行BGP協(xié)議并全互聯(lián)才行, 否則BGP在AS內(nèi)走不通琢感。
實踐模擬:
- 因為默認是關(guān)閉同步的丢间, 需要新增加AS加入EBGP連接,獲取已有的全量bgp路由信息驹针。
- 現(xiàn)有環(huán)境AS200和AS300通過R5和R6進行EBGP連接烘挫, R6上有一條BGP路由192.168.1.0/24并且已經(jīng)傳遞到AS200內(nèi)的IBGP設(shè)備R2和R5。 新增一個AS100柬甥, 讓其和AS200通過R1和R2進行EBGP連接饮六, 此時第一次全量BGP同步R2會將AS300的BGP路由192.168.1.0/24發(fā)給AS100的R1。 在R1上新增一個loopback接口13.13.13.1/24并將其路由加入到BGP中苛蒲, 會發(fā)現(xiàn)AS200中IBG設(shè)備都有該BGP路由卤橄, 由于關(guān)閉了同步,該路由不會出現(xiàn)在AS300的R6上(原則體現(xiàn))臂外。 現(xiàn)在從R1上ping AS300中的192.168.1.1窟扑, 在R2的g0/0/0口和g0/0/1口分別抓包, 發(fā)現(xiàn)發(fā)往R3的數(shù)據(jù)包沒有響應(yīng)漏健, 其就是因為R3沒有BGP路由的原因
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布嚎货!