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

QoS（Quality of Service）関連機能について解説します。
本製品は、ユーザーが定義したポリシーマップに基づき、各トラフィッククラスに任意のサービスレベルを割り当てるポリシーベースQoS機能を備えています。
ポリシーマップでは、クラスマップを用いてパケットをトラフィッククラスに分類し、それぞれに異なるサービスレベル（帯域や優先度、経路）を割り当てることができます。クラスマップでは、IPアドレスやTCP/UDPポート、DSCP（DiffServ Code Point）などに基づいたトラフィック分類が可能です。
Note

同一ポート上において、ハードウェアパケットフィルターとポリシーマップを併用することは可能です。該当ポートで受信したパケットの処理は、ハードウェアパケットフィルター、ポリシーマップの順に行われます。ただし、次項で述べる制限事項があるので注意してください。

Note

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

Note

同じ名前のクラスマップを複数のポリシーマップに適用しないでください。同じ識別条件のトラフィッククラスを複数のポリシーマップで使いたいときは、内容が同じクラスマップを異なる名前で複数作成し、それぞれ別のポリシーマップに適用してください。

Note

同一スイッチポート上においてリモートミラーリングとQoSは併用できません。

Note

同一スイッチポート上においてWeb認証とポリシーベースQoSは併用できません。

## 用語一覧

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

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

QoS 4属性
QoS処理の過程でパケットに割り当てられたり、参照・変更されたりする4つの属性値。CoS、DSCP、送信キュー、帯域クラスのこと。
CoSとDSCPは、パケットのヘッダーに格納されうる値。パケット受信時にすでに値がセットされている場合もあれば、されていない場合もある。いずれの場合も、QoS処理の過程で変更が可能。
一方、送信キューと帯域クラスは、パケット受信後に割り当てられる内部的な属性値。送信キューと帯域クラスの値が意味を持つのは、パケットを送信キューに格納するところまで。後続の機器にこれらの情報を（間接的ながら）伝えるには、CoSかDSCPを使う。
CoS
IEEE 802.1p Class of Serviceの略。VLANタグヘッダー内にある3ビットのフィールドで0～7の値をとる。パケットを受信した機器に対して、パケット取り扱い時の優先度を示す目的で設けられている。802.1p対応機器は、この値に基づいてパケットの優先制御ができる。また、送信時に値を書き換えることで、後続の機器に対して、新たな優先度を指示できる。802.1pユーザープライオリティーとも呼ぶ。
DSCP
DiffServ Code Pointの略。IPヘッダーのDiffServフィールド（TOSフィールドとも呼ばれる）内にある6ビットのフィールドで0～63の値をとる。パケットを受信した機器に対して、該当パケットのトラフィッククラスを示すために使われる。DSCP値の意味は各機器が独自に管理し、それに基づいてパケットを処理する。
パケットのDSCP値にしたがってQoSを制御するネットワーク上の領域をDiffServドメインと呼ぶ。DiffServドメインの入り口にあたる機器では、IPアドレスやプロトコル、ポート番号など、DSCP以外の条件をもとにパケットを分類し、DiffServドメイン内で規定されたDSCP値を付加する。これにより、DiffServドメイン内ではDSCP値による統一的なQoSの実施が可能になる。
送信キュー
本製品のスイッチポートは、それぞれ8レベルの送信キュー（キュー番号0～7）を備えている。各キューに対しては、最大キュー長、送信レート上限値、送信スケジューリング方式（PQ、WRR）、WRR時の重み付け値などを設定できる。PQ使用時は、番号の大きいキューほど優先度が高くなる
帯域クラス
トラフィッククラスの帯域使用量に応じてパケットを3つのクラス（Green、Yellow、Red）に分類したもの。特定のパケットが、トラフィッククラスの帯域基準値にどの程度適合しているかを示す。帯域クラスGreenは、あまり帯域を使っていないため、優先的に帯域を割り当てることのできるクラス。帯域クラスYellowは、中程度の帯域使用量のクラス。帯域クラスRedは、最大帯域の設定を超過しているクラスであり、キューイング前に無条件で破棄する設定（ポリシング設定）が可能。
送信キュー割り当て
パケット受信後最初に行われるQoS処理。受信パケットがタグ付きの場合は、パケットのCoS値をキーとしてcos-queueマップを参照し、該当パケットの送信時に使用する送信キューの初期値を決定する。受信パケットがタグなしの場合は、受信ポートごとに設定可能なデフォルト送信キュー（初期値は2）を割り当てる。
cos-queueマップ
CoSと送信キューの対応表。各CoS値（0～7）に対応する送信キュー番号（0～7）が格納されている。受信したパケットがタグ付きだった場合に、パケットのCoS値に応じて、送信キューを割り当てるときに使う。cos-queueマップの設定はタグなしパケットには影響しない。
デフォルト送信キュー
スイッチポートで受信したタグなしパケットに割り当てる送信キュー。初期値は2。ポートごとに異なる値を設定できる。デフォルト送信キューの設定はタグ付きパケットには影響しない。
トラフィック分類
レイヤー2スイッチング処理の後に行われるQoS処理。クラスマップを用いて、受信パケットをトラフィッククラスに分類する。本処理は、受信ポートにポリシーマップが適用されているときだけ行われる。
クラスマップ
パケットをトラフィッククラスに分類するための条件を定義するもの。IPアドレス、TCP/UDPポート、CoS、DSCPなど、さまざまな条件を指定できる。クラスマップは単体で使用するものではなく、ポリシーマップにまとめあげた上で受信スイッチポートに適用して使用する。
ポリシーマップ
QoS機能の中核的設定要素。トラフィック分類、プレマーキング、メータリング、ポリシング、ポリシーベースルーティングの各処理を行うために必要な情報をひとつにまとめる機能を持つ。
ポリシーマップは、ユーザー定義のクラスマップ（複数）と暗黙のデフォルトクラスマップ（1つ）から構成され、各クラスマップによって分類・識別されたトラフィッククラスに対するプレマーキング、メータリング、ポリシング、ポリシーベースルーティングの各動作もあわせて指定することができる。
ポリシーマップをスイッチポートに適用すると、該当ポートで受信したパケットに対し、ポリシーマップ内のクラスマップによるトラフィック分類が行われ、トラフィッククラスごとに指定されたQoS処理が行われるようになる。
プレマーキング
トラフィッククラスに分類されたパケットに対して最初に行われるQoS処理。パケットのQoS属性を任意の値に書き換えることができる。それぞれの属性に対して具体的な値を指定する方法と、DSCP値をキーにpremark-dscpマップを参照して書き換える方法がある。本処理は、受信ポートにポリシーマップが適用されているときだけ行われる。
premark-dscpマップ
プレマーキング時に使用するQoS属性の書き換え表。プレマーキング前のDSCP値（0～63）をキーとして、書き換え後の属性値を調べるために使う。
メータリング
プレマーキング後に行われるQoS処理。ポリサーにおける帯域基準値の設定に基づき、各トラフィッククラスが実際にどの程度の帯域を使用しているかを計測し、その結果に基づいてパケットを3つの帯域クラス（Green、Yellow、Red）に分類する。本処理は、受信ポートにポリシーマップが適用されており、なおかつ、該当トラフィッククラスに対してポリサーが設定されているときだけ行われる。
ポリサー
トラフィッククラスの帯域使用量をあらかじめ設定された基準値以内に抑えるための仕組み。トラフィッククラスの帯域使用量を計測し、各パケットを帯域クラスに分類（メータリング）する。帯域クラス分類後は、帯域超過パケットの破棄（ポリシング）をする。
ポリサーには、帯域基準値の数によってシングルレートとツインレートの2種類がある。また、特定のトラフィッククラスだけを対象とする個別ポリサーと、複数のトラフィッククラス全体を対象とする集約ポリサーがあるので、全部で4つの種類があることになる。
ポリシング
メータリング後に行われるQoS処理の1つ。メータリングの結果、帯域クラスRedに分類されたパケット（帯域超過パケット）を破棄することで、該当トラフィッククラスの帯域使用量をあらかじめ指定された帯域基準値の範囲内に抑える。本処理は、受信ポートにポリシーマップが適用されており、なおかつ、該当トラフィッククラスに対してポリサーが設定されているときだけ行われる。
ポリシーベースルーティング
IPアドレス、TCP/UDPポートなどのさまざまな条件に基づいて、ルーティング対象パケットの転送先（ネクストホップ）を決定する処理。経路表を用いる通常のIPルーティングでは、転送先の判断に終点IPアドレスしか使われないが、ポリシーベースルーティングでは、クラスマップで指定可能なすべての条件を転送先の判断に使用できる。
送信スケジューリング
パケット処理の最終段階であるキューからの送信処理を、どのような順序で行うかを規定するもの。本製品では、PQ（絶対優先スケジューリング）とWRR（重み付きラウンドロビンスケジューリング）の2種類から選択できる。同一ポート内において、PQを用いるキューとWRRを用いるキューのグループを分けたり、WRRを2段階で行うような設定も可能。
PQ方式
Priority Queueingの略。送信スケジューリング方式の1つ。絶対優先スケジューリングとも言う。上位キュー（番号の大きなキュー）が空になるまで下位のキューからはパケットを送信しない。この方式はシンプルだが、上位キューに割り当てられるパケットが多いときに、下位キューのパケットが送信されなくなるという欠点がある。
WRR方式
Weighted Round Robinの略。送信スケジューリング方式の1つ。重み付きラウンドロビンスケジューリングとも言う。各キュー間の送信比率を設定し、その比率にしたがってパケットを送信する。たとえば、最上位キューから最下位キューまで、10:5:5:5:2:2:1:1の比率でパケットを送信するような設定が可能。この方式だと、上位キューに割り当てられるパケットが多いときでも、一定比率下位キューからパケットを送信することが可能。
シェーピング
パケットを送信するときの速度（送信間隔）を調整することで、ネットワークに流れ込むトラフィックを一定のレートにならす機能。シェーピングを行うには、送信キューあるいは送信スイッチポートに送信レートの上限値を設定する。

## 設定手順例

詳細な説明に入る前に、QoS機能の設定がどのようなものかを示すため、具体的な設定手順の例を示します。
個々の設定項目については後で詳しく説明するため、ここでは触れません。

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

受信パケットのCoS値に基づくシンプルなQoS設定を示します。
この例では、パケット受信時の送信キュー割り当ての設定だけを初期値から変更しています。

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

   タグなしパケットにはデフォルト送信キュー（初期値は2）が割り当てられます。デフォルト送信キューは、mls qos queueコマンドで受信スイッチポートごとに設定できます。

   Note

   BPDU（スパニングツリープロトコル）、LACP、EPSR使用時は、これらのプロトコルが送信キュー6を使うため、その他のパケットを送信キュー6、 7に割り当てないでください。初期設定ではCoS値「6」、「7」が送信キュー「6」、「7」にそれぞれマップされているので、BPDU、 LACP、EPSR使用時は送信キュー「6」、「7」を使わないよう、mls qos map cos-queueコマンドでマッピングを変更してください。

3. 送信スケジューリングの設定を行います。
   初期設定はPQ（絶対優先スケジューリング）ですが、ここではポート1.0.1に対し、すべての送信キューでWRRスケジューリングを用いるよう設定します。各キューからの送信比率は、上位キューから7:7:5:5:2:2:1:1とします（weightの最小値が6のため、指定値は70:70:50:50:20:20:10:10としています）。

       awplus(config)# mls qos scheduler-set 1 wrr-queue group 2 weight 70 queues 7 6
       awplus(config)# mls qos scheduler-set 1 wrr-queue group 2 weight 50 queues 5 4
       awplus(config)# mls qos scheduler-set 1 wrr-queue group 2 weight 20 queues 3 2
       awplus(config)# mls qos scheduler-set 1 wrr-queue group 2 weight 10 queues 1 0
       awplus(config)# interface port1.0.1
       awplus(config-if)# mls qos scheduler-set 1

設定は以上です。

### ポリシーマップによる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つのトラフィッククラスの分類条件を定義します。
クラスマップの全体構造は次のとおりです。

- クラスマップ
  - match節（分類条件）
  - アクション（許可・破棄など）

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

- match節は、パケットと照合するための条件です。match節が複数ある場合は、すべてのmatch節にマッチする必要があります（AND検索）
- アクションは、マッチしたパケットを許可（permit）するか破棄（deny）するかの指定です。許可されたパケットに対してはさまざまなQoS処理を適用できます（具体的な処理内容はポリシーマップで指定します）

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

- ハードウェアMACアクセスリストで識別できる諸条件（ハードウェアIPv6アクセスリストとは併用不可）
  - 送信元・宛先MACアドレス
- ハードウェアIPアクセスリストで識別できる諸条件（ハードウェアIPv6アクセスリストとは併用不可）
  - 始点・終点IPアドレス
  - IPプロトコルタイプ（IP、TCP、UDP、ICMP、任意のプロトコルタイプ）
  - 始点・終点ポート番号（TCP/UDPのみ）
  - ICMPメッセージタイプ（ICMPのみ）
- ハードウェアIPv6アクセスリストで識別できる諸条件（ハードウェアIP/MACアクセスリストとは併用不可）
  - 始点IPv6アドレス
  - 終点IPv6アドレス
  - 上位プロトコル（IPv6すべて、TCP、UDP、ICMPv6、任意のプロトコルタイプ）
- レイヤー2アドレス種別（ユニキャスト、マルチキャスト、ブロードキャスト）
- レイヤー3プロトコルタイプ（フレームフォーマットとプロトコル番号）
- 入力VLAN ID
- VLANタグヘッダーのTPID値
- VLANタグヘッダーのCoS値
- ダブルタグパケットの内側VLANタグヘッダーのTPID値
- ダブルタグパケットの内側VLANタグヘッダーのCoS値
- ダブルタグパケットの内側VLANタグヘッダーのVLAN ID
- IP/IPv6ヘッダーのDSCP値（優先度値とは併用不可）
- IP/IPv6ヘッダーの優先度値（DSCP値とは併用不可）
- TCPヘッダーの制御フラグ値

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

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を適用するためのメカニズムで、トラフィック分類、プレマーキング、メータリング、ポリシング、ポリシーベースルーティングの各処理を行うために必要な情報をひとつにまとめる機能を持ちます。
ポリシーマップの全体構造は次のとおりです。

- ポリシーマップ
  - トラフィッククラス1（クラスマップ1で識別）
    - プレマーキング設定
    - ポリサー設定（メータリング、ポリシングの設定）
    - ポリシーベースルーティング設定
  - トラフィッククラス2（クラスマップ2で識別）
    - プレマーキング設定
    - ポリサー設定（メータリング、ポリシングの設定）
    - ポリシーベースルーティング設定
  - ...
  - トラフィッククラスn（クラスマップnで識別）
    - プレマーキング設定
    - ポリサー設定（メータリング、ポリシングの設定）
    - ポリシーベースルーティング設定
  - デフォルトトラフィッククラス（どのクラスマップにもマッチしなかった場合）
    - プレマーキング設定
    - ポリサー設定（メータリング、ポリシングの設定）
    - ポリシーベースルーティング設定

ポリシーマップは、ユーザー定義のクラスマップ（複数）と暗黙のデフォルトクラスマップ（1つ）から構成され、各クラスマップによって分類・識別されたトラフィッククラスに対するプレマーキング、メータリング、ポリシング、ポリシーベースルーティングの各動作もあわせて指定することができます。
ポリシーマップをスイッチポートに適用すると、ポリシーマップ内の各クラスマップによって受信パケットがトラフィッククラスに分類され、各トラフィッククラスに対してあらかじめ指定した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

トランクグループにポリシーマップを適用するときは、次の点にご注意ください。

- スタティックチャンネルグループ（手動設定のトランクグループ）の場合は、インターフェース名「saX」（Xはスタティックチャンネルグループ番号）に対してポリシーマップを適用します。たとえば、スタティックチャンネルグループ「1」にポリシーマップmypolicyを適用するには、次のようにします。

      awplus(config)# interface sa1
      awplus(config-if)# service-policy input mypolicy

  QoSストームプロテクション機能が有効になっているポリシーマップは、「saX」インターフェースに適用できないため、スタティックチャンネルグループのメンバーポートに対してポリシーマップを適用する必要があります。その場合はstatic-channel-groupコマンドで「member-filters」を指定し実行したあとにservice-policy inputコマンドを実行してください。

      awplus(config)# interface port1.0.1-1.0.2
      awplus(config-if)# static-channel-group 1 member-filters
      awplus(config-if)# service-policy input mypolicy

- LACPチャンネルグループ（自動設定のトランクグループ）の場合は、該当グループに所属しているすべてのスイッチポートに対してポリシーマップを適用します。たとえば、スイッチポート1.0.1～1.0.10からなるLACPチャンネルグループ「1」にポリシーマップmypolicyを適用するには、次のようにしてください。

      awplus(config)# interface port1.0.1-1.0.10
      awplus(config-if)# service-policy input mypolicy

  インターフェース名「poX」（XはLACPチャンネルグループ番号）に対してポリシーマップを適用することはできないので注意してください。

      awplus(config)# interface po1
      awplus(config-if)# service-policy input mypolicy
      % Service policy cannot be attached to a dynamic aggregator interface.

スイッチポートからポリシーマップの適用を解除するには、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属性」がどこで参照（使用）され、どこで書き換え（割り当て）られるのかを示しています。

表 1：QoS処理の流れ
受信スイッチポート
1 | スイッチポートでパケットを受信
受信時のQoS処理（すべてのパケットが対象）
2 | 受信パケットがタグ付きの場合は、パケットのCoS値（0～7）をキーとしてcos-queueマップを参照し、パケットに割り当てる送信キュー（0～7）を決定する。受信パケットがタグなしの場合は、受信ポートごとに設定されたデフォルト送信キュー（初期値は2）を割り当てる
レイヤー2スイッチング
3 | 受信パケットがレイヤー2スイッチングの対象なら、フォワーディングデータベースを参照して出力ポートを決定する
ポリシーマップによるQoS処理（受信ポートにポリシーマップが適用されている場合のみ）
4 | クラスマップにより、パケットをトラフィッククラスに分類する。どのクラスマップにもマッチしなかったパケットは、デフォルトトラフィッククラスに分類する。なお、パケットとクラスマップの照合は、クラスマップをポリシーマップに関連付けした順序で行われる
5 | プレマーキングの設定がなされている場合、受信パケットの属性を書き換える。各属性値を任意設定する方法と、DSCP値をキーにpremark-dscpマップを参照して書き換える方法がある
6 | トラフィッククラスでポリサーの設定がなされている場合、該当トラフィッククラスがどの程度帯域を使用しているかを計測し、受信パケットを帯域クラスに分類する
7 | トラフィッククラスでポリサーの設定がなされている場合、ポリサーのアクションがポリシングの場合は、帯域クラスRedに分類されたパケット（帯域超過パケット）を破棄する
8 | 受信パケットがIPルーティングの対象なら、IP転送表を参照してネクストホップを決定し、出力ポートを決定する。ただし、クラスマップ内でポリシーベースルーティングが指定されている場合はIP転送表を参照せずに、クラスマップで指定されたネクストホップを採用し、出力ポートを決定する
送信時のQoS処理（すべてのパケットが対象）
9 | ここまでの処理で決定した送信キューにパケットを格納する。
10 | 設定されたスケジューリング方式にしたがい、送信キューからパケットを出力する。PQ（絶対優先）、WRR（重み付きラウンドロビン）のいずれか、あるいは、両者の併用も可能。なお、送信キューや送信ポートに送信レートの上限値が設定されている場合は、指定されたレートでパケットを送信するシェーピング動作を行う
送信スイッチポート
11 | スイッチポートからパケットを送信

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

### 受信時のQoS処理

スイッチポートでパケットを受信した後、最初に行われるQoS処理は、パケットに送信キューの初期値を割り当てることです。この処理はポリシーマップの有無にかかわらずすべてのパケットに対して行われます。

#### 送信キューの割り当て

送信キューの割り当ては通常次のようにして行われます。

- タグ付きパケットの場合は、CoS値をキーにcos-queueマップを検索して送信キューを決定します。
- タグなしパケットの場合は、受信スイッチポートごとに設定されたデフォルト送信キュー（初期値は2）を割り当てます。

なお、受信時に決定された送信キューは、プレマーキング時に変更可能です。
タグ付きパケットに対する送信キュー割り当ての動作を変更するには、mls qos map cos-queueコマンドを使って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

BPDU（スパニングツリープロトコル）、LACP、EPSR使用時は、これらのプロトコルが送信キュー6を使うため、その他のパケットを送信キュー6、 7に割り当てないでください。初期設定ではCoS値「6」、「7」が送信キュー「6」、「7」にそれぞれマップされているので、BPDU、 LACP、EPSR使用時は送信キュー「6」、「7」を使わないよう、mls qos map cos-queueコマンドでマッピングを変更してください。

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

タグなしパケットに対する送信キュー割り当ての動作を変更するには、インターフェースモードのmls qos queueコマンドを使って、受信スイッチポートのデフォルト送信キューを変更します。
たとえば、ポート1.0.1で受信したタグなしパケットに対して送信キュー4を割り当てるには、次のようにします。

    awplus(config)# interface port1.0.1
    awplus(config-if)# mls qos queue 4

各スイッチポートにおけるデフォルト送信キューの初期値は2です。
Note

BPDU（スパニングツリープロトコル）、LACP、EPSR使用時は、これらのプロトコルが送信キュー6を使うため、その他のパケットを送信キュー6、 7に割り当てないでください（BPDU、LACP、EPSR使用時は、mls qos queueコマンドで6、7を指定しないでください）。

スイッチポートのデフォルト送信キューの設定は、show mls qos interfaceコマンドで確認できます。「Default Queue」欄をご覧ください。

    awplus# show mls qos interface port1.0.1

    Interface: port1.0.1

      Default Queue: 4
      Number of egress queues: 8
      Queue Set: 1
      Drop Mode: Taildrop
    ...

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

受信ポートにポリシーマップが適用されている場合は、送信キューの割り当てとレイヤー2スイッチング処理の後に、ポリシーマップに基づいた一連のQoS処理（トラフィック分類、プレマーキング、メータリング、ポリシング、ポリシーベースルーティング）が行われます。
受信ポートにポリシーマップが適用されていない場合、これらの処理は行われず、IPルーティング処理を経て、送信時のQoS処理に移ります。

#### トラフィック分類

ポリシーマップの処理で最初に行われるのは、クラスマップによってパケットをトラフィッククラスに分類することです。
受信パケットとクラスマップの照合は、ポリシーマップにクラスマップを追加した順序で行われます。
トラフィック分類後のポリシーマップ処理（プレマーキング、メータリング、ポリシング、ポリシーベースルーティング）は、トラフィッククラス単位で行われます。
なお、クラスマップとポリシーマップの作成、および、クラスマップのポリシーマップへの関連付けについては、本解説編の「ポリシーマップとクラスマップ」をご覧ください。

#### プレマーキング

プレマーキングは、クラスマップによってトラフィッククラスに分類されたパケットに対して行われる最初のQoS処理です。
本製品のQoS機能では、各パケットは次の属性を持ちます。これらの属性は、QoS処理の各段階において、割り当てられたり、変更されたり、参照されたりします。

- CoS（0～7）
- DSCP（0～63）
- 送信キュー（0～7）
- 帯域クラス（Green、Yellow、Red）

プレマーキングでは、トラフィッククラスごとにこれらの属性を書き換える（変更する）ことができます。書き換えの方法には、次の2種類があります。

- それぞれの属性に対して具体的な値を指定する方法
- DSCP値をキーにpremark-dscpマップを参照して書き換える方法。キーとして使うDSCP値は次の2つから選択できる
  - 受信パケットのDSCP値
  - プレマーキングの設定で指定した任意のDSCP値

パケットの属性を任意の値に変更するには、ポリシーマップ・クラスモードの下記コマンドで変更後の値を指定します。

- set cosコマンド（CoS）
- set dscpコマンド（DSCP）
- set queueコマンド（送信キュー）
- set bandwidth-classコマンド（帯域クラス）

たとえば、クラスマップroyalによって識別されたトラフィッククラスに対し、CoS値7、DSCP値31、送信キュー7を割り当てるには、次のようにします。

    awplus(config)# policy-map example
    awplus(config-pmap)# class royal
    awplus(config-pmap-c)# set cos 7
    awplus(config-pmap-c)# set dscp 31
    awplus(config-pmap-c)# set queue 7

Note

BPDU（スパニングツリープロトコル）、LACP、EPSR使用時は、これらのプロトコルが送信キュー6を使うため、その他のパケットを送信キュー6、 7に割り当てないでください（BPDU、LACP、EPSR使用時は、set queueコマンドで6、7を指定しないでください）。

各属性の具体的な値を指定するのではなく、premark-dscpマップという書き換え対応表を使って一定の基準で属性を変更することもできます。

- premark-dscpマップは、DSCP値をキーとして書き換え後の各属性値を調べるための表で、mls qos map premark-dscpコマンドで内容を編集できます。
  たとえば、DSCP値1を持つパケットにCoS値7と送信キュー7を割り当て、DSCP値2を持つパケットにCoS値4と送信キュー4を割り当てるには、次のようにします。

      awplus(config)# mls qos map premark-dscp 1 to new-cos 7 new-queue 7
      awplus(config)# mls qos map premark-dscp 2 to new-cos 4 new-queue 4

  Note

  BPDU（スパニングツリープロトコル）、LACP、EPSR使用時は、これらのプロトコルが送信キュー6を使うため、その他のパケットを送信キュー6、 7に割り当てないでください（BPDU、LACP、EPSR使用時は、mls qos map premark-dscpコマンドのnew-queueパラメーターで6、7を指定しないでください）。

- パケットのDSCP値をキーにpremark-dscpマップを検索して属性を書き換えるには、ポリシーマップモードのtrust dscpコマンドを使います。
  たとえば、ポリシーマップexampleにおいて、premark-dscpマップによるプレマーキングを行うよう設定するには、次のようにします。

      awplus(config)# policy-map example
      awplus(config-pmap)# trust dscp

- premark-dscpマップの検索キーとして、パケットのDSCP値ではなく任意のDSCP値を使用することもできます。これを行うには、trust dscpコマンドとset dscpコマンドを併用します。
  たとえば、クラスマップpublic2によって識別されたトラフィッククラスに対し、DSCP値5を検索キーとしてpremark-dscpマップによるプレマーキングを行うよう設定するには、次のようにします。

      awplus(config)# policy-map example
      awplus(config-pmap)# class public2
      awplus(config-pmap-c)# set dscp 5
      awplus(config-pmap-c)# exit
      awplus(config-pmap)# trust dscp

プレマーキング設定は、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: royal
          Set CoS: 7
          Set DSCP: 31
          Set Queue: 7

        CLASS-MAP-NAME: public1
          Trust state: DSCP

        CLASS-MAP-NAME: public2
          Set DSCP: 5
          Trust state: DSCP

premark-dscpマップの内容は、show mls qos maps premark-dscpコマンドで確認できます。

    awplus# show mls qos maps premark-dscp 1
      PREMARK-DSCP-MAP:

        DSCP 1
        Bandwidth Class        Green    Yellow   Red
        -------------------------------------------------
        New DSCP               1        -        -
        New CoS                7        -        -
        New Queue              7        -        -
        New Bandwidth Class    green    -        -

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

本製品の帯域制御は、ポリサーによって指定された帯域基準値（トラフィックレートとバーストサイズ）をもとに、各トラフィッククラスが実際にどの程度の帯域を使用しているかを計測し、その結果に基づいてパケットを3つの帯域クラスに分類することによって行います。
帯域使用量の計測と帯域クラスへの分類処理はメータリングと呼ばれ、プレマーキングの後に行われます。
メータリングでは、トラフィッククラスに属するパケットを次に示す3つの「帯域クラス」に分類します。

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

帯域クラス分類後、ポリシングが行われます。ポリシングは、帯域クラスRedを破棄してトラフィッククラスの使用帯域を一定値までに制限する動作です。
トラフィッククラスに対してメータリングを行うには、トラフィッククラスの設定時にポリサーという設定要素を指定する必要があります。
ポリサーは、トラフィッククラスの帯域基準値（トラフィックレートとバーストサイズ）と帯域クラス分類後の処理を指定するための設定要素で、次の4種類があります。

- 個別ポリサー（1つのトラフィッククラスを対象としてメータリングを行う）
  - シングルレート（トラフィックレートは最大値のみ指定可）
  - ツインレート（トラフィックレートは最小値と最大値を指定可）
- 集約ポリサー（複数のトラフィッククラスをひとまとめにしてメータリングを行う）
  - シングルレート（トラフィックレートは最大値のみ指定可）
  - ツインレート（トラフィックレートは最小値と最大値を指定可）

以下、それぞれの設定方法について説明します。
個々のトラフィッククラスに対してそれぞれ独立したメータリングを行いたい場合は、各トラフィッククラスに個別ポリサーを適用します。

- トラフィッククラスにシングルレートの個別ポリサーを適用するには、ポリシーマップ・クラスモードのpolice single-rateコマンドを使います。
  たとえば、クラスマップtraffic1によって識別されたトラフィッククラスに対し、帯域基準値として最大トラフィックレート20000Kbps、最小バーストサイズ10240Byte、最大バーストサイズ10240Byteを設定し、帯域クラス分類後の処理としてポリシングを指定するには、次のようにします。

      awplus(config)# policy-map example
      awplus(config-pmap)# class traffic1
      awplus(config-pmap-c)# police single-rate 20000 10240 10240 action drop-red

- トラフィッククラスにツインレートの個別ポリサーを適用するには、ポリシーマップ・クラスモードのpolice twin-rateコマンドを使います。
  たとえば、クラスマップtraffic2によって識別されたトラフィッククラスに対し、帯域基準値として最小トラフィックレート30000Kbps、最大トラフィックレート80000Kbps、最小バーストサイズ10240Byte、最大バーストサイズ10240Byteを設定し、帯域クラス分類後の処理としてポリシングを指定するには、次のようにします。

      awplus(config)# policy-map example
      awplus(config-pmap)# class traffic2
      awplus(config-pmap-c)# police twin-rate 30000 80000 10240 10240 action drop-red

複数のトラフィッククラスをひとまとめにしてメータリングを行いたい場合は、あらかじめ集約ポリサーを作成して帯域基準値と帯域クラス分類後の処理を定義しておき、これを複数のトラフィッククラスに割り当てます。

- シングルレートの集約ポリサーを作成するには、グローバルコンフィグモードのmls qos aggregate-police single-rateコマンドを使います。集約ポリサーをトラフィッククラスに割り当てるには、ポリシーマップ・クラスモードのpolice-aggregateコマンドを使います。
- ツインレートの集約ポリサーを作成するには、グローバルコンフィグモードのmls qos aggregate-police twin-rateコマンドを使います。集約ポリサーをトラフィッククラスに割り当てるには、ポリシーマップ・クラスモードのpolice-aggregateコマンドを使います。
  たとえば、クラスマップtraffic5、traffic6によって識別された2つのトラフィッククラス全体に対し、帯域基準値として最小トラフィックレート20000Kbps、最大トラフィックレート60000Kbps、最小バーストサイズ10240Byte、最大バーストサイズ10240Byteを設定し、帯域クラス分類後の処理としてポリシングを指定するには、次のようにします。
  1. ツインレートの集約ポリサーap1を定義します。帯域基準値や帯域クラス分類後の処理の指定方法は個別ポリサーと同じです。

         awplus(config)# mls qos aggregate-police ap2 twin-rate 20000 60000 10240 10240 action drop-red

  2. トラフィッククラスの設定において集約ポリサー名を指定します。複数のトラフィッククラスに対して、同じ集約ポリサーを指定することで、これらのトラフィッククラスをひとまとめにしてメータリングを行うことができるようになります。

         awplus(config)# policy-map example
         awplus(config-pmap)# class traffic5
         awplus(config-pmap-c)# police-aggregate ap2
         awplus(config-pmap-c)# exit
         awplus(config-pmap)# class traffic6
         awplus(config-pmap-c)# police-aggregate ap2
         awplus(config-pmap-c)# exit

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

- drop-red（ポリシング）
  帯域クラスRedに分類されたパケット（帯域超過パケット）を破棄することで、該当トラフィッククラスの帯域使用量を最大トラフィックレート＋許容バーストサイズ以下に抑える

メータリングの設定は、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(20000 kbps)  minimum burst(10240 B) maximum burst(10240 B)

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

        CLASS-MAP-NAME: traffic3
          Police Aggregate ap1

        CLASS-MAP-NAME: traffic4
          Police Aggregate ap1

        CLASS-MAP-NAME: traffic5
          Police Aggregate ap2

        CLASS-MAP-NAME: traffic6
          Police Aggregate ap2

集約ポリサーの設定は、show mls qos aggregate-policerコマンドで確認できます。

    awplus# show mls qos aggregate-policer

     AGGREGATE-POLICER-NAME: ap1
          Policer single-rate action policed-dscp-transmit:
           average rate(40000 kbps)  minimum burst(10240 B) maximum burst(10240 B)
     AGGREGATE-POLICER-NAME: ap2
          Policer twin-rate action drop-red:
           minimum rate(20000 kbps) maximum rate(60000 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以内に抑えることができます。これは、使用可能な最大帯域を制限する設定となります。

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

ポリシーベースルーティングとは、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

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

   - vlan10からの通信（3010から順にvlan20宛て、vlan100宛て、vlan200宛て、その他宛て）

         awplus(config)# access-list 3010 permit ip 192.168.10.0/24 192.168.20.0/24
         awplus(config)# access-list 3011 permit ip 192.168.10.0/24 192.168.100.0/24
         awplus(config)# access-list 3012 permit ip 192.168.10.0/24 192.168.200.0/24
         awplus(config)# access-list 3013 permit ip 192.168.10.0/24 any

   - vlan20からの通信（3020から順にvlan10宛て、vlan100宛て、vlan200宛て、その他宛て）

         awplus(config)# access-list 3020 permit ip 192.168.20.0/24 192.168.10.0/24
         awplus(config)# access-list 3021 permit ip 192.168.20.0/24 192.168.100.0/24
         awplus(config)# access-list 3022 permit ip 192.168.20.0/24 192.168.200.0/24
         awplus(config)# access-list 3023 permit ip 192.168.20.0/24 any

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

         awplus(config)# class-map vlan10to20
         awplus(config-cmap)# match access-group 3010
         awplus(config-cmap)# exit
         awplus(config)# class-map vlan10to100
         awplus(config-cmap)# match access-group 3011
         awplus(config-cmap)# exit
         awplus(config)# class-map vlan10to200
         awplus(config-cmap)# match access-group 3012
         awplus(config-cmap)# exit
         awplus(config)# class-map vlan10toWAN
         awplus(config-cmap)# match access-group 3013
         awplus(config-cmap)# exit

   - vlan20用

         awplus(config)# class-map vlan20to10
         awplus(config-cmap)# match access-group 3020
         awplus(config-cmap)# exit
         awplus(config)# class-map vlan20to100
         awplus(config-cmap)# match access-group 3021
         awplus(config-cmap)# exit
         awplus(config)# class-map vlan20to200
         awplus(config-cmap)# match access-group 3022
         awplus(config-cmap)# exit
         awplus(config)# class-map vlan20toWAN
         awplus(config-cmap)# match access-group 3023
         awplus(config-cmap)# exit

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

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

- ポリシーベースルーティングの対象になるのは、ユニキャストのL3パケットだけです。それ以外のパケットがset ip next-hopコマンドを含むクラスマップにマッチした場合、同コマンドで指定されたネクストホップの情報は無視され使われません（通常のルーティングまたはスイッチング処理が行われます）。
- set ip next-hopコマンドでは、ARP解決が可能なネクストホップアドレスを指定してください。すなわち、同コマンドで指定するネクストホップアドレスは、本製品と同一のIPサブネットに所属するアドレスでなくてはなりません。
  - 同コマンドで指定したネクストホップアドレスが、本製品とは異なるIPサブネットに所属している場合（ARP解決の対象でない場合）、該当ネクストホップの情報は無視され使われません（通常のルーティングまたはスイッチング処理が行われます）。
  - 同コマンドで指定したネクストホップアドレスが、本製品と同一のIPサブネットに所属していても、このサブネットに接続している本製品のIPインターフェースがダウンしている場合（ARPパケットを送出できない場合）、該当ネクストホップの情報は無視され使われません（通常のルーティングまたはスイッチング処理が行われます）。IPインターフェースが再度アップした場合は、ネクストホップの情報を使用するようになります。
  - 同コマンドで指定したネクストホップアドレスが、本製品と同一のIPサブネットに所属しており、このサブネットに接続している本製品のIPインターフェースがアップしていても、ネクストホップのARP解決ができない場合（ネクストホップの機器がダウンしているなどの理由でARP応答がない場合、あるいは、以前解決したARPエントリーがタイムアウトした場合）、該当ネクストホップに転送されるべきパケットは送出されません（通信が停止します）。ネクストホップの機器が復旧するなどして、ARPが解決できるようになると通信は復旧します。
- set ip next-hopコマンドを含むクラスマップにマッチしたL3パケットは、IP経路表と関係なくネクストホップに転送されるため、IP経路表に宛先が登録されていなくてもルーティングが可能ですが、そのような構成では設定変更などのためポリシーマップの適用を解除するとその間ルーティングができなくなるので、特別な理由がないかぎり、前記の設定例のように通常の経路設定を行った上でポリシーベースルーティングの設定を行ってください。
- ポリシーベースルーティングで指定できる転送先ネクストホップアドレスはシステム全体で128個までです。複数のトラフィッククラスで同一のネクストホップアドレスを使う場合は1個と数えます。
- ポリシーベースルーティングは、他のすべてのQoS機能と併用可能です。
- ポリシーベースルーティングは、スタティックルーティングだけでなく、ダイナミック経路制御プロトコル（RIP、OSPF）とも併用可能です。
- ポリシーベースルーティングのネクストホップの最大登録数は127件です。

### 送信時のQoS処理

各種の転送判断（L2スイッチング処理やIPルーティング処理）やQoS処理を経て送信ポートに到着したパケットは、ここまでの処理で決定された送信キューに格納され、実際に送信されるのを待ちます。
以下では、送信キューからの取り出し（送信）に関するQoS処理について解説します。

#### キューへの格納

送信ポートに到着したパケットは、ここまでの処理で決定された送信キューに格納されます。

#### キューからの送信

##### 送信スケジューリング

本製品では、送信キューに格納されたパケットをPQ方式（絶対優先スケジューリング）で出力します。
PQ方式とは、上位キューが空になるまで下位のキューからパケットを送信しないスケジューリング方式のことです。

##### シェーピング

パケット送信時の速度（送信間隔）を調整することで、ネットワークに流れ込むトラフィックを一定のレートにならす機能をシェーピングと呼びます。
本製品では、送信キューやスイッチポートに対して、送信レートの上限値を設定することで、シェーピングを行うことが可能です。
キューに対して送信レートの上限値を設定するには、インターフェースモードの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 のパケットを送信キュー 5 に割り当てる設定

    mls qos enable

    class-map test1
     match dscp 40

    policy-map qos_test1
     class test1
      set queue 5

    interface port1.0.1-1.0.24
     service-policy input qos_test1

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

送信元IPアドレスが 192.168.2.2 のパケットにDSCP値 40 をセットし、送信キュー 5 に割り当てる設定

    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
      set dscp 40
      set queue 5

    interface port1.0.1-1.0.24
     service-policy input qos_test2

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

ポリシーマップは、QoSだけでなくパケットフィルタリングにも使用できます（QoSとフィルタリングの併用も可能です）。
パケットフィルタリングは、インターフェースモードのaccess-groupコマンドを使ってスイッチポートにハードウェアアクセスリストを適用したり（インターフェース・ハードウェアパケットフィルター）、グローバルコンフィグモードの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宛て通信の負荷が非常に高い環境では、RIP、VRRP、ARPなどの制御パケットを適切に処理できず、これら制御プロトコルの動作に支障をきたす場合があります。
このような事態を避けるため、本製品では初期状態でCPU宛てのパケットを下記のとおり自動的に優先制御するようになっています。この動作を変更することはできません。

表 5
パケットの種類 | 使用するCPU宛てキュー
AMF（Autonomous Management Framework） | 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
ブロードキャストパケット
マルチキャストパケット