Hierarchical Token Bucket, HTB – algorytm hierarchicznego podziału łącza. Umożliwia on:
HTB zostało włączone do jądra Linuksa poczynając od wersji 2.4.20. Koncepcję HTB opracował i dokonał pierwszej implementacji Martin Devera.
Zbliżone cechy posiada inny algorytm kolejkowania – CBQ (ang. Class Based Queueing).
Algorytm Token Bucket ma wiele znaczeń, najlepiej jednak jest go rozumieć w kontekście sterowania natężenia ruchu w sieci lub ograniczania pasma. Algorytm jest wykorzystywany do kontrolowania ilości danych transmitowanych w sieci, pozwalając na szybsze ich wysłanie.
Istnieją dwie dominujące metody sterowania ruchem: model „cieknącego wiadra” (ang. leaky bucket) i model „wiadra z żetonami” (ang. token bucket). Często algorytm Leaky Bucket utożsamiany jest niesłusznie z algorytmem Token Bucket. Obydwa modele mają odrębne działanie i są używane do różnych celów. Ich różnica polega głównie na tym, że algorytm Leaky Bucket nakłada duży limit na szybkość transmitowanych danych, podczas gdy algorytm Token Bucket pozwala na dokładne ustalenie ograniczenia prędkości transmisji w odniesieniu do różnorodnej wielkości napływających pakietów danych.
Token Bucket to mechanizm kontrolujący, który dyktuje kiedy pakiety danych mogą być przesłane. Token Bucket posługuje się wzorcem w postaci bufora – kubełka (Bucket), do którego wpadają „żetony” (Tokens) z określonym administracyjnie natężeniem. Wysyłanie określonych porcji danych z kolejki powoduje skasowanie żetonu z kubełka. Przepływ danych może więc opróżnić kubełek z żetonów i na skutek tego zostać chwilowo wstrzymany, ograniczając pasmo. Jego brak czy spowolnienie może wypełnić bufor żetonami (tylko do pojemności bufora), pozostawiając pewną rezerwę na chwilowy wzrost natężenia ruchu.
Sytuacje które występują w algorytmie Token Bucket: