はじめに
このドキュメントでは、どちらも出力レートを制限する、トラフィックシェーピングとトラフィックポリシングの機能的な違いを説明します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
このドキュメントでは、トラフィックシェーピングとトラフィックポリシングの機能的な違いを明確にします。どちらも機能的にトラフィックの出力レートを制限します。どちらのメカニズムも、パケットレートを測定するためのトラフィックメーターとしてトークンバケットを使用します。トークンバケットの詳細については、「What Is a Token Bucket」を参照してください。
ポリシングとシェーピング
トラフィック ポリシングではバーストは伝搬されます。トラフィック レートが最大レートの設定値に達すると、超過トラフィックは破棄(または再マーキング)されます。 その結果、出力レートは頂上と谷間のある鋸歯状になります。ポリシングと異なり、トラフィック シェーピングでは、超過パケットはキューまたは漏出バケットに保持され、一定の時間間隔でスケジュールされてから遅れて伝送されます。トラフィック シェーピングの結果、パケットの出力レートは平滑化されます。
次の図は、2 つのトラフィックオプションの主な違いを示しています。
ポリシングとシェーピングの比較
シェーピングでは遅延パケットをバッファリングするためのキューと十分なメモリが存在する必要がありますが、ポリシングではそれらは必要ありません。キューはアウトバウンドの概念です。インターフェイスを離れるパケットはキューイングされ、シェーピングを適用できます。インターフェイスでは着信トラフィックに対してポリシングだけを適用できます。シェーピングを有効にする場合は十分なメモリがあることを確認してください。また、シェーピングには遅延パケットを後で伝送するスケジュールを設定する機能が必要です。このスケジュール機能を使用すると、シェーピングキューを別々のキューに編成できます。この機能の例としては、クラスベースの重み付け均等化キューイング(CBWFQ)や低遅延キューイング(LLQ)などがあります。Queuing
Queuing
選択基準
次の表に、適切なトラフィックソリューションの選択に役立つ、シェーピングとポリシングの違いを示します。
|
シェーピング |
ポリシング |
目的 |
認定レートを超える超過パケットをバッファおよびキューイングします。 |
認定レートを超える超過パケットをドロップ(またはリマーク)します。バッファリングしない。* |
トークンのリフレッシュ レート |
時間間隔の開始時に補充される。(最小の数の時間間隔が必要) |
次の数式に基づく一定値:1 / 認定情報レート |
トークン値 |
ビット/秒で設定する。 |
バイトで設定する。 |
設定オプション |
- クラスベース シェーピングを実装する場合は、モジュラ QoS コマンドライン インターフェイス(MQC)で shape コマンドを使用する。
- Frame Relay Traffic Shaping(FRTS; フレームリレー トラフィック シェーピング)を実装する場合は、frame-relay traffic-shape コマンドを使用する。
- Generic Traffic Shaping(GTS; ジェネリック トラフィック シェーピング)を実装する場合は、traffic-shape コマンドを使用する。
|
- クラスベース シェーピングを実装する場合は、MQC で police コマンドを使用する。
- Committed Access Rate(CAR; 専用アクセス レート)を実装する場合は、rate-limit コマンドを使用する。
|
着信時の適用 |
いいえ |
Yes |
発信時の適用 |
Yes |
Yes |
バースト |
バーストを制御し、少なくとも 8 つの時間間隔で出力レートを平滑化します。漏出バケットを使用してトラフィックを遅らせることで、平滑化効果を達成する。 |
バーストを伝搬する。平滑化は行わない。 |
長所 |
超過パケットがバッファリングされるため、超過パケットが廃棄される可能性は少ない(パケットは最大でキューの長さまでバッファリングされる。過剰なトラフィックが高いレートで維持されると、ドロップが発生する可能性があります)。 一般に、パケットの廃棄による再転送が起こらなくなる。 |
パケットの廃棄によって出力レートを制御する。キューイングによる遅延を回避します。queuing |
短所 |
キューイングによって遅延が発生する可能性があります(特にディープキュー)。queuing |
超過パケットをドロップし(設定されている場合)、TCP ウィンドウサイズを抑制し、影響を受けるトラフィックストリームの全体的な出力レートを削減します。過度にアグレッシブなバーストサイズは、特に TCP ベースのフローで、超過パケットのドロップを引き起こし、全体的な出力レートを抑制する可能性があります。 |
オプションのパケット マーキング |
いいえ |
(レガシー CAR 機能使用時) |
* ポリシングはバッファを適用しませんが、物理インターフェイスでのシリアル化を待っている間にキューイングする必要がある適合パケットには、設定されたキューイングメカニズムが適用されます。queuing
トークンのリフレッシュ レート
シェーピングとポリシングの主な違いはトークンが補充される速度にあります。 シェーピングとポリシングのどちらも、トークンバケットメタファを使用します。トークン バケット自体には、廃棄ポリシーまたは優先順位ポリシーはありません。
トークンバケット機能を使用する場合:
-
トークンはある一定のレートでバケットに入れられます。
-
各トークンは、送信元が一定数のビットをネットワークに送信する許可を与えます。
-
パケットを送信するには、トラフィック調整機能によって、パケット サイズと表現上等しい数のトークンをバケットから削除できる必要があります。
-
パケットを送信するのに十分なトークンがバケット内にない場合、パケットはバケットに十分なトークンが溜まるまで待機するか(シェーパーの場合)、または廃棄されるかダウンとマークされます(ポリサーの場合)。
-
バケット自体には指定された容量があります。バケットの容量がいっぱいになると、着信した新しいトークンは廃棄されて、今後のパケットには使用できなくなります。したがって、発信元がネットワークに送信できる最大のバーストは常にバケットのサイズにほぼ比例します。トークンバケットではバーストが許可されますが、制限があります。
シェーピングは、ビット/秒(bps)値を使用する時間間隔でトークンバケットを増やします。シェイパーは次の式を使用します。
Tc = Bc/CIR (in seconds)
この式では、(認定情報レートの認定バーストおよびCIRスタンドを表します。(詳細は、「フレームリレー トラフィック シェーピングの設定」を参照してください)。 Tc の値は、秒単位での CIR の平均レートを維持するために Bc ビットを送信する時間間隔を定義します。
Tc の範囲は、10 ミリ秒から 125 ミリ秒の間です。Cisco 7500シリーズのDistributed Traffic Shaping (DTSを整形する分散トラフィックがTc最小は4ミリ秒です。ルータは、CIR 値と Bc 値に基づいて、この値を内部で計算します。Bc/CIR が 125 ミリ秒よりも小さい場合は、この式から算出された Tc が使用されます。Bc/CIR が 125 ミリ秒以上の場合、Cisco IOS® がより短い間隔でトラフィックフローをより安定させることができると判断したときには、内部 Tc 値を使用します。show traffic-shape コマンドを使用して、ルータが Tc の内部値を使用するか、コマンドラインで設定した値を使用するかを確認します。show traffic-shape コマンドの次の出力例については、「フレーム リレー トラフィック シェーピング用 show コマンド」を参照してください。
show traffic の出力
超過バースト(Be)がゼロ以外の値に設定されている場合、シェーパは Bc + Be に達するまでトークンをバケットに保持します。トークン バケットの上限値は Bc + Be であり、オーバーフローしたトークンは廃棄されます。Bc を超えるトークンをバケットに保持する唯一の方法は、1 回または複数回の Tc の間にすべての Bc トークンを使用しないようにすることです。トークン バケットには Bc のトークンが Tc ごとに補充されるため、未使用のトークンを Bc + Be まで蓄積して後で使用できます。
対照的に、クラスベースのポリシングとレート制限では、トークンをバケットに継続的に追加します。limiting
具体的には、トークン到達レートは次のようにして計算されます。
(time between packets<which is equal to t-t1>* policer rate)/8 bits per byte
つまり、前のパケットが到達した時間を t1、現在の時間を t とした場合、トークン到達レートに基づいて t-t1 に相当するバイト数だけバケットが更新されます。
注:トラフィックポリサーはバイト単位で指定されたバースト値を使用するため、前述の式ではビットをバイトに変換します。
次に、8000 bps の CIR(またはポリサーレート)と 1000 バイトの通常バーストを使用する例を示します。
Router(config)# policy-map police-setting
Router(config-pmap)# class access-match
Router(config-pmap-c)# police 8000 1000 conform-action transmit exceed-action drop
トークンバケットは 1000 バイトでいっぱいになります。450 バイトのパケットが到達した場合、トークン バケットには十分なバイト数があるため、パケットは適合します。パケットにより準拠処理(伝送)が実行され、450 バイトがトークンバケットから削除されます(残りは 550 バイト)。 次のパケットが 0.25 秒後に到達した場合、次の式にしたがってトークンバケットに 250 バイトが追加されます。
(0.25 * 8000)/8
この計算により、トークン バケットの内容は 700 バイトになります。次のパケットが 800 バイトであれば、パケットは超過し、超過アクション(廃棄)が実行されます。トークン バケットからは 1 バイトも削除されません。
トラフィック シェーピング
Cisco IOS®は、次のトラフィックシェーピング方式をサポートしています。
どのトラフィック シェーピング方式も実装の点ではよく似ていますが、それぞれの Command Line Interface(CLI; コマンド行インターフェイス)は若干異なります。各方式は遅延されるトラフィックを格納およびシェーピングするために異なるタイプのキューを使用します。シスコでは、クラスベースのシェーピングと分散シェーピングを推奨します。これらは、モジュラ QoS CLI で設定します。
次の図は、QoS ポリシーがトラフィックをクラスに配置し、設定されたシェーピングレートを超えるパケットをキューイングする方法を示しています。

トラフィック ポリシング
Cisco IOS は、次のトラフィック ポリシング メソッドをサポートしています。
この 2 つのメカニズムには、「クラスベースのポリシングおよび専用アクセスレートの比較」で説明されているように、重要な機能の違いがあります。シスコでは、QoS ポリシーを適用する場合は、クラスベースのポリシングおよびモジュラ QoS CLI のその他の機能を推奨します。
police コマンドを使用して、トラフィックのクラスは課される最大レートを有する必要があり、そのレートを超過した場合はただちに対策を取る必要があることを指定します。つまり、police コマンドには、shape コマンドとは異なり、パケットをバッファリングして後で送出するためのオプションはありません。
また、ポリシングでは、パケットが適用レートを超えているか、または適用レートに適合しているかは、トークン バケットによって決まります。いずれの場合も、ポリシングは、IP プレシデンスまたは Differentiated Services Code Point(DSCP; DiffServ コードポイント)を含む設定可能なアクションを実装します。
次の図は、QoS 機能が一般的に適用される場合の、輻輳ポイントでのトラフィックポリシングの一般的な適用を示しています。

最小帯域幅制御と最大帯域幅制御
shape コマンドも police コマンドも、出力レートを最大の kbps 値に制限します。重要なのは、どちらのメカニズムも輻輳時に最小帯域幅を保証しない点です。このような最小帯域幅の保証を提供するには、bandwith または priority コマンドを使用します。
階層型ポリシーは 2 つのサービスポリシーを使用します。1 つはトラフィックの集約に QoS メカニズムを適用する親ポリシー、もう 1 つは集約のフローまたはサブセットに QoS メカニズムを適用する子ポリシーです。サブインターフェイスやトンネルインターフェイスなどの論理インターフェイスには、親レベルでのトラフィック制限機能と下位レベルでのキューイングを備えた階層型ポリシーが必要です。limiting
トラフィック制限機能は、出力レートを下げ、(おそらく)超過パケットのキューイングで見られるような輻輳を引き起こします。limiting
queuing
次の設定は次善のものであり、トラフィック集約(この場合は class-default)が最大レートになる場合の police コマンドと shape コマンドの違いを説明するために示されています。limiting
この設定では、police コマンドは、パケットのサイズと準拠および超過トークンバケットに残っているバイト数に基づいて、子クラスからパケットを送信します。(「トラフィック ポリシング」を参照してください)。 その結果、ポリシング機能がプライオリティ機能による保証を上書きするため、Voice over IP(VoIP)および Internet Protocol(IP)クラスに指定されたレートは保証できません。
しかし、shape コマンドを使用すると、階層的キューイング システムが実現され、すべてが保証されます。つまり、シェープ レートを超える負荷が発生すると、VoIP および IP クラスはそれぞれのレートが保証され、class-default トラフィックが(子レベルで)廃棄されます。
注意:この設定は推奨されません。この設定は、トラフィック集約を制限する際の、 police コマンドと shape コマンドの違いを示す目的で記載されているだけです。
class-map match-all IP
match ip precedence 3
class-map match-all VoIP
match ip precedence 5
policy-map child
class VoIP
priority 128
class IP
priority 1000
policy-map parent
class class-default
police 3300000 103000 103000 conform-action transmit exceed-action drop
service-policy child
前の設定を有効にするには、ポリシングをシェーピングに置き換える必要があります。
例:
policy-map parent
class class-default
shape average 3300000 103000 0
service-policy child
注:親ポリシーと子ポリシーの詳細については、『プライオリティクラスのQoS子サービスポリシー』を参照してください。
関連情報