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


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


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

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

ポリシーマップでは、クラスマップを用いてパケットをトラフィッククラスに分類し、それぞれに異なるサービスレベル(帯域や優先度、経路)を割り当てることができます。クラスマップでは、IPアドレスやTCP/UDPポート、DSCP(DiffServ Code Point)などに基づいたトラフィック分類が可能です。
Note
同一ポート上において、ハードウェアパケットフィルターとポリシーマップを併用することも可能です。その場合、該当ポートで受信したパケットの処理は、ハードウェアパケットフィルター、ポリシーマップの順に行われます。両方を通過しないとパケットは出力されません。詳細は「トラフィック制御」/「ハードウェアパケットフィルター」の解説編、「フィルター処理の流れ」をご覧ください。
Note
同一スイッチポート上においてリモートミラーリングとQoSは併用できません。
Note
同一スイッチポート上においてWeb認証とポリシーベース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値のみ、リマーキングでは内部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値、帯域クラスの再書き換え(リマーキング)を選択できる。

ポリサーには、帯域基準値の数によってシングルレートとツインレートの2種類がある。

■ ポリシング

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

■ リマーキング

メータリング後に行われるQoS処理の1つ。メータリングによって決定された帯域クラスの情報を利用して、パケットのDSCP値と帯域クラス値を再変更することで、キュー格納時の動作に影響を与えたり、後続の機器に情報を提供したりする。本処理は、受信ポートにポリシーマップが適用されており、なおかつ、該当トラフィッククラスに対してポリサーが設定されているときだけ行われる。

■ CoS値の書き換え

リマーキングの後、送信キューの割り当て前に行われるQoS処理。トラフィッククラスに属するパケットの外部CoS値、内部CoS値を書き換えることで、送信時に任意のCoS値をセットしたり、使用する送信キューを変更したりする。書き換え対象は、内部CoS値だけ、外部CoS値だけ、内部CoS値と外部CoS値の両方の3つから選択できる。

■ ポリシーベースルーティング

IPアドレス、TCP/UDPポートなどのさまざまな条件に基づいて、ルーティング対象パケットの転送先(ネクストホップ)を決定する処理。経路表を用いる通常のIPルーティングでは、転送先の判断に終点IPアドレスしか使われないが、ポリシーベースルーティングでは、クラスマップで指定可能なすべての条件を転送先の判断に使用できる。

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

■ 送信キュー割り当て

出力ポートの決定後、最初に行われるQoS処理。内部CoS値をキーとしてcos-queueマップを参照し、該当パケットの格納先送信キューを決定する。リマーキングで明示的に内部CoS値を割り当てなかった場合は、受信時のCoS値が内部CoS値になる(タグなしパケットはCoS値「0」扱い)。なお、本製品のQoS機能では、割り当てる送信キューを直接指定することはできない。しかし、リマーキング時に任意の内部CoS値を割り当てることはできるので、これとcos-queueマップを利用して間接的に送信キューを割り当てることが可能。

■ cos-queueマップ

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

■ 送信キュー管理

各種の転送判断や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に対して、送信キュー2, 2, 3, 3, 4, 5, 6, 7を割り当てるよう設定します。

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

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

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

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

設定は以上です。

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

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

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

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

  2. 3台のホストからのトラフィックを識別するため、3つのハードウェアIPアクセスリストを作成します。これにはaccess-list(hardware ip)コマンドを使います。QoS処理を適用するトラフィックに対しては、通常permitアクションを指定してください。
    awplus(config)# access-list 3001 permit ip 192.168.1.1/32 any
    awplus(config)# access-list 3002 permit ip 192.168.1.2/32 any
    awplus(config)# access-list 3003 permit ip 192.168.1.3/32 any
    
    Note
    ハードウェアアクセスリストの概要と作成方法については、「トラフィック制御」の「アクセスリスト」をご覧ください。

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

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

  5. ポリシーマップにクラスマップを関連付け、該当クラスマップによって識別されたトラフィッククラスに対する処理を指定します。
    クラスマップの関連付けはclassコマンドで行います。同コマンドを実行すると、ポリシーマップ・クラスモードに移動するので、同モードのコマンドを使って処理内容を指定します。
    ここでは、トラフィッククラスhost1には最低50Mbpsの帯域を保証するよう設定します。また、トラフィッククラスhost1、host2、host3には、それぞれ80Mbps、30Mbps、20Mbpsの帯域制限を設けます。帯域制限を機能させるため、action drop-redを指定し、最大トラフィックレート(+バーストサイズ許容量)を上回るレートで受信したパケットをキュー格納前に無条件で破棄するよう設定しています。
    awplus(config-pmap)# class host1
    awplus(config-pmap-c)# police twin-rate 50000 80000 10000 10000 action drop-red
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class host2
    awplus(config-pmap-c)# police single-rate 30000 10000 10000 action drop-red
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class host3
    awplus(config-pmap-c)# police single-rate 20000 10000 10000 action drop-red
    awplus(config-pmap-c)# exit
    

  6. ポリシーマップthree-hostsを受信スイッチポートであるポート1.0.1~1.0.3に適用します。
    awplus(config)# interface port1.0.1-1.0.3
    awplus(config-if)# service-policy input three-hosts
    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. ポリシーマップ・クラスモードの各コマンドを使って、クラスマップによって識別されたトラフィッククラスに対する処理内容を指定します。
    awplus(config-pmap-c)# police single-rate 50000 10240 10240 action drop-red
    awplus(config-pmap-c)# exit
    

  4. トラフィッククラスの数だけ手順2~3を繰り返します。

  5. どのクラスマップにもマッチしなかったパケットは、暗黙のうちに存在するデフォルトクラスマップによって、デフォルトトラフィッククラスに分類されます。デフォルトトラフィッククラスに対する処理内容を指定するには、classコマンドにキーワードdefaultを指定してポリシーマップ・クラスモードに入り、通常のトラフィッククラスと同様の設定を行います。
    awplus(config-pmap)# class default
    awplus(config-pmap-c)# police single-rate 10000 10240 10240 action drop-red
    awplus(config-pmap-c)# exit
    
    Note
    デフォルトクラスマップのアクションは、ポリシーマップモードのdefault-actionコマンドで変更できます。

  6. exitコマンドでポリシーマップモードを抜ければ、該当ポリシーマップの設定は完了です。
    awplus(config-pmap)# exit
    

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

■ トランクグループにポリシーマップを適用するときは、次の点にご注意ください。
Note
複数のスイッチチップ(インスタンス)にまたがるトランクグループ(スタティックチャンネルグループ、LACPチャンネルグループとも)ではメータリングが動作しません。複数インスタンスにまたがるトランクグループに対しては、メータリング(ポリサー)設定(police single-rateコマンド、police twin-rateコマンド)を含むポリシーマップを適用しないでください(適用してもメータリングが動作しません)。

■ スイッチポートからポリシーマップの適用を解除するには、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

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

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 ポリシング/リマーキング トラフィッククラスでポリサーの設定がなされている場合、ポリサーのアクションがリマーキングなら、帯域クラスをキーにremarkマップを参照して受信パケットのDSCP値と帯域クラスを書き換える。ポリサーのアクションがポリシングの場合は、帯域クラスRedに分類されたパケット(帯域超過パケット)を破棄する
6 CoS値書き換え remark new-cosコマンドの設定にしたがい、内部・外部CoS値を書き換える。内部CoS値は送信キューの決定にのみ使われる。外部CoS値はタグ付きポートからパケットを出力するとき、パケットのCoSフィールドに設定される
7 IPルーティング 受信パケットがIPルーティングの対象なら、IP転送表を参照してネクストホップを決定し、出力ポートを決定する。ただし、クラスマップ内でポリシーベースルーティングが指定されている場合はIP転送表を参照せずに、クラスマップで指定されたネクストホップを採用し、出力ポートを決定する
送信時のQoS処理(すべてのパケットが対象)
8 送信キュー決定 パケットの内部CoS値(0~7)をキーとしてcos-queueマップを参照し、パケットに割り当てる送信キュー(0~7)を決定する。リマーキングで内部CoS値の割り当てや変更をしていない場合、パケット受信時のCoS値がそのまま内部CoS値となる(タグなしパケットはCoS値「0」と見なす)
9 送信キューへの格納 ここまでの処理で決定した送信キューにパケットを格納する。キューが混雑している場合は、テールドロップ方式により既定の最大キュー長を超えたパケットを破棄する
10 送信キューからの取り出し 設定されたスケジューリング方式にしたがい、送信キューからパケットを出力する。PQ(絶対優先)、WRR(重み付きラウンドロビン)のいずれか、あるいは、両者の併用も可能。なお、送信キューや送信ポートに送信レートの上限値が設定されている場合は、指定されたレートでパケットを送信するシェーピング動作を行う
送信スイッチポート
11 送信 スイッチポートからパケットを送信

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

ポリシーマップによる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を破棄してトラフィッククラスの使用帯域を一定値までに制限する動作です。また、リマーキングは帯域クラスの情報を用いて、パケットのQoS 4属性を再度変更する動作です。

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

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


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

Note
複数のスイッチチップ(インスタンス)にまたがるトランクグループ(スタティックチャンネルグループ、LACPチャンネルグループとも)ではメータリングが機能しません。複数インスタンスにまたがるトランクグループに対しては、メータリング(ポリサー)設定(police single-rateコマンド、police twin-rateコマンド)を含むポリシーマップを適用しないでください(適用してもメータリングが動作しません)。

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


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


リマーキングの設定方法については後で説明します。

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

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

    CLASS-MAP-NAME: default

    CLASS-MAP-NAME: traffic1
      Policer single-rate action drop-red:
       average rate(20032 kbps)  minimum burst(10240 B) maximum burst(10240 B)

    CLASS-MAP-NAME: traffic2
      Policer twin-rate action drop-red:
       minimum rate(30016 kbps) maximum rate(80000 kbps) minimum burst(10240 B)
maximum burst(10240 B)

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

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

表 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以内に抑えることができます。これは、最大帯域幅を制限する設定となります。

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

ツインレートポリサーはおもに、トラフィッククラスに一定の帯域を保証しつつ、なおかつ、使用できる最大帯域を一定値までに制限するときに使用します。

表 4:ツインレートポリサーの判定基準
帯域クラス
帯域使用量
判定基準
Green 少ない バースト量(MIN) <= MINBURST
Yellow 中程度 バースト量(MIN) > MINBURST かつ バースト量(MAX) <= MAXBURST
Red 使いすぎ バースト量(MAX) > MAXBURST


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

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

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

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

さらにトラフィックが増えると、今度はトラフィック流入量がMAXRATEを超過することがありますが、その時間が長引きバースト量(MAX)がMAXBURSTを超えると、超過分のパケットには帯域クラスRedが割り当てられます。

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

また、送信キュー管理機能(テールドロップ)においては、帯域クラスRedとYellowを優先的に破棄することで、帯域クラスGreenのパケットを確実に送信できるようにしています。これは、最小帯域を保証する動作となります。

リマーキング

リマーキングは、メータリング(帯域クラスへの分類)後に行われるQoS処理の1つです。
リマーキングでは、メータリングによって決定された帯域クラスの情報を利用して、パケットのDSCP値と帯域クラスを再度変更します。これにより、キュー格納時の動作に影響を与えたり、後続の機器にトラフィッククラスの情報を提供したりします。リマーキング処理は、remarkマップと呼ぶ書き換え対応表にしたがって行われます。

リマーキングが行われるのは、ポリサーの設定でremark-transmitアクションを指定した場合です。一方、ポリサーでdrop-redアクションを指定した場合はポリシング(帯域クラスRedに分類されたパケットの破棄)が行われます。

■ 特定のトラフィッククラスに属するパケットに対してリマーキングを行うには、該当トラフィッククラスにいずれかの種類のポリサーを設定し、帯域クラス分類後の処理(アクション)としてremark-transmitを指定します。

たとえば、クラスマップtraffic7によって識別されたトラフィッククラスに対してリマーキングを行うよう設定するには、次のようにします。
awplus(config)# policy-map example
awplus(config-pmap)# class traffic7
awplus(config-pmap-c)# police single-rate 70000 10240 10240 action remark-transmit

■ リマーキング処理は、remarkマップという書き換え対応表に基づいて行われます。remarkマップは、帯域クラスをキーとして書き換え後のDSCP値と帯域クラス値を調べるための表で、remark-mapコマンドで内容を編集できます。

たとえば、帯域クラスがGreenのパケットにDSCP値7を、帯域クラスがYellowのパケットにDSCP値4を、帯域クラスがRedのパケットにDSCP値0を割り当てるには、次のようにします。
awplus(config-pmap-c)# remark-map bandwidth-class green to new-dscp 7
awplus(config-pmap-c)# remark-map bandwidth-class yellow to new-dscp 4
awplus(config-pmap-c)# remark-map bandwidth-class red to new-dscp 1

■ 各トラフィッククラスのリマーキング設定は、show policy-mapコマンドで確認できます。ポリサーのアクション(action)が「remark-transmit」になっているトラフィッククラスでは、リマーキングが行われます。また、remarkマップの内容も表示されます。
awplus# show policy-map example

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

    CLASS-MAP-NAME: default

    CLASS-MAP-NAME: traffic1
      Policer single-rate action drop-red:
       average rate(20032 kbps)  minimum burst(10240 B) maximum burst(10240 B)

    ...

    CLASS-MAP-NAME: traffic7
      QOS-ACCESS-LIST-NAME: 3002
      Policer single-rate action remark-transmit:
       average rate(70016 kbps)  minimum burst(10240 B) maximum burst(10240 B)
      Remark Map:
                         Green   Yellow   Red

                   DSCP    7       4       1
        Bandwidth Class    -       -       -

CoS値の書き換え

CoS値の書き換えは、メータリングの一環として行われるリマーキングの後、送信キューの割り当て前に行われるQoS処理です。

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

CoS値書き換えの設定はremark new-cosコマンドで行います。コマンド名からはリマーキングの一部であるように感じられますが、実際にはリマーキングとは独立した処理です。そのため、ポリサーの設定をしなくてもCoS値の書き換えは行えます。

Note
remark new-cosコマンドでは、本製品(CPU)宛てのパケットを格納するCPU宛ての送信キューを指定することも可能です。これには、同コマンドの new-cpu-queue パラメーターを使います。

■ 特定のトラフィッククラスに属するパケットに対して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

ポリシーベースルーティング

ポリシーベースルーティングとは、IPアドレス、TCP/UDPポートなどのさまざまな条件に基づいて、L3パケット(ルーティング対象パケット)の転送先(ネクストホップ)を決定する仕組みです。

経路表を用いる通常のIPルーティングでは転送先の判断に終点IPアドレスしか使えませんが、ポリシーベースルーティングではクラスマップで指定可能なすべての条件を使用できるため、きめ細やかな経路制御が可能です。

ポリシーベースルーティングでは、ポリシーマップ/クラスマップの条件にマッチしたすべてのパケットを、指定されたネクストホップに転送します。そのため、条件によっては、通常のルーティングでは転送されないディレクティドブロードキャストパケットなども転送されることがあります。これを回避するには、転送不要なパケットがポリシーベースルーティングの対象にならないようにするか、不要なパケットを破棄するよう、ポリシーマップ/クラスマップの設定を行ってください。

■ 次に、具体的なポリシーベースルーティング設定を示します。
ポリシーベースルーティングの設定は、トラフィッククラスごとに使用すべきネクストホップを指定することで行います。ネクストホップの指定には、ポリシーマップ・クラスモードのset ip next-hopコマンドを使います。

ポリシーベースルーティングでは、ポリシーマップ/クラスマップの条件にマッチしたすべてのパケットを、指定されたネクストホップに転送します。そのため、条件によっては、通常のルーティングでは転送されないディレクティドブロードキャストパケットなども転送されることがあります(ip directed-broadcastコマンドの設定は、ポリシーベースルーティングされるパケットには適用されません)。これを回避するには、転送不要なパケットがポリシーベースルーティングの対象にならないようにするか、不要なパケットを破棄するよう、ポリシーマップ/クラスマップの設定を行ってください。

■ 特定のトラフィッククラスに属するL3パケットを任意のネクストホップに転送させるには、該当トラフィッククラスを対象とするポリシーマップ・クラスモードにおいて、set ip next-hopコマンドを実行し、転送先のネクストホップに転送アドレスを指定します。
たとえば、クラスマップclient10によって識別されたトラフィッククラスのL3パケットを、192.168.10.32に転送したいときは次のようにします。
awplus(config)# policy-map pbrexample
awplus(config-pmap)# class client10
awplus(config-pmap-c)# set ip next-hop 192.168.10.32

■ 次に、より具体的なポリシーベースルーティング設定を示します。

想定するネットワーク構成は次のとおりです。


ここでは、本製品に次に示す2つのデフォルト経路がスタティック設定されているものとします。
awplus(config)# ip route 0.0.0.0/0 192.168.100.10
awplus(config)# ip route 0.0.0.0/0 192.168.200.10

本製品の初期設定では4経路までのECMP(等コストマルチパス)ルーティングが有効なため、デフォルト経路宛てのパケットは前記の2経路にロードバランスされます。ただしこの場合、どのパケットがどちらの経路を通るかは制御できません。

そこで、ポリシーベースルーティング機能を利用して、192.168.10.0/24(vlan10)からデフォルト経路に宛てたパケットは192.168.100.10側(ルーターA側)の経路を、192.168.20.0/24(vlan20)からデフォルト経路に宛てたパケットは192.168.200.10側(ルーターB側)の経路を使うよう設定してみます。

なお、192.168.10.0/24のネットワーク(vlan10)はポート1.0.1~1.0.4に、192.168.20.0/24のネットワーク(vlan20)はポート1.0.5~1.0.8に、192.168.100.0/24のネットワーク(vlan100)はポート1.0.9に、192.168.200.0/24のネットワーク(vlan200)はポート1.0.10に接続されているものと仮定します。
  1. QoS機能を有効にします。
    QoS関連コマンドの多くは、QoS機能を有効にしておかないと実行できないので、最初にmls qos enableコマンドを実行してQoS機能を有効化しておいてください。
    awplus(config)# mls qos enable
    

  2. 各パケットを識別するハードウェアIPアクセスリストを作成します。これにはaccess-list(hardware ip)コマンドを使います。
    Note
    ハードウェアアクセスリストの概要と作成方法については、「トラフィック制御」の「アクセスリスト」をご覧ください。

  3. 前の手順で作成したハードウェアアクセスリストを用いて各パケットを分類するクラスマップを作成します。
    クラスマップの作成はclass-mapコマンドで行います。同コマンドを実行するとクラスマップモードに移動するので、同モードのコマンドを使って分類条件を指定してください。ここでは、match access-groupコマンドを使って、前の手順で作成したハードウェアアクセスリストを指定します。

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

  5. ポリシーマップにクラスマップを関連付け、該当クラスマップによって識別されたトラフィッククラスに対する処理を指定します。ここでは、LAN間通信となるvlan10 → vlan20、vlan10 → vlan100、vlan10 → vlan200のパケットには経路表に基づく通常のルーティングを適用し、vlan10からWAN(vlan20、vlan100、vlan200以外宛て)へのパケットにはポリシーベースルーティングを適用して、192.168.100.10のネクストホップに転送するよう設定します。
    クラスマップの関連付けはclassコマンドで行います。同コマンドでクラスマップ名を指定するとポリシーマップ・クラスモードに移動します。
    ポリシーベースルーティングの対象クラスでは同モードのset ip next-hopコマンドを使ってネクストホップを指定します。一方、通常のルーティングを適用するクラスに対しては、処理内容を指定する必要はありません。
    awplus(config-pmap)# class vlan10to20
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class vlan10to100
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class vlan10to200
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class vlan10toWAN
    awplus(config-pmap-c)# set ip next-hop 192.168.100.10
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# exit
    

  6. vlan20用のクラスマップを束ねるポリシーマップpbrv20も同様に作成します。
    awplus(config)# policy-map pbrv20
    awplus(config-pmap)# class vlan20to10
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class vlan20to100
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class vlan20to200
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# class vlan20toWAN
    awplus(config-pmap-c)# set ip next-hop 192.168.200.10
    awplus(config-pmap-c)# exit
    awplus(config-pmap)# exit
    

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

  8. ポリシーマップpbrv20をネットワーク192.168.20.0/24(vlan20)の接続されているスイッチポート1.0.5~1.0.8に適用します。
    awplus(config)# interface port1.0.5-1.0.8
    awplus(config-if)# service-policy input pbrv20
    

設定は以上です。

■ 以下、ポリシーベースルーティングに関連する注意事項をまとめます。


送信時のQoS処理

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

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

送信キューの割り当て

本製品は、パケットの内部CoS値をキーにcos-queueマップ(show mls qos maps 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, 3, 4, 5を割り当てるには次のように設定します。
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 3
awplus(config)# mls qos map cos-queue 6 to 4
awplus(config)# mls qos map cos-queue 7 to 5

■ 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:   2   2   3   3   4   5   6   7

キューへの格納

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

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


キューからの送信

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

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

送信スイッチポートにおいては、これらの各方式を組み合わせて使うこともできます。具体的には、次の組み合わせが可能です。

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


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

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

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

■ キューに対して送信レートの上限値を設定するには、インターフェースモードのwrr-queue egress-rate-limitコマンドを使います。
たとえば、ポート1.0.12の送信キュー0~2の送信レートをそれぞれ5Mbpsに制限するには、次のようにします。
awplus(config)# interface port1.0.12
awplus(config-if)# wrr-queue egress-rate-limit 5m queues 0 1 2
% Egress rate limit of port1.0.12 has been set to 5XXX Kb
Note
送信レートの設定値には粒度(設定可能な値の最小単位)があります。そのため、wrr-queue egress-rate-limitコマンドで入力した値によっては、上記例のように指定値が最小単位の倍数に丸められることがあります。

■ スイッチポートに対して送信レートの上限値を設定するには、インターフェースモードのegress-rate-limitコマンドを使います。
たとえば、ポート1.0.13の送信レートを50Mbpsに制限するには、次のように指定します。
awplus(config)# interface port1.0.13
awplus(config-if)# egress-rate-limit 50m
% Egress rate limit has been set to 5XXXX Kb
Note
送信レートの設定値には粒度(設定可能な値の最小単位)があります。そのため、egress-rate-limitコマンドで入力した値によっては、上記例のように指定値が最小単位の倍数に丸められることがあります。

■ キューごとの送信レート上限値は、show mls qos interfaceコマンドで確認できます。「Egress Rate Limit」欄をご覧ください。
awplus# show mls qos interface port1.0.12

Interface: port1.0.12
...
  Egress Queue:         0
...
    Egress Rate Limit:  5XXX Kb
...

■ スイッチポートの送信レート上限値は、show interfaceコマンドで確認できます。「Egress Rate Limit」欄をご覧ください。
awplus> show interface port1.0.13
Interface port1.0.13
...
  Egress Rate Limit 5XXXX Kb
...

設定例

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

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

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

設定例

次にポリシーマップを利用したパケットフィルタリングの設定例を示します。
ここでは、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宛て通信の負荷が非常に高い環境では、RIP、VRRP、ARPなどの制御パケットを適切に処理できず、これら制御プロトコルの動作に支障をきたす場合があります。

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

Note
VCS(バーチャルシャーシスタック)に関しては特殊な内部キューが使用されており、最優先となっています。

表 5
パケットの種類
使用するCPU宛てキュー
VCS(バーチャルシャーシスタック) 最優先される特殊な内部キューを使用
AMF(アライドテレシスマネージメントフレームワーク) 6
BPDU(スパニングツリープロトコル)
EPSR
EAP
LACP
Loop Detect
LLDP
ARP Reply 3
IGMP
224.0.0.x宛てパケット(RIPバージョン2、OSPF、PIM、VRRPなど)
ARP Request 2
ユニキャストパケット(ルーティングパケット)
ユニキャストパケット(スイッチングパケット) 0
ブロードキャストパケット
マルチキャストパケット


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

PN: 613-001763 Rev.AK