内容

概要

前提条件

要件

使用するコンポーネント

表記法

概要

ローエンド プラットフォーム（Cisco 1600、2500、および 4000 シリーズ ルータ）

ハイエンド プラットフォーム（ルート プロセッサ、スイッチ プロセッサ、シリコン スイッチ プロセッサ、およびルート/スイッチ プロセッサ）

パーティクルベース プラットフォーム

バッファ チューニング

ファブリック バッファの予約

バッファ リーク

関連情報

概要

このドキュメントには、現在のプラットフォームに基づくバッファ チューニングの概要と、show buffers コマンドに関する一般情報が収録されています。

前提条件

要件

このドキュメントに特有の要件はありません。

使用するコンポーネント

このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

このマニュアルの情報は、特定のラボ環境に置かれたデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

概要

バッファ チューニングを使用すると、ルータが使用可能なメモリからバッファを割り当てる方法を変更して、トラフィックの一時的なバースト時にパケットがドロップされないようにできます。

使用しているルータのバッファをチューニングする必要があるかどうかを判別するには、show interfaces コマンドと show buffers コマンドを使用します。

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 コマンドを使用して、インターフェイスの Maximum Transmission Unit（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)

次の表で出力を説明します。

キーワード

説明

total

プール内のバッファ総数（使用済みバッファと未使用バッファの両方を含む）。

permanent

プール内に固定で割り当てられるバッファ数。これらのバッファは常にプール内に存在していて、削除することはできません。

in free list

プール内で現在利用可能な空きバッファの数。

最小

ルータが「in free list」を保持する必要があるバッファの最小数。 「in free list」のバッファ数が「min」値を下回る場合、ルータはそのプールに対してさらにバッファを作成する必要があります。

max allowed

「in free list」で使用できるバッファの最大数。 「in free list」のバッファ数が「max allowed」値を上回る場合、ルータはプールからバッファを削除する必要があります。

hits

空きリストから正常に割り当てられたバッファの数。

misses

バッファが要求されたときに、空きリストに利用可能なバッファがない、または空きリストに 「min」 より少ないバッファしかない回数。

trims

「in free list」のバッファ数が「max allowed」のバッファ数を上回る場合に、プールから削除されたバッファの数。

created

「in free list」のバッファ数が「min」より少ない場合にプールで作成されたバッファの数。

no memory

ルータが新しいバッファを作成しようとしたが、ルータ内の空きメモリが十分ではなかったために作成できなかった回数。

failures

割り込み時にリクエスタにバッファを付与できなかった数（ルータはプロセススイッチングレベルで新しいバッファを作成できるため、「no memory」 でない限り 「failure」 は発生しない）。 「failures」 の数は、バッファ不足のためにドロップされたパケットの数を示します。

ルータによるバッファの処理方法

「in free list」のバッファ数は、使用可能なバッファの数です。バッファ要求が発生すると、「in free list」からバッファが割り当てられます。

IOS バッファは、主に次の 2 つの理由で使用されます。

- ルータで終端するトラフィックを処理するため。

- パケットがプロセス スイッチングされている場合。

使用可能なバッファがなく、ファースト スイッチングが有効だと、バッファ failure が発生し、パケットがドロップされます。バッファ プール マネージャ プロセスがバッファ failure を検出すると、さらに failure が発生しないように新しいバッファが「作成」されます。

「in free list」の数値が「max allowed」値と同じ場合、ルータは新しいバッファを作成しません。新しいバッファを作成するために十分なメモリがルータにない場合、「no memory」として記録されます。 「in free list」の数が「max allowed」の数よりも大きい場合、ルータによって過剰なバッファが一部削除されます。

注意する点は、「failures」と「no memory」の数だけです。failure は発生する可能性がありますが、これはしばらくして安定します。ルータは必要に応じてバッファを作成または削除して、failure の数を安定させます。failure の数が増加し続ける場合は、バッファのチューニングが必要になる可能性があります。

新しいバッファを作成するために十分なメモリがない場合は、バッファリークまたは一般的なメモリ障害がないか確認してください。ファースト スイッチング パスではバッファは作成されないため、ルータがパケットのファースト スイッチングを実行しようとした場合に使用できるバッファがないと、パケットがドロップされ、failure が報告されます。次回、バッファ プール マネジャが実行されたときに新しいバッファが作成されます。

ローエンド プラットフォーム（Cisco 1600、2500、および 4000 シリーズ ルータ）

ファーストスイッチ パケットとプロセススイッチパケットは、同じバッファを共有します。これらのバッファは、共有メモリにあります。共有メモリは Cisco 1600 および 2500 シリーズ ルータではダイナミック RAM（DRAM）に、あるいは Cisco 4000、4500、および 4700 シリーズ ルータでは共有 RAM（SRAM）にあります。

show memory コマンドの最初の行から、共有メモリの容量、現在の使用量、および最低ポイントがわかります。パケットをファースト スイッチできない場合、プロセススイッチのインプットキューにパケットへのポインタが挿入されますが、パケット自体はコピーされません。

次に、ローエンド プラットフォーム（Cisco 4500）でのshow bufferss コマンド出力を示します。

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 にあり、システム バッファと呼ばれています。Route/Switch Processor（RSP; ルート/スイッチ プロセッサ）上の共有メモリは、システム パケット メモリ（MEMD）と呼ばれ、2 MB のメモリが使用できます。Route Processor（RP; ルート プロセッサ）と Switch Processor（SP; スイッチ プロセッサ）（または Silicon Switch Processor（SSP; シリコン スイッチ プロセッサ））では、システム バッファは RP 上にあり、MEMD は SP（または SSP）にあります。

パケットが着信すると、そのパケットは受信側インターフェイス プロセッサにより MEMD に保存されます（多用途インターフェイス プロセッサ（VIP）の場合を除きます）。 ファースト スイッチできない場合は、パケット全体が DRAM のシステム バッファにコピーされます。したがって、show buffers コマンドで表示されるバッファは、DRAM 内のシステム バッファです。

show controllers cbus コマンドは、MEMD 内のインターフェイス バッファを表示します。インターフェイスバッファをチューニングすることはお勧めしません。パケットをファースト スイッチできず、システム バッファにコピーされる場合、使用できるシステム バッファがなければ、パケットはドロップされ、failure がカウントされます。

パーティクルベース プラットフォーム

Cisco 3600 および 7200 シリーズ ルータは、パーティクルを使用します。インターフェイス バッファは、パケットが分割されるパーティクルと呼ばれるアトミック バッファです。パケットがファースト スイッチできない場合、ルータはシステム バッファの 1 つにそのパケットを再構成する必要があります。これはプロセス交換コードではパーティクルを処理できないためです。

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 メモリにあります。I/O メモリの量は、memory-size iomem コマンドを使用して指定できます。Cisco 7200 では、広帯域 Port Adapter（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)

この例では、ミドルバッファに多数の failure があります。これは重大な問題ではありません。この数値はヒットのわずか 0.1 % に過ぎないからです。これらの数値は、バッファ チューニングによって簡単に改善できます。

バッファ チューニングが行われるのは、パケットの CEF スイッチができない場合のみです。

チューニングするバッファは通常、ルータのアーキテクチャに応じて、I/O メモリ（ローエンド）またはメイン メモリ（ハイエンド）のいずれかに属しています。 バッファをチューニングする前に、まず show memory コマンドの最初の行で、I/O メモリまたはメイン メモリに十分な空き容量があるかどうかを確認します。

使用できる一般的な値を次に示します。

- permanent：プール内のバッファ総数に、約 20 % を追加します。

- min-free：プール内で permanent に割り当てられたバッファ数の約 20 ～ 30 % を min-free に設定します。

- max-free： permanent と minimum の合計より大きな値を max-free に設定します。

上記のバッファ チューニングの例では、グローバル コンフィギュレーション モードで次のコマンドを入力できます。

buffers middle permanent 180

buffers middle min-free 50

buffers middle max-free 230

通常、Cisco IOS®ソフトウェアは、バッファを動的に作成するため、これらの設定に問題はありません。ただし、バーストトラフィックの場合、ルータには新しいバッファを作成するだけの時間がない可能性があるため、failure の数が増加し続けることがあります。デフォルトのバッファ プール設定を変更するには、buffers コマンドを使用します。バッファの設定が不適切な場合、システムのパフォーマンスが影響が出る可能性があるため、バッファ値の変更は慎重に行ってください。バッファ カウンタをクリアする場合は、ルータをリロードする必要があります。

バースト トラフィック には 2 種類あります。

- スロー バースト：この場合、ルータには新しいバッファを作成するのに十分な時間があります。min-free バッファの数を増やします。空きバッファを使用することにより、min-free の値を確保し、新しいバッファを作成できます。

- ファスト バースト：ファースト バーストの場合、ルータには新しいバッファを作成するのに十分な時間がないため、空きバッファを使用する必要があります。この場合は、固定バッファの数を変更します。

結論：初期チューニング後に create カウンタが増加した場合は、min-free を大きくします（スロー バースト）。 failure カウンタが増加して、create カウンタが増加しない場合（ファースト バースト）は、permanent 値を大きくします。

ファブリック バッファの予約

fabric buffer-reserve コマンドを入力することにより、システムのスループットを改善し、ASIC バッファを予約できます。

このコマンドは、次のモジュールでサポートされています。

- WS-X6704-10GE

- WS-X6748-SFP

- WS-X6748-GE-TX

- WS-X6724-SFP

このコマンドは、Supervisor Engine 32 が構成されている Cisco 7600 シリーズ ルータではサポートされません。

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

注意：このコマンドは、Cisco TACの指示の下でのみ使用してください。

このコマンドが役立つ一般的な状況を次に示します。

- 複数のインターフェイスで回線プロトコルがダウンする場合

- 複数のインターフェイスでオーバーランが発生している場合

- ポートで EtherChannel との Join と Leave が頻繁に発生する場合

- 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