Cisco Routerは受信したパケットをbufferに格納し、格納されたパケットがRP(routing processor)が処理します。buffer sizeのチューニングによってパケットの破棄されづらいようにする事ができます。
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# buffers small { initial | permanent | min-free | max-free } <size> Router(config)# buffers middle { initial | permanent | min-free | max-free } <size> Router(config)# buffers big { initial | permanent | min-free | max-free } <size> Router(config)# buffers verybig { initial | permanent | min-free | max-free } <size> Router(config)# buffers large { initial | permanent | min-free | max-free } <size> Router(config)# buffers huge { initial | permanent | min-free | max-free } <size> Router(config)# buffers tune automatic
構成図
以下構成にて動作確認を行います。
e0/0 e0/0 +--------+.1 .2+--------+ | R1 +------+ R2 | +--------+ +--------+ 192.168.12.0/24 R1 Loopback0 R2 Loopback0 10.1.1.1/32 10.2.2.2/32
[R1] interface Ethernet0/0 ip address 192.168.12.1 255.255.255.0 [R2] interface Ethernet0/0 ip address 192.168.12.2 255.255.255.0
設定全文は下記ファイルです。詳細設定は下記を参照ください。
仕様説明
bufferの種類
bufferの状態は以下のコマンドで調べる事ができます。bufferには、small, middle, bigなどの6種類があり、パケットのサイズによってどのbufferに格納するかが決まります。
R1#show buffers Buffer elements: 1119 in free list (1119 max allowed) 86 hits, 0 misses, 619 created Public buffer pools: Small buffers, 104 bytes (total 50, permanent 50): 49 in free list (20 min, 150 max allowed) 62 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Middle buffers, 600 bytes (total 25, permanent 25): 25 in free list (10 min, 150 max allowed) 78 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Big buffers, 1536 bytes (total 50, permanent 50): 50 in free list (5 min, 150 max allowed) 31 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) <omitted>
bufferの領域
6種類のbufferについて、以下のパラメータについてチューニング可能です。
パラメータ | 説明 |
---|---|
initial | システム再起動直後に割り当てられるbuffer |
permanent | 絶対に削除される事のない固定buffer。言い換えればbufferの最小値とも考えられます。 |
min-free | in free listとして確保するbufferの最小値。 |
max-free | in free listとして確保するbufferの最大値。 |
手動チューニング
以下のコマンドでbuffer sizeを手動設定する事ができます。
Router(config)# buffers small { initial | permanent | min-free | max-free } <size> Router(config)# buffers middle { initial | permanent | min-free | max-free } <size> Router(config)# buffers big { initial | permanent | min-free | max-free } <size> Router(config)# buffers verybig { initial | permanent | min-free | max-free } <size> Router(config)# buffers large { initial | permanent | min-free | max-free } <size> Router(config)# buffers huge { initial | permanent | min-free | max-free } <size>
自動チューニング
以下のコマンドでbuffer sizeを自動的にチューニングするようになります。
Router(config)# buffers tune automatic
bufferの領域
動作確認
3000byte, 5000byte, 8000byteの大きめのパケットをR1からR2へ送信します。
[R1] R1#ping 10.2.2.2 size 3000 Type escape sequence to abort. Sending 5, 3000-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/31/112 ms R1# R1# R1#ping 10.2.2.2 size 5000 repeat 3 Type escape sequence to abort. Sending 3, 5000-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds: !!! Success rate is 100 percent (3/3), round-trip min/avg/max = 4/34/52 ms R1# R1# R1#ping 10.2.2.2 size 8000 repeat 2 Type escape sequence to abort. Sending 2, 8000-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds: !! Success rate is 100 percent (2/2), round-trip min/avg/max = 32/50/68 ms R1#
buffer sizeを観察します。大きめのパケットを送付したので、large, huge bufferのin free listが0ではなくなった事が確認できます。
また、large, hugeのin free listの初期設定は0ですので、bufferから溢れたパケットが”misses”としてカウントされた事が分かります。
[R1] R1#show buffers <omitted> Large buffers, 5024 bytes (total 2, permanent 0, peak 2 @ 00:00:22): 2 in free list (0 min, 10 max allowed) 2 hits, 1 misses, 0 trims, 2 created 0 failures (0 no memory) Huge buffers, 18024 bytes (total 4, permanent 0, peak 4 @ 00:00:17): 4 in free list (0 min, 4 max allowed) 14 hits, 2 misses, 0 trims, 4 created 0 failures (0 no memory)
手動チューニング
設定投入
buffer sizeを以下のように変更します。
[R1] buffers large initial 5 buffers large min-free 4 buffers large max-free 20 buffers large permanent 2 buffers huge initial 5 buffers huge min-free 2 buffers huge max-free 10 buffers huge permanent 1
動作確認
buffer sizeが変わった事を確認します。
[R1] R1#show buffers <omitted> Large buffers, 5024 bytes (total 4, permanent 2, peak 4 @ 00:00:37): 4 in free list (4 min, 10 max allowed) 2 hits, 1 misses, 0 trims, 2 created 0 failures (0 no memory) Huge buffers, 18024 bytes (total 5, permanent 1, peak 5 @ 00:00:24): 5 in free list (2 min, 10 max allowed) 14 hits, 2 misses, 0 trims, 4 created 0 failures (0 no memory)
自動チューニング
設定投入
以下のコマンドでbufferの自動チューニングが有効になります。
[R2] buffers tune automatic
動作確認
以下のコマンドでbuffer tuningの様子を観察する事ができます。
[R2] R2#show buffers tune R2#
今回の動作確認ではshowコマンドによる出力は得られませんが、機材によっては”show buffers tune”コマンドで以下のような出力が得られます。
Router# show buffers tune Tuning happened for the pool Small Tuning happened at 22: 43: 19 Oldvalues permanent: 50 minfree: 20 maxfree: 150 Newvalues permanent: 62 minfree: 15 maxfree: 78 Tuning happened for the pool Middle Tuning happened at 22: 43: 19 Oldvalues permanent: 25 minfree: 10 maxfree: 150 Newvalues permanent: 36 minfree: 9 maxfree: 45 Router#