◆ トークンバケットアルゴリズムの種類
Cisco IOSでサポートされているトークンバケットのアルゴリズムには以下の大きく2種類があります。
・ Single Token Bucket( シングルトークンバケット )
・ Dual Token Bucket( デュアルトークンバケット )
簡単に言えば、policeコマンドで「violate-action」アクションコマンドを設定しない場合は、シングル
トークンバケットが採用されて、「violate-action」アクションコマンドを設定した場合には、デュアル
トークンバケットが採用されます。
◆ シングルトークンバケットのアルゴリズム
シングルトークンバケットでは、使用されるトークンバケットは「1つ」です。そのトークンバケットを
conform bucketと言います。このBucketのサイズはpoliceコマンドのNormal Burstサイズで指定した値
となります。初期状態でのBcuketには、Normal Burstサイズで指定した値のトークンが満杯にあります。
パケットが着信した時、そのパケットサイズが現在のconform bukectの値よりも小さい場合か、または、
同等の値である場合にはパケットが転送されます。そしてパケットが転送される際にconform bucketから
転送するパケットサイズ分のトークンが取り除かれます。同時にconform bukectには定期的のトークンが
補充されます。そして、conform bucketの現在の値よりも大きなパケットが着信してきた時には、その
パケットは廃棄されます。パケットが廃棄される場合には、conform bukectのトークンは削除されません。
◆ シングルレート:シングルトークンバケットの動作例
実際に設定したpoliceコマンドの値に対するシングルトークンバケットの動作を見ていきましょう。なお
動作を分かりやすく説明するために、帯域制限を「8kbps」という非常に低い値をコマンド設定しています。
また、Normal Burstサイズを「1000byte」と定義しています。
Cisco(config-pmap-c) # police 8000 1000 conform-action transmit exceed-action drop |
この設定を行った直後の初期状態でconform bucketには「1000byte」分のトークンがあります。仮に
450byteのパケットが着信した時、conform bucket内には「450byte」分のパケットを転送するために
十分なトークンがあるので、設定コマンドの「conform-action」に合致してパケットは転送(transmit)
されます。同時にconform bucketから450byteのトークンが削除されることから、残りは550byteです。
続いて、仮に、0.25秒後にパケットが着信するとします。その場合にはconform bucketに250byte分の
トークンが補充されることになります。 トークンの定期的な補充レートは ((0.25× 8000)/ 8) によって
算出することができます。「8000」はCIRの8000bps「 /8」はbyte算出のための「8byte」を指します。
さて、0.25秒後に250byteのトークンが追加されたことからconform bucketは現在800byteとなります。
次に、その0.25秒後に着信したパケットのサイズが「900byte」であるとします。そのパケットは転送は
するために十分なトークンを得られないため、設定コマンドの「exceed-action」に合致してパケットは
廃棄(drop)されます。その場合、conform bucket内にある800byte分のトークンは取り除かれません。
|