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の効果を得ることができない場合があります。