Provided by: manpages-pl_20060617-4_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)

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.