本文件說明如何疑難排解邊界閘道協定 (BGP) 最常見的問題,以及提供基本解決方案和指南。
本文件沒有特定先決條件。基本BGP通訊協定知識很有用,您可以參閱BGP組態設定指南以瞭解詳細資訊。
本檔案所述內容不限於特定軟體和硬體版本,但命令適用於Cisco IOS®和Cisco IOS® XE。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
本文描述對邊界網關協定(BGP)中最常見問題進行故障排除的基本指南,提供了糾正措施、用於檢測問題根本原因的有用命令/調試以及避免潛在問題的最佳做法。請記住,思科TAC不能考慮所有可能的變數和情景,因此需要更深入的分析。
請將此拓撲圖用作本文檔中提供的輸出的參考。

如果BGP會話處於離線狀態,請運行show ip bgp all summarycommand.。此選項提供會話的當前狀態:
R2#show ip bgp all summary For address family: IPv4 Unicast BGP router identifier 198.51.100.2, local AS number 65537 BGP table version is 19, main routing table version 19 18 network entries using 4464 bytes of memory 18 path entries using 2448 bytes of memory 1/1 BGP path/bestpath attribute entries using 296 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 7208 total bytes of memory BGP activity 18/0 prefixes, 18/0 paths, scan interval 60 secs 18 networks peaked at 11:21:00 Jun 30 2022 CST (00:01:35.450 ago) Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.0.23.3 4 65537 6 5 19 0 0 00:01:34 18 198.51.100.1 4 65536 0 0 1 0 0 never Idle
第一個要求是兩個對等點之間的連線,因此會在連線埠179上建立TCP作業階段。它們是否直接連線)且您可以使用ping。如果在環回介面之間建立了對等,則必須完成環回至環回ping。如果在沒有特定環回作為源介面的情況下執行Ping測試,則將傳出物理介面IP地址用作資料包的源IP地址,而不是路由器的環回IP地址。
如果ping不成功,請考慮以下原因:
如果ping成功:
%BGP-3-NOTIFICATION: sent to neighbor 198.51.100.1 passive 2/2 (peer in wrong AS) 2 bytes 1B39
檢查兩端的BGP配置以更正AS編號或對等IP地址。
%BGP-3-NOTIFICATION: sent to neighbor 198.51.100.1 passive 2/3 (BGP identifier wrong) 4 bytes 0A0A0A0A
通過運行show ip bgp all summary命令檢查兩端的BGP識別符號並更正重複的問題。這可以透過在bgp路由器設定下使用全域命令bgp router-id X.X.X.X手動實現。最佳作法是手動將路由器ID設定為唯一編號。
大多數iBGP會話是通過環回介面配置的,環回介面可通過IGP訪問。必須將環回介面明確定義為源,您可以通過運行neighbor ip-address update-source interface-id命令完成此操作。
對於eBGP對等體直連介面,大多數用於對等連線。會檢查Cisco IOS/Cisco IOS XE是否滿足此目的,或者它不會嘗試建立會話。如果在直接連線的路由器上嘗試從環回到eBGP環回,則可以通過運行neighbor ip-address disable-connected-check命令對兩端的特定鄰居禁用此檢查。
但是,如果eBGP對等體之間存在多個躍點,則需要正確的躍點計數,請確保neighbor ip-address ebgp-multihop [hop-count]配置了正確的躍點計數,以便可以建立每個會話。如果未指定跳數,則iBGP會話的預設TTL值為255,而eBGP會話的預設TTL值為1。
測試連線埠179的有用操作是手動從另一個對等點進行telnet:
R1#telnet 198.51.100.2 179 Trying 198.51.100.2, 179 ... Open [Connection to 198.51.100.2 closed by foreign host]
開啟/連線已關閉,或者遠端主機拒絕連線表示資料包到達遠端端。然後,確保遠端的控制平面沒有問題。否則,如果存在「無法到達目的地」訊息,請檢查可以阻止TCP連線埠179、BGP封包的任何防火牆或存取清單,或者如果路徑上有任何封包遺失。
如果存在身份驗證問題,您可以看到的消息為:
%TCP-6-BADAUTH: Invalid MD5 digest from 198.51.100.1(179) to 198.51.100.2(20062) tableid - 0 %TCP-6-BADAUTH: No MD5 digest from 198.51.100.1(179) to 198.51.100.2(20062) tableid - 0
檢查身份驗證方法、密碼和相關配置,要進一步排除故障,請參閱BGP對等體之間的MD5身份驗證配置示例指南。
如果TCP會話未聯機,請使用以下命令進行隔離:
show tcp brief all
show control-plane host open-ports
debug ip tcp transactions
如果會話是間歇性的,請查詢show log,然後您可以找到一些方案。
%BGP-5-ADJCHANGE: neighbor 198.51.100.2 Down Interface flap
出現此故障的原因是「介面關閉翻動」。 查詢埠/SFP、電纜或斷開連線上的任何物理問題。
%BGP-3-NOTIFICATION: sent to neighbor 198.51.100.2 4/0 (hold time expired) 0 bytes
這種情況很常見,而且在保持計時器到期之前,路由器沒有收到/處理keepalive消息或更新該消息。裝置傳送通知消息並關閉會話。這一問題最明顯的理由是:
您可以通過運行show ip bgp neighbors ip_address 命令檢查協商的MSS。
對具有df集的特定鄰居執行ping測試可以顯示沿路徑的MTU是否有效:
ping 198.51.100.2 size max_seg_size df
如果發現MTU問題,則必須完成配置的準確審查,以確保整個網路的MTU值一致。
%BGP-5-ADJCHANGE: neighbor 198.51.100.2 passive Down AFI/SAFI not supported
%BGP-3-NOTIFICATION: received from neighbor 198.51.100.2 active 2/8 (no supported AFI/SAFI) 3 bytes 000000
地址系列識別符號(AFI)是由多協定BGP(MP-BGP)新增的功能擴展。 它與特定網路協定(例如IPv4、IPv6等)相關。通過後續地址系列識別符號(SAFI)(例如單播和組播)實現額外的粒度。MBGP使用BGP路徑屬性(PA)MP_REACH_NLRI和MP_UNREACH_NLRI實現此分離。這些屬性攜帶在BGP更新消息中,用於攜帶不同地址系列的網路可達性資訊。
該消息為您提供由IANA註冊的AFI/SAFI號碼:
有關BGP和選擇最佳路徑的其他資訊,請參閱BGP最佳路徑選擇演算法。
對於要安裝到路由表中的路由,必須能夠到達下一跳,否則,即使字首位於Loc-RIB BGP表上,它也不會移動到RIB中。作為環路避免規則,在Cisco IOS/Cisco IOS XE上,iBGP不會更改下一跳屬性,因為它在eBGP重寫下一跳並預置AS_PATH時單獨保留AS_PATH。
您可以執行show ip bgp [prefix] 命令來檢查下一跳,因為它提供了下一跳和無法訪問的字。在本例中,這是由R1透過eBGP通告到R2且由R3透過iBGP連線從R2獲知的字首:
R3#show ip bgp 192.0.2.1
BGP routing table entry for 192.0.2.1/32, version 0
Paths: (1 available, no best path)
Not advertised to any peer
Refresh Epoch 1
65536
198.51.100.1 (inaccessible) from 10.0.23.2 (10.2.2.2)
Origin incomplete, metric 0, localpref 100, valid, internal
rx pathid: 0, tx pathid: 0
Updated on Jul 1 2022 13:44:19 CST
在輸出中,下一跳是R1的傳出介面,而R3不知道該介面。要解決此問題,可以通過IGP通告下一跳,靜態路由,或在iBGP對等裝置上運行neighbor ip-address next-hop-self命令修改下一跳IP(直連)。 在圖示示例中,此配置必須在R2上;指向R3的鄰居(neighbor 10.0.23.3 next-hop-self)。
因此,下一個躍點會變更(在clear ip bgp 10.0.23.2 soft後)到直接連線的介面(可連線),且首碼已安裝:
R3#show ip bgp 192.0.2.1
BGP routing table entry for 192.0.2.1/32, version 24
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
65536
10.0.23.2 from 10.0.23.2 (10.2.2.2)
Origin incomplete, metric 0, localpref 100, valid, internal, best
rx pathid: 0, tx pathid: 0x0
Updated on Jul 1 2022 13:46:53 CST
當無法將路由安裝到全域性RIB中時,就會發生這種情況,這會導致RIB故障。常見的原因是,對於管理距離較小的另一種路由協定,相同的字首已經在RIB上,但使用show ip bgp rib-failure命令可以看到RIB失敗的確切原因。
最常見的問題是,在相互重分發場景中,IGP優先於eBGP。將IGP路由重分佈到BGP中時,會視為由BGP在本地生成,預設情況下會收到32,768的權重。預設情況下,從BGP對等體接收的所有字首都分配了本地權重0。因此,如果必須比較相同的字首,則根據BGP最佳路徑選擇過程將權重較高的字首安裝到路由表中,這就是在RIB上安裝IGP路由的原因。
此問題的解決方法是在路由器bgp設定下,為從BGP對等點接收的所有路由設定更高的權重:
neighbor ip-address weight 40000
它是一種對等體,無法跟上傳送方生成更新消息的速率。對等體出現此問題的原因有很多;其中一個對等體的CPU使用率高、流量過剩、鏈路上的流量丟失、頻寬資源等。
BGP使用分配給Cisco IOS進程的記憶體來維護網路字首、最佳路徑、策略和所有相關的配置,以正常運行。通過運行show processes memory sortedcommand可看到整個進 程:
R1#show processes memory sorted
Processor Pool Total: 2121414332 Used: 255911152 Free: 1865503180 reserve P Pool Total: 102404 Used: 88 Free: 102316 lsmpi_io Pool Total: 3149400 Used: 3148568 Free: 832 PID TTY Allocated Freed Holding Getbufs Retbufs Process 0 0 266231616 81418808 160053760 0 0 *Init* 662 0 34427640 51720 34751920 0 0 SBC main process 85 0 9463568 0 8982224 0 0 IOSD ipc task 0 0 34864888 25213216 8513400 8616279 0 *Dead* 504 0 696632 0 738576 0 0 QOS_MODULE_MAIN 518 0 940000 8616 613760 0 0 BGP Router 228 0 856064 345488 510080 0 0 mDNS 82 0 547096 118360 417520 0 0 SAMsgThread 0 0 0 0 395408 0 0 *MallocLite*
處理器池是使用的記憶體;本示例中大約為2.1 GB。接下來,必須檢視「保持」列來確定保持該列大部分的子進程。然後,您需要檢查您擁有的BGP會話、已接收的路由數以及已使用的配置。
減少BGP記憶體佔用的常見步驟:
路由器為BGP運行使用不同的進程。要驗證BGP進程是CPU使用率高的原因,請運行show process cpu sorted 命令。
R3#show processes cpu sorted CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 0% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 163 36 1463 24 0.07% 0.00% 0.00% 0 ADJ background 62 28 132 212 0.07% 0.00% 0.00% 0 Exec 2 39 294 132 0.00% 0.00% 0.00% 0 Load Meter 1 0 4 0 0.00% 0.00% 0.00% 0 Chunk Manager 3 27 1429 18 0.00% 0.00% 0.00% 0 BGP Scheduler 4 0 1 0 0.00% 0.00% 0.00% 0 RO Notify Timers 63 4 61 65 0.00% 0.00% 0.00% 0 BGP I/O 83 924 26 35538 0.00% 0.03% 0.04% 0 BGP Scanner 96 142 11651 12 0.00% 0.00% 0.00% 0 Tunnel BGP 7 0 1 0 0.00% 0.00% 0.00% 0 DiscardQ Backgro
以下是克服由於BGP而導致的CPU使用率較高的常見進程、原因和一般步驟:
| 修訂 | 發佈日期 | 意見 |
|---|---|---|
5.0 |
02-Sep-2026
|
重新認證更新的拼寫/語法,插入水平線以分隔各個部分的可讀性,並修復CCW錯誤。 |
4.0 |
19-Feb-2025
|
重新認證 |
3.0 |
25-Sep-2023
|
更新了IOS XE(刪除短劃線)並新增了商標、SEO和格式。 |
2.0 |
21-Feb-2023
|
重新認證。 |
1.0 |
04-Aug-2022
|
初始版本 |