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は輻輳時に指定した割合でパケット送信を行います。データトラフィックに向いています。
2.26.1.1.1. CBQの動作
このクラスは送信割合を指定することができ、輻輳時に指定した割合でパケット送信を行います。指定した割合は最小予約帯域として必ず確保されるので、割り当ての小さいクラスでも、通信量が制限されることはあっても通信できなくなることはありません。
CBQは指定した帯域で固定値を割った重み(weight)という値を用いて、帯域を制御します。以下の式にしたがって送信されます。
「既に送信したパケット送信量」 + 「重み x 次に送信するパケットのサイズ」
具体的に説明します。Class A(帯域60%)とClass B(帯域20%)があるとして、それぞれClass Aには1500byteのパケット、Class Bには1200byteのパケットが、同じサイズで連続して送信されているとします。重みは比率だけの問題なので仮に10と30とします。
1回目) 最初に送信するパケットの判定は次のとおりです。
Class A から送信した場合の重みつき送信量 1500byte x 10 = 15000Class B から送信した場合の重みつき送信量 1200byte x 30 = 36000→したがって、Class Aからパケットが1つ送信されます。2回目) 送信済みの量をClassAの計算に加えて次のパケットを判定します。
Class A から送信した場合の重みつき送信量 15000 + 1500byte x 10 = 30000Class B から送信した場合の重みつき送信量 1200byte x 30 = 36000→したがって、Class Aからパケットがもう1つ送信されます。3回目) さらに送信済みの量を加えて計算していきます。
Class A から送信した場合の重みつき送信量 30000 + 1500 x 10 = 45000Class B から送信した場合の重みつき送信量 1200 x 30 = 36000→したがって、次はClass Bから1個送信されます。
これを繰り返すと輻輳時に指定した帯域で送信されます。送信するパケットがなければ次のクラスから送信しますので、予約帯域まで使用していないクラスがあれば他のクラスが利用します。
2.26.1.2. プライオリティキューイング(PQ)
トラフィックをプライオリティに応じて、8段階のキューに割り当てることができます。パケット配信は、高プライオリティ(High)が最優先で行われます。
高プライオリティのキューが必ず優先され、上位のキューが空になるまで低プライオリティのキューは処理されません。CBQと異なりHighの通信が大量に行われてインタフェースの回線速度(インタフェースシェーピングの設定速度)以上になってしまうとNormalやLowのキューからはその間全く送信されません。停止して欲しくない場合はCBQを利用してください。
注釈
プライオリティによる優先度はクラス内でのみ有効です。同じポリシーマップでも別クラスのキューとの優先度は無視されます。PQで優先度をつけたいトラフィックは、まとめて1つのクラスに記述する必要があります。
2.26.1.3. トラフィックシェーピング
トラフィックシェーピング機能は、帯域を制限し最大転送レートを超えるようなバーストデータをキューイングし、平均化して出力します。クラス単位とインタフェース単位で設定できます。
2.26.1.3.1. トラフィックシェーピングの動作原理
トラフィックシェーピングでは、設定した帯域CIR(bps)を越えないように動作させるため、実際には単位時間 Tc秒 の間にBc(bit)ずつ送信を許可し、溢れた分をキューイングするという動作を繰り返します。
インタフェース単位やクラス単位で最大転送速度の制御が可能です。バーストしやすい特定のトラフィックに制限をかけることで、他のトラフィックの帯域を確保することができます。
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により判定します。
class-map match-all qos-class1 match ip access-list access-class1 match input-interface GigaEthernet0.0
match-anyを設定した場合、表示順に判定を行い、条件に合致した時点で指定の優先度のキューに格納されます。
下記の例では、access-class3の判定は行われません。
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
ポリシーマップの表示
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
送信インタフェースへのポリシーマップの割り当て
interface GigaEthernet0.0 service-policy enable service-policy output qos-policy1
2.26.2.5. 帯域制御の設定
CBQとシェーピングの設定例です。
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の設定例です。優先度はクラス単位で判定されます。
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倍程度にするとバーストの多い環境でも動作しやすくなります。必要に応じて調整してください。
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 Control110 = Internetwork Control101 = CRITIC/ECP100 = Flash Override011 = Flash010 = Immediate001 = Priority000 = RoutineD(Delay=遅延)
0 = Normal Delay1 = Low DelayT(Throughput=スループット)
0 = Normal Throughput1 = High ThroughputR(Reliability=信頼度)
0 = Normal Reliability1 = High ReliabilityM(Money=コスト)
0 = Normal money cost1 = Minimum money costRFC2474でDiffserv用に定義されているType of Serviceフィールド
DSCP(Diffserv codepoint) 6bits
未使用
DSCP
Default PHB0(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に設定する例を以下に示します。
ip type-of-service bgp dscp 63 ipv6 traffic-class icmp precedence 6
これらのコマンドはpolicy-mapやservice-policyの設定は不要です。
2.26.4.3. 転送パケットへの付与
IP precedenceの値の付与は、クラス単位で付与します。
policy-map qos-policy1 class qos-class1 set ip precedence 0
2.26.5. qos-group値の付与
qos-groupは、DSCPやCoSと異なり、パケットに含まれる値ではありません。ルータ内部だけで利用されるパケットのパラメータで、入力インタフェース側でパケットをクラス分けし、出力インタフェース側でその分類したクラスごとにQoSを適用したい場合に使用する値です。
入力インタフェースごとにQoSの処理を分けたり、通過したトンネルインタフェースごとにクラスを分類したい場合などに利用します。
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内で廃棄が発生します。各ポートの優先度を設定することにより、指定したポートからの受信を優先してイーサネットコントローラ側に送信することができます。
ポートの優先度の設定は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に設定する例を以下に示します。
device GigaEthernet2 qos scheduler wfq port 1 qos default-priority 7
注釈
ルータの性能を超える負荷となっている場合は、バッファが枯渇するため高優先のフレームでも廃棄される可能性があります。
SW-HUBモジュールからの入力の合計が、外部インタフェースの最大速度以下の場合、すべてイーサネットコントローラに送信可能なため、本機能による優先制御は動作しません。出力インタフェースの速度を、最大速度以下に設定している場合は、出力インタフェースにより廃棄されます。このような場合、SW-HUBによる優先制御は使用せず、出力インタフェースに通常のQoSを設定してください。