ルータやスイッチにおいてネットワーク・トラフィックを制御する方法として,パケットをキューにためて出力帯域をおさえるシェイピング (shaping) と,特定のトラフィックがしめる帯域を計測して上限値をこえるとパケットを廃棄するポリシング (policing) とがある (「QoS 制御のための基本概念」 参照). これらの制御においてはリーキー・バケット (leaky bucket) とトークン・バケット (token bucket) というモデルがつかわれるが,これらの 2 つはよく似ているために混同される.
ここには図をかかないが,リーキー・バケットとトークン・バケットを理解するには図をつかう,しかもアニメーションをつかうのがよいとかんがえられる. Interactive Museum Telecommunication の Traffic Shaping という項目には Java の applet をつかったアニメーションがあるので,参照するとよい.
リーキー・バケットとは穴のあいたバケツである. これは,パケットをキューにためる,シェイピングのモデルである. 水にたとえられたトラフィックをそのバケツにいれると,流量がすくないときは全部が穴からながれでるが,流量がふえるとしだいにバケツにたまっていく. バケツがいっぱいになるとあふれて,パケットはすてられる.
これに対してトークン・バケットはポリシングのモデルである. ポリシングにおいてはパケットがバケツにためられることはない. バケツにためられるのはトークンとよばれる仮想的なデータである. トークンはルータのなかで一定時間ごとに仮想的に生成され,バケツにためられる. このバケツには穴はあいていない. 実際のパケットがポリシング機構を通過すると,それにみあった量のトークンがバケツからとりだされる. みあう量のトークンがたまっていなければ,パケットはそこを通過することができず,廃棄される.
場合によってはトークン・バケットをシェイピングのためにつかうことができる. リーキー・バケットがバケツの穴できめられる最大流量をこえないようにトラフィックを制御するのに対して,トークン・バケットの特徴はバーストを許容することであり,この方法はシェイピングにも応用できるからである. しかし,そこまでかんがえると複雑になりすぎて,わかりにくくなる. とりあえず上記のように,リーキー・バケットはシェイピングのモデルでありトークン・バケットはポリシングのモデルだと理解しておけば,わかりやすいようにおもえる.