目錄

簡介

必要條件

需求

採用元件

慣例

問題

解決方案

背景

案例 1:

範例：

案例 2:

案例 3:

指令疑難排解

範例：

簡介

本檔案介紹對執行IOS的12000系列cisco路由器中不同線卡上可能發生的封包緩衝區耗盡訊息進行偵錯的程式。由於對GSR緩衝區管理缺乏瞭解，因此要更換實際工作正常的硬體，浪費寶貴的時間和資源的情況太普遍了。

必要條件

需求

閱讀器應瞭解Cisco 12000系列路由器架構。

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- Cisco 12000系列網際網路路由器

- 支援Gigabit交換機路由器的Cisco IOS®軟體版本

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路正在作用，請確保您已瞭解任何指令可能造成的影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

問題

GSR或12000系列思科路由器具有真正的分散式架構。這表示每個LC都執行自己的Cisco IOS軟體映像副本，並有智慧自行完成封包轉送決策。每個線卡都有自己的功能

1. 轉發查詢

2. 封包緩衝區管理

3. QOS

4. 流量控制

在GSR中，分組交換期間最重要的操作之一是緩衝區管理，由位於線卡中的各種緩衝區管理ASIC(BMA)完成。以下是一些與GSR緩衝區管理有關的消息，在生產過程中可能會顯示在路由器日誌中。在下一節中，我們將討論導致這些消息出現在路由器日誌中的不同觸發器，採取什麼糾正措施緩解問題。在某些情況下，這還會導致資料包丟失，這可以表現為協定擺動並引起網路影響。

%EE48-3-QM_SANITY_WARNING: ToFab FreeQ buffers depleted

SLOT 1:Sep 16 19:06:40.003 UTC: %EE48-3-QM_SANITY_WARNING: Few free buffers(1) are available in ToFab FreeQ pool# 2

SLOT 8:Sep 16 19:06:45.943 UTC: %EE48-3-QM_SANITY_WARNING: Few free buffers(0) are available in ToFab FreeQ pool# 1

SLOT 0:Sep 16 19:06:46.267 UTC: %EE48-3-QM_SANITY_WARNING: Few free buffers(2) are available in ToFab FreeQ pool# 2

SLOT 8:Sep 16 19:06:47.455 UTC: %EE48-3-QM_SANITY_WARNING: ToFab FreeQ buffers depleted. Recarving the ToFab buffers

SLOT 8:Sep 16 19:06:47.471 UTC: %EE192-3-BM_QUIESCE:

解決方案

背景

要排除QM-SANITY警告錯誤，我們需要瞭解GSR線卡上的資料包流。下圖說明C12k線卡的主塊和資料包流路徑。

Cisco 12000系列Internet路由器上的線卡(LC)具有兩種型別的記憶體：

- 路由或處理器記憶體（動態RAM - DRAM）：此記憶體主要使板載處理器能夠運行Cisco IOS軟體並儲存網路路由表（轉發資訊庫 — FIB、鄰接關係）

- 資料包儲存器（同步動態RAM - SDRAM）：線卡資料包儲存器暫時儲存等待線卡處理器做出交換決策的資料包。

從以上圖可以看出，GSR線卡具有專用分組緩衝器ASIC(Application Specific Integrated Circuit)，在資料流每個方向都有一個專用分組緩衝器ASIC，提供對分組儲存器的訪問。這些ASIC又稱為緩衝器管理ASIC(Buffer Management ASIC)，線上卡上執行分組緩衝和緩衝器隊列管理功能。為了支援高吞吐量/轉發速率，兩個方向的資料包記憶體被分成不同大小的儲存池，用於轉發不同MTU大小的資料包。

由物理層介面模組(PLIM)卡接收的幀經過第2層處理，並被DMA到PLIM卡中的本地儲存器。一旦接收的資料單元完成，PLIM中的ASIC聯絡輸入BMA並請求適當大小的緩衝區。如果緩衝區已授予，則封包會移動到線卡輸入封包記憶體。如果沒有可用的緩衝區，資料包將被丟棄，被忽略的介面計數器將上升。輸入封包處理器對封包進行功能處理，作出轉送決定並將封包移動到與輸出線路卡對應的toFab佇列。交換矩陣介面ASIC(FIA)將資料包分段到思科信元，並將信元傳輸到交換機交換矩陣。然後，輸出線卡上的FIA從交換器網狀架構接收封包，並進入Frfab佇列進行重組，然後到達輸出PLIM，最後通過線路傳送。

FrFab BMA從特定緩衝池中選擇緩衝的決策基於輸入線卡交換引擎做出的決策。由於整個盒子上的所有隊列的大小和順序都相同，因此交換引擎會告訴傳輸LC將資料包放入其進入路由器的相同編號隊列中。

交換封包時，用於移動封包的輸入線路卡上的特定緩衝區池的佇列大小會減少一，直到輸出線路卡中的BMA傳回緩衝區。這裡我們還應注意，完整的緩衝區管理是由緩衝區管理ASIC在硬體中完成的，對於無缺陷操作，BMA必須將緩衝區返回原始池。

GSR封包緩衝區管理可能會遇到壓力或失敗而導致封包遺失的三種情況。  下面是三種方案。

案例 1:

硬體隊列管理失敗。當輸出BMA無法返回資料包緩衝區或將資料包緩衝區返回到錯誤的緩衝區池時，會發生這種情況。如果緩衝區返回到不正確的池，我們會看到一些緩衝池在不斷增長，而一些緩衝池在一段時間內消耗殆盡，最後會以耗盡的緩衝池大小影響資料包。當資料包緩衝區耗盡並超過警告閾值時，我們將開始看到QM-Sanity警告。

使用QM sanity debugs和show controllers tofab queues命令檢查您是否受此情況影響。請參閱故障排除部分，查詢如何啟用QM健全性閾值。

這種情況通常是由有故障的硬體造成的。檢查路由器上的以下輸出並查詢奇偶校驗錯誤或線卡崩潰。修複方法是更換線卡。

show controllers fia

show context all

show log

範例：

從QM健全性調試和show controller tofab隊列中，我們可以看到池2在不斷增大，而池4卻運行得很低。這表示池4正在丟失緩衝區，正在將其返回到池2。

QM正常調試：

SLOT 5:Oct 25 04:41:03.286 UTC: Pool 1: Carve Size 102001: Current Size 73078

SLOT 5:Oct 25 04:41:03.286 UTC: Pool 2: Carve Size 78462: Current Size 181569

SLOT 5:Oct 25 04:41:03.286 UTC: Pool 3: Carve Size 57539: Current Size 6160

SLOT 5:Oct 25 04:41:03.286 UTC: Pool 4: Carve Size 22870: Current Size 67

SLOT 5:Oct 25 04:41:03.286 UTC: IPC FreeQ: Carve Size 600: Current Size 600

show controllers tofab queues:

Qnum Head Tail #Qelem LenThresh

---- ---- ---- ------ ---------

4 non-IPC free queues:

102001/102001 (buffers specified/carved), 39.1%, 80 byte data size

1       13542   13448           73078   262143

78462/78462 (buffers specified/carved), 30.0%, 608 byte data size

2       131784  131833          181569  262143

57539/57539 (buffers specified/carved), 22.0%, 1616 byte data size

3       184620  182591          6160    262143

23538/22870 (buffers specified/carved), 8.74%, 4592 byte data size

4       239113  238805          67      262143

案例 2:

下一跳裝置或轉發路徑上的流量擁塞。在此場景中，GSR向其提供流量的裝置無法以GSR的速度處理，因此下一跳裝置向GSR傳送暫停幀，請求其減速。如果在GSR PLIM卡上啟用流量控制，路由器將執行暫停幀並開始緩衝資料包。最終，路由器將耗盡導致QM Sanity錯誤消息和資料包丟棄的緩衝區。當資料包緩衝區耗盡並超過警告閾值時，我們將開始看到QM-Sanity警告。有關如何查詢QM健全性閾值的故障排除部分。

使用輸出介面上的show interface輸出檢查路由器是否受此方案影響。以下擷取提供了一個介面接收暫停訊框的範例。該行動計畫將檢視下一跳裝置發生擁塞的原因。

GigabitEthernet6/2 is up, line protocol is up

Small Factor Pluggable Optics okay

Hardware is GigMac 4 Port GigabitEthernet, address is 000b.455d.ee02 (bia 000b.455d.ee02)

Description: Cisco Sydney Lab

Internet address is 219.158.33.86/30

MTU 1500 bytes, BW 500000 Kbit, DLY 10 usec, rely 255/255, load 154/255

Encapsulation ARPA, loopback not set

Keepalive set (10 sec)

Full Duplex, 1000Mbps, link type is force-up, media type is LX

output flow-control is on, input flow-control is on

ARP type: ARPA, ARP Timeout 04:00:00

Last input 00:00:02, output 00:00:02, output hang never

Last clearing of "show interface" counters 7w1d

Queueing strategy: random early detection (WRED)

Output queue 0/40, 22713601 drops; input queue 0/75, 736369 drops

Available Bandwidth 224992 kilobits/sec

30 second input rate 309068000 bits/sec, 49414 packets/sec

30 second output rate 303400000 bits/sec, 73826 packets/sec

143009959974 packets input, 88976134206186 bytes, 0 no buffer

Received 7352 broadcasts, 0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 watchdog, 7352 multicast, 45 pause input

234821393504 packets output, 119276570730993 bytes, 0 underruns

Transmitted 73201 broadcasts

0 output errors, 0 collisions, 0 interface resets

0 babbles, 0 late collision, 0 deferred

0 lost carrier, 0 no carrier, 0 pause output

0 output buffer failures, 0 output buffers swapped out

案例 3:

由於網路設計不佳/流量突發/DOS攻擊而導致超訂用時。如果持續出現高流量情況，其中流向路由器的流量大於線卡可以處理的流量，則會出現QM健全性警告。

為此，請檢查路由器中所有介面的流量速率。這將顯示是否有任何高速鏈路正在擁塞慢速鏈路。

使用show interface output命令。

指令疑難排解

檢查LC的當前QM健全性級別

- 連線到LC

- 前往啟用模式

- 運行test fab命令

- 收集「qm_sanity_info」的輸出

- 用於退出test fab命令列的選項q

- 從LC退出

配置QM健全性引數的步驟

- 更改為配置模式

- 運行hw-module slot <slot#> qm-sanity tofab warning freq <>

要啟用/禁用QM健全性調試，請執行以下操作：

- 連線到LC

- 前往啟用模式

- 運行test fab命令

- 運行「qm_sanity_debug」。再次運行，將停止調試

- 用於退出test fab命令列的選項q

- 從LC退出

檢查GSR交換矩陣介面asic統計資訊

- show controller fia

檢查Tofab隊列

- show controllers tofab queues

檢查Frfab queus

- show controller frfab queues

範例：

從工作正常的實驗室路由器提取以下輸出以演示命令輸出。

GSR-1-PE-5#show controller fia

Fabric configuration: 10Gbps bandwidth (2.4Gbps available), redundant fabric

Master Scheduler: Slot 17     Backup Scheduler: Slot 16

Fab epoch no 0          Halt count 0

From Fabric FIA Errors

-----------------------

redund overflow 0          cell drops 0

cell parity     0

Switch cards present    0x001F    Slots  16 17 18 19 20

Switch cards monitored  0x001F    Slots  16 17 18 19 20

Slot:     16         17         18         19         20

Name:    csc0       csc1       sfc0       sfc1       sfc2

--------   --------   --------   --------   --------

los    0          0          0          0          0

state  Off        Off        Off        Off        Off

crc16  0          0          0          0          0

To Fabric FIA Errors

-----------------------

sca not pres 0          req error     0          uni fifo overflow 0

grant parity 0          multi req     0          uni fifo undrflow 0

cntrl parity 0          uni req       0

multi fifo   0          empty dst req 0          handshake error   0

cell parity  0

GSR-1-PE-5#attach 1

Entering Console for Modular SPA Interface Card in Slot: 1

Type "exit" to end this session

Press RETURN to get started!

LC-Slot1>en

LC-Slot1#test fab

BFLC diagnostic console program

BFLC (? for help) [?]: qm_sanity_debug

QM Sanity Debug enabled

BFLC (? for help) [qm_sanity_debug]:

SLOT 1:02:54:33:  ToFAB BMA information

SLOT 1:02:54:33: Number of FreeQs carved 4

SLOT 1:02:54:33: Pool 1: Carve Size 102001: Current Size 102001

SLOT 1:02:54:33: Pool 2: Carve Size 78462: Current Size 78462

SLOT 1:02:54:33: Pool 3: Carve Size 57539: Current Size 57539

SLOT 1:02:54:33: Pool 4: Carve Size 22870: Current Size 22870

SLOT 1:02:54:33: IPC FreeQ: Carve Size 600: Current Size 600

SLOT 1:02:54:33: Number of LOQs enabled 768

SLOT 1:02:54:33: Number of LOQs disabled 1280

SLOT 1:02:54:33:  ToFAB BMA information

SLOT 1:02:54:33: Number of FreeQs carved 4

SLOT 1:02:54:33: Pool 1: Carve Size 102001: Current Size 102001

SLOT 1:02:54:33: Pool 2: Carve Size 78462: Current Size 78462

SLOT 1:02:54:33: Pool 3: Carve Size 57539: Current Size 57539

SLOT 1:02:54:33: Pool 4: Carve Size 22870: Current Size 22870

SLOT 1:02:54:33: IPC FreeQ: Carve Size 600: Current Size 600

SLOT 1:02:54:33: Number of LOQs enabled 768

SLOT 1:02:54:33: Number of LOQs disabled 1280

QM Sanity Debug disabled

BFLC (? for help) [qm_sanity_debug]: qm_sanity_info

ToFab QM Sanity level Warning

FrFab QM Sanity level None

Sanity Check is triggered every 20 seconds

Min. buffers threshold in percentage 5

BFLC (? for help) [qm_sanity_info]: q

LC-Slot1#exi

Disconnecting from slot 1.

Connection Duration: 00:01:09

GSR-1-PE-5#config t

Enter configuration commands, one per line.  End with CNTL/Z.

GSR-1-PE-5(config)#hw-module slot 1 qm-sanity tofab warning freq 10

GSR-1-PE-5(config)#end

GSR-1-PE-5#attach 1

02:57:25: %SYS-5-CONFIG_I: Configured from console by console

GSR-1-PE-5#attach 1

Entering Console for Modular SPA Interface Card in Slot: 1

Type "exit" to end this session

Press RETURN to get started!

LC-Slot1>en

LC-Slot1#test fab

BFLC diagnostic console program

BFLC (? for help) [?]: qm_sanity_info

ToFab QM Sanity level Warning

FrFab QM Sanity level None

Sanity Check is triggered every 10 seconds

Min. buffers threshold in percentage 5

BFLC (? for help) [qm_sanity_info]: q

LC-Slot1#exit

Disconnecting from slot 1.

Connection Duration: 00:00:27

GSR-1-PE-5#execute-on all show controllers tofab queues

========= Line Card (Slot 0) =========

Carve information for ToFab buffers

SDRAM size: 268435456 bytes, address: E0000000, carve base: E0018000

268337152 bytes carve size,  4 SDRAM bank(s), 16384 bytes SDRAM pagesize, 2 carve(s)

max buffer data size 4592 bytes, min buffer data size 80 bytes

262141/262141 buffers specified/carved

265028848/265028848 bytes sum buffer sizes specified/carved

Qnum Head Tail #Qelem LenThresh

---- ---- ---- ------ ---------

4 non-IPC free queues:

107232/107232 (buffers specified/carved), 40.90%, 80 byte data size

601   107832 107232 262143

73232/73232 (buffers specified/carved), 27.93%, 608 byte data size

107833 181064 73232 262143

57539/57539 (buffers specified/carved), 21.94%, 1616 byte data size

181065 238603 57539 262143

23538/23538 (buffers specified/carved), 8.97%, 4592 byte data size

238604 262141 23538 262143

IPC Queue:

600/600 (buffers specified/carved), 0.22%, 4112 byte data size

155   154   600   262143

Raw Queue (high priority):

0     0     0     65535

Raw Queue (medium priority):

0     0     0     32767

Raw Queue (low priority):

0     0     0     16383

ToFab Queues:

Dest Slot Queue# Head Tail Length Threshold

pkts  pkts

==============================================================

0  0 0 0 0 262143

15  2191(hpr) 0 0 0 0

Multicast   2048 0 0 0 262143

2049 0 0 0 262143

========= Line Card (Slot 1) =========

Carve information for ToFab buffers

SDRAM size: 268435456 bytes, address: 26000000, carve base: 26010000

268369920 bytes carve size,  4 SDRAM bank(s), 32768 bytes SDRAM pagesize, 2 carve(s)

max buffer data size 4592 bytes, min buffer data size 80 bytes

262140/261472 buffers specified/carved

267790176/264701344 bytes sum buffer sizes specified/carved

Qnum Head Tail #Qelem LenThresh

---- ---- ---- ------ ---------

4 non-IPC free queues:

102001/102001 (buffers specified/carved), 39.1%, 80 byte data size

1     601   102601 102001 262143

78462/78462 (buffers specified/carved), 30.0%, 608 byte data size

2     102602 181063 78462 262143

57539/57539 (buffers specified/carved), 22.0%, 1616 byte data size

3     181064 238602 57539 262143

23538/22870 (buffers specified/carved), 8.74%, 4592 byte data size

4     238603 261472 22870 262143

IPC Queue:

600/600 (buffers specified/carved), 0.22%, 4112 byte data size

30    85    84    600   262143

Raw Queue (high priority):

27    0     0     0     65368

Raw Queue (medium priority):

28    0     0     0     32684

Raw Queue (low priority):

31    0     0     0     16342

ToFab Queues:

Dest Slot Queue# Head Tail Length Threshold

pkts  pkts

=============================================================

::::::::::::::::::::

Hi Priority

0 2176(hpr) 0 0 0

1 2177(hpr) 0 0 0

2 2178(hpr) 0 0 0

3 2179(hpr) 0 0 0

4 2180(hpr) 553 552 0

5 2181(hpr) 0 0 0

6 2182(hpr) 0 0 0

7 2183(hpr) 0 0 0

8 2184(hpr) 0 0 0

9 2185(hpr) 0 0 0

10 2186(hpr) 0 0 0

11 2187(hpr) 0 0 0

12 2188(hpr) 0 0 0

13 2189(hpr) 0 0 0

14 2190(hpr) 0 0 0

15 2191(hpr) 0 0 0

Multicast

2048 0 0 0

2049 0 0 0

2050 0 0 0

2051 0 0 0

2052 0 0 0

2053 0 0 0

2054 0 0 0

2055 0 0 0

========= Line Card (Slot 3) =========

Carve information for ToFab buffers

SDRAM size: 268435456 bytes, address: E0000000, carve base: E0018000

268337152 bytes carve size,  4 SDRAM bank(s), 16384 bytes SDRAM pagesize, 2 carve(s)

max buffer data size 4112 bytes, min buffer data size 80 bytes

262142/262142 buffers specified/carved

230886224/230886224 bytes sum buffer sizes specified/carved

Qnum Head Tail #Qelem LenThresh

---- ---- ---- ------ ---------

3 non-IPC free queues:

94155/94155 (buffers specified/carved), 35.91%, 80 byte data size

601   94755 94155 262143

57539/57539 (buffers specified/carved), 21.94%, 608 byte data size

94756 152294 57539 262143

109848/109848 (buffers specified/carved), 41.90%, 1616 byte data size

152295 262142 109848 262143

IPC Queue:

600/600 (buffers specified/carved), 0.22%, 4112 byte data size

207   206   600   262143

Raw Queue (high priority):

0     0     0     65535

Raw Queue (medium priority):

0     0     0     32767

Raw Queue (low priority):

0     0     0     16383

ToFab Queues:

Dest Slot Queue# Head Tail Length Threshold

pkts  pkts

==============================================================

0  0 0 0 0 262143

1 0 0 0 262143

2 0 0 0 262143

3 0 0 0 262143

:::::::::::::::::::::::::::

2049 0 0 0 262143

2050 0 0 0 262143

2051 0 0 0 262143

2052 0 0 0 262143

2053 0 0 0 262143

2054 0 0 0 262143

2055 0 0 0 262143

GSR-1-PE-5#execute-on slot 2 show controller frfab queues

========= Line Card (Slot 2) =========

Carve information for FrFab buffers

SDRAM size: 268435456 bytes, address: D0000000, carve base: D241D100

230567680 bytes carve size,  4 SDRAM bank(s), 16384 bytes SDRAM pagesize, 2 carve(s)

max buffer data size 4592 bytes, min buffer data size 80 bytes

235926/235926 buffers specified/carved

226853664/226853664 bytes sum buffer sizes specified/carved

Qnum Head Tail #Qelem LenThresh

---- ---- ---- ------ ---------

4 non-IPC free queues:

96484/96484 (buffers specified/carved), 40.89%, 80 byte data size

11598 11597 96484 262143

77658/77658 (buffers specified/carved), 32.91%, 608 byte data size

103116 103115 77658 262143

40005/40005 (buffers specified/carved), 16.95%, 1616 byte data size

178588 178587 40005 262143

21179/21179 (buffers specified/carved), 8.97%, 4592 byte data size

214748 235926 21179 262143

IPC Queue:

600/600 (buffers specified/carved), 0.25%, 4112 byte data size

66    65    600   262143

Multicast Raw Queue:

0     0     0     58981

Multicast Replication Free Queue:

235930 262143 26214 262143

Raw Queue (high priority):

78    77    0     235927

Raw Queue (medium priority):

11596 11595 0     58981

Raw Queue (low priority):

0     0     0     23592

Interface Queues:

Interface Queue# Head Tail Length Threshold

pkts  pkts

======================================================

0    0 103107 103106 0 32768

3 178588 178587 0 32768

1    4 103110 103109 0 32768

7 11586 11585 0 32768

2    8 0 0 0 32768

11 0 0 0 32768

3    12 0 0 0 32768

15 0 0 0 32768

GSR-1-PE-5#