Provided by: manpages-pl_20060617-1_all bug

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

       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)