概要
このドキュメントでは、トラフィックシェーピングとトラフィックポリシングの機能的な違いについて説明します。トラフィックシェーピングとトラフィックポリシングはどちらも出力レートを制限します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
このドキュメントでは、トラフィックシェーピングとポリシングの機能的な違いを明確にします。どちらの機能もトラフィック出力レートを制限します。どちらのメカニズムも、パケットレートを測定するトラフィックメータとしてトークンバケットを使用します。トークンバケットの詳細については、「トークンバケットとは」を参照してください
ポリシングとシェーピング
トラフィック ポリシングではバーストは伝搬されます。トラフィック レートが最大レートの設定値に達すると、超過トラフィックは破棄(または再マーキング)されます。その結果、出力レートは頂上と谷間のある鋸歯状になります。ポリシングと異なり、トラフィック シェーピングでは、超過パケットはキューまたは漏出バケットに保持され、一定の時間間隔でスケジュールされてから遅れて伝送されます。トラフィック シェーピングの結果、パケットの出力レートは平滑化されます。
次の図は、2つのトラフィックオプションの主な違いを示しています。
ポリシングとシェーピング
シェーピングでは遅延パケットをバッファリングするためのキューと十分なメモリが存在する必要がありますが、ポリシングではそれらは必要ありません。キューは発信の概念です。インターフェイスから発信されるパケットはキューに入れられ、シェーピングが可能です。インターフェイスでは着信トラフィックに対してポリシングだけを適用できます。シェーピングを有効にする場合は、十分なメモリがあることを確認してください。さらに、シェーピングには、遅延パケットの後の送信をスケジュールする機能が必要です。このスケジュール機能を使用すると、シェーピングキューを異なるキューに編成できます。この機能の例としては、クラスベース均等化があります Queuing
(CBWFQ)および低遅延 Queuing
(LLQ)を使用します。
選択基準
次の表は、適切なトラフィックソリューションを選択するために役立つ、シェーピングとポリシングの違いを示しています。
|
シェーピング |
ポリシング |
目的 |
認定レートを超える超過パケットをバッファリングし、キューイングする。 |
認定レートを超える超過パケットを廃棄(または再マーキング)します。バッファリングしない。* |
トークンのリフレッシュ レート |
時間間隔の開始時に補充される。(最小の数の時間間隔が必要) |
次の数式に基づく一定値: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 precedenceまたはDifferentiated Services Code Point(DSCP)が含まれます。
次の図は、QoS機能が一般的に適用される輻輳ポイントでのトラフィックポリシングの一般的な用途を示しています。
最小帯域幅制御と最大帯域幅制御
shape コマンドも police コマンドも、出力レートを最大の kbps 値に制限します。重要なのは、どちらのメカニズムも輻輳時に最小帯域幅を保証しない点です。このような最小帯域幅の保証を提供するには、bandwith または priority コマンドを使用します。
階層型ポリシーでは、2つのサービスポリシーを使用します。1つは、トラフィック集約にQoSメカニズムを適用する親ポリシーで、もう1つは、集約のフローまたはサブセットにQoSメカニズムを適用する子ポリシーです。サブインターフェイスやトンネルインターフェイスなどの論理インターフェイスには、トラフィックの階層ポリシーが必要です。limiting
親レベルで機能し、下位レベルでキューイングします。トラフィック – limiting
この機能により出力レートが低下し、(おそらくは)輻輳が発生します。 queuing
超過パケット。
次の設定は最適ではありませんが、以下の場合にpoliceコマンドとshapeコマンドの違いを示すために示されています。 limiting
トラフィックは、最大レートまで(この場合はclass-default)集約されます。この設定では、policeコマンドは、パケットのサイズと、適合トークンバケットおよび超過トークンバケットに残っているバイト数に基づいて、子クラスからパケットを送信します。(「トラフィック ポリシング」を参照してください)。 その結果、Voice over IP(VoIP)クラスとInternet Protocol(IP;インターネットプロトコル)クラスに設定されたレートは保証できません。これは、priority機能によって保証されたレートが、police機能によって上書きされるためです。
しかし、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子サービスポリシー』を参照してください。
関連情報