Cisco セキュリティ アプライアンス コマンドライン コンフィギュレーション ガイド v.8.0
QoS の設定
QoS の設定
発行日;2012/02/01 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 20MB) | フィードバック

目次

QoS の設定

QoS の概要

サポートされる QoS 機能

トークン バケットとは

ポリシングの概要

プライオリティ キューイングの概要

トラフィック シェーピングの概要

QoS 機能の相互作用方法

DSCP と DiffServ の保持

インターフェイスの標準のプライオリティ キューの作成

キューと TX リング制限の判別

プライオリティ キューの設定

クラス マップを使用した、QoS の対象にするトラフィックの特定

QoS クラス マップの作成

QoS クラス マップの例

標準のプライオリティ キューイングやポリシングのポリシーの作成

トラフィック シェーピングと階層型プライオリティ キューイングのポリシーの作成

QoS 統計情報の表示

QoS ポリシング統計情報の表示

QoS の標準のプライオリティ統計情報の表示

QoS シェーピング統計情報の表示

QoS の標準のプライオリティ キュー統計情報の表示

QoS の設定

衛星接続を使用した長距離電話では、会話が、短い間ですが認識できる程度に割り込みされ、不定期に中断されることがあります。このような中断は、ネットワークで送信されるパケットが到着する間隔の時間で、遅延と呼ばれます。音声やビデオなどのネットワーク トラフィックでは、長時間の遅延は許容されません。 Quality of Service(QoS; サービス品質)は、重要なトラフィックにプライオリティを設定して、帯域幅の占有を防止し、ネットワークのボトルネックを管理してパケット ドロップを防ぐ機能です。

この章では、QoS ポリシーを適用する方法について説明します。次の項で構成されています。

「QoS の概要」

「インターフェイスの標準のプライオリティ キューの作成」

「クラス マップを使用した、QoS の対象にするトラフィックの特定」

「標準のプライオリティ キューイングやポリシングのポリシーの作成」

「トラフィック シェーピングと階層型プライオリティ キューイングのポリシーの作成」

「QoS 統計情報の表示」

QoS の概要

常に変化するネットワーク環境では、QoS は 1 回限りの構成ではなく、ネットワーク設計の継続的で不可欠な要素であることを考慮する必要があります。


) QoS は、シングル コンテキスト モードだけで使用可能です。


この項では、セキュリティ アプライアンスでサポートされる QoS 機能について説明します。次の項目を取り上げます。

「サポートされる QoS 機能」

「トークン バケットとは」

「ポリシングの概要」

「プライオリティ キューイングの概要」

「トラフィック シェーピングの概要」

「DSCP と DiffServ の保持」

サポートされる QoS 機能

セキュリティ アプライアンスでは、次の QoS の機能がサポートされています。

ポリシング:個々のフローがネットワーク帯域幅を占有するのを防止するために、フローごとに使用される最大帯域幅を制限できます。詳細については、「ポリシングの概要」を参照してください。

プライオリティ キューイング:Voice over IP(VoIP)などの遅延が許容されない重要なトラフィックでは、Low Latency Queuing(LLQ; 低遅延キューイング)のトラフィックを識別して、そのようなトラフィックが常に他のトラフィックの前に送信されるようにできます。詳細については、「プライオリティ キューイングの概要」を参照してください。

トラフィック シェーピング:ファスト イーサネットを備えたセキュリティ アプライアンスなど、パケットを高い速度で送信するデバイスがあり、そのデバイスがケーブル モデムなどの低速のデバイスに接続されている場合は、ケーブル モデムが、パケットが頻繁にドロップされるボトルネックとなります。回線の速度が異なるネットワークを管理するには、固定されたより低いレートでパケットを送信するようセキュリティ アプライアンスを設定できます。詳細については、「トラフィック シェーピングの概要」を参照してください。

トークン バケットとは

トークン バケットは、フローでデータを調整するデバイスを管理するために使用されます。たとえば、調整機能にはトラフィック ポリシング機能やトラフィック シェーパーがあります。トークン バケット自体には、廃棄ポリシーやプライオリティ ポリシーはありません。トークン バケットはトークンを廃棄し、フローが調整機能をオーバードライブする場合は送信キューの管理問題をフローに任せます。

トークン バケットは、転送レートの正式な定義です。これには、バースト サイズ、平均レート、および時間間隔の 3 つの構成要素があります。平均レートは通常ビット/秒で表されますが、次のように示される関係によって 3 番目の値から 2 つの値が取得されることがあります。

平均レート = バースト サイズ/時間間隔

次に、これらの用語の定義を示します。

平均レート:Committed Information Rate(CIR; 認定情報レート)とも呼ばれます。これは、単位時間あたりに送信または転送できるデータの平均量を指定します。

バースト サイズ:Committed Burst(Bc)サイズとも呼ばれます。これは、スケジュールの懸念を引き起こさないようにするために、特定の単位時間内に送信できる、バーストあたりのトラフィック量をビットまたはバイト単位で指定します (トラフィック シェーピングの場合はバーストあたりのビット数を指定し、ポリシングの場合はバーストあたりのバイト数を指定します)。

時間間隔:測定間隔とも呼ばれます。これは、バーストあたりのタイム クォンタムを秒単位で指定します。

トークン バケット メタフォでは、トークンは、特定のレートでのバケットへの入力です。バケット自体に指定された容量があります。バケットがいっぱいになると、新たに到着したトークンは廃棄されます。各トークンは、ソースが特定のビット数をネットワークに送信するための許可です。パケットを送信するには、調整機能によって、パケット サイズの表現と等しいトークン数をバケットから削除する必要があります。

パケットを送信するために十分なトークンがバケット内にない場合は、パケットは、バケットに十分なトークンが確保される(トラフィック シェーピングの場合)か、パケットが廃棄されるか切り下げられる(ポリシングの場合)まで待機します。すでにバケットがトークンでいっぱいになっている場合は、着信トークンがオーバーフローし、以降のパケットに使用できません。そのため、いつでも、送信元がネットワークに送信できる最大バーストが、ほぼバケット サイズに相当します。

トラフィック シェーピングに使用されるトークン バケットのメカニズムには、トークン バケットと、データ バッファまたはキューの両方があることに注意してください。データ バッファがなかった場合は、ポリシング機能になります。トラフィック シェーピングでは、即時に送信できない着信パケットは、データ バッファで遅延します。

トラフィック シェーピングの場合は、トークン バケットはバースト性を許可しますが、これをバインドします。フローが、時間間隔で割ったトークン バケット容量に、トークンがトークン バケットに入れられる設定済みのレートをプラスした値よりも速く送信することがないように、バースト性がバインドされることが保証されます。次の式を参照してください。

(トークン バケットの容量 [ビット]/時間間隔[秒])+ 設定済みのレート(bps)= 最大フロー速度(bps)

また、バースト性のこのバインド方法は、長期間の伝送レートが、トークンがバケットに入れられる設定済みのレートを超えないようにします。

ポリシングの概要

ポリシングは、設定した最大レート(ビット/秒)を超えるトラフィックが発生しないようにして、1 つのトラフィック フローまたはクラスが全体のリソースを占有できないようにする方法です。トラフィックが最大レートを超えると、セキュリティ アプライアンスは超過したトラフィックをドロップします。また、ポリシングは、許可されるトラフィックの最大単一バーストも設定します。

プライオリティ キューイングの概要

LLQ プライオリティ キューイングを使用すると、特定のトラフィック フロー(音声やビデオのような遅延が問題になるトラフィックなど)を他のトラフィックより優先することができます。

セキュリティ アプライアンスでは、次の 2 つのタイプのプライオリティ キューイングがサポートされます。

標準のプライオリティ キューイング:標準のプライオリティ キューイングは、インターフェイスで LLQ プライオリティ キューを使用します(「インターフェイスの標準のプライオリティ キューの作成」を参照)が、その他のトラフィックはすべて「ベストエフォート」キューを通過します。キューは無限大ではないため、いっぱいになってオーバーフローすることがあります。キューがいっぱいになると、以降のパケットはキューに入ることができず、すべてドロップされます。これは テール ドロップ と呼ばれます。キューがいっぱいにならないようにするには、キューのバッファ サイズを大きくします。また、送信キューに許可されるパケットの最大数を調整するという方法もあります。これらのオプションによって、プライオリティ キューイングの遅延と強固さを制御できます。LLQ キューのパケットは、常にベストエフォート キューのパケットよりも前に送信されます。

階層型プライオリティ キューイング:階層型プライオリティ キューイングは、トラフィック シェーピング キューをイネーブルにするインターフェイスで使用されます。シェーピングしたトラフィックのサブネットにプライオリティを付けることができます。標準のプライオリティ キューは使用されません。階層型プライオリティ キューイングに関する次のガイドラインを参照してください。

プライオリティ パケットは、常にシェープ キューの先頭に入れられるため、必ず他の非プライオリティ キュー パケットよりも前に送信されます。

プライオリティ パケットは、プライオリティ トラフィックの持続レートがシェープ レートを超えない限り、シェープ キューからドロップされることはありません。

IPSec で暗号化されたパケットの場合は、DSCP または優先設定に基づいてトラフィックだけを一致させることができます。

IPSec-over-TCP は、プライオリティ トラフィックの分類ではサポートされません。

トラフィック シェーピングの概要

トラフィック シェーピングは、デバイスとリンク速度を一致させるために使用されます。その結果、パケット損失、可変遅延、およびリンクの飽和状態が制御され、ジッタと遅延が生じることがあります。

トラフィック シェーピングは、物理インターフェイスまたは VLAN(ASA 5505 の場合)のすべての発信トラフィックに適用する必要があります。特定のタイプのトラフィックについてトラフィック シェーピングを設定することはできません。

トラフィック シェーピングは、パケットがインターフェイスで送信する準備ができている場合に実装されます。そのため、レートの計算は、IPSec ヘッダーや L2 ヘッダーなどの潜在的なすべてのオーバーヘッドを含む、送信されるパケットの実際のサイズに基づいて実行されます。

シェーピングされるトラフィックには、コンピュータを通過するトラフィックとコンピュータからのトラフィックの両方が含まれます。

シェープ レートの計算は、標準のトークン バケット アルゴリズムに基づいて行われます。トークン バケット サイズは、バースト サイズ値の 2 倍です。「トークン バケットとは」を参照してください。

バースト トラフィックが指定されたシェープ レートを超えると、パケットはキューに入れられて後で送信されます。次に、シェープ キューに関するいくつかの特性を示します(階層型プライオリティ キューイングについては、「プライオリティ キューイングの概要」を参照)。

キュー サイズは、シェープ レートに基づいて計算されます。キューは、1500 バイトのパケットと仮定すると、200 ミリ秒に相当するシェープ レート トラフィックを保持できます。最小キュー サイズは 64 です。

キューの制限に達すると、パケットはテール ドロップされます。

OSPF hello パケットなどの特定の重要なキープアライブ パケットは、ドロップされません。

時間間隔は、 time_interval = burst_size / average_rate によって取得されます。時間間隔が長くなるほど、シェープされるトラフィックのバースト性は高くなる可能性があり、リンクがアイドルになる時間も長くなることがあります。次の極端な例を使用すると、効果を最もよく理解できます。

平均レート = 1000000

バースト サイズ = 1000000

上の例では、時間間隔は 1 秒です。これは、100 Mbps FE リンクで 1 秒間隔の最初の 10 ミリ秒以内に 1 Mbps のトラフィックをバーストでき、次の時間間隔までパケットを送信できずに残りの 990 ミリ秒はアイドルのままになることを意味します。そのため、音声トラフィックなどの遅延が問題になるトラフィックがある場合は、時間間隔が短くなるように、バースト サイズを、平均レートと比較して少なくする必要があります。

QoS 機能の相互作用方法

セキュリティ アプライアンスで望ましい場合は、それぞれの QoS 機能を単独で設定できます。ただし、多くの場合、セキュリティ アプライアンスで複数の QoS 機能を設定するため、たとえば一部のトラフィックにプライオリティを付けて、他のトラフィックで帯域幅の問題が発生しないようにできます。

インターフェイスごとにサポートされる次の機能の組み合せを参照してください。

標準のプライオリティ キューイング(特定のトラフィック)+ ポリシング(残りのトラフィック)。

同じトラフィック セットについてプライオリティ キューイングとポリシングを設定することはできません。

トラフィック シェーピング(あるインターフェイスのすべてのトラフィック)+ 階層型プライオリティ キューイング(トラフィックのサブネット)。

同じインターフェイスでトラフィック シェーピングと標準のプライオリティ キューイングを設定することはできません。階層型プライオリティ キューイングだけが許可されます。たとえば、グローバル ポリシーに標準のプライオリティ キューイングを設定して、特定のインターフェイスにトラフィック シェーピングを設定すると、最後に設定した機能は拒否されます。これは、グローバル ポリシーがインターフェイス ポリシーと重複するためです。

通常、トラフィック シェーピングをイネーブルにする場合は、セキュリティ アプライアンスで設定の制限はありませんが、同じトラフィックでポリシングもイネーブルにはしません。

DSCP と DiffServ の保持

DSCP のマーキングは、セキュリティ アプライアンスを通過するすべてのトラフィックで保持されます。

セキュリティ アプライアンスは、分類されたトラフィックをローカルにマークしたり再マークしたりしませんが、すべてのパケットの Expedited Forwarding(EF; 緊急転送)DSCP ビットを引き受けて、「プライオリティ」の処理が必要かどうかを判別して、これらのパケットを LLQ に送信します。

DiffServ のマーキングは、搬送中に QoS を適用できるように(QoS トンネルの事前分類)、パケットがサービス プロバイダー バックボーンを通過する際にパケットで保持されます。

インターフェイスの標準のプライオリティ キューの作成

物理インターフェイスでトラフィックの標準のプライオリティ キューイングをイネーブルにする場合は、インターフェイスごとにプライオリティ キューも作成する必要があります。それぞれの物理インターフェイスは 2 つのキュー(1 つはプライオリティ トラフィック用で、もう 1 つはその他すべてのトラフィック用)を使用します。他のトラフィックでは、オプションでポリシングを設定できます。


) トラフィック シェーピングが指定された階層型プライオリティ キューイングでは標準のプライオリティ キューは必要ありません。詳細については、「プライオリティ キューイングの概要」を参照してください。


この項は、次の内容で構成されています。

「キューと TX リング制限の判別」

「プライオリティ キューの設定」

キューと TX リング制限の判別

プライオリティ キューと TX リング制限を判別するには、次のワークシートを使用してください。

表 25-1 に、プライオリティ キュー サイズの計算方法を示します。キューは無限大ではないため、いっぱいになってオーバーフローすることがあります。キューがいっぱいになると、以降のパケットはキューに入ることができず、すべてドロップされます( テール ドロップ と呼ばれます)。キューがいっぱいにならないようにするには、「プライオリティ キューの設定」に従って、キューのバッファ サイズを調整します。

 

表 25-1 キュー制限のワークシート

ステップ 1

__________

発信帯域幅(Mbps または Kbps)1

Mbps

 
x

125

=

__________

バイト数/ms

Kbps

 
x

.125

=

__________

バイト数/ms

ステップ 2

___________

ステップ 1 のバイト数/ms

 
÷

 

__________

平均パケット サイズ(バイト)2

x

__________

遅延(ミリ秒)3

 
=

__________

キュー制限
(パケット数)

1.たとえば、DSL には、アップリンク速度として 768 Kbps が指定されていることがあります。プロバイダーに確認してください。

2.コーデックまたはサンプリング サイズからこの値を判別します。たとえば、VoIP over VPN の場合は、160 バイトを使用できます。使用するサイズがわからない場合は、256 バイトをお勧めします。

3.遅延は、ご使用のアプリケーションによって異なります。たとえば、VoIP の推奨される最大遅延は 200 ミリ秒です。使用する遅延がわからない場合は、500 ミリ秒をお勧めします。

表 25-2 に、TX リング制限の計算方法を示します。この制限は、輻輳が解消するまでパケットをバッファするために、イーサネット送信ドライバがインターフェイスのキューに戻すまでドライバに入れることができるパケットの最大数を決定します。この設定によって、ハードウェアベースの送信リングは、プライオリティが高いパケットに対して一定期間の余分な遅延を発生させないことが保証されます。

 

表 25-2 TX リング制限のワークシート

ステップ 1

__________

発信帯域幅(Mbps または Kbps)4

Mbps

 
x

125

 
=

__________

バイト数/ms

Kbps

 
x

0.125

 
=

__________

バイト数/ms

ステップ 2

___________

ステップ 1 のバイト数/ms

 
÷

 

__________

最大パケット サイズ(バイト)5

 
x

__________

遅延(ミリ秒)6

=

__________

TX リング制限
(パケット数)

4.たとえば、DSL には、アップリンク速度として 768 Kbps が指定されていることがあります。プロバイダーに確認してください。

5.通常、最大サイズは 1538 バイトで、タグ付けされたイーサネットでは 1542 バイトです。

6.遅延は、ご使用のアプリケーションによって異なります。たとえば、VoIP のジッタを制御するには、20 ミリ秒を使用する必要があります。

プライオリティ キューの設定

プライオリティ キューを作成するには、次の手順を実行します。


ステップ 1 プライオリティ キューを作成するには、次のコマンドを入力します。

hostname(config)# priority-queue interface_name
 

ここで、 interface_name 引数は、プライオリティ キューをイネーブルにする物理インターフェイス名で、ASA 5505 の場合は VLAN インターフェイス名を指定します。

ステップ 2 (オプション)プライオリティ キューのサイズを変更するには、次のコマンドを入力します。

hostname(config-priority-queue)# queue-limit number_of_packets
 

デフォルトのキュー制限は 1024 パケットです。キューは無限大ではないため、いっぱいになってオーバーフローすることがあります。キューがいっぱいになると、以降のパケットはキューに入ることができず、すべてドロップされます( テール ドロップ と呼ばれます)。キューがいっぱいになることを避けるには、 queue-limit コマンドを使用して、キューのバッファ サイズを大きくします。

number_of_packets 値を判別するには、「キューと TX リング制限の判別」を参照してください。

queue-limit コマンドの値の範囲の上限は、実行時に動的に決まります。この制限を表示するには、コマンドラインで queue-limit ? を入力します。主な決定要素は、キューのサポートに必要となるメモリと、デバイス上で使用可能なメモリの量です。

指定する queue-limit は、プライオリティが高い低遅延キューとベストエフォート キューの両方に影響します。

ステップ 3 (オプション)プライオリティ キューの深さを指定するには、次のコマンドを入力します。

hostname(config-priority-queue)# tx-ring-limit number_of_packets
 

デフォルトの tx-ring-limit は 128 パケットです。このコマンドは、輻輳が解消するまでパケットをバッファするために、イーサネット送信ドライバがインターフェイスのキューに戻すまでドライバに入れることができる、低遅延のパケットまたは通常のプライオリティのパケットの最大数を設定します。この設定によって、ハードウェアベースの送信リングは、プライオリティが高いパケットに対して一定期間の余分な遅延を発生させないことが保証されます。

number_of_packets 値を判別するには、「キューと TX リング制限の判別」を参照してください。

queue-limit コマンドの値の範囲の上限は、実行時に動的に決まります。この制限を表示するには、コマンドラインで tx-ring-limit ? を入力します。主な決定要素は、キューのサポートに必要となるメモリと、デバイス上で使用可能なメモリの量です。

指定する tx-ring-limit は、プライオリティが高い低遅延キューとベストエフォート キューの両方に影響します。


 

次の例は、デフォルトの queue-limit と tx-ring-limit を使用して、インターフェイス「outside」(GigabitEthernet0/1 インターフェイス)にプライオリティ キューを構築します。

hostname(config)# priority-queue outside
 

次の例は、queue-limit を 260 パケット、tx-ring-limit を 3 に設定して、インターフェイス「outside」(GigabitEthernet0/1 インターフェイス)にプライオリティ キューを構築します。

hostname(config)# priority-queue outside
hostname(config-priority-queue)# queue-limit 260
hostname(config-priority-queue)# tx-ring-limit 3

クラス マップを使用した、QoS の対象にするトラフィックの特定

QoS は、モジュラ ポリシー フレームワークの一部です。詳細については、「モジュラ ポリシー フレームワークの使用」を参照してください。モジュラ ポリシー フレームワークでは、クラス マップで QoS をイネーブルにするトラフィックを特定します。この項は、次の内容で構成されています。

「QoS クラス マップの作成」

「QoS クラス マップの例」

QoS クラス マップの作成

プライオリティ トラフィックでは、遅延が問題になるトラフィックだけを特定します。ポリシング トラフィックでは、その他すべてのトラフィックのポリシングを選択することも、トラフィックを特定のタイプに制限することもできます。トラフィック シェーピングでは、インターフェイスのすべてのトラフィックがシェーピングされます。

QoS トラフィックのクラス マップを作成するには、「トラフィック(レイヤ 3/4 クラス マップ)の特定」 class-map コマンドを参照してください。

トラフィックの突き合せは、アクセス リスト、トンネル グループ、DSCP、優先などの多数の特性に基づいて行うことができます。QoS の対象にするクラス マップを設定する場合は、次のガイドラインを参考にしてください。

トラフィック シェーピングの場合は、 class-default クラス マップだけを使用できます。これは、セキュリティ アプライアンスによって自動的に作成され、すべてのトラフィックと一致します。

プライオリティ トラフィックには class-default クラス マップを使用できません。

階層型プライオリティ キューイングの場合は、IPSec で暗号化されたパケットについては、DSCP または優先設定に基づいてトラフィックだけを一致させることができます。

階層型プライオリティ キューイングでは、IPSec-over-TCP トラフィックはサポートされません。

QoS クラス マップの例

たとえば、次のシーケンスで、 class-map コマンドは tcp_traffic というアクセス リストを使用して、すべての非トンネル TCP トラフィックを分類します。

hostname(config)# access-list tcp_traffic permit tcp any any
hostname(config)# class-map tcp_traffic
hostname(config-cmap)# match access-list tcp_traffic
 

次の例では、より限定的な一致基準を使用して、特定のセキュリティ関連のトンネル グループにトラフィックを分類します。これらの特定の一致基準では、トラフィックが特定のトンネルに分類されるために、最初の一致特性としてトンネル グループ(この例では、すでに定義されている Tunnel-Group-1)に一致する必要があります。次に、別の照合行でトラフィックを分類できます(IP DiffServ コード ポイント、緊急転送)。

hostname(config)# class-map TG1-voice
hostname(config-cmap)# match tunnel-group tunnel-grp1
hostname(config-cmap)# match dscp ef
 

次の例では、 class-map コマンドはトンネル トラフィックと非トンネル トラフィックの両方をトラフィック タイプに従って分類します。

hostname(config)# access-list tunneled extended permit ip 10.10.34.0 255.255.255.0 20.20.10.0 255.255.255.0
hostname(config)# access-list non-tunneled extended permit tcp any any
hostname(config)# tunnel-group tunnel-grp1 type IPSec_L2L
 
hostname(config)# class-map browse
hostname(config-cmap)# description "This class-map matches all non-tunneled tcp traffic."
hostname(config-cmap)# match access-list non-tunneled
 
hostname(config-cmap)# class-map TG1-voice
hostname(config-cmap)# description "This class-map matches all dscp ef traffic for tunnel-grp 1."
hostname(config-cmap)# match dscp ef
hostname(config-cmap)# match tunnel-group tunnel-grp1
 
hostname(config-cmap)# class-map TG1-BestEffort
hostname(config-cmap)# description "This class-map matches all best-effort traffic for tunnel-grp1."
hostname(config-cmap)# match tunnel-group tunnel-grp1
hostname(config-cmap)# match flow ip destination-address
 

次の例は、クラス トラフィックがトンネルとして指定されておらず、トンネルを 通過する 場合に、トンネル内のフローをポリシングする方法を示します。この例では、192.168.10.10 がリモート トンネルのプライベート側のホスト マシンのアドレスで、アクセス リストの名前は「host-over-l2l」です。クラス マップ(名前は「host-specific」)を作成することによって、LAN-to-LAN 接続でトンネルをポリシングする前に、「host-specific」クラスをポリシングできます。この例では、トンネルの前で「host-specific」トラフィックのレートが制限され、次にトンネルのレートが制限されます。

hostname(config)# access-list host-over-l2l extended permit ip any host 192.168.10.10
hostname(config)# class-map host-specific
hostname(config-cmap)# match access-list host-over-l2l
 

次の例は、前の項で作成したコンフィギュレーションで構築されています。前の例と同様に、tcp_traffic と TG1-voice という 2 つのクラス マップがあります。

hostname(config)# class-map TG1-best-effort
hostname(config-cmap)# match tunnel-group Tunnel-Group-1
hostname(config-cmap)# match flow ip destination-address
 

3 番目のクラス マップを追加すると、次のように、トンネルおよび非トンネル QoS ポリシーを定義する基本となります。トンネルおよび非トンネル トラフィックに対する単純な QoS ポリシーが作成され、クラス TG1-voice のパケットが低遅延キューに割り当てられて、tcp_traffic および TG1-best-effort トラフィック フローにレート制限が設定されます。

標準のプライオリティ キューイングやポリシングのポリシーの作成

「クラス マップを使用した、QoS の対象にするトラフィックの特定」でトラフィックを特定した後で、QoS アクション(およびその他の機能アクション)をクラス マップのトラフィックに割り当てるポリシー マップを、1 つのインターフェイスについて作成するか、すべてのインターフェイスについてグローバルに作成できます (その他の機能については、「モジュラ ポリシー フレームワークの使用」を参照してください。この章では、QoS だけについて説明します)。

同じポリシー マップ内の異なるクラス マップについて、標準のプライオリティ キューイングとポリシングを設定できます。有効な QoS 設定については、「QoS 機能の相互作用方法」を参照してください。

ポリシー マップを作成するには、次の手順を実行します。


ステップ 1 ポリシー マップを追加または編集するには、次のコマンドを入力します。

hostname(config)# policy-map name
 

次の例を参考にしてください。

hostname(config)# policy-map QoS_policy
 

ステップ 2 プライオリティ キューイングを設定するには、次のコマンドを入力します。

hostname(config-pmap)# class priority_map_name
hostname(config-pmap-c)# priority
 

ここで、 priority_map_name は、「クラス マップを使用した、QoS の対象にするトラフィックの特定」でプライオリティ トラフィックについて作成したクラス マップです。

次の例を参考にしてください。

hostname(config)# class-map priority-class
hostname(config-cmap)# match tunnel-group Tunnel-Group-1
hostname(config-cmap)# match dscp ef
 
hostname(config-cmap)# policy-map QoS_policy
 
hostname(config-pmap)# class priority_class
hostname(config-pmap-c)# priority
 

ステップ 3 ポリシングを設定するには、次のコマンドを入力します。

hostname(config-pmap)# class policing_map_name
hostname(config-pmap-c)# police {output | input} conform-rate [conform-burst] [conform-action [drop | transmit]] [exceed-action [drop | transmit]]
 

ここで、 policing_map_name は、「クラス マップを使用した、QoS の対象にするトラフィックの特定」でプライオリティ トラフィックについて作成したクラス マップです。

conform-burst 引数は、1000 ~ 512000000 バイトの範囲で、持続したバーストで許可される瞬間的なバイトの最大数を指定します。これを超えると、レート値に適応するためにトラフィックが抑制されます。

conform-action キーワードは、レートが conform_burst 値よりも少ない場合に行うアクションを設定します。

conform-rate 引数は、このトラフィック フローのレート制限を秒あたり 8000 ~ 2000000000 ビットの範囲で設定します。

drop キーワードはパケットをドロップします。

exceed-action キーワードは、レートが conform-rate 値~ conform-burst 値の範囲にある場合に行うアクションを設定します。

input キーワードは、入力方向で流れるトラフィックのポリシングをイネーブルにします。

output キーワードは、出力方向で流れるトラフィックのポリシングをイネーブルにします。

transmit キーワードはパケットを送信します。

次の例を参考にしてください。

hostname(config)# class-map policing-class
hostname(config-cmap)# match any
 
hostname(config-cmap)# policy-map QoS_policy
 
hostname(config-pmap)# class police_class
hostname(config-pmap-c)# police output 56000 10500
 

ステップ 4 1 つ以上のインターフェイスでポリシー マップをアクティブにするには、次のコマンドを入力します。

hostname(config)# service-policy policymap_name {global | interface interface_name}
 

ここで、 global はポリシー マップをすべてのインターフェイスに適用し、 interface はポリシーを 1 つのインターフェイスに適用します。グローバル ポリシーは 1 つしか適用できません。インターフェイス サービス ポリシーは、特定の機能のグローバル サービス ポリシーよりも優先されます。たとえば、検査が設定されたグローバル ポリシーおよび TCP 正規化が設定されたインターフェイス ポリシーがある場合は、検査と TCP の正規化の両方がインターフェイスに適用されます。ただし、検査が設定されたグローバル ポリシーおよび検査が設定されたインターフェイス ポリシーがある場合は、インターフェイス ポリシー検査だけがインターフェイスに適用されます。


 

この例では、tcp_traffic クラスのトラフィックの最大レートは 56,000 ビット/秒で、最大バースト サイズは 10,500 バイト/秒です。TC1-BestEffort クラスの最大レートは 200,000 ビット/秒で、最大バーストは 37,500 バイト/秒です。TC1-voice クラスのトラフィックは、プライオリティ クラスに属しているため、最大速度またはバースト レートでポリシングされません。

hostname(config)# access-list tcp_traffic permit tcp any any
hostname(config)# class-map tcp_traffic
hostname(config-cmap)# match access-list tcp_traffic
 
hostname(config)# class-map TG1-voice
hostname(config-cmap)# match tunnel-group tunnel-grp1
hostname(config-cmap)# match dscp ef
 
hostname(config-cmap)# class-map TG1-BestEffort
hostname(config-cmap)# match tunnel-group tunnel-grp1
hostname(config-cmap)# match flow ip destination-address
 
hostname(config)# policy-map qos
hostname(config-pmap)# class tcp_traffic
hostname(config-pmap-c)# police output 56000 10500
 
hostname(config-pmap-c)# class TG1-voice
hostname(config-pmap-c)# priority
 
hostname(config-pmap-c)# class TG1-best-effort
hostname(config-pmap-c)# police output 200000 37500
 
hostname(config-pmap-c)# class class-default
hostname(config-pmap-c)# police output 1000000 37500
 
hostname(config-pmap-c)# service-policy qos global

トラフィック シェーピングと階層型プライオリティ キューイングのポリシーの作成

QoS アクション(およびその他の機能アクション)をクラス マップのトラフィックに割り当てるポリシー マップを、1 つのインターフェイスについて作成するか、すべてのインターフェイスについてグローバルに作成できます (その他の機能については、「モジュラ ポリシー フレームワークの使用」を参照してください。この章では、QoS だけについて説明します)。

インターフェイスのすべてのトラフィックに対してトラフィック シェーピングを設定し、オプションで遅延が問題になるトラフィックのサブセットに対して階層型プライオリティ キューイングを設定できます。有効な QoS 設定については、「QoS 機能の相互作用方法」を参照してください。

階層型プライオリティ キューイングを設定する場合は、最初に「クラス マップを使用した、QoS の対象にするトラフィックの特定」でトラフィックを特定します。トラフィック シェーピングでは常に、自動的に使用可能になる class-default クラス マップが使用されます。


) プライオリティ キューイングの副作用の 1 つは、パケットの順序が変化することです。IPSec パケットでは、アンチ リプレイ ウィンドウの中にない、順序が正しくないパケットを受信すると、警告の syslog メッセージが生成されます。これらの警告は、プライオリティ キューイングでは誤報となります。潜在的な誤報を回避するには、IPSec アンチ リプレイ ウィンドウ サイズを設定できます。『Cisco Security Appliance Command Reference』で crypto ipsec security-association replay コマンドを参照してください。


ポリシー マップを作成するには、次の手順を実行します。


ステップ 1 (オプション)階層型プライオリティ キューイングでは、次のコマンドを入力して、クラス マップにプライオリティ キューイング アクションを適用するポリシー マップを作成します。

hostname(config)# policy-map name
hostname(config-pmap)# class priority_map_name
hostname(config-pmap-c)# priority
 

ここで、 priority_map_name は、「クラス マップを使用した、QoS の対象にするトラフィックの特定」でプライオリティ トラフィックについて作成したクラス マップです。

次の例を参考にしてください。

hostname(config)# policy-map priority-sub-policy
hostname(config-pmap)# class priority-sub-map
hostname(config-pmap-c)# priority
 

ステップ 2 トラフィック シェーピングのポリシー マップを追加または編集するには、次のコマンドを入力します。

hostname(config)# policy-map name
 

次の例を参考にしてください。

hostname(config)# policy-map shape_policy
 

ステップ 3 トラフィック シェーピングを設定するには、次のコマンドを入力します。

hostname(config-pmap)# class class-default
hostname(config-pmap-c)# shape average rate [burst_size]
 

ここで、 average rate 引数は、特定の一定期間にわたるトラフィックの平均レート(ビット/秒)を 64000 ~ 154400000 の範囲で設定します。値は 8000 の倍数で指定します。期間の計算方法の詳細については、「トラフィック シェーピングの概要」を参照してください。

burst_size 引数は、特定の一定期間に送信できる平均バースト サイズ(ビット)を 2048 から 154400000 の範囲で設定します。値は 128 の倍数で指定します。 burst_size を指定しない場合は、デフォルト値は、指定された平均レートでのトラフィックの 4 ミリ秒に相当します。たとえば、平均レートが 1000000 ビット/秒である場合、4 ミリ秒では 1000000 * 4/1000 = 4000 になります。

match any として定義されている class-default クラス マップだけを識別できます。これは、セキュリティ アプライアンスで、トラフィック シェーピングのためにすべてのトラフィックを一致させる必要があるためです。

ステップ 4 (オプション)階層型プライオリティ キューイングを設定するには、次のコマンドを入力します。

hostname(config-pmap-c)# service-policy priority_policy_map_name
 

ここで、 priority_policy_map_name は、ステップ 1でプライオリティ トラフィックについて作成したポリシー マップです。

次の例を参考にしてください。

hostname(config)# policy-map priority-sub-policy
hostname(config-pmap)# class priority-sub-map
hostname(config-pmap-c)# priority
 
hostname(config-pmap-c)# policy-map shape_policy
hostname(config-pmap)# class class-default
hostname(config-pmap-c)# shape
hostname(config-pmap-c)# service-policy priority-sub-policy
 

ステップ 5 インターフェイスでポリシー マップをアクティブにするには、次のコマンドを入力します。

hostname(config)# service-policy policymap_name interface interface_name
 

) グローバル ポリシーではトラフィック シェーピングを設定できません。



 

次の例では、外部インターフェイスでトラフィック シェーピングをイネーブルにして、トラフィックを 2 Mbps に制限します。プライオリティ キューイングは、DSCP EF と AF13 でタグ付けされた VoIP トラフィックと IKE トラフィックでイネーブルにされます。

hostname(config)# access-list ike permit udp any any eq 500
hostname(config)# class-map ike
hostname(config-cmap)# match access-list ike
 
hostname(config-cmap)# class-map voice_traffic
hostname(config-cmap)# match dscp EF AF13
 
hostname(config-cmap)# policy-map qos_class_policy
hostname(config-pmap)# class voice_traffic
hostname(config-pmap-c)# priority
hostname(config-pmap-c)# class ike
hostname(config-pmap-c)# priority
 
hostname(config-pmap-c)# policy-map qos_outside_policy
hostname(config-pmap)# class class-default
hostname(config-pmap-c)# shape average 2000000 16000
hostname(config-pmap-c)# service-policy qos_class_policy
 
hostname(config-pmap-c)# service-policy qos_outside_policy interface outside
 

QoS 統計情報の表示

この項は、次の内容で構成されています。

「QoS ポリシング統計情報の表示」

「QoS の標準のプライオリティ統計情報の表示」

「QoS シェーピング統計情報の表示」

「QoS の標準のプライオリティ キュー統計情報の表示」

QoS ポリシング統計情報の表示

トラフィック ポリシングの QoS 統計情報を表示するには、 police キーワードを指定して show service-policy コマンドを使用します。

hostname# show service-policy police
 

次に、 show service-policy police コマンドの出力例を示します。

hostname# show service-policy police
 
Global policy:
Service-policy: global_fw_policy
 
Interface outside:
Service-policy: qos
Class-map: browse
police Interface outside:
cir 56000 bps, bc 10500 bytes
conformed 10065 packets, 12621510 bytes; actions: transmit
exceeded 499 packets, 625146 bytes; actions: drop
conformed 5600 bps, exceed 5016 bps
Class-map: cmap2
police Interface outside:
cir 200000 bps, bc 37500 bytes
conformed 17179 packets, 20614800 bytes; actions: transmit
exceeded 617 packets, 770718 bytes; actions: drop
conformed 198785 bps, exceed 2303 bps
 

QoS の標準のプライオリティ統計情報の表示

priority コマンドを実装するサービス ポリシーの統計情報を表示するには、 priority キーワードを指定して show service-policy コマンドを使用します。

hostname# show service-policy priority
 

次に、 show service-policy priority コマンドの出力例を示します。

hostname# show service-policy priority
Global policy:
Service-policy: global_fw_policy
Interface outside:
Service-policy: qos
Class-map: TG1-voice
Priority:
Interface outside: aggregate drop 0, aggregate transmit 9383
 

) 「aggregate drop」は、このインターフェイスでの合計ドロップ数を示しています。「aggregate transmit」は、このインターフェイスで送信されたパケットの合計数を示しています。


QoS シェーピング統計情報の表示

shape コマンドを実装するサービス ポリシーの統計情報を表示するには、 shape キーワードを指定して show service-policy コマンドを使用します。

hostname# show service-policy shape
 

次に、 show service-policy shape コマンドの出力例を示します。

hostname# show service-policy shape
Interface outside
Service-policy: shape
Class-map: class-default
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
 
shape (average) cir 2000000, bc 8000, be 8000
 

次に、 show service policy shape コマンドの出力例を示します。これには、 shape コマンドと、階層型プライオリティ ポリシーを呼び出す service-policy コマンドを含むサービス ポリシーと、関連する統計情報が含まれています。

hostname# show service-policy shape
 
Interface outside:
Service-policy: shape
Class-map: class-default
 
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
 
shape (average) cir 2000000, bc 16000, be 16000
Service-policy: voip
Class-map: voip
 
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
Class-map: class-default
 
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
 

QoS の標準のプライオリティ キュー統計情報の表示

インターフェイスのプライオリティ キュー統計情報を表示するには、特権 EXEC モードで show priority-queue statistics コマンドを実行します。ベストエフォート(BE)キューと低遅延キュー(LLQ)の両方の統計情報が表示されます。次に、test という名前のインターフェイス用の show priority-queue statistics コマンドの使用例と、コマンドの出力例を示します。

hostname# show priority-queue statistics test
 
Priority-Queue Statistics interface test
 
Queue Type = BE
Packets Dropped = 0
Packets Transmit = 0
Packets Enqueued = 0
Current Q Length = 0
Max Q Length = 0
 
Queue Type = LLQ
Packets Dropped = 0
Packets Transmit = 0
Packets Enqueued = 0
Current Q Length = 0
Max Q Length = 0
hostname#
 

この統計情報レポートの項目の意味は、次のとおりです。

「Packets Dropped」は、このキューでドロップされたパケットの合計数を示します。

「Packets Transmit」は、このキューで送信されたパケットの合計数を示します。

「Packets Enqueued」は、このキューに入れられたパケットの合計数を示します。

「Current Q Length」は、このキューの現在の深さを示します。

「Max Q Length」は、このキューで今までに発生した最大の深さを示します。