同一ネットワークインフラストラクチャ上に、データ、音声、ビデオといったサービスレベルの異なるトラフィックを一緒に運ぼうとすると、問題が発生する。
これは各トラフィックの特性が違うからである。
ビデオ
もちろん広帯域が必要。
対話型セッションであれば、遅延は少なければならない。
対話型セッションでなければ、遅延は少ない方が望ましい。
遅延は一定でなければならない(多少の遅延は問題ないが、一定でないと映像の途切れにつながる)。
音声
ビデオよりは狭い帯域でも可。
遅延は非常に短い必要がある(エコーなどの聴覚的な影響がある)。
対話型ターミナルセッション(telnetなど)
対話型なので遅延が短い必要がある(ユーザに煩わしさを感じさせない)
ファイル転送
大きいデータを転送する場合は広帯域であることが望ましい。
遅延が大きく不安定でも、ある程度は許容される。
以上のような各トラフィックの特性や要件により、同一インフラ上に混在させる場合は、QoSを使って調整する必要がある。
QoSは基本的にインタフェースのOutputキューに対して適用される。
ユーザにとっては、各接続ノード全ての全開出力トラフィックに耐えられるネットワークが理想だが、ネットワーク設計の視点で言えば、それは経済的ではない。
なので設計者はそのネットワークの平均時およびピーク時のトラフィック量と費用との間でバランスを取ることが重要。
そのためにルータなどのネットワーク機器はバッファやキューイング機能を採用して、平均を超える一時的なバーストトラフィックに対処する。
バースト=一時的にトラフィック量が急激に増加すること。
輻輳
簡単に言うと道路が渋滞している状態と同じ。
ネットワークでは一般的に高速リンクから低速リンクへトラフィックを送る時(2斜線から1斜線になるような時)に発生しやすい。
ネットワークが輻輳状態になると、ルータはトラフィックをインタフェースから渋滞している低速リンクへ送り出せないので、
トラフィックをバッファし、transmitキューで待機させます。
低速リンクがすいてくると、transmitキューでためていたトラフィックをインタフェースから送り出します。
このトラフィックをインタフェースのキューに待機させたり、送り出したりする作業をキューイングと呼びます。
もっとも一般的なキューイング方式でFIFO(First-In,First-Out)があります。実装が容易でキューに入っってきたパケット順にキューから出すというシンプルなものです。
先に挙げた各種トラフィックの特性や要件に対応するために2つのQoS戦略があり、全てのキューイング方式は以下のどちらかに分類されます。
輻輳管理(Congestion Management):ある程度パケットがキューで待機することを想定し、重要なパケットを優先してキューから送出するようにすることで、キューイングの影響を最小限に抑える。
プラットフォーム依存(上位プラットフォームでのみ使用可)
・DWFQ(Distributed Weighted Fiar Queuing):Cisco7500シリーズのVIPカードで実装
・MDRR(Modified Deficit Round Robin):Cisco12000GSRのラインカード上で実装
プラットフォーム非依存(ほとんどのプラットフォームで使用可)
・プライオリティキューイング
・カスタムキューイング
・WFQ(Weighted Fair Queuing)
-フローベースWFQ(Flow-Based WFQ)
-クラスベースWFQ(Class-Based WFQ)
WFQ(Weighted Fair Queuing) |
CQ(カスタムキューイング) |
PQ(プライオリティキューイング) |
|
キューの数 | 設定可能なキュー数 (デフォルト256ユーザキュー) |
16ユーザキュー | 4ユーザキュー |
サービスの種類 | 重みに基づいてトラフィックの全フローに公平 | クラスの異なるサービスに対し比例的な帯域割り当て。ラウンドロビン式。 ある程度の帯域が全トラフィックに保証される |
絶対プライオリティキューが優先。 低プライオリティのトラフィックが送信できないこともある。 |
設定 | 不要(アクセスリストを事前に定義する必要がない) | 必要 | 必要 |
輻輳回避(Congestion Avoidance):輻輳時に送信元に対して、伝送速度を落とすよう指示することで、パケットがキューで待機することのないようにする。
・WRED
ネットワーク上の各ルータは、そのポジションによって適切なQoS技術がある。
一般的には以下のように分類される。
エッジルータ
・パケット分類
・アドミッション制御
・設定管理
バックボーン(コア)ルータ
・輻輳管理
・輻輳回避
サービスモデル(サービスレベル)
トラフィックの種類により、適用されるサービスモデルが異なる。
・ベストエフォートサービス:信頼性・遅延限界・スループットについて保証することなく、
可能な場合にデータを送信する。
FIFOが代表的な例。
・統合化サービス:複数のQoS要件に対応できる。アプリケーションはデータ送信前に、
明示的なシグナリングによって特定の種類のサービスをネットワークから要求する。
シグナリングはRSVPを使用する。
Guranteed Rate Service -
アプリケーションが大域幅を予約するのに使用。WFQとRSVPにより提供。
Controlled Load Service -
アプリケーションが輻輳発生時にも低遅延と高スループットを実現するのに使用。WREDとRSVPにより提供。
・差別化サービス:さまざまなQoS要件に対応できる。明示的なシグナリングは行わない。
その代わりにアプリケーションのパケットの中に指定されたIP
Precedenceビットや
送信元・宛先アドレスに基づいて特定の種類のサービスを提供。
CAR/WFQ/WREDなどを使用。
IP Precedenceを使用してトラフィックの処理方法を決定するQoS方式は
・DWRED
・WFQ
・CAR
WFQの設定と表示
interface e0/1
fair-queue 64 512 18 <-64個のメッセージ、512個のダイナミックキュー、18個のRSVPキューの輻輳廃棄しきい値を持つフェアーキューを要求する
show interface e0/1 fair-queue <- インタフェースのWFQ/DWFQ情報表示
show queuing fair <- WFQの設定状況
CQの設定と表示(全体的に意味不明。実際の適用例っぽくない)
interface e0/1
custom-queue-list 3 <- リスト#は1〜16
!
queue-list 3 queue 10 limit 40 <- キュー10の長さ(デフォルト20)を40(キューに格納しておけるパケット数)に増やす
queue-list 3 queue 10 byte-count 1400 <- キュー10に格納できるパケットの最大サイズを設定
#list-numberとqueue-numberが違うこともありえる。
!
queue-list 3 protocol ip 10 list 1 <- アクセスリスト1で指定したトラフィックをキュー10に割り当て
queue-list 4 protocol ip 2 tcp 23 <- telentトラフィックをキュー10に割り当て
queue-list 4 protocol ip 3 udp 53 <- DNSトラフィックをキュー10に割り当て
!
queue-list 4 interface serial 0 10 <- s0に入るパケットのキューイングプライオリティをキューリスト4で設定。設定されるキュー番号は10
queue-list 10 default 2 <-
他の割り当てルールに一致しないパケット用のデフォルトきゅーを設定。キュー番号2をリスト10のデフォルトキューとして設定。
show queuing custom <-
カスタムキューイングリストの状態表示
show interface e0/1 <-
カスタム出力キューの状態表示
PQの設定と表示
参照:インサイド Cisco IOS アーキテクチャ(ソフトバンク)/Cisco IOS 12.0 QoS(Quality of Service)設定ガイド(ソフトバンク)