2.26. QoSの設定

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

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

優先制御・帯域制御機能

  • クラスベースキューイング(CBQ)

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

  • プライオリティキューイング(PQ)

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

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

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

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

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

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

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

    • パケットにIP precedence値の付与を行います。

2.26.1. 優先制御/帯域制御の動作

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

2.26.1.1. クラスベースキューイング(CBQ)

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

CBQは輻輳時に指定した割合でパケット送信を行います。データトラフィックに向いています。

../_images/24_qos1.svg

図 2.26.1 クラスベースキューイング(CBQ)

2.26.1.1.1. CBQの動作

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

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

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

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

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

../_images/24_qos2.svg

図 2.26.2 1回目のパケット判定

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

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

../_images/24_qos3.svg

図 2.26.3 2回目のパケット判定

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

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

../_images/24_qos4.svg

図 2.26.4 3回目のパケット判定

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

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

2.26.1.2. プライオリティキューイング(PQ)

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

../_images/24_qos5.svg

図 2.26.5 プライオリティキューイング(PQ)

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

注釈

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

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

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

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

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

../_images/24_qos6.svg

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

../_images/24_qos7.svg

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

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

2.26.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.26.1.3.3. シェーピングの計算に使用するフレームサイズ

  • Ethernetフレーム

    • Ethernetフレームサイズ(FCSを含む)

  • PPPフレーム(以下の一種類のみ)

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

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

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

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

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

    • マーキングの設定(入力インタフェース / 出力インタフェース)

    • CBQ, シェーピングの設定(出力インタフェース)

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

注釈

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

2.26.2.1. クラス分け/PQの設定

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

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

項目

説明

class-map

クラスマップの作成

match any

すべてのパケットにマッチします

match ip/ipv6 access-list

IPv4/IPv6アクセスリストを条件とします

match qos-group

qos-groupを条件とします

match local-generate-packet

自装置送信パケットを条件とします

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

    リスト 2.26.1 設定例
    class-map match-all qos-class1
      match ip access-list access-class1
      match input-interface GigaEthernet0.0
    
  • match-anyを設定した場合、表示順に判定を行い、条件に合致した時点で指定の優先度のキューに格納されます。

    下記の例では、access-class3の判定は行われません。

    リスト 2.26.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
    

注釈

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

2.26.2.2. ポリシーマップの設定

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

項目

説明

policy-map

ポリシーマップの作成と指定ポリシーマップコンフィグモードへの移行

class

ポリシーマップクラスコンフィグモードへの移行

bandwidth

CBQの最小予約帯域を設定

shape

クラスシェーピングを設定

set ip/ipv6 precedence

IPv4/IPv6のprecedenceを設定

set qos-group

qos-groupを設定

show policy-map

ポリシーマップの表示

リスト 2.26.3 設定例
policy-map qos-policy1
  class qos-class1
    queue-limit 10

ポリシーマップには、ローカルクラスとデフォルトクラスがあらかじめ作成されています。このクラスは以下のような特徴をもっており、コマンドにて削除することはできません。

  • ローカルクラス(class-local)

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

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

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

  • デフォルトクラス(class-default)

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

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

2.26.2.3. インタフェースシェーピング

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

項目

説明

service-policy enable

優先制御/帯域制御の有効化

traffic-shape rate

インタフェーストラフィックシェーピングの設定

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

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

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

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

項目

説明

service-policy enable

優先制御/帯域制御の有効化

service-policy input

受信インタフェースへのポリシーマップの割り当て

service-policy output

送信インタフェースへのポリシーマップの割り当て

リスト 2.26.4 設定例
interface GigaEthernet0.0
  service-policy enable
  service-policy output qos-policy1

2.26.2.5. 帯域制御の設定

CBQとシェーピングの設定例です。

リスト 2.26.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
    queue-limit 10
  class data1
    queue-limit 10
  class data2
    queue-limit 10
  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

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

2.26.2.6. プライオリティキューイング(PQ)の設定

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

リスト 2.26.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.26.3. 帯域制御/優先制御設定の注意事項

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

2.26.3.1. 帯域制御の調整

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

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

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

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

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

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

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

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

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

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

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

    リスト 2.26.7 設定例
    traffic-shape rate 1000000 10000
    

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

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

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

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

    • 長い場合

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

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

    • 短い場合

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

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

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

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

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

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

    項目

    説明

    queue-limit

    キュー長の調整

注釈

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

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

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

設定方法は以下の2とおりがあります。

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

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

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

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

注釈

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

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

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

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

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

2.26.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.26.4.2. ルータが送信するパケットへの付与

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

  • BGP

  • DHCP

  • EtherIP

  • HTTP

  • HTTPS

  • ICMP(ICMP echo request/replyは対象外)

  • IKE

  • L2TP-ctrl(L2TPコントロールパケットのみ)

  • ネットワークモニタ

  • NTP

  • SSH

  • Telnet

  • VRRP

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

項目

説明

ip type-of-service

IPv4 Type of Serviceの設定

ipv6 traffic-class

IPv6 Traffic Classの設定

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

リスト 2.26.8 設定例
ip type-of-service bgp dscp 63
ipv6 traffic-class icmp precedence 6

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

2.26.4.3. 転送パケットへの付与

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

リスト 2.26.9 設定例
policy-map qos-policy1
  class qos-class1
    set ip precedence 0

2.26.5. qos-group値の付与

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

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

リスト 2.26.10 設定例
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

2.26.6. SW-HUBの優先制御

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

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

../_images/24_qos8.svg

図 2.26.8 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.26.11 設定例
device GigaEthernet2
  qos scheduler wfq
  port 1 qos default-priority 7

注釈

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

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

../_images/24_qos9.svg

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