QoS ポリシングについて
トラフィック ポリシングを使用する理由
インターフェイスで送受信されるトラフィックの最大レートの制御を可能にするトラフィック ポリシングは、一般に、ネットワークのエッジにあるインターフェイスで、ネットワークへのトラフィックを制限するように設定されます。ほとんどのトラフィック ポリシング設定では、レート パラメータ内に収まるトラフィックは送信されますが、パラメータを超えるトラフィックはドロップされるかマークされ(かつ送信され)ます。
(注) |
シェーパーとは異なり、ポリサーはパケットをバッファリングしません。代わりに、指定されたアクションがただちに実行されます。 |
シスコでは、通常、ポリサーをアドミッション制御(キューまたはネットワーク)に使用します。
キュー アドミッション制御 により、キューに入ることができるデータの量を制限できます。プライオリティ キュー は、キューに入るパケットのレートを制限して遅延を回避するというこのカテゴリの代表的な例です。
ネットワーク アドミッション制御 では、ネットワーク管理者(サービス プロバイダー)とその顧客の間の契約が適用されます。一般に、プロバイダーがトラフィックを受け入れる必要があるレートに両者が同意します。これはサービスレート(顧客がプロバイダーに送信するすべてのトラフィックの最大レート)またはクラスごとの制限(たとえば、顧客が送信できるプライオリティ トラフィックの量)である場合があります。
-
ネットワーク アドミッション制御を使用する場合、超過トラフィックをただちにドロップするか「契約外」としてマークするかを決定できます。後者の場合は、このネットワーク内で輻輳が発生した場合に(そのときに)、そのトラフィックの処理量を減らすか、そのトラフィックを最初にドロップすることができます。
ポリサーの定義
(注) |
「ポリサー」と「レート リミッタ」という 2 つの用語 通常、同じ QoS メカニズムを指します。このドキュメントでは、「ポリサー」(ポリシング)を使用します。 |
ポリサーは、パケットが指定されたレートを超えて受信されたか超えずに受信されたかに応じて同じトラフィック クラス内のパケットに関して異なる処理を定義することを可能にするデバイスです。
最も単純な形式では、ポリサーは、指定されたレートを超えたトラフィックをドロップする必要があることを示します。
policy-map police-all-traffic
class class-default
police 1m
このクラスを通過するトラフィックが 1 Mbps 未満のレートで着信する場合、そのトラフィックは適合(指定されたレートに準拠)していると見なされます。適合トラフィックに対するデフォルトのアクションは、パケットの転送です。
1 Mbps を超えるレートで到着するトラフィックは、設定されたレートを超過していると見なされます。超過トラフィックに対するデフォルトのアクションは、パケットのドロップです。
次の定義は、以降のセクションの説明に適用されます。
用語 | 定義 | ||
Bc(適合バースト サイズ) |
バースト許容値を定義する CIR と同時に使用して、パケットが適合していると見なすかどうかを決定します。 |
||
Be(超過バースト サイズ) |
3 カラー ポリサーがシングル レートとディアル レートのどちらなのかによって意味が異なります。
|
||
Burst(バースト) |
非常に多くのパケットが緊密に到着した時点。
|
||
CIR(認定情報レート) |
所定の間隔で転送可能なデータの最大量。 |
||
Conform(適合) |
CIR よりも低いレートで到着するトラフィック(バーストを考慮)。 |
||
Exceed(超過) |
ポリサーのタイプがシングルかデュアルか、2 カラーか 3 カラーかによって異なります。
|
||
PIR(最大情報レート) |
(デュアル レート ポリサーにのみ関連)このレート未満のトラフィックが超過。上回る、違反している。
PIR は、デュアル レート ポリサーで設定された高速のレートです。 このレートが差別化要因です。 超過に指定されたトラフィックと違反に指定されたトラフィック。 |
||
Violate(違反) |
ポリサーのタイプに依存します。
|
ポリサーのアクション
次にコピーした前の例では、ポリサーが最も基本的な形式で使用されています。
policy-map police-all-traffic
class class-default
police 1m
適合トラフィックはポリサーを通過することが許可され(送信トラフィックは1m未満)、超過トラフィックはドロップされていました。 トラフィックが 指定された レートを超えたことを認識したときには即時のアクションを実行していました。しかし、即時のアクションが望ましくない場合もあります。場合によっては、トラフィックをただちにドロップするのではなく、アクションを延期する 必要があります。
たとえば、事前に決められたレートを超えるトラフィックを、 ネットワークが輻輳している場合にのみドロップするように決定できます。この場合、すべてのトラフィックを転送するものの適合トラフィックと超過トラフィックでは異なる方法でパケット内の何か(たとえば、DSCP)にマークすることを選択できます。ドロップするかどうかの決定は、その後に輻輳が発生した時点で行うことができます。
次の例では、 トラフィックをドロップする代わりにマークします。 トラフィック クラスを DSCP 値が AF41 の着信トラフィックと定義し、指定したレートを超えるトラフィックを AF42 に降格させます。
policy-map ma
rk-out-of-contract
class AF41
police 1m conform-action transmit exceed-action set-dscp-transmit AF42
この conform-action の内容 は、指定された 1 Mbps 以下のレートで着信するトラフィックの送信(デフォルト動作の単純転送)です。
この exceed-action( 1 Mbps を超過したトラフィックに適用される)の内容は、トラフィックのドロップではなくパケットの DSCP 値のマークです。
transmit と drop は、指定されたレートに適合するトラフィック またはそれを超過するトラフィックに対して指定されたアクションを表します。 police コマンドを使用してアクションを指定します。サポートされているアクションを次の表に示します。
指定された処理 |
結果 |
---|---|
drop |
パケットをドロップします。 |
set-clp-transmit |
ATM セルの ATM セル損失率優先度(CLP)ビットを設定し、パケットを送信します。 |
set-cos-inner-transmit cos-value |
Q-in-Q の導入では、パケットの内部サービス クラス(CoS)値を設定し、パケットを送信します。CoS 値の範囲は 0 ~ 7 です。 |
set-cos-transmit cos-value |
パケットのサービス クラス(CoS)値を設定し、パケットを送信します。CoS 値の範囲は 0 ~ 7 です。 |
set-discard-class-transmit discard-class-value |
廃棄クラス値を設定し、パケットを送信します。廃棄クラス値の範囲は 0 ~ 7 です。 |
set-dscp-transmit dscp-value |
IP Diffserv コード ポイント(DSCP)値を設定して、パケットを送信します。有効値の範囲は 0 ~ 63 です。 |
set-dscp-tunnel-transmit dscp-value |
現在のパケットにこのようなヘッダーが追加された場合はその時点でトンネル ヘッダーに書き込まれる DiffServ コード ポイント(DSCP)値を保存します。 |
set-frde-transmit |
フレーム リレー廃棄適性(DE)ビットを設定し、フレームを送信します。 |
set-mpls-exp-imposition-transmit mpls-exp-value |
インポーズされたラベル ヘッダーに MPLS EXP ビットを設定し、MPLS ラベルがインポーズされた場合はその時点でパケットを送信します。有効値の範囲は 0 ~ 7 です。 |
set-mpls-exp-topmost-transmit mpls-exp-value |
最上位ラベルに MPLS EXP ビットを設定し、パケットを送信します。有効値の範囲は 0 ~ 7 です。 |
set-prec-transmit precedence-value |
IP Precedence レベルを設定し、パケットを送信します。有効値の範囲は 0 ~ 7 です。 |
set-prec-tunnel-transmit precedence-value |
現在のパケットにこのようなヘッダーが追加された場合はその時点でトンネル ヘッダーに書き込まれるトンネル IP プレシデンス値を保存します。有効値の範囲は 0 ~ 7 です。 |
set-qos-transmit qroup-id |
「qos-group」値を設定し、パケットを送信します。有効値の範囲は 0 ~ 99 です。 |
transmit |
パケット内のフィールドを変更せずにそのパケットを送信します。 |
(注) |
ポリサー アクションのルールは、set コマンドのルールと非常によく似ています。 マークできるのは、レイヤ 2 のヘッダーと外部レイヤ 3 のヘッダーだけです。 |
マルチアクション ポリサー
前のセクションでは、パケット内の特定のフィールドをマークするようにポリサーを設定する方法について説明しました。実際には、パケット内の複数のフィールドをマークすることができます。
トラフィック クラス内で複数の set アクションを設定する場合と同様の方法で、各レート指定内のトラフィックに複数のアクションを適用できます。たとえば、パケットが TCP/IP 環境とフレームリレー環境の両方で送信されることがわかっている場合、超過パケットまたは違反パケットの DSCP 値を変更し、フレームリレー廃棄特性(DE)ビットを 0 ~ 1 の値に設定して優先度が低いことを示すことができます。
複数のポリシング アクションを指定するときは、次の点に注意してください。
-
ポリシーマップ クラス ポリシング コンフィギュレーション(config-pmap-c-police)サブモードを開始する必要があります。
-
最大 4 つのアクションを同時に指定できます(1 アクションにつき 1 行)。
-
矛盾するアクション(conform-action transmit と conform-action drop など)は指定できません。
set コマンドと同様に、同じパケットに複数のアクション(たとえば、レイヤ 2 フィールドとレイヤ 3 フィールドをマークする)を設定するか、異なるトラフィック タイプごとにアクション(たとえば、IPv4 パケットの DSCP 値をマークし、MPLS パケットの Experimental(EXP)ビットをマークする)を定義することができます。
次の例では、RTP トラフィック(rtp-traffic
)の上限を 1 Mbps に設定し、そのレートを超えるトラフィックをドロップします(exceed-action drop
)。適合トラフィックについては、IPv4 パケットの COS 値および DSCP 値と MPLS パケットの COS 値および EXP ビットの両方をマークします。
class rtp-traffic
police cir 1000000
conform-action set-cos-transmit 4
conform-action set-dscp-transmit af41
conform-action set-mpls-exp-topmost-transmit 4
exceed-action drop
トラフィック クラスによって観測されるレートにはそのクラス内のすべてのパケットが考慮されますが、アクションは該当するトラフィックだけに適用されます。たとえば、IPv4 パケットと MPLS パケットが同じトラフィック クラスに分類され、ポリサーが特定の DSCP 値をマークするように設定されているとします。観測されるレートには IPv4 パケットと MPLS パケットの両方が考慮されますが、マークできるのは IPv4 パケットだけです。
(注) |
シングルおよびデュアル レート ポリサーでは、複数のアクションの設定がサポートされています(シングルレート 2 カラー ポリサー およびデュアルレート 3 カラー ポリサー を参照)。 |
CLI バリエーションに関する注意事項
ここでは、CLI の複数のバリエーションが同じ結果をどのように達成できるのかを示します。
コンテキスト
時間が経ち、ソフトウェア トレインがマージされるにつれて、各種 Cisco IOS ソフトウェア リリースのバリエーションが現れました。同じソフトウェア リリース内に、3 つの同等のバリエーションが存在します。下位互換性の問題を回避するために、シスコではバリエーションの保持を決定しました。ただし、ポリシングを実装するソフトウェアは、使用する CLI バリエーションにかかわらず同一であることに注意してください。
確認
次の例では、police を 10 Mbps に、conform action を送信(デフォルト)に、exceed action をドロップ(デフォルト)に設定します。「大まか」に言うと、police コマンドには同じ結果を達成する 3 つのバリエーション(police value 、police cir value 、および police rate value )があります。この一連のバリエーションは、police [cir|rate] value (cir と rate はオプション)と同等です。レートを 10 Mbps とすると、police [cir|rate] 10m コマンドを作成できます。
各バリエーションを使用して、次のようにポリシングを設定できます。
policy-map policer-cli-example
class class-default
police 10000000
policy-map policer-cli-example
class class-default
police cir 10m
policy-map policer-cli-example
class class-default
police rate 10m
3 つのバリエーションが同じ結果をもたらすことを確認するために、2 段階の検証を使用できます。
-
show policy-map interface を発行して IOS 内の設定を表示します。
-
show platform hardware qfp active feature qos interface を発行してハードウェアのプログラミング方法を確認します。この表示は、使用されている CLI バリエーションに関係なく同じになります。
ステップ 1 を実行した結果は次のとおりです。
show policy-map int GigabitEthernet1/0/0
Service-policy input: policer-cli-example
Class-map: class-default (match-any)
162 packets, 9720 bytes
5 minute offered rate 2000 bps, drop rate 0000 bps
Match: any
police:
cir 10000000 bps, bc 312500 bytes
conformed 212 packets, 12720 bytes; actions:
transmit
exceeded 0 packets, 0 bytes; actions:
drop
conformed 2000 bps, exceeded 0000 bps
次に、ステップ 2 を実行した結果は次のとおりです。
show platform hardware qfp active feature qos int g1/0/0
Interface: GigabitEthernet1/0/0, QFP interface: 12
Direction: Input
Hierarchy level: 0
Policy name: policer-cli-example
Class name: class-default, Policy name: policer-cli-example
Police:
cir: 10000000 bps, bc: 315392 bytes
pir: 0 bps, be: 315392 bytes
rate mode: Single Rate Mode
conformed: 16 packets, 960 bytes; actions:
transmit
exceeded: 0 packets, 0 bytes; actions:
drop
violated: 0 packets, 0 bytes; actions:
drop
color aware: No
green_qos_group: 0, yellow_qos_group: 0