Weighted Fair Queuing (WFQ)

REFERENCE

Configuring Weighted Fair Queueing

MEMO

FQ (Fair Queueing)

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

WFQ (Weighted Fair Queueing)

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

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


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優先度が高いパケットが救済されやすくなっている


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になる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です