目錄

簡介

必要條件

需求

採用元件

慣例

背景資訊

使用基本Network語句通告的路由

使用以下步驟進行故障排除

使用帶掩碼的Network語句通告的路由

使用以下步驟進行故障排除

使用aggregate-address命令通告的路由

請使用以下步驟對此問題進行故障排除

無法通告iBGP獲知的路由

使用以下步驟進行故障排除

透過重分發靜態路由通告的路由

相關資訊

簡介

本文檔介紹在邊界網關協定(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：

- 路由表中的子網是10.75.75.0（掩碼255.255.255.0）。

- 您可以在router bgp命令下配置網路10.0.0.0。

- 已啟用自動摘要。

如果不滿足所有這些條件，BGP不會在BGP表中安裝條目，除非IP路由表中存在完全匹配。

使用以下步驟進行故障排除

在R101上啟用了自動總結後，路由器無法向R102通告有類網路172.16.0.0/16。

路由器無法通告

1. 檢查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#

2. 檢查配置是否運行。圖中所示的示例說明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

[...]

3. 檢查路由表中是否有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#

4. 由於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

5. 一旦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#

6. 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#

7. 確認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

1. 檢查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

1. 檢查該路由是否在BGP路由表中。

R101#show ip bgp | include 172.16.10.0

R101#

BGP表中不存在網路172.16.10.0/24。

2. 檢查IP路由表中是否有確切的路由。圖中所示的輸出證實了路由表中沒有確切的路由。

R101#show ip route 172.16.10.0 255.255.255.0

% Network not in table

R101#

3. 決定您要發起的路由。然後修復IGP或配置靜態路由。

R101(config)#ip route 172.16.10.0 255.255.255.0 null0 200

4. 檢查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

5. 驗證這些路由在BGP表中。

R101#show ip bgp | include 172.16.10.0

*> 172.16.10.0/24   0.0.0.0                  0         32768 i

6. 要使更改在BGP中生效並開始向R102通告網路172.16.10.0/24，您必須清除BGP鄰居，或者對對等體執行軟重置。此範例對對等體10.10.10.2使用傳出軟重設。

R101#clear ip bgp 10.10.10.2 soft out

7. 確認路由已通告給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

1. 確認R101未向R102通告192.168.32.0/22。

R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 192.168.32.0

R101#

2. 檢查配置是否運行。

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表中存在元件路由。

1. 在本示例中，已使用network命令將元件路由192.168.33.0安裝到BGP表中。

R101(config)#router bgp 1

R101(config-router)#network 192.168.33.0

2. 檢查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表示由於僅彙總引數而抑制元件路由。

3. 確認彙總已通告給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。

1. 首先檢查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路徑選擇標準沒有選擇此網路作為最佳路由的原因。

1. 檢查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秒，再進行下一個驗證步驟。

1. 驗證是否已安裝路由。

顯示的輸出確認字首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路由。

相關資訊

- 為什麼BGP鄰居在Idle、Connect和Active狀態之間切換？

- 「#%BGP-3-INSUFCHUNKS： Insufficient chunk pools for aspath」錯誤消息表示什麼？

- BGP：常見問題

- 排除常見BGP問題

- Routing-BGP支援頁面

- 支援和下載