Algorytmy obsługi kolejek pakietów są konfigurowane przy pomocy
programu tc
, będącego częścią pakietu iproute2
. Jego autor
zadbał o możliwość poszerzania jego funkcjonalności bez konieczności
zmian kodu źródłowego - poprzez biblioteki dynamiczne.
Ogólna składnia polecenia dodania, zmiany lub usunięcia algorytmu wygląda następująco:
Słowo kluczowe qdisc
oznacza, że polecenie jest operacją na
algorytmach obsługi kolejek; po nim następują:
add
, del
,
replace
, change
lub get
),
dev
),
handle
),
root
), wejściowej (ingress
) lub podklasa innej
klasy (parent
),
estimator
),
QDISC_KIND
) i specyficznie dla niego
parametry (OPTIONS
).
Ostatni z tych elementów może mieć dowolną postać; jego wczytywaniem
zajmują się funkcje zdefiniowane niezależnie dla każdego
z dostępnych algorytmów w strukturach
struct qdisc_util <nazwa>_util
. Jeśli jako QDISC_KIND
podana zostanie nazwa nie rozpoznawana przez tc
jako nazwa
jednego z algorytmów, których obsługa została wkompilowana, program
spróbuje wczytać kod funkcji i zawartość struktury qdisc_util
z biblioteki dynamicznej o nazwie q_<nazwa>.so
. W przypadku
sch_ep
jest to więc q_ep.so
.
|
Biblioteka ta zawiera definicje wymaganych przez tc
funkcji
(wymienionych w tabelce 3.4); po jej dołączeniu polecenie
tc
pozwala na podanie (w części OPTIONS
) parametrów
opisujących zachowanie algorytmu sch_ep
:
Po słowie kluczowym ep
można podać liczbę priorytetów
(PRIORITIES
), priorytet domyślny (DEFAULT_PRIORITY
) oraz
zdefiniować sposób modyfikacji pakietów (lub informacji
o nim). Możliwe akcje to:
tc_index
na jedną z wartości
podanych w liście tc_valuemap
,
DS
na podstawie masek oraz wartości
podanych w listach ds_maskmap
i ds_valuemap
,
nfmark
na jedną
z wartości podanych w liście fw_valuemap
.
We wszystkich trzech przypadkach wykorzystywane są elementy wpisane w odpowiednich listach na pozycjach o numerze równym priorytetowi zmienianego pakietu.