はじめに
このドキュメントでは、トラフィックシェーピングとトラフィックポリシングの間の機能上の違いについて説明します。トラフィックシェーピングとトラフィックポリシングはどちらも出力レートを制限します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
このドキュメントでは、トラフィックシェーピングとポリシングの機能的な違いについて説明します。どちらの機能もトラフィック出力レートを制限します。どちらのメカニズムも、パケットレートを測定するトラフィックメータとしてトークンバケットを使用します。トークンバケットの詳細については、「トークンバケットとは」を参照してください。
ポリシングとシェーピング
トラフィック ポリシングではバーストは伝搬されます。トラフィック レートが最大レートの設定値に達すると、超過トラフィックは破棄(または再マーキング)されます。その結果、出力レートは頂上と谷間のある鋸歯状になります。ポリシングと異なり、トラフィック シェーピングでは、超過パケットはキューまたは漏出バケットに保持され、一定の時間間隔でスケジュールされてから遅れて伝送されます。トラフィック シェーピングの結果、パケットの出力レートは平滑化されます。
次の図は、2つのトラフィックオプションの主な違いを示しています。
ポリシングとシェーピング
シェーピングでは遅延パケットをバッファリングするためのキューと十分なメモリが存在する必要がありますが、ポリシングではそれらは必要ありません。キューは発信の概念です。インターフェイスから発信されるパケットはキューイングされ、シェーピングできます。インターフェイスでは着信トラフィックに対してポリシングだけを適用できます。シェーピングを有効にする場合は、十分なメモリがあることを確認してください。さらに、シェーピングには、遅延パケットの後の送信をスケジュールする機能が必要です。このスケジュール機能を使用すると、シェーピングキューを異なるキューに編成できます。この機能の例としては、クラスベース重み付け均等化( Queuing CBWFQ)や低遅延( Queuing LLQ)があります。
選択基準
次の表は、適切なトラフィックソリューションを選択するのに役立つ、シェーピングとポリシングの違いを示しています。
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による遅延を回避します。 |
短所 |
が原因で遅延が発生する場合があります(特に深いキュー)。 |
超過パケット(設定されている場合)を廃棄し、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値が使用されます。ルータでTcの内部値を使用しているか、コマンドラインで設定された値を使用しているかを確認するには、show traffic-shapeコマンドを使用します。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 能と下位レベルでのキューイングを使用した階層ポリシーが必要です。traffic-limiting 機能を使用すると、出力レートが低下し(おそらく)、 queuing 超過パケットによって見られるように輻輳が発生します。
次の設定は最適ではありませんが、トラフィック集約(このケースではclass-default)が最大レートになるときの police コマンドとshape コマンド limiting の違いを示すために記載しています。この設定の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子サービスポリシー』を参照してください。
関連情報