[index] CentreCOM 8948XL コマンドリファレンス 2.9

スイッチング/QoS


  - 概要
   - 基本的な用語
  - 802.1p QoSの基本設定
   - 設定手順例
  - ポリシーベースQoSの基本設定
   - 設定の前に
   - 設定手順例
    - 通常のパケット
    - IPv6ルーティングパケット
   - QoSポリシー
   - トラフィッククラス
   - フローグループ
   - クラシファイア
  - QoS処理フロー詳細
   - 通常のパケット
   - IPv6ルーティングパケット
   - パケット受信時のQoS処理
    - タグ付きパケット
    - タグなしパケット
   - ポリシーベースのQoS処理
    - パケット分類
    - プレマーキング
    - メータリング
     - シングルレート・メータリング
     - ツインレート・メータリング
    - リマーキング
   - パケット送信時のQoS処理
    - キューへの格納処理
     - REDアルゴリズム
     - Tail-dropアルゴリズム
    - キューからの送信処理
  - QoSポリシーのフィルタリング機能
   - 設定方法
   - 具体例
  - 設定例
   - 最小帯域保証
   - DiffServ
  - QoSポリシーのルール領域消費量


QoS(Quality of Service)関連機能について解説します。

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

ポリシーベースQoSでは、クラシファイアと呼ばれる汎用のパケットフィルターを用いてパケットを分類し、それぞれに異なるサービスレベル(帯域や優先度)を割り当てます。クラシファイアを用いることにより、IPアドレスやTCP/UDPポート、DSCP(DiffServ Code Point)などに基づいたQoSの制御が可能です。

また本製品は、VLANタグヘッダーのIEEE 802.1pユーザープライオリティー値に基づいてパケットに送信キューを割り当てる802.1p QoSもサポートしています。

Note - ハードウェアパケットフィルターにマッチしたパケットに対して、ポリシーベースQoSは適用されません(ここでの「マッチ」とは、破棄(Discard)だけでなく明示的な転送許可(Forward)も含みます)。ポリシーベースQoSを利用しながらパケットフィルタリングを行いたい場合は、ハードウェアパケットフィルターを併用するのではなく、QoSポリシーのフィルタリング機能(フローグループ、トラフィッククラスのアクション)を使ってください。

 

概要

本製品のQoS機能では、次のことが可能です。


 

基本的な用語

ここでは、本章で使用する用語について簡単にまとめます。以後の説明でよくわからない言葉が出てきたときは、こちらをご参照ください。

Note - 以下に述べるのは本章の説明のための定義です。一般に使われている用語の意味とは必ずしも一致しない場合がありますのでご注意ください。

■ 802.1pユーザープライオリティー

802.1Q VLANタグヘッダー内にある3ビットのフィールド。0〜7の値をとる。パケットを受信する機器に対して、パケット取り扱い時の優先度を示す目的で設けられている。802.1p対応機器は、この値に基づいてパケットの優先制御ができる。また、送信時に値を書き換えることで、次の機器(対向機器)に対して、新たな優先度を指示できる。

■ DSCP(DiffServ Code Point)

IPv4/IPv6ヘッダーのDiffServフィールド(IPv4ではTOSフィールド、IPv6ではTraffic Classフィールドとも呼ばれる)内にある6ビットのフィールド。0〜63の値をとる。パケットを受信する機器に対して、該当パケットのトラフィッククラスを示すために使われる。DSCP値の意味は各機器が独自に管理し、それに基づいてパケットを処理する。

パケットのDSCP値にしたがってQoSを制御するネットワーク上の領域をDiffServドメインと呼ぶ。DiffServドメインの入り口にあたる機器では、IPアドレスやプロトコル、ポート番号など、DSCP以外の条件をもとにパケットを分類し、DiffServドメイン内で規定されたDSCP値を付加する。これにより、DiffServドメイン内ではDSCP値による統一的なQoSの実施が可能になる。

■ 802.1p QoS

VLANタグヘッダーの802.1pユーザープライオリティー値(0〜7)に基づいてパケットの優先制御を行うメカニズム。

802.1p QoSでは、あらかじめ用意された802.1p値と送信キューの対応表を参照して、タグ付きパケット受信時に送信キューを割り当てる。また、パケット送信時には、各キュー間で送信順序を制御する。

本製品では、受信パケットを8レベルの送信キューに振り分けることができる。また、送信スケジューリング方式を、絶対優先と重み付きラウンドロビン(WRR)から選択できる。

■ ポリシーベースのQoS

受信パケットをL2〜L4ヘッダーフィールドの内容に基づいて分類し、それぞれに任意のサービスレベル(帯域や優先度)を割り当てるメカニズム。

ポリシーベースのQoSでは、受信ポートに設定された「QoSポリシー」にしたがって処理が行われる。処理内容は、パケットの分類、帯域制限(最大帯域)、帯域保証(最小帯域)、802.1pやDSCPの書き換え、送信キューの割り当てなど多岐にわたる。

ポリシーベースQoSは、QoSポリシー、トラフィッククラス、フローグループ、クラシファイアといった設定要素によって構成される。

■ QoSポリシー

帯域・優先制御を行うために必要な情報をひとつにまとめる役割を持つ、ポリシーベースQoSの中心的な設定要素。

QoSポリシーは、ユーザー定義のトラフィッククラス(複数)とデフォルトトラフィッククラス(1つ)から構成される。

QoSポリシーをスイッチポート(またはIPv6アクセラレーターボード)に関連付けると、ポートで受信したトラフィックに対して(またはIPv6アクセラレーターボードを経由するトラフィックに対して)、該当するトラフィッククラスで定められたQoS処理が行われる。

■ トラフィッククラス

同等のサービスレベルを与えるべきトラフィックを定義するポリシーベースQoSの設定要素。フローグループの集合体として定義する。

帯域制御やQoSパラメーターの割り当てなど、ポリシーベースQoSの処理の多くはトラフィッククラスで設定する。

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

■ フローグループ

同等な性格を持つパケットのフローをグループ化したもの(アプリケーションの「行き」と「戻り」など)。クラシファイアの集合体として定義する。

ポリシーベースQoSの処理の多くはトラフィッククラスで設定するが、一部の項目については、フローグループのレベルでより細やかな設定が可能。

フローグループは、ポリシーベースQoSの最小設定単位。トラフィッククラスに割り当てて使う。

■ クラシファイア

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

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

■ 4つのQoSパラメーター

ポリシーベースQoSの処理過程でパケットに割り当てられる4つの属性値。DSCP値、802.1pユーザープライオリティー値、帯域クラス、送信キューのこと。プレマーキング、メータリング、リマーキングの各段階で参照・照合されたり、変更される可能性がある。

DSCP値と802.1pユーザープライオリティー値は、実際にパケットのヘッダーに格納できる値。パケット受信時にすでに値がセットされている場合もあれば、されていない場合もある。いずれの場合も、QoS処理の過程で変更が可能。

一方、帯域クラスと送信キューは、パケット受信後に割り当てられる内部的な属性値。帯域クラスと送信キューの値が意味を持つのは、パケットを送信キューに格納するところまで。後続の機器にこれらの情報を(間接的にながら)伝えるには、DSCP値か802.1pユーザープライオリティー値を使う。

■ プレマーキング

ポリシーベースQoSにおいて、クラシファイアによって分類されたパケットに対して最初に行われる処理。メータリングの前に行われる。プレマーキングでは、パケットのDSCP値をもとに、新しいDSCP値、802.1pユーザープライオリティー値、帯域クラス、送信キューを割り当てることができる。

■ メータリング

ポリシーベースQoSにおける帯域制御の中心的メカニズム。各トラフィックが実際にどの程度の帯域を使用しているかを計測し、その結果に基づいてパケットを3つの「帯域クラス」に分類する処理を行う。

■ 帯域クラス

ポリシーベースQoSのメータリング段階において、帯域使用量に応じてパケットを3つのクラスに分類したもの。最大・最小帯域設定への適合性を示す。帯域クラス1は、あまり帯域を使っていないため、優先的に帯域を割り当てることのできるクラス。帯域クラス2は、中程度の帯域使用量のクラス。帯域クラス3は、最大帯域の設定を超過しているクラスであり、キューイング前に無条件で破棄する設定、あるいは、送信キューの輻輳時に優先的に破棄する設定が可能。

■ リマーキング

ポリシーベースQoSにおいて、メータリング後に行われる処理。メータリングの結果である帯域クラスの値を考慮しつつ、プレマーキング同様の書き換え処理が可能。また、送信キューをもとに802.1pユーザープライオリティー値を書き換えることもできる。

■ DSCPMAPテーブル

プレマーキング、リマーキング時に参照するQoSパラメーターの書き換えテーブル。プレマーキング用とリマーキング用の2種類がある。

プレマーキング、リマーキング時には、DSCP値と帯域クラスをインデックスとしてDSCPMAPテーブルを検索し、DSCP値、帯域クラス、送信キュー、802.1pユーザープライオリティー値を該当エントリーで指定された値に書き換える。

■ QUEUE2PRIOMAPテーブル

リマーキング時に参照する802.1pユーザープライオリティー値の書き換えテーブル。リマーキング直前の送信キューと帯域クラスの値をインデックスとして検索し、パケットの802.1pユーザープライオリティー値を該当エントリーで指定された値に書き換える。

■ PRIO2QUEUEMAPテーブル

タグ付きパケット受信時に参照する送信キューの割り当てテーブル。パケットの802.1pユーザープライオリティー値と割り当てる送信キューの対応を管理している。

■ 送信キュー

本製品のスイッチポートは、それぞれ8レベルの送信キューを備えている。各キューに対しては、最大キュー長、最大帯域幅、送信スケジューリング方式(絶対優先、WRR)、WRR時の重み値などを設定できる。

■ REDアルゴリズム

送信キューにおける輻輳制御アルゴリズムの1つ。キューがあふれる前にパケットの破棄を開始することで、TCPなどトランスポート層の輻輳回避メカニズムを有効に機能させることができる。ただし、UDPのように輻輳回避を行わないトランスポート層に対しては逆効果となりうるので注意が必要。

■ REDカーブ

REDアルゴリズムの動作を規定するパラメーターセット(によって描かれる線)。START、STOP、DROPという3つのパラメーターからなる。STARTはパケットの破棄を開始するキュー長、STOPはパケットを完全に破棄し始めるキュー長、DROPはキュー長がSTOPのときに破棄するパケットの割合を示す。

なお、カーブとは言うものの曲線ではない。

■ REDカーブセット

REDカーブの集合体。本製品では、REDカーブセットをスイッチポートに割り当てることで、該当ポートでREDアルゴリズムを使用できるようにする。8つの送信キューにはそれぞれ個別のREDカーブを設定できる。また、各キューでは、帯域クラスごとに個別のREDカーブを設定できる。すなわち、REDカーブセットは、8×3=24個のREDカーブを組にしたものとなる。

■ Tail-dropアルゴリズム

送信キューにおける輻輳時のデフォルト動作。帯域クラスごとに設定された最大キュー長を超過したパケットを無条件に破棄する。最大キュー長は、デフォルトREDカーブセット「1」のSTOP1、STOP2、STOP3パラメーターで変更可能。

■ 送信スケジューリング方式

パケット処理の最終段階であるキューからの送信処理を、どのような順序で行うかを規定するもの。本製品では、絶対優先スケジューリングと重み付きラウンドロビンスケジューリング(WRR)の2種類から選択できる。同一ポート内において、絶対優先で送信するキューとWRRで送信するキューのグループを分けたり、WRRを2段階で行うような設定も可能。

■ 絶対優先スケジューリング

デフォルトの送信スケジューリング方式。上位キューが空になるまで下位のキューからはパケットを送信しない。この方式はシンプルだが、上位キューに割り当てられるパケットが多いときに、下位キューのパケットが送信されなくなるという欠点がある。

■ 重み付きラウンドロビン(WRR)スケジューリング

送信スケジューリング方式の1つ。各キュー間の送信比率を設定し、その比率にしたがってパケットを送信する。たとえば、最上位キューから最下位キューまで、10:5:5:5:2:2:1:1の比率でパケットを送信するような設定が可能。この方式だと、上位キューに割り当てられるパケットが多いときでも、一定比率下位キューからパケットを送信することが可能。

 

802.1p QoSの基本設定

802.1p QoSの設定は、受信時のキュー割り当て方式と、送信時のスケジューリング方式の2つの設定を組み合わせることによって行います。802.1p QoSを使用する場合、QoSポリシーを作成する必要はありません。

 

設定手順例

次に基本的な設定手順例を示します。

  1. タグ付きパケット受信時のキュー割り当てを設定します。これには、SET QOS PRIO2QUEUEMAPコマンドを使います。たとえば、タグ付きパケットの802.1p値0〜7に対して、送信キュー0, 1, 2, 3, 4, 5, 6, 7を割り当てるには、次のようにします。


  2. タグなしパケット受信時のキュー割り当てを設定します。これには、SET QOS PORTコマンドのDEFAULTQUEUEパラメーターを使います。こちらは受信ポートごとに設定します。たとえば、すべてのポートにおいて、受信したタグなしパケットに送信キュー1を割り当てるには、次のようにします。


  3. 受信時にタグなしだったパケットをタグ付きポートから送信するとき、802.1pユーザープライオリティーの値としていくつをセットするかを指定するには、SET QOS DEFAULTPRIORITYコマンドを使います。たとえば、送信キュー0〜7に対して、802.1p値0, 1, 2, 3, 4, 5, 6, 7を割り当てるには、次のようにします。


    この場合、手順2で設定したデフォルト送信キューが1であれば、802.1pユーザープライオリティー値1が割り当てられます。

  4. デフォルトでは、各ポートの送信キューから絶対優先スケジューリングでパケットが送信されます。すなわち、上位キューが空になるまで下位キューからはパケットが送信されません。送信キューは番号が大きいほど上位(優先度が高い)になります。なお、10/100Mポートで絶対優先スケジューリングを使用する場合は、SET QOS PORT EGRESSQUEUEコマンドのLENGTHパラメーターで、送信ポートのキュー長を最小値の16に設定してください。


基本設定は以上です。

■ 送信スケジューリング方式を変更するには、SET QOS PORT EGRESSQUEUEコマンドを使います。たとえば、すべてのポートで重み付きラウンドロビン(WRR)を使用するには、次のようにします。WRRWEIGHTパラメーターで各キューの重み(各キュー間の送信比率をデータ量ベースで表す)を指定します。

ここでは、キュー7、6、5、4、3、2、1、0から、60:60:30:30:12:12:6:6、すなわち、10:10:5:5:2:2:1:1の比率でパケットが順番に送信されるよう設定します。


■ タグ付きパケット受信時に割り当てる送信キューの設定は、SHOW QOS PRIO2QUEUEMAPコマンドで確認できます。


■ タグなしパケット受信時に割り当てる送信キュー(デフォルト送信キュー)の設定は、SHOW QOS PORTコマンドで確認できます。「Default Queue」をご覧ください。


■ 受信時にタグなしだったパケットをタグ付きポートから送信するときの802.1pユーザープライオリティー値の設定は、SHOW QOS DEFAULTPRIORITYコマンドで確認できます。


■ キューからパケットを送信するときのスケジューリング方式は、SHOW QOS PORTコマンドで確認できます。各キューの「Scheduler」、「WRR Weight」をご覧ください。


 

ポリシーベースQoSの基本設定

ポリシーベースQoSの設定は、QoSポリシーを作成し、スイッチポート(またはIPv6アクセラレーターボード)に関連付けることによって行います。QoSポリシーは次図のような階層構造になっているため、ポリシーの作成はこの階層を形づくる作業と言えます。


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

  1. QoSポリシーを作成する
  2. QoSポリシーをスイッチポート(またはIPv6アクセラレーターボード)に関連付ける
  3. トラフィッククラスを作成する
  4. トラフィッククラスをQoSポリシーに割り当てる
  5. フローグループを作成する
  6. フローグループをトラフィッククラスに割り当てる
  7. クラシファイアを作成する
  8. クラシファイアをフローグループに割り当てる

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

最初に、基本的な手順を示す設定例を紹介したのち、QoSポリシーの基本設定要素である、スイッチポート、QoSポリシー、トラフィッククラス、フローグループ、クラシファイアのそれぞれについて、設定の要点を説明します。

より詳細な設定方法については、「QoS処理の流れ」をご覧ください。また、全体的な設定例については、「設定例」をご覧ください。

 

設定の前に

通常、ポリシーベースQoSの処理は本体スイッチチップで行われますが、IPv6アクセラレーターボードを装着している場合、IPv6ルーティングパケットに対するQoS処理は、IPv6アクセラレーターボードで行われます。次の図をご覧ください。


ポリシーベースQoSを使用するために必要な設定は次のとおりです。


Note - IPv6ルーティングパケットに対するポリシーベースQoSの設定では、IPv6ハードウェアパケットフィルター(のMARKアクション)を併用します。


1つ注意すべきなのは、ハードウェアパケットフィルターにマッチしたパケットに対して、ポリシーベースQoSが適用されないことです(ここでの「マッチ」とは、破棄(Discard)だけでなく明示的な転送許可(Forward)も含みます)。

ポリシーベースQoSを利用しながらパケットフィルタリングを行いたい場合は、ハードウェアパケットフィルターを併用するのではなく、QoSポリシーのフィルタリング機能(フローグループ、トラフィッククラスのアクション)を使ってください。フィルタリング機能については後述します。

 

設定手順例

次に基本的な設定手順例を示します。

 

通常のパケット

通常のパケット(IPv6ルーティングパケット以外のパケット)に対するポリシーベースQoSの基本設定を示します(上図の3aの設定です)。

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


  2. QoSポリシー「1」を受信スイッチポートである1〜3に関連付けます。


  3. 3つのトラフィッククラスを作成し、それぞれに最大・最小帯域を割り当てます。この設定により、トラフィッククラス1には最低50Mbpsの帯域が保証されます。また、トラフィッククラス1、2、3は、それぞれ80Mbps、30Mbps、20Mbpsまでに制限されます(帯域制限を機能させるため、DROPBWCLASS3=YESを指定し、最大帯域を上回るレートで受信したパケットをキューイング前に無条件で破棄するよう設定します)。


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


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


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


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


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


 

IPv6ルーティングパケット

IPv6ルーティングパケットに対するポリシーベースQoSの設定(上図の2、3b)は、基本的に通常のポリシーベースQoSと同じですが、以下の点が異なります。


以下、IPv6ルーティングパケットに対するポリシーベースQoSの基本的な設定手順例を示します。

Note - IPv6ルーティングパケットに対してポリシーベースQoSを適用するには、IPv6アクセラレーターボードが必要です。また、IPv6ルーティングの設定も必要です。以下の例では、IPv6の設定は完了しているものとします。

  1. 最初に、IPv6パケットを分類するためのクラシファイアを作成します。CREATE CLASSIFIERコマンドの「IPv6ハードウェアパケットフィルター用の構文」にしたがって作成してください。


  2. 手順1のクラシファイアを用いて、DSCPフィールドを書き換えるIPv6ハードウェアパケットフィルターを設定します。QoSポリシーでは、このDSCP値に基づいてパケットをフローグループに分類します。


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


  4. QoSポリシー「10」をIPv6アクセラレーターボードに適用します。これには、SET QOS ACCELERATOR POLICYコマンドを使います。

    IPv6ルーティングパケットに対するQoS設定は、ルーティングされるすべてのIPv6パケットに適用されます。通常のポリシーベースQoSのように、受信スイッチポートを指定することはできません。


  5. 3つのトラフィッククラスを作成し、それぞれに最大・最小帯域を割り当てます。この設定により、トラフィッククラス1には最低50Mbpsの帯域が保証されます。また、トラフィッククラス1、2、3は、それぞれ80Mbps、30Mbps、20Mbpsまでに制限されます(帯域制限を機能させるため、DROPBWCLASS3=YESを指定し、最大帯域を上回るレートで受信したパケットをキューイング前に無条件で破棄するよう設定します)。


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


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


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


  9. 各クライアントからのパケットに対応するクラシファイアを定義します。ここでは、IPv6ハードウェアパケットフィルターで書き換えた(マーキングした)DSCP値に基づいてパケットを分類します。CREATE CLASSIFIERコマンドの「IPv6 QoSポリシー用の構文」にしたがって作成してください。


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


 

QoSポリシー

ポリシーベースQoSの基本要素はQoSポリシーです。本製品では、スイッチポート(またはIPv6アクセラレーターボード)にQoSポリシーを関連付けることで、該当ポートで受信したパケット(またはルーティングされるIPv6パケット)に対する動作を制御します。

■ QoSポリシーを作成するには、CREATE QOS POLICYコマンドを使います。同コマンドでは、DTCxxxxという名のパラメーターを用いて、デフォルトトラフィッククラスの各種属性を設定することもできます。

次の例では、QoSポリシー「1」を作成すると同時に、同ポリシーのデフォルトトラフィッククラスに割り当てる最大帯域を1Mbpsに制限しています。


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


Note - トランクグループにQoSポリシーを割り当てるときは、グループ内のいずれかのポートにポリシーを適用してください。

■ また、QoSポリシーをIPv6アクセラレーターボードに割り当てるには、SET QOS ACCELERATOR POLICYコマンドを使います。これにより、IPv6アクセラレーターボードを経由するすべてのパケット(IPv6ルーティングパケット)に対してQoSポリシーが適用されます。


Note - スイッチポート、IPv6アクセラレーターボードには、QoSポリシーを1つだけ割り当てることができます。

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

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

Note - QoSポリシーを適用するポートの数が多いと、システムルール領域の消費量が多くなります。ポリシーベースQoSを利用する場合は、ポリシーを割り当てるスイッチポートを選ぶようにしてください。詳しくは「スイッチング」/「クラシファイア」をご覧ください(「クラシファイアとルール領域消費量」を参照)。

■ ポートからQoSポリシーを削除(関連付けを削除)するには、SET QOS PORTコマンドのPOLICYパラメーターにNONEを指定します。これにより、該当ポートで受信したパケットにはポリシーベースQoSが適用されなくなります。


■ IPv6アクセラレーターボードからQoSポリシーを削除(関連付けを削除)するには、SET QOS ACCELERATOR POLICYコマンドのPOLICYパラメーターにNONEを指定します。これにより、IPv6ルーティングパケットにはポリシーベースQoSが適用されなくなります。


 

トラフィッククラス

トラフィッククラスは、同等のQoSを与えるべきトラフィック(たとえば、「TCPトラフィック」)をひとまとめにしたものです。ポリシーベースQoSの設定項目の大部分は、トラフィッククラスごとに設定します。

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

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


■ トラフィッククラスに割り当てる最小帯域(保証帯域)、最大帯域(上限値)は、それぞれMINBANDWIDTH、MAXBANDWIDTHパラメーターで指定します。


■ プレマーキング、リマーキングの動作は、CREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドのPREMARKING、MARKVALUE、REMARKINGパラメーターで指定します。


フローグループとトラフィッククラスの両方でプレマーキングの設定がされている場合は、フローグループの設定が使用されます。フローグループで設定されていない場合は、トラフィッククラスの設定が使用されます。どちらも設定されていない場合は、プレマーキングを行わずにメータリングに進みます。

■ 作成したトラフィッククラスの設定を変更するには、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の設定項目の大部分はトラフィッククラスで指定しますが、プレマーキングの動作については、フローグループ単位でも設定可能です。これらは、CREATE QOS FLOWGROUPコマンド、SET QOS FLOWGROUPコマンドのPREMARKING、MARKVALUEパラメーターで指定します。


フローグループとトラフィッククラスの両方でプレマーキングの設定がされている場合は、フローグループの設定が使用されます。フローグループで設定されていない場合は、トラフィッククラスの設定が使用されます。

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


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

 

クラシファイア

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

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

■ クラシファイアはCREATE CLASSIFIERコマンドで作成します。通常のポリシーベースQoSとIPv6ポリシーベースQoSでは、使用できる条件パラメーターが異なるので注意してください。


Note - クラシファイアの詳細については、「スイッチング」/「クラシファイア」をご覧ください。

■ フローグループはクラシファイアの集合として定義します。フローグループにクラシファイアを割り当てるには、ADD QOS FLOWGROUPコマンドを使います。


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

 

QoS処理フロー詳細

ここでは、個々のQoS機能について、全体的なQoS処理の流れにしたがって解説します。

次に、パケットを受信してから送信するまでの、QoS処理の大まかな流れを示します。一見すると非常に複雑ですが、通常はすべての段階を設定する必要はありません。

なお、図の左側では、QoS処理過程で使用される「4つのQoSパラメーター」がどこで参照(使用)され、どこで書き換え(割り当て)られるのかを示しています。

また、IPv6アクセラレーターボード装着時は、「ルーティングされるIPv6パケット」と「それ以外のパケット」で処理の流れが若干異なります。

 

通常のパケット

通常のパケット(IPv6ルーティングパケット以外)は次の流れで処理されます。IPv6アクセラレーターボードを装着していないときは、すべてのパケットがこの流れで処理されます。


表 1:QoS処理の流れ
-
処理内容
備考
1 スイッチポートでパケットを受信します -
2 受信パケットがタグ付きなら、SET QOS PRIO2QUEUEMAPコマンドの設定に基づき、802.1pユーザープライオリティー値から初期の送信キュー(0〜7)を決定します。また、タグなしパケットには、SET QOS PORTコマンドのDEFAULTQUEUEパラメーターで指定された送信キューを割り当てます 802.1p
3 受信パケットがレイヤー2スイッチングの対象なら、フォワーディングデータベースを参照して出力ポートを決定します -
4 クラシファイアにより、パケットをフローグループ、トラフィッククラスに分類します。どのクラシファイアにもマッチしなかったパケットは、デフォルトトラフィッククラスに分類します ポリシーベース
5 フローグループかトラフィッククラスでプレマーキングの設定がなされている場合、受信パケットのDSCP値、802.1p値を書き換えます。また、帯域クラスと送信キューを割り当てます ポリシーベース
6 トラフィッククラスで最大・最小帯域の設定がなされている場合、受信パケットの属するフローがどの程度帯域を使用しているかを計測します。計測結果に基づき、受信パケットを3つの「帯域クラス」に分類します ポリシーベース
7 トラフィッククラスでリマーキングの設定がなされている場合、受信パケットのDSCP値、802.1p値を書き換えます。また、帯域クラスと送信キューを割り当てます。CREATE QOS TRAFFICCLASSコマンドのDROPBWCLASS3パラメーターがYESに設定されている場合は、「帯域クラス3(帯域を使いすぎ)」に該当するパケットを破棄します ポリシーベース
8 受信パケットがIPv4ルーティングの対象なら、L3テーブルを参照して出力ポートを決定します -
9 ここまでの処理で決定した送信キューにパケットを格納します。デフォルトでは、キューがいっぱいならパケットを破棄します(Tail-drop)。SET QOS PORTコマンドのREDパラメーターの設定により、キュー長が限界に達する前にランダムにパケットを破棄して輻輳を回避することもできます(REDアルゴリズム) 802.1p/ポリシーベース
10 SET QOS PORT EGRESSQUEUEコマンドで指定されたスケジューリング方式にしたがい、送信キューからパケットを出力します。デフォルトの動作は絶対優先スケジューリング(STRICT)ですが、重み付きラウンドロビン(WRR)や絶対優先+WRRの組み合わせ設定も可能です 802.1p/ポリシーベース


 

IPv6ルーティングパケット

IPv6アクセラレーターボード装着時、IPv6ルーティングパケットに対するQoS処理の流れは次のようになります。ほとんどの処理はその他のパケットと同じですが、分類処理がIPv6ハードウェアパケットフィルター(手順2)とQoSポリシー(手順4)の2段階にわかれている点が異なります。


表 2:QoS処理の流れ(IPv6ルーティングパケット)
-
処理内容
備考
1 スイッチポートでパケットを受信します。IPv6ルーティングパケットは、本体スイッチチップからIPv6アクセラレーターボードに送られて処理されます -
2 IPv6ハードウェアパケットフィルターのMARKアクションにより、IPアドレス、DSCP値、ポート番号などL3、L4フィールド値に基づいてIPv6パケットを分類し、後の処理のためDSCP値、802.1pユーザープライオリティー値を書き換えます -
3 SET QOS PRIO2QUEUEMAPコマンドの設定に基づき、802.1pユーザープライオリティー値から初期の送信キュー(0〜7)を決定します(IPv6アクセラレーターボード内ではすべてのパケットにタグが付いています) 802.1p
4 クラシファイアにより、パケットをフローグループ、トラフィッククラスに分類します。ここで使える分類条件はL2(MACアドレス、出力VLAN)とDSCP値だけなので、L3、L4フィールド値に基づく分類が必要なときは、手順2でマーキングしておきます(DSCP値を書き換えておく)。どのクラシファイアにもマッチしなかったパケットは、デフォルトトラフィッククラスに分類します ポリシーベース
5 フローグループかトラフィッククラスでプレマーキングの設定がなされている場合、MARKVALUEパラメーターの値に基づき、受信パケットのDSCP値、802.1p値を書き換えます。また、帯域クラスと送信キューを割り当てます ポリシーベース
6 トラフィッククラスで最大・最小帯域の設定がなされている場合、受信パケットの属するフローがどの程度帯域を使用しているかを計測します。計測結果に基づき、受信パケットを3つの「帯域クラス」に分類します ポリシーベース
7 トラフィッククラスでリマーキングの設定がなされている場合、受信パケットの802.1p値を書き換えます。CREATE QOS TRAFFICCLASSコマンドのDROPBWCLASS3パラメーターがYESに設定されている場合は、「帯域クラス3(帯域を使いすぎ)」に該当するパケットを破棄します ポリシーベース
8 IPv6ルーティング処理を行います -
9 ここまでの処理で決定した送信キューにパケットを格納します。デフォルトでは、キューがいっぱいならパケットを破棄します(Tail-drop)。SET QOS PORTコマンドのREDパラメーターの設定により、キュー長が限界に達する前にランダムにパケットを破棄して輻輳を回避することもできます(REDアルゴリズム) 802.1p/ポリシーベース
10 SET QOS PORT EGRESSQUEUEコマンドで指定されたスケジューリング方式にしたがい、送信キューからパケットを出力します。デフォルトの動作は絶対優先スケジューリング(STRICT)ですが、重み付きラウンドロビン(WRR)や絶対優先+WRRの組み合わせ設定も可能です 802.1p/ポリシーベース


上記の各ステップは、さらに大きく3つのグループに分類できます。

  1. パケット受信時のQoS処理(802.1p値による送信キュー割り当て)
  2. ポリシーベースのQoS処理(クラシファイアによる分類と各種サービスレベルの割り当て)
  3. パケット送信時のQoS処理(キューへの格納、輻輳制御とキューからの送信)

通常、ポリシーベースQoSではグループ2と3の設定を、802.1p QoSではグループ1と3の設定を行うことになります。

以下では、各グループでの処理について詳しく解説します。

 

パケット受信時のQoS処理

スイッチポートでパケットを受信した後、最初に行われるQoS処理は、パケットに送信キューの初期値を割り当てることです。これは次のようにして行われます。


Note - パケット受信時のQoS処理は、QoSポリシーの有無にかかわらず実行されます。

Note - 受信時に決定された送信キューは、ポリシーベースQoSのプレマーキング、リマーキング段階において変更可能です。

 

タグ付きパケット

タグ付きパケットのVLANタグヘッダーには、3ビットのユーザープライオリティーフィールド(802.1p)が設けられています。本製品は、このフィールドの値にしたがって、受信パケットの送信に優先度をつけることができます。

本製品の各ポートは、それぞれ8レベル(0〜7)の送信キューを備えています(キュー7が優先度最高)。デフォルトの送信スケジューリング方式(絶対優先スケジューリング)では、パケットは相対的にもっとも優先度の高いキューからのみ送信されます。たとえば、キュー7とキュー6にパケットが格納されている場合、キュー7が空になるまでキュー6内のパケットは送信されません。

受信パケットがどのキューに入れられるかは、802.1pユーザープライオリティー値と送信キューのマッピング設定によって決まります。

■ タグ付きパケットの802.1pユーザープライオリティー値と送信キューのマッピングを変更するには、SET QOS PRIO2QUEUEMAPコマンドを使います。


■ ユーザープライオリティーと送信キューのマッピングを確認するにはSHOW QOS PRIO2QUEUEMAPコマンドを使います。


■ IPv6ルーティングパケットの場合は、IPv6ハードウェアパケットフィルターのMARKアクションで802.1pユーザープライオリティー値を書き換えることができます。書き換え処理は送信キューの割り当て前に行われるため、この機能を利用すればパケットを任意のキューに入れることができます。


 

タグなしパケット

受信したタグなしパケットには、SET QOS PORTコマンドのDEFAULTQUEUEパラメーターで指定されたキュー(デフォルト送信キュー)に割り当てられます。

■ タグなしパケットに割り当てるデフォルトの送信キューは、SET QOS PORTコマンドのDEFAULTQUEUEパラメーターで設定します。これは受信ポートごとに設定します。たとえば、すべてのポートにおいて、受信したタグなしパケットに送信キュー1を割り当てるには、次のようにします。


■ タグなしパケットに割り当てるデフォルトの送信キューは、SHOW QOS PORTコマンドで確認できます。デフォルト送信キューは、SET QOS PORTコマンドでスイッチポートごとに設定します。


 

ポリシーベースのQoS処理

本製品のQoS機能のうち、ポリシーベースQoS独自の処理は、次の4ステップで構成されています。

  1. クラシファイアによるパケット分類(フローグループ、トラフィッククラスへの分類)
  2. プレマーキング(QoSパラメーターの初期値割り当て)
  3. メータリング(帯域使用量の計測と帯域クラスの割り当て)
  4. リマーキング(QoSパラメーターの再割り当て)

以下では、各ステップについて解説します。

 

パケット分類

ポリシーベースのQoS処理で最初に行われるのは、クラシファイアによってパケットをフローグループ、トラフィッククラスに分類することです。

パケットとクラシファイアの照合は、QoSポリシー内のトラフィッククラス番号順で行われます。また、トラフィッククラス内では、フローグループの番号順に行われます。

クラシファイアの詳細については、「スイッチング」/「クラシファイア」をご覧ください。

 

プレマーキング

プレマーキング(premarking)は、クラシファイアによってフローグループ、トラフィッククラスに分類されたパケットに対して行われる最初のQoS処理です。

プレマーキングでは、フローグループ、トラフィッククラスごとに、受信パケットのDSCP値、802.1pユーザープライオリティー値を書き換えられます。また、帯域クラス(後述)と送信キューを割り当てることができます。

ポリシーベースQoSでは、各パケットはQoSパラメーターとして次の4つの属性を持ちます。


これらは、プレマーキング、メータリング、リマーキングの各段階において、変更されていきます。

プレマーキング段階では、プレマーキング用DSCPMAPテーブルを参照して、パケットにパラメーターを割り当てます。DSCPMAPテーブルは、DSCP値を主インデックス、帯域クラスを副インデックスとするテーブルで、各エントリーには前述のQoSパラメーター4種類の書き換え後の値が格納されています。

Note - DSCPMAPテーブルにはDSCP値と帯域クラスの2つのインデックスがありますが、プレマーキング用DSCPMAPテーブルの場合は、副インデックスの帯域クラスは1しか存在しません。実質的にはDSCP値だけがインデックスとなります。

■ プレマーキングの設定は、トラフィッククラス単位、または、フローグループ単位で行うことができます。トラフィッククラスとフローグループの両方でプレマーキングを設定した場合は、フローグループでの設定が使用されます。トラフィッククラス全体に適用したい設定はトラフィッククラスで行い、これを上書きしたい場合はフローグループで設定を行います。

トラフィッククラスでプレマーキングの設定をするには、CREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドのPREMARKINGパラメーターを使います。PREMARKING=USEMARKVALUEを指定した場合は、MARKVALUEパラメーターで指定したDSCP値をインデックスとしてプレマーキング用DSCPMAPテーブルを検索し、該当エントリーの内容にしたがってパケットにQoSパラメーターを割り当てます。PREMARKING=USEDSCPを指定した場合は、受信パケットのDSCP値をインデックスとして使います。PREMARKING=NONE(デフォルト)の場合は、プレマーキングを行いません。

Note - デフォルトトラフィッククラスに対しても、CREATE QOS POLICYコマンド、SET QOS POLICYコマンドで同様の設定ができます。そのとき、各パラメーター名の前にDTC(デフォルトトラフィッククラスの略)を付けてください(以下同じ)。

Note - IPv6ルーティングパケットに対するQoSポリシーでは、PREMARKING=USEDSCPを使用できません(パケットのDSCP値に基づくプレマーキングができません)。USEDSCPを指定してもエラーにはなりませんが、プレマーキングが行われませんのでご注意ください。

フローグループでプレマーキングの設定をするには、CREATE QOS FLOWGROUPコマンド、SET QOS FLOWGROUPコマンドのPREMARKINGパラメーターを使います。設定方法は前述のトラフィッククラスと同じです。

■ プレマーキング用DSCPMAPテーブルの設定は、SET QOS DSCPMAPコマンドで行います。たとえば、DSCP値(MARKVALUE値)が1のパケットに対して、DSCP値1、帯域クラス1、送信キュー7、802.1pユーザープライオリティー7を割り当てるには、つぎのようにします。


■ プレマーキング用DSCPMAPテーブルの設定内容は、SHOW QOS DSCPMAPコマンドで確認できます。


 

メータリング

本製品の帯域制御は、ユーザーの設定した最大・最小帯域と許容バーストサイズの値をもとに、各トラフィッククラスが実際にどの程度の帯域を使用しているかを計測することによって実現されます。

帯域使用量の計測(metering)は、プレマーキングの後、リマーキングの前に行われます。本マニュアルでは、これをメータリングと呼びます。

計測の結果、各トラフィッククラスは次に示す3つの「帯域クラス」に分類されます。リマーキング時やキューイング時には、帯域クラスごとに異なるレベルのサービスを提供することが可能です。

Note - ポリシーベースQoSの処理過程で帯域クラスが割り当てられなかった場合、パケットはデフォルトの帯域クラス1として扱われます。

表 3:3つの帯域クラス
帯域クラス
帯域使用量
取り扱い方法(一例)
1 少ない 帯域割り当ての優先度は最高
2 中程度 帯域割り当ての優先度は中
3 使いすぎ 帯域割り当ての優先度は最低。輻輳時は優先的に破棄


帯域クラスの分類基準は、シングルレート、ツインレートの2つから選択できます。

 
シングルレート・メータリング
シングルレートのメータリングでは、1つの帯域しきい値(MAXBANDWIDTH)と2つのバーストサイズしきい値(MAXBURSTSIZE、MINBURSTSIZE)、あわせて3つの設定値に基づいて、各トラフィッククラスを帯域クラスに分類します。

表 4:シングルレート・メータリングの判定基準
帯域クラス
帯域使用量
判定基準
1 少ない バーストサイズ <= MINBURSTSIZE
2 中程度 MINBURSTSIZE < バーストサイズ <= MAXBURSTSIZE
3 使いすぎ バーストサイズ > MAXBURSTSIZE



ここでのバーストサイズとは、トラフィックの流入量がMAXBANDWIDTHを超えた場合に、MAXBANDWIDTH超過分としてバッファリングされたデータ量を示しています。トラフィック量がMAXBANDWIDTH以下であれば、バーストサイズは0です。

トラフィックが瞬間的にMAXBANDWIDTHをオーバーしても、超過している時間が短ければ、バーストサイズはMINBURSTSIZE以内にとどまり、すべてのパケットが帯域クラス1として扱われることになります。

これに対し、MAXBANDWIDTHをオーバーしている時間が長くなると、バーストサイズがMINBURSTSIZEを超えることがあります。この場合、MINBURSTSIZEを超えてバッファリングされたパケットには、帯域クラス2が割り当てられます。さらに時間が経過すると、バーストサイズがMAXBURSTSIZEを超えますが、この超過分は帯域クラス3となります。

■ シングルレートのメータリングを行うには、CREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドによるトラフィッククラスの設定で、MAXBANDWIDTH、MAXBURSTSIZE、MINBURSTSIZEの3つのパラメーターを指定します。このとき、MINBURSTSIZE < MAXBURSTSIZEとなるように注意してください。

Note - デフォルトトラフィッククラスに対しても、CREATE QOS POLICYコマンド、SET QOS POLICYコマンドで同様の設定ができます。そのとき、各パラメーター名の前にDTC(デフォルトトラフィッククラスの略)を付けてください(以下同じ)。

■ トラフィッククラスの設定でIGNOREBWCLASS=YESを指定すると、すでにプレマーキングで帯域クラスが割り当てられていた場合に、これを無視させることができます。この場合、純粋に帯域使用量の計測結果に基づいて新たな帯域クラスを割り当てます。一方、IGNOREBWCLASS=NO(デフォルト)を指定したときは、プレマーキング時に割り当てられた帯域クラスを、そのままメータリングの結果とします。

■ トラフィッククラスの設定でDROPBWCLASS3=YESを指定すると、帯域クラス3(使いすぎ)に分類されたパケットをキューイング前に破棄することができます。

■ 一方、DROPBWCLASS3=NO(デフォルト)の場合は、パケットはただちには破棄されませんが、リマーキングで低い優先度の送信キューを割り当てたり、輻輳発生時に優先的に破棄するような設定が可能です。

前者は、トラフィッククラスの設定でREMARKING=USEDSCPMAPを指定し、リマーキング用DSCPMAPテーブルを適切に設定しておくことで実現できます。

後者は、出力ポートの設定で、帯域クラス3を優先的に破棄するようなREDカーブセットを適用するか、Tail-dropを使用するよう設定した上で、帯域クラス3を優先的に破棄するようデフォルトREDカーブセット1を設定することによって実現できます。

 
ツインレート・メータリング
ツインレートのメータリングでは、2つの帯域しきい値(MAXBANDWIDTH、MINBANDWIDTH)と2つのバーストサイズしきい値(MAXBURSTSIZE、MINBURSTSIZE)、あわせて4つの設定値に基づいて、各トラフィッククラスを帯域クラスに分類します。

表 5:ツインレート・メータリングの判定基準
帯域クラス
帯域使用量
判定基準
1 少ない バーストサイズ(MIN) <= MINBURSTSIZE
2 中程度 バーストサイズ(MIN) > MINBURSTSIZE かつ バーストサイズ(MAX) <= MAXBURSTSIZE
3 使いすぎ バーストサイズ(MAX) > MAXBURSTSIZE



ここでのバーストサイズ(MIN)とは、トラフィックの流入量がMINBANDWIDTHを超えた場合に、MINBANDWIDTH超過分としてバッファリングされたデータ量を示しています。トラフィック量がMINBANDWIDTH以下であれば、バーストサイズ(MIN)は0です。

同様に、バーストサイズ(MAX)とは、トラフィックの流入量がMAXBANDWIDTHを超えた場合に、MAXBANDWIDTH超過分としてバッファリングされたデータ量を示しています。トラフィック量がMAXBANDWIDTH以下であれば、バーストサイズ(MAX)は0です。

トラフィックが瞬間的にMINBANDWIDTHをオーバーしても、超過している時間が短ければ、バーストサイズ(MIN)はMINBURSTSIZE以内にとどまり、すべてのパケットが帯域クラス1として扱われることになります。

これに対し、MINBANDWIDTHをオーバーしている時間が長くなると、バーストサイズ(MIN)がMINBURSTSIZEを超えることがあります。この場合、MINBURSTSIZEを超えてバッファリングされたパケットには、帯域クラス2が割り当てられます。

さらにトラフィックが増えると、今度は帯域使用量がMAXBANDWIDTHを超過することがありますが、その時間が長引きバーストサイズ(MAX)がMAXBURSTSIZEを超えると、超過分のパケットには帯域クラス3が割り当てられます。

■ ツインレートのメータリングを行うには、CREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドによるトラフィッククラスの設定で、MAXBANDWIDTH、MAXBURSTSIZE、MINBANDWIDTH、MINBURSTSIZEの4つのパラメーターを指定します。

Note - デフォルトトラフィッククラスに対しても、CREATE QOS POLICYコマンド、SET QOS POLICYコマンドで同様の設定ができます。そのとき、各パラメーター名の前にDTC(デフォルトトラフィッククラスの略)を付けてください(以下同じ)。

■ トラフィッククラスの設定でIGNOREBWCLASS=YESを指定すると、すでにプレマーキングで帯域クラスが割り当てられていた場合に、これを無視させることができます。この場合、純粋に帯域使用量の計測結果に基づいて新たな帯域クラスを割り当てます。一方、IGNOREBWCLASS=NO(デフォルト)を指定したときは、プレマーキング時に割り当てられた帯域クラスを、そのままメータリングの結果とします。

■ トラフィッククラスの設定でDROPBWCLASS3=YESを指定することにより、帯域クラス3(使いすぎ)に分類されたパケットをキューイング前に破棄することができます。

■ DROPBWCLASS3=NO(デフォルト)の場合は、パケットはただちには破棄されませんが、リマーキングで低い優先度の送信キューを割り当てたり、輻輳発生時に優先的に破棄するような設定が可能です。

前者は、トラフィッククラスの設定でREMARKING=USEDSCPMAPを指定し、リマーキング用DSCPMAPテーブルを適切に設定しておくことで実現できます。

後者は、出力ポートの設定で、帯域クラス3を優先的に破棄するようなREDカーブセットを適用するか、Tail-dropを使用するよう設定した上で、帯域クラス3を優先的に破棄するようデフォルトREDカーブセット1を設定することによって実現できます。

 

リマーキング

リマーキング(remarking)は、メータリング後にパケットに対して行われるQoS処理です。

リマーキングでは、メータリングの結果として割り当てられた帯域クラスの値を使用して、最終的なQoSパラメーター(DSCP値、802.1pユーザープライオリティー値、帯域クラス、送信キュー)を割り当てることができます。

Note - ここまでの処理過程で帯域クラスが割り当てられなかった場合、パケットはデフォルトの帯域クラス1として扱われます。

また、CREATE QOS TRAFFICCLASSコマンドのDROPBWCLASS3パラメーターがYESに設定されている場合は、「帯域クラス3(帯域を使いすぎ)」に該当するパケットを破棄します。

■ リマーキングを行うには、CREATE QOS TRAFFICCLASSコマンド、SET QOS TRAFFICCLASSコマンドのREMARKINGパラメーターにリマーキングの方法を指定します。リマーキングの方法には次のものがあります。指定可能なオプション値は5つありますが、PRIORITYとPRIO+BWCLASS、BWCLASSとNONEがそれぞれ同じ意味なので、実質的には3つになります。

表 6:REMARKINGのオプション
オプション名
参照するテーブル
参照する属性
変更する属性
USEDSCPMAP DSCPMAP DSCP, BWCLASS DSCP, BWCLASS, QUEUE, PRIORITY
PRIORITY QUEUE2PRIOMAP BWCLASS, QUEUE PRIORITY
PRIO+BWCLASS QUEUE2PRIOMAP BWCLASS, QUEUE PRIORITY
BWCLASS なし なし なし
NONE なし なし なし



Note - デフォルトトラフィッククラスに対しても、CREATE QOS POLICYコマンド、SET QOS POLICYコマンドで同様の設定ができます。そのとき、各パラメーター名の前にDTC(デフォルトトラフィッククラスの略)を付けてください(以下同じ)。

Note - IPv6ルーティングパケットに対するQoSポリシーでは、REMARKING=USEDSCPMAPを使用できません(パケットのDSCP値に基づくリマーキングができません)。USEDSCPMAPを指定してもエラーにはなりませんが、リマーキングが行われませんのでご注意ください。

■ リマーキング用DSCPMAPテーブルの設定は、SET QOS DSCPMAPコマンドで行います。たとえば、DSCP値(MARKVALUE値)が10、帯域クラスが2のパケットに対して、DSCP値10、帯域クラス2、送信キュー3、802.1pユーザープライオリティー3を割り当てるには、つぎのようにします。


■ リマーキング用DSCPMAPテーブルの設定内容は、SHOW QOS DSCPMAPコマンドで確認できます。


■ QUEUE2PRIOMAPテーブルの設定は、SET QOS QUEUE2PRIOMAPコマンドで行います。たとえば、送信キューが7で帯域クラスが2のパケットに対し、802.1pユーザープライオリティー1を割り当てるには、次のようにします。


■ QUEUE2PRIOMAPテーブルの設定内容は、SHOW QOS QUEUE2PRIOMAPコマンドで確認できます。


 

パケット送信時のQoS処理

パケット出力時のQoS処理には、次のものがあります。


次に、キューへの格納処理と送信処理の流れを図示します。


 

キューへの格納処理

本製品のスイッチポートはそれぞれ8個の送信キューを持っています。パケットをどのレベルのキューに格納するかは、次のいずれかによって決定されます。


送信キューが混雑している場合の動作には次の2つがあります。デフォルトはTail-dropです。


 
REDアルゴリズム
本製品のスイッチポートはそれぞれ8個の送信キューを持っています。通常は、キューがあふれると超過分のパケットを破棄します(Tail-dropアルゴリズム)。

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

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

REDアルゴリズムの設定は、平均キュー長とパケット破棄率の関係を示す「REDカーブ」を定義し、これをスイッチポートに割り当てることによって行います。

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


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


本製品では、8つの送信キュー×3つの帯域クラスのそれぞれに対してREDカーブを個別に設定できます。これら24個のREDカーブを束ねたものを「REDカーブセット」と呼びます。実際のところ、スイッチポートに割り当てるのは「REDカーブセット」です。

Note - ポリシーベースQoSの処理過程で帯域クラスが割り当てられなかった場合、パケットはデフォルトの帯域クラス1として扱われます。

デフォルトでは、1つのREDカーブセット「1」が定義されています。REDカーブセット「1」は変更できますが、削除することはできません。これに加え、3個のREDカーブセット(「2」〜「4」)を定義することができます。

■ REDカーブセットは、CREATE QOS REDコマンドで作成します。


■ REDカーブセットのパラメーター設定は、SET QOS REDコマンドで行います。QUEUEパラメーターを省略した場合は、すべての送信キューレベルに同じREDカーブが適用されます。


■ スイッチポートにREDカーブセットを適用するには、SET QOS PORTコマンドのREDパラメーターを使います。これにより、該当ポートでパケットをキューイングするとき、REDカーブセット「2」の設定に基づいてREDアルゴリズムが適用されます。


■ REDアルゴリズムは、輻輳制御機能を持たないUDPのようなプロトコルに対しては効果がありません。こうしたトラフィックに対しては、AVERAGING=0かつSTARTx、STOPxをほぼ同じ値にしたREDカーブを適用することで、Tail-drop同様の動作が可能です。

 
Tail-dropアルゴリズム
Tail-dropアルゴリズムは、超過分のパケットを廃棄する単純なアルゴリズムです。デフォルトの設定では、すべてのポートでTail-dropが使用されます。

■ Tail-dropを使用するには、SET QOS PORTコマンドのREDパラメーターにNONEを指定します。これにより、該当ポートでパケットをキューイングするとき、Tail-dropアルゴリズムが適用されます。


■ Tail-dropの動作は、デフォルトREDカーブセット「1」のSTOP1、STOP2、STOP3パラメーターで調整できます。これらはそれぞれ、帯域クラス1、2、3に適用する最大キュー長となります。


Note - ポリシーベースQoSの処理過程で帯域クラスが割り当てられなかった場合、パケットはデフォルトの帯域クラス1として扱われます。

 

キューからの送信処理

送信キューに格納されたパケットをどのような順序で出力するかは、キューごとに設定されるスケジューリング方式によって決まります。

特に設定を行わないと、送信キューのレベル(優先度)の高いパケットが優先的に送信され、レベルの高いキューのパケット送信が終了するまで次のレベルのキューのパケットは送信されません(STRICT:絶対優先スケジューリング)。

Note - ただし、10/100Mポートで絶対優先スケジューリングを機能させるためには、送信キューの最大キュー長(SET QOS PORT EGRESSQUEUEコマンドのLENGTHパラメーター)を、最小値の16に設定する必要があります。1000Mポートではこのような設定は不要です。

本製品では、高いレベルの送信キューのパケット送信が終了するまで待つことなく、低いレベルのキューのパケット送信を行うように設定することが可能です。

これは、送信キューに重み付けを行い、ラウンドロビンで送信していく方式(WRR:重み付きラウンドロビンスケジューリング)によって実現されます。

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

■ 設定は、SET QOS PORT EGRESSQUEUEコマンドで行います。送信方式はSCHEDULERパラメーターで指定します。デフォルトはSTRICT(絶対優先)ですので、ここではWRR1(重み付きラウンドロビン1)を指定しています。各キューの重み付け値(送信比率)はWRRWEIGHTパラメーターで指定します。


この例では、キュー7、6、5、4、3、2、1、0から、60:60:30:30:12:12:6:6、すなわち、10:10:5:5:2:2:1:1の比率でパケットが順番に送信されます。

■ 本製品では、2段階のラウンドロビンスケジューリングを行うこともできます。まずは設定例を示します。


この例では、キュー4、5、6、7をWRR1グループ、キュー0、1、2、3をWRR2グループに所属させています。WRR1とWRR2はどちらも重み付きラウンドロビンを実行するスケジューリンググループですが、WRR1のほうが優先度が高くなっています。

キュー4、5、6、7からは、60:30:12:6、つまり、10:5:2:1の比率でパケットが順番に送信されます。キュー0、1、2、3からは、WRR1グループのキューが空のとき、すなわち、キュー4、5、6、7が空のときだけ、10:5:2:1の比率でパケットが順番に送信されます。

■ 送信キューのスケジューリング方式、ラウンドロビンの重み付け設定は、SHOW QOS PORTコマンドで確認できます。各送信キューの「Scheduler」、「WRR Weight」をご覧ください。


 

QoSポリシーのフィルタリング機能

ポリシーベースQoSでは、フローグループ、トラフィッククラスの各レベルにおいて、パケットのフィルタリング(破棄、許可など)を行うこともできます。

パケットフィルタリングは、ハードウェアパケットフィルターでもできますが、QoSポリシーのフィルタリング機能には、ポート単位のフィルタリングが可能という特長があります。

また、本製品には、ハードウェアパケットフィルターにマッチしたパケットに対して、ポリシーベースQoSが適用されないという仕様があるため、ポリシーベースQoSを利用しながらパケットフィルタリングを行いたい場合は、ハードウェアパケットフィルターを併用するのではなく、以下に述べるQoSポリシーのフィルタリング機能を使ってください。

 

設定方法

QoSポリシーにおけるフィルタリングの設定は、フローグループ、トラフィッククラスの「アクション」を指定することによって行います。

■ フローグループのレベルでフィルタリングを行う場合は、CREATE QOS FLOWGROUPコマンドのACTIONパラメーターを使います。たとえば、フローグループ「2」に分類されたパケットを破棄したい場合は、次のようにします。


■ トラフィッククラスのレベルでフィルタリングを行う場合は、CREATE QOS TRAFFICCLASSコマンドのACTIONパラメーターを使います。たとえば、トラフィッククラス「3」に分類されたパケットを破棄したい場合は、次のようにします。


Note - フローグループとトラフィッククラスの両方にアクション(NONE以外)が設定されている場合、フローグループのアクションが実行されます。

■ デフォルトトラフィッククラス(ユーザー定義のトラフィッククラスに分類されないトラフィック)に対するフィルタリングの設定は、CREATE QOS POLICYコマンドのDTCACTIONパラメーターで行います。たとえば、QoSポリシー「1」のデフォルトトラフィッククラスを破棄するには、次のようにします。


 

具体例

フィルタリング機能の使用例をいくつか示します。

■ ポート1において、すべてのIPマルチキャストパケットを破棄します。


■ ポート1において、マルチキャストグループ「236.5.8.213」以外のすべてのIPマルチキャストパケットを破棄します。


 

設定例

ここでは、ポリシーベースQoSの設定例を2つ紹介します。

ポリシーベースQoSを使用すると、IPアドレスやDSCP、TOS優先度などのIPヘッダー情報、TCPやUDPのポート番号などに基づき、パケットに与えるサービスレベルを制御することができます。

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

Note - 以下の設定例はあくまでも説明のためのサンプルです。

 

最小帯域保証

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

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

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


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

ここでは、クライアントが接続されているスイッチポート1〜3にQoSポリシーを適用し、ポート1のクライアントに80Mpbsの最小帯域を保証するよう設定します。また、プレマーキングを利用して、クライアントごとに異なる送信キューを割り当てます。

さらに、ポート4でREDアルゴリズムを使用するよう設定し、輻輳発生時にポート2、3のクライアントからのトラフィックが優先的に破棄されるようにします。

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

表 7:トラフィッククラスの設定
 
条件
最小帯域
最大帯域
プレマーキング
1 SrcIP = 192.168.1.1 80Mbps 設定なし 送信キュー7を割り当て
2 SrcIP = 192.168.1.2 設定なし 設定なし 送信キュー4を割り当て
3 SrcIP = 192.168.1.3 設定なし 設定なし 送信キュー1を割り当て


送信ポートにおけるREDカーブセットの設定ポリシーは次のとおりです。この例では、帯域クラスの値を使用しないため、各キューにおいては、すべての帯域クラスに同じREDカーブを適用します。

表 8:REDカーブセットの設定
キュー番号
START
STOP
DROP(%)
7 128Kbyte 256Kbyte 15(0.003%)
4 0Kbyte 0.5Kbyte 0(100%)
1 0Kbyte 0.5Kbyte 0(100%)


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

  1. まず、ポリシーベースQoSの設定を行います。最初にQoSポリシー「1」を作成します。ここでは、デフォルトトラフィッククラスに割り当てる最大帯域を1Mbpsに制限しています。


  2. QoSポリシー「1」を受信スイッチポートである1〜3に関連付けます。


  3. プレマーキング用のDSCPMAPテーブルを編集し、インデックス(DSCPまたはMARKVALUE)が7、4、1のパケットに対して、送信キュー7、4、1を割り当てるような設定を行います。


  4. 各クライアントに対応する3つのトラフィッククラスを作成します。トラフィッククラス「1」には、80Mbpsの帯域を保証します。また、各トラフィッククラスに対して、MARKVALUEパラメーターの値をインデックスとしたプレマーキングを行います。


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


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


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


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


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


  10. 次に、パケット送信時のQoS処理について設定を行います。ここでは、QoSポリシーによって送信キュー「7」が割り当てられたトラフィッククラス「1」に優先的に帯域を与えるため、送信キュー「4」「1」では早めにパケットを破棄するようなREDカーブセットを作成します。


  11. 送信ポートであるスイッチポート4にREDカーブセット「2」を適用します。


 

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. プレマーキング用のDSCPMAPテーブルを編集し、パケットのDSCPフィールドを、インデックス(DSCPまたはMARKVALUE)と同じ値に書き換えるような設定を行います。


    Note - プレマーキング用DSCPテーブルは、デフォルトで上記の設定になっているため、以前にDSCPMAPテーブルの設定を変更していない場合、本手順は不要です。

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


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


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


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


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


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

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


スイッチ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. プレマーキング用のDSCPMAPテーブルを編集し、パケットのDSCPフィールドを、インデックス(DSCPまたはMARKVALUE)と同じ値に書き換えるような設定を行います。


    Note - プレマーキング用DSCPテーブルは、デフォルトで上記の設定になっているため、以前にDSCPMAPテーブルの設定を変更していない場合、本手順は不要です。

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


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


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


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


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


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


 

QoSポリシーのルール領域消費量

SET QOS PORTコマンド、または、SET QOS ACCELERATOR POLICYコマンドでQoSポリシーをスイッチポートやIPv6アクセラレーターボードに割り当てると、システム内部の「ルールテーブル」内にあるルール領域が消費されます(ルールテーブルの使用状況は、SHOW SWITCHコマンドで確認できます)。

詳しくは「スイッチング」/「クラシファイア」をご覧ください(「クラシファイアとルール領域消費量」を参照)。







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

PN: J613-M0021-12 Rev.M