CQ ( Custom Queing ) とは
このキューイングは、どのキューにも公平にラウンドロビンでパケット転送の権利が与えられる方式です。
各キューでは、ルータで設定されたバイト数に基づいてパケットを出力インターフェースに転送できます。
プライオリティキューイングの場合、インターフェースあたりに4個のキューですが、カスタムキューイング
の場合、16個のキューを定義できます。その16個のキューは @ 〜
O までの番号が付けられます。
といっても16個全て使用するのでなく、緻密な設計により作成するキューは最小限にすることが大切です。
※ 基本的にCQが単独で使用されることは先ずありません。CBWFQ
に CQ の要素がありそのための理解と思い学習しましょう。
パケットの分類方法
カスタムキューイングで、どのパケットをどのキュー番号にマッピングするのかは以下の基準で分類します。
・ TCP/UDP のポート番号
・ パケットがIPフラグメントされたものかどうか
・ 非IPトラフィック ( SNA, IPX, AppleTalk
)
・ パケットを受信したインターフェース
・ 標準、拡張 ACL により記述可能な任意の情報
・ バイト単位のパケットサイズ
・ 上記で定義されていないデフォルトのパケットは、デフォルトと定義されたキューへ
カスタム・キューイングのルール
カスタム・キューイングでは、ルータは各キューを1つずつ順番にサイクルし、各キューに定義された
バイトカウント値を出力インターフェースに転送します。一周したら最初のキューに戻りまたサイクル。
例えば、キューを3つ @ A B とつくるとします。キュー
@ のバイトカウント値を 1000byte と設定して
キュー A を 3000byte、キュー B を 2000byte
と定義するします。
その場合、キュー @で1000byteを出力インターフェースに完全に転送した後に次のキューに移ります。
同様に次はAで3000byte、Bで2000byteを完全に転送して一周となります。次にまた@へと続きます。
カスタムキューへのパケットの割り当て
パケットをどのカスタムキューへ格納させるかは、以下の3種類のコマンドで定義することができます。
- プロトコルタイプに基づいた分類 ( ACLによる分類も含む
) -
| Cisco(config)# queue-list number protocol namequeue-number queue-keyword queue-value |
- 入力インターフェースに基づいた分類 -
Cisco(config)# queue-list number interfacetype queue-number
|
- デフォルトキューの定義 -
Cisco(config)# queue-list number default queue-number
|
カスタムキューイングではパケットが合致するまで
queue-list は読まれていきますが、どのpriority-listにも合致しない場合、
パケットはデフォルトキューに格納されます。デフォルトキューの定義がない場合、ルータはキュー1をそれとして使用します。
例えば queue-list 10 default 2 と設定すると、Custom-queue-list
の10においてデフォルトキューに queue2 を使用します。
カスタムキューの最大サイズ
CQでのデフォルトでは、各キューに格納できる(キューイングできる)最大パケット数は全てのキューで20です。
上記のキューごとにキューイングできる最大パケット数の値を変更するためには以下のコマンドで変更します。
- キューイングできる最大パケット数の定義
-
Cisco(config)# queue-list number queue queue-number limit limit-number
|
CQのサイクルで各キューが転送できる最大バイト数を定義するためには、以下のコマンドで定義します。
バイトカウントの値は小さすぎても大きすぎてもダメで、実際に使用されるアプリの平均パケットサイズなどを
スニファーで調査した上でできる限り厳密に定義する必要があります。CQ
は色々な意味で定義が大変です。
- 各キューのバイトカウントの定義 -
Cisco(config)# queue-list number queue queue-number byte-count byte-count-number
|
インターフェースへの適用
CQのインターフェースの適用コマンドは以下となります。I/F適用する際に
IN や OUT などのキーワードが
ありませんが、出力インターフェースに対して
output キューに対するキューイング実装方式であることから
OUTでの適用であることを意味します。そもそもキューイングとは一般的に
[ output queue ] に対するもの。
Cisco(config)# interface type
Cisco(config-if)# custom-queue-list number
|
CQの設定例
下図ではPC Aからのtelnetパケットをcustom
queue 1に格納させて、PC G( 192.168.0.1 )からPC
B
( 10.1.1.0/25 )へすべてのIPトラフィックを
custom queue 2 に格納させて、CQのデフォルトキューを
custom queue3に定義して、WWWトラフィックはcutosm
queue 4に格納しています。またキュー3では
キューイングできる最大パケット数を20から30に変更しています。各キューのバイトカウントは下図の
通り定義して、最後に Custom-queue-list
の「2」を Serial0/0 のインターフェースに適用しています。
Cisco(config)# access-list 101 permit ip
host 192.168.0.110.1.1.0 0.0.0.127
Cisco(config)# queue-list 2 protocol ip
1 tcp 23
Cisco(config)# queue-list 2 protocol ip
2 list 101
Cisco(config)# queue-list 2 default 3
Cisco(config)# queue-list 2 protocol ip
4 tcp 80
Cisco(config)# queue-list 2 queue 3 limit
30
Cisco(config)# queue-list 2 queue 1 byte-count
1000
Cisco(config)# queue-list 2 queue 2 byte-count
3000
Cisco(config)# queue-list 2 queue 3 byte-count
2000
Cisco(config)# queue-list 2 queue 4 byte-count
1000
Cisco(config)# interface serial 0/0
Cisco(config-if)# custom-queue-lsit 2
|

※ CQのステータスは、show queue , show
queue customコマンドにより確認することができます。Custom Queueing
Resource : QoS 書籍一覧 Cisco QoS書籍一覧 Cisco QoS Command Guide 12.4 Cisco QoS Configuration Guide 12.4
|