トークンバケットのソースを表示
←
トークンバケット
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''トークンバケット'''([[英語|英]]: token bucket)とは、[[コンピュータネットワーク|ネットワーク]]へのデータ流入量を制御する[[アルゴリズム]]の一種であり、[[バースト性]]のあるデータ送信を許容する。いくつかの用途があるが[[トラフィックシェーピング]]の手法として使うことが多い。 なお、バケット (bucket) とは、バケツのことであり、転送すべきネットワークトラフィックを集積する抽象化されたコンテナである(実装は例えば[[バッファ]]や[[キュー (コンピュータ)|キュー]])。 == トラフィックシェーピングのアルゴリズム == トラフィックシェーピングでは、トークンバケットのほかに[[リーキーバケット]]も使われる。この2つは誤って混同されやすい。これらは性質も異なり、目的も異なる<ref>"Deploying IP and MPLS QoS for Multiservice Networks: Theory and Practice" by John Evans, Clarence Filsfils (Morgan Kaufmann, 2007, ISBN 0-12-370549-5)</ref>。大きな違いは、リーキーバケットがデータ転送レートの上限を設定するのに対して、トークンバケットはデータ転送レートの平均に制限を課して、ある程度のバースト性を許容する。 == 概要 == トークンバケットは、バケット内のトークンの存在に基づいてトラフィックの転送をいつ行うかを指示する制御機構である。バケットには複数のトークンがあり、それぞれがあるバイト列単位に対応したり、事前に設定した大きさの1つのパケットに対応している。バケット内のトークンはパケットを送信する際に削除される。ネットワーク管理者は何バイトの転送に何個のトークンを対応させるかを設定する。トークンがあるとき、トラフィックを転送できる。バケット内にトークンがないとき、パケットを転送することはできない。従って、個別のフローに十分なトークンが割り当てられていて、バーストしきい値が適切に設定されていれば、そのフローはバースト的に転送可能である。 == トークンバケット・アルゴリズム == このアルゴリズムを概念的に説明すると以下のようになる。 * トークンは <math>1/r</math> 秒おきにバケットに追加される。 * バケットは最大 ''b'' 個のトークンを保持できる。バケットが満杯の場合、新たなトークンは捨てる。 * ''n''バイトのパケット ([[Protocol Data Unit|PDU]]) が到着すると、''n'' 個のトークンを削除し、そのパケットをネットワークに送り出す。 * 空いているトークンが ''n'' 個未満の場合、トークンは削除せず、そのパケットは ''non-conformant'' 状態とされる。 このアルゴリズムは最大 ''b'' バイトまでのバースト転送を許容するが、長期的に見れば (''conformat'') パケットの転送レートは <math>r</math> という定数で制限される。''non-conformant'' パケットには以下のようないくつかの扱い方がある。 * 捨てる。 * バケット内の空きトークンが十分な数になるまでキューイングしておく。 * non-conformant という印を付けて構わずに転送する。ただし、ネットワークが高負荷状態であればどこかで捨てられる可能性がある。 <math>1/r</math> 秒おきにトークンを追加するには、その装置のクロックがそれより細かくなければならない。そうでない装置では、実装には別の定式化を必要とする。Sミリ秒おきにトークバケットを更新できる場合、Sミリ秒おきに追加するトークン数は <math>(r*S)/1000</math> となる。 == 階層型トークンバケット == 階層型トークンバケット (hierarchical token bucket、'''HTB''') は、[[Linux]] での Class Based Queueing (CBQ) というキューイング規則の代替となる高速化手法である。 HTB は、そのリンク上の[[帯域幅]]の利用を制御する補助となる。HTBは物理的には単一のリンクを複数の低速なリンクのように扱い、その個々の低速リンクごとに異なる種類のトラフィックを担わせる。物理リンクを仮想的な複数のリンクに分割する設定や、個々のパケットをどのリンクで送るかの設定が必要となる。 すなわち、HTBはクライアントマシンの[[ダウンロード]]/[[アップロード]]の転送レートを制限する際に特に役立つ。転送レートを制限したクライアントは、ネットワーク全体の帯域幅を使い切ってしまうことがない。 == 脚注 == {{Reflist}} == 参考文献 == * Ferguson P., Huston G., Quality of Service: Delivering QoS on the Internet and in Corporate Networks, John Wiley & Sons, Inc., 1998. ISBN 0-471-24358-2. * Andrew S. Tanenbaum, ''Computer Networks'', 3rd Edition, Prentice-Hall, 1996. == 関連項目 == * [[リーキーバケット]] * [[トラフィックシェーピング]] == 外部リンク == * [http://luxik.cdi.cz/~devik/qos/htb/ HTB home] - Linux用パケットスケジューラ {{DEFAULTSORT:とくんはけつと}} [[Category:通信プロトコル]] [[Category:アルゴリズム]]
このページで使用されているテンプレート:
テンプレート:Reflist
(
ソースを閲覧
)
トークンバケット
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報