# 2.36. QoSの設定

ユーザー/アプリケーションごとなど自由にトラフィックを分別し、それぞれのトラフィックごとにさまざまな優先度を設定し、優先度に応じたサービスを実現することが可能です。

UNIVERGE IX-R/IX-V シリーズでは以下のQoS機能に対応しています。

優先制御・帯域制御機能

- ローレイテンシキューイング（LLQ）

  - 音声パケットなどの遅延（レイテンシ）が問題になるパケットを最優先で送信するための機能です。キューイングせずにパケットを送信する形となり、ここに分類されたパケットは最小限の遅延で最優先に送信されます。

- クラスベースキューイング（CBQ）

  - QoSクラス毎のキューに重み付けを行い、その割合によってパケットの出力を制御します。指定した割合は最小予約帯域として必ず確保されるので、重み付けの小さいクラスでも通信量が制限されることはあっても通信できなくなることはありません。

- プライオリティキューイング（PQ）

  - High/Medium/Normal/Low/Sub-a/Sub-b/Sub-c/Sub-dという８つの優先度の異なるキューにキューイングし、優先順位にしたがって出力します。高いプライオリティのパケットが流れている間は、低いプライオリティのパケットは流れません。

- トラフィックシェーピング

  - クラスまたはインタフェース単位で帯域を制御し、最大転送レート制限によるパケットの出力を行います。

- SW-HUBポート入力優先制御

  - SW-HUB内の各ポート間の入力時の優先制御を行います。

マーキング・カラーリング機能

- マーキング・カラーリング

  - パケットにDSCP値、IP precedence値、またはCoS値の付与を行います。

注釈

QoS機能はBVIインタフェースには非対応です。

## 2.36.1. 優先制御/帯域制御の動作

QoSの機能により、さまざまな手段で優先制御/帯域制御を行うことができます。QoSの各機能の詳細は以下のとおりです。

### 2.36.1.1. ローレイテンシキューイング（LLQ）とクラスベースキューイング（CBQ）

トラフィックをいくつかのクラスに分類し、それぞれに指定した割合で送信する機能です。

LLQは、指定した帯域を最優先で確保し遅延を最小限にして送信します。音声パケットなどの遅延（レイテンシ）が問題になるパケットに向いています。CBQは輻輳時に指定した割合でパケット送信を行います。こちらはデータトラフィックに向いています。

図 2.36.1 ローレイテンシキューイング（LLQ）とクラスベースキューイング（CBQ）

#### 2.36.1.1.1. LLQの動作

音声パケットなどの遅延（レイテンシ）が問題になるパケットを最優先で送信するための機能です。キューイングせずにパケットを送信する形となり、ここに分類されたパケットは最小限の遅延で最優先に送信されます。

この設定は帯域の上限を指定する必要があり、それ以上のトラフィックがある場合には廃棄します（ポリシング）。また、LLQのクラスにパケットが流れていないかぎり、他のクラスはLLQで指定している帯域を使用することができます。

注釈

トラフィックが帯域を超えると廃棄されますので、帯域が不足することがないように注意して設定してください。使用する帯域が不定になるデータトラフィックには向きません。廃棄が発生する場合は後述の帯域制御の調整の項目も参照してください。

#### 2.36.1.1.2. CBQの動作

このクラスは送信割合を指定することができ、輻輳時に指定した割合でパケット送信を行います。指定した割合は最小予約帯域として必ず確保されるので、割り当ての小さいクラスでも、通信量が制限されることはあっても通信できなくなることはありません。

CBQは指定した帯域で固定値を割った重み（weight）という値を用いて、帯域を制御します。以下の式にしたがって送信されます。

> 「既に送信したパケット送信量」 + 「重み x 次に送信するパケットのサイズ」

具体的に説明します。Class A（帯域60%）とClass B（帯域20%）があるとして、それぞれClass Aには1500byteのパケット、Class Bには1200byteのパケットが、同じサイズで連続して送信されているとします。重みは比率だけの問題なので仮に10と30とします。

> 1回目） 最初に送信するパケットの判定は次のとおりです。

> 図 2.36.2 1回目のパケット判定

> Class A から送信した場合の重みつき送信量 1500byte x 10 = 15000
> Class B から送信した場合の重みつき送信量 1200byte x 30 = 36000
> →したがって、Class Aからパケットが１つ送信されます。

> 2回目） 送信済みの量をClassAの計算に加えて次のパケットを判定します。

> 図 2.36.3 2回目のパケット判定

> Class A から送信した場合の重みつき送信量 15000 + 1500byte x 10 = 30000
> Class B から送信した場合の重みつき送信量 1200byte x 30 = 36000
> →したがって、Class Aからパケットがもう１つ送信されます。

> 3回目） さらに送信済みの量を加えて計算していきます。

> 図 2.36.4 3回目のパケット判定

> Class A から送信した場合の重みつき送信量 30000 + 1500 x 10 = 45000
> Class B から送信した場合の重みつき送信量 1200 x 30 = 36000
> →したがって、次はClass Bから1個送信されます。

これを繰り返すと輻輳時に指定した帯域で送信されます。送信するパケットがなければ次のクラスから送信しますので、予約帯域まで使用していないクラスがあれば他のクラスが利用します。

### 2.36.1.2. プライオリティキューイング（PQ）

トラフィックをプライオリティに応じて、8段階のキューに割り当てることができます。パケット配信は、高プライオリティ（High）が最優先で行われます。

図 2.36.5 プライオリティキューイング（PQ）

高プライオリティのキューが必ず優先され、上位のキューが空になるまで低プライオリティのキューは処理されません。CBQと異なりHighの通信が大量に行われてインタフェースの回線速度（インタフェースシェーピングの設定速度）以上になってしまうとNormalやLowのキューからはその間全く送信されません。停止して欲しくない場合はCBQを利用してください。

注釈

プライオリティによる優先度はクラス内でのみ有効です。同じポリシーマップでも別クラスのキューとの優先度は無視されます。PQで優先度をつけたいトラフィックは、まとめて１つのクラスに記述する必要があります。

### 2.36.1.3. トラフィックシェーピング

トラフィックシェーピング機能は、帯域を制限し最大転送レートを超えるようなバーストデータをキューイングし、平均化して出力します。クラス単位とインタフェース単位で設定できます。

#### 2.36.1.3.1. トラフィックシェーピングの動作原理

トラフィックシェーピングでは、設定した帯域CIR（bps）を越えないように動作させるため、実際には単位時間 Tc秒 の間にBc（bit）ずつ送信を許可し、溢れた分をキューイングするという動作を繰り返します。

図 2.36.6 トラフィックシェーピングの動作原理

図 2.36.7 トラフィックシェーピングの有無による違い

インタフェース単位やクラス単位で最大転送速度の制御が可能です。バーストしやすい特定のトラフィックに制限をかけることで、他のトラフィックの帯域を確保することができます。

#### 2.36.1.3.2. トラフィックシェーピングのパラメータ

トラフィックシェーピングで設定・表示されるパラメータの意味は以下のとおりです。

- 認定情報速度 CIR（Committed Information Rate）：［単位：ビット／秒］

  - CIRは、輻輳していない通常の状態で保証されるデータ速度です。

- 認定バーストサイズ Bc（Committed Burst Size）：［単位：ビット］

  - Bcは、Tc内で、ネットワークが伝送を許容する、ビット単位での最大データ量です。

  - Bcの値が小さいほど平均化され、一定の流量のパケットが送信されます。

- 時間間隔 Tc：［単位：秒］

  - シェーピング動作の単位時間です。Tc ＝ Bc／CIRで決定されます。

  - Tcの最小値は1msです。

- 超過バーストサイズ Be（Excess Burst Size）：［単位：ビット］

  - Bcを越えて回線上で伝送できる未認定データ量です。通常この値は設定しません。

  - Beに値が設定されることがありますが、CIRを超過することはありません。

#### 2.36.1.3.3. シェーピングの計算に使用するフレームサイズ

- Ethernetフレーム

  - Ethernetフレームサイズ（FCSを含む）

  - プリアンブルやフレーム間ギャップも含めたサイズ

  - IP/IPv6パケットサイズ（EthernetヘッダとFCSを含まないサイズ）

    注釈

    IP/IPv6パケットサイズはブリッジの場合は使用できません。

  デフォルト動作は一番上の定義で計算します。GigaEthernetインタフェースでは、以下のコマンドで計算式を変更することができます。

  項目 | 説明
  --- | ---
  qos rate-accounting | 帯域計算対象のフレームサイズ変更

  QoSをベースインタフェースのみで設定してサブインタフェースに適用した場合でも、本コマンドは送信インタフェースすべてで設定する必要があります。

- PPPフレーム（以下の一種類のみ）

  - PPPヘッダからFCSまでを含む値

## 2.36.2. 優先制御/帯域制御の設定方法

QoSの設定方法は以下のとおりです。

- クラスマップを設定し、ポリシーごとにクラスを作成する（クラス分け）。

- ポリシーマップを設定し、クラスごとにQoSの設定を行う。

  - マーキング・カラーリングの設定（入力インタフェース / 出力インタフェース）

  - CBQ, LLQ, シェーピングの設定（出力インタフェース）

- ポリシーマップをインタフェースに適用し、QoSを有効化する。

注釈

QoSをベースインタフェースで有効にした場合、同じデバイスに属するすべてのサブインタフェースにも適用されます。QoSをサブインタフェースで有効にした場合、インタフェースごとに設定が有効になります。

### 2.36.2.1. クラス分け/PQの設定

QoSの設定は基本的にclass-mapで設定するQoSクラス単位で行います。クラスマップの設定・表示コマンドは次のとおりで、さまざまな条件を用いてフローを分類することができます。

またクラス内で有効なPQの設定もここで行います。

> 項目 | 説明
> --- | ---
> class-map | クラスマップの作成
> match any | すべてのパケットにマッチします
> match ip/ipv6 access-list | IPv4/IPv6アクセスリストを条件とします
> match ip/ipv6 access-list cos | IPv4/IPv6アクセスリストとCoS値を条件とします
> match cos | CoS値を条件とします
> match qos-group | qos-groupを条件とします
> match local-generate-packet | 自装置送信パケットを条件とします

- match-allを設定した場合、マッチ条件をandにより判定します。

  リスト 2.36.1 設定例

      class-map match-all qos-class1
        match ip access-list access-class1
        match input-interface GigaEthernet0.0

- match-anyを設定した場合、表示順に判定を行い、条件に合致した時点で指定の優先度のキューに格納されます。

  下記の例では、high, normalの条件に合致しなかったトラフィックはすべてmatch any lowの条件に合致してlowに分類されます。よって、それ以降に設定されているaccess-class3の判定が行われることはありません。

  リスト 2.36.2 設定例

      class-map match-any qos-class1
        match ip access-list access-class1 high
        match ip access-list access-class2 normal
        match any low
        match ip access-list access-class3 medium

注釈

- CoS値をmatch条件に使用できるのは受信インタフェースのみです。受信時のCoS値はルーティングすると0になります。また、受信インタフェースでCoS値を書き換えた場合も、その設定は送信直前に適用されます。いずれも送信インタフェースではmatchさせられません。

- 入力インタフェースでの条件を送信側で判定したい場合はqos-groupを利用してください。

### 2.36.2.2. ポリシーマップの設定

クラスマップで作成した条件を、ポリシーマップにて関連付けし、その条件に対するQoS動作を設定します。ポリシーマップを設定・表示するコマンドは次のとおりです。設定内容の詳細は後の節で説明します。

> 項目 | 説明
> --- | ---
> policy-map | ポリシーマップの作成と指定ポリシーマップコンフィグモードへの移行
> class | ポリシーマップクラスコンフィグモードへの移行
> priority | LLQの設定
> bandwidth | CBQの最小予約帯域を設定
> shape | クラスシェーピングを設定
> set ip/ipv6 dscp/precedence | IPv4/IPv6のDSCP/precedenceを設定
> set cos | CoS値を設定
> set qos-group | qos-groupを設定
> show policy-map | ポリシーマップの表示

ポリシーマップには、あらかじめ予約済みのクラスがあります。このクラスは以下のような特徴をもっています。

- ローカルクラス（class-local）

  - ルータ自身が生成するパケットが対象となります。主なパケットにICMPエコー、ダイナミックルーティングパケット等があります。

  - クラス分けに当てはまらなかったパケットが対象となります。

  - 10%の帯域が初期値として割り当てられています。

  - ポリシーマップを作成すると自動的に作成されます。削除することはできません。

- デフォルトクラス（class-default）

  - クラス分けに当てはまらなかったパケットが対象となります。

  - 10%の帯域が初期値として割り当てられています。

  - ポリシーマップを作成すると自動的に作成されます。削除することはできません。

- ダイナミッククラス（class-dynamic）

  - ダイナミックQoSで使用します。詳細はダイナミックQoSの項を参照してください。

  - 10%の帯域が初期値として割り当てられています。

クラス分けの判定は、クラスを設定した順に行われます。ただし、class-localとclass-defaultは、設定順に関わらず最後に判定が行われます。下記の例では、qos-class1→qos-class2→class-local→class-defaultの順に判定されます。

> リスト 2.36.3 設定例

>     policy-map qos-policy1
>       class qos-class1
>         set qos-group 1
>       class qos-class2
>         set qos-group 2
>       class class-local
>       class class-default

### 2.36.2.3. インタフェースシェーピング

QoSクラス毎シェーピングの他にインタフェース毎にシェーピングを行うことができます。これにより、複数のQoSクラスをまとめてシェーピングすることができます。

> 項目 | 説明
> --- | ---
> service-policy enable | 優先制御/帯域制御の有効化
> traffic-shape rate | インタフェーストラフィックシェーピングの設定

ポリシーマップは不要ですが、設定したインタフェースでservice-policy enableは必要です。基本インタフェースとサブインタフェースでシェーピングを有効化した場合は排他動作となるため、デバイスからは合計のシェーピング速度で送信します。

### 2.36.2.4. QoSの有効化とポリシーマップの関連付け

QoSを使用するインタフェースでQoSを有効にし、設定したポリシーマップを入力もしくは出力インタフェースに関連付けします。これらのコマンドは次のとおりです。

マーキング・カラーリングのみ行うインタフェースの場合はservice-policy enableの設定は必要ありません。

> 項目 | 説明
> --- | ---
> service-policy enable | 優先制御/帯域制御の有効化
> service-policy input | 受信インタフェースへのポリシーマップの割り当て
> service-policy output | 送信インタフェースへのポリシーマップの割り当て

> リスト 2.36.4 設定例

>     interface GigaEthernet0.0
>       service-policy enable
>       service-policy output qos-policy1

### 2.36.2.5. 帯域制御の設定

LLQとCBQ、およびシェーピングの設定例です。

> リスト 2.36.5 設定例

>     ip access-list voice permit ip src xx.xx.xx.xx/28 dest any （音声パケットを分類）
>     ip access-list data1 permit ip src xx.xx.xx.xx/24 dest any （データパケットを分類1）
>     ip access-list data2 permit ip src any dest any （データパケットを分類2）
>     !
>     class-map match-any voice
>       match ip access-list voice normal
>     !
>     class-map match-any data1
>       match ip access-list data1 normal
>     !
>     class-map match-any data2
>       match ip access-list data2 normal
>     !
>     policy-map pmap
>       class voice
>         priority 250
>       class data1
>         bandwidth percent 40
>       class data2
>         shape 500000 1000 0
>         bandwidth percent 20
>       class class-local
>       class class-default
>     !
>     interface GigaEthernet0.0
>       ip address 10.0.0.254/24
>       service-policy enable
>       service-policy output pmap
>       traffic-shape rate 1000000 1000 0
>       no shutdown
>     !
>     interface GigaEthernet1.0
>       ip address 10.1.1.254/24
>       no shutdown

LLQ、インタフェースシェーピング、クラスシェーピング、CBQの設定はすべて同時に満たすように動作します。CBQの設定（最低保証帯域）よりもLLQ、シェーピングの設定が優先です。保証帯域がシェーピングを超える場合は均等に減少します。この設定は次のように動作します。

> すべての通信の合計が1Mbpsを超えません。音声パケットは250Kbpsまで遅延なく送信されます。data1は全体の40%（400Kbps）までは必ず送信できます。data2は全体の20%（200Kbps）まで必ず送信できますが、500Kbpsを超えることはありません。

### 2.36.2.6. プライオリティキューイング（PQ）の設定

PQの設定例です。優先度はクラス単位で判定されます。

> リスト 2.36.6 設定例

>     ip access-list voice permit ip src xx.xx.xx.xx/28 dest any
>     ip access-list data1 permit ip src xx.xx.xx.xx/24 dest any
>     ip access-list data2 permit ip src any dest any
>     !
>     class-map match-any pq
>       match ip access-list voice high
>       match ip access-list data1 normal
>       match ip access-list data2 low
>     !
>     policy-map pmap
>       class pq
>       class class-local
>       class class-default
>     !
>     interface GigaEthernet0.0
>       ip address 10.0.0.254/24
>       service-policy enable
>       service-policy output pmap
>       traffic-shape rate 1024000 1000 0
>       no shutdown
>     !
>     interface GigaEthernet1.0
>       ip address 10.1.1.254/24
>       no shutdown

## 2.36.3. 帯域制御/優先制御設定の注意事項

帯域制御/優先制御の設定は、使用状況にあわせて細かなチューニングが必要になることがあります。特殊な運用環境や問い合わせの多い症例について記載します。

### 2.36.3.1. 帯域制御の調整

帯域制御の設定は、利用する環境によって最適な設定が異なるため、適切に設定しないと正しく動作しない場合があります。問い合わせの多い症例について説明します。

- LLQで十分な帯域を設定したのに廃棄が発生する

  トラフィックは連続量ではないため、たとえば10msごとに10Kbitずつ送信する場合と、10msの間に1Mbit送信して残り990msが無通信の場合、どちらも1Mbpsになりますが、必要な設定が異なります。

  映像トラフィックなどでは、この例の後者のように、まとまったデータを一度に送信する傾向が強いため、帯域のみの設定では廃棄が発生します。これはバーストサイズBe（一度に送信してよいパケットの合計サイズ）で調整する必要があります。

  適切な値をpriorityコマンドの第2パラメータに設定してください。不明な場合は3000～10000程度の値で確認してください。以下は、帯域が500Kbps未満で3000～4000byteずつ送信される映像トラフィックを扱う場合の設定例です。

  リスト 2.36.7 設定例

      policy-map pmap
        class video
          priority 500 4000

- シェーピングで十分な帯域を設定したのに廃棄が発生する

  シェーピングを設定した場合も同様に、バーストサイズBcを適切に設定しないと期待した動作ができないことがあります。Bcの設定を省略した場合、通常運用の負荷を想定して自動設定していますが、環境によって最適値が異なることと、試験環境などの極端な負荷条件の場合には、ただしく制御されないことがあります。

  バーストサイズの設定により、以下のように特性が変化します。

  - バーストサイズが小さい場合

    - 利点：短時間で細かく送信するため滑らかにシェーピングされます。

    - 欠点：バーストトラフィックで廃棄が発生しやすくなります。

  - バーストサイズが大きい場合

    - 利点：バーストトラフィックでも廃棄されにくくなります。

    - 欠点：バーストを許可するのでシェーピングが荒くなります。

  デフォルトではBcはCIRの1/1000の値で動作し、Tcが1msになるように設定されています。1msごとに送信可能かどうかの判断を行います。それほどの精度が必要でない場合、Bcの値をたとえば2～10倍程度にするとバーストの多い環境でも動作しやすくなります。必要に応じて調整してください。

  リスト 2.36.8 設定例

      traffic-shape rate 1000000 10000

  負荷試験機を用いて運用時に流れないような負荷をかけた場合に設定が必要になることがありますが、それが運用時の最適値とはかぎりません。上記の特性に注意して設定してください。

- キュー長の調整方法と自動調整について

  QoSの制御に必要なキュー長は、クラス・プライオリティごとに用意されています。帯域制御や優先制御により送信順序を変更するため、ある程度のパケット数を蓄えられないとパケットが廃棄されてしまいます。

  キュー長の設定により、以下のように特性が変化します。

  - 長い場合

    - 利点：QoSの制御が行いやすく、パケットが廃棄されにくくなります。

    - 欠点：低帯域の場合に遅延が大きくなります。全クラスあわせて600個以上キューに積まれることがあると、受信バッファが枯渇して通信に支障が出ることがあります。このため、相対的に設定できるクラスが少なくなります。

  - 短い場合

    - 利点：低帯域の場合にも遅延が抑えられます。数多くのクラスが設定できます。

    - 欠点：PQやシェーピングの制御に支障が出ます。パケットが過剰に廃棄されます。

  キュー長を設定しなければ、自動で調整するようにしています。シェーピングやCBQの設定にあわせて必要な数を自動的に確保しますが、この自動調整は運用環境の負荷を想定しており、試験環境などでの極端な負荷条件には対応できないこともあります（現実的に不要なキュー長を確保してしまうため、その場合は手動で設定が必要です）。

  自動調整される値はBc+Beのサイズおよび10ms分相当（ただしクラスごとに最低32個）のパケットがキューイングできる数を基準に設定されます。

  低速回線では、プライオリティごとに10個ずつのキューがデフォルトでは用意されます。これは調整された値ではないので変更が必要です。高優先/低遅延なら10～25、それ以外は25～100程度が推奨です。

  キュー長はqueue-limitコマンドで変更できます。

  項目 | 説明
  --- | ---
  queue-limit | キュー長の調整

注釈

キューの合計値は、受信インタフェースのバッファ数を超えない範囲で利用してください。

### 2.36.3.2. サブインタフェースを使った帯域制御の調整

タグVLANやPPPoEなど、サブインタフェースを複数利用している場合の制御方法です。

設定方法は以下の2種類があります。

- 基本インタフェースで設定し１つのQoSとして制御する方法

- サブインタフェースごとにQoSの設定を個別に行う方法

#### 2.36.3.2.1. 基本インタフェースにおける帯域制御と優先制御

基本インタフェースのみでservice-policy enableを設定すると、サブインタフェースを含む全インタフェースのトラフィックが、基本インタフェースに設定したQoSの設定にしたがって動作します。

注釈

ポートVLAN利用時の基本インタフェースはQoSではサブインタフェースとして扱います。

#### 2.36.3.2.2. サブインタフェースごとの帯域制御

サブインタフェースごとにservice-policy enableを設定することで、サブインタフェースごとにQoSのポリシーを適用することもできます。

## 2.36.4. マーキング・カラーリングの設定

パケットのIP precedence値を、設定した条件にあわせて書き換えることができます。

### 2.36.4.1. DSCP値、IP precedence値、CoS値について

- RFC791で定義されているType of Serviceフィールド

  Precedence 3bits | TOS 4bit | 0
  D | T | R | M

  precedence（=優先度）

  > 111 = Network Control
  > 110 = Internetwork Control
  > 101 = CRITIC/ECP
  > 100 = Flash Override
  > 011 = Flash
  > 010 = Immediate
  > 001 = Priority
  > 000 = Routine

  D（Delay=遅延）

  > 0 = Normal Delay
  > 1 = Low Delay

  T（Throughput=スループット）

  > 0 = Normal Throughput
  > 1 = High Throughput

  R（Reliability=信頼度）

  > 0 = Normal Reliability
  > 1 = High Reliability

  M（Money=コスト）

  > 0 = Normal money cost
  > 1 = Minimum money cost

- RFC2474でDiffserv用に定義されているType of Serviceフィールド

  DSCP（Diffserv codepoint） 6bits | 未使用

  DSCP |
  Default PHB 0（000000） | ベストエフォート（優先制御なし）
  EF（Expedited Forwarding PHB） 46（101110） cf. RFC3246 | パケットを最優先で転送 仮想専用線（低損失 低遅延 低ジッタ）
  AF（Assured Forwarding PHB） 12種類 cf. RFC2597 | 輻輳時に確率的にパケット廃棄 輻輳時の最低帯域を保証可能

- IEEE802.1Dで定義されているタグ付きフレームのPriority（CoS）フィールド

  Priority（=優先度）

  > 111 | Network Control | 高
  > 110 | Voice（< 10ms latency and jitter） | ↑
  > 101 | Video（< 100ms latency and jitter） |
  > 100 | Controlled load |
  > 011 | Excellent Effort |
  > 000 | Best Effort（default） |
  > 010 | Spare | ↓
  > 001 | Background | 低

### 2.36.4.2. ルータが送信するパケットへの付与

ルータが送信するパケットについてはQoS機能を使用せずにPrecedence, TOS, DSCPの値を設定することができます。対象となるパケットは以下になります。

- BGP

- DHCP

- EtherIP

- GRE（keepalive）

- HTTP

- HTTPS

- ICMP（ICMP echo request/replyは対象外）

- IKE

- L2TP-ctrl（L2TPコントロールパケットのみ）

- ネットワークモニタ

- NHRP

- NTP

- OSPF

- RADIUSクライアント

- RADIUSサーバー

- RIP

- SSH

- Telnet

- VRRP

設定コマンドは次のとおりです。

> 項目 | 説明
> --- | ---
> ip type-of-service | IPv4 Type of Serviceの設定
> ipv6 traffic-class | IPv6 Traffic Classの設定

BGPのDSCPを63、OSPFのTOSを10、ICMPv6のdscpを6に設定する例を以下に示します。

> リスト 2.36.9 設定例

>     ip type-of-service bgp dscp 63
>     ip type-of-service ospf tos 10
>     ipv6 traffic-class icmp dscp 6

これらのコマンドはpolicy-mapやservice-policyの設定は不要です。

### 2.36.4.3. 転送パケットへの付与

DSCPやIP precedenceの値の付与は、クラス単位で付与します。

> リスト 2.36.10 設定例

>     policy-map qos-policy1
>       class qos-class1
>         set ip dscp 46

こちらの方法ではCoS値も同様に付与することができます。

> リスト 2.36.11 設定例

>     policy-map qos-policy1
>       class qos-class1
>         set cos 4

注釈

set cosで設定した値を使ってmatch cosを動作させることはできません。CoSのsetの設定はパケット送信時に適用する仕様のため、CoS値を入力側でsetしても出力側のQoSではその値でmatchしません。CoSの引継ぎなど受信インタフェースの条件により送信インタフェースでCoSをセットしたい場合は、後述のqos-groupの設定を利用してください。

ToS-CoS変換の設定例を以下に示します。

図 2.36.8 ToS-CoS変換

> リスト 2.36.12 設定例

>     ToS値に応じてCoS値を設定
>     出力時にToS値の大きいパケットを優先して出力

>     ip access-list tos7 permit ip src any dest any precedence 7
>     ip access-list tos1 permit ip src any dest any precedence 1
>     !
>     class-map match-any in-class1
>       match ip access-list tos7
>     !
>     class-map match-any in-class2
>       match ip access-list tos1
>     !
>     class-map match-any out-class
>       match ip access-list tos7 high
>       match ip access-list tos1 medium
>     !
>     policy-map cos-set
>       class in-class1
>         set cos 6
>       class in-class2
>         set cos 1
>     !
>     policy-map out-policy
>       class out-class
>     !
>     interface GigaEthernet0.1
>       encapsulation dot1q 10 tpid 8100
>       ip address 10.0.0.1/24
>       service-policy enable
>       service-policy output out-policy
>       no shutdown
>     !
>     interface GigaEthernet2.0
>       ip address 192.168.1.1/24
>       service-policy input cos-set
>       no shutdown

## 2.36.5. qos-group値の付与

qos-groupは、DSCPやCoSと異なり、パケットに含まれる値ではありません。ルータ内部だけで利用されるパケットのパラメータで、入力インタフェース側でパケットをクラス分けし、出力インタフェース側でその分類したクラスごとにQoSを適用したい場合に使用する値です。

入力インタフェースごとにQoSの処理を分けたり、通過したトンネルインタフェースごとにクラスを分類したい場合などに利用します。

受信したパケットにqos-group値を付与するには、set qos-groupコマンドを利用します。設定例は次のとおりです。

> リスト 2.36.13 設定例

>     class-map match-any qos-class1
>       match cos 1 normal
>     !
>     class-map match-any qos-class2
>       match cos 2 normal
>     !
>     class-map match-any qos-class3
>       match qos-group 1 normal
>     !
>     class-map match-any qos-class4
>       match qos-group 2 normal
>     !
>     policy-map qos-in
>       class qos-class1
>         set qos-group 1
>       class qos-class2
>         set qos-group 2
>     !
>     policy-map qos-out
>       class qos-class3
>         set cos 1
>       class qos-class4
>         set cos 2
>     !
>     interface GigaEthernet0.1
>       encapsulation dot1q 10 tpid 8100
>       ip address 10.0.0.1/24
>       service-policy output qos-out
>       no shutdown
>     !
>     interface GigaEthernet2.1
>       encapsulation dot1q 10 tpid 8100
>       ip address 10.1.1.1/24
>       service-policy input qos-in
>       no shutdown

ルータが自発的に送信する以下のパケットにqos-group値を付与するには、ip/ipv6 qos-groupコマンドを利用します。

- IKE

- GRE keepalive

設定コマンドは次のとおりです。このコマンドでは、policy-mapやservice-policyを設定することなくqos-group値を付与することができます。

> 項目 | 説明
> --- | ---
> ip qos-group | IPv4 qos-group値の設定
> ipv6 qos-group | IPv6 qos-group値の設定

> リスト 2.36.14 設定例：IPv4のIKEにqos-group 10を設定

>     ip qos-group ike 10

## 2.36.6. SW-HUBの優先制御

SW-HUBの各ポートで受信したパケットをイーサネットコントローラ側に送信する際の優先度を設定することができます。これにより、SW-HUBのポートで音声とデータが混在した環境で、輻輳が発生するような場合でも、音声パケットを廃棄せずにイーサネットコントローラ側に送信することができます。

SW-HUBモジュールの接続は、内部的には以下の図のようになっています。イーサネットコントローラとSW-HUBの内部接続は外部のインタフェースの最大速度と同じ速度に固定されています。そのため、全ポートの入力の合計が外部インタフェースの最大速度以上になると、SW-HUB内で廃棄が発生します。各ポートの優先度を設定することにより、指定したポートからの受信を優先してイーサネットコントローラ側に送信することができます。

図 2.36.9 SW-HUBモジュールの接続

ポートの優先度の設定は8段階で行いますが、SW-HUBのキューの優先度は4段階となり、以下のように割り当てられます。キューの優先度が大きい方が優先となり、優先度が同じ場合は設定する優先度が異なっていても、同じ優先度となります。

> 設定する優先度 | 0（デフォルト） | 1 | 2 | 3 | 4 | 5 | 6 | 7
> キューの優先度 | 1 | 0 | 1 | 2 | 3

また、送信のスケジューリングの方法については、以下の2種類が設定できます。

- wfq

  キューの優先度順から、フレーム数が8:4:2:1の割合で送信されます。最優先のパケットでも廃棄される可能性があります。

- strict（デフォルト）

  優先度の高いフレームから送信されます。最優先パケットが存在する間は、他のキューのパケットが送信されません。

コマンドは以下のとおりです。

> 項目 | 説明
> --- | ---
> port qos default-priority | SW-HUBポート優先度の設定
> qos scheduler | スケジューリング方法の設定

ポート1を優先し、優先のスケジューリング方法をWFQに設定する例を以下に示します。

> リスト 2.36.15 設定例

>     device GigaEthernet2
>       qos scheduler wfq
>       port 1 qos default-priority 7

注釈

- ルータの性能を超える負荷となっている場合は、バッファが枯渇するため高優先のフレームでも廃棄される可能性があります。

- SW-HUBモジュールからの入力の合計が、外部インタフェースの最大速度以下の場合、すべてイーサネットコントローラに送信可能なため、本機能による優先制御は動作しません。出力インタフェースの速度を、最大速度以下に設定している場合は、出力インタフェースにより廃棄されます。このような場合、SW-HUBによる優先制御は使用せず、出力インタフェースに通常のQoSを設定してください。

図 2.36.10 出力インタフェースにより廃棄される場合

## 2.36.7. ダイナミックQoS

インタフェースにダイナミックQoSの監視を設定することで、通信量の多い端末との通信を一時的に専用のQoSクラスに割り当て、端末単位で動的に制御することができます。端末はMACアドレス毎に管理します。

ダイナミックQoSの監視中に通信量が一定の基準を上回った通信は、ダイナミックQoS専用のクラス(class-dynamic)にマッチするようになり、該当クラスに設定したダイナミックQoS制御が適用されるようになります。また通信量が一定の基準を下回ると、該当の通信に対するダイナミックQoS制御は解除されます。

ダイナミックQoSはその他のQoS制御と併用できます。

注釈

UNIVERGE IX-Vシリーズでは、ダイナミックQoSは未サポートです。

### 2.36.7.1. 設定

ダイナミックQoSを有効にするには以下の設定が必要です。

> 項目 | 説明
> --- | ---
> dynamic-qos detect-rate | ダイナミックQoSの設定（レート指定）
> dynamic-qos detect-size | ダイナミックQoSの設定（総トラフィック量）

設定可能なパラメータは以下になります。

> 項目 | 説明
> --- | ---
> START-RATE | ダイナミックQoS開始トラフィックレート トラフィックレート指定時、Gbps, Mbps, Kbpsから選択
> START-SIZE | ダイナミックQoS開始トラフィック量 トラフィック量指定時、Gbyte, Mbyte, Kbyteから選択
> START-COUNT | ダイナミックQoS開始の判定回数（デフォルト：3回）
> STOP-RATE | ダイナミックQoS終了トラフィックレート トラフィックレート指定時、Gbps, Mbps, Kbpsから選択
> STOP-SIZE | ダイナミックQoS終了トラフィック量 トラフィック量指定時、Gbyte, Mbyte, Kbyteから選択
> STOP-COUNT | ダイナミックQoS終了の判定回数（デフォルト：3回）
> PERIOD-TIME | 計測周期 detect-size指定の場合のみ変更できます。 detect-rate指定の場合は10秒固定で変更できません。
> both|in|out | トラフィックの監視方向 both：設定したインタフェースでの送受信方向 in：設定したインタフェースでの受信方向 out：設定したインタフェースでの送信方向

ダイナミックQoSの設定は1インタフェースでレート指定と総トラフィック量指定の併用が可能です。併用した場合、いずれかの開始条件を満たした際にダイナミックQoSを開始し、すべての終了条件を満たした際にダイナミックQoSを終了します。

図 2.36.11 detect-rate時の動作例

上記以外にQoSの設定が必要になります。

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  service-policy enable | QoSの有効化
  service-policy output | ポリシーマップ指定

- グローバルコンフィグモード

  項目 | 説明
  --- | ---
  policy-map | ポリシーマップの設定

ダイナミックQoS専用のクラスとして“class-dynamic”が予約されています。“class-dynamic”はその他のクラスと同様、QoSの一般的な処理に従います。

ダイナミックQoSの監視設定によって一定の基準を上回った通信は、“class-dynamic”のマッチ条件にヒットするようになります。ポリシーマップコンフィグモードで“class-dynamic”のQoS制御方法を指定することで、ダイナミックQoS対象の通信にQoS制御を適用することができます。

なお、通常のQoS処理と同様、トラフィックのクラス分類はポリシーマップ上に設定した順番で判定されます。そのため、ポリシーマップ上で“class-dynamic”より前に設定されたクラスのマッチ条件にヒットするトラフィックには該当クラスのQoS処理が適用され、“class-dynamic”は適用されません。

1つのポリシーマップに“class-dynamic”は1つのみ設定できます。“class-dynamic”に該当する場合、制限数までは該当する端末毎に1クラスが割り当てられます。制限数を超えた場合は、複数端末が1クラスに割り当てられます。複数端末の通信の合計が、指定した帯域に制限されます。

詳細については関連する項を参照してください。

図 2.36.12 ダイナミックQoS設定時のクラスの評価

> リスト 2.36.16 設定例1

>     LAN→WAN方向のトラフィックを監視
>     10秒間の通信量が3回続けて1Mbpsを超えると、800Kbpsに制限
>     10秒間の通信量が3回続けて100Kbpsを下回ると制限を解除

>     policy-map wan-outmap
>       class voice-up
>         priority 2000
>       class class-dynamic
>         shape 800000
>       class class-local
>       class class-default

>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       service-policy enable
>       service-policy output wan-outmap
>       no shutdown
>     interface GigaEthernet1.0
>       ip address 192.168.1.254/24
>       dynamic-qos detect-rate start 1000 kbps stop 100 kbps in
>       no shutdown

> リスト 2.36.17 設定例2

>     192.168.0.253/32の端末はLLQで制御
>     双方向のトラフィックを監視
>     72時間以内の合計通信量が10Gbyteを超えた時点で、800Kbpsに制限
>     72時間の合計通信量が1Gbyteを下回ると制限を解除

>     ip access-list list-voice-up permit ip src 192.168.0.253/32 dest any

>     class-map match-any voice-up
>       match ip access-list list-voice-up high

>     policy-map wan-outmap
>       class voice-up
>         priority 2000
>       class class-dynamic
>         shape 800000
>       class class-local
>       class class-default

>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       service-policy enable
>       service-policy output wan-outmap
>       no shutdown
>     interface GigaEthernet1.0
>       ip address 192.168.1.254/24
>       dynamic-qos detect-size start 10 gbyte count 1 stop 1 gbyte count 1 period 72 both
>       no shutdown

> リスト 2.36.18 設定例3

>     LAN→WAN方向の10秒間の通信量が3回続けて1Mbpsを超える
>     または、双方向の72時間以内の合計通信量が10Gbyteを超えた時点で、800Kbpsに制限
>     LAN→WAN方向の10秒間の通信量が3回続けて100Kbpsを下回る
>     かつ、双方向の72時間の合計通信量が1Gbpsを下回ると制限を解除

>     上記の条件に該当しない場合は、500Mbps

>     [QoS設定は設定例1と同じ]

>     class-map match-any all-traffic
>       match any normal

>     policy-map wan-outmap
>       class class-dynamic
>         shape 800000
>       class all-traffic
>         shape mbps 500
>       class class-local
>       class class-default

>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       service-policy enable
>       service-policy output wan-outmap
>       no shutdown
>     interface GigaEthernet1.0
>       ip address 192.168.1.254/24
>       dynamic-qos detect-rate start 1000 kbps stop 100 kbps in
>       dynamic-qos detect-size start 10 gbyte count 1 stop 1 gbyte count 1 period 72 both
>       no shutdown

### 2.36.7.2. 制限事項・注意事項

ダイナミックQoSには以下の制限事項・注意事項があります。

- トラフィック監視対象はGigaEthernetのみ対応しています。

- ダイナミックQoS用クラス（“class-dynamic”）を含んだポリシーマップの関連付けは、service-policy outputのみ対応しています。

- Ver1.2までのバージョンでクラス名に“class-dynamic”を使用している場合、Ver1.3以降にバージョンアップすると、“class-dynamic”はダイナミックQoSで予約済みのクラス名となるため、意図した動作にならない場合があります。その場合は、クラス名を変更してください。