多対地QoSの注意事項

$Date: 2023/08/10 17:00:58 $


概要

階層型QoSに対応する機種では、下表の第1階層クラス数が使用可能であり、多数拠点と接続するセンター機器側で各拠点ごとにQoS制御が行うことができますが、クラス数が増えることにより性能的な制約が出てきます。多対地との通信にQoSを利用する上での注意すべきポイントを本ページで説明します。

機種第1階層クラス数
RTX5000100
RTX3510250
RTX3500100
RTX3000100

キュー長自動設定機能に対応する機種では、本ページで説明するクラス毎のキュー長、およびパケットバッファの設定を自動で行うことができます。 キュー長自動設定機能に対応する機種およびファームウェアは以下の通りです。

機種ファームウェア
RTX3510すべてのリビジョン

詳細については、以下のドキュメントを参照してください。


多対地QoSを行う上での注意事項

多対地と通信を行うときのようにクラスを多数使用してQoSを行う場合には、主に次に挙げる二つのポイントに注意する必要があります。

  1. パケットバッファ

    QoS制御によりルーターの内部に大量にパケットが溜められる状況になると、初期設定のままではパケットバッファが枯渇し、受信バッファエラーが発生することがあります。パケットバッファが枯渇すると、優先度の高いパケットでもQoS処理に回される前の受信時に破棄されてしまうため、QoSの性能を充分に発揮させることができません。そこで、使用するクラス数によってはパケットバッファを増やす必要が出てきます。

    パケットの受信に使用されるパケットバッファの種別は、機種やパケットを受信するLANインタフェースによって異なります。 各LANインタフェースで受信に使用されるパケットバッファの種別、および初期設定で準備されている個数は以下の通りです。

    機種LANインタフェース受信用パケットバッファの種別初期設定で準備されている個数
    RTX5000LAN1〜LAN4jumbo10000
    RTX3510LAN1〜LAN4large(※)40000
    RTX3500LAN1〜LAN4jumbo10000
    RTX3000LAN1, LAN2jumbo2500
    LAN3, LAN4large2500

    ※パケットのサイズによってはjumboが使用される場合があります

    <パケットバッファの確認方法>

    show status packet-buffer コマンドによりパケットバッファの確保状況が確認できます。

    以下、RTX3000を例に説明します。



    <必要なパケットバッファの計算方法>

    QoSで使用するクラスにはキュー長が定められています。したがって、使用するクラスすべてのキュー長の合計が、予め用意しておくべきパケットバッファ数となります。実際に割り当てられているキュー長は、show status qos コマンドから確認できます。各機種のLANインタフェース、またはWANインタフェースにおけるクラスごとのキュー長の初期値は以下の通りです。

    機種キュー長の初期値
    RTX5000600
    RTX3510600
    RTX3500600
    RTX3000200

    RTX3000を例に、必要なパケットバッファの計算方法を示します。


    <パケットバッファのチューニング方法>

    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 となります。


  2. クラス分け処理の性能限界

    階層型QoSを使用する場合、第1階層の各クラスは配下に優先制御クラスを4つ持つことができるため、使用できる最大のクラス数は第1階層で使用可能なクラス数の4倍となります。各機種で使用可能な最大のクラス数は下表の通りです。

    機種使用可能な最大クラス数
    RTX5000400
    RTX35101000
    RTX3500400
    RTX3000400

    クラス数が増えることで、queue class filter の定義も増え、クラス分けの処理に高い負荷が掛かることになります。クラス分けの性能限界には様々な要因がからみますが、概して次のようなときに負荷が高くなります。

    クラス分け処理に高負荷が掛かり性能限界にまで到達すると、受信バッファエラーが発生します。受信バッファエラーが発生すると、優先度の高いパケットでもQoS処理に回される以前の受信時に破棄されてしまうため、QoSの性能を充分に発揮させることができません。多対地との通信にQoSを利用する場合は、性能限界に達していないか確認をしてください。性能限界に達している環境では、ルーターの設定やネットワークの運用方法を見直す必要があります。

    <確認方法>

    show environment コマンドによりCPU負荷率を監視します。100%に達している場合は、クラス分け処理の性能限界に到達していると考えれれます。また、このとき show status INTERFACE コマンドからも受信バッファエラーが発生していることが確認できます。