Provided by: manpages-pl_0.7-2_all 

NAZWA
tc - pokaż / manipuluj ustawieniami sterowania przepływem
SKŁADNIA
tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [
specyficzne parametry ]
tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ specyficzne
parametry ]
tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority
filtertype [ specyficzne parametry ] flowid flow-id
tc [-s | -d ] qdisc show [ dev DEV ]
tc [-s | -d ] class show dev DEV
tc filter show dev DEV
OPIS
Uwaga! To tłumaczenie może być nieaktualne!
Tc używane jest do konfigurowania Sterowania Przepływem w jądrze Linux. Sterowanie Przepływem składa się
z:
CIĘCIA (SHAPING)
Gdy ruch jest przycinany to pod kontrolą jest częstość jego transmisji. Przycinanie może być czymś
więcej niż tylko zmniejszaniem dostępnego pasma - bywa także używane w celu wygładzenia nagłych
przyrostów ruchu, aby sieć jako całość działała lepiej. Cięcia pasma następuje zawsze na wyjściu
interfejsu sieciowego.
SZEREGOWANIA (SCHEDULING)
Poprzez szeregowanie transmisji pakietów możliwym staje się zwiększenie interaktywności ruchu,
który tego wymaga, przy jednoczesnym gwarantowaniu pasma dla dużych transferów. Takie
porządkowanie kolejności bywa również nazywane priorytetyzacją i następuje tylko i wyłącznie na
wyjściu.
NADZOROWANIA (POLICING)
Tak jak cięcie pasma dotyczy transmitowania ruchu tak nadzorowanie i preselekcja odnosi się do
ruchu, który przychodzi. Selekcjonowanie zachodzi na wejściu.
ODRZUCANIA (DROPPING)
Ruch o natężeniu przekraczającym ustalone pasmo może być odrzucany zarówno na wejściu jak i na
wyjściu.
Przetwarzanie ruchu jest kontrolowane przez trzy rodzaje obiektów: dyscypliny kolejkowania (qdiscs),
klasy (classes), oraz filtry (filters).
QDISCS
qdisc jest skrótem od 'queueing discipline' (dyscyplina kolejkowania) i jest pojęciem podstawowym w
rozumieniu sterowania przepływem. Jeśli kiedykolwiek jądro chce wysyłać pakiet do interfejsu sieciowego
to pakiet ten jest kolejkowany przy pomocy odpowiedniego obiektu qdisc skonfigurowanego dla tego
interfejsu. Zaraz potem jądro próbuje pobrać możliwie największą ilość pakietów z obiektu qdisc (z -
nazwijmy umownie - wyjścia z kolejki), aby przekazać je sterownikowi karty sieciowej.
Prostym QDISC jest kolejka 'pfifo', która wcale nie dokonuje przetwarzania napływająch pakietów i jest
tylko czystą kolejką FIFO (pierwszy na wejściu, pierwszy na wyjściu). Jej jedyne zadanie to
przetrzymywanie pakietów w krótkich chwilach, gdy interfejs sieciowy nie może ich obsłużyć.
KLASY
Niektóre obiekty dyscypliny kolejkowania (qdisc) nie są takie proste jak opisany powyżej i mogą zawierać
w sobie tak zwane klasy. Klasy te są z kolei swoistymi kontenerami dla innych obiektów qdisc - ruch może
być więc kolejkowany w każdym innym obiekcie qdisc, który należy do tych zdefiniowanych wewnątrz klas.
Gdy jądro próbuje zdjąć pakiet z takiego klasyfikującego qdisc to może on pochodzić z którejkolwiek z
należących do qdisc klas. Dla przykładu qdisc może priorytetyzować pewną część ruchu poprzez usiłowanie
zdjęcia pakietów z jednych ze swych kolejek wcześniej niż z innych.
QDISC A KLASY
Chociaż istnieją obiekty qdisc (dyscypliny kolejkowania), które mogą w sobie zawierać klasy to nie należy
utożsamiać pojęcia qdisc z pojęciem klasy. Klasa jest swoistym slotem, w którym można osadzić potomne
qdisc. Klasa sama w sobie nie jest obiektem kolejkującym.
ALGORYTMY KOLEJKOWANIA
Niektóre opracowania i tłumaczenia posługują się terminem Algorytmy Kolejkowania. Algorytm kolejkowania
to innymi słowy logika działania danego typu qdisc, czyli w praktyce użytej kolejki pakietów. Algorytm
kolejkowania może być elementarny lub złożony. Elementarne (podstawowe) algorytmy kolejkowania obecne są
w kolejkach, które wyspecjalizowane są w sterowaniu przepływającym przez daną kolejkę ruchem pakietów.
Nie mamy w takich kolejkach do czynienia z niczym ponad stosowanie pewnego algorytmu do zarządzania
przepływnością tego co do kolejki przychodzi. Algorytmy złożone to jak sugeruje nazwa takie, które
stanowią logikę obiektów qdisc zawierających w sobie więcej niż jeden obiekt, a dokładnie wiele obiektów
opartych na elementarnych algorytmach. Przykładem implementacji złożonego algorytmu może być obiekt qdisc
zawierający klasy, a opisany wcześniej.
FILTRY
Filtr jest używany przez kolejki klasyfikujące by określić do jakiej konkretnie kolejki pakiet powinien
trafić. Gdy na wejściu kolejki zawierającej podklasy pojawia się ruch to ruch ten musi zostać
sklasyfikowany. Aby to osiągnąć możemy zastosować wiele różnych metod. Jedną z tych metod przydzielania
ruchu spełniającego jakieś kryteria do konkretnych podklas jest właśnie użycie filtrów. Filtry
przydzielamy do obiektów qdisc. Wszystkie podłączone filtry są uruchamiane (tzn. każdy pakiet
podlegający danej dyscyplinie kolejkowania jest z nimi porównywany), aż do momentu aż będzie pasował do
jakiegoś filtra i powróci z werdyktem. Jeśli żaden filtr nie "złapał" pakietu to mogą być brane pod uwagę
jeszcze inne kryteria. Zależy to od typu qdisc.
Jest bardzo istotnym by zauważyć, że filtry są obecne wewnątrz obiektów qdisc - one bezpośrednio nie
decydują o tym co się stanie.
BEZKLASOWE QDISC
Bezklasowe obiekty qdisc (bazujące na elementarnych algorytmach kolejkowania) są to:
[p|b]fifo
Najprostszy możliwy do zastosowania obiekt qdisc, czyste zachowanie FIFO - pierwszy na wejściu -
pierwszy na wyjściu. Możliwy limit to pakiety lub bajty.
pfifo_fast
Standardowy obiekt qdisc jeśli jądro skompilowano z opcją 'Advanced Router'. Zawiera trójwstęgową
kolejkę, która honoruje flagi Typu Usługi (TOS), tak jak i priorytet, który może zostać przypisany
do pakietu.
red Losowa Wczesna Detekcja (ang. Random Early Detection - w skr. RED) symuluje fizyczne przeciążenia
losowo porzucając pakiety, gdy natężenie ruchu zbliża się do ustalonego limitu. Dobrze radzi sobie
ze sterowaniem ruchem masowym, czyli zawierającym duże transfery w dużej ilości.
sfq Stochastyczne Sprawiedliwe Kolejkowanie (ang. Stochastic Fairness Queueing - w skr. SFQ) tak
szereguje kolejkowany ruch, żeby każda 'sesja' miała taką samą zdolność transmisji.
tbf Filtr Kubełka Żetonów (ang. The Token Bucket Filter - w skr. TBF) jest przewidziany do
spowalniania ruchu do precyzyjnie określonej częstości. Świetnie się skaluje do dużych szerokości
pasm.
KONFIGUROWANIE BEZKLASOWYCH QDISC
Jeśli nie jest obecny klasyfikujący obiekt qdisc, wtedy bezklasowe obiekty qdisc mogą zostać skojarzone
tylko z interfejsem sieciowym. Tylko jednen taki bezklasowy qdisc może być przyłączony do jednego
urządzenia sieciowego bezpośrednio. Pełna składnia:
tc qdisc add dev DEV root QDISC PARAMETRY-QDISC
By usunąć wprowadź
tc qdisc del dev DEV root
Obiekt qdisc typu pfifo_fast jest ustawiany automatycznie jako domyślny qdisc dla każdego interfejsu
sieciowego, jeśli nic jeszcze nie zostało odpowiednio skonfigurowane.
KLASYFIKUJĄCE QDISC
Klasyfikujące obiekty qdisc to:
CBQ Kolejkowanie Bazujące na Klasach (ang. Class Based Queueing) implementuje bogatą hierarchię klas
dla dzielenia pasma. Zawiera ono elementy przycinające ruch, jak i możliwości priorytetyzacji.
Przycinanie jest przeprowadzane przy pomocy wyliczania czasu bezczynności łącza. Obliczenia
bazują na średniej wielkości pakietu i szerokości dostępnego pasma na najniższej warstwie łącza.
Ten ostatni parametr może być trudno definiowalny dla niektórych typów interfejsów sieciowych.
HTB Hierarchiczny Kubełek Żetonów (ang. The Hierarchy Token Bucket) implementuje bogatą hierarchię
klas, kładąc szczególny nacisk na zgodność z istniejącymi praktykami. Udogodnienia HTB gwarantują
pasmo dla klas i jednocześnie pozwalają specyfikować wysokie limity dzielenia między klasami. HTB
zawiera elementy przycinania pasma bazujące na TBF i może priorytetyzować podczepione klasy.
PRIO Obiekty qdisc typu PRIO są nieprzycinającymi kontenerami dla konfigurowalnej liczby podklas,
których kolejki są opróżniane w kolejności. Pozwala to prostym sposobem włączyć priorytetyzację
ruchu, gdzie klasy o niższym priorytecie mogą tylko wysyłać, jeśli klasy o priorytecie wyższym nie
mają już pakietów do wysłania. By ułatwić konfigurację, domyślnym kryterium są bity Typu Usługi
(TOS) z pakietów.
SPOSÓB DZIAŁANIA
Klasy tworzą drzewo, gdzie każda klasa ma jednego rodzica. Klasa może mieć wiele potomków. Niektóre
obiekty qdisc pozwalają na dodawanie podklas w trakcie działania (CBQ, HTB), podczas gdy inne (PRIO) są
tworzone ze statyczną liczbą potomków.
Obiekty qdisc pozwalające na dynamiczne dodawanie podklas mogą mieć ich zero lub więcej. Do tych podklas
kierowany będzie potem ruch.
Ponadto, każda klasa zawiera tak zwaną kartę qdisc która domyślnie zachowuje się jak pfifo a każdy
dodawany do klasy obiekt qdisc aplikowany jest przed kartą. Qdisc może znów zawierać klasy, lecz każda
klasa może mieć tylko jedną taką kartę. Pod pojęciem karty rozumiemy tu domyślnie aktywowany sposób
kolejkowania, który jest potem zastępowany przez ten już skonfigurowany.
Gdy pakiet wchodzi do klasyfikującego obiektu qdisc to może być sklasyfikowany i trafić do jednej z
zawartych podklas. Są tu dostępne trzy kryteria, chociaż nie wszystkie obiekty qdisc używają wszystkich
trzech:
tc filtry
Jeśli do klasy przyłączone są filtry tc to są one rozpatrywane w pierwszej kolejności. Filtr może
być uczulony na dowolne pola nagłówka pakietu, jak i na znacznik zapory ogniowej (fwmark) dodany
przez mechanizmy ipchains lub iptables działające w jądrze. Zobacz także tc-filters(8).
Typ Usługi (TOS)
Niektóre obiekty qdisc mają wbudowane reguły do klasyfikowania pakietów bazując na polu TOS.
skb->priority
Programy działające w przestrzeni użytkownika mogą zakodować identyfikator danej klasy, która
powinna być użyta w odniesieniu do wysyłanych przez program pakietów. Znacznik ten nazywa się
'skb->priority' i można go ustawić przy pomocy opcji SO_PRIORITY.
Każdy węzeł wewnątrz drzewa może posiadać swoje własne filtry, lecz filtry wyższego poziomu mogą także
wskazywać bezpośrednio na niższe klasy.
Jeśli klasyfikacja nie powiedzie się to pakiety są kolejkowane do karty qdisc podłączonej do danej klasy.
Przeczytaj jednak specyficzne podręczniki, aby uzyskać więcej szczegółów.
NAZEWNICTWO
Wszystkie obiekty qdisc, klasy i filtry mają IDentyfikatory, które mogą być albo wyspecyfikowane jawnie,
albo też przydzielone automatycznie.
IDentyfikatory skłądają się z dwóch numerów: głównego i dodatkowego. Numery te są oddzielone znakiem
dwukropka. Numer główny specyfikuje obiekt nadrzędny qdisc, zaś numer dodatkowy obiekt będący potomkiem.
QDISCS Obiekt qdisc, który potencjalnie może posiadać klasy zajmuje przypisany mu numer główny, zwany
uchwytem (handle), zostawiając przestrzeń nazw numeru dodatkowego dla swych podklas. Uchwyt jest
wyrażany np. jako '10:'. Jest w zwyczaju dokładne przypisywanie uchwytu do qdisc, który będzie
miał pod sobą potomków.
KLASY Klasy rezydujące pod qdisc dzielą z obiektem macierzystym numer główny, lecz każda z klas posiada
oddzielny numer dodatkowy nazywany identyfikatorem klasy (classid). Identyfikator klasy nie ma
związku z klasą macierzystą, tylko i wyłącznie z macierzystym obiektem qdisc. Stosuje się takie
samo nazewnictwo jak przy qdisc.
FILTRY Filtry mają trzyczęściowe IDentyfikatory, które są potrzebne tylko wówczas, gdy używamy hierarchii
filtrów opartej na tablicy haszującej Więcej o tym możesz przeczytać w tc-filters(8).
JEDNOSTKI
Wszystkie parametry akceptują zapis zmiennoprzecinkowy, z możliwością zakończenia go jednostką.
Pasma lub częstości mogą zostać podane w:
kbps Kilobajtach na sekundę
mbps Megabajtach na sekundę
kbit Kilobitach na sekundę
mbit Megabitach na sekundę
bps lub czysta liczba
Bitach na sekundę.
Ilość danych może być podana w:
kb or k
Kilobajtach
mb or m
Megabajtach
mbit Megabitach
kbit Kilobitach
b lub czysta liczba
Bajtach.
Długości czasu mogą być wyspecyfikowane w:
s, sec or secs
całkowitej liczbie sekund
ms, msec or msecs
Milisekundach
us, usec, usecs lub czysta liczba
Mikrosekundach.
POLECENIA TC
Poniższe polecenia są dostępne dla obiektów qdisc, klas i filtrów:
add Dodaje qdisc, klasę lub filtr do węzła. Dla wszystkich encji musi być podany rodzic (parent) albo
przez przekazanie jego IDentyfikatora, albo przez dołączenie bezpośrednio do bazowego urządzenia
sieciowego.
Podczas tworzenia qdisc lub filtra możemy nadać nazwę używając jako parametru uchwytu (handle)
Klasy zaś mogą być nazywane przy użyciu parametru zwanego identyfikatorem (classid)
remove Obiekt qdisc może być usunięty przez podanie jego uchwytu, którym może być również 'root'.
Wszystkie podklasy i ich karty qdisc są automatycznie usuwane, podobnie jak przypisane filtry.
change Niektóre encje mogą zostać zmodyfikowane 'na miejscu'. Składnia taka jak w przypadku 'add', z tym
wyjątkiem, że nie można zmieniać uchwytu, podobnie zresztą jak rodzica. Innymi słowy, change nie
może służyć do usuwania węzła.
replace
Dokonuje niemal atomowej operacji remove/add na istniejącym węźle o podanym identyfikatorze. Jeśli
węzeł nie istnieje jeszcze to jest tworzony.
link Dostępne tylko dla qdisc. Dokonuje zastąpienia (replace) na już istniejącym węźle.
HISTORIA
tc zostało napisane przez Alexeja N. Kuznetsova i dodane w jądrach Linux 2.2.
ZOBACZ TAKŻE
tc-cbq(8), tc-htb(8), tc-sfq(8), tc-red(8), tc-tbf(8), tc-pfifo(8), tc-bfifo(8), tc-pfifo_fast(8),
tc-filters(8)
AUTHOR
Stronę podręcznika utrzymuje bert hubert (ahu@ds9a.nl) Niewielkie rozszerzenia i tłumaczenie na język
polski napisał paweł wilk (siefca@gnu.org)
INFORMACJE O TŁUMACZENIU
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne.
W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub
funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:
man --locale=C 8 tc
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.
iproute2 16 Grudzień 2001 TC(8)