混合云場(chǎng)景下BGP冗余路徑失效-事件復(fù)盤
1 問題背景
這是一份基礎(chǔ)網(wǎng)絡(luò)運(yùn)維的事故復(fù)盤報(bào)告。
因?yàn)橐恍v史原因,我司各個(gè)環(huán)境之間的互聯(lián)互通采用了串行連接,并且核心鏈路和轉(zhuǎn)發(fā)節(jié)點(diǎn)使用了共享資源,既下圖中紅色部分。因?yàn)楣蚕碣Y源的可靠性和穩(wěn)定性表現(xiàn)不佳且故障場(chǎng)景下的權(quán)限不足,倍受困擾后下定決心要改變這種局面。在梳理了現(xiàn)有資源之后,基礎(chǔ)網(wǎng)絡(luò)架構(gòu)躍遷歷程如下:
圖片
- 互聯(lián)方式由之前身不由己的純靜態(tài)路由調(diào)整為全BGP環(huán)境。因?yàn)槭腔旌显萍軜?gòu),所有鄰居之間全部基于EBGP對(duì)接,子接口部署,路由結(jié)構(gòu)如下圖所示:
圖片
- as分布如圖所示,看起來很棒:閉合連接/雙上行/EBGP,這些特性配合BFD和觸發(fā)更新,完全有能力在異常情況下實(shí)現(xiàn)毫秒級(jí)的路由收斂,踢出故障鏈路后使流量快速切換到備用路徑。
- 然而,不出意外的,我們遇到了意外———割接很順利,架構(gòu)變更按計(jì)劃完成,但在驗(yàn)證高可用能力的過程中遇到了光路中斷,造成EBGP-5鄰居狀態(tài)idle,導(dǎo)致辦公環(huán)境與托管IDC失聯(lián):
圖片
- 確認(rèn)問題鏈路兩端模塊的光功率均在合理區(qū)間,基本排除了模塊故障的可能性。托管IDC側(cè)掛表測(cè)試,OTDR顯示近端衰減,確認(rèn)鏈路狀態(tài)不可用,鎖定位置后反饋有管井臨時(shí)施工造成鏈路中斷。但EBGP鄰居down了,理論上應(yīng)該能夠通過冗余路徑學(xué)到路由才是,為什么會(huì)失聯(lián)呢?
2 探索
于是問題排查的重心調(diào)整到高可用方向。
2.1 鄰居狀態(tài)確認(rèn)
優(yōu)先確認(rèn)了所有EBGP鄰居的關(guān)系狀態(tài),確保均為established。
圖片
圖片
2.2 路由有效性檢查
其次檢查辦公環(huán)境和托管IDC內(nèi)網(wǎng)出口方向的路由宣告詳情,確認(rèn)兩側(cè)BGP進(jìn)程路由宣告成功。
圖片
圖片
2.3 路由過濾
再次則分別排查內(nèi)網(wǎng)出口方向的前綴列表,確認(rèn)已生效的過濾邏輯不存在誤殺情況。
2.4 手搓新網(wǎng)段,觸發(fā)路由更新
最后嘗試在辦公環(huán)境內(nèi)網(wǎng)出口設(shè)備上新增loopback,配置并發(fā)布一個(gè)新的子網(wǎng)和相應(yīng)的路由,隨后檢查EBGP鄰居的路由收發(fā)情況,發(fā)現(xiàn)情況依舊。
3 分析原因
經(jīng)過上述測(cè)試排查,發(fā)現(xiàn)如下特征————
- 兩端設(shè)備配置正確,且路由宣告正常;
- 云上網(wǎng)絡(luò)組件L3節(jié)點(diǎn)本地路由表中有直連鄰居宣告的路由,說明可以收到正確且完整的路由更新;
- 跨過云上網(wǎng)絡(luò)組件后,再下一跳設(shè)備(也就是本文中問題鏈路的遠(yuǎn)端設(shè)備)的路由表中就找不到相應(yīng)的路由信息了;
- 再進(jìn)一步測(cè)試,在托管IDC本地開debug實(shí)時(shí)打印路由更新,確認(rèn)從云上EBGP鄰居處收到的路由更新中,并不包含辦公環(huán)境所屬網(wǎng)段的路由信息。
綜上,辦公環(huán)境和托管IDC內(nèi)網(wǎng)出口方向,兩端設(shè)備都向云上L3節(jié)點(diǎn)宣告了本地路由,云上L3節(jié)點(diǎn)也能正常收到路由信息并加入自身的路由表,但是,云上L3節(jié)點(diǎn)并不會(huì)把這些路由信息再轉(zhuǎn)發(fā)到遠(yuǎn)端的云下設(shè)備。折騰了近2個(gè)小時(shí),過程中我甚至想到了古早概念-水平分割,但想到產(chǎn)品經(jīng)理明確強(qiáng)調(diào)過:“專線接入點(diǎn)就是個(gè)渠道,當(dāng)成鏈路看待就可以了”,加之方案設(shè)計(jì)時(shí)還額外增加了子接口的配置,結(jié)果還是在防環(huán)上踩了坑。最終又拉上云服務(wù)商的售后升級(jí)確認(rèn),才真正破案。萬萬妹想到哇,555555
4 解決方案
針對(duì)問題情況,揪著售后一起確認(rèn)了各種細(xì)節(jié)后,敲定了解決方案————
- 在云上再單獨(dú)創(chuàng)建一個(gè)L3節(jié)點(diǎn);
- 這個(gè)新建的L3節(jié)點(diǎn)為辦公環(huán)境和托管IDC分別連接一個(gè)專線接入點(diǎn);
- 托管IDC和辦公環(huán)境的內(nèi)網(wǎng)出口節(jié)點(diǎn),各自再創(chuàng)建一個(gè)子接口,用于和新增的專線接入點(diǎn)對(duì)接,并與云上新建的L3節(jié)點(diǎn)建立EBGP鄰居EBGP-6和EBGP-7;
- 托管IDC和辦公環(huán)境的內(nèi)網(wǎng)出口節(jié)點(diǎn),分別將本地的路由信息通過新建子接口發(fā)布給云上這個(gè)新的EBGP鄰居;
- 新增的EBGP-6和EBGP-7這兩組鄰居關(guān)系,可以為EBGP-5提供冗余路徑和路由更新渠道,調(diào)整后的方案如下圖所示:
圖片
5 總結(jié)
整體看下來,問題其實(shí)很簡(jiǎn)單,認(rèn)為有了子接口,又是不同as之間的EBGP鄰居,不會(huì)受到as-path、水平分割這類防環(huán)邏輯的限制,但其實(shí)是思維定勢(shì)的誤區(qū),造成了后面的周折和時(shí)間損耗。
誠然,BGPv4仍是當(dāng)代互聯(lián)網(wǎng)的基礎(chǔ),但云服務(wù)帶來了新鮮內(nèi)容,基于云的各種能力和產(chǎn)品,相較企業(yè)網(wǎng)和數(shù)通的傳統(tǒng)技術(shù)概念有了明顯變化,應(yīng)該在掌握基礎(chǔ)的前提下,明了新產(chǎn)品和新特性的更新迭代,真正理解這些不同之處的關(guān)聯(lián)場(chǎng)景和針對(duì)的痛點(diǎn),才能正確的發(fā)揮優(yōu)勢(shì)體現(xiàn)價(jià)值,給上層服務(wù)提供穩(wěn)定和持久的支撐。
關(guān)于作者
宛景瑞,轉(zhuǎn)轉(zhuǎn)基礎(chǔ)設(shè)施運(yùn)維負(fù)責(zé)人。