◆ ポリシングとシェーピングの概要
Cisco IOSでは、流れるトラフィックの通信速度の制限手法として「 ポリシング 」と「 シェーピング 」の
大きく2つのメカニズムを提供しています。そして、ポリシングやシェーピングには次の種類があります。
現在では、一般的にポリシングといえば「Class-Based Policing」の実装のことを指して、policeコマンド
を使用し、シェーピングといえば「Class-Based Shaping」の実装を指してshapeコマンドを使用します。
レート制限の手法 |
説明 |
ポリシング |
Class-Based Policing(policeコマンド)、CAR
|
シェーピング |
Class-Based Shaping(shapeコマンド)、GTS、DTS、FRTS
|
◆ ポリシングとシェーピングの違い
例えば、100MbpsのWAN帯域のなかで特定トラフィックの通信レートを15Mbpsまでに制限したい場合、
ポリシングまたはシェーピングをデバイスに実装することで実現できるのですが、この15Mbpsを超えた
トラフィックに対する処理方法は、以下の内容どおりポリシングとシェーピングとでは大きく異なります。
レート制限の手法 |
制限レートを超えた場合の超過トラフィックに対するアクション |
ポリシング |
制限レートを超えたパケットはドロップさせる。またはパケットの優先度の変更を行う。
|
シェーピング |
制限レートを超えたパケットはI/Fのキューにバッファさせる。遅延が生じる可能性がある。
|
従って、現在のトラフィックレートが制限レートに達した場合は、ポリシングでは超過トラフィックだけを
バッサリ切り落とすのでノコギリ歯状となります。一方、シェーピングでは超過トラフィックのパケットは
I/Fのキューに格納されて一定の時間おいて送信されることから、トラフィックレートは平滑化されます。
上図を見た場合、一見、パケットをドロップさせないシェーピングの方が優れているように思いますが
シェーピングではキューにバッファさせるための十分なメモリが必要になることや、遅延が許されない
音声トラフィックに対する適用は適していません。以下は「シェーピングとポリシング」の比較表です。
比較項目 |
ポリシング |
シェーピング |
基本機能 |
CIRを超える超過パケットはドロップさせる |
CIRを超える超過パケットはバッファリング |
設定コマンド |
・ Class-Based Policing( policeコマンド )
・ CAR( rate-limitコマンド )
|
・ Class-Based Shaping( shapeコマンド )
・ FRTS( frame-relay traffic-shapetコマンド )
・ GTS( traffic-shapeコマンド )
|
着信I/Fへの適用 |
○ |
× |
発信I/Fへの適用 |
○ |
○ |
バースト |
バーストを伝搬する。平滑化は行わない。 |
平滑化する。バーストは制御する。 |
利点 |
キューイングによる遅延が起らない。 |
超過パケットが廃棄される可能性は少ない |
欠点 |
超過パケットが廃棄される結果、ウィンドウサイズ
が絞られ該当トラフィックの出力レートが下がる |
超過パケットキューイングによる遅延が発生する。 |
◆ トークンバケットとは
トークンバケットとは、ネットワークへのデータ流入量を制御するアルゴリズムであり、分かりやすく言えば
トークンバケットはトラフィックの転送レートを定義するものです。このトークンバケットは、ポリシングや
シェーピングなどで使用されるアルゴリズムです。トークンバケットの「トークン」とはパケットを転送する
ためのデータ量に相当して、「バケット」はトークンを貯めておくための「バケツ」でありバッファに相当。
トラフィックポリシングとトラフィックシェーピングは、このトークンバケットのアルゴリズムを使用します。
トークンバケットではトークンを定期的にバケットに補充したり、指定したバケットのサイズを超えた場合、
定期的に補充される新たなトークンを廃棄したりする動作を行う位置づけにあります。トークンバケットは、
以下の3つの構成要素になり成立しています。
構成要素 |
説明 |
Mean rate |
CIR( Committed information rate )。単位は「bps」。定期的にBucketに補充されるトークンの流量。 |
Burst size |
Bc( Committed burst )。単位は計算式上では「bit」。TCの間隔で受け取るトークンのサイズ。 |
Time interval |
Tc( Committed time interval )。単位は「seconds」。トークンを受け取れる間隔。 |
Mean rateは、Burst size/Time intervalで求められます。従って公式は、CIR(bps)= Be(bit)/ Tc(sec)
|