マンページからの唯一の制約burst
は、設定されたレートを可能にするのに十分な高さでなければならないことです。少なくともレート/ HZでなければなりません。HZはカーネル構成パラメーターです。カーネル構成を確認することで、システム上での内容を把握できます。たとえば、Debianでは次のことができます。
$ egrep '^CONFIG_HZ_[0-9]+' /boot/config-`uname -r`
CONFIG_HZ_250=y
したがって、私のシステムのHZは250です。10mbpsのレートに到達するにburst
は、少なくとも10,000,000ビット/秒÷250 Hz = 40,000ビット= 5000バイトが必要です。(マンページのより高い値は、HZ = 100がデフォルトであった場合のものであることに注意してください)。
しかし、これを超えて、それburst
は政策ツールでもあります。それは、将来使用するためにそれを「保存」するために、より少ない帯域幅を使用できる範囲を構成します。ここでよくあることの1つは、大きなダウンロードを抑制しながら、小さなダウンロード(たとえば、Webページ)を非常に高速にしたい場合があることです。これburst
は、小さなダウンロードと見なすサイズに増やすことによって行います。(ただし、htbのようなクラスフルqdiscに切り替えることが多いため、さまざまなトラフィックタイプをセグメント化できます。)
だから、:あなたが希望を達成するために、少なくとも十分な大きさであることをバースト構成しますrate
。それを超えて、達成しようとしていることに応じて、さらに増やすことができます。
トークンバケットフィルターの概念モデル
「バケット」は比喩的なオブジェクトです。その主要な特性は、トークンを保持できること、および保持できるトークンの数が制限されていることです。追加しようとすると、「オーバーフロー」し、余分なトークンが失われます(水を入れすぎようとするのと同じです)。実際のバケット)。バケットのサイズはと呼ばれburst
ます。
パケットを実際にネットワークに送信するには、そのパケットは、バイト単位のサイズまたはmpu
(どちらか大きい方)に等しいトークンを取得する必要があります。
トークンを待っているパケットの行(キュー)が存在します(または存在する可能性があります)。これは、バケットが空であるか、パケットのサイズよりもトークンが少ない場合に発生します。歩道のバケットの前のスペースは非常に多く、スペースの量(バイト単位)はによって直接設定されlimit
ます。または、それを間接的に設定することもできますlatency
(理想的な世界では、計算はrate
×になりますlatency
)。
カーネルがフィルターされたインターフェースからパケットを送信する場合、カーネルはパケットを行末に配置しようとします。歩道の端に底のないピットがあり、カーネルがパケットをドロップするため、歩道にスペースがない場合、それはパケットにとって残念です。
最後のピースは、追加トークン製造機であるrate
/ HZ
トークンをバケットにすべてのダニを。(これがバケットが少なくともこの大きさでなければならない理由です。それ以外の場合、新しく作成されたトークンの一部はすぐに破棄されます)。
tbf
はLinuxトラフィック制御フレームワークの一部です。man tbf
またはman tc-tbf
ドキュメントを表示する必要があります。