說(shuō)明:該篇筆記作為 BGP 基礎(chǔ)-1 的補(bǔ)充,以及 BGP Border Gateway Protocol,邊界網(wǎng)關(guān)路由協(xié)議的一些更為重要的基礎(chǔ)理論疆柔。
參考視頻:紅茶三杯)
?
?
0x01 中轉(zhuǎn) AS 中的 IBGP 路由傳遞
參考該圖:
上圖允坚,我們模擬一個(gè) 1.0 的路由通過(guò) AS 65101 來(lái)傳遞
1:通過(guò)圖可知,A 與 B 之間的 Peer 為 EBGP列赎,B 與 E 之間為 Peer IBGP,E 與 F 之間為 Peer EBGP 鄰接
2:A 通告 1.0 路由給 EBGP 鄰居 B,那么 B 則跨 OSPF 路由 TCP 通信傳遞給 E挎春,E再通過(guò) EBGP 鄰接關(guān)系傳遞給 F 注意:該路由為 AS 65101 update 通告給鄰接的一個(gè)消息,而不是通信
3:F 已知去往 A 1.0 的路由,如果 AS F 要去往 1.0 路由直奋,需要通過(guò) EBGP E 轉(zhuǎn)發(fā)
2:而當(dāng) E 轉(zhuǎn)發(fā)該路由的時(shí)候能庆,只有扔給 D,C 二者之中的一個(gè),當(dāng)轉(zhuǎn)發(fā)到該非 BGP 路由器上的時(shí)候脚线,D搁胆,C 二者是不知道如何操作該 BGP 路由的,會(huì)被直接丟棄殉挽,==我們將其稱作路由黑洞==
這里我就叫它 AS 中轉(zhuǎn) IGP 黑洞
?
?
0x02 BGP 同步
既然出現(xiàn)了路由黑洞丰涉,那么就會(huì)有解決方法,如 RIP 一樣斯碌,RIP 擁有水平分割來(lái)防環(huán)一死,那么 BGP 就有同步規(guī)則來(lái)防止路由黑洞
?
?
BGP 同步規(guī)則:
BGP 的同步規(guī)則指出,一臺(tái) BGP 的路由器傻唾,你不能將通過(guò) IBGP 獲取到的 BPG 路由投慈,通告給你的 EBGP 鄰居,除非你通過(guò) IGP冠骄,又一次獲取到這條路由的更新
該同步規(guī)則的著重點(diǎn)在于 IGP 路由擁有 BGP 路由跟新過(guò)來(lái)的路由條目伪煤,能夠識(shí)別 BGP 路由,同時(shí)轉(zhuǎn)發(fā)給 AS 邊界 BGP 路由器
這里可能有理解錯(cuò)誤凛辣,但是大致是這種情況
需要注意的一點(diǎn)是該規(guī)則是有點(diǎn)雞肋的抱既,因?yàn)殡S時(shí)可像 ARP 那樣欺騙
==Cisco IOS 默認(rèn)關(guān)閉同步規(guī)則==
既然又默認(rèn)關(guān)閉,開(kāi)啟又雞肋可欺騙扁誓,那么前輩們就總結(jié)出如下幾個(gè)方法防泵,來(lái)解決路由黑洞的問(wèn)題
?
解決辦法 1
該方案不是最優(yōu)建議,因?yàn)?BGP 承載大量路由蝗敢,重發(fā)布可能導(dǎo)致 IGP 跑死
參考圖:
**在 B捷泞、E 上將 BGP 路由重發(fā)布進(jìn) IGP (OSPF) 路由中,可解決路由黑洞問(wèn)題**
?
解決方法 2
該方案是采取 ==AS 邊界路由全起 BGP 來(lái)達(dá)到無(wú)死角==寿谴,即 AS 路由器全跑 BGP 路由锁右,從而使得 B peer E D C,鄰接讶泰,那么這個(gè)時(shí)候咏瑟,就不會(huì)存在路由黑洞的問(wèn)題,BGP 同步規(guī)則也沒(méi)必要開(kāi)啟 [ BGP 同步規(guī)則痪署,Cisco 默認(rèn)關(guān)閉]
參考圖:
該方案缺點(diǎn):
IBGP 全互聯(lián)雖然能結(jié)局 Transit AS 內(nèi)的路由黑洞問(wèn)題响蕴,但是卻造成 BGP 路由器需耗費(fèi)大量資源維護(hù) BGP 連接的新問(wèn)題。
以下為兩個(gè)資源損耗過(guò)大的解決方案:
- 路由反射器
- 聯(lián)邦
?
?
0x03 IBGP 水平分割原則
我們?cè)?RIP 中有水平分割原則惠桃,那么視野擴(kuò)到 IBGP 浦夷,其維護(hù)的 Peer IBGP 的鄰接關(guān)系所處的 水平分割原則又是什么樣的辖试?
IBGP 水平分割原則:
**當(dāng)我的一臺(tái)路由器從我的某一個(gè) IBGP 鄰居收到一條 BGP 路由的時(shí)候,我將不能夠再傳遞給其他任何一個(gè) IBGP 鄰居 **
以下為講解過(guò)程:
BGP 防環(huán)是通過(guò) AS-PATH 實(shí)現(xiàn)的劈狐,而 AS-PATH 僅僅再路由離開(kāi) AS 才會(huì)被更改罐孝,因此在 AS 內(nèi), IBGP 就沒(méi)有 EBGP 的防環(huán)能力肥缔,為了防止環(huán)路的出現(xiàn)莲兢,BGP 路由器不會(huì)將從 IBGP 鄰居學(xué)習(xí)過(guò)來(lái)的路由再通告給自己其他 IBGP 鄰居⌒牛——BGP 的水平分割原則改艇。
==由于水分分割原則的存在,BGP 要求 AS 內(nèi)坟岔,需保證 IBGP 全互聯(lián) ( neighbor 命令指定)谒兄。==
( 根本原因是再 AS 內(nèi)部,AS-PATH 不會(huì)改變社付,無(wú)法使用 AS-PATH 防環(huán)承疲,因此會(huì)導(dǎo)致出現(xiàn)環(huán)路)
?
?
0x04 BGP 路由通告規(guī)則
- 當(dāng)存在多條路徑時(shí),BGP Router 只選取最優(yōu)的路由 ( BEST ) 來(lái)使用 (沒(méi)有負(fù)載均衡的情況下)
- BGP 只把自己使用的路由鸥咖,也就是自己認(rèn)為 BEST 的路由傳遞給 BGP peer
- BGP Speaker 從 EBGP 獲得的路由會(huì)向他所有的 BGP peer 通告 包括 EBGP 和 IBGP
- BGP Speaker 從 IBGP 獲得的路由不向它的 IBGP 相鄰體通告 (水平分割原則:避免環(huán)路燕鸽,存在路由 RR 的情況除外)
- BGP Speaker 從 IBGP 獲得的路由是否通告給它的 EBGP peer 要看 IGP 和 BGP 的同步情況來(lái)決定
?
?
0x05 BGP 路由表
- BGP 鄰居表:Peer 對(duì)等體列表
- BGP 表:包含了所有從鄰居 Peer 對(duì)等體那學(xué)來(lái)的路由條目,以及到達(dá)目的的網(wǎng)段的多個(gè)路徑和屬性
- 路由表:列出了到達(dá)目的網(wǎng)段的==最佳路徑==
- AD:EBGP = 20 啼辣,IBGP = 200
?
?
0x06 BGP Next-hop 屬性
該特征下一跳與其他下一跳不同啊研,具體看以下解析
BGP 路由器從一個(gè) EBGP 鄰居收到一條路由的時(shí)候,BGP 路由器會(huì)將該 EBGP 鄰居的接口 IP 作為我這條路由的下一跳 Next-hop鸥拧,通告給我的 IBGP 鄰居
該 Next-hop 屬性只會(huì)在 不同 AS 之間發(fā)生改變党远,而 AS 內(nèi)部是不會(huì)發(fā)生改變的
參考圖如下:
其他參考:
- BGP 是 AS-by-AS 的路由協(xié)議,而不是 router-by-router 的路由協(xié)議
- 在 BGP中住涉,next-hop 并不意味著是下一臺(tái)路由器麸锉,而是到達(dá)下一個(gè) AS 的 IP 地址
- EBGP 中钠绍, 默認(rèn) next-hop 為發(fā)送更新的理解路由器的 IP 的地址
- IGBP 中舆声,從 EBGP 傳來(lái)的 Next-hop 屬性是在 IBGP 中保持不變的被傳遞
?
?
0x07 BGP 更新源
==跟新源在于聲明 loopback 基礎(chǔ)上==
在沒(méi)有學(xué)習(xí) BGP 跟新源的時(shí)候,我們使用直連接口建立 BGP peer 鄰居關(guān)系
如果任何一個(gè)直連接口 down 掉柳爽,或者任何一個(gè)鏈路 down 掉都將直接導(dǎo)致 BGP 鄰居 down媳握,或者 BGP 路由之間的連接消失
==如果我們使用 loopback 口來(lái)建立 Peer 關(guān)系==,如果鏈路 down 了磷脯,只要我們有冗余鏈路蛾找,那么該鏈路會(huì)借助 IGP 協(xié)議從而再次發(fā)現(xiàn) Peer,使得 BGP 鏈路更加穩(wěn)定赵誓,鄰居關(guān)系起到穩(wěn)定作用
一般而言打毛,與 EBGP 之間仍然采用之間接口指定更新源
參考圖如下:
?
?
0x08 EBGP 之間使用 Loopback 建立跟新源
如果通過(guò) EBGP 建立鄰居關(guān)系柿赊,其默認(rèn) next-hop 為 1
需要注意的是,我們通過(guò) loopback 口建立更新源幻枉,其 next-hop 最小值為 2
==所以如果通過(guò) loopback 建立更新源碰声,我們需要調(diào)整該跳數(shù)==,同時(shí)需要指定 EBGP 鄰居間的通信無(wú)礙
具體調(diào)整方式參考 BGP 基礎(chǔ)配置.md