Auf der Manpage besteht die einzige Einschränkung burst
darin, dass sie hoch genug sein muss, um Ihre konfigurierte Rate zuzulassen: Sie muss mindestens Rate / Hz betragen. HZ ist ein Kernel-Konfigurationsparameter. Sie können herausfinden, was es auf Ihrem System ist, indem Sie Ihre Kernelkonfiguration überprüfen. Auf Debian können Sie beispielsweise:
$ egrep '^CONFIG_HZ_[0-9]+' /boot/config-`uname -r`
CONFIG_HZ_250=y
HZ auf meinem System ist also 250. Um eine Rate von 10 MBit burst
/ s zu erreichen, würde ich daher eine Geschwindigkeit von mindestens 10.000.000 Bit / s ÷ 250 Hz = 40.000 Bit = 5000 Byte benötigen . (Beachten Sie, dass der höhere Wert in der Manpage stammt, wenn HZ = 100 die Standardeinstellung war.)
Darüber hinaus burst
ist aber auch ein politisches Instrument. Es konfiguriert das Ausmaß, in dem Sie jetzt weniger Bandbreite verwenden können, um es für die zukünftige Verwendung zu "speichern". Eine häufige Sache hierbei ist, dass Sie möglicherweise zulassen möchten, dass kleine Downloads (z. B. eine Webseite) sehr schnell ausgeführt werden, während Sie große Downloads drosseln. Sie tun dies, indem burst
Sie die Größe erhöhen , die Sie für einen kleinen Download halten. (Allerdings wechseln Sie häufig zu einer erstklassigen qdisc wie htb, damit Sie die verschiedenen Verkehrstypen segmentieren können.)
Also: Sie konfigurieren den Burst so, dass er mindestens groß genug ist, um das gewünschte Ergebnis zu erzielen rate
. Darüber hinaus können Sie es weiter erhöhen, je nachdem, was Sie erreichen möchten.
Konzeptmodell eines Token-Bucket-Filters
Ein "Eimer" ist ein metaphorisches Objekt. Seine Schlüsseleigenschaften sind, dass es Token aufnehmen kann und dass die Anzahl der Token, die es aufnehmen kann, begrenzt ist. Wenn Sie versuchen, mehr hinzuzufügen, läuft es über und die zusätzlichen Token gehen verloren (genau wie der Versuch, zu viel Wasser in ein Token zu geben) tatsächlicher Eimer). Die Größe des Eimers wird aufgerufen burst
.
Um ein Paket tatsächlich in das Netzwerk zu übertragen, muss dieses Paket Token erhalten, die seiner Größe in Bytes oder mpu
(je nachdem, welcher Wert größer ist) entsprechen.
Es gibt (oder kann) eine Reihe (Warteschlange) von Paketen, die auf Token warten. Dies tritt auf, wenn der Bucket leer ist oder alternativ weniger Token als die Größe des Pakets hat. Auf dem Bürgersteig vor dem Eimer ist nur so viel Platz, und die Menge an Platz (in Bytes) wird direkt von festgelegt limit
. Alternativ kann es indirekt mit eingestellt werden latency
(in einer idealen Welt wäre die Berechnung rate
× latency
).
Wenn der Kernel ein Paket über die gefilterte Schnittstelle senden möchte, versucht er, das Paket am Ende der Zeile zu platzieren. Wenn auf dem Bürgersteig kein Platz ist, ist das für das Paket unglücklich, da sich am Ende des Bürgersteigs eine Grube ohne Boden befindet und der Kernel das Paket fallen lässt.
Das letzte Stück ist eine Token-Maschine , die addiert rate
/ HZ
Token , um den Eimer jede Zecke. (Aus diesem Grund muss Ihr Eimer mindestens so groß sein, da sonst einige der neu geprägten Token sofort weggeworfen werden.)
tbf
ist Teil des Linux Traffic Control Frameworks.man tbf
oderman tc-tbf
sollte Dokumentation bringen.