|
QoS ( Quality of Service ) とは
QoS とは、ある通信において特定のトラフィックの優先度をあげたり、一定の通信速度を保つ技術です。
数年前くらいまでは帯域制御の専用装置などで
QoS を実装させることが多かったのですが、最近では、
ルータやスイッチの機能が格段にアップしたこともあり、これらで
QoS を実装させることが多くなりました。
今回は、Ciscoルータやスイッチで
QoS を実装させる方法や技術について説明していきたいと思います。
QoS のアーキテクチャ
QoSのアーキテクチャには大きく分類して[
DiffServ ] [ IntServ ] [ ベストエフォート
]の3つがあります。
DiffServ ( Differentiated Services )
ネットワークを経由するデバイスごとにトラフィックの輻輳制御、輻輳回避、優先制御、帯域制御を
定義することができます。当サイトでは主にこのアーキテクチャの
QoS について解説していきます。
QoSの実装といえば一般的にこのアーキテクチャを指しており、最も採用されているものと言えます。
IntServ ( Integrated Services )
RSVP ( Resource Reservation Protocol
) というシグナリングプロトコルを使用することによって
ネットワーク上に流れるアプリケーションのフローごとに特定の保証サービスを提供する技術です。
アプリケーションフローは膨大なものであり、それを各ルータが保持するわけですから、ルータに
大きな負荷がかかってしまいます。従って、中
・ 大規模ネットワークには適していないと言えます。
尚、RSVPによるQoSを実現するためには全ての機器がRSVPをサポートしている必要があります。
ベストエフォート
DiffServ や IntServ のアーキテクチャによるQoSが実装されていなかった場合、パケットの内容や
サイズに関係なく先着順にキューイングして処理するベストエフォート型
( = FIFO ) が提供されます。
QoS で保証したいトラフィックとは
Ethereal などのキャプチャーソフトでトラフィックを確認すれば分かると思いますが、ネットワーク上には
HTTP, FTP, POP3, SMTP, Telnet,
SNA, ICMP,
SNMP, VOICE等の様々なトラフィックが流れています。
これらのトラフィックで優先度をあげるべきものというのは決まっていません。これらのトラフィックにその
企業で独自に使っているアプリケーションもあり、どのトラフィックの優先度をあげたり一定の通信速度を
保ちたいというのはユーザからヒアリングする必要があります。しかし、優先度や帯域幅の保証といえば
遅延に敏感な VOICE などのトラフィックがそれに該当します。これら遅延に敏感であるトラフィックです。
※ 保証したいトラフィック例 :ミッションクリティカルなアプリのトラフィック、遅延に敏感なアプリのトラフィック
※ 優先度は、Voice → Video/Mission-critical Data → 通常データの順番で考えるのが一般的。音声パケットは
小さいのですが、パケットロス1%以内、遅延150msec以内、ジッター30msec以内に収める必要があります。videoも同様。
QoS の実装
QoSの実装を考える場合、キューイングをどうするのかを考えるのがとても重要ですが、それだけではなく
パケットのマーキング ( CoS, Precedence,
DSCP ) 、輻輳制御 ( FIFO、PQ、CQ, FQ, WFQ,
CBWFQ, LLQ
IP RTP Priority )、帯域制御 ( shaping,
Policing )、輻輳回避 ( WRED ) なども考慮もする必要があります。
そして、インターフェースから送出する最後のアクションとしてキューイング/スケジューリングがありますが、
Ciscoルータではインターフェースからパケットを送出する際に、例えば、LLQであれば優先キュー(
priority )
を作成してそのキューで処理されるものを最優先処理する出力アクションを行いますが、Catalystスイッチ
ではCoS値やDSCP値に基づいて4つのキューのいずれかに格納させてキューイングを行い、各キューから
の出力アクションはWRR ( Weighted Round
Robin ) や SRR ( Shaped Round Robin ) で処理していきます。
キューイングとは
キューイングとは、通信リンクが輻輳している時に出力パケットを保持するためにルータが使用する機能。
下図において、PC A が PC B に100Kbyteのデータを送信するとLAN/WAN側ともに輻輳が発生しないので
キューイングされることなく [ Input Queue ] や [ Output Queue ] にパケットが保存されることはありません。
下図において、PC A のセグメントにいる数十の端末から数十Mbyteのデータを送信した場合は、WAN側で
輻輳が発生してしまい、キューイングが実施されることになり、WAN
側の Serial 0/0 のインターフェースの
「 Output Queue 」 でパケットが一時的に保存されることになります。
つまり、ルータが出力リンクSerial 0/0で送信できるよりも、複数の端末から高速にパケットを受信した場合
それを処理する間、Serial 0/0に割り当てられたキュー
「output queue」 にパケットを一時的に保存します。
輻輳が解消するとキュー 「 output queue
」 からパケットを取り出して 「 Serial 0/0
」 から送出し始めます。

ところで、ルータ A の Fa 0/0 で input
queue、Serial 0/0 で output queue の queue
を上図に表示してますが
当然ながら、Fa 0/0 のインターフェースには、input
queue、output queue の2つのキューがあり、Serial
0/0 も
然りです。PC A から PC B にパケットを送出しているので、上図では使用されるキューを表示しているのです。
例えば、下図のように PC B から
PC A にパケットが送られる場合、ルータAで使用される
Queue は下図です。
この場合は、キューイングするならルータ
B でのキューイングの設定が効果を発するということが一目瞭然です。

デフォルトのキューイング
QoSの設定なんて見たことがないと言っても、デフォルトで各インターフェースはキューイングの実装があり
例えば、show interface でも確認できます。LAN
インターフェースでは FIFO ( Fisrt Input First
Output )
WAN インターフェースでは WFQ ( Weighted
Fair Queuing ) のキューイングがデフォルトで入っています。
もう少し正確にいうと2.048Mbps以下の速度で動作するインターフェースがデフォルトで
WFQ が有効です。
それに対し、2.048Mbps以上の速度で動作するインターフェースはデフォルトでFIFOが有効になっています。
キューイングが役立つ時とは
あるネットワークでトラフィックが混雑している時です。つまり、輻輳が発生していないと効果を発しません。
例えば、網に広域イーサを採用してLAN100Mpbs、WAN100Mbps
なら QoS 実装の必要性はないでしょう。
LAN 100Mbps、WAN 128Kbps でも、WANで輻輳おきていなければ
QoS が発動されることはありません。
Resource : QoS 書籍一覧 Cisco QoS書籍一覧 Cisco QoS Command Guide 12.4 Cisco QoS Configuration Guide 12.4
|