QoS・帯域制御

帯域制御とは、パケットの種類に応じて、それぞれに帯域を割り当てたり、制限を行う技術のことを指します。

 優先制御で説明したCQを使えば、パケットの重みに応じて帯域を割り当てることができます。例えば、出口インターフェイスの帯域幅が、100Mbpsの場合、重みを70:20:10を割り当てた場合、それぞれに70Mbps、20Mbps、10Mbpsを割り当てることができます。

ただし、上図のように入力インターフェイスと出力インターフェイスの帯域幅が、同じ100Mbpsの場合です。

 入力インターフェイスと出力インターフェイスの帯域幅が同じ帯域幅の場合、問題はありませんが、下図のように入力インターフェイスが100Mbpsで出口インターフェイスが10Mbpsの場合、問題が生じてしまいます。

出口インターフェイスの帯域幅が狭いので、出口で大渋滞を引き起こしてしまいます。

 この現象を回避するために、待ちキューごとにパケットが流れる量を制御する機能があります。この機能のことをポリシングといいます。

キューに溜まったパケットを送りだす量を制御して、設定した上限値より多い帯域幅を消費しないようにします。

 しかし、結局は、このポリシング機能で対応しても、出口インターフェイスの帯域幅が狭いので、すぐにキューが一杯になり、溢れだしてしまいます。

この問題点は、待ちキューにパケットが溜まる一方になってしまう点にあります。

 入力インターフェイスの帯域幅より出力インターフェイスの帯域幅が小さい場合、ポリシング機能で出口の帯域幅を制限しても、待ちキューにパケットが溜まる一方となります。

ルータにパケットを蓄積することができなくなるとパケットが破棄されることとなります。

問題は、これだけではありません。

 TCPを使った通信では、宛先に届けられなかったパケットは、再送制御が行われ、再びパケットがルータに押し寄せることとなります。

 一方、UDPを使った通信では、途中でパケットが破棄されようが、お構いなしに、一方的にパケットが送られてくるため、ルータにパケットが押し寄せてくることとなります。

そのような状況に陥ることで、いつまで経ってもパケットがルータに溜まる一方となり、悪循環を起こしてしまいます。

RED(Random Early Detection)

 そのような状況に陥らないように、待ちキューにパケットがある程度、溜まってきたらランダムにパケットを捨てるRED(Random Early Detection)という技術があります。

 適当にパケットが捨てられることで、TCPの通信では、通信相手の端末がパケットを送信する量を減らすように送信元の端末に通知して、TCPコネクションに使われる帯域幅が調整されます。

 このTCPの帯域幅の調整のことをフロー制御といいます。具体的には、TCPヘッダにあるウィンドウサイズの値を調整しながら通信を行うことで、データが流れる量を制御しています。

 TCPの通信は、このようなフロー制御で、混雑が緩和されてゆきますが、UDPの場合は、フロー制御のようなメカニズムはありません。

UDPの通信は、フロー制御がないため、相変わらず、パケットがルータに押し寄せてくることとなります。

WRED(Weighted Random Early Detection)

 優先制御では、パケットの優先度に応じて、パケットを優先度に応じた待ちキューに振り分ける技術がありました。帯域制限においても、パケットの優先度に応じて、待ちキューの各々に対して、破棄するパケットの数を制御できる技術があります。

この技術のことをWRED(Weighted Random Early Detection)といいます。

 待ちキューでパケットが一杯にならないように、ランダムにパケットを破棄する技術にREDがありましたが、WREDの場合、パケットの優先度を考慮してパケットを破棄することができます。この点が、REDよりもWREDが優れている点です。

 WREDでは、待ちキューにパケットが溜まってきても優先度の高い待ちキューからは、なるべく、パケットを破棄しないで、優先度の低い待ちキューから破棄されるように、しきい値を低く設定することで、優先的にパケットを破棄させることができます。

 そして、優先度の低い待ちキューからの破棄だけで、対処できなくなると優先度の高い待ちキューから破棄してゆきます。

 しかし、この方式でパケットを破棄したとしても、TCPの通信では、通信相手の端末がパケットを送信する量を減らすように送信元の端末に通知して帯域幅が調整されますが、UDPの場合は、フロー制御がないため、相変わらず、パケットがルータに押し寄せてくることとなります。

 このような状況に陥らないように、ルータによっては、TCPやUDPの通信に応じて、さらに細かく破棄するパケットを制御することができるルータがあります。

大量に送り送られてくるUDPパケットを多めに破棄することで、UDPの通信が有利になる状況を回避することができます。

ここまで、帯域制御について説明したきましたが、問題がないわけではありません。

 TCPの通信は、フロー制御が機能して、輻輳時には、ウィンドウ・サイズが小さくなりルータに送られるパケット量は少なくなりますが、輻輳が緩んでくると、再びウィンドウ・サイズが大きくなり、ルータにパケットが押し寄せることとなります。

この問題を回避する装置として帯域制御装置という機器があります。

 帯域制御装置は、ルータを通過するTCPパケットの中身であるウィンドウ・サイズの値を書き換えることで、帯域幅を調整しています。