トークン バケットは、転送レートの正式な定義です。 バースト サイズ、平均レート、時間間隔(Tc)という 3 つの構成要素があります。 通常は中間レートがビット/秒の単位で表されますが、次に示す関係式によって、2 つの値が残る 3 つめの値から導き出される場合もあります。
mean rate = burst size / time interval
これらの用語の定義は次のとおりです。
平均レート:認定情報レート(CIR)とも呼ばれ、単位時間に送信または転送できるデータ量の平均値を指定します。
バースト サイズ:認定バースト(Bc)サイズとも呼ばれ、スケジューリングの問題を発生させることなく単位時間内に送信できるトラフィックの量を、バーストあたりのビット数(またはバイト数)で指定します (GTS などのシェーパーの場合はバースト当たりのビット数を指定し、CAR などのポリサーの場合はバーストおよび 1 秒当たりのバイト数を指定します)。
時間間隔:測定間隔とも呼ばれ、バーストあたりの時間量を秒単位で指定します。
定義では、間隔が整数倍の場合は、インターフェイスのビット レートは中間レートを超えません。 ただし、ビット レートは間隔内で任意に早くなる場合があります。
トークン バケットは、フロー内のデータを規制するデバイスの管理に使用されます。 調整デバイスは、たとえば CAR のようなトラフィック ポリサーの場合もあれば、FRTS や GTS のようなトラフィック シェーパーの場合もあります。 トークン バケット自体には、廃棄ポリシーまたはプライオリティ ポリシーはありません。 むしろ、トークン バケットは、フローによって規制機能が過剰に働く場合に、トークンを廃棄し、送信キューの管理の問題はフローに任せます。 (CAR、FRTS、および GTS は、真のトークン バケットまたは真のリーキー バケットを実装しません)。
トークン バケットのたとえで言えば、トークンは特定のレートでバケットに入れられます。 バケット自体には指定された容量があります。 バケットがいっぱいになると、新しく到着するトークンは廃棄されます。 各トークンは、送信元が一定の数のビットをネットワークに送信するための権限です。 パケットを送信するため、規制機能はパケット サイズに等しい数のトークンをバケットから削除する必要があります。
パケットを送信できるだけの十分なトークンがバケット内に存在しない場合、パケットは、バケットに十分な量のトークンが蓄積されるまで送信待ちの状態になるか(GTS の場合)、廃棄またはマークダウンされます(CAR の場合)。 バケットがすでにトークンで満たされている場合、着信トークンはオーバーフローし、以降のパケットには使用できません。 したがって、いつでも、送信元がネットワークに送信できる最大のバーストは、バケットのサイズにほぼ比例します。
トラフィック シェーピングに使用されるトークン バケット メカニズムは、トークン バケットとデータ バッファまたはキューの両方を持っています。データ バッファを持たない場合は、ポリシング機能になります。 トラフィック シェーピングの場合、到着したパケットですぐに送信できないものは、データ バッファで遅延されます。
トラフィック シェーピングでは、トークン バケットはバースト性を許可する一方で、それを抑制します。 特定の速度(バケットの容量を時間間隔で割り、それにトークン バケットへのトークン格納レートを加えた値)を超える速度でフローが送信されないように、バースト性が確実に抑制されます。 次の式を参照してください。
(token bucket capacity in bits / time interval in seconds) + established rate in bps = maximum flow speed in bps
このようなバースト性抑制方法は、長期的な送信レートが設定されているバケットへのトークン格納レートを超えないことも保証します。