簡介
本文檔概述了基於當前平台進行緩衝區調節,同時還介紹了有關show buffers命令的一般資訊。
必要條件
需求
本文件沒有特定需求。
採用元件
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您在即時網路中工作,請確保在使用任何命令之前瞭解其潛在影響。
慣例
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
一般概述
緩衝區調節允許您修改路由器從其可用記憶體中分配緩衝區的方式,有助於防止在臨時突發流量期間丟棄資料包。
若要確定是否需要調節路由器的緩衝區,請使用show interfaces和show buffers命令。
如果從Cisco裝置上得到show interfaces命令和show buffers命令的輸出,或者是得到show technical-support(從啟用模式)的輸出,您可以使用Cisco CLI Analyzer顯示潛在問題和解決方法。要使用思科CLI分析器,您必須是註冊客戶、已登入並已啟用JavaScript。
以下是show interfaces命令輸出的示例:
Output queue 0/40, 1041 drops; input queue 0/75, 765 drops
35252345 packets input, 547082589 bytes, 940 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」值以下,路由器應嘗試為該池建立更多的緩衝區。 |
允許的最大值 |
允許「在可用清單中」的最大緩衝區數量。 如果「in free list」的緩衝區數量大於「max allowed」值,路由器應嘗試減少池中的緩衝區。 |
命中 |
從可用清單中成功分配的緩衝區數量。 |
遺漏 |
緩衝區被請求但可用清單中沒有可用緩衝區的次數,或可用清單中緩衝區數量少於「最小」緩衝區時的次數。 |
裁剪 |
當「在可用清單中」的緩衝區數量超過「允許的最大」緩衝區數量時,已從池中修剪的緩衝區數量。 |
已建立 |
當「在可用清單中」的緩衝區數量小於「min」時,已在池中建立的緩衝區數量。 |
無記憶體 |
路由器嘗試建立新緩衝區,但由於路由器中的可用記憶體不足而無法建立的次數。 |
失敗 |
在中斷時間下將緩衝區授予請求者的失敗次數(請記住,路由器可以在進程交換級別建立新的緩衝區,因此除非有「無記憶體」,否則不會發生「失敗」)。「失敗」數表示因緩衝區短缺而丟棄的資料包數。 |
路由器如何處理緩衝區
緩衝區數量「在可用清單中」是可用緩衝區數量。當緩衝區請求進入時,會從「在可用清單中」分配一個緩衝區。
使用IOS緩衝區有兩個主要原因:
-
處理在路由器終止的流量。
-
當資料包正在進行進程交換時。
如果沒有可用的緩衝區,並且啟用了快速交換,就會出現緩衝區故障並丟棄資料包。當緩衝池管理器進程檢測到緩衝故障時,它「建立」新的緩衝以避免將來發生故障。
如果可用清單中的數字等於「max allowed」值,路由器不會建立新緩衝區。如果路由器記憶體不足,無法建立新的緩衝區,則記錄為「無記憶體」。如果「in free list」大於「max allowed」數字,路由器會「裁剪」一些多餘的緩衝區。
「故障」和「無記憶體」的數量是唯一需要關注的領域。故障可能發生,但過一段時間後應會穩定下來。路由器會根據需要建立或修剪緩衝區,以穩定故障數。如果失敗次數繼續增加,可能需要調整緩衝區。
如果由於記憶體不足而無法建立新的緩衝區,請查詢是否存在緩衝區洩漏,或更常見的記憶體問題。在快速交換路徑中不會建立緩衝區,因此如果路由器嘗試快速交換封包,且沒有可用的緩衝區,則封包會遭到捨棄,並會報告失敗。下次執行緩衝區集區管理員時,會建立新的緩衝區。
低端平台(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)。當介面緩衝區可用清單中沒有其它緩衝區時,路由器將轉至公共緩衝池作為回退。回退沒有效能影響。
快取是一種軟體操作,可略過一些額外負荷,加速中斷層級驅動程式程式碼的緩衝區可用性。
注意:通常,不應調整介面緩衝區。
高階平台(路由處理器、交換處理器、Silicon Switch處理器和路由/交換處理器)
下面是高端平台上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系列路由器使用粒子。介面緩衝區是資料包被分割到其中的原子緩衝區,稱為粒子。當封包無法進行快速交換時,路由器必須將其重組到一個系統緩衝區中,因為程式交換程式碼無法處理粒子。
以下是Cisco 3600上的show buffers命令的輸出:
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記憶體或主記憶體是否充足。
以下是您可以用到的一些一般值:
在上面的緩衝區調節示例中,我們可以在全局配置模式下輸入以下命令:
buffers middle permanent 180
buffers middle min-free 50
buffers middle max-free 230
通常,Cisco IOSâ®軟體會動態建立緩衝區,以便這些設定可以正常工作。但是,在流量突發的情況下,路由器可能沒有足夠的時間來建立新的緩衝區,並且故障數可能會繼續增加。請使用buffers 命令更改預設緩衝池設定。請小心變更緩衝區值,因為不正確的緩衝區設定會影響系統效能。如果要清除緩衝區計數器,則必須重新載入路由器。
流量突發有兩種型別:
結論:如果在初始調整後建立計數器增加,則增加無分鐘數(緩慢突發)。如果失敗計數器增加,但不增加create計數器(快速突發),則增加永久值。
保留交換矩陣緩衝區
您可以輸入fabric buffer-reserve 命令來改進系統吞吐量以及保留ASIC緩衝區。
以下模組支援此命令:
-
WS-X6704-10GE
-
WS-X6748-SFP
-
WS-X6748-GE-TX
-
WS-X6724-SFP
配置了Supervisor引擎32的Cisco 7600系列路由器不支援此命令。
fabric buffer-reserve [high | low | medium | value]
注意:僅在Cisco TAC的指導下使用此命令。
以下是此命令有用的常見情況:
緩衝區洩漏
下面是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個。有些裝置正在使用所有的緩衝區,但沒有釋放它們。有關緩衝區洩漏的詳細資訊,請參閱排除緩衝區洩漏故障。
相關資訊