TC(8) | Linux | TC(8) |
tc - pokaż / manipuluj ustawieniami sterowania przepływem
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
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:
Przetwarzanie ruchu jest kontrolowane przez trzy rodzaje obiektów: dyscypliny kolejkowania (qdiscs), klasy (classes), oraz filtry (filters).
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ć.
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.
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.
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.
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 obiekty qdisc (bazujące na elementarnych algorytmach kolejkowania) są to:
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 obiekty qdisc to:
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:
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.
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.
Wszystkie parametry akceptują zapis zmiennoprzecinkowy, z możliwością zakończenia go jednostką.
Pasma lub częstości mogą zostać podane w:
Ilość danych może być podana w:
Długości czasu mogą być wyspecyfikowane w:
Poniższe polecenia są dostępne dla obiektów qdisc, klas i filtrów:
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)
tc zostało napisane przez Alexeja N. Kuznetsova i dodane w jądrach Linux 2.2.
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)
Stronę podręcznika utrzymuje bert hubert (ahu@ds9a.nl) Niewielkie rozszerzenia i tłumaczenie na język polski napisał paweł wilk (siefca@gnu.org)
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:
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.
16 Grudzień 2001 | iproute2 |