簡介
本檔案介紹如何判斷內部或外部邊界閘道通訊協定(BGP)鄰居翻動是由MTU造成的原因。
必要條件
需求
思科建議您瞭解以下主題:
完成本檔案中的程式之前,請確認已在兩台BGP路由器上完成以下任務:
- 檢查BGP配置。
- 驗證是否可透過網際網路控制訊息通訊協定(ICMP)連線至BGP鄰居,且未觀察到捨棄專案。
- 驗證用於對等BGP的已連線介面不是超訂用介面,並且沒有任何輸入/輸出丟棄或錯誤。
- 檢查CPU和記憶體利用率。
採用元件
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
問題
BGP neighbors形式;但是,在字首交換時,BGP狀態將會丟棄,日誌將生成丟失的BGP hello keepalive或其他對等體終止會話。
完成以下步驟,以判斷MTU是否導致BGP鄰居翻動:
- 使用以下命令以檢查哪個鄰居受到了影響,以及兩台BGP路由器上連線的介面。如果對等位址是回送位址,請檢查可連線回送的連線介面。此外,請檢查兩台對等路由器上的BGP OutQ。一致的非零OutQ強烈表示更新由於路徑中的MTU問題而未到達對等體。
Router#show ip bgp summ | in InQ|10.10.10.2
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.10.10.2 4 3 64 62 3 0 0 00:00:3 2
Router#show ip route 10.10.10.2
Routing entry for 10.10.10.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
* directly connected, via GigabitEthernet1/0
Route metric is 0, traffic share count is 1
- 檢查兩端的介面MTU:
Router#show ip int g1/0 | i MTU
MTU is 1500 bytes
Router#
- 確認兩個BGP揚聲器的TCP協定最大資料段:
Router#show ip bgp neigh 10.20.20.2 | inc segment
Datagrams (max data segment is 1460 bytes):
Router#
在上方範例中,1460是正確的,因為20位元組指定給TCP標頭,另外20位元組指定給IP標頭。
- 確認BGP used path-mtu是否已啟用:
Router#show ip bgp neigh 10.10.10.2 | in tcp
Transport(tcp) path-mtu-discovery is enabled
Router#
- 對已設定最大介面MTU和DF(不分段)位元的BGP對等點執行Ping:
Router#ping 10.10.10.2 size 1500 df
Type escape sequence to abort.
Sending 5, 1500-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds:
Packet sent with the DF bit set
.....
Success rate is 0 percent (0/5)
- 降低ICMP大小值,以確定可以使用的最大MTU大小:
ping 10.10.10.2 size 1300 df
解決方案
以下是一些可能的原因:
- 兩台路由器上的介面MTU不匹配。
- 兩台路由器上的介面MTU相符,但形成BGP作業階段的第2層網域不相符。
- 路徑MTU發現確定TCP BGP會話的最大資料集不正確。
- 由於PMTUD ICMP封包遭封鎖(防火牆或ACL),BGP路徑最大傳輸單元探索(PMTUD)可能失敗
以下是解決MTU問題的可能方式:
- 兩台路由器上的介面MTU必須相同;運行show ip int | 在MTU命令中檢查目前的MTU設定。
- 如果兩台路由器上的介面MTU都正確(例如1500),但已設定DF位元的ping測試不超過1300,則構成受影響的BGP作業階段的第2層網域可能包含不一致的MTU組態。檢查每個第2層介面MTU。修正第2層介面MTU以解決問題。
- 如果您無法檢查/變更第2層網域,可以將ip tcp mss global指令設定為較小的值,例如1000,這可強制所有本地發起的TCP最大資料區段作業階段(包括BGP)變更為1000。有關此命令的詳細資訊,請參閱Cisco IOS® IP Application Services命令參考的ip tcp mss部分。
此外,您還可以使用ip tcp adjust-mss指令進行進一步的疑難排解;此指令在介面層級設定,且會影響所有TCP作業階段。有關此命令的詳細資訊,請參閱Cisco IOS IP應用程式服務命令參考的ip tcp adjust-mss部分。
- (可選)BGP路徑最大傳輸單元探索(PMTUD)無法產生正確的最大資料大小。您可以全域性禁用或按鄰居禁用該功能,以確認這是不是原因。停用BGP PMTUD時,BGP最大區段大小(MSS)預設為536,如RFC 879所定義。
有關如何停用PMTUD的資訊,請參閱Cisco IOS BGP組態指南的為TCP路徑MTU探索設定BGP支援一節。
有關PMTUD的詳細資訊,請參閱使用GRE和IPsec解決IPv4分段、MTU、MSS和PMTUD問題。
相關資訊