簡介
本文檔介紹在邊界網關協定(BGP)路由器不向對等體通告BGP路由時如何排除故障。
必要條件
需求
本文件沒有特定需求。
採用元件
本文件所述內容不限於特定軟體和硬體版本。但是,本文檔中顯示的輸出基於運行Cisco IOS®軟體版本12.2(24)a的Cisco 2500系列路由器。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
慣例
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
背景資訊
本文提供系統化的方法,協助排除邊界閘道通訊協定(BGP)路由器沒有向對等體通告BGP路由的情況。
將字首增加到BGP表並向對等體通告的方法有多種:
-
在路由器BGP下發出基本network命令。此方法用於從自治系統(AS)發起BGP路由。有關詳細資訊,請參閱BGP案例分析1 的network命令部分。
-
Redistribute Internal Gateway Protocol (IGP)或靜態配置。
-
傳播從其他內部BGP (iBGP)或外部BGP (eBGP)對等體獲取的BGP路由。
注意:只會傳播從BGP對等體收到的最佳路徑。有關最佳路徑選擇的詳細資訊,請參閱BGP最佳路徑選擇演算法。
-
發出aggregate-address命令。有關詳細資訊,請參閱瞭解BGP中的路由聚合。
使用基本Network語句通告的路由
使用基本network語句通告路由時,network命令的行為根據auto-summary是啟用還是停用而有所不同。啟用自動彙總時,它會摘要將本機產生的BGP網路(網路x.x.x.x)到其有類邊界(自動彙總預設在BGP中啟用)。如果路由表中存在子網並且滿足這三個條件,則本地路由表中該有類網路的任何子網(元件路由)都會提示BGP將有類網路安裝到BGP表中:
-
已啟用自動摘要
-
路由表中網路的有類network語句
-
該network語句上的有類掩碼
停用自動彙總時,本地引入到BGP表中的路由不會彙總到其有類邊界。
例如,如果滿足以下條件,BGP會在BGP表中引入有類網路10.0.0.0掩碼255.0.0.0:
如果不滿足所有這些條件,BGP不會在BGP表中安裝條目,除非IP路由表中存在完全匹配。
使用以下步驟進行故障排除
在R101上啟用了自動總結後,路由器無法向R102通告有類網路172.16.0.0/16。
路由器無法通告
-
檢查R101是否向R102通告172.16.0.0/16。顯示的輸出證實R101沒有向R102通告172.16.0.0/16。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes
Total number of prefixes 0
R101#
-
檢查配置是否運行。圖中所示的示例說明R101配置了有類network語句。用於此方案的Cisco IOS軟體版本中預設啟用自動彙總。
R101#show running-config | begin bgp
router bgp 1
network 172.16.0.0
neighbor 10.10.10.2 remote-as 2
[...]
-
檢查路由表中是否有network172.16.0.0/16的元件路由(有類路由或子網路由)。
R101#show ip route 172.16.0.0 255.255.0.0 longer-prefixes
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
R101#sh ip route 172.16.0.0 255.255.0.0 longer-prefixes
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
R101#
-
由於R101 IP路由表中沒有元件路由(無類路由或子網路由),因此中的網路172.16.0.0未安裝在BGP表中。要在BGP表中引入 network 命令下配置的字首,至少必須在IP路由表中有組成路由。因此,請確保R101具有通向網路172.16.0.0/16的元件路由。如果路由透過IGP或靜態配置獲知該路由,即可完成此操作。在圖中所示的示例中,靜態路由配置為null 0。
R101(config)#ip route 172.16.10.0 255.255.255.0 null0 200
-
一旦IP路由表包含通往172.16.0.0/16的元件路由,BGP就會在BGP表中安裝有類網路。
R101#show ip route 172.16.0.0 255.255.0.0 longer-prefixes
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 1 subnets
S 172.16.10.0 is directly connected, Null0
要使該更改在BGP中生效並開始向R102通告網路172.16.0.0/16,您必須清除BGP鄰居或執行軟重置以對等體。此範例顯示對等10.10.10.2的傳出軟重設可讓變更生效。
R101#clear ip bgp 10.10.10.2 soft out
R101#
-
show ip bgp命令確認,有類網路172.16.0.0/16已引入BGP。
R101#show ip bgp | include 172.16.0.0
*> 172.16.0.0 0.0.0.0 0 32768 i
R101#
-
確認R101已通告到R102的路由。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 172.16.0.0
*> 172.16.0.0 0.0.0.0 0 32768 i
注意:在停用自動彙總的情況下,BGP會在路由表中存在與路由完全匹配的情況下安裝網路172.16.0.0/16。如果有子網路由,但路由表中沒有與路由(172.16.0.0/16)完全匹配的路由,則BGP不會在BGP表中安裝網路172.16.0.0/16。
使用帶掩碼的Network語句通告的路由
位於主要網路邊界(255.0.0.0、255.255.0.0或255.255.255.0)上的網路不需要包含遮罩。例如,network 172.16.0.0命令足以將字首172.16.0.0/16傳送到BGP表中。但是,不在主網邊界上的網路則必須使用帶掩碼的network語句,如network 172.16.10.0 mask 255.255.255.0。
帶掩碼的network語句需要路由表中的精確路由,才能將其安裝到BGP表中。
使用以下步驟進行故障排除
R101無法向R102通告網路172.16.10.0/24。
無法向R102通告網路172.16.10.0/24
-
檢查R101是否向R102通告172.16.10.0/24字首。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes
R101#
或
此命令可用於檢查是否已通告路由:
R101#show ip bgp 172.16.10.0/24
R101# BGP routing table entry for 172.16.10.0/24, version 24480684
Bestpath Modifiers: deterministic-med
Paths: (4 available, best #3)
Not advertised to any peer
此輸出確認R101未向R102通告192.168.32.0/22。
2. 檢查組態是否執行。
R101#show run | begin bgp
router bgp 1
network 172.16.10.0
注意:需要發起網路172.16.10.0/24。此網路不屬於B類網路(255.255.0.0)的邊界。需要配置掩碼為255.255.255.0的network語句,以使其正常工作。
3. 配置帶掩碼的network語句後,發出show run 命令可顯示類似如下所示的輸出:
R101#show run | begin bgp
router bgp 1
network 172.16.10.0 mask 255.255.255.0
-
檢查該路由是否在BGP路由表中。
R101#show ip bgp | include 172.16.10.0
R101#
BGP表中不存在網路172.16.10.0/24。
-
檢查IP路由表中是否有確切的路由。圖中所示的輸出證實了路由表中沒有確切的路由。
R101#show ip route 172.16.10.0 255.255.255.0
% Network not in table
R101#
-
決定您要發起的路由。然後修復IGP或配置靜態路由。
R101(config)#ip route 172.16.10.0 255.255.255.0 null0 200
-
檢查IP路由表。
R101#show ip route 172.16.10.0 255.255.255.0 longer-prefixes
[..]
172.16.0.0/24 is subnetted, 1 subnets
S 172.16.10.0 is directly connected, Null0
-
驗證這些路由在BGP表中。
R101#show ip bgp | include 172.16.10.0
*> 172.16.10.0/24 0.0.0.0 0 32768 i
-
要使更改在BGP中生效並開始向R102通告網路172.16.10.0/24,您必須清除BGP鄰居,或者對對等體執行軟重置。此範例對對等體10.10.10.2使用傳出軟重設。
R101#clear ip bgp 10.10.10.2 soft out
-
確認路由已通告給R102。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 172.16.10.0
*> 172.16.10.0/24 0.0.0.0 0 32768 i
使用aggregate-address命令通告的路由
BGP允許使用aggregate-address <address> <mask>命令將特定路由匯聚成一條路由。聚合適用於BGP路由表中存在的路由。這與network命令相反,該命令適用於IP路由表中的路由。如果BGP路由表中存在聚合地址的至少一個或多個特定路由,則可以執行聚合。有關BGP匯聚及其相關屬性的詳細資訊,請參閱瞭解BGP中的路由匯聚。
請使用以下步驟對此問題進行故障排除
使用aggregate-address命令通告的路由
在此網路圖中,R101無法向R102通告聚合地址192.168.32.0/22。網路192.168.32.0/22聚合了以下三個C類地址空間:
-
192.168.33.0/24
-
192.168.35.0/24
-
192.168.35.0/24
-
確認R101未向R102通告192.168.32.0/22。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 192.168.32.0
R101#
-
檢查配置是否運行。
router bgp 1
[..]
aggregate-address 192.168.32.0 255.255.252.0 summary-only
neighbor 10.10.10.2 remote-as 2
R101配置為僅向R102通告具有summary-only屬性的聚合地址。
3. 檢查IP路由表。
R101#show ip route 192.168.32.0 255.255.252.0 longer-prefixes
[..]
S 192.168.33.0/24 is directly connected, Null0
IP路由表具有聚合192.168.32.0/22的組成路由;但是,對於要向對等體通告的聚合地址,BGP路由表中必須存在組成路由,而非IP路由表中。IP路由表具有聚合192.168.32.0/22的組成路由;但是,對於要向對等體通告的聚合地址,BGP路由表中必須存在組成路由,而非IP路由表中。
4. 檢查BGP路由表中是否存在元件路由。
R101#show ip bgp 192.168.32.0 255.255.252.0 longer
R101#
輸出確認BGP表沒有元件路由,因此下一個邏輯步驟是確保BGP表中存在元件路由。
-
在本示例中,已使用network命令將元件路由192.168.33.0安裝到BGP表中。
R101(config)#router bgp 1
R101(config-router)#network 192.168.33.0
-
檢查BGP表中是否存在該元件路由。
R101#show ip bgp 192.168.32.0 255.255.252.0 longer-prefixes
BGP table version is 8, local router ID is 10.10.20.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.32.0/22 0.0.0.0 32768 i
s> 192.168.33.0 0.0.0.0 0 32768 i
R101#
s表示由於僅彙總引數而抑制元件路由。
-
確認彙總已通告給R102。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 192.168.32.0/22
*> 192.168.32.0/22 0.0.0.0
無法通告iBGP獲知的路由
如果啟用了同步的BGP路由器不能在其IGP中驗證這些路由,則不會向其他eBGP對等體通告iBGP獲知的路由。IGP具有通往iBGP獲知的路由的路由,路由器會向eBGP對等體通告iBGP路由。否則,路由器會將該路由視為未與IGP同步,並且不會通告它。 要防止BGP在IGP中進行iBGP路由驗證,請在路由器BGP下使用no synchronization 命令停用同步。有關詳細資訊,請參閱BGP案例分析的同步部分。
使用以下步驟進行故障排除
在圖中,R101透過iBGP從R103獲知字首10.130.130.0/24,無法將其通告給eBGP對等體R102。
R101無法通告給eBGP對等體R102。
-
首先檢查R101。
R101#show ip bgp neighbors 10.10.20.2 advertised-routes | include 10.130.130.0
R101#
此輸出確認R101未向R102通告字首10.254.255.255/24。
檢視R101上的BGP表:
R101#show ip bgp 10.130.130.0 255.255.255.0 longer
BGP table version is 4, local router ID is 10.10.20.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* i10.130.130.0/24 10.10.20.3 0 100 0 i
R101#
網路10.130.130.0/24存在於BGP表中。但是,網路10.130.130.0/24沒有最佳路由(>)的狀態代碼。這意味著BGP最佳路徑選擇演算法沒有選擇此字首作為最佳路徑。由於只向BGP對等體通告最佳路徑,因此網路10.130.130.0/24不會通告給R102。接下來,您需要排除BGP路徑選擇標準沒有選擇此網路作為最佳路由的原因。
-
檢查show ip bgp prefix 命令的輸出,更詳細地瞭解為什麼既未選擇該字首作為最佳路由也未在IP路由表中引入該字首。
R101#show ip bgp 10.130.130.0
BGP routing table entry for 10.130.130.0/24, version 4
Paths: (1 available, no best path)
Not advertised to any peer
Local
10.10.20.3 from 10.10.20.3 (10.130.130.3)
Origin IGP, metric 0, localpref 100, valid, internal, not synchronized
輸出顯示字首10.130.130.0/24未同步。
注意:在辨識思科錯誤ID CSCdr90728(BGP路徑未標籤為未同步)之前, show ip bgp prefix 命令不會顯示標籤為未同步的路徑。此問題已在Cisco IOS軟體版本12.1(4)及更高版本中糾正。
2. 檢查BGP配置是否運行。
此輸出顯示已啟用BGP同步。Cisco IOS軟體預設啟用BGP同步。
R101#show ip protocols
Routing Protocol is "bgp 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
IGP synchronization is enabled
Automatic route summarization is disabled
Neighbor(s):
Address FiltIn FiltOut DistIn DistOut Weight RouteMap
10.10.10.2
10.10.20.3
Maximum path: 1
Routing for Networks:
Routing Information Sources:
Gateway Distance Last Update
10.10.20.3 200 01:48:24
Distance: external 20 internal 200 local 200
3. 配置BGP以停用同步。在路由器BGP下發出no synchronization命令。
R101(config)#router bgp 1
R101(config-router)#no synchronization
R101#show ip protocols
Routing Protocol is "bgp 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
IGP synchronization is disabled
Automatic route summarization is disabled
Neighbor(s):
Address FiltIn FiltOut DistIn DistOut Weight RouteMap
10.10.10.2
10.10.20.3
Maximum path: 1
Routing for Networks:
Routing Information Sources:
Gateway Distance Last Update
10.10.20.3 200 01:49:24
Distance: external 20 internal 200 local 200
BGP掃描程式每60秒掃描一次BGP表,並根據BGP路徑選擇標準做出決策。在下次運行期間,會安裝網路10.130.130.0(因為同步被停用)。這意味著引入路由的最長時間為60秒,但也可能更短,具體取決於配置no synchronization 命令的時間及BGP掃描工具的下一個例項出現的時間。因此,最好等待60秒,再進行下一個驗證步驟。
-
驗證是否已安裝路由。
顯示的輸出確認字首10.130.130.0/24是最佳路由;因此,它被安裝到IP路由表中並傳播到對等體10.10.10.2。
R101#show ip bgp 10.130.130.0
BGP routing table entry for 10.254.255.255/24, version 5
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
10.10.10.2
Local
10.10.20.3 from 10.10.20.3 (10.130.130.3)
Origin IGP, metric 0, localpref 100, valid, internal, best
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 10.130.130.0/24
*>i10.130.130.0/24 10.10.20.3 0 100 0 i
透過重分發靜態路由通告的路由
如果路由器連線到兩條鏈路,並且透過BGP和浮動靜態路由獲知路由,則浮動靜態路由會安裝在路由表中。如果靜態路由在BGP路由失敗的情況下重分配,就會發生這種情況。如果BGP路由恢復聯機,則不會更改路由表中的浮動靜態路由以反映BGP路由。
在BGP進程下刪除redistribute static 命令可以解決此問題,避免浮動靜態路由的優先順序高於BGP路由。
相關資訊