目錄

簡介

硬體/軟體平台選擇

擴展和效能注意事項

BGP對等體的數量

地址系列

更新群組數目

RPL（路由策略）的複雜性

更新頻率

TCP MSS和介面/路徑MTU

雙RP路由器上的NSR

慢速對等體

Nexthop觸發延遲

驗證的多維BGP RR縮放的示例

設計注意事項

監督BGP重要績效指標(KPI)

監控資料路徑轉發器

監控XRv9000資料平面代理(DPA)

監控ASR9000網路處理器(NP)

監控抽象

監控SPP

監控NetIO

監控XIPC隊列

監控BGP輸入和輸出隊列

監控BGP訊息速率

監控CPU使用率

監控TCP統計資訊

監控記憶體使用率

監控BGP進程效能

監控BGP收斂

簡介

本文檔介紹邊界網關協定(BGP)路由反射器(RR)可實現的最大擴展的主要貢獻者以及有關BGP RR效能監控的指導。

硬體/軟體平台選擇

大規模BGP RR通常不在承載Internet服務提供商提供的服務的資料包的轉發路徑中。因此，對於主要在資料路徑中轉發資料包的BGP RR和路由器，其硬體要求是不同的。標準路由器採用功能強大的資料路徑轉發元素和相對溫和的控制路徑元素構建。BGP RR在控制計畫中執行其所有任務。

在思科IOS® XR系列產品中，您可以為BGP RR角色選擇3種型別的硬體/軟體平台：

實體思科IOS XR路由器

Cisco IOS XRv 9000裝置

Cisco IOS XRv 9000路由器（也稱為XRv9k）

- 中度控制平面容量（通常配置給RP XR VM的2到6個CPU核心）

- 未使用的資料路徑容量

- 高控制平面容量（在基於Cisco UCS M5的裝置上，36個CPU核心專用於RP XR VM）

- 在資料路徑和控制路徑容量之間相等的分割。

- XRv9k影像在準系統上執行，達到最佳效能

- 可客製化的控制平面容量

- 使用BGP RR映像時，資料路徑和控制路徑功率之間的等分隔。

- 虛擬化的另一層會影響效能。

撰寫本文時，XRv9k裝置是BGP RR的最佳平台選擇，因為它可提供最高控制平面容量和最高效能。

擴展和效能注意事項

支援的資料平面實體比例相對容易表示，因為資料路徑元素的效能很少取決於比例。例如，無論活動TCAM條目的數量有多少，TCAM查詢都會佔用相同的時間。

支援的控制平面實體的擴展通常更加複雜，因為擴展和效能是相互關聯的。請考慮包含1M路由的BGP RR。BGP進程維護此BGP表必須執行的工作取決於：

1. 有多少個BGP對等體處於活動狀態？

2. 哪些地址系列處於活動狀態？

3. 它們如何分佈到更新組中？

4. RPL（路由策略）的複雜性

5. 更新頻率（傳入更新以及傳出更新-通告間隔）。

6. TCP MSS、介面/路徑MTU -調整此值有助於提高效能

7. 如果雙RP，則啟用NSR

8. 任何已知的慢速對等體，不在單獨的更新組中

9. Nexthop觸發延遲值

BGP對等體的數量

BGP對等體的數量通常是第一個，但不幸的是，在考慮BGP規模時，它通常是唯一想到的東西。雖然不能在不提及BGP對等體數量的情況下表示支援的BGP規模，但它不是最重要的因素。許多其他方面也同樣重要。

地址系列

地址系列(AF)型別是BGP效能考慮因素中的一個重要因素，因為在典型部署中，它影響單個路由的大小。 可封裝到單個TCP網段中的IPv4路由數顯著高於VPNv4路由數。因此，對於BGP表更改的相同規模，IPv4 BGP RR比VPNv4 BGP RR需要做的工作更少。顯然，在每條路由都增加了大量社群的部署中，AF之間的差異變得不太顯著，但每條路由的規模更大，需要予以考慮。

更新群組數目

BGP進程為同一更新組的所有成員準備單個更新。然後TCP進程將更新資料拆分為面向更新組每個成員的所需數量的TCP資料段（取決於TCP MSS）。您可以使用show bgp update-group命令檢視活動更新組及其成員。透過為要屬於同一更新組的對等體組建立公共出站策略，您可以影響更新組成員的對等體數量和數量。BGP RR向大量BGP RR客戶端傳送的單個更新可能會觸發TCP ACK的突發，這些突發可能會在思科IOS XR路由器的本地資料包傳輸服務(LPTS)元件中丟棄。

RPL（路由策略）的複雜性

BGP使用的路由策略的複雜性會影響BGP進程的效能。必須根據配置的路由策略評估每個接收或傳送的路由。一個非常長的策略要求在此操作上花費許多CPU週期。包含正規表示式的路由策略在處理時特別繁重。與不使用正規表示式的等效路由策略相比，正規表示式有助於以較少的行數表示路由策略，但在處理時需要更多的CPU週期。

更新頻率

更新頻率對BGP規模有重要影響。更新數量通常很難預測。您可以使用「advertisement-interval」命令來影響更新的頻率，該命令可設定傳送BGP)路由更新之間的最小間隔。指向iBGP對等體的預設值為0秒，而指向eBGP對等體的預設值為30秒。

TCP MSS和介面/路徑MTU

在高規模、高更新頻率環境中，將更新拆分為許多TCP資料段會對TCP進程資源造成很大壓力。較大的路徑MTU和較大的TCP MSS對BGP和TCP效能有更好的效果。

雙RP路由器上的NSR

NSR是一個非常好的冗餘功能，但它確實會影響BGP效能。在Cisco IOS XR路由器上，兩個RP會同時直接從入口板卡上的NPU接收每個BGP更新，這意味著活動RP無需花費時間將更新複製到備用RP。但是，活動RP生成的每個更新都必須傳送到備用RP，並從那裡傳送到BGP對等體。這允許備用RP在序列號和確認號上始終保持最新，但會對整體BGP效能產生影響。因此，我們建議BGP RR是單RP路由器。

慢速對等體

慢速對等體可能會降低更新組所有成員的更新速度，因為BGP進程必須將該更新保留在其記憶體中，直到所有對等體都確認該更新。如果您知道某些對等體速度要慢得多（例如，網路中的舊版路由器中的路由器），請將其提前隔離到更新組中。預設情況下，Cisco IOS XR透過syslog消息報告慢速對等體。您可以建立靜態慢速對等體（永不與他人共用更新組），或在全局或每鄰居配置模式下使用BGPslow-peer配置命令微調動態慢速對等體行為。有關此內容的進一步資訊，請參閱Cisco xrdocs.io門戶上的排除由於IOS-XR上的路由策略不佳而導致的BGP收斂緩慢故障。

Nexthop觸發延遲

如果多個BGP下一跳在短時間間隔內發生更改，並且在具有大量路由的地址系列(AF)中配置了0的嚴重nexthop觸發延遲值，則必須在每個下一跳更改事件上執行AF的完整漫遊。AF的重複遍歷會增加關鍵下一跳觸發延遲值較低的地址系列中的收斂時間。透過運行「show bgp all nexthops」命令，您可以檢視下一跳觸發器的延遲值。

驗證的多維BGP RR縮放的示例

多維縮放結果，特別是控制平面特徵的結果，高度依賴於特定的測試環境。如果改變某些引數，測試結果可能會有顯著差異。

參數

價值

價值

平台

XRv9k裝置（基於UCS M5）

ASR9902

IOS XR版本

7.5.2 +思科漏洞ID CSCwf09600的UMBRELLA SMU 。

（Cisco IOS XR 7.9.2版及更高版本中整合了此umbrella SMU的元件）

7.11.2

同儕節點

VPNv4 eBGP：2500

VPNv4 iBGP：1700

VPNv4 iBGP：2000

BGP路由

每會話：200

合計：400k

每個路由的路徑：1

每會話：750

VPNv4:1.36公尺

VPNv6:150k

IPv4:950k

IPv6:200k

總計：約260萬

每個路由的路徑：1

IGP路由

1萬(ISIS)

1萬(ISIS)

BGP更新組

1

1

BGP計時器

預設

預設

LPTS BGP已知監察器速率

50,000

25,000

tcp num-thread configuration

16 16

16 16

BGP傳送緩衝區大小

預設

預設

重要績效指標(KPI)彙總

- 具有最高輸入和輸出資料包速率的測試案例：

- 輸入：49.4kpps

- 輸出：95kpps

- ==> LPTS丟棄（50kpps處的監察器）

- ==> NetIO客戶端中沒有丟包現象

- ==>最大XIPC隊列大小(BGP)：1362

- ==>最大XIPC隊列大小(TCP)：1248

- 輸入封包速率最高的測試案例：

- 輸入： 16030 pkts/s

- 輸出： 31 pkts/s

- ==> LPTS和NetIO客戶端無丟包現象

- ==>最大XIPC隊列大小(BGP)：378

- ==>最大XIPC隊列大小(TCP)：1021

- 輸出封包率最高的測試案例：

- 輸入： 12172 pkts/s

- 輸出： 23465 pkts/s

- ==> LPTS和NetIO客戶端無丟包現象

- ==>最大XIPC隊列大小(BGP)：109

- ==>最大XIPC隊列大小(TCP)：1518

設計注意事項

在網路中放置BGP RR有兩種方法：

1. 集中式/平面BGP RR設計。

2. 分散式/分層BGP RR設計。

在集中式/扁平化設計中，網路中的所有BGP RR客戶端都與包含完全相同資訊的一組（通常是一對）BGP RR裝置建立BGP對等。此方法易於實施，在中小型網路中效果良好。BGP表中的任何更改都會快速傳播到所有BGP RR客戶端。隨著BGP RR客戶端數量的成長，當BGP RR裝置上的TCP連線數量成長到其效能受到影響的程度時，設計可以達到擴展限制。

在分散式/分層設計中，網路被劃分為多個區域。區域內所有路由器都與包含完全相同資訊的一組（通常是一對）BGP RR裝置建立BGP對等。這些BGP RR裝置充當另一組（通常是一對）BGP RR裝置的BGP RR客戶端。此設計方法允許輕鬆進行網路擴展，同時保持每個BGP RR上的TCP連線數處於特定限制下。

另一個設計注意事項是定製BGP更新的接收方範圍。根據BGP RR客戶端之間的VRF分佈，值得考慮RT約束路由分佈。如果所有BGP RR客戶端在同一VRF中具有介面，則RT約束路由分配不會帶來很多好處。但是，如果所有BGP RR客戶端之間稀疏分配VRF，則使用RT約束路由分配可顯著降低ƒBGP RR上bgp進程的負載。

監督BGP重要績效指標(KPI)

監控BGP RR的關鍵績效指標(KPI)對於確保網路正常運行非常重要。

網路拓撲的顯著變化（例如，主要DWDM鏈路抖動）可能會觸發路由更新，從而向BGP RR和/或從BGP RR生成過多的流量。到達BGP RR的重要流量通常具有：

1. 來自BGP對等體的更新。

2. BGP對等體生成的TCP ACK，以響應BGP RR傳送的更新，反之亦然

本文此節說明在典型BGP RR上需要監控的KPI，以及如何判斷兩個重要BGP流量型別中的哪一個導致了高控制平面流量速率。

路由器內BGP資料包的路徑可描述如下：

傳送

乙太網控制器-（資料包）->資料路徑轉發器-（資料包）-> LPTS -（資料包）-> SPP -（資料包） -> NetIO -（資料包）-> TCP -（消息）-> BGP

注入

BGP -（消息）-> TCP -（資料包）-> NetIO -（資料包）-> SPP -（資料包） ->資料路徑轉發器-（資料包）->乙太網控制器

KPI可分為：

基本版：

1. 資料路徑轉發器

2. LPTS（硬體傳送監察器設定、接受計數器和丟棄計數器）

3. SPP

4. NetIO

5. IPC隊列(NetIO <==> TCP <==> BGP)

6. BGP InQ/OutQ大小

可選：

1. CPU使用率

2. 記憶體利用率

3. TCP統計資訊

4. BGP進程效能

5. BGP融合

監控資料路徑轉發器

在XRv9000上，資料路徑轉發器是資料平面代理(DPA)，而在ASR9000平台上，它是網路處理器(NP)。

監控XRv9000資料平面代理(DPA)

用於檢視DPA的負載和統計資訊的有用命令是：

show controllers dpa statistics global

此命令顯示所有非零計數器，透過這些計數器，您可以深入瞭解從網路介面傳送到RP CPU、從RP CPU向網路介面注入的資料包的型別和數量以及丟棄的資料包的數量：

RP/0/RP0/CPU0:xrv9k-01#show controllers dpa statistics global Index Debug Count ---------------------------------------------------------------------------- 350 TBPG L2 mailbox events 1 Index Punt Count ---------------------------------------------------------------------------- 1500 CDP 46790 1503 ARP 212 1611 IFIB 595305 1776 LLDP 94037 2001 IPv4 incomplete Tx adjacency 2 Index Inject Count ---------------------------------------------------------------------------- 744 CLNS multicast from fabric pre-route 321250 749 IPv4 from fabric 273993 765 Inject to fabric 595245 766 Inject to port 141033 Index Drop Count ---------------------------------------------------------------------------- 416 Egress UIDB in down state 1 474 IPv4 egress UIDB down 2 673 Pre-route PIT lookup missed 2

監控ASR9000網路處理器(NP)

用於檢視系統中每個NP的負載和統計資訊的有用命令包括：

show controllers np load all

show controllers np counters all

ASR9000上的NP具有一組豐富的計數器，可顯示已處理和丟棄的資料包的數量、速率和型別。

RP/0/RSP0/CPU0:ASR9k-B#show controllers np load all Node: 0/0/CPU0: ---------------------------------------------------------------- Load Packet Rate NP0: 0% utilization 937 pps NP1: 0% utilization 538 pps RP/0/RSP0/CPU0:ASR9k-B#

RP/0/RSP0/CPU0:ASR9k-B#show controllers np counters all Node: 0/0/CPU0: ---------------------------------------------------------------- Show global stats counters for NP0, revision v4 Last clearing of counters for this NP: NEVER Read 92 non-zero NP counters: Offset Counter FrameValue Rate (pps) ------------------------------------------------------------------------------------- 16 MDF_TX_LC_CPU 25475368 10 17 MDF_TX_WIRE 681957877 267 21 MDF_TX_FABRIC 683500690 267 33 PARSE_FAB_RECEIVE_CNT 681767730 267 37 PARSE_INTR_RECEIVE_CNT 1323024637 517 41 PARSE_INJ_RECEIVE_CNT 13949634 5 45 PARSE_ENET_RECEIVE_CNT 677655725 265 49 PARSE_TM_LOOP_RECEIVE_CNT 49331192 19 53 PARSE_TOP_LOOP_RECEIVE_CNT 1520846 1 109 RSV_DROP_EGR_UIDB_NO_MATCH 10 0 146 RSV_DROP_IPV4_RXADJ_DROP 1 0 164 RSV_DROP_ING_LAG_NO_MATCH 3 0 241 RSV_DROP_MPLS_LEAF_NO_MATCH 1312 0 <. . .>

監控抽象

由於標準BGP RR不在轉發路徑中，因此網路介面上收到的所有資料包都會被傳送到控制平面。BGP RR上的資料路徑元素在將資料包傳送到控制平面之前執行少量簡單操作。由於資料路徑元素不太可能成為擁塞點，因此線卡上唯一需要監控的元素是LPTS統計資訊。

請注意，對於XRv9k，硬體統計資訊對映到vPP

指令:

show lpts pifib hardware police location <location> | inc "Node|flow_type|BGP"

範例：

RP/0/RP0/CPU0:xrv9k-01#sh lpts pifib hardware police location 0/0/CPU0 | i "Node|flow_type|BGP" Node 0/0/CPU0: flow_type priority sw_police_id hw_policer_addr Cur. Rate burst static_avgrate avgrate_type AggrAccepts AggrDrops TOS Value BGP-known high 6 220 50000 1250 2500 Global 16401392 0 01234567 BGP-cfg-peer medium 7 221 4000 1000 2000 Global 355976 1563 01234567 BGP-default low 8 222 3000 750 1500 Global 5212380 0 01234567 RP/0/RP0/CPU0:xrv9k-01#

要查詢的內容：

如果觀察到與BGP已知流型別相比，AggDrops顯著跳躍，請開始尋找已觸發如此大規模控制平面變化的網路拓撲變化。

遙測資料路徑：

Cisco-IOS-XR-lpts-pre-ifib-oper:lpts-pifib

注意：可以清除LPTS統計資訊計數器。您的監控系統必須考慮到這種可能性。

監控SPP

SPP是路由處理器或線卡CPU上的第一個實體，它接收透過內部交換矩陣從NP或DPA傳送的資料包，也是軟體資料包處理的最後一個點，在此點之後再將其移交給交換矩陣以注入到NP或DPA中。

SPP監控的相關命令：

show spp node-counters

show spp client

show spp node-counters  命令可顯示傳送的/注入的資料包的速率，易於閱讀和理解。對於BGP會話，相關計數器位於活動RP的client/punt  和client/inject  下。

show spp client  命令的輸出更為豐富，可以更詳細地瞭解排入客戶端隊列/丟棄的資料包的數量，以及高水位線。

RP/0/RP0/CPU0:xrv9k-01#show spp node-counters 0/RP0/CPU0: socket/rx Punted packets: 595305 Punt bulk reads: 6 Punt non-bulk reads: 595293 Management packets: 74200158 Management bulk reads: 1775930 Management non-bulk reads: 70031734 ------------------------------- socket/tx Injected packets: 595245 Management packets: 139939168 ------------------------------- xrv9k/classify Forwarded to SPP clients: 74795463 ------------------------------- client/inject Injected from client: 140534413 Non-bulk injects: 140534413 ------------------------------- client/punt punted to client: 74795371 no client found - send to defa: 92 ------------------------------- 0/0/CPU0: <. . .>

RP/0/RP0/CPU0:xrv9k-01#show spp client Sat Apr 20 17:11:40.725 UTC 0/RP0/CPU0: Clients ======= <. . .> netio, JID 254 (pid 4591) ---------------------------------------------------------- Reconnect Pending: F, Exited: F, Keep Queues: F, Pakman Client: T Quota Current: 0, Limit: 16384, Drops 0 Queues: Key Cur Max Enqueues High Watermark (Timestamp) Drops 0xffffffff 0 10 0 0 (22:13:52.195 Feb 21 24 UTC) 0 0x03000006 0 2048 0 0 (22:13:52.196 Feb 21 24 UTC) 0 0x03000007 0 3072 414881 1 (23:03:30.721 Feb 21 24 UTC) 0 0x03000008 0 1024 5 1 (13:41:28.389 Mar 13 24 UTC) 0 0x03000009 0 2048 180411 1 (23:03:31.565 Feb 21 24 UTC) 0

監控NetIO

雖然LPTS監察器只顯示相應監察器接受或丟棄的資料包計數，但在NetIO級別，我們可以看到傳送到RP CPU的資料包速率。因為在典型的BGP RR上，大多數接收的封包是BGP封包，所以整體NetIO速率非常接近接收BGP封包的速率。

Command:

show netio rates

範例：

RP/0/RP0/CPU0:xrv9k-01#show netio rates Netio packet rate for node 0/RP0/CPU0 ----------------------------------- Current rate (updated 0 seconds ago): Input: 7845 pkts/s Output: 10570 pkts/s Driver Output: 10598 pkts/s 1 minute rate (updated 0 seconds ago): Input: 7825 pkts/s Output: 10542 pkts/s Driver Output: 10569 pkts/s 5 minute rate (updated 0 seconds ago): Input: 7997 pkts/s Output: 10677 pkts/s Driver Output: 10704 pkts/s RP/0/RP0/CPU0:xrv9k-01#

要查詢的內容：

- 如果觀察到NetIO速率顯著提高，請開始尋找觸發了如此大規模控制平面變化的網路拓撲變化。

遙測資料路徑：

- 不適用，因為遙測必須流式傳輸計數器值，而不是速率。BGP已知LPTS監察器接受計數器可用於遙測收集器，以估計從已知對等體接收的BGP資料包的平均速率。

監控XIPC隊列

在傳送路徑上，NetIO從LPTS接收到的封包會傳遞到TCP和BGP。監控這些隊列很重要：

1. TCP高優先順序隊列，NetIO透過該隊列向TCP傳輸資料包

2. BGP控制隊列

3. BGP資料隊列

在插入路徑上，資料包由TCP建立並傳遞到NetIO。監控這些隊列很重要：

1. OutputL XIPC隊列

命令：

show netio clients show processes bgp | i "Job Id" show xipcq jid <bgp_job_id> show xipcq jid <bgp_job_id> queue-id <n>

範例：

從NetIO到TCP，從NetIO的角度來看：

RP/0/RP0/CPU0:xrv9k-01#show netio clients <. . .> Input Punt XIPC InputQ XIPC PuntQ ClientID Drop/Total Drop/Total Cur/High/Max Cur/High/Max <. . .> tcp L 0/340774 0/0 L 0/10/12800 0/0/0 H 0/44774091 H 0/784/12800

從TCP到NetIO，從NetIO的角度來看：

RP/0/RP0/CPU0:xrv9k-01#show netio clients <. . .> XIPC queues Dropped/Queued Cur/High/Max ------------------------------------------------------------ OutputL 124860/9355257 0/14000/14000

NetIO到TCP，從TCP進程的角度檢視：

RP/0/RP0/CPU0:xrv9k-01#show processes tcp | i "Job Id"

Job Id: 430

RP/0/RP0/CPU0:xrv9k-01#show xipcq jid 430 Mon Apr 17 16:16:11.315 CEST Id Name Size Cur Size Produced Dropped HWM ------ ------------------------------- ------ --------- ----------- ----------- -------- 17 XIPC_xipcq_12_0_9854_6506_i... 60000 0 39010269 0 960 16 XIPC_xipcq_12_0_9854_6506_i... 24000 0 31518436 0 1364 15 XIPC_tcp_124 3200 0 0 0 0 14 XIPC_tcp_125 9600 0 0 0 0 13 XIPC_tcp_psb_0 25600 0 0 0 0 10 XIPC_tcp_iq_9 102400 0 9486010 0 312 12 XIPC_tcp_iq_8 102400 0 8892274 0 280 9 XIPC_tcp_iq_5 102400 0 8291392 0 289 11 XIPC_tcp_iq_7 102400 0 9700123 0 319 8 XIPC_tcp_iq_6 102400 0 9378703 0 332 7 XIPC_tcp_iq_3 102400 0 7221706 0 261 6 XIPC_tcp_iq_4 102400 0 9791070 0 308 4 XIPC_tcp_ctrl_iq_1 4266 0 0 0 0 5 XIPC_tcp_iq_2 102400 0 9699027 0 295 3 XIPC_tcp_ctrl_iq_0 4266 0 209909 0 9 2 XIPC_tcp_i1 12800 0 39460564 0 784 1 XIPC_tcp_i0 12800 0 212540 0 10

TCP到BGP：

RP/0/RP0/CPU0:xrv9k-01#show processes bgp | i "Job Id" Job Id: 1078 RP/0/RP0/CPU0:xrv9k-01#show xipcq jid 1078 Mon Apr 17 16:09:33.046 CEST Id Name Size Cur Size Produced Dropped HWM ------ ------------------------------- ------ --------- ----------- ----------- -------- 2 XIPC_xipcq_12_0_9854_6506_i... 60000 2 35546667 0 15034 1 XIPC_xipcq_12_0_9854_6506_i... 24000 0 1369029 0 50 RP/0/RP0/CPU0:xrv9k-01#

BGP資料隊列：

RP/0/RP0/CPU0:xrv9k-01#show xipcq jid 1078 queue-id 1 XIPC_xipcq_12_0_9854_6506_inst_1_data_toapp: Magic: 12344321 Version: 0 SHM Size: 192392 Owner PID: 9854 Owner JID: 1078 Queue ID: 1 Owner MQ handle: 483 User Context: 0x64 Interrupt Flag: 0 Sent-on-full Flag: 0 Max Queue Size: 24000 Queue Size: 0 Client Queue Size: 24000 High watermark: 50 Last Trigger Sent: Mon Apr 17 16:11:10.009 CEST MQ Send Errors: 0 Priority Queues: Prio Size Drops Total ---------- ---------- ---------- ---------- Unspec 24000 0 0 Normal 24000 0 1396159 Medium 24000 0 0 High 24000 0 0 Crucial 24000 0 0 RP/0/RP0/CPU0:xrv9k-01#

BGP控制隊列：

RP/0/RP0/CPU0:xrv9k-01#show xipcq jid 1078 queue-id 2 XIPC_xipcq_12_0_9854_6506_inst_1_ctrl_toapp: Magic: 12344321 Version: 0 SHM Size: 480392 Owner PID: 9854 Owner JID: 1078 Queue ID: 2 Owner MQ handle: 485 User Context: 0x64 Interrupt Flag: 0 Sent-on-full Flag: 0 Max Queue Size: 60000 Queue Size: 0 Client Queue Size: 60000 High watermark: 15034 Last Trigger Sent: Mon Apr 17 16:12:49.483 CEST MQ Send Errors: 0 Priority Queues: Prio Size Drops Total ---------- ---------- ---------- ---------- Unspec 60000 0 0 Normal 60000 0 37313633 Medium 60000 0 0 High 60000 0 0 Crucial 60000 0 0 RP/0/RP0/CPU0:xrv9k-01#

要查詢的內容：

- 相關隊列中不得丟棄任何資料包

- 在XIPC隊列統計資訊中，高水位線(HWM)不能超過隊列大小的50%

為了更好地跟蹤高水位線值的演化，必須在每次讀取後清除高水位線值。請注意，這不僅會清除HWM計數器，還會清除所有隊列統計資訊。清除XIPC隊列統計資訊的命令格式為：  clear xipcq statistics queue-name <queue_name>

由於隊列名稱通常包括進程ID (PID)，因此進程重新啟動後，隊列名稱會發生變化。

清除相關佇列統計資料的命令範例：

clear xipcq statistics queue-name XIPC_tcp_i0

clear xipcq statistics queue-name XIPC_tcp_i1

clear xipcq statistics queue-name XIPC_xipcq_12_0_9854_6506_inst_1_data_toapp

clear xipcq statistics queue-name XIPC_xipcq_12_0_9854_6506_inst_1_ctrl_toapp

遙測路徑：

- 沒有適用於XIPC的遙測感測器路徑。

監控BGP輸入和輸出隊列

BGP維護每個BGP對等體的輸入和輸出隊列。當TCP將資料傳遞給BGP時，資料會存在於InQ中，但BGP尚未處理這些資料。資料位於OutQ中，而BGP等待TCP將資料拆分為資料包並進行傳輸。BGP InQ/OutQ的瞬時大小很好地指示了BGP進程的忙碌程度。

指令:

show bgp <AFI> <SAFI> summary

範例：

RP/0/RP0/CPU0:xrv9k-01#show bgp all all summary Address Family: VPNv4 Unicast ----------------------------- BGP router identifier 192.168.0.1, local AS number 65000 BGP generic scan interval 60 secs BGP table state: Active Table ID: 0x0 BGP main routing table version 2208096 BGP scan interval 60 secs BGP is operating in STANDALONE mode. Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer Speaker 2208096 2208096 2208096 2208096 2208096 2208096 Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd 10.0.0.2 0 65000 180 601022 2208096 0 0 02:56:18 100 10.0.0.3 0 65000 180 601022 2208096 0 0 02:56:18 100 10.0.0.4 0 65000 180 601022 2208096 0 0 02:56:21 100 10.0.0.5 0 65000 180 601022 2208096 0 0 02:56:21 100 10.0.0.6 0 65000 180 601022 2208096 0 0 02:56:18 100

要查詢的內容：

- 當網路穩定時，InQ/OutQ的大小必須為零。在交換更新時，它會快速變更。

- InQ/OutQ大小不能隨時間單調增加。

遙測路徑：

- Cisco-IOS-XR-ipv4-bgp-oper：bgp

監控BGP訊息速率

如果網路拓撲不穩定，某些BGP鄰居可能會持續傳送更新或撤消。然後，BGP RR必須將此路由表更改數千次複製到其所有RR客戶端。因此，監控從鄰居處接收的消息速率以跟蹤不穩定源非常重要。

指令:

show bgp <AFI> <SAFI> summary

範例：

RP/0/RP0/CPU0:xrv9k-01#show bgp all all summary Address Family: VPNv4 Unicast ----------------------------- BGP router identifier 192.168.0.1, local AS number 65000 BGP generic scan interval 60 secs BGP table state: Active Table ID: 0x0 BGP main routing table version 2208096 BGP scan interval 60 secs BGP is operating in STANDALONE mode. Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer Speaker 2208096 2208096 2208096 2208096 2208096 2208096 Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd 10.0.0.2 0 65000 180 601022 2208096 0 0 02:56:18 100 10.0.0.3 0 65000 180 601022 2208096 0 0 02:56:18 100 10.0.0.4 0 65000 180 601022 2208096 0 0 02:56:21 100 10.0.0.5 0 65000 180 601022 2208096 0 0 02:56:21 100 10.0.0.6 0 65000 180 601022 2208096 0 0 02:56:18 100

RR客戶端隊列的MsgSent量大致相同，但某些鄰居的MsgRcvd數可能高於其他鄰居。您必須擷取此命令的多個快照才能評估訊息速率。

一旦您辨識了有問題的對等體，您便可以透過 show bgp neighbor <neighbor> detail  和 show bgp neighbor <neighbor> performance-statistics  或show bgp recent-prefixes  等其他命令來嘗試瞭解哪些字首正在抖動，以及它們是否始終是同一個字首或不同字首。

注意： MsgRcvd和MsgSent計數器為基於鄰居的計數器，不是基於每個地址系列的計數器。因此，當運行類似 show bgp all all summary 的命令時，您將在各種地址系列的各部分中看到每個鄰居的相同計數器。它們不代表該地址系列的該鄰居接收/傳送/傳送消息的數量，而是跨地址系列的接收和傳送消息的數量。

監控CPU使用率

必須在每台路由器上監控CPU使用率，但在具有大量專用於控制平面的CPU核心的路由器上，某些讀數可能是不直觀的。在具有大量專用於路由處理器(RP)的CPU核心的BGP RR上（對於XRv9k裝置），活動執行緒運行在不同的CPU核心上，而許多CPU核心保持空閒。因此，某些CPU核心可能非常繁忙，但計算出的所有CPU核心的總體CPU使用率仍為中等。

因此，要透過CLI適當監控CPU核心的利用率，請使用 show processes cpu thread  命令。

監控TCP統計資訊

Cisco IOS®維護每個TCP會話的詳細統計資訊。CLI命令show tcp brief  可用於顯示所有現有TCP會話的清單。在此摘要輸出中，您可以為每個TCP作業階段看到以下資訊：

- PCB：唯一的TCP會話識別符號。

- VRF-ID：存在會話的VRF的ID。

- 要檢視相應的VRF名稱，請運行此命令：

- show cef vrf all summary | utility egrep "^VRF:|Vrfid" | utility egrep -B1 <VRF-ID>

- Recv-Q：接收Q的瞬時大小。接收隊列保留從NetIO接收的資料包。tcp進程從資料包中提取資料並將其傳送到對應的應用程式。

- Send-Q：傳送Q的瞬時大小。傳送隊列儲存從應用程式接收的資料。tcp進程將資料分割為TCP資料段（由協商的最大資料段大小- TCP MSS指示），將每個資料段封裝為對應地址族（IPv4或IPv6）的第3層報頭，並將資料包傳送到NetIO。

- 本地地址：與TCP套接字關聯的本地IPv4或IPv6地址。處於LISTEN狀態的TCP會話通常繫結到「any」IP地址，在IPv4或IPv6中此地址分別表示為「0.0.0.0」或「：」。

- 外部地址：與TCP套接字關聯的遠端IPv4或IPv6地址。處於LISTEN狀態的TCP會話通常繫結到「any」IP地址，在IPv4或IPv6中此地址分別表示為「0.0.0.0」或「：」。

- 狀態：TCP會話狀態。可能的TCP會話狀態包括：LISTEN、SYNSENT、SYNRCVD、ESTAB、LASTACK、CLOSING、CLOSEWAIT、FINWAIT1、FINWAIT2、TIMEWAIT、CLOSED。

由於已知BGP埠號是179，因此您可以將顯示的TCP會話限制為與BGP應用程式相關聯的TCP會話。

範例：

RP/0/RSP0/CPU0:ASR9k-B#show tcp brief | include "PCB|:179 " PCB VRF-ID Recv-Q Send-Q Local Address Foreign Address State 0x00007ff7d403bde0 0x60000000 0 0 :::179 :::0 LISTEN 0x00007ff7d403b020 0x60000002 0 0 :::179 :::0 LISTEN 0x00007ff7d403d130 0x60000000 0 0 192.168.0.4:50144 192.168.0.5:179 ESTAB 0x00007ff7a4025650 0x60000000 0 0 0.0.0.0:179 0.0.0.0:0 LISTEN 0x00007ff7a4024a50 0x60000002 0 0 0.0.0.0:179 0.0.0.0:0 LISTEN

您可以使用顯示的PCB值來獲取特定TCP會話的統計資訊。用於深入瞭解TCP進程統計資訊的CLI命令：

全域：

show tcp statistics clients location <active_RP>

show tcp statistics summary location <active_RP>

每個PCB：

show tcp brief | i ":179"

show tcp detail pcb <pcb> location 0/RP0/CPU0

show tcp statistics pcb <pcb> location <active_RP>

全局TCP統計命令顯示TCP會話的整體運行狀況。除了資料封包統計資料(in/out)之外，您還可以看到例如是否有包含檢查值錯誤之封包、格式錯誤之封包、由於驗證錯誤而捨棄之封包、無序封包、包含時段後資料之封包（可指示TCP對等點的行為）。

在per-PCB命令中，您可以看到TCP會話的重要引數，如MSS、最大往返時間等。

show tcp detail pcb命令輸出中的相關計數器包括：

- Retrans Timer Starts：指示重新傳輸計時器啟動的次數。

- Retrans Timer Wakeups：指示重傳計時器超時多少次，從而觸發TCP資料段的重傳。

- 目前的傳送佇列大小(位元組)：對等點的未確認位元組。

- 目前的接收佇列大小(位元組/封包)：應用程式(BGP)尚未讀取的位元組/封包。

- 錯誤排序的位元組數：由於TCP接收窗口中的孔而在儲存隊列中排隊的位元組數。

RP/0/RSP0/CPU0:ASR9k-B#show tcp detail pcb 0x4a4400e4 ============================================================== Connection state is ESTAB, I/O status: 0, socket status: 0 Established at Sat Apr 20 18:26:26 2024 PCB 0x4a4400e4, SO 0x4a42c0ac, TCPCB 0x4a43b708, vrfid 0x60000000, Pak Prio: Normal, TOS: 64, TTL: 255, Hash index: 402 Local host: 10.10.10.229, Local port: 179 (Local App PID: 856311) Foreign host: 10.10.10.254, Foreign port: 46980 (Local App PID/instance/SPL_APP_ID: 856311/0/0) Current send queue size in bytes: 0 (max 16384) Current receive queue size in bytes: 0 (max 65535) mis-ordered: 0 bytes Current receive queue size in packets: 0 (max 60) Timer Starts Wakeups Next(msec) Retrans 2795 0 0 SendWnd 1341 0 0 TimeWait 0 0 0 AckHold 274 2 0 KeepAlive 333 1 299983 PmtuAger 0 0 0 GiveUp 0 0 0 Throttle 0 0 0 FirstSyn 0 0 0 iss: 2030796738 snduna: 2034498828 sndnxt: 2034498828 sndmax: 2034498828 sndwnd: 3291 sndcwnd: 4200 irs: 285455091 rcvnxt: 285455710 rcvwnd: 64917 rcvadv: 285520627

SRTT: 162 ms, RTTO: 415 ms, RTV: 253 ms, KRTT: 0 ms

minRTT: 0 ms, maxRTT: 247 ms ACK hold time: 200 ms, Keepalive time: 300 sec, SYN waittime: 30 sec Giveup time: 0 ms, Retransmission retries: 0, Retransmit forever: FALSE Connect retries remaining: 0, connect retry interval: 0 secs <...> RP/0/RSP0/CPU0:ASR9k-B#

監控記憶體使用率

BGP路由表儲存在BGP進程堆記憶體中。路由表儲存在RIB進程堆記憶體中。

用於堆記憶體監視的有用命令：

show memory summary

show memory summary detail

show memory-top-consumers

show memory heap summary all

遙測感測器路徑：

Cisco-IOS-XR-nto-misc-oper:memory-summary/nodes/node/detail

FIB將轉發條目儲存在共用記憶體空間中。

用於共用記憶體監控的有用命令：

show memory summary

show memory summary detail

show shmwin summary

監控BGP進程效能

提供有關BGP進程效能的內部資料的有用命令：

show bgp process performance-statistics

show bgp process performance-statistics detail

監控BGP收斂

另一個有用命令是顯示BGP收斂整體狀態的命令： show bgp convergence

當網路穩定時，您會看到類似以下內容：

RP/0/RP0/CPU0:ASR9k-B#show bgp convergence Mon Dec 18 13:55:47.976 UTC Converged. All received routes in RIB, all neighbors updated. All neighbors have empty write queues. RP/0/RP0/CPU0:ASR9k-B#