QoSを設定するコマンド

 優先制御と帯域制御の機能は、インタフェースに入力されたパケットの順序を入れ換えて別のインタフェースに出力します。これらの機能を使用しない場合には、パケットは入力した順番に処理されます。

 優先制御は、クラス分けしたキューに優先順位をつけ、まず高位のキューのパケットを出力し、そのキューが空になると次の順位のキューのパケットを出力する、という処理を行います。

 帯域制御は、クラス分けしたキューをラウンドロビン方式で監視しますが、監視頻度に差を与えてキューごとに利用できる帯域に差をつけます。

 クラスは、「queue class filter」コマンドにより、パケットのフィルタリングと同様な定義でパケットを分類します。優先制御、帯域制御で使用可能なクラスは以下の通りです。

モデル優先制御で使用可能なクラス帯域制御で使用可能なクラス
RTX30001~161~100
上記以外の機種1~41~16

クラスは番号が大きいほど優先順位が高くなります。

 パケットの処理アルゴリズムは、「queue interface type」コマンドにより、優先制御、帯域制御、単純FIFOの中から選択します。これはインタフェースごとに選択することができます。

インタフェース速度の設定

# speed interface speed
# speed pp speed

【設定値及び初期値】

●interface
設定値 : LAN インタフェース名、WAN インタフェース名

●speed
設定値 : インタフェース速度 (bit/s)
初期値 : 0(PP インタフェースの場合 )

【説明】
 指定したインタフェースに対して、インタフェースの速度を設定します。帯域制御でCBQを利用する際は、パラメータ計算に用いられるので、物理的な速度と一致している必要がある。その場合、MPにより動的に回線速度が変動する場合などは、最低限の速度に設定しておく。

speed パラメータの後ろに'k'または、'M'をつけると、それぞれ kbit/s、Mbit/s として扱われます。

クラス分けのためのフィルタ設定

# queue class filter num class1[/class2] [cos=cos] ip src_addr [dest_addr [protocol [src_port [dest_port]]]]

【設定値及び初期値】

●num
設定値 : クラスフィルタの識別番号

●class1
設定値 :

設定値 説明
1..100 (RTX3000) クラス
1..16 (上記以外)
precedence  転送するパケットのTOSフィールドのprecedence(0-7)に応じてクラス(1-8)を分けて優先制御もしくはシェーピング、Dynamic Traffic ControlやCBQによる帯域制御を行います。
dscp 転送するパケットのDSフィールドのDSCP値により定義される PHBに応じてクラス(1-9)を分けて優先制御もしくはシェーピングや Dynamic TrafficControl による帯域制御を行います。

※設定値は、使用するルータのモデルとファームウェアのバージョンによってサポートされているかを確認する必要があります。

●class2
設定値 : 第 2 階層クラス (1..4)

●cos
設定値:

設定値説明
0-7CoS値
precedence転送するパケットのTOSのprecedence(0-7)をToS-CoS変換としてCOS値に格納する。

●src_addr : IPパケットの始点IPアドレス
設定値 :
 ・A.B.C.D (A~D: 0~255 もしくは*)
  ※上記表記でA~Dを*とすると、該当する8ビット分についてはすべての値に対応する。
 ・*(すべてのIPアドレスに対応)

●dest_addr : IPパケットの終点IPアドレス
設定値 :
 ・src_addr と同じ形式
 ・省略した場合は一個の * と同じ

●protocol : フィルタリングするパケットの種類
設定値 :
 ・プロトコルを表す十進数
 ・プロトコルを表すニーモニック

icmp 1
tcp 6
udp 17
  •  上項目のカンマで区切った並び (5個以内)
  •  *(すべてのプロトコル)
  •  established
  •  省略時は * と同じ

●src_port : UDP、TCP のソースポート番号
設定値 :
 ・ポート番号を表す十進数
【ポート番号を表すニーモニック (一部)】

ニーモニック ポート番号
ftp 20,21
ftpdata 20
telnet 23
smtp 25
domain 53
gopher 70
finger 79
www 80
pop3 110
sunrpc 111
ident 113
nntp 119
ntp 123
snmp 161
syslog 514
printer 515
talk 517
route 520
uucp 540

 ・間に「-」をはさんだ2つの上項目、「-」を前につけた上項目、「-」を後ろにつけた上項目、これらは範囲を指定する。
 ・上項目のカンマで区切った並び (10個以内)
 ・*( すべてのポート )
 ・省略時は * と同じ。
 ・dest_port : UDP、TCP のディスティネーションポート番号

【説明】
 クラス分けのためのフィルタを設定します。class1に、precedenceを指定した場合、フィルタに合致したパケットは、そのパケットのIPヘッダのprecedence 値に応じたクラスに分けられます。

 class1にdscpを指定した場合、フィルタに合致したパケットは、そのパケットのIPヘッダの DSCP値により定義されるPHBに応じたクラスに分けられます。

 「cos=cos」指定を行うと、フィルタに合致したパケットに付加されるIEEE802.1Qタグのuser_priorityフィールドに、指定したCoS値が格納されます。cosにprecedenceを指定した場合、そのパケットのIPヘッダのprecedence値に対応する値が、user_priorityフィールドに格納されます。

 パケットフィルタに該当したパケットは、指定したクラスに分類される。このコマンドで設定したフィルタを使用するかどうか、あるいはどのような順番で適用するかは、各インタフェースにおける「queue interface class filter list」コマンドで設定します。

※設定値は、使用するルータのモデルとファームウェアのバージョンによってサポートされているかを確認する必要があります。

キューイングアルゴリズムタイプの選択

# queue interface type type
# queue pp type type

【設定値及び初期値】

●interface
設定値 : LAN インタフェース名、WAN インタフェース名

●type
設定値 :

設定値説明
fifoFirst In,First Out 形式のキューイング
priority優先制御キューイング
cbq帯域制御キューイング
wfqWeighted Fair Queue 形式のキューイング
shaping帯域制御

初期値 : fifo

【説明】
 指定したインタフェースに対して、キューイングアルゴリズムタイプを選択します。fifoは最も基本的なキューで、パケットは必ず先にルーターに到着したものから送信され、パケットの順番が入れ替わることはありません。

 fifoキューに溜まったパケットの数が「queue interface length」コマンドで指定した値を越えた場合、キューの最後尾に到着したパケットが破棄されます。

 priorityは優先制御を行います。「queue class filter」コマンド及び「queue interface class filter list」コマンドでパケットをクラス分けし、送信待ちのパケットの中から最も優先順位の高いクラスのパケットを送信します。

cbqは、BRIとPRIインタフェースに対する帯域制御を行います。PPインタフェースにだけ設定できます。

 wfqは、送信待ちのパケットを始点・終点IPアドレスやプロトコル、ポート番号でフローとしてグループ分けし、それぞれのフローで使用する帯域のバランスが取れるようにするキューイングアルゴリズムです。

 wfqを使用すると、TELNETのような、帯域をそれほど必要としないが、速い応答時間を必要とされるプロトコルと、FTPのような応答時間よりも広い帯域を必要とするプロトコルを同時に利用した場合に、TELNETの応答時間の落ち込みを fifoに比べて軽減することができます。

 wfqの最大の特徴は、設定する必要がないということです。設定するところがないため、優先制御や帯域制御に比べて細かい調整を行うことができませんが、簡単にフロー間での帯域のバランスを図ることができます。PPインタフェースにだけに設定を行うことができます。

shapingは、LAN インタフェースに対する帯域制御を行う。LAN インタフェースにだけ設定できます。

デフォルトクラスの設定

# queue interface default class class
# queue pp default class class

【設定値及び初期値】

●interface
設定値 : LAN インタフェース名、WAN インタフェース名

●class
設定値 : クラス (1..16; RTX3000の場合は 1..100)
初期値 : 2

【説明】
インタフェースに対して、フィルタにマッチしないパケットをどのクラスに分類するかを指定する。

クラスの属性の設定

# queue interface class property class bandwidth=bandwidth
# queue interface class property class type=type
# queue pp class property class bandwidth=bandwidth [parent=parent] [borrow=borrow] [maxburst=maxburst][minburst=minburst] [packetsize=packetsize]

【設定値及び初期値】

●interface
設定値 : LAN インタフェース名、WAN インタフェース名

●class
設定値 : クラス (1..16; RTX3000 の場合は 1..100)

●bandwidth
設定値 :
 ・クラスに割り当てる帯域 (bit/s)
 ・数値の後ろに'k'、'M'をつけるとそれぞれkbit/s、Mbit/sとして扱われる。また、数値の後ろに '%' をつけると、回線全体の帯域に対するパーセンテージとなる。
 ・'ngn'を設定した場合はデータコネクト拠点間接続の接続時に決めた帯域に設定される。

●parent
設定値 : 親クラスの番号 (0..16)
初期値 : 0

●borrow : 帯域が足りなくなった場合に親クラスから帯域を借りるか否かの設定
設定値 :

設定値説明
on借りる
off借りない

初期値 : on

●maxburst
設定値 : 連続送信できる最大バイト数 (1..10000)
初期値 : 20

●minburst
設定値 : 安定送信中に連続送信できる最大バイト数 (1..10000)
初期値 : maxburst/10

●packetsize
設定値 : クラスで流れるパケットの平均パケット長 (1..10000)
初期値 : 512

●type
設定値 :

設定値説明
priority優先制御クラスとして使用することを明示する。

【説明】
 bandwidthパラメータで各クラスに割り当てる帯域の合計は、回線全体の帯域を越えてはならない。また、回線全体の帯域は、speedコマンドで設定します。

なお、cbqによる帯域制御を行う場合、各クラスに割り当てる帯域は、親クラス以下の値でなければならない。

 「queue interface type」コマンドでshapingが指定されている場合は、Dynamic Traffic Controlによる帯域制御を行うことが可能です。

 Dynamic Traffic Controlを行うためには、bandwidth パラメータに「,」(コンマ) でつないだ2つの速度を指定することで、保証帯域と上限帯域を設定する。

 記述順に関係なく、常に値の小さな方が保証帯域となります。なお、保証帯域の合計が回線全体の帯域を越えてはならない制限があります。
※Dynamic Traffic Controlは RTX1100、RTX1500、RTX3000、SRT100、RTX1200などで利用可能です。

 parent、borrow、maxburst、minburst、packetsizeパラメータは「queue interface type」コマンドでcbqが指定されている場合のみ有効です。

 cbqにおいて、クラス番号0はルートクラスを表します。ルートクラスとは、仮想的クラスことで、常に100%の帯域を持ち、デフォルトでは、他のクラスの親クラスとなります。

ルートクラスに直接パケットの割り振りは行わないで、帯域を他のクラスに貸し出すためにだけに使用されます。

 帯域が足りなくなった場合に、親クラスから帯域を借りるように、「borrow=on」と設定すると、このクラスの最大速度は親クラスの最大速度まで増やすことができます。

 通常は100%の帯域を持つルートクラスが親クラスとなるため、クラスの帯域は回線速度一杯にまで広げることができます。bandwidthの設定は、回線が混雑している場合に他のクラスとどの程度の割り合いで帯域を分けるかの目安として指定します。

 帯域を借りてこない設定「borrow=off」をすると、このクラスの最大速度は、bandwidthの値になり、それ以上の帯域を使わなくなります。特定のトラフィックの帯域を制限したい場合に有効です。

 typeパラメータは、RTX3000で指定可能で「queue interface type」 コマンドでshapingが指定されている場合のみ有効です。