Na stronie podręcznika jedynym ograniczeniem burst
jest to, że musi być wystarczająco wysoka, aby umożliwić skonfigurowaną szybkość: musi to być co najmniej szybkość / HZ. HZ jest parametrem konfiguracyjnym jądra; możesz dowiedzieć się, co to jest w twoim systemie, sprawdzając konfigurację jądra. Np. W Debianie możesz:
$ egrep '^CONFIG_HZ_[0-9]+' /boot/config-`uname -r`
CONFIG_HZ_250=y
więc HZ w moim systemie wynosi 250. Aby uzyskać szybkość 10 Mb burst
/ s, potrzebowałbym co najmniej 10 000 000 bitów / s ÷ 250 Hz = 40 000 bitów = 5000 bajtów. (Uwaga: wyższa wartość na stronie podręcznika pochodzi z sytuacji, gdy HZ = 100 było wartością domyślną).
Ale poza tym burst
jest także narzędziem polityki. Konfiguruje zakres, w jakim można teraz użyć mniejszej przepustowości, aby „zapisać” ją na przyszłość. Jedną z powszechnych rzeczy jest to, że możesz chcieć pozwolić, aby małe pliki do pobrania (powiedzmy strona internetowa) działały bardzo szybko, a jednocześnie dławiły duże pliki do pobrania. Robisz to, zwiększając burst
rozmiar do rozmiaru, który uważasz za małe pobranie. (Często jednak przełączasz się na klasyczną qdisc, taką jak htb, dzięki czemu możesz segmentować różne typy ruchu).
Zatem: konfigurujesz, aby seria była co najmniej wystarczająco duża, aby osiągnąć pożądane rate
. Poza tym możesz go zwiększyć, w zależności od tego, co próbujesz osiągnąć.
Model koncepcyjny filtra kubełkowego żetonów
„Wiadro” to obiekt metaforyczny. Jego kluczowymi właściwościami jest to, że może przechowywać tokeny, a liczba tokenów, które może przechowywać, jest ograniczona - jeśli spróbujesz dodać więcej, „przepełnia się”, a dodatkowe tokeny są tracone (tak jak próba włożenia zbyt dużej ilości wody do rzeczywiste wiadro). Rozmiar wiadra nazywa się burst
.
Aby faktycznie przesłać pakiet do sieci, pakiet ten musi uzyskać tokeny równe jego rozmiarowi w bajtach lub mpu
(w zależności od tego, który jest większy).
Istnieje (lub może być) linia (kolejka) pakietów oczekujących na tokeny. Dzieje się tak, gdy wiadro jest puste lub alternatywnie ma mniej tokenów niż rozmiar pakietu. Na chodniku przed wiadrem jest tylko tyle miejsca, a ilość miejsca (w bajtach) jest ustawiana bezpośrednio przez limit
. Alternatywnie można go ustawić pośrednio za pomocą latency
(w idealnym świecie obliczenia będą wynosić rate
× latency
).
Kiedy jądro chce wysłać pakiet z filtrowanego interfejsu, próbuje umieścić pakiet na końcu linii. Jeśli na chodniku nie ma miejsca, jest to niefortunne dla pakietu, ponieważ na końcu chodnika jest dół bez dna, a jądro upuszcza pakiet.
Ostatnim elementem jest maszyna do robienia żetonów, która dodaje rate
/ HZ
żetony do wiadra za każdym razem. (Właśnie dlatego twoje wiadro musi być co najmniej tak duże, w przeciwnym razie niektóre z nowo wybitych żetonów zostaną natychmiast odrzucone).
tbf
jest częścią systemu kontroli ruchu w systemie Linux.man tbf
lubman tc-tbf
powinien przynieść dokumentację.