HFSC
HFSC (ang. Hierarchical Fair Service Curve) jest algorytmem kolejkowania ruchu powstałym jako odpowiedź na pewne ograniczenia algorytmu HTB polegające głównie na braku specjalnej obsługi ruchu bardzo wrażliwego na opóźnienia czyli jednakowym traktowaniem przez HTB wszystkich rodzajów pakietów w danej kolejce.
HFSC został zaimplementowany po raz pierwszy w systemach NetBSD i FreeBSD, a następnie przeportowany do OpenBSD (Pocket Filter) i jądra systemu Linux od wersji 2.4.25.
HFSC umożliwia zarówno dzielenie pasma, priorytetowanie go, jak również zapewnienie pewnym aplikacjom gwarantowanego pasma z jak najmniejszymi opóźnieniami. Każda klasa HFSC może mieć parametry:
- rt określający wielkość gwarantowanego pasma dla aplikacji real-time
- ls określający wielkość dzielonego pasma (odpowiednik rate w HTB)
- ul będący górnym limitem prędkości (odpowiednik ceil w HTB)
Każdej kolejce (rt, ls i ul) można przypisać prędkość na dwa sposoby:
- m1 Xkbit d ts m2 Ykbit ustalający, że przez t sekund prędkość tej klasy może wynosić do X kbps, a po tym czasie ma wynosić Y kbps (X musi być większe od Y) - jest to odpowiednik burst w HTB.
- rate Zkbit powoduje, że dana klasa ma prędkość Z kbps (jest to odpowiednik m1 0 d 0 m2 Zkbit).
Podstawowa różnica między HFSC a HTB polega na zupełnie odmiennym traktowaniu ruchu nieprzypisanego do żadnej kolejki (w tym pakietów ARP). HTB samo tworzyło ukrytą kolejkę dla takiego ruchu i go przepuszczało, natomiast HFSC bez kolejki domyślnej albo z kolejką domyślną o bardzo małej wielkości, może odrzucać pakiety niesklasyfikowane. Odrzucanie pakietów ARP może powodować niedziałanie sieci, więc stosując HFSC należy koniecznie zadbać o dokładne klasyfikowanie ruchu i stworzenie domyślnej kolejki.