/ Linux Reviews / Networking / Kształtowanie Ruchu i Zaawansowany Routing HOWTO - en - pl


9.4. Terminologia

By prawidłowo zrozumieć bardziej zaawansowane konfiguracje, niezbędne jest prawidłowe wytłumaczenie pewnych koncepcji. Z uwagi na poziom skomplikowania i świeżość tematu, wiele ludzi używa różnych słów na oznaczanie tych samych rzeczy.

Poniższa lista bazuje na zawartości dokumentu draft-ietf-diffserv-model-06.txt zatytułowanego An Informal Management Model for Diffserv Routers. Można go znaleźć pod adresem http://www.ietf.org/internet-drafts/draft-ietf-diffserv-model-06.txt.

Zapoznaj się z dokumentem by poznać dokładne definicje terminów, które będziemy używali.

Dyscyplina kolejkowania (ang. "Queueing Discipline", qdisc)

Algorytm zarządzający kolejką urządzenia, dla ruchu `przychodzącego' (ang. "ingrees") lub `wychodzącego' (ang. "egrees").

root qdisc

Główna qdisc to dyscyplina dołączona bezpośrednio do urządzenia.

Bezklasowa dyscyplina kolejkowania (ang. "Classless qdisc")

Qdisc w której nie ma konfigurowalnych wewnętrznych podziałów.

Dyscyplina kolejkowania z klasami (ang. "Classful qdisc")

Dyscyplina kolejkowania może zawierać wiele klas. Każda z nich może zawierać następne dyscypliny kolejkowania i tak dalej i tak dalej - ale nie musi. Zgodnie z definicją, `pfifo_fast' jest dyscypliną kolejkowania z klasami - zawiera trzy pasma będące klasami. Ponieważ jednak żadne jej parametry nie mogą być modyfikowane narzędziem tc, z punktu widzenia użytkownika jest bezklasowa.

Klasy (ang. "Classes")

Dyscyplina kolejkowania z klasami, tak jak wskazuje jej nazwa, zawiera klasy. Mogą one zawierać kolejne dyscypliny i tak dalej i tak dalej. Innymi słowy, możesz skonfigurować qdisc która będzie rodzicem dla innej qdisc. Liść to qdisc, która nie posiada dzieci. Klasa ma przydzieloną jedną dyscyplinę kolejkowania i jest ona odpowiedzialna za wysyłanie danych z tej klasy. Gdy tworzysz klasę, przydzielana jest do niej domyślnie dyscyplina FIFO. Gdy dodasz dziecko do dyscypliny, FIFO jest usuwana. Dla klasy będącej liściem, algorytm FIFO można zastąpić bardziej odpowiednią dyscypliną kolejkowania. Możesz nawet ją zastąpić dyscypliną kolejkowania z klasami, co pozwoli ci na dalszą rozbudowę klas.

Klasyfikator (ang. "Classifier")

Każda dyscyplina kolejkowania z klasami musi wiedzieć, do której klasy ma wysłać pakiet. Wykonuje to właśnie na podstawie klasyfikatora.

Filtr (ang. "Filter")

Klasyfikacja może zostać wykonana na podstawie filtrów. Filtr zawiera pewną liczbę warunków, które jeśli pasują, sprawiają że filtr również pasuje.

Planowanie (ang. "Scheduling")

Dyscyplina kolejkowania z klasami, z pomocą klasyfikatora może zdecydować, że niektóre pakiety powinny zostać wysłane wcześniej niż inne. Proces ten nazywamy planowaniem i jest wykonywany na przykład przez qdisc `pfifo_fast', o której wspomniano wcześniej. Planowanie nazywa się również `porządkowaniem', ale jest to raczej mylące.

Kształtowanie (ang. "Shaping")

Proces odwlekania momentu wysłania pakietu tak, by pasował do zdefiniowanych charakterystyk ruchowych i jego maksymalnych wartości. Kształtowanie ruchu wykonywane jest przy opuszczaniu przez pakiet systemu. Czasami kształtowanie oznacza również odrzucanie pakietów zamiast opóźniania ich wysłania.

Narzucanie polityki (ang. "Policing")

Proces odwrotny do kształtowania, wykonywany na ruchu przychodzącym. Może on tylko odrzucać pakiety a nie odwlekać ich obsługę - nie istnieje `kolejka dla ruchu przychodzącego'.

Kolejka bezstratna (ang. "Work-Conserving")

Ta qdisc zawsze dostarcza pakiet, jeśli tylko jest dostępny. Innymi słowy, nigdy nie odwleka wysłania pakietu, jeśli urządzenie sieciowe jest gotowe do przyjęcia go (w przypadku ruchu wychodzącego).

Kolejka stratna (ang. "non-Work-Conserving")

Niektóre kolejki, takie jak na przykład TBF, mogą być zmuszone przytrzymać pakiet przez pewien czas, by dopasować się do ustalonego limitu na przepustowość. Oznacza to, że czasami nie wyślą pakietu, mimo że są już do tego gotowe.

Dobrze, przebrnęliśmy przez terminologię, zobaczmy teraz gdzie te wszystkie rzeczy się znajdują.

                Programy przestrzeni użytkownika (userspace)
                     ^
                     |
     +---------------+-----------------------------------------+
     |               Y                                         |
     |    -------> Stos IP                                    |
     |   |              |                                      |
     |   |              Y                                      |
     |   |              Y                                      |
     |   ^              |                                      |
     |   |  / ----------> Przekazywanie ->                |
     |   ^ /                           |                       |
     |   |/                            Y                       |
     |   |                             |                       |
     |   ^                             Y          /-qdisc1-\   |
     |   |                       Klasyfikator     /--qdisc2--\  |
  --->->Przychodząca      dla ruchu ---qdisc3---- | ->
     |   Qdisc                  wychodzącego     \__qdisc4__/  |
     |                                            \-qdiscN_/   |
     |                                                         |
     +----------------------------------------------------------+
Dziękuje Jamal Hadi Salim za ten diagram ASCII.

Duży kwadrat reprezentuje kernel. Lewa strzałka reprezentuje ruch docierający do twojego komputera z sieci. Zostaje on następnie wrzucony do klasyfikatora ruchu przychodzącego, który może zastować filtry i być może odrzucić ten ruch. Nazywamy to `narzucaniem polityki'.

Dzieje się to we wczesnym stadium, zanim pakiet obejrzał sobie większość kernela. Jest to więc dobre miejsce by odrzucać ruch bez zbędnego angażowania cykli CPU.

Jeśli pakiet zostanie przepuszczony, może być skierowany do aplikacji działającej lokalnie - trafia wtedy na stos IP by zostać przetworzony a potem do tej konkretnej aplikacji. Pakiet może jednak być przekazywany dalej, trafia wtedy do klasyfikatora dla ruchu wychodzącego. Programy przestrzeni użytkownika wysyłające pakiety również dostarczają danych dla klasyfikatora ruchu wychodzącego.

Ruch wychodzący z takiego czy innego źródła trafia następnie do przetworzenia w określonej liczbie skonfigurowanych qdisc. W domyślnym, nieskonfigurowanym stanie, istnieje jedynie jedna kolejka dla ruchu wychodzącego - jest to `pfifo_fast', która zawsze odbiera pakiet. Nazywamy to `kolejkowaniem'.

Pakiet czeka zatem w qdisc na decyzję kernela powodującą wysłanie go przez któryś interfejs sieciowy. Nazywamy to z kolei `opróżnianiem kolejki'.

Rysunek ten ma zastosowanie również dla sytuacji z jednym urządzeniem sieciowym - strzałki skierowane do i od kernela nie powinny być brane zbyt dosłownie. W każdym urządzeniu sieciowym obsługiwane jest zarówno odebranie pakietu jak i jego wysłanie.


/ Linux Reviews / Networking / Kształtowanie Ruchu i Zaawansowany Routing HOWTO