Kolejkowanie na podstawie klasy (CBQ) jest techniką, w której starano
się połączyć zalety wszystkich do tej pory omawianych
metod. Podstawowym pojęciem jest pojęcie klasy ruchu
(ang. traffic class). Klasę ruchu można wyodrębnić na podstawie wielu
parametrów. Należą do nich m.in:
adres IP nadawcy,
adres IP odbiorcy,
port nadawcy,
port odbiorcy,
priorytet lub inny parametr QoS zawarty w nagłówku pakietu TCP.
Jedna klasa może zatem obejmować pojedyncze komputery, bądź całe
sieci, konkretne usługi, bądź całe ich grupy, strumienie TCP
itd. W takim ujęciu klasa ruchu jest uogólnieniem pojęcia
strumienia. Możliwe
jest również dzielenie już zdefiniowanych klas na
podklasy. W rezultacie wykorzystując CBQ można zbudować bardzo złożone
drzewa
zależności pomiędzy różnymi rodzajami ruchu. W praktyce oznacza to, że
dostępne pasmo jest dzielone na fragmenty, każdy przypisany
innej klasie. Każdej klasie jest przypisana jedna
z metod kolejkowania opisanych w paragrafach
2.2.1-2.2.5. Ponadto istotnym składnikiem
całego mechanizmu jest algorytm decydujący o tym, z której klasy
w danej chwili pakiety mogą być wysyłane, jeżeli oczywiście pozwala na
to metoda kolejkowania przypisana klasie. Działanie CBQ jest zatem
dwustopniowe. Niezależnie od decyzji podejmowanych w obrębie klasy
przez metodę kolejkowania jej przypisaną, w jakiś sposób trzeba
przełączać sterowanie pomiędzy klasami. Najczęściej stosowanym
rozwiązaniem jest ważony algorytm karuzelowy. Dokładniejsze studium
poświęcone zagadnieniu wyboru klasy znaleźć można w pracy
[10]. Dla prawidłowego działania metody potrzebny jest jeszcze
algorytm szacujący faktyczne zapełnienie pasma przez pakiety należące
do danej klasy. W opracowaniach dotyczących CBQ określa się go mianem
estymatora CBQ (ang. CBQ estimator). Jego zadanie polega na określaniu
różnicy pomiędzy przedziałami czasu wynikającymi z założonej wielkości
pasma przypisanej klasie, a faktycznie mierzonymi odstępami
upływającymi między dwoma kolejnymi zdarzeniami wysłania pakietu. Na
podstawie tej różnicy estymator określa stopień wykorzystania
przypisanego klasie pasma i ewentualnie oznacza ją jako przeciążoną
(ang. overlimit). Informacja ta w następnej kolejności jest
wykorzystywana przez algorytm wyboru klasy. Ogólnie sposób działania
metody CBQ jest następujący:
W pierwszej kolejności pakietowi, który ma zostać wysłany przypisuje
się klasę, której warunki przynależności spełnia. W zależności od
metody kolejkowania przypisanej danej klasie pakiet jest wstawiany
do kolejki lub porzucany. W międzyczasie estymator oblicza chwilowe
obciążenie pasma danej klasy i w sytuacji przeciążenia odpowiednio ją
oznakowuje. Pakiety z klas nieprzeciążonych wysyłane są
zgodnie z własnościami metody kolejkowania przypisanej
klasie. Estymator ponownie szacuje zajętość pasma i cały cykl się
powtarza. Złożoność metody oraz fakt, że opiera się ona na innych
sposobach kolejkowania sprawiają, że jest to mechanizm najbardziej
zaawansowany i dostarczający największych możliwości, niestety
niełatwy w implementacji.