QoS(8)帯域制御

優先制御の欠点を補完するため帯域制御が登場した。帯域制御は、帯域に敏感な音声・映像やインタラクティブな通信に必要な帯域を確保するとともに、バーストを抑制することで限られた帯域を有効に使うためのツールだ。

スイッチやルータでの帯域制御には、ポリシング(Policing)とシェーピング(Shaping)がある。ポリシング(Policing)は制限帯域を超えるとパケットを廃棄し、シェーピング(Shaping)はパケットをキューに蓄積することで帯域を抑え平準化する。これらの制御で使われる代表的なモデルが「トークンバケット(Token Bucket)」と「リーキーバケット(Leaky Bucket)」だ。この2つはよく似ているため(名前も!)混同されることが多い(図1)。優先制御の RR/WRR で各キューの伝送量を制御するために「トークンバケット」を使用することがある。

図1 帯域制御体系
図1 帯域制御体系

ポリシングとシェーピング

図2 はポリシング動作のイメージだ。ポリシングは制限帯域を超えるとパケットを廃棄し、トラフィック量は鋸歯状に変化する。TCP を使用するファイル転送やWeb アクセスへの適用が本来の狙いだ。パケット廃棄を契機に TCP のスロースタートが働き、TCP Window サイズが縮小することでバーストを抑制すると共にトラフィック量を減らすことが目的だ。UDP には Window 制御や再送機能がなく、単なる廃棄になる。パケット廃棄に敏感で UDP 通信を行う音声や映像に使用すべきではない。

図2 ポリシング動作イメージ
図2 ポリシング動作イメージ

図3 は、シェーピング動作のイメージだ。シェーピングは制限帯域を超えたパケットを遅らせることで帯域を制限すると同時にパケット廃棄を避けるのが狙いだ。トラフィック量はフラットになる。UDP を使用する映像配信で使用することが多い。支障のない範囲でパケットを遅延させ、パケット廃棄を回避すると共に映像特有のバーストを抑えるのが狙いだ。

図3 シェーピング動作イメージ
図3 シェーピング動作イメージ

「シェーピングによる遅延が音声や映像の再生に影響する」という意見もあるが、シェーピングによるパケット遅延時間はマイクロ秒オーダーに過ぎず大きな影響はない。表1 の様に、映像も音声も伝送路ではミリ秒オーダーの遅延を許容している。マイクロ秒オーダーの遅延が影響するとは思えない。

パケットの種類帯域片方向遅延ジッタ損失
音声30~320kbps150ミリ秒未満30ミリ秒未満1%未満
映像384K~20Mbps200~400ミリ秒30~50ミリ秒0.1~1%未満
表1 アプリケーション特性

ポリシングで TCP パケットを廃棄すると、TCP のトラフィック量が減少しバーストが抑えられる。これは、TCP の「Window 制御(Sliding Window)」と「スロースタート」機能が関係している。

図4 (青破線)の様に、TCP の「Window 制御」は、送信が成功するたびにWindow サイズを順次拡大し、上限値を維持する。エラーが発生すると、「スロースタート」が働き、Window サイズを小さくし、通信が成功する度に再び順次増加させる。

ポリシングによる廃棄が上限値の 1/2 で発生した場合、Window サイズは赤線の様に変化する。この例では、バースト量は上限値の 1/2 に、送信データ量は約 1/3 になる。しかし、実際の動作は TCP タイムアウトが発生するため、性能は極端に悪くなる。TCP のタイムアウト検出時間は OS により異なるが、初回のタイムアウト時間は 1 ~ 3 秒程度だ。連続してタイムアウトが発生すると、更にタイムアウト検出時間は長くなる。Window 制御やスロースタートによる速度低下より、タイムアウトの影響は遥かに大きい。

図4 のモデルは TCP の初期モデル(TCP Tahoe版:1988年)だ。TCP のWindow 制御には多数のモデルがあり、Window サイズの増加曲線やエラー時のWindow 縮小幅が異なる。

図4 TCP ウィンドウ制御とスロースタート
図4 TCP Window 制御とスロースタート

TCP パケットのポリシングの影響は前節で説明したとおりだが、TCP パケットのポリシングは再送を頻発させ危険だ。一般的には、想定外のトラフィック受信や不正アタックの影響を軽減するためにポリシングを行うことが多い。図5 は、送信元 2 が故障や誤設定等で、想定した帯域を超えるストリームが発生したケースだ。過大トラフィックが正常なトラフィックを妨害している。入力側でポリシングを行うことで、正常なトラフィックを守ることができる。状況によっては、帯域を抑制するポリシングではなく、ストリームを遮断するブロッキングを行うこともある。Ethernet TSN では、 IEEE802.1Qci/ Per-Stream Filtering and Policing でポリシングとブロッキングを規定している。

図5 ポリシング/ブロッキング適用例
図5 ポリシング/ブロッキング適用例

ポリシングとシェーピングの違いは表2 を参照いただきたい。

ポリシングシェーピング
基本動作設定帯域を超えるパケットを廃棄設定帯域を超えるパケットを蓄積
蓄積したパケットは遅延
トラフィック鋸歯状フラット
処理場所受信部/送信部送信部
バースト対応バーストを伝搬し、平滑化しない設定帯域に平滑化する
長所TCP のバースト量/データ量を削減 遅延が発生しない設定帯域超過パケットの廃棄がない TCP、UDP いずれにも適用できる
短所TCP の送信レートが極端に悪化再送によりトラフィックが増大する
UDP には使えない
蓄積したパケットの遅延が増大する
キューを構成するメモリーが必要
表2 ポリシング・シェーピング比較

QoS

この記事を書いた人

岩崎 有平

早稲田大学 理工学部 電子通信学科にて通信工学を専攻。
安立電気(現 アンリツ)に入社後、コンピュータ周辺機器の開発を経てネットワーク機器の開発やプロモーションに従事する。
おもにEthernetを利用したリアルタイム監視映像配信サービスの実現や、重要データの優先配信、映像ストリームの安定配信に向けた機器の開発行い、Video On Demandや金融機関のネットワークシステム安定化に注力した。
現在は、Ethernetにおけるリアルタイム機能の強化・開発と普及に向けて、Ethernet TSNの普及活動を行っている。