QoS(輻輳回避技術)

目次

WRED(Weighted Random Early Detection)とは

WRED(Weighted Random Early Detection)は、ネットワーク機器で輻輳が発生する前に、出力インターフェースのキューにたまったパケットをランダムに廃棄する仕組みです。これにより、TCPアプリケーションに「回線が混雑し始めている」というシグナルを与え、送信側がウィンドウサイズを縮小したり再送制御を行ったりして、輻輳を回避することができます。結果として、キューがいっぱいになってから一気にドロップが発生する事態を避け、ネットワーク全体を安定させることができます。

テールドロップとは

WREDを使わない場合に標準で利用される仕組みがテールドロップです。テールドロップでは、キューが満杯になった瞬間に、それ以降到着するパケットをすべて廃棄します。これにより多くのTCPアプリケーションが同時に再送を行うため、回線帯域の有効利用ができなくなったり、通信全体が不安定になることがあります。

REDとWREDの違い

RED(Random Early Detection)は、キューがしきい値を超えた時にランダムにパケットを捨てる仕組みですが、パケットの優先度は考慮しません。一方、WREDは名前の通り「Weighted(重み付き)」の処理を行い、IP Precedence値やDSCP値といったパケットの優先度を見て判断します。これにより、重要度の低いトラフィックから優先的に廃棄し、音声や制御トラフィックのように品質が重視される通信を保護できます。

WREDのしきい値

WREDでは、最小しきい値(Minimum Threshold)と最大しきい値(Maximum Threshold)を設定します。

  • キューが最小しきい値以下なら、全パケットを通常転送
  • 最小しきい値を超えると、優先度に応じてランダムにパケットをドロップ
  • 最大しきい値を超えると、全パケットを廃棄(テールドロップと同じ状態)

この仕組みにより、ネットワークは「ドロップなし」「ランダムドロップ」「テールドロップ」という3段階で動作します。

試験対策:WREDはTCPトラフィックに有効であり、再送制御を利用して輻輳回避を行います。IP Precedence値やDSCP値を基準にして優先度の低いトラフィックから先に廃棄する点が重要です。REDとの違いは「優先度を考慮するかどうか」であり、ここは試験でもよく問われます。また、UDPのように再送制御を持たないトラフィックでは効果が限定的となるため、実運用では事前検証が欠かせません。

WREDのCiscoルータでの設定方法

WREDはインターフェースレベルでもクラスレベルでも有効化できますが、現在の運用ではクラス単位で適用する CBWRED(Class-Based WRED) が一般的です。

クラス内でWREDを有効にする場合は、非常にシンプルに次の1行を設定するだけです。

(config-pmap-c)# random-detect

このコマンドを入れると、デフォルトでは IP Precedence値に基づくWRED が有効になります。もし DSCP値ベース で動作させたい場合は次のように指定します。

(config-pmap-c)# random-detect dscp-based

しきい値の設定

WREDの動作は、パケットの優先度ごとに定義された「プロファイル」によって管理されます。

  • Minimum threshold(ランダムドロップを始める平均キューサイズ)
  • Maximum threshold(すべてのパケットを捨て始める平均キューサイズ)
  • Mark probability denominator(ドロップの確率を表す値。10なら10分の1の確率で破棄)

デフォルトの値があらかじめ用意されていますが、必要に応じて変更可能です。

(config-pmap-c)# random-detect [ precedence | dscp ] value min-threshold max-threshold mark-prob-denominator

基本的な設定例

以下はWREDをクラスに適用するシンプルな例です。

policy-map P-RULE1
 class C-VOICE
  priority percent 10
 class C-DATA2
  bandwidth percent 25
  random-detect
 class C-DATA3
  bandwidth percent 25
  random-detect
 class class-default
  fair-queue
  random-detect

この例では、音声は絶対優先処理され(LLQとして動作)、データトラフィックはWREDにより優先度を考慮しながらランダムドロップされます。

しきい値を調整した設定例

デフォルトのプロファイルをカスタマイズする場合は、以下のようにIP Precedence値ごとにしきい値を指定します。

class-map C-DATA1
 match ip precedence 1 2

class-map C-DATA2
 match ip precedence 3 4

policy-map P-RULE1
 class C-DATA1
  bandwidth percent 20
  random-detect
  random-detect precedence 1 22 36 10
  random-detect precedence 2 24 36 10
 class C-DATA2
  bandwidth percent 30
  random-detect
  random-detect precedence 3 26 40 10
  random-detect precedence 4 28 40 10
 class class-default
  fair-queue
  random-detect

この例では、Precedence値ごとに「最小しきい値」「最大しきい値」「ドロップ確率」を個別に設定しています。これにより、優先度の低いパケットがより早く捨てられるようになります。

試験対策:
random-detect → IP Precedenceベースがデフォルト
random-detect dscp-based → DSCP値ベースで動作
・しきい値を3つ設定できる(min / max / mark probability)
・TCPトラフィックで効果を発揮(再送制御があるため)
・UDPトラフィックでは効果が限定的

この仕組みを理解しておくと、WREDとテールドロップの違いIP Precedence・DSCPを使った優先度制御 に関する問題を解きやすくなります。

◆まとめスライド

目次