www.eprace.edu.pl » sieci-ipv6 » Metody gwarantowania parametrów transmisji w sieciach IP. » Podejście klasowe

Podejście klasowe

Klasowość algorytmu zakłada ustalone reguły wcześniej skonfigurowane, według których ruch zostaje zaklasyfikowany do poszczególnych klas ruchu. Klasyfikacja może odbywać się np. według adresów źródłowych lub docelowych, portów, ale możliwe są dowolne konfiguracje. Sklasyfikowane pakiety mogą ponownie zostać poddane kolejnym algorytmom klasowym lub nie i mogą tworzyć strukturę hierarchiczną. Znika także pojęcie pojedynczego elementu kształtowania ruchu, tak jak miało to miejsce w przypadku podejścia bezklasowego, gdzie jeden algorytm odpowiadał tylko za np. sprawiedliwy dostęp do łącza czy też kształtowania przepustowości.

Kolejkowanie klasowe

Pomysł kolejkowania opartego na klasach powstał w 1991 roku [1], ale został opublikowany dopiero w 1995 roku [16]. Priorytetem podczas tworzenia CBQ było pogodzenie w jednym algorytmie kolejkowania usług czasu rzeczywistego z usługami współdzielącymi łącze. Aby to osiągnąć zdefiniowane zostały ograniczenia nakładane na oba typy usług tak, by priorytetowa usługa czasu rzeczywistego nie mogła zatrzymać całkowicie usługi o niższym priorytecie, a jednocześnie sama nie ucierpiała. W szczególności, algorytm powinien umożliwić sytuację, w której podczas przeciążenia niektóre usługi mogą być zatrzymane a niektóre powinny dostawać pewien minimalny przydział. Algorytm powinien też pilnować by nadmiar dostępnego pasma był rozkładany hierarchicznie między klasami według odpowiednich wag.

W CBQ ruch jest dzielony na kilka kolejek, zwanych klasami, charakteryzujących się określonym priorytetem oraz przydzieloną przepustowością. Zamiast domyślnie ustawianych kolejek FIFO, składowymi CBQ mogą być dowolne z opisanych wcześniej algorytmów elementarnych. CBQ możliwy jest:

Odmianą kolejki CBQ jest kolejka CBWFQ (ang. Class Based Weighted Fairness Queuing). Zasada podziału na klasy jest identyczna jak dla kolejki CBQ, ale kolejne klasy są obsługiwane WFQ. Mechanizm ten stosowany jest w urządzeniach sieciowych do kolejkowania ruchu w domenach DiffServ, wymagających podziału na szczególne klasy [59].

Ponadto istnieją aplikacje które wymagają bardzo szybkiego czasu obsługi ze względu na charakter samej usługi, np. telefonia internetowa VoIP lub wideokonferencje. Firma CISCO wprowadziła do swoich urządzeń kolejkę, która jest połączeniem kolejki CBWFQ i kolejkowania priorytetowego. Opracowany mechanizm został nazwany jako LLQ (ang. Low Latency Queuing) i jest zalecany do obsługi aplikacji czasu rzeczywistego.


HTB powstał w 2001 roku jako implementacja CBQ, która miała być zarówno prosta, jak i precyzyjna. Zmiany obejmowały zrezygnowanie z pojęcia związania klas na rzecz twardego ograniczenia przepustowości , zamianę estymatora na algorytm oparty o wiadro żetonów, oraz nowego podejścia do formalnej zasady współdzielenia.

Algorytm, okazał się niestety od 2 do 5 razy wolniejszy od CBQ [62]. Jego niekwestionowaną zaletą była jednak precyzja w działaniu, a wymagania sprzętowe nie stanowiły przeszkody dla wydajnych serwerów lub w zastosowaniach domowych gdzie ilość danych nie była znaczna. Problem pojawiał się dopiero w urządzeniach osadzonych, które z zastosowaniem innych algorytmów potrafiły przesyłać dane z dużą prędkością, lecz w przypadku HTB moc obliczeniowa nie była wystarczająca. Dopiero w 2002 roku HTB3 dorównał szybkością CBQ, nie tracąc przy tym precyzji [60] i wydajności [63].

Algorytm HTB jest wspierany przez oficjalne jądra Linuksa, dlatego możliwy jest do wykorzystania w urządzeniach bazujących na tym systemie operacyjnym. Jednak, ze względu na złożoność obliczeniową stosowany jest rzadziej niż bezklasowe wiadro z żetonem, zwykle w końcowych elementach sieci.

Istnieje jeszcze algorytm H-FSC (ang. Hierarchical Fair Service Curve), który łączy w sobie ideę sprawiedliwego kolejkowania, krzywe usług oraz hierarchię klas. Idea krzywych usług [2] pozwala na odrębne definiowanie przepustowości danej usługi oraz jej maksymalnego opóźnienia, co nie jest możliwe ani w HTB ani w CBQ. Jednak złożoność i bardzo duża zachłanność algorytmu na zasoby spowodowały że modyfikacja nie znalazła zastosowania w urządzeniach w domenach QoS. Oczywiście możliwa jest implementacja na serwerach czy ruterach wykorzystujących system Linuks, ale tylko w urządzeniach końcowych sieci o dużej wydajności.



komentarze

Copyright © 2008-2010 EPrace oraz autorzy prac.