隨筆 故障處理之BGP翻動

2021-10-12 15:57:45 字數 1790 閱讀 9551

環境兩個ibgp鄰居用loopback0建立ibgp鄰居,中間經過多台路由器。

示意拓撲如下:

1.問題的規律

2.從log中我們可以發現這個ibgp鄰居斷掉以及重建的規律。

每次都是因為holdtimer超時,並且是因為對端收不到本端發出去keepalive報文。

dec 6 13:28:36: %bgp-5-adjchange: neighbor 2.2.2.2 up

dec 6 13:33:55: %bgp-3-notification: received from neighbor 2.2.2.2 4/0 (holdtime expired) 0bytes

dec 6 13:33:55: %bgp-5-adjchange: neighbor 2.2.2.2 down bgp notification received

dec 6 13:34:22: %bgp-5-adjchange: neighbor 2.2.2.2 up

dec 6 13:39:37: %bgp-3-notification: received from neighbor 2.2.2.2 4/0 (holdtime expired) 0bytes

dec 6 13:39:37: %bgp-5-adjchange: neighbor 2.2.2.2 down bgp notification received

因為bgp鄰居每次斷掉之後就會很快的重建起來,ip路由應該沒有問題。

(1)現在我們要理解bgp鄰居建立起來之後會做什麼。傳送路由更新,也就是update報文。

(2)對於bgp來說,鄰居的維護使用keepalive報文,但是如果有路由更新,傳送update報文的話,此update報文就具有keepalive報文的功能,路由器就不用再專門傳送乙個bgp keepalive報文。 綜合以上兩點我們可以懷疑是bgp update報文對端沒有收到。

3.由於是第乙個update報文,根據路由表容量的大小,我們可以知道這個報文會達到最大值,我們知道bgp 報文最大可以達到4096個位元組,同時也受限於tcp 對端的mss大小。

mss(maximum segment size ) 是指乙個host能夠接受最大tcp datagram的大小,這個值是在tcp option欄位中協商得到的。我們可以通過以下命令知道。

如下這個命令輸出的datagrams (max data segment is 4394 bytes)。

這裡可以使用裝置自帶的擴充套件ping或者不分片ping測試即可,具體命令不寫了。如果不通,我們可以知道是路徑中某台路由器的介面mtu較小導致。

變更線路經過的所有介面mtu值為一致,或者將本端出介面mtu調整到全程最小mtu,即可穩定

對於bgp 的troubleshooting,因為bgp 是基於tcp報文的,所以不僅僅是ip層面的,也有可能是也要基於tcp層面進行分析。

1.bgp neighbor發出的notification而導致的鄰居down掉,我們都可以基於給出的 error code 和subcode(holdtimer 超時是4/0)來知道down掉的原因。

具體的code的分類和意思可以參考rfc4271.2.相關命令show ip bgp

bgp狀態idle什麼原因 BGP故障處理綜述

1 bgp 故障處理綜述 作為外部閘道器路由協議 egpexterior gateway protocol bgp主要關注於控 制路由在自治系統間的傳播,通過設定豐富的路徑屬性,bgp能夠實現自治系統級 的路由管理。bgp 4 支援無類別域間路由 cidr classless intradomain...

HDFS之NameNode故障處理

namenode故障後,可以採用如下兩種方法恢復資料。方法一 將secondarynamenode中資料拷貝到namenode儲存資料的目錄 1.kill 9 namenode程序 2.刪除namenode儲存的資料 opt module hadoop 2.7.2 data tmp dfs name...

Bumblebee之負載 限流和故障處理實踐

bumblebee作為標準http 1.1應用協議的閘道器,它能作為任何基於http 1.1構建webapi服務的前置閘道器。以下通過示例講述如何用bumblebee來製作乙個asp.net core webapi的前置閘道器,並演示閘道器的一些基礎功能如 負載,限流和故障遷移等相關基礎功能。bum...