Weighted Fair Queuing (WFQ)

スポンサーリンク
スポンサーリンク

NOTE

FQ (Fair Queueing)

  • フローごとに自動でキューが作成される
  • 基本的にはパケット長の短いものから送出される
  • おおよそ均等なレートで送出(ラウンドロビンで回している訳ではない)
  • 自動なので管理者による定義ができない

WFQ (Weighted Fair Queueing)

  • 基本的な考えはFQと同じ
  • 2M以下の低速IFではデフォルト設定
  • 送出の順番を決めるシーケンス番号を割り当てる時の計算に重み付けをしている。優先度の高いものはシーケンス番号が小さくなるような式になっている。

Active = 前のパケットのSN + (自分のパケット長 × 重み)
非Active = ラウンド番号 + (自分のパケット長 × 重み)
重み = 4096 ÷ (1+ IP Precedence)

FQ (Fair Queueing)

  • 非Activeフロー:キュー内に他にパケットがたまっていない状態
  • Activeフロー:キュー内に他にパケットがたまっている状態
  • ラウンド番号:キューに付与される番号
  • 非Activeのシーケンス番号:ラウンド番号+パケット長
  • Activeのシーケンス番号:前のパケットのシーケンス番号+パケット長
  • ラウンド番号:初期は0、それ以降は直前に送出されたパケットのシーケンス番号

1) 初期状態ではRoundは0

2) シーケンス(Seq)順なのでまずは400が出る。ラウンドは直前に送出されたパケットのSeqなので400。

3) 次にSeqが小さい600が出る。同様にラウンドが600になる。

4) キューAに300Byteのパケット流入。他にパケットがいる(Active)ので前のパケットのSeq+自身のパケット長で1200がSeqになる。

5) キューCに400Byteのパケット流入。他にパケットはいない(非Active)のでラウンド番号+自身のパケット長で1000になる。

hold-queue limit
Congestive Discard Threshold(CDT)
パケットが到着すると、3つの判定が行われる
1) 各キュー全体で定義されているhold-queue limitを超えるか?
Yes → 破棄
No → 2)
2) CDTは各キューごとにある。CDTを超えるか?
Yes → 破棄
No → 3)
3) 他のキューに到着パケットより大きなSNを持つパケットがあるか?
Yes → その大きなSNを持つパケットが破棄される
No → 到着したパケットが破棄される
※ WFQではよりSNが小さい=ショートパケットor優先度が高いパケットが救済されやすくなっている

コメント