$Date: 2023/08/10 17:00:58 $
階層型QoSに対応する機種では、下表の第1階層クラス数が使用可能であり、多数拠点と接続するセンター機器側で各拠点ごとにQoS制御が行うことができますが、クラス数が増えることにより性能的な制約が出てきます。多対地との通信にQoSを利用する上での注意すべきポイントを本ページで説明します。
機種 | 第1階層クラス数 |
---|---|
RTX5000 | 100 |
RTX3510 | 250 |
RTX3500 | 100 |
RTX3000 | 100 |
キュー長自動設定機能に対応する機種では、本ページで説明するクラス毎のキュー長、およびパケットバッファの設定を自動で行うことができます。 キュー長自動設定機能に対応する機種およびファームウェアは以下の通りです。
機種 | ファームウェア |
---|---|
RTX3510 | すべてのリビジョン |
詳細については、以下のドキュメントを参照してください。
多対地と通信を行うときのようにクラスを多数使用してQoSを行う場合には、主に次に挙げる二つのポイントに注意する必要があります。
QoS制御によりルーターの内部に大量にパケットが溜められる状況になると、初期設定のままではパケットバッファが枯渇し、受信バッファエラーが発生することがあります。パケットバッファが枯渇すると、優先度の高いパケットでもQoS処理に回される前の受信時に破棄されてしまうため、QoSの性能を充分に発揮させることができません。そこで、使用するクラス数によってはパケットバッファを増やす必要が出てきます。
パケットの受信に使用されるパケットバッファの種別は、機種やパケットを受信するLANインタフェースによって異なります。 各LANインタフェースで受信に使用されるパケットバッファの種別、および初期設定で準備されている個数は以下の通りです。
機種 | LANインタフェース | 受信用パケットバッファの種別 | 初期設定で準備されている個数 |
---|---|---|---|
RTX5000 | LAN1〜LAN4 | jumbo | 10000 |
RTX3510 | LAN1〜LAN4 | large(※) | 40000 |
RTX3500 | LAN1〜LAN4 | jumbo | 10000 |
RTX3000 | LAN1, LAN2 | jumbo | 2500 |
LAN3, LAN4 | large | 2500 |
※パケットのサイズによってはjumboが使用される場合があります
<パケットバッファの確認方法>
show status packet-buffer コマンドによりパケットバッファの確保状況が確認できます。
以下、RTX3000を例に説明します。
# show status packet-buffer small group: 152 bytes length parameters: max-buffer=2500 max-free=937 min-free=62 buffer-in-chunk=625 init-chunk=1 625 buffers in free list 0 buffer is allocated, req/succ/fail/rel = 18/18/0/18 1 chunk is allocated, req/succ/fail/rel = 1/1/0/0 middle group: 600 bytes length parameters: max-buffer=6664 max-free=2499 min-free=166 buffer-in-chunk=1666 init-chunk=1 1666 buffers in free list 0 buffer is allocated, req/succ/fail/rel = 0/0/0/0 1 chunk is allocated, req/succ/fail/rel = 1/1/0/0 large group: 2048 bytes length parameters: max-buffer=10000 max-free=2812 min-free=62 buffer-in-chunk=625 init-chunk=4 2372 buffers in free list 128 buffers are allocated, req/succ/fail/rel = 128/128/0/0 4 chunks are allocated, req/succ/fail/rel = 4/4/0/0 jumbo group: 9728 bytes length parameters: max-buffer=10000 max-free=2812 min-free=62 buffer-in-chunk=625 init-chunk=4 2372 buffers in free list 128 buffers are allocated, req/succ/fail/rel = 232125/232125/0/231997 4 chunks are allocated, req/succ/fail/rel = 4/4/0/0 huge group: 65664 bytes length parameters: max-buffer=20 max-free=0 min-free=0 buffer-in-chunk=1 init-chunk=0 0 buffer in free list 0 buffer is allocated, req/succ/fail/rel = 0/0/0/0 0 chunk is allocated, req/succ/fail/rel = 0/0/0/0 |
# show status packet-buffer small group: 152 bytes length parameters: max-buffer=2500 max-free=937 min-free=62 buffer-in-chunk=625 init-chunk=1 625 buffers in free list 0 buffer is allocated, req/succ/fail/rel = 18/18/0/18 1 chunk is allocated, req/succ/fail/rel = 1/1/0/0 middle group: 600 bytes length parameters: max-buffer=6664 max-free=2499 min-free=166 buffer-in-chunk=1666 init-chunk=1 1666 buffers in free list 0 buffer is allocated, req/succ/fail/rel = 0/0/0/0 1 chunk is allocated, req/succ/fail/rel = 1/1/0/0 large group: 2048 bytes length parameters: max-buffer=10000 max-free=2812 min-free=62 buffer-in-chunk=625 init-chunk=4 2372 buffers in free list 128 buffers are allocated, req/succ/fail/rel = 128/128/0/0 4 chunks are allocated, req/succ/fail/rel = 4/4/0/0 jumbo group: 9728 bytes length parameters: max-buffer=10000 max-free=2812 min-free=62 buffer-in-chunk=625 init-chunk=4 2376 buffers in free list 124 buffers are allocated, req/succ/fail/rel = 301348/293103/8245/292979 4 chunks are allocated, req/succ/fail/rel = 4/4/0/0 huge group: 65664 bytes length parameters: max-buffer=20 max-free=0 min-free=0 buffer-in-chunk=1 init-chunk=0 0 buffer in free list 0 buffer is allocated, req/succ/fail/rel = 0/0/0/0 0 chunk is allocated, req/succ/fail/rel = 0/0/0/0 |
jumboフレームサイズのパケットバッファの獲得に失敗しています。このような状況ではQoSの性能を充分に発揮させることができません。また、このとき show status INTERFACE コマンドからも受信バッファエラーが発生していることを確認できます。
# show status lan1 LAN1 説明: イーサネットアドレス: 00:a0:de:07:f6:a4 動作モード設定: Auto Negotiation (1000BASE-T Full Duplex) 最大パケット長(MTU): 1500 オクテット プロミスキャスモード: OFF 送信パケット: 11 パケット(642 オクテット) 受信パケット: 292947 パケット(155755196 オクテット) 受信バッファエラー: 8245 |
<必要なパケットバッファの計算方法>
QoSで使用するクラスにはキュー長が定められています。したがって、使用するクラスすべてのキュー長の合計が、予め用意しておくべきパケットバッファ数となります。実際に割り当てられているキュー長は、show status qos コマンドから確認できます。各機種のLANインタフェース、またはWANインタフェースにおけるクラスごとのキュー長の初期値は以下の通りです。
機種 | キュー長の初期値 |
---|---|
RTX5000 | 600 |
RTX3510 | 600 |
RTX3500 | 600 |
RTX3000 | 200 |
RTX3000を例に、必要なパケットバッファの計算方法を示します。
パケットバッファ数:10×200=2000
→ 初期設定のパケットバッファで足りているので、チューニングする必要はない。
パケットバッファ数:10×4×50=2000
→ 初期設定のパケットバッファで足りているので、チューニングする必要はない。
パケットバッファ数:50×200=10000
→ 初期設定のパケットバッファでは足りないので、チューニングする必要がある。
パケットバッファ数:50×4×200=40000
→ 初期設定のパケットバッファでは足りないので、チューニングする必要がある。
<パケットバッファのチューニング方法>
system packet-buffer コマンドにより、ルーターの起動時に確保するパケットバッファ数を変更できます。ここでは、RTX3000のLAN1インタフェースでパケットバッファ枯渇が発生しているという前提でjumboフレームサイズのパケットバッファを増やす例を挙げます。例 3 の場合、10000個のパケットバッファを用意する必要があるため、次のような設定を追加し、設定を有効にするためルーターを再起動させます。
# system packet-buffer jumbo max-buffer=15000 max-free=11000 init-chunk=16
init-chunk は起動時に確保するパケットバッファのチャンク数を示します。チャンクとはパケットを一定の数でまとめた集合であり、初期設定ではjumboフレームバッファは一つのチャンクに625個あります。したがって、init-chunk に16を設定することにより、625×16=10000 のパケットバッファを確保することができます。max-free は、フリーバッファの最大数であり、フリーバッファ数がこの数値を超えるとチャンクが一つずつ動的に解放されてしまうため、10000よりも多く設定しておかなければなりません。max-buffer はフリーバッファと使用中のバッファを合わせたパケットバッファの最大数です。なお、メモリを多大に消費してしまうことを防止するため、system packet-buffer コマンドでは各パラメータの初期値の4倍の値までしか入力できないように制限を設けています。
例 4 の場合、40000個のパケットバッファを用意する必要がありますが、前述の制約のため、system packet-buffer コマンドだけでは必要なパケットバッファを用意することができません。この場合、同時にクラスのキュー長を減らす必要があり、次のように二つの設定を追加します。system packet-buffer コマンドの設定を有効にするためにはルーターを再起動させる必要があります。
# system packet-buffer jumbo max-buffer=15000 max-free=11000 init-chunk=16・・・(1) # queue INTERFACE length 50・・・(2)
queue INTERFACE length コマンドによりクラスごとのキュー長を50に設定することで、必要なパケットバッファ数が 50×4×50=10000 となります。また、(2)の代わりに、
# queue INTERFACE length secondary 30 40 50 80
のように、第2階層クラスごとのキュー長を変更することもできます。queue INTERFACE length secondary コマンドを使用すれば、第2階層クラスの優先度に応じてキュー長を設定することができます。この場合の必要なパケットバッファ数も 50×(30+40+50+80)=10000 となります。
階層型QoSを使用する場合、第1階層の各クラスは配下に優先制御クラスを4つ持つことができるため、使用できる最大のクラス数は第1階層で使用可能なクラス数の4倍となります。各機種で使用可能な最大のクラス数は下表の通りです。
機種 | 使用可能な最大クラス数 |
---|---|
RTX5000 | 400 |
RTX3510 | 1000 |
RTX3500 | 400 |
RTX3000 | 400 |
クラス数が増えることで、queue class filter の定義も増え、クラス分けの処理に高い負荷が掛かることになります。クラス分けの性能限界には様々な要因がからみますが、概して次のようなときに負荷が高くなります。
クラス分け処理に高負荷が掛かり性能限界にまで到達すると、受信バッファエラーが発生します。受信バッファエラーが発生すると、優先度の高いパケットでもQoS処理に回される以前の受信時に破棄されてしまうため、QoSの性能を充分に発揮させることができません。多対地との通信にQoSを利用する場合は、性能限界に達していないか確認をしてください。性能限界に達している環境では、ルーターの設定やネットワークの運用方法を見直す必要があります。
<確認方法>
show environment コマンドによりCPU負荷率を監視します。100%に達している場合は、クラス分け処理の性能限界に到達していると考えれれます。また、このとき show status INTERFACE コマンドからも受信バッファエラーが発生していることが確認できます。