QoS・優先制御の仕組・PQ

優先制御の基本的な仕組みは、優先度の高いパケットから先に出力するという単純な仕組みです。

 入力インターフェイスに到着したパケットは、優先度に応じたキューに振り分けられ、各々のキューから優先度の高いものから順に出力してゆきます。

このような単純な仕組みで優先制御を行い配送を行う方式にPQがあります。

PQ(Priority Queuing)

PQは、優先制御の方式では最も単純な方式で、多くのルータが標準として備えています。

 PQで一般的に用意される待ちキューは、「最優先」、「優先」「その他」の3つで、このキューにパケットを振り分けてゆきます。

 パケットを出力インターフェイスから送り出すときは、優先度の高いキューから探してゆき、優先度の高いパケットから順に送り出すようになっています。そうすることで、優先度の高いパケットが確実に、先に送り出されるようになります。

しかし、欠点があります。

優先度の低いパケットが、なかなか送り出されないという問題です。

優先度の高いパケットがキューからなくならない限り、優先度の低いパケットが送り出されることはありません。

 優先度の低いパケットが長時間、送り出されないと、たとえTCPの通信であってもコネクションが切断されてしまいます。

少量でも優先度の低いパケットが送り出されれば、コネクションが切断する可能性は低くなります。

 そこで、優先度の低いパケット一定の割合で送り出されるように工夫した優先制御機能を備えた重み付けキュー(CQ)と呼ばれる技術が開発されています。

QoS・優先制御の仕組・CQ

 PQでは、優先度の低いパケットが長時間、送り出されないことがあり、通信のコネクションが切断されることがあります。優先度の低いパケット一定の割合で送り出されるように工夫した優先制御機能を備えたCQと呼ばれる技術が開発されています。

CQ(Custom Queing)とは

 CQでは、キューの優先度を「重み」に置き換えて処理してゆきます。具体的には、以下のようにパケットを処理してゆきます。

 CQにおいても、PQと同様に、入力インターフェイスに到着したパケットを優先度に応じたキューに振り分けてゆきます。この時、整理番号(SN:シーケンスナンバー)を計算して、パケットに整理番号を付けておきます。

整理番号の計算方法は、下の式の通りです。

【整理番号の計算方法】

(パケットの長さ)÷(優先度)+(同じキューで待っている最終パケットの整理番号)

※待っているパケットがない場合は、処理中のパケットの整理番号

 例えば、現在処理中のパケットの整理番号が100で、1,500バイトのパケットが優先度50のキューに到着したとき、1,500を50で割った30に100を加えた130が整理番号になります。

 その後で、さらに、1,300バイトのパケットが優先度50のキューに到着したときは、同じキューで待っている最後のパケット整理番号である130に26を加えた156が整理番号となります。

 出力インターフェイスに送り出すときには、各キューから整理番号の小さな値から順にパケットを取り出してゆきます。そうすることで、優先度の低いパケットも少しずつ送り出されるようになります。

 しかし、この処理は、複雑でルータへの負担が大きくなることから、各ベンダーのルータでは、もっと簡略化した処理で実装している製品もあります。

 例えば、各キューに上限値を設けて、その値に達したら、そのキュー内にあるパケットを全て送り出す方式や、パケットの長さを考慮せず、単純に優先度の重みに応じて、送り出すパケット量を調整する方式があります。

 これらの方式の場合、設定値を試行錯誤しながら、調整した値を設定してゆかないと、期待したようなQoSの効果を得ることができない場合があります。

QoS・優先制御の仕組・PQ+WFQ

 ここまで、PQ、CQを紹介してきましたが、もっと複雑な処理でQoSを実現する方式もあります。その処理方式とは、同じ優先度の待ちキューをさらに通信単位で分割する方式と複数の優先制御方式を組み合わせる方式です。

高性能ルータには、このような複雑なQoSを実装している製品があります。

PQ+WFQ (Weighted Fair Queuing)

 優先度別にキューを用意するだけの方式にも限界があります。それは、同じキュー内にで、早いもの勝ちとなってしまい、特定の端末や特定の通信だけが優先されることになってしまうからです。

 そこで、同じ優先度の中で平等にパケットを流すように考えられたのがWFQです。WFQでは、IPアドレスやポート番号を基にパケットを識別して、各々の通信ごとに専用のキューを作成ます。また、同じ端末でも宛先やアプリケーションが異なれば専用のキューが作成されます。

このようにして、特定の端末や特定の通信で独占され優先される状況を回避します。

複数の優先制御方式を組み合わせる方式

高価な高性能なルータになると複数の優先制御の良い点を組み合わせてQoSを実装している製品もあります。

 例えば、重み付けを定義できるCQと通信ごとに平等にパケットを送りだすことができるWFQを組み合わせたCBWFQなどがあります。他にも複数の優先制御を組み合わせた技術やベンダーごとに様々なQoS技術があります。

ここまで、優先制御について説明してきましたが、これでQoS対応が万全であるとは言えません。

 いくら優先制御を行ってパケットを出口インターフェイスへの出力を制御してもキューが一杯になってしまえば、パケットは、キューの前の段階で溢れ続けてしまうだけです。

そこで、帯域制御という仕組みが重要になってきます。