◆ WRED(Weighted Random Early Detection)とは
WREDとは、輻輳を回避するために、インターフェースのキューにたまってきたパケットをランダムに
廃棄する機能のことです。パケットを少しずつドロップすることで、TCPを使用したアプリを実行する
ホストに対して輻輳を通知することができます。そして通知を受けたホストはTCPのWindowsサイズを
小さくするなどして再送を行います。結果、輻輳回避(キューが満杯になりにくい状態)を実現します。
◆ テールドロップとは
テールドロップとは、ルータでWREDを適用しない場合にデフォルトで適用されるパケットドロップの
メカニズムのことです。テールドロップではキューが満杯になると以降のキューに入らないパケットは
全て破棄されることになります。テールドロップが発生して、一斉にパケットのドロップが発生すると、
複数のTCPアプリが一斉にパケットを再送して回線帯域を有効に使えなくなったり、TCPの再送処理が
適正に行われず不安定な通信となることがあります。
このようにデフォルトのパケットドロップのメカニズムであるテールドロップでは、適正に輻輳回避を
行えないだけでなく、パケットの優先度を見て処理することもできません。一方、WREDではより適正
にパケットドロップの処理を行い、パケットの優先度を見た処理を実現できるので、輻輳回避のための
技術としてWREDを適切に実装することでより安定したネットワークシステムを実現できます。
◆ WREDがREDよりも優れている点
REDではパケットをランダムに廃棄する際に、パケットの優先度を見ることなくランダムに廃棄しますが、
WREDでは「Weighted」の名の通りパケットの優先度(IPプレシデンス値・DSCP値)をみて破棄します。
なお、WREDの輻輳回避技術が有効なトラフィックは当然ながら「TCPトラフィック」が対象となりますが
上位層のアプリ側の制御で再送制御を担っている場合もあることから、TCPトラフィック以外を輻輳回避の
技術としてWREDが有効であるかどうかは事前検証で必ず動作確認をしましょう。
◆ WREDのしきい値
WREDでは、最小しきい値(Minimum threshold)と最大しきい値(Maximum threshold)を定義します。
下図の通り、WREDを適用した場合は各しきい値において以下の動作をします。
・ 最小しきい値を超えることがなければ、パケットは通常に転送されます。
・ 最小しきい値を超えると、WREDではトラフィックの優先度に応じてパケットを廃棄し始めます。
・ 最大しきい値を超えると、WREDでは全てのパケットを廃棄します(テールドロップ状態の処理)
上図の通りWRED・REDにおけるパケットの取り扱い方には「no drop」「random drop」「tail drop」の
3つのステータスがあります。定義したしきい値を超えるかどうかで、パケットの取り扱い方が異なります。
|