QoS
VoIPなど遅延に大きく影響される通信は、極力優先して送信する必要があります。
本項では、ルーターやLANスイッチが転送する際に優先付けしたり、帯域を制御、輻輳を回避したりする仕組みであるQoS(Quality of Service)について説明します。
QoSとは
大量のデータ転送を行うサーバーや複数のパソコンが接続されたネットワークにVoIPを利用した電話がある場合、輻輳により会話が困難になる可能性があります。
輻輳が発生するとVoIPのフレーム遅延が大きくなったり、最悪の場合は破棄されるためです。
QoSの機能を有効にすると、このような事態を防げます。
通常は受信した順番にフレームを転送しますが、QoSではフレームの中身を見て決められた順番にフレームを転送します。
このため、後に受信したフレームでも優先度が高い場合は先に転送されるようになります。
また、通信の帯域を保障、制限したり、輻輳を事前に回避するといった仕組みもあります。
キュー
ルーターやLANスイッチには、出力する際のキューがあります。輻輳が発生してくるとフレームをキューに保存し、決められた順番に送信するようになっています。
つまり、異なるキューに溜めることで順番を入れ替えて送信できるようになっています。これを、キューイングと言います。
出力キューだけでなく、入力時にもキューイングする装置もあります。
優先制御
優先制御は、フレームの順番を決められた設定に従って入れ替える仕組みです。
優先制御の主な方法はStrictとWRR(Weighted Round Robin)、もしくはその発展形などがあります。次からは、StrictとWRRについて説明します。
Strict
Strictは、絶対優先です。優先されるキューでは、常に他のキューより先に送信されます。
優先されるキューにフレームがある限り他のフレームは送信されませんが、優先されるフレームは遅延が最小限に抑えられます。大量のデータ転送を優先すると、他の通信ができなくなります。
このため、VoIPなどのようにデータ量が少なく、遅延を最小限に抑える必要がある通信を優先する時に向いています。
WRR
WRRは、重み付けをして送信するフレームの順番を決めます。例えば、1:1であればそれぞれのキューから順番に送信します。WRRは、日本語では重み付けラウンドロビンという意味になります。
また、FTPとその他の通信で1:2に設定した場合、FTPのフレームを1つ転送した後、その他の通信を2つ転送することを繰り返すため、FTPで大量データ転送した場合でも他の通信を圧迫することが防げます。
1つのキューを絶対優先とし、他のキューをWRRとするなど、組み合わせて使う場合もあります。
帯域制御
帯域制御は、通信の帯域を保障または制限する仕組みです。
帯域制御の主な方法にはWFQ(Weighted Fair Queueing)、その発展形のCBWFQ(Class-Based Weighted Fair Queuing)、シェーピングなどがあります。次からは、WFQ、CBWFQ、シェーピングについて説明します。
WFQ
WFQは1コネクションごとにキューを作成し、決められた重みづけに従って出力します。WFQは、日本語では重み付け均等化キューイングという意味になります。
低遅延を要求する通信を優先的に送信するよう、自動で重み付けがされています。
また、同じ重み付けの中ではそれぞれのキューに対して均等に帯域が割り当てられます。このため、1つの通信が帯域を占有して他の通信ができなくなると言ったことを防げます。
CBWFQ
WFQは自動で重み付けがされますが、設定により通信をクラス分けし、クラスごとに重み付けを変えられるようにしたのがCBWFQです。CBWFQは、日本語ではクラスベース均等化キューイングという意味になります。
Strictのように、最優先するクラスを作ることもできます。
VoIPの帯域を保証したり、クラスを複数設定することできめ細かい制御が可能です。また、均等化キューイングのクラスでは1つの通信がキューを占有して他の通信ができなくなると言ったことを防げます。
シェーピング
シェーピングは、出力する際に帯域を制限する仕組みです。例えばキューからの出力の際、それぞれのキューで使える帯域を制限できます。
また、回線を20Mbpsの帯域で契約していて100Base-TXで接続すると帯域オーバーになりますが、インターフェース全体で使える帯域をシェーピングすることで契約帯域内で通信を行うことができます。
輻輳回避
輻輳によりキューからあふれる程フレームが溜まると、テールドロップと言って最後に受信したフレームを破棄します。この場合、通信元は通信量を抑えならがも再送を繰り返します。
一度に多数のフレームを破棄し始めると、多数の通信元が再送を繰り返すため、さらにフレームが増えて悪循環になります。
輻輳回避は、このようにならないよう回避する仕組みです。輻輳回避の主な方法にはRED(Random Early Detection)、その発展形のWRED(Weighted Random Early Detection)などがあります。次からは、REDとWREDについて説明します。
RED
REDは、キューが一杯になる前にランダムにフレームを破棄します。
破棄されたフレームの通信元は、TCPの再送技術により通信量を抑えながら再送しますが、この時点では一部の再送に限られる為、悪循環にならずにネットワーク全体の輻輳を回避できる可能性があります。
WRED
REDはランダムにフレームを破棄しますが、定義に基づいて破棄するのがWREDです。
例えば、CBWFQで設定したクラスで重要な通信は破棄しないように定義できます。
ToSとIP Precedence
Qosは、ネットワークで一貫した制御を行わないと効果がありません。例えば、あるルーターでは優先していたが、他のルーターでは優先していなかった場合、そのパケットは結局遅延が大きくなってしまいます。
これを防ぐ為に、記しがあります。
IPパケットでは、ヘッダーの構造を以下の図で示しました。
この内、赤色で示したToS(Type of Service)部分で上位3bitを使ったものをIP Precedenceと言います。
それぞれの説明は、以下のとおりです。
項目 | ビット | 説明 |
---|---|---|
IP Precedence | 3 | 優先度を示す |
ToS | 4 | 低遅延や高信頼など要求するタイプを示す |
MBZ | 1 | 未使用で0 |
- MBZ:Must Be Zero
IP Precedenceに優先度を設定して送信することで、途中のルーターでもその優先度に従って送信することが可能です。
例えば、上の図で一番左のルーターは電話が接続されたインターフェースから受信したパケットはIP Precedenceを5に設定し、CBWFQで設定したクラスに従って帯域制御します。次のルーターは、その優先度を見て同じ帯域制御を行うといったことができます。
DSCP
IP Precedenceでは3bitで000〜111、つまり10進数に直すと0〜7まで8段階の優先度が付けられます。これを64段階まで拡張したのが、DSCP(Differentiated Services Code Point)です。
DSCPではTos部分(DSCPの場合はDSと言います)の内、上位6bitを使います。
それぞれの説明は、以下のとおりです。
項目 | ビット | 説明 |
---|---|---|
DSCP | 6 | 優先度や破棄率を示す |
ECN | 2 | 輻輳した時に通知するために利用(輻輳すると11で通知) |
- ECN:Explicit Congestion Notification
CoS
もう1つの優先度の記しを、CoS(Class of Service)と言います。CoSは、VLANで示したタグに含まれており3bit使います。つまり、8段階の優先度が付けられます。
それぞれの説明は、以下のとおりです。
項目 | ビット | 説明 |
---|---|---|
TPID | 16 | タグ付きであることを示す8100(16進数)が入る |
PCP | 3 | CoS |
CFI | 1 | イーサネットでは0 |
VID | 12 | VLAN ID |
- TPID:Tag Protocol Identifier
- PCP:Priority Code Point
- CFI:Canonical Format Indicator
- VID:VLAN Identifier
CoSは、VLANタグを使えない場合は使えませんが、レイヤー2における技術のためCoSのみ対応したLANスイッチもあります。
フレームやパケットにCoSやIP Precedence、DSCPを付与することをマーキングと言います。
マッピングテーブル
LANスイッチがCoSをマーキングしてルーターにフレームが送られた時、ルーターがCoSをサポートしていなければCoSに基づいたQoSが働きません。これに対応するためには、CoSをDSCPに変換します。
CoS、DSCP、IP Precedenceそれぞれ相互に変換するための対応表があり、これをマッピングテーブルと言います。
通常、変換を行える装置ではデフォルトのマッピングテーブルが用意されており、有効にするだけで優先度の高いCoSを優先度の高いDSCPやIP Precedenceに変換できます。
また、CoSからCoS、DSCPからDSCPなど優先度自体を書き換えることもあります。
補足
QoSの実現方法は、メーカーや機種によってさまざまです。例えば、QoSに対応したLANスイッチにはハードウェアの仕様で決められた数個程度のキューを持っていて、優先制御を行えるものがあります。
QoSに対応したルーターには帯域制御まで行え、キューの数を変更できるものがあります。また、通常は絶対優先するキューを設定できます。
優先制御は、フレームを入れ替えるだけでフレームの長さは考慮されません。このため、非優先の通信で長いフレームが多いと、優先の通信よりも大きな帯域を使う可能性があります。
帯域制御では帯域まで考慮していますが、一般的に優先制御より負荷が高くなり、性能に影響が出る可能性があります。
事業所間を接続する広域イーサネットやIP-VPNがCoS、IP Precedence、またはDSCPのみ対応している場合は、それに応じて変換を行ってマーキングする必要があります。
関連ページ
- 応用編「VoIP」
- VoIPの仕組みや、何故QoSが必要なのかを説明しています。
- 設定編「QoSの設定 - Catalyst」
- CatalystでのQoSの設定方法を説明しています。