ネットワーク機器トップ > 製品ラインナップ > FITELnet-Fシリーズ > FITELnet-F40FITELnet-F100・1000 > 技術情報 > 優先制御および帯域制御機能について

FITELnet-F100・F1000技術情報

優先制御および帯域制御機能について


2004年 7月 7日 初版


本資料は、
  1. はじめに
  2. 優先制御(PRIQ)
  3. 帯域制御(CBQ)
で構成しています。



1. はじめに

FITELnet-F100(以後、F100と称します)およびFITELnet-F1000(以後、F1000と称します)に実装されている「優先制御(CoS:Class of Service)」および「帯域制御(QoS:Quality of Service)」機能は、ネットワーク上で、データの種類に優先度を設けてデータを送信したり、ある特定の通信の為に帯域を予約し、一定の通信速度を確保する技術です。

これらの、帯域確保の機能である「帯域制御」「優先制御」と呼ばれる機能の概要を以下に記します。

@優先制御(CoS):
    F100およびF1000の優先制御は、PRIQ(Priority Queueing)のアルゴリズムを採用しています。
    これは、パケットが送信されるとき、パケットの種類毎に優先順位の高いものが優先(priority)されます。優先順位の高いパケットが多くなると、優先順位の低いパケットは「大きな遅延」もしくは「送信されない」こともあります。

    なお、F100およびF1000の優先制御のPRIQは、送信時にのみ適用されます。
    → 詳細は、2章参照
A帯域制御(QoS):
    F100およびF1000の帯域制御 は、CBQ(Class-Based Queueing)のアルゴリズムを採用しています。
    これは、パケットが送信されるとき、パケットの種類に応じて回線の帯域を確保する機能です。帯域に上限を設け、特定の種類のパケットが流れる量を制限することも可能です。

    なお、F100およびF1000の帯域制御のCBQは、送信時にのみ適用されます。
    → 詳細は、3章参照
F100およびF1000では、各インタフェース毎に、PRIQ あるいは CBQ のいずれかを設定することが可能です。また、PRIQ および CBQ の設定は、VPN との併用も可能です。

*注意
VPN 対象通信に対して PRIQ 、CBQ を適用する場合、TCP パケットが非優先、あるいは帯域が狭いと、Replay Attack が発生することがあります。



2. 優先制御(PRIQ)

2.1. PRIQの概要

優先と非優先のキューを用意し、送信すべきパケットをアクセスリストに設定したルールに従い両キューへパケットを振り分けます。
各キューに振り分ける際、キューの容量を超えた場合は、超えた分のパケットはドロップします。
優先キューにパケットがある場合は、優先キュー内のパケットを送信し続けます。その間は、非優先キュー内にあるのパケットは送信されません。優先キューにパケットがなく非優先キューにパケットがある場合に、非優先キューのパケットを送信します。



PRIQの概念図

図 2.1-1 PRIQの概念図


図 2.1-1のように、パケットに優先順位を付け、その優先順位に基づいてパケットを出力する方法です。



2.1.2. 実際の設定

図 2.1-1 の設定を示します。また、表 2-1にqos-class priqコマンドのパラメータを示します。
interface pppoe 1
 PRIQを適用したいインターフェースの設定モードへ移行します。
qos bandwidth 10M priq  PRIQの使用を宣言します。  PRIQの場合、帯域制御は行いませんので、帯域幅はredオプションを設定したときしか参照されません。
qos-class priq High-class priority 2  優先キューとして「High-clss」という名称のクラスを設定します。
qos-class priq Middle-class priority 1  通常キューとして「Middle-clss」という名称のクラスを設定します。
qos-class priq Low-class priority 0 default  非優先キューとして「Low-class」という名称のクラスを設定し、それをデフォルトのクラスとします。
qos-filter High-class access-group 100  「High-class」を適用する通信をアクセスリストの番号で指定します。
qos-filter Middle-class access-group 110  「Middle-class」を適用する通信をアクセスリストの番号で指定します。
exit
access-list 100 permit ip host 192.168.1.100 any  「High-class」を適用する通信として、送信元が 192.168.1.100( IP 電話アダプタ)の通信を指定します。
access-list 110 permit ip host 192.168.1.1 any  「Middle-class」を適用する通信として、送信元が 192.168.1.1( PC1 )の通信を指定します。 *注意 F100のV01.10のファームウェアまでと、F1000のV01.03のファームウェアまでは、 アクセスリストの番号の大きい方から順番にマッチングを見ていきます。 F100のV01.11以降のファームウェアと、F1000のV01.04以降のファームウェアでは、 アクセスリストの番号の小さい方から順番にマッチングを見ていきます。 どちらの場合も、順番に見ていって、最初にヒットしたアクセスリストのルールが 適用されます(ロンゲストマッチではありません)。 また、PRIQ/CBQでアクセスリストを使う場合、ポートを範囲指定することはできません。


表 2-1 qos-class priqコマンドのパラメータ

qos-class priq <クラス名> priority <優先度> [ qlimit <キュー限度値>] [ red ] [ default ]

パラメータ 設定内容 設定範囲 Default値
クラス名 任意の名称を設定できます。 - 省略不可
priority<優先度> 3段階まで優先度が設定でき、数字が大きいほど優先度は高くなります。
‘2’:優先キュー
‘1’:通常キュー
‘0’:非優先キュー
0〜2 省略不可
qlimit<キュー限度値> キューにためることができるパケット数を指定します。 1〜200 50
red キューバッファ管理方式に、RED(Random Early Detection)を使用する場合に設定します。
・REDを使用しない場合は、キューバッファがいっぱいになってからパケットを破棄(Tail-Drop)します。
・REDを使用した場合は、キューあふれによる輻輳が発生する前にランダム破棄を開始するため、TCPのようなトラフィックを変動できるようなプロトコルでは、より早く破棄を感知できるので、通信全体でみると効率が良くなります。
red REDを使用しない
default デフォルトクラスの場合に指定します。
qos filterにヒットしなかったデータを、どのような優先度で処理するか指定する場合に使用します。
default defaultとはしない




3. 帯域制御(CBQ)

3.1. CBQの概要

CBQは、フィルタルールをクラスという単位で設定し、そのクラスを階層化することで帯域制御を行い、設定したパケット専用の帯域として指定する手段です。CBQを使った場合、オプションで優先制御も可能です。

データの処理としては、それぞれのクラスに対応したキューを用意し、送信すべきパケットを設定したアクセスリストに従い、各キューへパケットを振り分けます。各キューに分ける際、キューの容量を超えた場合は、超えた分のパケットはドロップします。

本節では、実際にCBQを設定するケースとして、次の3つの場合について説明します。

  1. 通信全体をシェーピングするケース(3.2節
  2. データの帯域を個別に確保するケース(3.3節
  3. データの帯域を個別に確保した上で優先度を設定するケース(3.4節


3.2. 通信全体をシェーピングするケース

F100およびF1000から送信されるデータ全体の帯域を制限します。例えば、拠点からの通信量を制限して、センター側の負荷を下げたいような場合に利用できます。

表 3.2-1の設定に従い、CBQを設定する例を示します。


表 3.2-1 クラス設定

クラス名*1 データ 帯域*2
Root-class F100およびF1000から送信されるデータ帯域全体 5Mbps(100%)
Default-class F100及びF1000のLAN側からのデータ Root-classの95%
Control-class ICMP、IGMP、RSVP等のデータ Root-classの5%

*1:CBQを有効にするためには、ルート、デフォルト、コントロールの3つのクラスを設定することが必要です。
*2:Default-class 、Control-class の各帯域の合計は、100%(Root-classの帯域)を超えてはいけません。


次に、表 3.2-1の設定を階層化したものを図 3.2-1に示します。


表 3.2-1の設定の階層図


図 3.2-1 表 3.2-1の設定の階層図



さらに、図 3.2-1で示した階層図を、図 3.2-2のCBQの概念図に示します。


CBQの概念図


図 3.2-2 CBQの概念図


図 3.2-2の構成にすることで、F100およびF1000から送信されるデータ全体の帯域を5Mbpsに制限することが可能となります。



3.2.2. 実際の設定

図 3.2-2 の設定を示します。また、表 3-1にqos-class cbqコマンドのパラメータを示します
interface pppoe 1
 CBQを適用したいインターフェースの設定モードへ移行します。
qos bandwidth 5M cbq  帯域を5Mとして、CBQの使用を宣言します。
qos-class cbq Root-class bandwidth 100 parent NULL  ルートクラスを「Root-class」という名称で設定します。
qos-class cbq Default-class bandwidth 95 parent Root-class default  デフォルトクラスを「Default-class」という名称として、ルートクラスの95%の帯域を割り当てます。
qos-class cbq Control-class bandwidth 5 parent Root-class control  コントロールクラスを「Control-class」という名称として、ルートクラスの5%の帯域を割り当てます。
exit



3.3. データの帯域を個別に確保するケース

個別にデータの帯域を確保します。特定の通信のトラフィックを確保したい場合に使います。

表 3.3-1の設定に従いCBQを設定する例を示します。


表 3.3-1 クラス設定

クラス名*1 データ 帯域*2
Root-class F100およびF1000から送信されるデータ帯域全体 40Mbps(100%)
VoIP-class IP電話のデータ Root-classの5%
Default-class IP電話以外のデータ Root-classの90%
Control-class ICMP、IGMP、RSVP等のデータ Root-classの5%

*1:CBQを有効にするためには、ルート、デフォルト、コントロールの3つのクラスを設定することが必要です。
*2:VoIP-class 、Default-class 、Control-class の各帯域の合計は、100%(Root-classの帯域)を超えてはいけません


次に、表 3.3-1の設定を階層化したものを図 3.3-1に示します。



表 3.3-1の設定の階層図


図 3.3-1 表 3.3-1の設定の階層図



さらに、図 3.3-1で示した階層図を図 3.3-2に示します。


CBQの概念図(帯域確保のケース)


図 3.3-2 CBQの概念図(帯域確保のケース)


図 3.3-2の構成にすることで、PC1やPC2から大量にトラフィックが流れたとしても、VoIPの帯域(2Mbps:Root-class 40Mbpsの5%)は確保されます。



3.3.2. 実際の設定

図 3.3-2 の設定を示します。また、表 3-1にqos-class cbqコマンドのパラメータを示します
interface pppoe 1
 CBQを適用したいインターフェースの設定モードへ移行します。
qos bandwidth 40M cbq  帯域を40Mとして、CBQの使用を宣言します。
qos-class cbq Root-class bandwidth 100 parent NULL  ルートクラスを「Root-class」という名称で設定します。
qos-class cbq VoIP-class bandwidth 5 parent Root-class  VoIPデータ用のクラスを「VoIP-class」という名称として、ルートクラスの5%の帯域を割り当てます。
qos-class cbq Default-class bandwidth 90 parent Root-class default  デフォルトクラスを「Default-class」という名称として、ルートクラスの90%の帯域を割り当てます。
qos-class cbq Control-class bandwidth 5 parent Root-class control  コントロールクラスを「Control-class」という名称として、ルートクラスの5%の帯域を割り当てます。
qos-filter VoIP-class access-group 100  「VoIP-class」を適用する通信をアクセスリストの番号で指定します。
exit
access-list 100 permit ip host 192.168.1.100 any  「VoIP-class」を適用する通信として、送信元が 192.168.1.100( IP 電話アダプタ)の通信を指定します。 *注意 PRIQ/CBQでアクセスリストを使う場合、ポートを範囲指定することはできません。



3.4. データの帯域を個別に確保した上で優先度を設定するケース

データの帯域を個別に確保した上で、優先度を設定します。さらにborrowオプションを使うことにより、設定した帯域以上のデータがある場合でも、空きのある帯域を一時的に借りて、設定帯域以上の送信が可能となります。

表 3.4-1の設定に従いCBQを設定する例を示します。


表 3.4-1 クラス設定

クラス名*1 データ 帯域*2
Root-class F100およびF1000から送信されるデータ帯域全体 40Mbps(100%)
Data-class VoIP-classとTCP_data-classの親クラスとして設定 Root-classの75%
VoIP-class IP電話のデータ(borrowオプション付き) Root-classの5%
TCP_data-class TCPのデータ Root-classの70%
Default-class IP電話のデータとTCPのデータ以外 Root-classの20%
Control-class ICMP、IGMP、RSVP等のデータ Root-classの5%

*1:CBQを有効にするためには、ルート、デフォルト、コントロールの3つのクラスを設定することが必要です。
*2:Data-class 、Default-class 、Control-class の各帯域の合計は、100%(Root-classの帯域)を超えてはいけません。また、VoIP-class 、TCP_data-class の帯域は、Root-classに対する割合を指定します。そして、2つの帯域の合計は、親クラスとなるData-classの帯域である75%を超えてはいけません。


次に、表 3.4-1の設定を階層化したものを図 3.4-1に示します。


表 3.4-1の設定の階層図


図 3.4-1 表 3.4-1の設定の階層図



CBQに優先度を加えたイメージ図を図 3.4-2に示します。
イタリック体の「Root-class」「Default-class」「Control-class」は、必ず、設定しなければならないクラスを表しています。
「Data-class」は、さらに、「TCP_data-class」と「VoIP-class」に分割しています。
優先度としては、「VoIP-class」は、優先( priority 2 )、「TCP_data-class」と「Control-class」は、通常( priority 1 )、「Default-class」は、非優先( priority 0 )としています。


CBQに優先度を加えたイメージ図


図 3.4-2 CBQに優先度を加えたイメージ図



データ処理としては、まず、F100のLAN側から送られてきたデータを、一旦それぞれのClassに対応した‘キュー’に蓄え、優先度の高いデータから処理を行います。
それぞれ設定した帯域の範囲内で、キューに蓄えたデータを送出します。
ここで、優先度の高いClassのキュー内データが無くなった時に、初めて優先度の低いデータの処理に移行します。
    キューイング
     ・VoIPのパケットは、「VoIP-class」のキューへ振り分けられます。
     ・TCPのパケットは、「TCP_data-class」のキューへ振り分けられます。
     ・ICMP、IGMP、RSVPのパケットは、「Control-class」のキューへ振り分けられます。
     ・上記以外のパケットは、「Default-class」のキューへ振り分けられます。
    それぞれのキューが満杯の場合、他のキューへの振り分けは行わずドロップします。
次にborrowオプションの動作について、図 3.4-2で、VoIPを例に取り説明します。
VoIPのデータがきた場合、VoIP-classに割り当てられている帯域に余裕があるか確認し、余裕のある場合はデータを送信します。
余裕が無い場合は、上位層であるData-classで管理している帯域に余裕があるか確認します。この例では、TCP_data-classの帯域に余裕がある場合、VoIP-classのパケットをTCP_data-classの帯域を使って送信します。
TCP_data-classの帯域に余裕が無い場合は、Root-classで管理している帯域に余裕があるか確認します。この例では、Default-classあるいは、Control-classがそれに相当します。
Default-classあるいは、Control-classの帯域に余裕があれば、その帯域を使ってVoIPデータを送信し、それでも、余裕が無ければ、送信されずに次の機会まで待つことになります。



3.4.2. 実際の設定

図 3.4-2 の設定を示します。また、表 3-1にqos-class cbqコマンドのパラメータを示します
interface pppoe 1
 CBQを適用したいインターフェースの設定モードへ移行します。
qos bandwidth 40M cbq  帯域を40Mとして、CBQの使用を宣言します。
qos-class cbq Root-class bandwidth 100 parent NULL  ルートクラスを「Root-class」という名称で設定します。
qos-class cbq Data-class bandwidth 75 parent Root-class  データ用のクラスを「Data-class」という名称として、ルートクラスの75%の帯域を割り当てます。
qos-class cbq VoIP-class bandwidth 5 parent Data-class priority 2 borrow  VoIPデータ用のクラスを「VoIP-class」という名称として、ルートクラスの5%の帯域を割り当てます。
 親クラスは「 Data-class 」、また、優先度を「優先」として、borrowオプションを付けます。

qos-class cbq TCP_data-class bandwidth 70 parent Data-class priority 1  TCP通信用のクラスを「TCP_data-class」という名称として、ルートクラスの70%の帯域を割り当てます。
 親クラスは「 Data-class 」、また、優先度を「通常」とします。

qos-class cbq Control-class bandwidth 5 parent Root-class priority 1 control  コントロールクラスを「Control-class」という名称として、ルートクラスの5%の帯域を割り当てます。
 また、優先度を「通常」とします。

qos-class cbq Default-class bandwidth 20 parent Root-class default  デフォルトクラスを「Default-class」という名称として、ルートクラスの20%の帯域を割り当てます。
qos-filter VoIP-class access-group 100  「VoIP-class」を適用する通信をアクセスリストの番号で指定します。
qos-filter TCP_data-class access-group 110  「TCP_data-class」を適用する通信をアクセスリストの番号で指定します。
exit
access-list 100 permit ip host 192.168.1.100 any  「VoIP-class」を適用する通信として 192.168.1.100( IP 電話アダプタ)からの通信を指定します。
access-list 110 permit tcp 192.168.1.0 0.0.0.255 any  「TCP_data-class」を適用する通信として 192.168.1.0/24 からのTCP通信を指定します。
*注意 F100のV01.10のファームウェアまでと、F1000のV01.03のファームウェアまでは、 アクセスリストの番号の大きい方から順番にマッチングを見ていきます。 F100のV01.11以降のファームウェアと、F1000のV01.04以降のファームウェアでは、 アクセスリストの番号の小さい方から順番にマッチングを見ていきます (上の設定では、こちらのルールに従って、アクセスリストを書いています)。 どちらの場合も、順番に見ていって、最初にヒットしたアクセスリストのルールが 適用されます(ロンゲストマッチではありません)。 また、PRIQ/CBQでアクセスリストを使う場合、ポートを範囲指定することはできません。


表 3-1 qos-class cbqコマンドのパラメータ

qos-class cbq <クラス名> bandwidth <帯域使用率> parent <親クラス名>|NULL
[ priority <優先度>] [ delay <最大遅延時間>] [ borrow ] [ red ]
[ default ] [ control ]


パラメータ 設定内容 設定範囲 Default値
クラス名*1 任意の名称を設定できます。クラスは各インタフェースごとに16まで設定できます(かつ装置全体で64まで)。 - 省略不可
帯域使用率 ルートクラスに対する帯域使用率(単位:%)を指定します。帯域使用率の合計は、100%以下で設定します。 1〜100 省略不可
親クラス名 親クラス名を指定します。ルートクラスとする場合には NULL と記述します。 - 省略不可
priority <優先度> 3段階まで優先度が設定でき、数字が大きいほど優先度は高くなります。
‘2’:優先キュー
‘1’:通常キュー
‘0’:非優先キュー
0〜2 0
delay <最大遅延時間> このクラスの最大遅延時間(単位:m秒)を設定します。この時間経過しても送信されない場合は廃棄されます。 1〜9999 0
borrow 帯域不足で送信できないときに、親クラスに空きがあれば、その帯域を利用して送信する場合に指定します。 borrow 親クラスの帯域を利用しない
red キューバッファ管理方式に、RED(Random Early Detection)を使用する場合に設定します。
・REDを使用しない場合は、キューバッファがいっぱいになってからパケットを破棄(Tail-Drop)します。
・REDを使用した場合は、キューあふれによる輻輳が発生する前にランダム破棄を開始するため、TCPのようなトラフィックを変動できるようなプロトコルでは、より早く破棄を感知できるので、通信全体でみると効率が良くなります。
red REDを使用しない
default デフォルトクラスとする場合に設定します。デフォルトクラスは、ルートクラスに属している必要があります。どのクラスにも該当しないパケットはこのクラスで処理されます。 default defaultとしない
control コントロールクラスとする場合に設定します。コントロールクラスは、ルートクラスに属している必要があります。制御パケット用のクラスで、デフォルトでICMP、IGMP、RSVPが割り当て済みです。 control controlとしない

*1:CBQを有効にするためには、ルート、デフォルト、コントロールの3つのクラスを設定することが必要です(それぞれ、NULL 、default 、control のオプションをつけることで設定します)。
また、ルートクラスに直接パケットを割り振ることはできません。




All Rights Reserved, Copyright(C) FURUKAWA ELECTRIC CO., LTD. 2004