目錄

簡介

必要條件

需求

採用元件

慣例

一般概述

低端平台（Cisco 1600、2500和4000系列路由器）

高端平台（路由處理器、交換處理器、矽交換處理器和路由/交換處理器）

基於粒子的平台

緩衝區調整

保留交換矩陣緩衝區

緩衝區洩漏

相關資訊

簡介

本文檔概述了基於當前平台的緩衝區調整，並提供了有關show buffers命令的一般信息。

必要條件

需求

本文件沒有特定需求。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

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

慣例

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

一般概述

緩衝區調整允許您修改路由器從其可用記憶體中分配緩衝區的方式，並有助於在臨時流量突發期間防止丟包。

要確定您的路由器是否需要調整緩衝區，請使用show interfaces和show buffers命令。

如果您有Cisco裝置的show interfaces和show buffers命令的輸出，或show technical-support（從啟用模式）的輸出，則可以使用Cisco CLI Analyzer顯示潛在問題和修復程式。要使用Cisco CLI Analyzer，您必須是已註冊的客戶，必須登入並啟用JavaScript。

以下是show interfaces命令輸出的範例：

Output queue 0/40, 1041 drops; input queue 0/75, 765 drops

35252345 packets input, 547082589 bytes, 940 no buffer

- 輸入和輸出丟棄是由於輸入和輸出隊列被突發流量超載。這與緩衝區問題無關，而是與進程交換效能限制有關。

- 「No buffer」表示因為沒有可用緩衝區來複製資料包而丟棄的資料包數。

使用show buffers命令，檢視與介面的最大傳輸單位(MTU)對應的緩衝區大小：

Middle buffers, 600 bytes (total 150, permanent 25):

147 in free list (10 min, 150 max allowed)

61351931 hits, 137912 misses, 51605 trims, 51730 created

91652 failures (0 no memory)

下表對輸出進行了說明：

關鍵字

說明

總計

池中的緩衝區總數，包括已使用的和未使用的緩衝區。

永久

池中已分配緩衝區的永久數量。這些緩衝區始終位於池中，不能被修剪掉。

在自由清單中

池中當前可用且可供使用的緩衝區數。

最小值

路由器應嘗試保持「在可用清單中」的最小緩衝區數。 如果「in free list」的緩衝區數量低於「min」值，路由器應嘗試為該池建立更多緩衝區。

允許的最大值

允許「在可用清單中」的最大緩衝區數。 如果「在可用清單中」的緩衝區數量大於「允許的最大數量」值，路由器應嘗試從池中修整緩衝區。

命中數

從可用清單中成功分配的緩衝區數。

未命中數

請求緩衝區，但空閒清單中沒有可用緩衝區的次數，或空閒清單中少於「min」緩衝區時的次數。

trims

當「在可用清單中」的緩衝區數超過「允許的最大」緩衝區數時，從池中修剪的緩衝區數。

建立時間

當「可用清單」中的緩衝區數小於「min」時，已在池中建立的緩衝區數。

無記憶體

路由器嘗試建立新緩衝區，但由於路由器中的可用記憶體不足而無法建立的次數。

失敗

在中斷時間內向請求方授予緩衝區的失敗次數（請記住，路由器可以在進程交換級別建立新緩衝區，因此，除非存在「無記憶體」，否則不會發生「失敗」）。「failures」數表示由於緩衝區不足而丟棄的資料包數。

路由器如何處理緩衝區

「in free list」的緩衝區數是可用緩衝區數。當緩衝區請求傳入時，會分配來自「in free list」的緩衝區。

使用IOS緩衝區有兩個主要原因：

- 處理在路由器終止的流量。

- 資料包進行進程交換時。

如果沒有可用的緩衝區，並且啟用了快速交換，則存在緩衝區故障，資料包將被丟棄。當緩衝區池管理器進程檢測到緩衝區故障時，它會「建立」新緩衝區以避免將來發生故障。

如果數字「in free list」等於「max allowed」值，路由器不會建立新緩衝區。如果路由器中沒有足夠的記憶體來建立新的緩衝區，則將記錄為「無記憶體」。如果數量「in free list」大於「max allowed」數量，路由器會「trims」一些多餘的緩衝區。

「故障」和「無記憶體」的數量是唯一需要關注的方面。故障可能會發生，但過一段時間後應會穩定下來。路由器會根據需要建立或修剪緩衝區，以穩定失敗次數。如果故障數量繼續增加，可能需要調整緩衝區。

如果記憶體不足，無法建立新的緩衝區，請查詢緩衝區洩漏或更常見的記憶體問題。在快速交換路徑中未建立緩衝區，因此如果路由器嘗試快速交換封包且沒有可用的緩衝區，則封包會遭到捨棄，且會報告失敗。下次運行緩衝區池管理器時，會建立一個新緩衝區。

低端平台（Cisco 1600、2500和4000系列路由器）

快速交換資料包和進程交換資料包共用相同的緩衝區。這些緩衝區位於共用記憶體中。共用記憶體位於Cisco 1600和2500系列路由器的動態RAM(DRAM)中，或者位於Cisco 4000、4500和4700系列路由器的共用RAM(SRAM)中。

show memory命令的第一行會告訴您有多少共用記憶體、目前使用的記憶體及其最低點。當封包無法進行快速交換時，會在程式交換輸入佇列中插入指向封包的指標，但封包本身不會複製。

以下是在低端平台(Cisco 4500)上show buffers命令的輸出：

router# show buffers

Buffer elements:

471 in free list (500 max allowed)

870696495 hits, 0 misses, 0 created

Public buffer pools:

Small buffers, 104 bytes (total 50, permanent 50):

49 in free list (20 min, 150 max allowed)

27301678 hits, 23 misses, 20 trims, 20 created

0 failures (0 no memory)

Middle buffers, 600 bytes (total 150, permanent 25):

147 in free list (10 min, 150 max allowed)

61351931 hits, 137912 misses, 51605 trims, 51730 created

91652 failures (0 no memory)

Big buffers, 1524 bytes (total 67, permanent 50):

67 in free list (5 min, 150 max allowed)

46293638 hits, 455 misses, 878 trims, 895 created

0 failures (0 no memory)

VeryBig buffers, 4520 bytes (total 96, permanent 10):

79 in free list (0 min, 100 max allowed)

11818351 hits, 246 misses, 98 trims, 184 created

243 failures (0 no memory)

Large buffers, 5024 bytes (total 10, permanent 0):

10 in free list (0 min, 10 max allowed)

4504003 hits, 873040 misses, 759543 trims, 759553 created

873040 failures (0 no memory)

Huge buffers, 18024 bytes (total 0, permanent 0):

0 in free list (0 min, 4 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Interface buffer pools:

TokenRing0 buffers, 4516 bytes (total 48, permanent 48):

0 in free list (0 min, 48 max allowed)

3099742 hits, 9180771 fallbacks

16 max cache size, 1 in cache

TokenRing1 buffers, 4516 bytes (total 48, permanent 48):

0 in free list (0 min, 48 max allowed)

335172 hits, 403668 fallbacks

16 max cache size, 16 in cache

Serial1 buffers, 1524 bytes (total 96, permanent 96):

63 in free list (0 min, 96 max allowed)

33 hits, 0 fallbacks

0 max cache size, 0 in cache

Serial2 buffers, 1524 bytes (total 96, permanent 96):

63 in free list (0 min, 96 max allowed)

701370936 hits, 268 fallbacks

0 max cache size, 0 in cache

Serial3 buffers, 1524 bytes (total 96, permanent 96):

63 in free list (0 min, 96 max allowed)

33 hits, 0 fallbacks

0 max cache size, 0 in cache

Serial0 buffers, 4546 bytes (total 96, permanent 96):

28 in free list (0 min, 96 max allowed)

346854 hits, 5377043 fallbacks

32 max cache size, 27 in cache

介面緩衝池由介面用於輸入/輸出(I/O)。當介面緩衝區可用清單中沒有更多緩衝區時，路由器會作為回退進入公共緩衝區池。回退不會影響效能。

快取是一種軟體操作，它通過繞過一些開銷來加快用於中斷級驅動程式碼的緩衝區的可用性。

注意：通常，不應調整介面緩衝區。

高端平台（路由處理器、交換處理器、矽交換處理器和路由/交換處理器）

以下是show buffers命令在高端平台上的輸出：

Router# show buffers

Buffer elements:

498 in free list (500 max allowed)

326504974 hits, 0 misses, 0 created

Public buffer pools:

Small buffers, 104 bytes (total 150, permanent 150):

140 in free list (30 min, 250 max allowed)

564556247 hits, 148477066 misses, 16239797 trims, 16239797 created

29356200 failures (0 no memory)

Middle buffers, 600 bytes (total 120, permanent 120):

116 in free list (20 min, 200 max allowed)

319750574 hits, 85689239 misses, 9671164 trims, 9671164 created

26050704 failures (0 no memory)

Big buffers, 1524 bytes (total 100, permanent 100):

98 in free list (10 min, 300 max allowed)

20130595 hits, 14796572 misses, 251916 trims, 251916 created

11813639 failures (0 no memory)

VeryBig buffers, 4520 bytes (total 15, permanent 15):

14 in free list (5 min, 300 max allowed)

22966334 hits, 3477687 misses, 13113 trims, 13113 created

2840089 failures (0 no memory)

Large buffers, 5024 bytes (total 12, permanent 12):

12 in free list (0 min, 30 max allowed)

849034 hits, 1979463 misses, 1028 trims, 1028 created

1979456 failures (0 no memory)

Huge buffers, 18024 bytes (total 6, permanent 5):

4 in free list (2 min, 13 max allowed)

338440 hits, 1693496 misses, 1582 trims, 1583 created

1640218 failures (0 no memory)

標頭池

公共緩衝池位於DRAM中，稱為系統緩衝區。路由/交換處理器(RSP)上的共用記憶體稱為系統封包記憶體(MEMD)，並允許2 MB記憶體。在路由處理器(RP)和交換處理器(SP)（或矽交換處理器 — SSP）上，系統緩衝區位於RP上，而MEMD位於SP（或SSP）上。

當封包傳入時，接收介面處理器會將封包儲存在MEMD中（多功能介面處理器 — VIP的情況除外）。如果無法進行快速交換，則會將整個封包複製到DRAM中的系統緩衝區中。因此，您在show buffers命令中看到的緩衝區是位於DRAM中的系統緩衝區。

show controllers cbus 命令會顯示在MEMD中的介面緩衝區。同樣地，不建議調整介面緩衝區。當封包無法進行快速交換且複製到系統緩衝區時，該封包會被捨棄，如果沒有可用的系統緩衝區，則會統計失敗。

基於粒子的平台

Cisco 3600和7200系列路由器使用粒子。介面緩衝區是原子緩衝區（稱為粒子），資料包被分割到該原子緩衝區中。當封包無法進行快速交換時，路由器必須將其重組到一個系統緩衝區中，因為程式交換程式碼無法處理粒子。

以下是show buffers命令在Cisco 3600上的輸出：

Router# show buffers

Buffer elements:

499 in free list (500 max allowed)

136440 hits, 0 misses, 0 created

Public buffer pools:

Small buffers, 104 bytes (total 50, permanent 50):

49 in free list (20 min, 150 max allowed)

4069435 hits, 141 misses, 73 trims, 73 created

52 failures (0 no memory)

Middle buffers, 600 bytes (total 25, permanent 25):

25 in free list (10 min, 150 max allowed)

628629 hits, 21 misses, 21 trims, 21 created

3 failures (0 no memory)

Big buffers, 1524 bytes (total 50, permanent 50):

50 in free list (5 min, 150 max allowed)

9145 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

VeryBig buffers, 4520 bytes (total 10, permanent 10):

10 in free list (0 min, 100 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Large buffers, 5024 bytes (total 0, permanent 0):

0 in free list (0 min, 10 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Huge buffers, 18024 bytes (total 0, permanent 0):

0 in free list (0 min, 4 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Interface buffer pools:

CD2430 I/O buffers, 1524 bytes (total 0, permanent 0):

0 in free list (0 min, 0 max allowed)

0 hits, 0 fallbacks

Header pools:

Header buffers, 0 bytes (total 265, permanent 256):

9 in free list (10 min, 512 max allowed)

253 hits, 3 misses, 0 trims, 9 created

0 failures (0 no memory)

256 max cache size, 256 in cache

Particle Clones:

1024 clones, 0 hits, 0 misses

Public particle pools:

F/S buffers, 256 bytes (total 384, permanent 384):

128 in free list (128 min, 1024 max allowed)

256 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

256 max cache size, 256 in cache

Normal buffers, 1548 bytes (total 512, permanent 512):

356 in free list (128 min, 1024 max allowed)

188 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

128 max cache size, 128 in cache

Private particle pools:

Ethernet0/0 buffers, 1536 bytes (total 96, permanent 96):

0 in free list (0 min, 96 max allowed)

96 hits, 0 fallbacks

96 max cache size, 64 in cache

Serial0/0 buffers, 1548 bytes (total 14, permanent 14):

0 in free list (0 min, 14 max allowed)

14 hits, 0 fallbacks

14 max cache size, 14 in cache

BRI0/0 buffers, 1548 bytes (total 14, permanent 14):

0 in free list (0 min, 14 max allowed)

14 hits, 0 fallbacks

14 max cache size, 14 in cache

BRI0/0:1 buffers, 1548 bytes (total 14, permanent 14):

0 in free list (0 min, 14 max allowed)

14 hits, 0 fallbacks

14 max cache size, 14 in cache

BRI0/0:2 buffers, 1548 bytes (total 14, permanent 14):

0 in free list (0 min, 14 max allowed)

14 hits, 0 fallbacks

14 max cache size, 14 in cache

TokenRing0/0 buffers, 1548 bytes (total 64, permanent 64):

0 in free list (0 min, 64 max allowed)

64 hits, 0 fallbacks

64 max cache size, 64 in cache

4 buffer threshold, 0 threshold transitions

私有粒子池由介面使用，不應進行調整。當空閒清單中沒有可用緩衝區時，路由器將返回到公共粒子池。

報頭緩衝區用於記錄屬於資料包的所有粒子的清單。

註：系統緩衝區用於進程交換。在Cisco 3600上，所有這些緩衝區都位於DRAM中的I/O記憶體中。您可以使用memory-size iomem 命令指定I/O記憶體量。在Cisco 7200上，高頻寬埠介面卡(PA)的介面粒子緩衝池位於SRAM中。

緩衝區調整

以下是show buffers命令的示例：

Middle buffers, 600 bytes (total 150, permanent 25):

147 in free list (10 min, 150 max allowed)

61351931 hits, 137912 misses, 51605 trims, 51730 created

91652 failures (0 no memory)

在此示例中，中間緩衝區存在許多故障。這不是一個嚴重的問題，因為它僅佔點選次數的0.1%。這些數字應該可以通過一些緩沖調整輕鬆改善。

只有當資料包無法進行CEF交換時，才會執行緩衝區調整。

根據路由器的體系結構，您所呼叫的緩衝區通常屬於I/O記憶體（低端）或主記憶體（高端）。在調整緩衝區之前，請先使用show memory命令的第一行檢查是否有足夠的可用I/O或主記憶體。

以下是您可以使用的幾個一般值：

- 永久：計算池中的總緩衝區數，然後新增大約20%。

- min-free：將min-free設定為池中永久性已分配緩衝區數量的20-30%。

- max-free：將max-free設定為大於永久值和最小值的總和。

在上面的緩衝區調節示例中，我們可以在全域性配置模式下輸入以下命令：

buffers middle permanent 180

buffers middle min-free 50

buffers middle max-free 230

通常，Cisco IOS®â軟體會動態建立緩衝區，以便這些設定可以正常工作。但是，在流量突發的情況下，路由器可能沒有足夠的時間建立新的緩衝區，並且故障數量可能繼續增加。使用buffers命令更改預設緩衝區池設定。由於不正確的緩衝區設定可能影響系統效能，因此請謹慎更改緩衝區值。如果要清除緩衝區計數器，則必須重新載入路由器。

流量突發有兩種型別：

- 慢速burst：在這種情況下，路由器有足夠的時間建立新的緩衝區。增加最小可用緩衝區的數量。通過使用可用緩衝區，您可以達到最小可用值，然後建立新的緩衝區。

- 快速突發：對於快速流量突發，路由器沒有足夠的時間建立新的緩衝區，因此您應該使用可用緩衝區。為此，請修改永久緩衝區的數量。

結論：如果在初始調節後建立計數器增加，則增加無最小值（慢突發）。如果失敗計數器增加，但建立計數器未增加（快速突發），則增加永久值。

保留交換矩陣緩衝區

可以輸入fabric buffer-reserve命令以提高系統吞吐量並保留ASIC緩衝區。

以下模組支援此命令：

- X6704-10GE

- X6748-SFP

- X6748-GE-TX

- X6724-SFP

配置有Supervisor Engine 32的Cisco 7600系列路由器不支援此命令。

fabric buffer-reserve [high | low | medium | value]

注意：僅在Cisco TAC的指導下使用此命令。

以下是此命令有用的常見情況：

- 多個介面的線路協定關閉

- 多個介面上出現超支

- 連線埠經常離開和加入EtherChannel

- 使用DFC的線卡的TestMacNotification測試反複失敗

緩衝區洩漏

以下是show buffers命令的輸出示例：

Big buffers, 1524 bytes (total 1556, permanent 50):

52 in free list (5 min, 150 max allowed)

43670437 hits, 5134 misses, 0 trims, 1506 created

756 failures (0 no memory)

此輸出指示大緩衝區池中存在緩衝區洩漏。路由器上共有1556個大緩衝區，且只有52個位於可用清單中。某些程式正在使用所有緩衝區，但沒有釋放它們。有關緩衝區洩漏的詳細資訊，請參閱對緩衝區洩漏進行故障排除。

相關資訊

- 記憶體問題故障排除

- 排除緩衝區洩漏故障

- 基本系統管理命令

- 修改系統緩衝區大小

- 技術支援 - Cisco Systems