CBQoSとは何か?

CBQoS(Class-Based Quality of Service)は、IOS 12.4(4)T以降に搭載されたCiscoの機能群です。データはSNMPで取得し、適用すべきQoSポリシーや、組織ネットワーク内でトラフィック パターンをクラス分けしてみるとどのようになるか、情報を提示します。

CBQoSが必要な理由

通常のIPネットワークは、すべてのトラフィックが同じ優先度で均一に転送される、ベスト エフォート転送で運用されています。したがって輻輳が発生すると、すべてのアプリケーションで均一にパケット廃棄が発生することになります。他方で、QoSを設定すれば、ネットワーク トラフィックの中身を選択し、相対重要度に応じた優先順位付けを実行、これに応じた輻輳回避を行うことが可能となります。
CBQoSでは、ネットワーク トラフィックが使用する帯域も制限できます。これによって、ネットワーク パフォーマンスを予測しやすくなり、帯域使用の効率化が可能です。たとえば、組織のネットワーク管理者は、CBQoSポリシーの設定により、業務上重要なアプリケーションがネットワークで最優先されるようにできます。CBQoSを利用すれば、ネットワークに適用されているポリシーとトラフィック パターンを、クラス別に分けて可視化できます。ポリシング前(prepolicy)、ポリシング後(postpolicy)、廃棄などが、クラスに分けた各トラフィックでどのようになっているか把握可能のほか、キューイング ステータスも認識、QoS設定が効率的になされているか確認可能です。

  • トラフィック クラスを作成する
  • トラフィック ポリシーを作成する
  • インターフェースにトラフィック ポリシーを適用する
  • トラフィック クラスとトラフィック ポリシー情報を確認する

CBQoSデータ収集を開始するには

ルーターでポリシーを設定する

設定を行うにあたっては、まず、ルーターでCBQoSを手動で有効にする必要があります。つづいて、ルーターでポリシーを定義してください。通常、トラフィック ポリシーは組織のタイプやアプリケーションの要件に応じて設定します(大容量音声トラフィック、大容量ドキュメント転送、大容量ストリーミングビデオ トラフィックなど)。ポリシーと分類は、クラス マップとポリシー マップにもとづいて実行できます。

クラス マップは、特定のトラフィック フローやクラスを他のトラフィックから分離して、名前を付けるために使用します。クラス マップには、特定のトラフィック フローの照合・分類に使う条件を定義します。この条件には、ACLで定義するアクセス グループへの合致や、DSCPやIP Precedence値への合致を指定できます。分類すべきトラフィックのタイプが複数あれば、別のクラス マップを作成して、別途指定ください。パケットがクラス マップの条件と合致する場合、ポリシー マップでQoSアクションを指定できます。ポリシー マップには、トラフィック クラスのQoSアクションを指定します。アクションには、トラフィック クラスのCoSまたはDSCP値の信頼、トラフィック クラスへの特定のDSCPやIP Precedence値の設定、トラフィックの帯域制限、トラフィックがプロファイル外になったときに実行するアクションのなどができます。ポリシー マップを有効にするには、インターフェースへの適用が必要です。

ルーターは、パケットを分類し、内部DSCP値を割り当てたのち、ポリシングとマーキングを実行します。ポリシングでは、トラフィックの制限帯域を指定するため、ポリシーの作成が必要です。制限を超えるパケットはプロファイル違反の扱いになります。各ポリシーは、パケットがプロファイルに従っているか否かに応じて、実行するアクションを指定します。実際のアクション実行を行うのは、マーカーの仕事です。アクションには、修正なしでパケットを通過させたり、パケットを廃棄したり、DSCP値を書き換えたりなどを指定できます。

ルーターからポリシーの詳細を取得する

ルーターからのポリシーの詳細は、「設定」 > 「フロー解析」 > 「CBCoQ」で確認できます。「CBQoS設定」タブには、ポリシーが適用されているすべてのインターフェースが、ルーター名と特定の送受信ポリシーとあわせ表示されます。NetFlow Analyzerからルーター レベルでの適用ポリシーを確認するには、アイコンをクリックしてください。このリストには、すべてのルーターとそのポリシーが表示されます。「ポリシーの取得」をクリックすると、個々のインターフェースに関するポリシーの情報をルーターから入手できます。

ポリシーの詳細がルーターから取得されると、「ポリシーの詳細が更新されました」というメッセージが表示されます。ポリシーが見つからない場合、「使用できません」というメッセージが表示されます。

CBQoSデータのポーリング

ルーターにポリシーを設定し、ポリシーの詳細を取得したら、ポーリングを開始できます。「ポーリングの更新」をクリックし、ポーリング対象とするインターフェースを選択/選択解除してください。ポーリング間隔とタイムアウトも変更できます。ポーリング間隔は、5、10、15、25、30、60の任意の値を指定できます。タイムアウトは、5、10、15の値を指定できます。ポーリングの必要があるインターフェースのリストを選択/選択解除した後、ポーリング パラメーターを設定し、「ポーリングを更新」をクリックしてポーリング動作を開始ください。

 

トラフィック クラスを作成する

トラフィック クラスを作成するには、class-mapコマンドを使用します。class-mapコマンドの構文は次のとおりです。

class-map [match-any | match-all] class-name
no class-map [match-any | match-all] class-name

  • match-allおよびmatch-anyキーワード
  • match-allおよびmatch-anyキーワードは、トラフィック クラスに複数の合致条件が設定されている場合にのみ指定してください。
  • match-allキーワードは、すべての合致条件を満たす場合のみ、指定したトラフィック クラスにパケットを割り当てるのに利用ください。
  • match-anyキーワードは、合致条件を1つだけ満たす場合に、指定したトラフィック クラスにパケットを割り当てるのに利用ください。
  • match-allキーワードもmatch-anyキーワードも指定されていない場合、トラフィック クラスはmatch-allキーワードに従って動作します。

match notコマンドについて

match notコマンドでは、条件合致時にパケットを指定クラスに割り当てるのではなく、パケットをクラスのメンバーに分類してはならないときの条件を指定します。たとえば、トラフィック クラスの設定中にmatch not QoS-group 6コマンドが発行された場合、QoSグループ6のみ、合致条件させてはならないQoSグループの値となります。他のすべてのQoSグループ値は、妥当な合致条件となります。

手順

合致条件を含むトラフィック クラスを作成するには、class-mapコマンドを使用してトラフィック クラス名を指定します。次に、1つ以上のmatchコマンドを使用して、適切な合致条件を指定します。指定した条件に合致するパケットは、トラフィック クラスに割り当てられます。

次の手順に、いくつかのmatchコマンドを示します。
メモ:使用できるコマンドや機能は、CiscoのOSタイプやハードウェアによって異なります。各OSやハードウェアのマニュアルを確認のうえ、設計・設定をお願いします。
  コマンドまたは操作 目的
手順1 Router> enable 特権EXECモードを有効にします。
手順2 Router # configure terminal グローバル コンフィグレーション モードを開始します。
手順3 Router(config)# class-map [match-all | match-any] class-name

クラス マップで使用するクラスを作成し、class-mapコンフィグレーション モードを開始します。クラス マップは、指定したクラスとパケットの照合に使用されます。

メモ:match-allキーワードは、すべての合致条件を満たす必要があることを指定します。match-anyキーワードは、合致条件の1つを満たす必要があることを指定します。

必要に応じて、次の1つ以上のmatchコマンドを使用します。
手順4 Router(config-cmap)# match access-group
{access-group | name access-group-name}

指定されたACL(アクセス コントロール リスト)にもとづいて、クラス マップの合致条件を設定します(任意項目)。

メモ:access-listコマンドのオプションのlogキーワードで設定されたアクセス リストは、トラフィック クラスの設定時にはサポートされません。

手順5 Router(config-cmap)# match any クラス マップの合致条件を、すべてのパケットの正常な合致条件として設定します(任意項目)。
手順6 Router(config-cmap)# match class-map class-name 合致条件として使用されるトラフィック クラスの名前を指定します。クラス マップのネストで利用ください(任意項目)。
手順7 Router(config-cmap)# match cos cos-number レイヤー2 CoS(Class of Service)マーキングにもとづいてパケットを照合します(任意項目)。
手順8 Router(config-cmap)# match destination-address mac address 宛先MAC(メディア アクセス コントロール)アドレスを合致条件として使用します(任意項目)。
手順9 Router(config-cmap)# match discard-class class-number 特定の廃棄クラスのパケットを照合します(任意項目)。
手順10 Router(config-cmap)# match [ip] dscp
dscp-value [dscp-value dscp-value dscp-value
dscp-value dscp-value dscp-value dscp-value]
特定IPのDSCP(DiffServ Code Point)値を合致条件として特定します。1つの合致句に最大8つのDSCP値を含めることができます(任意項目)。
手順11 Router(config-cmap)# match field protocol
protocol-field {eq [mask] | neq [mask] |
gt | lt | range range | regex string}
value [next next-protocol]
PHDF(プロトコル ヘッダー記述ファイル:Protocol Header Definition File)で定義されたフィールドにもとづいて、クラス マップの合致条件を設定します(任意項目)。/td>
手順12 Router(config-cmap)# match fr-dlci dlci-number クラス マップの合致条件として、DLCI(フレーム リレー データリンク接続識別子:Data Link Connection Identifier)番号を指定します(任意項目)。
手順13 Router(config-cmap)# match input-interface interface-name 指定された入力インターフェースを合致条件として使用するようにクラス マップを設定します(任意項目)。
手順14 Router(config-cmap)# match ip rtp starting-port-number port-range 合致条件としてリアルタイム プロトコル(RTP)のポートを使用するようにクラス マップを設定します(任意項目)。
手順15 Router(config-cmap)# match mpls experimental mpls-values MPLS EXP(マルチプロトコル ラベルスイッチング実験的)フィールドに指定した値を合致条件として使用するようにクラス マップを設定します(任意項目)。
手順16 Router(config-cmap)# match mpls experimental topmost values 最上位ラベルのMPLS EXP値と照合します(任意項目)。
手順17 Router(config-cmap)# match not match-criteria 失敗した合致条件として使用する単一の合致条件値を指定します(任意項目)。
手順18 Router(config-cmap)# match packet length
{max maximum-length-value
[min minimum-length-value]
| min minimum-length-value
[max maximum-length-value]}
クラス マップの合致条件として、IPヘッダーのレイヤ3パケット長を指定します(任意項目)。
手順19 Router(config-cmap)# match port-type {routed | switched} {routed | switched}(任意項目)クラス マップのポート タイプにもとづいてトラフィックを照合します。
手順20 Router(config-cmap)#
match [ip] precedence
precedence-value
[precedence-value
precedence-value
precedence-value]
IP Precedence値を合致条件として特定します(任意項目)。
手順21 Router(config-cmap)# match protocol protocol-name

指定されたプロトコルにもとづいて、クラス マップの合致条件を設定します(任意項目)。

メモ:match protocol (NBAR)はNBARで使う別のコマンドです。NBARで既知のプロトコルに合致するかを確認するのが目的です。

手順22 Router(config-cmap)# match protocol citrix [appapplication-name-string] [ica-tag ica-tag-value] Citrixトラフィックに合致するNBARを設定します(任意項目)。
手順23 Router(config-cmap)# match protocol fasttrack file-transfer "regular-expression" FastTrackピア ツー ピア トラフィックに照合するようにNBARを設定します(任意項目)。
手順24 Router(config-cmap)# match protocol gnutella file-transfer "regular-expression" Gnutellaピア ツー ピア トラフィックを照合するNBARを設定します(任意項目)。
手順25 Router(config-cmap)# match protocol http [url url-string | host hostname-string | mime MIME-type | c-header-field c-header-field-string | s-header-field s-header-field-string] URL、ホスト、MIMEタイプ(Multipurpose Internet Mail Extensions:多目的インターネット メール拡張)、またはHTTPパケット ヘッダーのフィールドごとにHTTPトラフィックを照合するNBARを設定します(任意項目)。
手順26 Router(config-cmap)# match protocol rtp [audio | video | payload-type payload-string] リアルタイム転送プロトコル(RTP)トラフィックを照合するNBARを設定します(任意項目)。
手順27 Router(config-cmap)# match qos-groupqos-group-value 特定のQoSグループ値を合致条件として特定します(任意項目)。
手順28 Router(config-cmap)# match source-address macaddress-destination 合致条件として送信元MACアドレスを使用します(任意項目)。
手順29 Router(config-cmap)# match start {l2-start | l3-start} offset number size number {eq | neq | gt | lt | rangerange | regex string} {value [value2] | [string]} データグラム ヘッダー(レイヤー2)またはネットワーク ヘッダー(レイヤ3)にもとづいて、クラス マップの合致条件を設定します(任意項目)。
手順30 Router(config-cmap)# match tag {tag-name} 合致条件としてタグ タイプを指定します(任意項目)。
手順31 Route(config-cmap)# exit class-mapコンフィグレーション モードを終了します(任意項目)。

トラフィック ポリシーを作成する

トラフィック ポリシー(別称ポリシー マップ)を設定するには、policy-mapコマンドを使用します。policy-mapコマンドを使用してトラフィック ポリシー名を指定したり、policy-mapコンフィグレーション モードを開始したりできます(トラフィック ポリシングやトラフィック シェーピングなどのQoS機能を有効にするための前提条件)。

トラフィック ポリシーをトラフィック クラスに関連付ける

policy-mapコマンドを使用した後、classコマンドを使用して、トラフィック クラス(「トラフィック クラスを作成する」セクションで作成済み)をトラフィック ポリシーに関連付けます。

classコマンドの構文は次のとおりです。

class class-name
no class class-name

class-name引数には、class-mapコマンドを使用してトラフィック クラスを作成したときに作成したクラスの名前を使用します(「トラフィック クラスを作成する」セクションの手順3)。

classコマンドを入力すると、自動的にpolicy-mapクラス コンフィグレーション モードに入ります。policy-mapクラス コンフィグレーション モードは、特定のQoS機能を有効にするために使用されます。

手順

トラフィック ポリシー(ポリシー マップ)を作成し、1つ以上のQoS機能を有効にするには、次の手順で操作してください。

この手順では、1つ以上のQoS機能の有効化に使用できる各種コマンドを紹介します。たとえば、クラス ベースの加重均等キューイング(CBWFQ)を有効にするには、bandwidthコマンドを使用します。
メモ:使用できるコマンドや機能は、CiscoのOSタイプやハードウェアによって異なります。各OSやハードウェアのマニュアルを確認のうえ、設計・設定をお願いします。

設定手順

  コマンドまたは操作 目的
手順1 Router> enable 特権EXECモードを有効にします。
手順2 Router# configure terminal グローバル コンフィグレーション モードを開始します。
手順3 Router(config)# policy-map policy-name トラフィック ポリシーの名前を作成または指定し、policy-mapコンフィグレーション モードを開始します。
手順4 Router(config-pmap)# class {class-name |class-default} トラフィック クラスの名前(「トラフィック クラスを作成する」セクションで作成済み)を指定し、policy-mapクラス コンフィグレーション モードを開始します。
次の1つ以上のコマンドを使用して、使用する特定のQoS機能を有効にします。
手順5 Router(config-pmap-c)# bandwidth {bandwidth-kbps | percent percent } 輻輳中に、トラフィック クラスに保証される最小帯域を指定します。最小帯域保証は、kbps単位か使用可能な帯域全体の割合で指定できます(任意項目)。
手順6 Router(config-pmap-c)# fair-queue number-of-queues トラフィック クラスに予約されるキューの数を指定します(任意項目)。
手順7 Router (config-pmap-c)# police bps [burst-normal][burst-max] conform-action action exceed-action action [violate-action action] トラフィック ポリシングを設定します(任意項目)。
手順8 Router(config-pmap-c)# priority{bandwidth-kbps | percent percentage} [burst] ポリシー マップに属するトラフィックのクラスに優先順位を付けます(任意項目)。
手順9 Router(config-pmap-c)# queue-limitnumber-of-packets ポリシー マップで設定されたクラスに対してキューが保持できるパケットの最大数を指定または変更します(任意項目)。
手順10 Router(config-pmap-c)# random-detect [dscp-based | prec-based] WRED(加重ランダム早期検知:Weighted Random Early Detection)かDWRED(Distributed WRE)を有効にします(任意項目)。
参考情報:Ciscoドキュメント
手順11 Router(config-pmap-c)# set atm-clp ポリシー マップが設定されている場合、CLPビット(Cell Lost Priority:セル損失優先度)を設定します(任意項目)。
手順12 Router(config-pmap-c)# set cos {cos-value | from-field [table table-map-name]} 送信パケットのレイヤー2 CoS(Class of Service)値を設定します(任意項目)。
手順13 Router(config-pmap-c)# set discard-class value discard-class値でパケットをマークします(任意項目)。
手順14 Router(config-pmap-c)# set [ip] dscp {dscp-value | from-field [table table-map-name]} Type of Service(ToS)バイトのDSCP(DiffServ Code Point)値を設定して、パケットをマークします(任意項目)。
手順15 Router(config-pmap-c)# set fr-de インターフェースから送信されるすべてのトラフィックに対して、フレームリレー フレームのアドレス フィールドで廃棄適性(DE:Discard Eligible)ビット設定を1に変更します(任意項目)。
Ciscoドキュメント:廃棄適正ビットの設定(フレーム リレー PVC へのパケット マーキングの設定)
手順16 Router(config-pmap-c)# set precedence{precedence-value | from-field [table table-map-name]} パケット ヘッダーに優先順位値を設定します(任意項目)。
手順17 Route(config-pmap-c)# set mpls experimental value パケットが指定されたポリシー マップと合致する場合にMPLSビットが設定される値を指定します(任意項目)。
手順18 Router (config-pmap-c)# set qos-group{group-id | from-field [table table-map-name]} パケットを分類するために後で使用できるQoSグループ識別子(ID)を設定します(任意項目)。
手順19 Router(config-pmap-c)# service-policypolicy-map-name 合致条件として使用されるトラフィック ポリシーの名前を指定します。トラフィック ポリシーのネストで利用ください(任意項目)。
手順20 Router(config-pmap-c)# shape {average | peak } mean-rate [burst-size [excess-burst-size ]] 指定されたアルゴリズムに従って、指定されたビット レートにトラフィックをシェーピングします(任意項目)。
手順21 Router(config-pmap-c)# exit policy-mapクラス コンフィグレーション モードを終了します(任意項目)。

インターフェースにトラフィック ポリシーを適用する

トラフィック ポリシーをインターフェースに割り当てるには、service-policyコマンドを使用します。service-policyコマンドを使用してトラフィック ポリシーを適用する方向を指定することもできます(インターフェースに着信するパケットまたはインターフェースから送信されるパケットのいずれか)。

service-policyコマンドの構文は次のとおりです。

service-policy {input | output} policy-map-name
no service-policy {input | output} policy-map-name

手順

トラフィック ポリシーをインターフェースに割り当てるには、次の手順で操作してください。

使用しているプラットフォームとCisco IOSリリースに応じて、トラフィック ポリシーをATMのPVC(Permanent Virtual Circuit:固定仮想回線)や、DLCI(フレームリレー データリンク接続識別子)などのインターフェースに割り当てられます。
  コマンドまたは操作 目的
手順1 Router> enable 特権EXECモードを有効にします。
手順2 Router# configure terminal グローバル コンフィグレーション モードを開始します。
手順3 Router(config)# interface serial0 インターフェース タイプを設定し、インターフェース コンフィグレーション モードを開始します。
手順4 Router(config-if)# service-policy output [type access-control] {input | output} policy-map-name ポリシー マップをインターフェースに割り当てます。
手順5 Router (config-if)# exit インターフェース コンフィグレーション モードを終了します(任意項目)。
インターフェースが相互に関連付けられている場合、トンネル インターフェースと物理インターフェースの複数のトラフィック ポリシーはサポートされません。たとえば、トラフィック ポリシーがトンネル インターフェースに割り当てられているのに、トンネル インターフェースの関連付いた物理インターフェースに別のトラフィック ポリシーを割り当てると、トンネル インターフェースのトラフィック ポリシーのみが正しく機能します。

トラフィック クラスとトラフィック ポリシー情報を確認する

トラフィック クラスまたはトラフィック ポリシーに関する情報を表示して確認するには、次の手順で操作してください。

  コマンドまたは操作 目的
手順1 Router> enable 特権EXECモードを有効にします。
手順2 Router# show class-map [type {stack | access-control}] [class-map-name] すべてのクラス マップとその合致条件を表示します(任意項目)。
手順3 Router# show policy-map policy-mapclass class-name 指定されたポリシー マップの指定されたクラスの設定を表示します(任意項目)。
手順4 Router# show policy-map policy-map 指定されたポリシー マップのすべてのクラスまたは既存のすべてのポリシー マップのすべてのクラスの設定を表示します(任意項目)。
手順5 Router# show policy-map interface[type access-control] type number [vc[vpi/] vci] [dlci dlci] [input | output] 指定されたインターフェースまたはサブインターフェース上、またはインターフェース上の特定の相手先固定接続(PVC)上のすべてのサービス ポリシーに対して設定されているすべてのクラスのパケット統計を表示します(任意項目)。
手順6 Router# exit 特権EXECモードを終了します(任意項目)。

CBQoSデータを使用する

ポーリングが開まると、「CBQoS」タブでレポートを表示できます。トラフィック量、パケット数、トラフィック速度、キューに関するレポートを作成できます。ポリシング前(prepolicy)、ポリシング後(postpolicy)、さまざまなトラフィック クラスの廃棄をキューイング ステータスとあわせて確認し、QoS設定の効果測定をしてください。画面では、ポリシング前(prepolicy)、ポリシング後(postpolicy)、廃棄済み(dropped)の個別のグラフが表示されます。ポリシング前(prepolicy)は、CBQoSポリシーが適用される前の状態を指します(前世代のポリシーではありません)。ポリシング後(postpolicy)は、CBQoSポリシーが適用された後の状態を指します。廃棄済み(dropped)は、ポリシーの適用結果として廃棄されたパケットに関する情報を提供します。

CBQoSレポートはPDFにエクスポートするか、「アクション」に移動して必要なアクションをクリックし、メールで送信できます。

これらの情報にもとづいて、組織の事業目標に合わせてポリシーを適切に修正できます。