QoS

VoIP等遅延に大きく影響される通信は極力優先して送信する必要があります。本項ではルーターやスイッチが転送する際に優先付けしたり、帯域を制御、輻輳を回避したりする仕組みであるQoSについて説明します。

QoSの概要

 大量のデータ転送を行うサーバーや複数のパソコンが接続されたネットワークにVoIPを利用した電話がある場合、輻輳により会話が困難になる可能性があります。

輻輳状態

 輻輳が発生するとVoIPのフレーム遅延が大きくなったり、最悪の場合は破棄されるためです。

 QoSの機能を有効にするとこのような事態を防げます。

 通常は受信した順番にフレームを転送しますが、QoSではフレームの中身を見て決められた順番にフレームを転送します。

QoSの仕組み

 このため、後に受信したフレームでも優先度が高い場合は先に転送されるようになります。

 又、通信の帯域を保障、制限したり、輻輳を事前に回避するといった仕組みもあります。

 ルーターやスイッチには出力する際のキューがあります。輻輳が発生してくるとフレームをキューに保存し、決められた順番に送信するようになっています。

キューイング

 つまり異なるキューに溜める事で順番を入れ替えて送信出来るようになっています。これをキューイングと言います。

 出力キューだけでなく入力時にもキューイングする装置もあります。

 優先制御はフレームの順番を決められた設定に従って入れ替える仕組みです。

 優先制御の主な方法はStrictとWRR、若しくはその発展形等があります。以下にStrictとWRRについて説明します。

・Strict
 Strictは絶対優先です。優先されるキューでは常に他のキューより先に送信されます。
Strictの仕組み
 優先されるキューにフレームがある限り他のフレームは送信されませんが、優先されるフレームは遅延が最小限に抑えられます。大量のデータ転送を優先すると他の通信が出来なくなります。
 このため、VoIP等のようにデータ量が少なく、遅延を最小限に抑える必要がある通信を優先する時に向いています。
・WRR
 WRRは重み付けをして送信するフレームの順番を決めます。例えば1:1であればそれぞれのキューから順番に送信します。WRRはWeighted Round Robinの略で日本語訳では重み付けラウンドロビンになります。
WRRの仕組み
 又、ftpとその他の通信で1:2に設定した場合、ftpのフレームを1つ転送した後、その他の通信を2つ転送する事を繰り返すため、ftpで大量データ転送した場合でも他の通信を圧迫する事が防げます。

 1つのキューを絶対優先とし、他のキューをWRRとする等、組み合わせて使う場合もあります。

 帯域制御は通信の帯域を保障、又は制限する仕組みです。

 帯域制御の主な方法にはWFQ、その発展形のCBWFQ、シェーピング等があります。以下にWFQ、CBWFQ、シェーピングについて説明します。

・WFQ
 WFQは1コネクション毎にキューを作成し、決められた重みづけに従って出力します。WFQはWeighted Fair Queueingの略で日本語訳では重み付け均等化キューイングになります。
WFQの仕組み
 低遅延を要求する通信を優先的に送信するよう自動で重み付けがされています。
 又、同じ重み付けの中ではそれぞれのキューに対して均等に帯域が割り当てられます。このため、1つの通信が帯域を占有して他の通信が出来なくなると言った事を防げます。
・CBWFQ
 WFQは自動で重み付けがされますが、設定により通信をクラス分けし、クラス毎に重み付けを変えられるようにしたのがCBWFQです。CBWFQはClass Based Weighted Fair Queueingの略で日本語訳ではクラスベース均等化キューイングになります。
CBWFQの仕組み
 Strictのように最優先するクラスを作る事も出来ます。
 VoIPの帯域を保証したりクラスを複数設定する事できめ細かい制御が可能です。又、均等化キューイングのクラスでは1つの通信がキューを占有して他の通信が出来なくなると言った事を防げます。
・シェーピング
 シェーピングは出力する際に帯域を制限する仕組みです。例えばキューからの出力の際、それぞれのキューで使える帯域を制限出来ます。
 又、回線を20Mbpsの帯域で契約していて100Base-TXで接続すると帯域オーバーになりますが、インターフェース全体で使える帯域をシェーピングする事で契約帯域内で通信を行う事が出来ます。

 輻輳によりキューから溢れる程フレームが溜まると、テールドロップと言って最後に受信したフレームを破棄します。この場合、通信元は通信量を抑えならがも再送を繰り返します。

 一度に多数のフレームを破棄し始めると、多数の通信元が再送を繰り返すため、更にフレームが増えて悪循環になります。

テールドロップの欠点

 輻輳回避はこのようにならないよう回避する仕組みです。輻輳回避の主な方法にはRED、その発展形のWRED等があります。以下にREDとWREDについて説明します。

・RED
 REDはキューが一杯になる前にランダムにフレームを破棄します。
 破棄されたフレームの通信元はTCPの再送技術により通信量を抑えながら再送しますが、この時点では一部の再送に限られる為、悪循環にならずにネットワーク全体の輻輳を回避出来る可能性があります。
REDの仕組み
・WRED
 REDではランダムにフレームを破棄しますが、定義に基づいて破棄するのがWREDです。
 例えばCBWFQで設定したクラスで重要な通信は破棄しないように定義出来ます。

 Qosではネットワークで一貫した制御を行わないと効果がありません。例えば、あるルーターでは優先していたが、他のルーターでは優先していなかった場合、そのパケットは結局遅延が大きくなってしまいます。

 これを防ぐ為に記しがあります。

 「パケット」ではヘッダーの構造を以下の図で示しました。

TOS

 この内、赤色で示したTos部分で上位3bitを使ったものをIP Precedenceと言います。IP Precedenceに優先度を設定して送信する事で途中のルーターでもその優先度に従って送信する事が可能です。

トラフィックの分類

 例えば、上の図で一番左のルーターは電話が接続されたインターフェースから受信したパケットはIP Precedenceを5に設定し、CBWFQで設定したクラスに従って帯域制御します。次のルーターはその優先度を見て同じ帯域制御を行うといった事が出来ます。

 IP Precedenceでは3bitで000〜111、つまり10進数に直すと0〜7まで8段階の優先度が付けられますが、これを64段階まで拡張したのがDSCPです。DSCPではTos部分の内、上位6bitを使います。

CoS

 もう1つの優先度の記しをCoSと言います。CoSは「VLAN」で示したVLANタグに含まれており3bit使います。つまり、8段階の優先度が付けられます。

CoS

 CoSはVLANタグを使えない場合は使えませんがレイヤー2における技術のため、CoSのみ対応したスイッチもあります。

 フレームやパケットにCoSやIP Precedence、DSCPを付与する事をマーキングと言います。

 スイッチがCoSをマーキングしてルーターにフレームが送られた時、ルーターがCoSをサポートしていなければCoSに基づいたQosが働きません。これに対応するためにはCoSをDSCPに変換します。

マッピングテーブルを利用した変換

 CoS、DSCP、IP Precedenceそれぞれ相互に変換するための対応表があり、これをマッピングテーブルと言います。

 通常、変換を行える装置ではデフォルトのマッピングテーブルが用意されており、有効にするだけで優先度の高いCoSを優先度の高いDSCPやIP Precedenceに変換出来ます。

 又、CoSからCoS、DSCPからDSCP等優先度自体を書き換える事もあります。

補足

 QoSの実現方法はメーカーや機種によって様々です。例えば、QoSに対応したスイッチにはハードウェアの仕様で決められた数個程度のキューを持っていて優先制御を行えるものがあります。

 QoSに対応したルーターには帯域制御まで行え、キューの数を変更出来るものがあります。又、通常は絶対優先するキューを設定出来ます。

QoS適用例

 優先制御はフレームを入れ替えるだけでフレームの長さは考慮されません。このため、非優先の通信で長いフレームが多いと優先の通信よりも大きな帯域を使う可能性があります。

 帯域制御では帯域まで考慮していますが、一般的に優先制御より負荷が高くなり、性能に影響が出る可能性があります。

 事業所間を接続する広域イーサネットやIP-VPNがCoS、IP Precedence、又はDSCPのみ対応している場合はそれに応じて変換を行ってマーキングする必要があります。

サイト関連1

応用編「VoIP
  • このエントリーをはてなブックマークに追加