トラフィック制御 / Quality of Service


用語一覧
設定手順例
受信時CoS値によるQoS設定例
ポリシーマップによるQoS設定例
ポリシーマップとクラスマップ
クラスマップ
ポリシーマップ
QoS処理フロー詳細
ポリシーマップによるQoS処理
トラフィック分類
プレマーキング
メータリングとポリシング
シングルレートポリサー
CoS値の書き換え
送信時のQoS処理
送信キューの割り当て
キューへの格納
キューからの送信
送信スケジューリング
シェーピング
設定例
特定のDCSP値を持つパケットを指定の送信キューに割り当てる
特定IPアドレスからのパケットにDSCP値をセットし、指定の送信キューに割り当てる
ポリシーマップのフィルタリング機能
設定例
制御パケットの優先制御


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

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

ポリシーマップでは、クラスマップを用いてパケットをトラフィッククラスに分類し、それぞれに異なるサービスレベル(帯域や優先度、経路)を割り当てることができます。クラスマップでは、IPアドレスやTCP/UDPポート、DSCP(DiffServ Code Point)などに基づいたトラフィック分類が可能です。
Note
同一ポート上において、ハードウェアパケットフィルターとポリシーマップを併用することは可能です。該当ポートで受信したパケットの処理は、ハードウェアパケットフィルター、ポリシーマップの順に行われます。ただし、次項で述べる制限事項があるので注意してください。

Note
ハードウェアパケットフィルターにマッチしたパケットに対して、ポリシーマップによるQoSは適用されません(ここでの「マッチ」とは、破棄(deny)だけでなく明示的な転送許可(permitなど)も含みます)。ハードウェアパケットフィルターで破棄(deny)のアクションだけを使用する場合は両者を併用しても問題はありませんが、ハードウェアパケットフィルターで破棄以外のアクションを使用する場合は、ハードウェアパケットフィルターとポリシーマップを併用せずに、ポリシーマップのフィルタリング機能を使ってフィルタリングを行ってください。

Note
ポリシーベースのQoS、Web認証の2機能を同時に使用することはできません。

Note
スタティックトランクグループに QoS の設定をした場合、スタティックトランクグループではないポートに QoS の設定ができません。同様に、スタティックトランクグループではないポートにQoSの設定をするとスタティックトランクグループに QoS の設定ができません。ただし、スタティックトランクグループに QoS、それ以外のポートにアクセスリストの設定、または、スタティックトランクグループに アクセスリスト、それ以外のポートにQoSの設定は可能です。

用語一覧

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

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

■ QoS 3属性

QoS処理の過程でパケットに割り当てられたり、参照・変更されたりする3つの属性値。CoS、DSCP、帯域クラスのこと。ただし、CoS値は内部CoS値と外部CoS値があるため、厳密には4種類(内部CoS値と外部CoS値については後述)。

CoSとDSCPは、パケットのヘッダーに格納されうる値。パケット受信時にすでに値がセットされている場合もあれば、されていない場合もある。いずれの場合も、QoS処理の過程で変更が可能。

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

■ CoS

IEEE 802.1p Class of Serviceの略。VLANタグヘッダー内にある3ビットのフィールドで0~7の値をとる。パケットを受信した機器に対して、パケット取り扱い時の優先度を示す目的で設けられている。802.1p対応機器は、この値に基づいてパケットの優先制御ができる。また、送信時に値を書き換えることで、後続の機器に対して、新たな優先度を指示できる。802.1pユーザープライオリティーとも呼ぶ。
なお、本製品のQoS機能では次の2つのCoS値を使い分けている。

パケット受信時には、内部CoS値と外部CoS値は同じ。プレマーキングでは外部CoS値のみ変更可能。

■ DSCP

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

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

■ 帯域クラス

トラフィッククラスの帯域使用量に応じてパケットを3つのクラス(Green、Yellow、Red)に分類したもの。特定のパケットが、トラフィッククラスの帯域基準値にどの程度適合しているかを示す。帯域クラスGreenは、あまり帯域を使っていないため、優先的に帯域を割り当てることのできるクラス。帯域クラスYellowは、中程度の帯域使用量のクラス。帯域クラスRedは、最大帯域の設定を超過しているクラスであり、キューイング前に無条件で破棄する設定(ポリシング設定)が可能。また、送信キューの混雑時には、Red、Yellow、Greenの順にパケットの破棄が開始される。

■ トラフィック分類

パケット受信後最初に行われるQoS処理。クラスマップを用いて、受信パケットをトラフィッククラスに分類する。本処理は、受信ポートにポリシーマップが適用されているときだけ行われる。

■ クラスマップ

パケットをトラフィッククラスに分類するための条件を定義するもの。IPアドレス、TCP/UDPポート、CoS、DSCPなど、さまざまな条件を指定できる。クラスマップは単体で使用するものではなく、ポリシーマップにまとめあげた上で受信スイッチポートに適用して使用する。

■ ポリシーマップ

QoS機能の中核的設定要素。トラフィック分類、プレマーキング、メータリング、ポリシング、CoS値書き換えの各処理を行うために必要な情報をひとつにまとめる機能を持つ。

ポリシーマップは、ユーザー定義のクラスマップ(複数)と暗黙のデフォルトクラスマップ(1つ)から構成され、各クラスマップによって分類・識別されたトラフィッククラスに対するプレマーキング、メータリング、ポリシング、CoS値書き換えの各動作もあわせて指定することができる。

ポリシーマップをスイッチポートに適用すると、該当ポートで受信したパケットに対し、ポリシーマップ内のクラスマップによるトラフィック分類が行われ、トラフィッククラスごとに指定されたQoS処理が行われるようになる。

■ プレマーキング

トラフィッククラスに分類されたパケットに対して最初に行われるQoS処理。パケットのQoS 3属性(外部CoS値、DSCP値、帯域クラス)を任意の値に書き換えることができる。書き換え処理は、DSCP値をキーにpremark-dscpマップを参照して行われる。本処理は、受信ポートにポリシーマップが適用されており、なおかつプレマーキングが有効なとき(trust dscpコマンドが設定されているとき)だけ行われる。

■ premark-dscpマップ

プレマーキング時に使用するQoS 3属性(外部CoS値、DSCP値、帯域クラス)の書き換え表。プレマーキング前のDSCP値(0~63)をキーとして、書き換え後の3属性値を調べるために使う。

■ メータリング

プレマーキング後に行われるQoS処理。ポリサーにおける帯域基準値の設定に基づき、各トラフィッククラスが実際にどの程度の帯域を使用しているかを計測し、その結果に基づいてパケットを3つの帯域クラス(Green、Yellow、Red)に分類する。本処理は、受信ポートにポリシーマップが適用されており、なおかつ、該当トラフィッククラスに対してポリサーが設定されているときだけ行われる。

■ ポリサー

トラフィッククラスの帯域使用量をあらかじめ設定された基準値以内に抑えるための仕組み。トラフィッククラスの帯域使用量を計測し、各パケットを帯域クラスに分類(メータリング)する。帯域クラス分類後の処理としては、帯域超過パケットの破棄(ポリシング)か、DSCP値を選択できる。

ポリサーには、シングルレートがある。

■ ポリシング

メータリング後に行われるQoS処理の1つ。メータリングの結果、帯域クラスRedに分類されたパケット(帯域超過パケット)を破棄することで、該当トラフィッククラスの帯域使用量をあらかじめ指定された帯域基準値の範囲内に抑える。本処理は、受信ポートにポリシーマップが適用されており、なおかつ、該当トラフィッククラスに対してポリサーが設定されているときだけ行われる。

■ 送信キュー
本製品のスイッチポートは、それぞれ4レベルの送信キュー(キュー番号0~3)を備えている。各キューに対しては、送信スケジューリング方式(PQ、WRR)、WRR時の重み付け値などを設定できる。PQ使用時は、番号の大きいキューほど優先度が高くなる。パケットをどの送信キューに格納するかは、内部CoS値をキーとしてcos-queueマップ(後述)を参照することにより決定する。

■ 送信キュー割り当て

出力ポートの決定後、最初に行われるQoS処理。内部CoS値をキーとしてcos-queueマップを参照し、該当パケットの格納先送信キューを決定する。なお、本製品のQoS機能では、割り当てる送信キューを直接指定することはできない。

■ cos-queueマップ

内部CoS値と送信キューの対応表。各CoS値(0~7)に対応する送信キュー番号(0~3)が格納されている。パケットに送信キューを割り当てるときに参照する。

■ 送信キュー管理

各種の転送判断やQoS処理を経て送信ポートに到着したパケットは、ここまでの処理で決定された送信キューに格納される。このとき、キューが混雑していた場合はパケットを廃棄するが、そのときの方式(送信キュー管理方式)として本製品はテールドロップ方式を採用している。

■ テールドロップ方式

送信キュー管理方式の1つ。キューが混雑しているとき、帯域クラスごとに設定された最大キュー長を超過したパケットを無条件に破棄する。

■ 送信スケジューリング

パケット処理の最終段階であるキューからの送信処理を、どのような順序で行うかを規定するもの。本製品では、PQ(絶対優先スケジューリング)とWRR(重み付きラウンドロビンスケジューリング)の2種類から選択できる。

■ PQ方式

Priority Queueingの略。送信スケジューリング方式の1つ。絶対優先スケジューリングとも言う。上位キュー(番号の大きなキュー)が空になるまで下位のキューからはパケットを送信しない。この方式はシンプルだが、上位キューに割り当てられるパケットが多いときに、下位キューのパケットが送信されなくなるという欠点がある。

■ WRR方式

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

■ シェーピング

パケットを送信するときの速度(送信間隔)を調整することで、ネットワークに流れ込むトラフィックを一定のレートにならす機能。シェーピングを行うには、送信スイッチポートに送信レートの上限値を設定する。

設定手順例

詳細な説明に入る前に、QoS機能の設定がどのようなものかを示すため、具体的な設定手順の例を示します。

個々の設定項目については後で詳しく説明するため、ここでは触れません。

受信時CoS値によるQoS設定例

受信パケットのCoS値に基づくシンプルなQoS設定を示します。

この例では、CoS値に基づく送信キュー割り当て(cos-queueマップ)と送信スケジューリング方式の設定だけを初期値から変更しています。
  1. QoS機能を有効にします。
    QoS関連コマンドの多くは、QoS機能を有効にしておかないと実行できないので、最初にmls qos enableコマンドを実行してQoS機能を有効化しておいてください。
    awplus(config)# mls qos enable
    

  2. cos-queueマップを編集して、パケットのキュー割り当てを変更します。これには、mls qos map cos-queueコマンドを使います。
    ここでは、受信したパケットのCoS値0~7に対して、送信キュー0, 0, 1, 1, 2, 2, 3, 3を割り当てるよう設定します。

    awplus(config)# mls qos map cos-queue 0 to 0
    awplus(config)# mls qos map cos-queue 1 to 0
    awplus(config)# mls qos map cos-queue 2 to 1
    awplus(config)# mls qos map cos-queue 3 to 1
    awplus(config)# mls qos map cos-queue 4 to 2
    awplus(config)# mls qos map cos-queue 5 to 2
    awplus(config)# mls qos map cos-queue 6 to 3
    awplus(config)# mls qos map cos-queue 7 to 3
    

    Note
    タグなしパケットはCoS値「0」と見なされます。

  3. 送信スケジューリングの設定を行います。
    初期設定はPQ(絶対優先スケジューリング)ですが、ここではポート1.0.1~1.0.24に対し、すべての送信キューでWRRスケジューリングを用いるよう設定します。各キューからの送信比率は、上位キューから10:5:2:1とします。

    awplus(config)# interface port1.0.1-1.0.24
    awplus(config-if)# wrr-queue weight 10 queues 3
    awplus(config-if)# wrr-queue weight 5 queues 2
    awplus(config-if)# wrr-queue weight 2 queues 1
    awplus(config-if)# wrr-queue weight 1 queues 0
    

設定は以上です。

ポリシーマップによるQoS設定例

ポリシーマップを利用したQoSの設定は、ポリシーマップを作成し、受信スイッチポートに適用することで行います。

次にポリシーマップを利用したQoSの基本的な設定手順例を示します。

  1. QoS機能を有効にします。
    QoS関連コマンドの多くは、QoS機能を有効にしておかないと実行できないので、最初にmls qos enableコマンドを実行してQoS機能を有効化しておいてください。
    awplus(config)# mls qos enable
    

  2. ホストからのIPパケットを許可するハードウェアアクセスリストacl1を作成します。これにはaccess-list hardware(list)コマンド、access-list hardware(seq entry)コマンドを使います。QoS処理を適用するIPパケットに対しては、通常permitアクションを指定してください。

    awplus(config)# access-list hardware acl1
    awplus(config-ip-hw-acl)# permit tcp 192.168.1.100/24 any eq 22
    
    Note
    ハードウェアアクセスリストの概要と作成方法については、「トラフィック制御」の「アクセスリスト」をご覧ください。

  3. クラスマップを作成して、ホストからのパケットをそれぞれ個別のトラフィッククラスに分類できるようにします。
    クラスマップの作成はclass-mapコマンドで行います。class-mapコマンドでクラスマップ名を指定するとクラスマップモードに移動するので、同モードの各コマンドを使って分類条件を指定してください。ここでは、match access-groupコマンドを使って、ハードウェアアクセスリストの条件に合致したパケットを該当トラフィッククラスに分類するよう設定しています。
    awplus(config)# class-map cmap1
    awplus(config-cmap)# match access-group acl1
    awplus(config-cmap)# exit
    

  4. ポリシーマップを作成します。最初にpolicy-mapコマンドでポリシーマップの名前を指定して、ポリシーマップモードに移動します。
    awplus(config)# policy-map pmap1
    awplus(config-pmap)# 
    

  5. ポリシーマップにクラスマップを関連付け、該当クラスマップによって識別されたトラフィッククラスに対する処理を指定します。
    クラスマップの関連付けはclassコマンドで行います。同コマンドを実行すると、ポリシーマップ・クラスモードに移動するので、同モードのコマンドを使って処理内容を指定します。
    ここでは、クラスマップcmap1によって識別されたトラフィッククラスのパケットに対し、外部CoS値、内部CoS値の両方を「3」に書き換えるよう設定しています
    awplus(config-pmap)# class cmap1
    awplus(config-pmap-c)# remark new-cos 3 both
    awplus(config-pmap-c)# exit
    

  6. ポリシーマップpmap1を受信スイッチポートであるポート1.0.1に適用します。
    awplus(config)# interface port1.0.1
    awplus(config-if)# service-policy input pmap1
    awplus(config-if)# exit
    

設定は以上です。

ポリシーマップとクラスマップ

次に、QoS機能の中核的設定要素であるポリシーマップと、ポリシーマップの骨格を形成するクラスマップについて説明するとともに、それぞれの設定方法を解説します。

クラスマップ

クラスマップは、パケットをトラフィッククラスに分類するための条件を定義する仕組みです。1つのクラスマップは、1つのトラフィッククラスの分類条件を定義します。

クラスマップの全体構造は次のとおりです。


各クラスマップは、1つ以上のmatch節と、1つのアクションで構成されます。


パケットの分類条件として使用できる情報には次のものがあります。

また、クラスマップのアクションは次のようにして決まります。

  1. match節にmatch access-group節が含まれている場合、match access-group節で指定したアクセスリストのアクションがクラスマップのアクションとなります
  2. match節にmatch access-group節が含まれていない場合、クラスマップのアクションはpermitとなります

■ クラスマップの作成手順は次のとおりです。
  1. 分類条件として、ハードウェアIPアクセスリストやハードウェアMACアクセスリストで識別するものを使用する場合は、適宜ハードウェアアクセスリストを定義します。
    awplus(config)# access-list 3021 permit tcp 192.168.20.0/24 192.168.10.0/24
    

    Note
    ハードウェアアクセスリストの概要と作成方法については、「トラフィック制御」の「アクセスリスト」をご覧ください。

  2. グローバルコンフィグモードのclass-mapコマンドでクラスマップ名を指定し、クラスマップモードに入ります。
    awplus(config)# class-map tcp20to10
    

  3. クラスマップモードには、名前がmatch~で始まるコマンドが多数あります。これらはクラスマップに分類条件(match節)を追加するためのコマンドです。これらのコマンドを実行して、必要な分類条件をすべて指定してください。分類条件を複数指定した場合、該当クラスマップにマッチするにはすべての条件を満たす必要があります。
    awplus(config-cmap)# match access-group 3021
    

  4. exitコマンドでクラスマップモードを抜ければ、該当クラスマップの設定は完了です。
    awplus(config-cmap)# exit
    

■ クラスマップの内容を変更するには、再度class-mapコマンドでクラスマップ名を指定し、クラスマップモードに入ります。
awplus(config)# class-map tcp20to10
awplus(config-pmap)# 

■ クラスマップを削除するには、class-mapコマンドをno形式で実行します。
awplus(config)# no class-map tcp20to10


■ ハードウェアアクセスリストの設定はshow access-listコマンドで確認できます。
awplus# show access-list
Hardware IP access list 3021
    permit tcp 192.168.20.0/24 192.168.10.0/24

■ クラスマップの設定はshow class-mapコマンドで確認できます。
awplus# show class-map

    CLASS-MAP-NAME: tcp20to10
      QOS-ACCESS-LIST-NAME: 3021

ポリシーマップ

ポリシーマップは、受信パケットに対してさまざまなQoSを適用するためのメカニズムで、トラフィック分類、プレマーキング、メータリング、ポリシング、CoS値書き換えの各処理を行うために必要な情報をひとつにまとめる機能を持ちます。

ポリシーマップの全体構造は次のとおりです。

ポリシーマップは、ユーザー定義のクラスマップ(複数)と暗黙のデフォルトクラスマップ(1つ)から構成され、各クラスマップによって分類・識別されたトラフィッククラスに対するプレマーキング、メータリング、ポリシング、CoS値書き換えの各動作もあわせて指定することができます。

ポリシーマップをスイッチポートに適用すると、ポリシーマップ内の各クラスマップによって受信パケットがトラフィッククラスに分類され、各トラフィッククラスに対してあらかじめ指定したQoS処理が行われるようになります。パケットとクラスマップの照合は、クラスマップをポリシーマップに関連付けした順序で行われます。

また、denyアクションのクラスマップを用いることで、パケットフィルタリングを行うこともできます。

■ ポリシーマップの作成手順は次のとおりです。必要なクラスマップの作成は済んでいるものとします。
  1. グローバルコンフィグモードのpolicy-mapコマンドでポリシーマップ名を指定し、ポリシーマップモードに入ります。
    awplus(config)# policy-map test
    

  2. ポリシーマップモードのclassコマンドでクラスマップ名を指定し、ポリシーマップ・クラスモードに移動します。
    awplus(config-pmap)# class downWeb
    

  3. ポリシーマップ・クラスモードの各コマンドを使って、クラスマップによって識別されたトラフィッククラスに対する処理内容(プレマーキング、メータリング、ポリシング、CoS値書き換え)を指定します。
    awplus(config-pmap-c)# police single-rate 50000 10240 10240 action drop-red
    awplus(config-pmap-c)# exit
    


■ ポリシーマップをスイッチポートに適用するには、インターフェースモードのservice-policy inputコマンドを使います。これにより、該当ポートで受信したパケットに対してポリシーマップで定義したQoS処理が適用されます。
awplus(config)# interface port1.0.1
awplus(config-if)# service-policy input test
■ トランクグループにポリシーマップを適用するときは、次の点にご注意ください。

■ スイッチポートからポリシーマップの適用を解除するには、service-policy inputコマンドをno形式で実行します。
awplus(config)# interface port1.0.1
awplus(config-if)# no service-policy input test

■ ポリシーマップの内容を変更するには、再度policy-mapコマンドでポリシーマップ名を指定し、ポリシーマップモードに入ります。
awplus(config)# policy-map test
awplus(config-pmap)# 


■ ポリシーマップを削除するには、policy-mapコマンドをno形式で実行します。
awplus(config)# no policy-map test


■ ポリシーマップの設定はshow policy-mapコマンドで確認できます。
awplus# show policy-map

  POLICY-MAP-NAME: pmap1
    State: attached
    Default class-map action: permit

    CLASS-MAP-NAME: default
      Policer counters enabled

    CLASS-MAP-NAME: cmap1
      QOS-ACCESS-LIST-NAME: test1
      Policer counters enabled
      Remark CoS and CoS-Queue Map Index to 3


■ スイッチポートに適用されているポリシーマップの情報はshow mls qos interfaceコマンドで確認できます。
awplus# show mls qos interface port1.0.1

Interface: port1.0.1

  INPUT-POLICY-MAP-NAME: pmap1
    CLASS-MAP-NAME: default
      Policer counters enabled
    CLASS-MAP-NAME: cmap1
      QOS-ACCESS-LIST-NAME: test1
      Policer counters enabled
      Remark CoS and CoS-Queue Map Index to 3

QoS処理フロー詳細

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

次に、パケットを受信してから送信するまでの、QoS処理の大まかな流れを示します。一見すると非常に複雑ですが、通常はすべての段階を設定する必要はありません。
なお、図の左側では、QoS処理過程で使用される「QoS 3属性」(CoS値は内部CoS値と外部CoS値があるため合計4種類)がどこで参照(使用)され、どこで書き換え(割り当て)られるのかを示しています。


表 1:QoS処理の流れ
受信スイッチポート
1 受信 スイッチポートでパケットを受信
ポリシーマップによるQoS処理(受信ポートにポリシーマップが適用されている場合のみ)
2 パケット分類 クラスマップにより、パケットをトラフィッククラスに分類する。どのクラスマップにもマッチしなかったパケットは、デフォルトトラフィッククラスに分類する。なお、パケットとクラスマップの照合は、クラスマップをポリシーマップに関連付けした順序で行われる
3 プレマーキング プレマーキングの設定がなされている場合、パケットのDSCP値をキーにpremark-dscpマップを参照して、受信パケットの3属性(外部CoS値、DSCP値、帯域クラス)を書き換える
4 メータリング トラフィッククラスでポリサーの設定がなされている場合、該当トラフィッククラスがどの程度帯域を使用しているかを計測し、受信パケットを帯域クラスに分類する
5 ポリシング ポリサーのアクションがポリシングの場合は、帯域クラスRedに分類されたパケット(帯域超過パケット)を破棄する
6 CoS値書き換え remark new-cosコマンドの設定にしたがい、内部・外部CoS値を書き換える。内部CoS値は送信キューの決定にのみ使われる。外部CoS値はタグ付きポートからパケットを出力するとき、パケットのCoSフィールドに設定される
送信時のQoS処理(すべてのパケットが対象)
7 送信キュー決定 パケットの内部CoS値(0~7)をキーとしてcos-queueマップを参照し、パケットに割り当てる送信キュー(0~3)を決定する。
8 送信キューへの格納 ここまでの処理で決定した送信キューにパケットを格納する。キューが混雑している場合は、テールドロップ方式により既定の最大キュー長を超えたパケットを破棄する
9 送信キューからの取り出し 設定されたスケジューリング方式にしたがい、送信キューからパケットを出力する。PQ(絶対優先)、WRR(重み付きラウンドロビン)のいずれか、あるいは、両者の併用も可能。なお、送信ポートに送信レートの上限値が設定されている場合は、指定されたレートでパケットを送信するシェーピング動作を行う
送信スイッチポート
10 送信 スイッチポートからパケットを送信

以下では、各ステップにおける処理内容と設定方法について詳しく解説します。

ポリシーマップによるQoS処理

受信ポートにポリシーマップが適用されている場合は、受信ポートにおいて、ポリシーマップに基づいた一連のQoS処理(トラフィック分類、プレマーキング、メータリング、ポリシング、CoS値書き換え)が行われます。

受信ポートにポリシーマップが適用されていない場合、これらの処理は行われず、送信時のQoS処理に移ります。

トラフィック分類

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

受信パケットとクラスマップの照合は、ポリシーマップにクラスマップを追加した順序で行われます。

トラフィック分類後のポリシーマップ処理(プレマーキング、CoS値書き換え)は、トラフィッククラス単位で行われます。

なお、クラスマップとポリシーマップの作成、および、クラスマップのポリシーマップへの関連付けについては、本解説編の「ポリシーマップとクラスマップ」をご覧ください。

プレマーキング

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

本製品のQoS機能では、各パケットは次の3つの属性を持ちます。これらの属性は、QoS処理の各段階において、割り当てられたり、変更されたり、参照されたりします。


プレマーキングでは、これらの3属性(ここでのCoSは「外部CoS値」であることに注意)を書き換える(変更する)ことができます。書き換えは、パケットのDSCP値をキーにpremark-dscpマップを参照することで行います。


■ ポリシーマップでプレマーキングが有効かどうかは、show policy-mapコマンドで確認できます。「Trust state: DSCP」の表示があれば、プレマーキングは有効です。
awplus# show policy-map

  POLICY-MAP-NAME: example
    State: detached
    Default class-map action: permit
    Trust state: DSCP

    CLASS-MAP-NAME: default

    CLASS-MAP-NAME: public1

    CLASS-MAP-NAME: public2

■ premark-dscpマップの内容は、show mls qos maps premark-dscpコマンドで確認できます。
awplus# show mls qos maps premark-dscp 1
  PREMARK-DSCP-MAP:

    DSCP 1
    --------------------------------
    New DSCP               1
    New CoS                7
    New Bandwidth Class    green

メータリングとポリシング

本製品の帯域制御は、ポリサーによって指定された帯域基準値(トラフィックレートとバーストサイズ)をもとに、各トラフィッククラスが実際にどの程度の帯域を使用しているかを計測し、その結果に基づいてパケットを3つの帯域クラスに分類することによって行います。

帯域使用量の計測と帯域クラスへの分類処理はメータリングと呼ばれ、プレマーキングの後に行われます。

メータリングでは、トラフィッククラスに属するパケットを次に示す3つの「帯域クラス」に分類します。

表 2:3つの帯域クラス
帯域クラス
帯域使用量
取り扱いの一例
Green 少ない 帯域割り当ての優先度は最高
Yellow 中程度 帯域割り当ての優先度は中。キューが混雑したときは(Redの次に)優先的に破棄
Red 使いすぎ 帯域割り当ての優先度は最低。キューへの格納前に破棄、あるいは、キューが混雑したとき優先的に破棄

帯域クラス分類後、ポリシングが行われます。ポリシングは、帯域クラスRedを破棄してトラフィッククラスの使用帯域を一定値までに制限する動作です。

■ トラフィッククラスに対してメータリングを行うには、トラフィッククラスの設定時にポリサーという設定要素を指定する必要があります。

ポリサーは、トラフィッククラスの帯域基準値(トラフィックレートとバーストサイズ)と帯域クラス分類後の処理を指定するための設定要素で、以下があります。


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


■ 個々のトラフィッククラスに対してメータリングを行いたい場合は、各トラフィッククラスにポリサーを適用します。


■ ポリサーの設定時には、actionパラメーターで帯域クラス分類後の処理(アクション)を指定する必要があります。


■ メータリングの設定は、show policy-mapコマンドで確認できます。
awplus# show policy-map

  POLICY-MAP-NAME: pmap1
    State: attached
    Default class-map action: permit

    CLASS-MAP-NAME: default
      Policer single-rate action drop-red:
       average rate(24000 kbps)  minimum burst(16384 B) maximum burst(16384 B)
      Policer counters enabled

シングルレートポリサー
シングルレートポリサーでは、1つのトラフィックレート(MAXRATE)と2つのバーストサイズ(MINBURST、MAXBURST)、あわせて3つの帯域基準値に基づいて、トラフィッククラス内の各パケットを帯域クラスに分類します。

シングルレートポリサーはおもに、トラフィッククラスが使用できる最大帯域を一定値までに制限するときに使用します。

Note
本製品のポリシングは、ポートで受信したすべてのトラフィックに対して動作する仕様です。特定のトラフィッククラスに適用した場合でも、そのポートで受信したすべてのトラフィックに対してポリシングが動作しますのでご注意ください。
    awplus(config)# policy-map test1
    awplus(config-pmap)# class default
    awplus(config-pmap-c)# police single-rate 10240 16384 16384 action drop-red
    
    awplus(config)# interface port1.0.1
    awplus(config-if)# service-policy input test1
    

表 3:シングルレートポリサーの判定基準
帯域クラス
帯域使用量
判定基準
Green 少ない バースト量 <= MINBURST
Yellow 中程度 MINBURST < バースト量 <= MINBURST + MAXBURST
Red 使いすぎ バースト量 > MINBURST + MAXBURST


ここでのバースト量とは、トラフィックの流入量がMAXRATEを超えた場合に、MAXRATEの超過分としてカウントされるデータ量を示しています。トラフィック量がMAXRATE以下であれば、バースト量は0になります。

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

これに対し、MAXRATEをオーバーしている時間が長くなると、バースト量がMINBURSTを超えることがあります。この場合、MINBURSTを超えてカウントされたパケットには、帯域クラスYellowが割り当てられます。さらに時間が経過すると、バースト量がMINBURST + MAXBURSTを超えますが、この超過分は帯域クラスRedとなります。

シングルレートポリサー使用時は、ポリシング設定により帯域クラスRedのパケットを無条件で破棄することで、該当トラフィッククラスの帯域使用量をMAXRATE + MINBURST + MAXBURST以内に抑えることができます。これは、最大帯域幅を制限する設定となります。



CoS値の書き換え

CoS値の書き換えは、送信キューの割り当て前に行われるQoS処理です。

トラフィッククラスに属するパケットの外部CoS値、内部CoS値を書き換えることで、送信時に任意のCoS値をセットしたり、使用する送信キューを変更したりすることが可能です。

CoS値書き換えの設定はremark new-cosコマンドで行います。ポリサーの設定をしなくてもCoS値の書き換えは行えます。

■ 特定のトラフィッククラスに属するパケットに対してCoS値の書き換えを行うには、該当トラフィッククラスを対象とするポリシーマップ・クラスモードにおいて、remark new-cosコマンドを実行し、書き換え後のCoS値を指定します。
省略可能なキーワードinternal、external、bothを指定することで、それぞれ「内部CoS値のみ書き換え」、「外部CoS値のみ書き換え」、「内部・外部CoS値とも書き換え」の指示が可能です(キーワード省略時はbothと見なされる)。


■ CoS値書き換えの設定は、show policy-mapコマンドで確認できます。「Remark CoS-Queue Map Index to X」は内部CoS値だけをXに書き換える(internal設定)、「Remark CoS and CoS-Queue Map Index to X」は内部CoS値と外部CoS値の両方をXに書き換える(both設定)、「Remark CoS to X」は外部CoS値だけをXに書き換える(external設定)の意味です。

Note
show policy-mapコマンドの表示では、「CoS」が外部CoS値(送出パケットにセットされる値)、「CoS-Queue Map Index」が内部CoS値(cos-queueマップの参照キー)を表しています。

awplus# show policy-map example2

  POLICY-MAP-NAME: example2
    State: detached
    Default class-map action: permit

    CLASS-MAP-NAME: default

    CLASS-MAP-NAME: highprio
      Remark CoS-Queue Map Index to 7
                                      
    CLASS-MAP-NAME: midprio
      Remark CoS and CoS-Queue Map Index to 4

    CLASS-MAP-NAME: markone
      Remark Cos to 1

送信時のQoS処理

転送判断(L2スイッチング処理)やQoS処理を経て送信ポートに到着したパケットは、cos-queueマップに基づいて決定された送信キューに格納され、実際に送信されるのを待ちます。

以下では、送信キューの決定、送信キューへの格納と取り出し(送信)に関するQoS処理について解説します。これらの処理はポリシーマップの有無にかかわらずすべてのパケットに対して行われます。

送信キューの割り当て

本製品は、パケットの内部CoS値をキーにcos-queueマップを検索して送信キューを決定します。

内部CoS値とは、送信キュー割り当て時にのみ参照されるCoS値のことです。タグ付きパケットの場合、受信時にパケットが持っていたCoS値が内部CoS値の初期値となります。タグなしパケットの場合、内部CoS値「0」が初期値となります。内部CoS値は、CoS値書き換え処理によって任意の値に変更することも可能です。

■ パケットに対する送信キュー割り当ての動作を変更するには、mls qos map cos-queueコマンドを使ってcos-queueマップを編集します。
たとえば、パケットの内部CoS値0~7に対して、送信キュー0, 0, 1, 1, 2, 2, 3, 3を割り当てるには次のように設定します。
awplus(config)# mls qos map cos-queue 0 to 0
awplus(config)# mls qos map cos-queue 1 to 0
awplus(config)# mls qos map cos-queue 2 to 1
awplus(config)# mls qos map cos-queue 3 to 1
awplus(config)# mls qos map cos-queue 4 to 2
awplus(config)# mls qos map cos-queue 5 to 2
awplus(config)# mls qos map cos-queue 6 to 3
awplus(config)# mls qos map cos-queue 7 to 3

■ cos-queueマップを初期設定に戻すには、mls qos map cos-queueコマンドをno形式で実行します。
awplus(config)# no mls qos map cos-queue

■ cos-queueマップの設定は、show mls qos maps cos-queueコマンドで確認できます。
awplus# show mls qos maps cos-queue
  COS-TO-QUEUE-MAP:
    COS :    0   1   2   3   4   5   6   7
    --------------------------------------
    QUEUE:   1   0   0   1   2   2   3   3

キューへの格納

送信ポートに到着したパケットは、ここまでの処理で決定された送信キューに格納されますが、格納先のキューが混雑していた場合は、テールドロップ方式によりパケットを破棄し、キューの混雑を解消します。

テールドロップ方式は、既定の最大キュー長を超過したパケットを無条件に廃棄するシンプルなキュー管理方式です。本製品では次のように帯域クラスごとに異なる最大キュー長が設定されています(設定変更は不可)。


キューからの送信

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

本製品は以下の2つのスケジューリング方式をサポートしています。初期状態では、すべての送信キューでPQ方式を使用するよう設定されています。

各スイッチポートにおいて、どちらか一方の方式が使用できます。

■ 送信ポートで使用するスケジューリング方式、および、WRRにおけるキューの重み付け値(送信比率)は、インターフェースモードのpriority-queueコマンド、wrr-queue weightコマンドで設定します。


■ 送信キューのスケジューリング方式、WRR使用時の重み付け(送信比率)設定は、show mls qos interfaceコマンドで確認できます。スケジューリング方式は「Scheduler」欄を、WRR使用時の重み付け値は「Weight」欄をご覧ください。
awplus# show mls qos interface port1.0.15

Interface: port1.0.15

  Number of egress queues: 8

  Egress Queue:         0
    Status:             Enabled
    Scheduler:          Weighted Round-Robin
    Weight:             1
    Queue Limit:        12%
    Egress Rate Limit:  0 Kb

  Egress Queue:         1
    Status:             Enabled
    Scheduler:          Weighted Round-Robin
    Weight:             1
    Queue Limit:        12%
    Egress Rate Limit:  0 Kb

  Egress Queue:         2
    Status:             Enabled
    Scheduler:          Weighted Round-Robin
    Weight:             2
    Queue Limit:        12%
    Egress Rate Limit:  0 Kb

  Egress Queue:         3
    Status:             Enabled
    Scheduler:          Weighted Round-Robin
    Weight:             2
    Queue Limit:        12%
    Egress Rate Limit:  0 Kb

  Egress Queue:         4
    Status:             Enabled
    Scheduler:          Weighted Round-Robin
    Weight:             5
    Queue Limit:        12%
    Egress Rate Limit:  0 Kb

  Egress Queue:         5
    Status:             Enabled
    Scheduler:          Weighted Round-Robin
    Weight:             5
    Queue Limit:        12%
    Egress Rate Limit:  0 Kb

  Egress Queue:         6
    Status:             Enabled
    Scheduler:          Weighted Round-Robin
    Weight:             10
    Queue Limit:        12%
    Egress Rate Limit:  0 Kb

  Egress Queue:         7
    Status:             Enabled
    Scheduler:          Weighted Round-Robin
    Weight:             10
    Queue Limit:        12%
    Egress Rate Limit:  0 Kb

シェーピング
パケット送信時の速度(送信間隔)を調整することで、ネットワークに流れ込むトラフィックを一定のレートにならす機能をシェーピングと呼びます。

本製品では、スイッチポートに対して送信レートの上限値を設定することで、シェーピングを行うことが可能です。

■ スイッチポートに対して送信レートの上限値を設定するには、インターフェースモードのegress-rate-limitコマンドを使います。

たとえば、ポート1.0.13の送信レートを50Mbpsに制限するには、次のように指定します。帯域制限の粒度は64Kbpsなので、指定値が64Kbpsの倍数(50176Kbps = 64Kbps x 784)に丸められている点に注意してください。
awplus(config)# interface port1.0.13
awplus(config-if)# egress-rate-limit 50m
% Egress rate limit has been set to 50176 Kb

■ スイッチポートの送信レート上限値は、show interfaceコマンドで確認できます。「Egress Rate Limit」欄をご覧ください。
awplus> show interface port1.0.13
Interface port1.0.13
  Scope: both
  Link is UP, administrative state is UP
  Thrash-limiting
    Status Not Detected, Action learn-disable, Timeout 1(s)
  Hardware is Ethernet, address is 0000.cd24.0367 (bia 0000.cd24.0367)
  index 5013 metric 1 mtu 1500
  duplex-full speed 100 polarity auto
  <UP,BROADCAST,RUNNING,MULTICAST>
  VRF Binding: Not bound
  Egress Rate Limit 50176 Kb
    input packets 235512, bytes 16850873, dropped 0, multicast packets 12
    output packets 8746698, bytes 9367135608, multicast packets 2007 broadcast p
ackets 11

設定例

QoSの各種処理を組み合わせた具体的な設定コマンド例をいくつか紹介します。

特定のDCSP値を持つパケットを指定の送信キューに割り当てる

■ IPフォンなどが送出する DSCP値 40 のパケットを、内部CoS値 5に対応する送信キューに割り当てる設定
(内部CoS値と送信キューの対応(cos-queueマップ)は、mls qos map cos-queueコマンドで変更、show mls qos maps cos-queueコマンドで確認が可能です)
mls qos enable

class-map test1
 match dscp 40

policy-map qos_test1
 class test1
  remark new-cos 5 internal

interface port1.0.1-1.0.24
 service-policy input qos_test1

特定IPアドレスからのパケットにDSCP値をセットし、指定の送信キューに割り当てる

■ 送信元IPアドレスが 192.168.2.2 のパケットにDSCP値 40 をセットし、内部CoS値 5に対応する送信キューに割り当てる設定
(内部CoS値と送信キューの対応(cos-queueマップ)は、mls qos map cos-queueコマンドで変更、show mls qos maps cos-queueコマンドで確認が可能です)
mls qos enable 
access-list 3001 permit ip 192.168.2.2/32 any

class-map test2
 match access-group 3001

policy-map qos_test2
 class test2
  remark new-cos 5 internal
  remark-map to new-dscp 40
  police single-rate 64 16777216 16777216 action remark-transmit

interface port1.0.1-1.0.24
 service-policy input qos_test2

ポリシーマップのフィルタリング機能

ポリシーマップは、QoSだけでなくパケットフィルタリングにも使用できます(QoSとフィルタリングの併用も可能です)。

パケットフィルタリングは、インターフェースモードのaccess-groupコマンドを使ってスイッチポートにハードウェアアクセスリストを適用することでも実現できますが、ポリシーマップのほうが使用できる条件が多く、より柔軟なフィルタリングを行えます。

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

設定例

次にポリシーマップを利用したパケットフィルタリングの設定例を示します。
ここでは、192.168.10.0/24から192.168.20.0/24へのTCP接続(セッション開始)を禁止するよう設定します。

仕様により、1つのクラスマップでSynパケットだけを破棄する設定はできないため、ここでは2つのクラスマップを用意し、(1) Syn=Onのパケットは原則破棄、(2) ただしSyn=OnかつAck=Onのパケットは例外的に許可、という2つの条件を併用することでセッション確立を禁止します。

なお、192.168.10.0/24のネットワークは、ポート1.0.1~1.0.2に接続されているものと仮定します。

  1. QoS機能を有効にします。
    QoS関連コマンドの多くは、QoS機能を有効にしておかないと実行できないので、最初にmls qos enableコマンドを実行してQoS機能を有効化しておいてください。
    awplus(config)# mls qos enable
    

  2. 192.168.10.0/24から192.168.20.0/24へのTCPパケットを識別するハードウェアIPアクセスリストを作成します。これにはaccess-list(hardware ip)コマンドを使います。
    ここでは、Syn=OnかつAck=Onのパケットを許可するためのアクセスリスト3011と、Syn=Onのパケットを破棄するためのアクセスリスト3012を作成します。
    なお、ハードウェアIPアクセスリストでは、TCP制御フラグの指定はできません。これは、クラスマップのmatch tcp-flags節を使って指定します。
    awplus(config)# access-list 3011 permit tcp 192.168.10.0/24 192.168.20.0/24
    awplus(config)# access-list 3012 deny tcp 192.168.10.0/24 192.168.20.0/24
    

    Note
    ハードウェアアクセスリストの概要と作成方法については、「トラフィック制御」の「アクセスリスト」をご覧ください。

  3. 192.168.10.0/24から192.168.20.0/24へのTCPパケットに関して、Syn=OnかつAck=Onのパケットを許可するクラスマップpermitSA10と、Syn=Onのパケットを破棄するクラスマップdenyS10を作成します。
    クラスマップの作成はclass-mapコマンドで行います。同コマンドを実行するとクラスマップモードに移動するので、同モードのコマンドを使って分類条件を指定してください。ここでは、match access-groupコマンドを使って、前の手順で作成したハードウェアアクセスリストを指定し、match tcp-flagsコマンドでTCP制御フラグのマッチ条件を指定します。
    awplus(config)# class-map permitSA10
    awplus(config-cmap)# match access-group 3011
    awplus(config-cmap)# match tcp-flags syn ack
    awplus(config-cmap)# exit
    awplus(config)# class-map denyS10
    awplus(config-cmap)# match access-group 3012
    awplus(config-cmap)# match tcp-flags syn
    awplus(config-cmap)# exit
    

  4. 2つのクラスマップを束ねるポリシーマップacl10を作成します。最初にpolicy-mapコマンドでポリシーマップの名前を指定します。これにより、ポリシーマップモードに移動します。
    awplus(config)# policy-map acl10
    awplus(config-pmap)# 
    

  5. ポリシーマップにクラスマップを関連付け、該当クラスマップによって識別されたトラフィッククラスに対する処理を指定します。ここでは、192.168.10.0/24から192.168.20.0/24へのTCP Syn + Ackパケットを許可、同TCP Synパケットを拒否、その他すべてのパケットを許可するよう設定します。
    クラスマップの関連付けはclassコマンドで行います。同コマンドでクラスマップ名を指定するとポリシーマップ・クラスモードに移動します。QoSの設定では同モードのコマンドを使ってマッチしたパケットに対する処理内容を指定できますが、ここではパケットの許可・破棄だけが目的なので、それ以外の処理内容を指定する必要はありません。
    awplus(config-pmap)# class permitSA10
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class denyS10
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# exit
    

  6. ポリシーマップacl10をネットワーク192.168.10.0/24の接続されているスイッチポート1.0.1~1.0.2に適用します。
    awplus(config)# interface port1.0.1-1.0.2
    awplus(config-if)# service-policy input acl10
    

設定は以上です。

制御パケットの優先制御

CPU宛て通信の負荷が非常に高い環境では、BPDU、ARPなどの制御パケットを適切に処理できず、これら制御プロトコルの動作に支障をきたす場合があります。

このような事態を避けるため、本製品では初期状態でCPU宛てのパケットを下記のとおり自動的に優先制御するようになっています。この動作を変更することはできません。

表 4
パケットの種類
使用するCPU宛てキュー
AMF(アライドテレシスマネージメントフレームワーク) 3
BPDU(スパニングツリープロトコル)
EPSR
EAP
LACP
Loop Detect
LLDP
ARP Reply
DHCP Snooping 2
IGMP 1
ARP Request
ユニキャストパケット(スイッチングパケット)
ブロードキャストパケット
マルチキャストパケット


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

PN: 613-002310 Rev.F