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

目次

QoS の設定

QoS の概要

サポートされる QoS 機能

トークン バケットとは

ポリシングの概要

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

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

QoS 機能の相互作用

DSCP および DiffServ の維持

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

キューおよび送信リングの上限の計算

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

クラスマップでの QoS 対象トラフィックの指定

QoS クラスマップの作成

QoS クラスマップの例

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

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

QoS 統計情報の表示

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

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

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

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

QoS の設定

衛星接続を使用した長距離電話では、会話が、短い間ですが認識できる程度に途切れて、不定期に中断されることがあります。このような中断(「遅延(レイテンシ)」と呼ばれます)は、ネットワーク上で送信されて到着するパケットとパケットの間に時間が空くために発生します。ネットワーク トラフィックの中には、音声やビデオのように、長時間の遅延は許容されないものがあります。 Quality of Service(QoS)機能を利用すると、重要なトラフィックを優先させることができ、帯域幅専有の回避やネットワーク ボトルネックの管理が可能になるため、パケット ドロップを予防できます。

この章では、QoS ポリシーを適用する方法を説明します。この章の内容は次のとおりです。

「QoS の概要」

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

「クラスマップでの QoS 対象トラフィックの指定」

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

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

「QoS 統計情報の表示」

QoS の概要

常に変化するネットワーク環境においては、QoS は一度だけ設定すればよいというものではなく、ネットワーク設計の不可欠な要素の 1 つとして、継続的に見直す必要があります。


) QoS を使用できるのは、シングルコンテキスト モードだけです。


この項では、adaptive security applianceによってサポートされる QoS 機能について説明します。この項の内容は次のとおりです。

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

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

「ポリシングの概要」

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

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

「DSCP および DiffServ の維持」

サポートされる QoS 機能

adaptive security applianceでは、次の QoS の機能がサポートされます。

ポリシング:個々のフローによるネットワーク帯域幅の専有を防ぐために、フロー当たりの最大使用帯域幅を設定できます。詳細については、「ポリシングの概要」を参照してください。

プライオリティ キューイング:遅延が許されない重要なトラフィック、たとえば Voice over IP(VoIP)については、低遅延キューイング(LLQ)対象トラフィックであることを指定しておくと、そのトラフィックは常に他のトラフィックよりも先に送信されます。詳細については、「プライオリティ キューイングの概要」を参照してください。

トラフィック シェーピング:デバイスからはパケットが高速で送信される(たとえばadaptive security applianceとファスト イーサネットの組み合せの場合)が、接続先がケーブル モデムのような低速デバイスの場合は、このケーブル モデムがボトルネックとなって、パケットのドロップが頻繁に発生します。ネットワークごとに回線速度が異なる場合は、パケットの送信速度を低速に固定するようにadaptive security applianceを設定できます。詳細については、「トラフィック シェーピングの概要」を参照してください。

トークン バケットとは

トークン バケットは、データのフローを調整するデバイス(レギュレータ)を管理するために使用されます。レギュレータの例には、トラフィック ポリサーやトラフィック シェーパーがあります。トークン バケットそのものは、破棄やプライオリティのポリシーを持つわけではありません。トークン バケットの役割は、レギュレータがフローを制御しきれなくなった場合にトークンを破棄することですが、送信キューの管理という問題はフロー側で解決する必要があります。

トークン バケットによって、転送レートが正式に定義されます。トークン バケットを構成するコンポーネントは、バースト サイズ、平均レート、および時間間隔の 3 つです。平均レートは一般に、1 秒当たりのビット数で表現されますが、次に示す関係によって、任意の 2 つの値を第 3 の値から導出することが可能です。

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

各項の定義は次のとおりです。

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

バースト サイズ:「Committed Burst(Bc; 認定バースト)サイズ」と呼ばれることもあります。スケジューリングの問題を引き起こすことなく所定の単位時間内に送信可能なトラフィックの量を、バースト当たりのビット数またはバイト数として表します (トラフィック シェーピングの場合はバースト当たりのビット数を表し、ポリシングの場合はバースト当たりのバイト数を表します)。

時間間隔:「測定間隔」と呼ばれることもあります。バースト当たりの割り当て時間を秒単位で表します。

トークン バケットの概念では、トークンは一定の速さでバケットに追加されます。バケットそのものの容量は決められています。バケットの容量いっぱいになると、それ以降に到着したトークンは破棄されます。トークンはそれぞれ、所定の数のビットをネットワークに送出することを送信元に許可するものです。パケットを送信するには、レギュレータが、パケット サイズに相当する数のトークンをバケットから取り除く必要があります。

パケット 1 個を送信するのに十分な数のトークンがバケット内にない場合は、十分なトークンがバケットに集まるまで待ってパケットが送信されるか(トラフィック シェーピングの場合)、パケットが破棄されるかマークダウンされます(ポリシングの場合)。バケット内のトークンがすでに容量いっぱいの場合は、到着したトークンはオーバーフローするので、将来のパケットには使用できません。したがって、任意の時点において、送信元からネットワークに送出可能な最大バーストは、バケットのサイズにほぼ比例します。

トラフィック シェーピングに使用されるトークン バケット メカニズムは、トークン バケットとデータ バッファ(キュー)の両方を持つことに注意してください。データ バッファを持たないトークン バケットは、ポリサーとなります。トラフィック シェーピングの場合は、到着したパケットのうち即座に送信できないものはデータ バッファに入れられ、遅れて送信されます。

トラフィック シェーピングの場合は、トークン バケットによってバースト性が許可されますが、バースト性の限度が設けられます。フローが送信される最大速度は、トークン バケットの容量を時間間隔で割った値に、トークン バケットへのトークン追加速度を加算した値となります。このようにして、バースト性の限度がトークン バケットによって保証されます。次の式を参照してください。

(トークン バケット容量(ビット)) / 時間間隔(秒)) + トークン追加速度(bps) = 最大フロー速度(bps)

このバースト性制限方法には、もう 1 つの利点があります。それは、長時間伝送のレートが、バケットへのトークン追加速度を超えないことの保証です。

ポリシングの概要

ポリシングとは、設定された最大レート(ビット/秒)をトラフィックの速度が超えないことを保証するための手段です。このことが保証されれば、1 つのトラフィック フローまたはクラスがリソース全体を専有することはなくなります。トラフィックの速度が最大レートを超えたときは、超過したトラフィックがadaptive security applianceによってドロップされます。許可されるトラフィックの最大単一バーストも、ポリシングによって設定されます。

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

LLQ プライオリティ キューイングを使用すると、特定のトラフィック フロー(たとえば、音声やビデオのような遅延の影響を受けやすいトラフィック)を、他のトラフィックよりも優先することができます。

adaptive security applianceによってサポートされるプライオリティ キューイングには、次の 2 種類があります。

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

階層型プライオリティ キューイング:トラフィック シェーピング キューが有効化されているインターフェイス上で使用されます。シェーピングされたトラフィックのサブセットの優先度を上げることができます。標準のプライオリティ キューは使用されません。階層型プライオリティ キューイングに関するガイドラインは次のとおりです。

プライオリティ パケットは常にシェープ キューの先頭に置かれるので、キュー内にある他の優先順位の低いパケットよりも必ず先に送信されます。

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

IPSec 暗号化パケットについては、DSCP またはプレシデンスの設定に基づくトラフィック照合だけが可能です。

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

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

トラフィック シェーピングを使用して、デバイスとリンクの速度を一致させます。その結果、パケット損失、可変遅延、およびリンク飽和(ジッタや遅れの原因となることがあります)を抑えることができます。

トラフィック シェーピングが実行されるのは、インターフェイス上でパケットが送信できる状態になったときです。したがって、レート計算は、送信されるパケットの実際のサイズに基づいて行われます。このサイズには、IPSec ヘッダーや L2 ヘッダーのようなオーバーヘッドもすべて含まれます。

シェーピングされたトラフィックには、through-the-box と from-the-box の両方のトラフィックが含まれます。

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

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

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

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

特定の重要なキープアライブ パケット(たとえば OSPF Hello パケット)は、ドロップされることはありません。

時間間隔を導出する式は、 time_interval = burst_size / average_rate です。時間間隔が長くなるほど、シェープされたトラフィックのバースト性が高まり、リンクがアイドルになる時間が長くなります。その影響は、次のような極端な例を考えてみるとよく理解できます。

平均レート = 1000000

バースト サイズ = 1000000

上記の例では、時間間隔は 1 秒です。つまり、100 Mbps FE リンク上で、速度 1 Mbps でのトラフィックのバースト送信が可能であるのは、長さ 1 秒の時間間隔のうち最初の 10 ミリ秒以内です。残りの 990 ミリ秒間はアイドルとなり、次の時間間隔になるまでパケットの送信はできません。したがって、遅延の影響を受けやすいトラフィック(たとえば音声トラフィック)がある場合は、バースト サイズを平均レートよりも小さくすると、時間間隔も小さくなります。

QoS 機能の相互作用

必要であれば、adaptive security applianceの QoS 機能のそれぞれを単独で設定することもできます。ただし、多くの場合は、adaptive security applianceの QoS 機能は複数設定されます。たとえば、特定のトラフィックを優先するとともに、他のトラフィックによる帯域幅の問題を防ぐためです。

1 つのインターフェイスに対して組み合せ可能な機能は次のとおりです。

標準プライオリティ キューイング(特定のトラフィックに対して)+ ポリシング(それ以外のトラフィックに対して)

同じトラフィックのセットに対してプライオリティ キューイングとポリシングを設定できません。

トラフィック シェーピング(1 つのインターフェイス上の全トラフィックに対して)+ 階層型プライオリティ キューイング(トラフィックのサブセットに対して)

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

一般的には、トラフィック シェーピングを有効にした場合に、同じトラフィックに対してポリシングも有効にしてはなりません。ただし、adaptive security applianceにはこのような設定を禁止する機能はありません。

DSCP および DiffServ の維持

adaptive security applianceを通過するトラフィックの DSCP マーキングは、すべて維持されます。

adaptive security applianceには、分類されたトラフィックにローカルでマークを付けたり解除したりする機能はありませんが、各パケットの Expedited Forwarding(EF; 緊急転送)DSCP ビットを読み取って、優先扱いが必要かどうかを判断し、優先するパケットを LLQ に送ります。

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

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

物理インターフェイス上のトラフィックに対する標準プライオリティ キューイングを有効化する場合は、各インターフェイスにプライオリティ キューを作成することも必要です。物理インターフェイス 1 つにつき 2 つのキューが使用されます。1 つはプライオリティ トラフィック用、もう 1 つは他のすべてのトラフィック用です。他のトラフィックに対して、ポリシングを設定することもできます。


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

10 ギガビット イーサネット インターフェイスのプライオリティ キューを作成できません。プライオリティ キューイングは、高帯域幅のインターフェイスには必要ないからです。


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

「キューおよび送信リングの上限の計算」

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

キューおよび送信リングの上限の計算

プライオリティ キューおよび送信リングの上限を計算するには、次のワークシートを使用してください。

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

 

表 22-1 キュー上限ワークシート

ステップ 1

__________

アウトバウンド帯域幅(Mbps または Kbps)1

 
×
 
×

ステップ 2

 
÷

 

__________

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

 
=

1.たとえば、DSL のアップリンク速度は 768 Kbps などとなっています。使用するプロバイダーに確認してください。

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

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

表 22-2 に、TX リング上限の計算方法を示します。この上限によって、イーサネット送信ドライバへの最大許容パケット数が決まります。この上限を超えると、パケットはドライバからインターフェイス上のキューに戻され、輻輳が解消されるまで待機します。この設定によって、ハードウェア ベースの送信リングにおける高プライオリティ パケットの遅延の増加は限定的であることが保証されます。

 

表 22-2 TX リング上限ワークシート

ステップ 1

__________

アウトバウンド帯域幅(Mbps または Kbps)4

 
×
 
=
 
×
 
=

ステップ 2

 
÷

 

__________

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

 
×

4.たとえば、DSL のアップリンク速度は 768 Kbps などとなっています。使用するプロバイダーに確認してください。

5.通常、最大サイズは 1538 バイトです(タグ付きイーサネットの場合は 1542 バイト)。ジャンボ フレームを許可する場合は、パケット サイズはさらに大きくなる可能性があります。

6.遅延は、アプリケーションによって異なります。たとえば、VoIP のジッタを抑えるには 20 ミリ秒を使用してください。

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

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


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

hostname(config)# priority-queue interface_name
 

interface_name 引数では、プライオリティ キューをどの物理インターフェイスに対して有効化するかを指定します。


) 10 ギガビット イーサネット インターフェイスのプライオリティ キューは作成できません。高帯域幅のインターフェイスには、プライオリティ キューイングは必要ないためです。


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

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

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

number_of_packets の値を決定する方法については、「キューおよび送信リングの上限の計算」を参照してください。

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

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


 

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

hostname(config)# priority-queue outside
 

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

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

クラスマップでの QoS 対象トラフィックの指定

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

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

「QoS クラスマップの例」

QoS クラスマップの作成

プライオリティ トラフィックについては、遅延の影響を受けやすいトラフィックだけを指定します。トラフィック ポリシングを行う場合は、他のすべてのトラフィックに対してポリシングを行うか、特定のタイプのトラフィックに限定するかを選択できます。トラフィック シェーピングを行う場合は、1 つのインターフェイス上のすべてのトラフィックをシェーピングする必要があります。

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

トラフィックの照合は、さまざまな特性、たとえばアクセスリスト、トンネルグループ、DSCP、プレシデンスに基づいて行うことができます。QoS のためのクラスマップを設定するときは、次のガイドラインを参照してください。

トラフィック シェーピングの場合は、 class-default クラスマップだけを使用します。このクラスマップは、adaptive security applianceによって自動的に作成され、すべてのトラフィックが一致します。

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

階層型プライオリティ キューイングの場合は、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 アクション(およびその他の機能アクション)がクラスマップ内のトラフィックに割り当てられます。他の機能の詳細については、 第 15 章「モジュラ ポリシー フレームワークの使用」 を参照してください。この章では、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 引数では、1 回の持続バーストにおいて許可される瞬間的バイト数の最大数を指定します。この数を超えると、レート値に適応するようにトラフィックが抑制されます。値の範囲は 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 アクション(およびその他の機能アクション)をクラスマップ内のトラフィックに割り当てることができます。他の機能の詳細については、 第 15 章「モジュラ ポリシー フレームワークの使用」 を参照してください。この章では、QoS だけを取り上げます。

設定したトラフィック シェーピングは、1 つのインターフェイス上の全トラフィックに適用されます。さらに、遅延の影響を受けやすいトラフィックのサブセットに対して、階層型プライオリティ キューイングを設定することもできます。有効な QoS コンフィギュレーションについては、「QoS 機能の相互作用」を参照してください。

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


) プライオリティ キューイングには、パケットが再度順序付けされるという副作用があります。IPSec パケットの場合、リプレイ攻撃防止ウィンドウ内にない、順序が乱れたパケットがあると、警告 syslog メッセージが生成されます。この警告は、プライオリティ キューイングの場合は誤アラームです。誤アラームを防止するように IPSec リプレイ攻撃防止ウィンドウのサイズを設定できます。Cisco ASA 5580 Adaptive Security Appliance Command Referencecrypto 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 となります。

指定できるのは class-default クラスマップだけです(このクラスマップは、 match any と定義されています)。adaptive security applianceでトラフィック シェーピングを行うには、すべてのトラフィックが一致する必要があるからです。

ステップ 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
 

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



 

次の例では、「outside」インターフェイスに対してトラフィック シェーピングを有効化します。トラフィック レートは 2 Mbps までに制限します。プライオリティ キューイングを、VoIP トラフィック(DSCP EF および AF13 のタグ付き)および 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 統計情報を表示するには、次のように show service-policy コマンドに police キーワードを指定して実行します。

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 コマンドを実装するサービス ポリシーの統計情報を表示するには、次のように show service-policy コマンドに priority キーワードを指定して実行します。

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 コマンドを実装するサービス ポリシーの統計情報を表示するには、次のように show service-policy コマンドに shape キーワードを指定して実行します。

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)の両方の統計情報が表示されます。次に示すのは、 show priority-queue statistics コマンドを「test」というインターフェイスに対して実行する方法と、コマンド出力の例です。

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」は、このキューで発生した最大の深さを示します。