古河電工ネットワーク機器の総合ブランド ファイテルネット
古河電工
FITELnetトップ製品ラインナップイベント&セミナーセールス&サポート
Routing to the Future FITELnet
お問い合わせはこちら

FITELnet技術情報

優先制御および帯域制御機能について
2004年 7月 7日 初版
2009年11月30日 ポートの範囲指定の注意追記

本資料は、

1 はじめに

2 優先制御(PRIQ)

3 帯域制御(CBQ)

で構成しています。

1. はじめに

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

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

 

1.優先制御(CoS):

 F100およびF1000の優先制御は、PRIQ(Priority Queueing)の

 アルゴリズムを採用しています。

 これは、パケットが送信されるとき、パケットの種類毎に優先順位

 の高いものが優先(priority)されます。優先順位の高いパケットが

 多くなると、優先順位の低いパケットは「大きな遅延」もしくは

 「送信されない」こともあります。

 なお、F100およびF1000の優先制御のPRIQは、送信時にのみ適用

 されます。

 

2.帯域制御(QoS):

 F100およびF1000の帯域制御 は、CBQ(Class-Based Queueing)の

 アルゴリズムを採用しています。これは、パケットが送信されるとき、

 パケットの種類に応じて回線の帯域を確保する機能です。

 帯域に上限を設け、特定の種類のパケットが流れる量を制限

 することも可能です。

 なお、F100およびF1000の帯域制御のCBQは、送信時にのみ適用

 されます。

 

F100およびF1000では、各インタフェース毎に、PRIQ あるいは CBQ のいずれかを設定することが可能です。また、PRIQ および CBQ の設定は、VPN との併用も可能です。

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

space

2. 優先制御(PRIQ)

space

2.1. PRIQの概要

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

図 2.1-1 PRIQの概念図

 

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

space

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でアクセスリストを使う場合、ポートを範囲指定することはできません。
※F100はV01.19(01)・F1000は(V01.11(01))より、ポートを範囲指定することが出来るようになりました。

 

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

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

パラメータ:クラス名

  設定内容:任意の名称を設定できます。

  設定範囲:-

  Default値:省略不可

パラメータ:priority<優先度>

  設定内容:3段階まで優先度が設定でき、数字が大きいほど優先度

  は高くなります。

         ‘2’:優先キュー

         ‘1’:通常キュー

         ‘0’:非優先キュー

  設定範囲:0-2

  Default値:省略不可

パラメータ:qlimit<キュー限度値>

  設定内容:キューにためることができるパケット数を指定します。

  設定範囲:1-200

  Default値:50

パラメータ:red

  設定内容:キューバッファ管理方式に、RED(Random Early Detection)

               を使用する場合に設定します。

       ・REDを使用しない場合は、キューバッファがいっぱいになって

        からパケットを破棄(Tail-Drop)します。

       ・REDを使用した場合は、キューあふれによる輻輳が発生する

        前にランダム破棄を開始するため、TCPのようなトラフィック

        を変動できるようなプロトコルでは、より早く破棄を感知で

        きるので、通信全体でみると効率が良くなります。

  設定範囲:red

  Default値:REDを使用しない

パラメータ:default

  設定内容:デフォルトクラスの場合に指定します。

        qos filterにヒットしなかったデータを、どのような優先度で

        処理するか指定する場合に使用します。

  設定範囲:default

  Default値:defaultとはしない

 

 

 

space

3. 帯域制御(CBQ)

space

3.1. CBQの概要

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

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

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

 

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

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

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

 

space

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

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

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

 

表 3.2-1 クラス設定

クラス名(*1):Root-class

  データ:F100およびF1000から送信されるデータ帯域全体

  帯域(*2):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に示します。

tech13_2

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

 

 

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

tech13_3

図 3.2-2 CBQの概念図

 

 

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

space

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

space

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

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

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

 

 

表 3.3-1 クラス設定

クラス名(*1):Root-class

  データ:F100およびF1000から送信されるデータ帯域全体

  帯域(*2):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に示します。

tech13_4

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

 

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

 

tech13_5

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

 

 

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

space

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でアクセスリストを使う場合、ポートを範囲指定することはできません。
space

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

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

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

 

表 3.4-1 クラス設定

クラス名(*1):Root-class

  データ:F100およびF1000から送信されるデータ帯域全体

  帯域(*2):40Mbps(100%)

クラス名(*1):Data-class

  データ:VoIP-classとTCP_data-classの親クラスとして設定

  帯域(*2):Root-classの75%

クラス名(*1):VoIP-class

  データ:IP電話のデータ(borrowオプション付き)

  帯域(*2):Root-classの5%

クラス名(*1):TCP_data-class

  データ:TCPのデータ

  帯域(*2):Root-classの70%

クラス名(*1):Default-class

  データ:IP電話のデータとTCPのデータ以外

  帯域(*2):Root-classの20%

クラス名(*1):Control-class

  データ:ICMP、IGMP、RSVP等のデータ

  帯域(*2):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に示します。

 

 

tech13_8

図 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 )としています。

 

tech13_9

図 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データを送信し、それでも、余裕が無ければ、送信されずに次の機会まで待つことになります。

space

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 ]

 

パラメータ:クラス名*1

  設定内容:任意の名称を設定できます。クラスは各インタフェース

        ごとに16まで設定できます(かつ装置全体で64まで)。

  設定範囲:-

  Default値:省略不可

パラメータ:帯域使用率

  設定内容:ルートクラスに対する帯域使用率(単位:%)を指定します。

       帯域使用率の合計は、100%以下で設定します。

  設定範囲:1-100

  Default値:省略不可

パラメータ:親クラス名

  設定内容:親クラス名を指定します。ルートクラスとする場合には

         NULL と記述します。

  設定範囲:-

  Default値:省略不可

パラメータ:priority <優先度>

  設定内容:3段階まで優先度が設定でき、数字が大きいほど優先度

        は高くなります。

           ‘2’:優先キュー

           ‘1’:通常キュー

           ‘0’:非優先キュー

  設定範囲:0-2

  Default値:0

パラメータ:delay <最大遅延時間>

  設定内容:このクラスの最大遅延時間(単位:m秒)を設定します。

        この時間経過しても送信されない場合は廃棄されます。

  設定範囲:1-9999

  Default値:0

パラメータ:borrow

  設定内容:帯域不足で送信できないときに、親クラスに空きがあれば、

        その帯域を利用して送信する場合に指定します。

  設定範囲:borrow

  Default値:親クラスの帯域を利用しない

パラメータ:red

  設定内容:キューバッファ管理方式に、RED(Random Early Detection)

       を使用する場合に設定します。

       ・ REDを使用しない場合は、キューバッファがいっぱいに

         なってからパケットを破棄(Tail-Drop)します。

       ・ REDを使用した場合は、キューあふれによる輻輳が発生

         する前にランダム破棄を開始するため、TCPのような

         トラフィックを変動できるようなプロトコルでは、

         より早く破棄を感知できるので、通信全体でみると効率

         が良くなります。

  設定範囲:red

  Default値:REDを使用しない

パラメータ:default

  設定内容:デフォルトクラスとする場合に設定します。

        デフォルトクラスは、ルートクラスに属している必要

        があります。どのクラスにも該当しないパケットはこの

        クラスで処理されます。

  設定範囲:default

  Default値:defaultとしない

パラメータ:control

  設定内容:コントロールクラスとする場合に設定します。

        コントロールクラスは、ルートクラスに属している必要が

        あります。制御パケット用のクラスで、デフォルトで

        ICMP、IGMP、RSVPが割り当て済みです。

  設定範囲:control

  Default値:controlとしない

 

 

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

space

ページトップへ

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