簡介
本檔案將說明如何排解eBGP(外部邊界閘道通訊協定)的疑難問題,因為作業階段由於LPTS(本機封包傳輸服務)專案不正確而停滯在使用狀態。
作者:思科TAC工程師William Xu。
必要條件
需求
思科建議您瞭解以下主題:
採用元件
本文檔中的資訊基於ASR9000(聚合服務路由器)平台。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您已瞭解任何指令可能造成的影響。
問題
設定eBGP時,如果發生以下情況,作業階段可能會無限期停留在作用中:
- 未配置update-source 命令
- 拓撲發生變化時,流量會採用不同的路徑
出現此問題時,會出現以下症狀:
- 可訪問IP地址
- 兩個BGP對等體都保持停滯在活動狀態
- 封包擷取顯示路由器傳送許多TCP重設
- show tcp trace error 表示BGP會話的此錯誤。
Feb 18 09:32:15.393 tcp/error 0/RSP0/CPU0 t9 Lpts set the drop flag for 179 -> 5368, drop packet (pak 0xb1cf80f3) and send a RST
總之,問題的根本原因是路由和轉發更改不會更新LPTS條目。這意味著拓撲更改後,它們仍保持陳舊狀態。
對BGP做了一些增強。這兩種方案將詳細介紹此問題。
註:iBGP(內部邊界網關協定)通常不會遇到此問題,因為update-source始終使用。
案例1 — 拓撲變更的多躍點EBGP
您可以在ASR9K-1和ASR9K-3之間建立多跳eBGP會話。物理介面上的對等IP地址為172.123.1.1和172.123.2.2。未配置update-source 命令。在當前拓撲中,會話保持活動狀態。這是預期結果,因為兩台路由器都將使用子網172.123.3.0/24中的介面作為輸出介面。
您可以關閉ASR9K-1和ASR9K-3之間的直接鏈路。然後,通過ASR9K-2(多跳鏈路)可以到達對等體地址,因此ping成功。兩端的來源IP位址相符,但BGP作業階段仍處於作用中狀態。
配置BGP鄰居時,將根據CEF(思科快速轉發)表建立LPTS條目。對於ASR9K-1,可通過172.123.3.0/24子網訪問IP地址172.123.2.2。因此,LPTS中的相關條目可用。它允許BGP鄰居使用本地IP地址172.123.3.1連線埠179。由於它嘗試從本地埠26036發起TCP會話,因此您可以看到它的另一個條目。
ASR9K-1:
========
ASR9K-1#show lpts ifib entry brief | inc "BGP"
...
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.1,179 172.123.2.2
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.1,26036 172.123.2.2,179
此輸出在ASR9K-3中相同。
ASR9K-3:
========
ASR9K-3#show lpts ifib entry brief | inc "BGP"
...
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.2,11126 172.123.1.1,179
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.2,179 172.123.1.1
當ASR9K-1和ASR9K-3之間的鏈路斷開時,通過具有新的本地源IP地址的ASR9K-2路徑可以到達對等體。但是拓撲更改不會觸發LPTS更新。埠179的原始條目保留原始本地IP地址。這可以防止路由器允許向新的本地IP地址發出輸入TCP請求。因此,兩端的BGP作業階段仍停滯在作用中狀態。
案例2 - eBGP with Update Source Address Change
您可以在ASR9K-1和ASR9K-3之間部署eBGP會話。IP地址為172.123.3.1和172.123.3.2。根據新計畫,您將IP地址更改為172.123.3.111和172.123.3.222。如果您先配置eBGP,然後在介面上更新IP地址,則EBGP會話會停滯在活動狀態。
原因與場景1相同。配置eBGP會話後,LPTS條目將根據該點的本地出口介面生成。
ASR9K-1:
========
ASR9K-1#show lpts ifib entry brief | inc "BGP"
...
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.1,179 172.123.3.222
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.1,24067 172.123.3.222,179
ASR9K-3:
========
ASR9K-3#show lpts ifib entry brief | inc "BGP"
...
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.2,45091 172.123.3.111,179
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.2,179 172.123.3.111
儘管本地IP地址後來發生了更改,但LPTS條目並未更新。TCP要求遭封鎖,作業階段會永久停滯在作用中狀態。
解決方案
要解決此問題,您需要觸發對LPTS的更新。您可以使用以下選項來解決問題:
- 關閉/不關閉BGP鄰居
- 重新配置BGP鄰居
- 重新啟動進程bgp
- 在兩端配置update-source,可以防止此問題。
XR版本中的增強功能
最近的IOS XR版本中有一些增強功能。
CSCuz51103 - BGP會話停滯在活動狀態
此增強功能自XR 6.1.1版引入。在此版本中,當BGP嘗試重新建立會話時,LPTS會使用新的本地IP地址更新其條目。更新時間取決於兩端的保持時間配置。您仍然可以等待有時看到會話啟動。
即使使用此增強功能,如果您已設定passive 模式,BGP作業階段仍會停滯在主動狀態。原因顯而易見。如果BGP不嘗試重新建立會話,則不會檢查本地IP地址。因此LPTS條目不會更新。
XR 6.2.1版對此情況還有另一個增強功能。
CSCvb15128- BGP會話在路由器配置被動BGP模式時停滯在活動狀態
相關資訊