リーキーバケット
From Wikipedia, the free encyclopedia
原理
リーキーバケットはネットワークに送信するトラフィックに対して、その転送レートを制御する。名前の通り、穴の開いたバケツに相当し、様々な流量の水流がそのバケツに流れ込むと、そこまでの流量がどうであっても小さな穴からは一定の水流が流れ出す。同様にリーキーバケット・アルゴリズムは様々なバースト性のトラフィックを一定のトラフィックに変換する機構を提供する。
リーキーバケット・アルゴリズム
アルゴリズムを概念的に説明すると、次のようになる。
- 底に穴のあるバケツがあるとする。
- バケツの容量は、そこに溜め込めるデータの量を示している。
- バケツの大きさが バイトだとすると、空の状態で バイトまで溜め込めることを意味する。
- 空き容量より大きなパケットが到着した場合、捨てるかキューイングされる。空き容量より小さいパケットの場合はそのままバケツに入れる。
- バケツの穴からは一定レートのデータ、例えば バイト毎秒のデータが出て行く。
ATMネットワークのトラフィックシェーピングで使っている Generic Cell Rate Algorithm (GCRA) はリーキーバケット・アルゴリズムと等価である。
道路交通との対比
道路交通でたとえると、リーキーバケットは4車線の道路を1車線に収束させる場合に相当する。1車線への進入間隔を制御することでトラフィックが全体として動けるようになる。この手法の利点は、主要幹線(ネットワーク)へ流入する交通量が予測でき制御できる点である。この際の問題点は、バケット容量を遥かに超える交通量があるとき、進入間隔との関係でバケット容量を超えるトラフィックを捨てることになる点である[1]。