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.