キューイング、スケジューリングのさまざまな方式

DiffServのキューイング、スケジューリングプロセスで、Ciscoルータでは次のようなさまざまな方法があります。

  • FIFO(First In First Out)
  • PQ(Priority Queuing)
  • WFQ(Weighted Fair Queuing)
  • CB-WFQ(Class Based Weighted Fair Queuing)
  • LLQ(Low Latency Queuing)

これらの各方法について、以下に簡単に解説します。

FIFOはその名前のとおり、パケットを到着した順番に送信するキューイング方式です。ここでいうキューイングは、DiffServのプロセスのキューイングとスケジューリングを含めた意味で使っています。
パケットを順番どおり転送するということは、QoSをかけているとは言えずベストエフォート型の転送になります。FIFOは帯域幅が2Mbpsよりも大きいインタフェースのデフォルトのキューイング方式です。

PQ(Priority Queuing)は、優先度がHigh、Medium、Normal、Lowの4つのキューを作成しパケットをキューイングします。優先度がHighのキューの中のパケットを優先してスケジューリングし、Highのキューの中のパケットがすべて転送されないと、他のキューのパケットは転送されません。
VoIPやメインフレームなどの遅延に敏感なパケットをHighのキューにキューイングして優先的に転送するように使うことが多いです。ただし、Highのキューに常にパケットが入っている状態だと、他のキューのパケットはずっと転送されないことに注意する必要があります。

WFQは、アプリケーションのフローごとにダイナミックにキューを作成しパケットをキューイングします。そして、各フローのIP Precedenceによってインタフェースの帯域幅を配分するようにスケジューリングします。WFQによって、サイズの大きいパケットのフローのため、サイズの小さいパケットのフローが転送されなくなってしまうといった問題を解決することができます。
WFQは帯域幅が2Mbps以下のインタフェースのデフォルトのキューイング方式です。

CB-WFQは、パケットを管理者が定めたクラスごとのキューへキューイングします。クラスは、管理者が自由に決められます。そして、各クラスのキューに対してインタフェースの帯域幅を明示的に割り当てられるように転送キューへスケジューリングします。
WFQはフローごとに自動的にキューが作成されるのですが、CB-WFQは管理者が明示的に決定したクラスごとに作成することができるので、より柔軟な制御が可能です。

LLQは、CB-WFQと同じく管理者が決定したクラスごとのキューを作成しパケットをキューイングします。クラスごとのキューのうち1つを絶対優先キューとして必ず優先的に転送されるように設定することができます。そして、絶対優先キューとその他のキューに対して帯域幅を保証できるようにスケジューリングされていきます。
LLQを使うと、VoIPパケットを優先して転送しながら、他のアプリケーションプロトコルのパケットの帯域を保証するといった柔軟性のある制御を行うことができます。