[index] SwitchBlade 4000シリーズ コマンドリファレンス 2.6

スイッチング/ポリシーベースQoS


  - 概要
  - 構成要素
   - スイッチポート
   - QoSポリシー
   - トラフィッククラス
   - フローグループ
   - クラシファイア
   - パケットの照合順序について
  - 基本設定
   - QoSポリシーとスイッチポート
   - トラフィッククラス
   - フローグループ
   - クラシファイア
  - 詳細設定
   - 帯域制御
    - デフォルトトラフィッククラス
    - 最小帯域(帯域保証)
    - 最大帯域(帯域制限)
    - 重み付けに基づく帯域配分
   - DSCPフィールドの書き換え
   - REDアルゴリズム
  - 設定例
   - 最小帯域保証
   - DiffServ


本製品は、ユーザーが定義したポリシーに基づき、送出トラフィックに任意のサービスレベル(帯域)を割り当てるポリシーベースQoS(Quality of Service)機能を備えています。

Note - IEEE 802.1p準拠のプライオリティータグに基づくQoSはサポートしておりません。

Note - ポリシーベースQoSの帯域制御機能とスイッチポートの帯域制限機能(SET SWITCH PORTコマンドのEGRESSLIMITパラメーター)は併用できません。

 

概要

ポリシーベースQoSでは、クラシファイアと呼ばれる汎用のパケットフィルターを用いてパケットを分類し、クラスごとに帯域を割り当てます。

ポリシーベースQoSを使うと、次のことが可能です。


 

構成要素

本製品のポリシーベースQoS機能は、以下の基本要素から成り立っています。



以下、各要素について説明します。

 

スイッチポート

本製品のQoS機能は、スイッチポート(出力ポート)ごとに設定します。これは、後述するQoSポリシーをスイッチポートに割り当てることで行います。

本製品は、ポートを通過するパケットをトラフィッククラスに分類し、各クラスの設定に基づいて送信帯域や送信順序を制御します。

 

QoSポリシー

QoSポリシーは、スイッチポートからパケットを出力するときに帯域制御を行うためのメカニズムで、ポリシーベースQoSの中心となる構成要素です。QoSポリシーは、トラフィッククラスの集合として定義します。通常、QoSポリシーは、ユーザー定義のトラフィッククラス(複数)とデフォルトトラフィッククラス(1つ)から構成されます。

QoSポリシーをスイッチポートに関連付けると、ポートから出力されるトラフィックに対して、該当するトラフィッククラスで定められた最大・最小帯域と帯域配分時の優先度(重み)が割り当てられます。

QoSポリシーは、スイッチポートの帯域をどのように配分すべきか定義するものと言えます。

 

トラフィッククラス

トラフィッククラスは、同等のQoS(帯域)を与えるべきパケットフローをひとまとめにしたものです。トラフィッククラスはフローグループの集合として定義します。帯域割り当てや帯域配分時の優先度など、QoSパラメーターの多くはトラフィッククラス単位で設定します。QoSポリシー内のトラフィッククラスは、各クラスの設定に基づき、ポート帯域を分け合うことになります。

ポリシーベースQoSでは、トラフィッククラスごとに送信時の最小帯域幅(保証帯域)、最大帯域幅、帯域配分時の優先度(重み:Weight)などを設定できます。

たとえば、トラフィッククラス「TCP」とトラフィッククラス「UDP」を定義し、TCPにポート帯域の70%、UDPに20%、その他(デフォルトトラフィッククラス)に10%を割り当てるようなことができます。

Note - 実際のトラフィッククラスは「TCP」「UDP」のような名前ではなく、番号で識別します。ただし、覚え書きとして文字列を割り当てることはできます(DESCRIPTIONパラメーター)。

トラフィッククラスは、QoSポリシーに割り当てて使います。なお、QoSポリシーには、ユーザー定義のトラフィッククラスに加え、暗黙のデフォルトトラフィッククラスが存在します。ユーザー定義のトラフィッククラスに分類されないトラフィックは、自動的にデフォルトトラフィッククラスの所属として処理されます。

 

フローグループ

フローグループは、同等な性格を持つパケットのフロー(流れ)をグループ化したものです(アプリケーションの「行き」と「戻り」など)。QoSパラメーターの多くはトラフィッククラスのレベルで設定しますが、トラフィッククラスに割り当てられた帯域の中でより細かい制御を行いたい場合は、フローグループごとに帯域制御の方法を微調整することができます。

たとえば、前述のトラフィッククラス「TCP」に対し、「Web」、「FTP」、「その他」という3つのフローグループを定義し、「FTP」、「Web」、「その他」のそれぞれに対して異なるREDカーブを適用することができます。

Note - 実際のフローグループは「Web」「FTP」「その他」のような名前ではなく、番号で識別します。ただし、覚え書きとして文字列を割り当てることはできます(DESCRIPTIONパラメーター)。

パケットフローは、クラシファイアと呼ばれる汎用のパケットフィルターによって定義します。したがって、フローグループはクラシファイアの集合として定義します。また、フローグループは、トラフィッククラスに割り当てて使います。

フローグループは、QoSパラメーターの最小設定単位です。

 

クラシファイア

クラシファイアは、IPアドレス、ポート、プロトコルなど、さまざまな条件に基づいてパケットを「フロー」に分類する汎用のパケットフィルターです。本製品では、ハードウェアパケットフィルターとポリシーベースQoSの両機能でクラシファイアを使用しています。

ポリシーベースQoSでは、クラシファイアを使ってパケットを「フロー」に分類します。ただし、QoSパラメーターの設定は、フローを束ねた「フローグループ」またはフローグループを束ねた「トラフィッククラス」を単位として行います。

 

パケットの照合順序について

パケットとクラシファイアの照合は、次の順序でおこなわれます。

図中のトラフィッククラス、フローグループ、クラシファイアは、いずれも番号の小さいものから大きなものの順に上位のオブジェクトに追加されたものと仮定しています。

なお、ここでの「上位のオブジェクト」とは、トラフィッククラスに対するQoS ポリシー、フローグループに対するトラフィッククラス、クラシファイアに対するフローグループを意味しています。


次に例をあげて解説します。下記のコマンドを実行し、QoS ポリシー「1」を ポート「1」に適用するとします。

この場合、パケットとクラシファイアの照合は、クラシファイア 111, 112, 113, 121, 122, 211, 212, 213の順に行われます。

ここで注意すべきことがあります。照合順序を決めるのはトラフィッククラス、フローグループ、クラシファイアの ID(番号)ではなく、それらを上位のオブジェクトに追加した順序だということです。

例では、ID 順 = 追加順となるように設定しているため見落としがちですが、照合順序は ID 順ではなく追加(ADD)順によって決まります。

たとえば、上記設定例の (2) の部分を次のように変更した場合(3、4 行目を入れ替えた)、照合順序は 211, 212, 213, 111, 112, 113, 121, 122 となります。


なお、追加順序の確認は下記のコマンドで行います。

■ トラフィッククラスの追加順は、SHOW QOS POLICYコマンドのTrafficclasses または TCs Assigned で確認できます。

次の出力例では、トラフィッククラス 2, 1 の順に、ポリシーへの追加が行われていることがわかります。


■ 同様に、フローグループの追加順は SHOW QOS TRAFFICCLASSコマンドのFlowGroups または Flow Groups で確認できます。

■ 同様に、クラシファイアの追加順は SHOW QOS FLOWGROUPコマンドのClassifiers で確認できます。

 

基本設定

ポリシーベースQoSの設定は、QoSポリシーを作成し、スイッチポートに関連付けることによって行います。QoSポリシーは前図のような階層構造になっているため、ポリシーの作成はこの階層を形づくる作業と言えます。

Note - ポリシーベースQoSの帯域制御機能とスイッチポートの帯域制限機能(SET SWITCH PORTコマンドのEGRESSLIMITパラメーター)は併用できません。どちらか一方だけを使用するようにしてください。

QoSポリシーの作成手順に明確な決まりはありません。最終的にすべての構成要素を1つにまとめられれば、どのような順番でもかまいません。ここでは、一例として次の手順を挙げておきます。

  1. QoSポリシーを作成する
  2. QoSポリシーをスイッチポートに関連付ける
  3. トラフィッククラスを作成する
  4. トラフィッククラスをQoSポリシーに割り当てる
  5. フローグループを作成する
  6. フローグループをトラフィッククラスに割り当てる
  7. クラシファイアを作成する
  8. クラシファイアをフローグループに割り当てる

以下、QoSポリシーの基本的な設定項目について解説します。ポリシーの詳細設定については、次節「詳細設定」をご覧ください。また、全体的な設定例については、次々節「設定例」をご覧ください。

 

QoSポリシーとスイッチポート

ポリシーベースQoSの基本要素はQoSポリシーです。本製品では、スイッチポートにQoSポリシーを関連付けることで、該当ポートからパケットを送信するときの動作を制御します。

■ QoSポリシーを作成するには、CREATE QOS POLICYコマンドを使います。DTCPERCENTパラメーターには、デフォルトトラフィッククラスに割り当てる帯域(最小かつ最大帯域)を、ポートの帯域に対するパーセンテージで指定します。省略時は20%です。

次の例では、デフォルトトラフィッククラスにポート帯域の15%を割り当てています。


Note - DTCPERCENTは最小保証帯域である同時に最大帯域(使用可能な帯域の上限)でもあります。

Note - ポリシーベースQoSの帯域制御機能とスイッチポートの帯域制限機能(SET SWITCH PORTコマンドのEGRESSLIMITパラメーター)は併用できません。どちらか一方だけを使用するようにしてください。

■ QoSポリシーをスイッチポートに割り当てるには、SET QOS PORTコマンドを使います。これにより、該当ポートから送出されるパケットにQoSポリシーが適用されます。


Note - スイッチポートには、QoSポリシーを1つだけ割り当てることができます。

Note - QoSポリシーは、複数のスイッチポートに割り当てることができます。また、QoSポリシーには、複数のトラフィッククラスを割り当てることができます。

Note - QoS設定パラメーター(帯域設定など)のエラーチェックは、「トラフィッククラス割り当て済みのポリシーをスイッチポートに関連付けたとき」あるいは「スイッチポートに関連付けられたQoSポリシーにトラフィッククラスやフローグループを追加したとき」に行われます。したがって、QoSの設定では、最初にQoSポリシーを作成しスイッチポートに割り当てたあとで、トラフィッククラスやフローグループの設定をすることをおすすめします。

■ ポートからQoSポリシーを削除(関連付けを削除)するには、SET QOS PORTコマンドのPOLICYパラメーターにNONEを指定します。


 

トラフィッククラス

トラフィッククラスは、同等のQoSを与えるべきトラフィック(たとえば、「TCPトラフィック」)をひとまとめにしたものです。QoSパラメーターの多くは、トラフィッククラスごとに設定します。

QoSポリシーは、複数のトラフィッククラスで構成されます。QoSポリシー内の各トラフィッククラスは、各クラスの設定に基づきポート帯域を分け合うことになります。

■ トラフィッククラスを作成するには、CREATE QOS TRAFFICCLASSコマンドを使います。


■ トラフィッククラスに割り当てる最小帯域(保証帯域)、最大帯域(上限値)、REDアルゴリズム(後述)の使用・不使用、DSCPフィールドの書き換え設定(後述)は、それぞれMINBANDWIDTH、MAXBANDWIDTH、RED、MARKVALUEパラメーターで指定します。


Note - MINBANDWIDTH、MAXBANDWIDTHは、内部キューからデータを送り出すときの送信レートを示しています。回線(ケーブル)上での送信レートとは異なるので注意してください。パケットが回線上に出力されるときは、フレーム間ギャップ(IFG)やプリアンブルが付加されるため、実際の送信レートはこれらのパラメーターで指定した値よりも小さくなります。なお、パケットサイズが大きいほどIFGやプリアンブルの割合(オーバーヘッド)が減るので、実際の送信レートがパラメーター指定値に近づきます。

■ 作成したトラフィッククラスの設定を変更するには、SET QOS TRAFFICCLASSコマンドを使います。


■ トラフィッククラスをQoSポリシーに割り当てるには、ADD QOS POLICYコマンドを使います。パケットのチェック(クラシファイアとの照合)は、ポリシー内のトラフィッククラス追加順、トラフィッククラス内のフローグループ追加順、フローグループ内のクラシファイア追加順に行われます(前掲の図を参照)。


Note - QoSポリシーには複数のトラフィッククラスを割り当てることができます。

Note - トラフィッククラスは、1つのQoSポリシーにしか割り当てることができません。あるポリシーに割り当てたトラフィッククラスは、別のポリシーでは使用できません。

Note - トラフィッククラスには、複数のフローグループを割り当てることができます。

 

フローグループ

フローグループは、トラフィッククラスをさらに細分化したものです。QoSポリシーの設定の大半はトラフィッククラスのレベルで行いますが、同一トラフィッククラス内でより細かな設定をしたい場合は、トラフィッククラスを構成するフローグループごとに微調整が可能です。

フローグループは、クラシファイアによって分類された「フロー」をグループ化したものです。同じ性格を持つフロー(特定アプリケーションの「行き」と「戻り」など)を束ねたものと言えます。フローグループは、複数のクラシファイアで構成されます。

トラフィッククラスに割り当てられた帯域の中で、より細かい制御を行いたい場合は、フローグループごとに帯域制御の方法を微調整することができます。

■ フローグループを作成するには、CREATE QOS FLOWGROUPコマンドを使います。


■ パケットがどのフローグループに所属するかを決定するのは、汎用のパケットフィルターであるクラシファイアです。クラシファイアはCREATE CLASSIFIERコマンドで作成します。たとえば、Webトラフィック(HTTPとHTTPS)に対応するクラシファイアは次のようになります。


■ フローグループにクラシファイアを関連付けるには、ADD QOS FLOWGROUPコマンドを使います。クラシファイアのチェックは、本コマンドで追加した順番で行われます。


■ 通常、QoSパラメーター(最大・最小帯域、REDカーブ、DSCP値)はトラフィッククラス単位で設定しますが、REDカーブ、DSCP値はフローグループ単位で設定することもできます。これらは、CREATE QOS FLOWGROUPコマンド、SET QOS FLOWGROUPコマンドのRED、MARKVALUEパラメーターで指定します。


REDカーブやDSCP値がフローグループとトラフィッククラスの両方に設定されている場合は、フローグループの設定が使用されます。フローグループで設定されていないパラメーターについては、トラフィッククラスの設定が使用されます。

■ フローグループは、トラフィッククラスに割り当てて使います。フローグループをトラフィッククラスに割り当てるには、ADD QOS TRAFFICCLASSコマンドを使います。パケットのチェック(クラシファイアとの照合)は、ポリシー内のトラフィッククラス追加順、トラフィッククラス内のフローグループ追加順、フローグループ内のクラシファイア追加順に行われます(前掲の図を参照)。


Note - フローグループは、1つのトラフィッククラスにしか割り当てることができません。一方、トラフィッククラスには、複数のフローグループを割り当てることができます。

 

クラシファイア

ポリシーベースQoS機能の中心要素がQoSポリシーだとすると、末端の要素はクラシファイアです。クラシファイアは、ハードウェアパケットフィルターでも用いられる汎用のパケットフィルターで、アドレス、プロトコルなどをもとにパケットを「フロー」に分類する働きを持ちます。

ポリシーベースQoSでは、パケットをフローグループやトラフィッククラスに分類して、グループやクラスごとに処理を行いますが、これらの分類の第一歩はクラシファイアによって行われます。

■ クラシファイアはCREATE CLASSIFIERコマンドで作成します。クラシファイアの詳細については、「スイッチング」の「クラシファイア」をご覧ください。


Note - クラシファイアの設定において、ファイアウォールポリシーに追加されたインターフェース(VLAN)をSVLANに指定しないでください。指定した場合、そのクラシファイアは、ルーティングパケットに対しては機能しません(スイッチングパケットに対しては機能します)。この現象は、ファイアウォール機能が無効であっても発生するのでご注意ください。

Note - SVLANを指定したクラシファイアは、インスタンスをまたぐパケットに対しては無効です。

■ フローグループはクラシファイアの集合として定義します。フローグループにクラシファイアを割り当てるには、ADD QOS FLOWGROUPコマンドを使います。クラシファイアのチェックは、本コマンドで追加した順番で行われます。


Note - クラシファイアは、複数のフローグループに割り当てることができます。ただし、同一ポリシー内で同じクラシファイアを複数回使うことは、動作が予測できないため避けてください。

 

詳細設定

ここでは、より詳細なQoS設定に必要となる設定項目について解説します。

 

帯域制御

ポリシーベースQoSでは、トラフィッククラスごとにポート帯域の割り当てが可能です。トラフィッククラス1〜nを定義している場合、スイッチポートの送信帯域は次のクラス間で配分されます。


クラス間の帯域配分は、以下の設定要素に基づいて行われます。


以下、それぞれの設定について解説します。

 

デフォルトトラフィッククラス

デフォルトトラフィッククラスは、QoSポリシーを作成したときに自動的に作られる暗黙のトラフィッククラスです。ユーザー定義のトラフィッククラスに分類されないトラフィックは、すべてデフォルトトラフィッククラスの所属として扱われます。

デフォルトトラフィッククラスには、CREATE QOS POLICYコマンド、SET QOS POLICYコマンドのDTCPERCENTパラメーターで指定したパーセンテージのポート帯域が割り当てられます。

たとえば、QoSポリシー「5」を次のようにして作成した場合、デフォルトトラフィッククラスにはポート帯域の10%が割り当てられます。


デフォルトトラフィッククラスには、DTCPERCENTの帯域が保証されますが、DTCPERCENTを超える帯域は割り当てられません。

デフォルト以外のトラフィッククラスが利用できる帯域は、ポート帯域からDTCPERCENT分を差し引いた量になります。

 

最小帯域(帯域保証)

デフォルト以外のトラフィッククラスには、それぞれ最小帯域(最低限確保する帯域)を設定できます。特に設定しなかった場合の最小帯域は64Kbps(ほぼ0に近い)になります。

Note - デフォルトトラフィッククラスの最小帯域は、ポート帯域×DTCPERCENT÷100となります。これは同時に最大帯域でもあります。

■ 最小帯域はCREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドのMINBANDWIDTHパラメーターで設定します。単位としてはK(Kbps)、M(Mbps = 1000Kbps)、G(Gbps = 1000000Kbps)を指定できます。単位を省略した場合はKbpsとなります。


Note - MINBANDWIDTHは、内部キューからデータを送り出すときの送信レートを示しています。回線(ケーブル)上での送信レートとは異なるので注意してください。パケットが回線上に出力されるときは、フレーム間ギャップ(IFG)やプリアンブルが付加されるため、実際の送信レートはMINBANDWIDTHで指定した値よりも小さくなります。なお、パケットサイズが大きいほどIFGやプリアンブルの割合(オーバーヘッド)が減るので、実際の送信レートがMINBANDWIDTHの値に近づきます。

同じQoSポリシーに属するトラフィッククラスは、スイッチポートの送信帯域を分け合いますが、デフォルトトラフィッククラスにDTCPERCENT分の帯域が割り当てられるため、通常トラフィッククラスのMINBANDWIDTHの合計は、ポート帯域からDTCPERCENT分を引いた値以下でなくてはなりません。


Note - ここで、sum(MINBANDWIDTH)は、全トラフィッククラスのMINBANDWIDTHの合計を示しています。

たとえば、100Mでリンクアップしているポート4にQoSポリシー「1」を関連付けたとします。QoSポリシーのDTCPERCENTパラメーターが25に設定されている場合、同ポリシーのデフォルトトラフィッククラスには25Mbpsの送信帯域が保証されます。したがって、ユーザー定義のトラフィッククラスには75Mbpsの帯域が残ります。

ポリシーが3つのトラフィッククラス(1、2、3)を持つとすると、帯域設定の可否は次のようになります。


Note - QoS設定パラメーター(帯域設定など)のエラーチェックは、トラフィッククラス割り当て済みのポリシーをスイッチポートに関連付けたとき、あるいは、スイッチポートに関連付けられたQoSポリシーにトラフィッククラスやフローグループを追加したとき、に行われます。したがって、QoSの設定では、最初にQoSポリシーを作成しスイッチポートに割り当てたあとで、トラフィッククラスやフローグループの設定をすることをおすすめします。

各トラフィッククラスの最小帯域の合計を超える帯域については、トラフィッククラスごとの「重み付け」(WEIGHTパラメーター)に基づいて、トラフィッククラス間で均等配分されます。ただし、各トラフィッククラスの最大帯域を超えるような割り当ては行いません。詳しくは「重み付けに基づく帯域配分」をご覧ください。

 

最大帯域(帯域制限)

デフォルト以外のトラフィッククラスには、それぞれ最大帯域(割り当てる帯域の上限値)を設定できます。特に設定しなかった場合の最大帯域は16Gbps(事実上無制限)になります。

Note - デフォルトトラフィッククラスの最大帯域は、ポート帯域×DTCPERCENT÷100となります。これは同時に最小帯域でもあります。

■ 最大帯域はCREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドのMAXBANDWIDTHパラメーターで設定します。単位としてはK(Kbps)、M(Mbps = 1000Kbps)、G(Gbps = 1000000Kbps)を指定できます。単位を省略した場合はKbpsとなります。


Note - MAXBANDWIDTHは、内部キューからデータを送り出すときの送信レートを示しています。回線(ケーブル)上での送信レートとは異なるので注意してください。パケットが回線上に出力されるときは、フレーム間ギャップ(IFG)やプリアンブルが付加されるため、実際の送信レートはMAXBANDWIDTHで指定した値よりも小さくなります。なお、パケットサイズが大きいほどIFGやプリアンブルの割合(オーバーヘッド)が減るので、実際の送信レートがMAXBANDWIDTHの値に近づきます。

 

重み付けに基づく帯域配分

各トラフィッククラスの最小帯域の合計を超える帯域(余剰帯域)については、トラフィッククラスごとの重み付け(WEIGHTパラメーター)に基づいて、トラフィッククラス間で均等配分されます。ただし、各トラフィッククラスの最大帯域を超えるような割り当ては行いません。

■ トラフィッククラスの重み付けはCREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドのWEIGHTパラメーターで行います。トラフィッククラスのデフォルトWEIGHTは1、すなわちすべてのトラフィッククラスが平等です。


WEIGHTに指定できる値は、以下の通りです。


■ 重み付けに基づく余剰帯域の配分方法は次のとおりです。ここではトラフィッククラス1〜nが存在すると仮定し、次の記号を用いて説明します。


  1. ポートの送信帯域から、デフォルトトラフィッククラスに割り当てた帯域(DTCPERCENT)分を差し引きます(bw)。


  2. さらに、各トラフィッククラスの最小保証帯域を差し引きます(bw)。


  3. 残りの帯域(bw)を各トラフィッククラスの「重み付け」値に基づいて配分します。最初にそれぞれの「重み付け値の逆数」を求め、「重み付け値の逆数の合計」を求めます。


  4. トラフィッククラスごとに残り帯域×「重み付け値の逆数」÷「重み付け値の逆数の合計」を求めます。これが各トラフィッククラスに追加配分される帯域です。


  5. 各トラフィッククラスの最小保証帯域に手順4で求めた追加配分帯域を足したものが、該当トラフィッククラスに割り当てられる実際の帯域幅になります。


■ 次に重み付けに基づく帯域配分の例を示します。ここでは、4つのトラフィッククラス1、2、3、4にそれぞれ1、2、4、8というWEIGHTを設定すると仮定します。その場合の余剰帯域配分比率は、下記のとおりとなります。

表 1:重み付けに基づく帯域配分の例
トラフィッククラス
WEIGHT
1/WEIGHT
配分比率
計算式
Class 1 1 1 0.5333 = 1/1.875
Class 2 2 0.5 0.2667 = 0.5/1.875
Class 3 4 0.25 0.1333 = 0.25/1.875
Class 4 8 0.125 0.0667 = 0.125/1.875
合計   1.875 1.000  


■ すべてのトラフィッククラスに帯域を均等に割り当てるには、各トラフィッククラスのMAXBANDWIDTH、MINBANDWIDTH、WEIGHTパラメーターを同じ値に設定します。デフォルト(前記のパラメーターを指定しなかった場合)では、このような設定になっています。

 

DSCPフィールドの書き換え

DiffServ(Differentiated Service)ドメインを運用する場合、IPパケットのDSCP(DiffServ Code Point)フィールドに基づいてQoSを割り当てたり、DSCPフィールドを書き換えたりする機能が必要になります。

ポリシーベースQoSでは、トラフィッククラスまたはフローグループ単位で、DSCPフィールドの書き換え設定が可能です。この機能は、おもにDiffServドメインのエッジルーター(スイッチ)で使います。

■ トラフィッククラスに所属するパケットのDSCPフィールドを書き換えるには、CREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドのMARKVALUEパラメーターを使います。DSCP値の有効範囲は0〜63です。MARKVALUEパラメーターを指定しなかった場合、あるいは、NONEを指定した場合はDSCPを書き換えません。

たとえば、トラフィッククラス「2」のパケットにDSCP値20を設定するには次のようにします。


■ フローグループに所属するパケットのDSCPフィールドを書き換えるには、CREATE QOS FLOWGROUPコマンド、SET QOS FLOWGROUPコマンドのMARKVALUEパラメーターを使います。DSCP値の有効範囲は0〜63です。MARKVALUEパラメーターを指定しなかった場合、あるいは、NONEを指定した場合はDSCPを書き換えません。

たとえば、フローグループ「10」のパケットにDSCP値25を設定するには次のようにします。


なお、フローグループにMARKVALUEが設定されている場合は、該当フローグループのMARKVALUEに基づいてDSCPフィールドの書き換えが行われます。フローグループにMARKVALUEが設定されていない場合は、トラフィックグループのMARKVALUEが使用されます。

 

REDアルゴリズム

本製品は、トラフィッククラスごとに仮想的なキュー(仮想キュー)を保持しています。通常は、仮想キューの長さがトラフィッククラスに割り当てられた最大帯域を超えると、超過分のパケットを破棄します(ドロップテイル「drop-tail」アルゴリズム)。

これに対し、RED(Random Early Detection/Discard)は、仮想キュー長が上限に達する前にパケットを徐々に破棄していくことで、キューの枯渇を予防したり、トランスポート層の輻輳回避メカニズムを有効に機能させたりするためのアルゴリズムです。REDを使用すれば、より細やかな帯域制御を実現できます。

REDアルゴリズムの設定は、仮想キュー長とパケット破棄率の関係を示す「REDカーブ」を定義し、これをトラフィッククラスかフローグループに割り当てることによって行います。

REDカーブは以下のパラメーターによって定義します。


各パラメーターを図示すると次のようになります。仮想キュー長がSTARTからSTOPの間にある場合、パケットは0からDROPPROBの間の確率でランダムに破棄されます。パケットの破棄率はキュー長がSTOPに近づくにつれ高くなっていき、STOPのときDROPPROBとなります。キュー長がSTOPを超えると、すべてのパケットが破棄されます。キュー長がSTART以下のときはパケットは破棄されません。


デフォルトでは、次に示す5つのREDカーブが定義されています。これらは変更したり、削除したりすることはできません。これらの5つに加え、43個のREDカーブを定義することができます。

表 2:デフォルトREDカーブ
REDカーブ番号
0
1
2
3
4
名称(DESCRIPTION) Aggressive Med-Aggressive Medium Med-Passive Passive
START 15 25 35 45 55
STOP 30 50 65 80 95
DROPPROB 50 70 80 90 100


■ REDカーブの作成例を示します。


■ トラフィッククラスにREDカーブを適用するには、CREATE QOS TRAFFICCLASSコマンドかSET QOS TRAFFICCLASSコマンドのREDパラメーターを使います。


■ フローグループごとに異なるREDカーブを適用することもできます。フローグループにREDカーブを適用するには、CREATE QOS FLOWGROUPコマンドかSET QOS FLOWGROUPコマンドのREDパラメーターを使います。


フローグループとトラフィッククラスの両方にREDカーブが適用されている場合は、フローグループの設定が使用されます。フローグループにREDカーブが適用されていない場合は、トラフィッククラスの設定が使用されます。

なお、REDアルゴリズムは流量制御や輻輳回避の機能を持つTCPトラフィックに対してもっとも効果を発揮します。UDPやICMPのように流量制御を行わないプロトコルに対しては、逆効果になる場合がありますのでご注意ください。

 

設定例

ここでは、ポリシーベースQoSの基本的な設定方法について説明します。

QoS機能を使用すると、IPアドレスやTOS優先度などのIPヘッダー情報、TCPやUDPのポート番号などに基づき、パケット送信時の最大・最小帯域を設定することができます。

最初に必要なのは「ポリシー」を設計することです。どのトラフィックにどの程度のQoSを提供するのかをよく考えてください。

 

最小帯域保証

入力ポートから出力ポートに向けて、出力ポートの帯域以上にパケットが流入すると、出力キューにパケットがたまりはじめます。このとき、出力キューがあふれると、QoSポリシーで最小帯域を保証するよう設定していても、パケットが破棄されてしまいます。

ここでは、REDアルゴリズムの設定によって、出力キューでのパケット破棄を制御し、特定のトラフィックに対して最小帯域を保証する設定例を示します。

最初に、前提条件として次のような構成を考えます。


ポート1.1〜1.3にはそれぞれ1台ずつクライアントが接続されており、ポート1.4のサーバーに向けて大量のトラフィックを送信しているものとします。ポート1.1〜1.4の帯域はいずれも100Mbpsであると仮定します。この構成では、サーバーへのトラフィックが集中するスイッチポート1.4で輻輳が発生しがちです。

ここでは、スイッチポート1.4にQoSポリシーを適用し、ポート1.1のクライアントに80Mpbsの最小帯域を保証するよう設定します。他のクライアントからのトラフィックにはREDアルゴリズムを適用し、輻輳発生時にこれらのトラフィックが段階的に破棄されるようにします。

ここでは、3つのトラフィッククラスを持つQoSポリシーを作成します。

表 3:トラフィッククラスの設定
 
条件
最小帯域
最大帯域
REDカーブ
1 SrcIP = 192.168.1.1 80Mbps 無制限 適用せず
2 SrcIP = 192.168.1.2 無制限 無制限 REDカーブ「5」
3 SrcIP = 192.168.1.3 無制限 無制限 REDカーブ「6」


以下、設定内容を示します。

  1. QoSポリシー「1」を作成します。


  2. QoSポリシー「1」を出力スイッチポートである1.4に関連付けます。


  3. トラフィッククラス「2」「3」に適用するREDカーブ「5」「6」を作成します。


    Note - REDカーブ「0」〜「4」はデフォルトで定義済みです。

  4. 各クライアントに対応する3つのトラフィッククラスを作成し、それぞれに最大・最小帯域を割り当て、重み付けを設定します。


    重み付けの設定により、出力ポートの帯域100Mbpsから最低保証帯域80Mbpsを引いた残りの20Mbpsは、トラフィッククラス1、2、3の優先順位で配分されます。

  5. 最小帯域を保証するトラフィッククラス「1」以外にREDカーブを適用します。


    REDカーブの設定ポリシーは次のとおりです。


  6. QoSポリシーにトラフィッククラスを割り当てます。


  7. 各トラフィッククラスに対応する3つのフローグループを作成します。


  8. トラフィッククラスにフローグループを割り当てます。


  9. 各クライアントからのパケットに対応するクラシファイアを定義します。


  10. フローグループにクラシファイアを割り当てます。


 

DiffServ

DiffServ(Differentiated Service)は、ネットワーク境界(エッジ)で流入トラフィックをクラス分け・マーキングし、ネットワーク内部ではマーカーだけを見てQoSを適用できるようにする技術です。

DiffServでは、マーキング用にIPヘッダーのTOSオクテットを再定義しています。従来、TOSオクテットは3ビットの優先度フィールドと、3または4ビットのTOSフラグフィールド、および予約済みフィールドで構成されていましたが、DiffServでは先頭6ビットをDSCP(DiffServ Code Point)として定義しなおしています。DSCPフィールドは0〜63の値をとるマーカーフィールドであり、各値の意味は個々のネットワーク主体(DiffServドメイン)が独自に定義します。たとえば、DSCP=20は低遅延・狭帯域、DSCP=21は中遅延・広帯域などといった定義が可能です。


ここでは、スイッチA、B、CのDiffServ設定を示します。

スイッチAの設定
  1. QoSポリシー「1」を作成します。


  2. QoSポリシー「1」をスイッチポートに関連付けます。


  3. 8つのトラフィッククラス「1」〜「8」を定義し、それぞれに最小帯域を割り当てます。また、各クラスに対し、DSCP値「21」〜「28」を付加するよう設定します。


  4. トラフィッククラス「1」〜「8」をQoSポリシー「1」に割り当てます。


  5. トラフィックグループ「1」〜「8」と1対1で対応するフローグループ「1」〜「8」を作成します。


  6. トラフィッククラス「1」〜「8」にフローグループ「1」〜「8」を割り当てます。


  7. ヘッダー情報に基づいてパケットを分類するクラシファイアを作成します。


    Note - 本例はあくまでも説明のためのサンプルです。トラフィッククラスは綿密な計画とテストに基づいて作成してください。

  8. フローグループにクラシファイアを割り当てます。


スイッチBの設定
  1. QoSポリシー「1」を作成します。


  2. QoSポリシー「1」をスイッチポートに関連付けます。


  3. DSCP値「21」〜「28」に対応する8つのトラフィッククラスを定義し、それぞれに最小帯域を割り当てます。


  4. トラフィッククラス「1」〜「8」をQoSポリシー「1」に割り当てます。


  5. トラフィックグループ「1」〜「8」と1対1で対応するフローグループ「1」〜「8」を作成します。


  6. トラフィッククラス「1」〜「8」にフローグループ「1」〜「8」を割り当てます。


  7. IPヘッダーのDSCP値によってパケットを分類するクラシファイアを作成します。


  8. フローグループにクラシファイアを割り当てます。


スイッチCの設定
  1. QoSポリシー「1」を作成します。


  2. QoSポリシー「1」をスイッチポートに関連付けます。


  3. DSCP値「21」〜「28」に対応する8つのトラフィッククラスを定義し、それぞれに最小帯域を割り当てます。また、各クラスに対し、DSCP値を「11」〜「18」に書き換えるよう設定します。


  4. トラフィッククラス「1」〜「8」をQoSポリシー「1」に割り当てます。


  5. トラフィックグループ「1」〜「8」と1対1で対応するフローグループ「1」〜「8」を作成します。


  6. トラフィッククラス「1」〜「8」にフローグループ「1」〜「8」を割り当てます。


  7. IPヘッダーのDSCP値によってパケットを分類するクラシファイアを作成します。


  8. フローグループにクラシファイアを割り当てます。








(C) 2003 - 2005 アライドテレシスホールディングス株式会社

PN: J613-M6964-02 Rev.G