Politechnika Åšlaska
Wydzia Automatyki, Elektroniki i Informatyki
l
Instytut Informatyki
Praca dyplomowa
magisterska
Dynamiczny przydzia pasma użytkownika
l
sieci z wykorzystaniem us QoS w systemie
lugi
Linux
Autor: Krzysztof Wilk
Promotor: dr inż. Ryszard Maceluch
Gliwice 2002
Spis treści
1 Cel i zakres pracy 4
2 Zasady dzia mechanizmów Quality of Service 8
lania
2.1 Architektura QoS - Integrated Services . . . . . . . . . . . . . 10
2.2 Architektura QoS - Differentiated Services . . . . . . . . . . . 12
3 Stan aktualny implementacji QoS w systemie Linux 19
3.1 Algorytmy kolejkowania pakietów . . . . . . . . . . . . . . . . 21
3.1.1 Algorytmy kolejkowania FIFO . . . . . . . . . . . . . . 22
3.1.2 Algorytm kolejkowania PRIO (PRIOrities) . . . . . . . 24
3.1.3 Algorytm kolejkowania TBF (Token Bucket Filter) . . 25
3.1.4 Algorytm kolejkowania SFQ (Stochastic Fairness Qu-
eueing) . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.5 Algorytmy kolejkowania RED (Random Early Detection) 30
3.1.6 Algorytm kolejkowania CBQ (Classful Based Queueing) 33
3.1.7 Algorytm kolejkowania DSMARK (DiffServ Mark) . . 37
3.1.8 Algorytm kolejkowania CSZ (Clark-Shenker-Zhang) . . 38
3.2 Rodzaje filtrów . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.1 Filtr route . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.2 Filtr fw . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1
3.2.3 Filtry rsvp i rsvp6 . . . . . . . . . . . . . . . . . . . . 43
3.2.4 Filtr tcindex . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2.5 Filtr u32 . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3 Zastosowanie algorytmów kolejkowania i filtrów . . . . . . . . 46
4 Możliwości rozbudowy implementacji QoS w systemie Linux 49
4.0.1 Opis ogólny . . . . . . . . . . . . . . . . . . . . . . . . 50
4.0.2 Opis implementacji algorytmów kolejkowania . . . . . . 52
4.0.3 Opis implementacji klas ruchu . . . . . . . . . . . . . . 55
4.0.4 Opis implementacji filtrów pakietów . . . . . . . . . . 56
5 Badania wykonane bez w aczonych mechanizmów QoS 58
l
5.1 Cel badań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2 Sprzet użyty w badaniach . . . . . . . . . . . . . . . . . . . . 59
5.3 Opis oprogramowania testujacego . . . . . . . . . . . . . . . . 60
5.3.1 Zasadność pomiarów w trybie użytkownika . . . . . . . 61
5.3.2 Zasadność pomiarów w trybie jadra . . . . . . . . . . . 62
5.3.3 Opis przyjetego rozwiazania . . . . . . . . . . . . . . . 63
5.4 Przewodnik po badaniach . . . . . . . . . . . . . . . . . . . . 64
5.4.1 Pomiar przepustowości acza . . . . . . . . . . . . . . . 64
l
5.4.2 Pomiar opóznienia przekazywania pakietów IP . . . . . 65
6 Badania wykonane z w aczonymi mechanizmami QoS 82
l
6.1 Cel badań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2 Badania z wykorzystaniem algorytmu PRIO . . . . . . . . . . 83
6.3 Badania wykonane z wykorzystaniem algorytmu TBF . . . . . 99
6.4 Badania wykonane z wykorzystaniem algorytmu RED . . . . . 105
7 Podsumowanie oraz wnioski 109
2
Bibliografia 112
Spis rysunków 115
Spis tabel 118
3
Rozdzia 1
l
Cel i zakres pracy
Predkość transferu danych w sieciach komputerowych zależy od aktual-
nego obcia żenia sieci (ilość przesy przez sieć danych). Podejście takie
lanych
zwiazane jest z historia powstawania sieci. Pierwsze aplikacje sieciowe oparte
w wiekszości o przesy znaków ASCII nie wymaga ani dużych przepusto-
l ly
wości, ani nie stawia ograniczeń na czas dostarczania pakietów do punktu
ly
przeznaczenia. Konwergencja sieci komputerowych, telefonicznych oraz tele-
wizyjnych jaka możemy obserwować stawia przed projektantami sieci nowe
zadania (przesy faksów, rozmowy telefoniczne). Aktualnie sieci kompute-
l
rowe jednak nie zapewniaja odpowiednich mechanizmów zaimplementowa-
nych w komputerach i urzadzeniach sieciowych sterujacych ruchem pakietów
w sieciach komputerowych, stad jakość obrazu i p
lynność dzwieku zależy
w znacznym stopniu od nateżenia ruchu w sieciach komputerowych. Jedy-
nym typem sieci, gdzie realnie mechanizmy regulacji ruchu w sieci w za-
leżności od potrzeb użytkownika zosta zaimplementowane jest sieć ATM.
ly
Ze wzgledu na popularność protoko IP czyni sie starania stworzenia iden-
lu
tycznych możliwości w Internecie. Praca ta opisuje wykorzystanie protoko
lu
IP w wersji 4 IPv6, a protokó IP w wersji 6 IPv6 jest tylko cza-
l
4
sem wspominany. Jeśli nie podano numeru wersji protoko to omawiany
lu,
jest protokó IPv4. Jeśli przyjmiemy, że klienci p swym operatorom sieci
l laca
za dostep do takich us to dochodzimy do wniosku, że pewne aplikacje
lug,
wymagaja tego, aby pakiet zosta dostarczony w pewnym określonym cza-
l
sie. Rozwiazaniem tego zagadnienia mog być zwiekszenie przepustowości
loby
sieci. Doświadczenie pokazuje, że rozwiazanie tego problemu w taki sposób
jest niemożliwe na d mete. Rozwiazaniem może być dynamiczny przy-
luższa
dzia pasma użytkownikom.
l
Niniejsza praca opisuje problem dynamicznego przydzia pasma użyt-
lu
kownikowi sieci komputerowej w celu zapewnienia możliwości korzystania
z us sieciowych, przede wszystkim multimedialnych oraz interaktywnych.
lug
Dotycza one obrazu i dzwieku przesy w sieciach komputerowych.
lanych
W tej pracy z powodów przedstawionych powyżej opisano problematyke
tylko dla sieci opartych na protokole IP. Jako dynamiczny przydzia pasma
l
przyjmuje sie przydzia pasma zależny od rodzaju us z jakiej użytkownik
l lugi
bedzie korzysta Nawiazujac do analogii z p dostepem, możemy sobie
l. latnym
wyobrazić, że klient który zap l operatorowi sieci za us wyższej jakości
laci luge
powinien mieć p
lynniejszy dostep do multimediów sieciowych
Jako obiekt badań wybrano system operacyjny Linux. S Linux ozna-
lowo
cza samo jadro systemu operacyjnego, natomiast system operacyjny dystry-
buowany razem z dodatkowymi programami narzedziowymi i użytkowymi
określa sie jako dystrybucje Linuksa. Przyk
ladowymi dystrybucjami Linuksa
sa Debian i RedHat. System ten znakomicie nadaje sie do wszelkich badań
sieci, ponieważ jest on dostepny wraz z pe kodem zród
lnym lowym. Liberalna
licencja, na której jest wydawany, pozwala oprócz czytania kodu zród
lowego
w celu zrozumienia dzia systemu operacyjnego również swobodna mody-
lania
fikacje tego kodu. W systemie Linux dynamiczny przydzia pasma jest realizo-
l
5
wany poprzez Gwarancje jakości us lug . Cześciej używa sie równoznacznego
określenia angielskiego Quality of Service (QoS ). W dalszej cześci pracy
używane bedzie bardziej popularne określenie anglojezyczne (patrz rozdz. 2).
Celem pracy dyplomowej jest analiza zagadnień zwiazanych z QoS
od strony teoretycznej, poznanie jej implementacji w Linuksie oraz zbadanie
czy ruter oparty na komputerze z systemem Linux może spe wymagania
lniać
stawiane ruterom QoS. Opis implementacji umieszczono w rozdz. 3. Prze-
prowadzenie badań dostepnych mechanizmów pozwoli na ocene jakościowa
implementacji oraz próbe optymalizacji jej dalszych ulepszeń .
W rozdziale drugim przybliżona jest ogólna idea QoS oraz wprowadzone
sa podstawowe pojecia z nia zwiazane. W tym celu podzielono QoS na dwa
podejścia do problemu: IntServ oraz DiffServ. Omówiony jest również skró-
towo protokó sygnalizacyjny RSVP, a także przedstawiony format nag ów-
l l
ków pakietów IPv4 oraz IPv6. Na koniec przedstawiona jest symbolicznie
droga pakietu w ruterze.
W rozdziale trzecim opisany jest aktualny stan rozwoju implementacji
QoS w Linuksie. W ramach tego opisane sa dostepne filtry (przydzielaja
przychodzace pakiety do konkretnych klas ruchu w których obowiazuja usta-
lone algorytmy kolejkowania) oraz algorytmy kolejkowania.
Rozdzia czwarty opisuje ogólny schemat implementacji mechanizmów
l
QoS używany w Linuksie. Korzystajac z tych wytycznych można zmodyfi-
kować dostepne już algorytmy oraz zaimplementować kolejne znane z innych
realizacji QoS niż linuksowa, przyk z ruterów Cisco.
ladowo
Rozdzia piaty przedstawia wykonane badania zachowania sie dostepnych
l
aktualnie mechanizmów realizacji QoS w Linuksie.
W rozdziale szóstym dokonana jest analiza ilościowa wyników badań, po
której nastepuje analiza ilościowa.
6
W ostatnim rozdziale znajduje sie podsumowanie przeprowadzonych ba-
dań. W rozdziale tym wysnuwa sie też wnioski z wyników ilościowych oraz
jakościowych dokonanych pomiarów.
7
Rozdzia 2
l
Zasady dzia
lania mechanizmów
Quality of Service
Przed laty nikt nie przewidywa że sieci komputerowe beda wykorzysty-
l,
wane do transmisji danych multimedialnych (transmisja dzwieku i obrazu)
oraz konwergentnych (wspólne okablowanie dla po aczenia z Internetem i cen-
l
tralka telefoniczna) dlatego przy tworzeniu sieci Internet jednym z g ównych
l
za by prostota rozwiazań. Nie by wtedy dostepnych w sieci us
lożeń la lo lug
interaktywnych (np. WWW ), ani multimedialnych. Nikt również nie spo-
dziewa sie tak gwa
l ltownego rozwoju Internetu, zarówno ilości jego użyt-
kowników, jak i zapotrzebowania na coraz wieksze przepustowości. Należy
również pamietać, że w poczatkowym okresie sieci komputerowe by uży-
ly
wane g ównie w celach naukowych oraz edukacyjnych, a nie rozrywkowych
l
i handlowych, od użytkowników końcowych nie by pobierane op za do-
ly laty
step do Internetu, wiec wszyscy mieli dostep do sieci na tych samych pra-
wach. Dlatego też przyjeto wiele uproszczeń konstrukcyjnych. Jednym z nich
jest równouprawnienie wszystkich transmisji sieciowych. Internet jaki znamy
przekazuje pakiety w myśl zasady najlepszego wysi [4] (ang. best ef-
lku
8
fort). Oznacza to, że komputery lub wyspecjalizowane urzadzenia zajmujace
sie przekazywaniem pakietów nazywane ruterami (ogólnie nazywane wez
lami
sieci), sa zaprojektowane tak, aby jak najszybciej przekazywać dalej otrzy-
mane pakiety. W razie wystapienia przecia żenia ruchu, pakiety sa przez nie
odrzucane bez faworyzowania jakichkolwiek [28]. Innymi s przekazujac
lowy,
dalej pakiet wez biora pod uwage tylko jego przeznaczenie ( gdzie ).
ly
Jeśli chcielibyśmy zwiekszyć elastyczność dotychczasowego modelu sieci
i umożliwić faworyzowanie niektórych transmisji, to dochodzimy do wniosku,
ze oprócz przeznaczenia ( gdzie ) należy również przesy pakiety w odpo-
lać
wiednim momencie ( kiedy ). Można to osiagna ć stosujac mechanizmy QoS.
Przez QoS rozumie sie sta w ściśle wyznaczonych granicach nastepu-
lość
jacych parametrów transmisji [4] w sieciach komputerowych:
Przepustowość (ang. throughput) ilość danych przesy z jednego
lanych
miejsca do drugiego w określonym czasie. Przez ilość danych rozumie sie
ilość bitów. Ilość danych, która może zostać przes danym laczem,
lana
w praktyce jest niższa od maksymalnej z powodu opóznień w transmisji
danych. Jednostka przepustowości jest bps (bit na sekunde).
Opóznienie (ang. latency) zw w transmisji danych. W ruterze opóz-
loka
nieniem jest czas up
lywajacy miedzy przyjściem pakietu, a jego prze-
s dalej. Dlatego nazywa sie go również czasem propagacji.
laniem
Zmienność opóznienia (ang. jitter) zniekszta taktowania sygna
lcenie lu
zachodzace w trakcie transmisji w sieci, prowadzace do transmisji pakie-
tów sieciowych w nieregularnych odstepach . W ruterze zmienność opóz-
nienia transmisji pakietów wychodzacych zachodzi wtedy, gdy sprze-
towo nie nada ża on z obs ruchu sieciowego.
luga
9
Zgodnie z klasyfikacja IETF (ang. Internet Engineering Task Force) za-
leca sie implementować QoS na jeden ze sposobów:
1. Integrated Services [14]
2. Differentiated Services [12] [13]
2.1 Architektura QoS - Integrated Services
W architekturze Integrated Services (w skrócie IntServ) zasoby sieci sa
przydzielane dla danej aplikacji na żadanie po uprzedniej rezerwacji. Rezer-
wować je można dla pojedynczego strumienia danych lub agregacji strumieni
danych. W celu rezerwacji stosuje sie algorytm RSVP (ang. ReSerVation
Protocol) [7].
Protokó ten opiera sie na kilku za
l lożeniach [4]:
" W pe obs
lni lugiwane sa transmisje jeden-do-jednego (ang. unicast) oraz
jeden-do-wielu (ang. multicast). W tych drugich każdemu z odbiorców
może zostać przyznany inny poziom QoS.
" Protokó dzia jako rozszerzenie protoko IP, a nie jako jego substy-
l la lu
tut. Upraszcza to jego implementacje oraz u wspó zarówno
latwia lprace
z IPv4 jak i IPv6. Wymusza to jednak okresowe ponawianie sygnaliza-
cji (ang. soft-state signalling) jako warunek konieczny do utrzymywania
po aczenia.
l
" Sesje RSVP sa jednokierunkowe (ang. simplex). Upraszcza to synchro-
nizacje poprzez wstrzymanie rozpoczecia transmisji do czasu nadejścia
potwierdzenia od odbiorcy.
Przed rozpoczeciem w la
laściwej transmisji danych nadawca przesy wia-
domość PATH zawierajaca nastepujace informacje:
10
" minimalna i maksymalna przepustowość żadanego pasma
" minimalne i maksymalne opóznienie przekazu pakietów przez sieć
" minimalna i maksymalna zmienność opóznienia przekazu pakietów
" typ żadanej us (Guaranteed Service, Controlled Load Service, Best
lugi
Effort)
" identyfikacje pakietów należacych do danego strumienia danych (nu-
mery portów, rodzaj protoko transportowego itp.)
lu
Każdy ruter po drodze jeśli może dokonać żadanej rezerwacji, to prze-
kazuje dalej wiadomość PATH, w przeciwnym wypadku wysy wiadomość
la
odrzucenia zg
loszenia do nadawcy. Gdy wiadomość PATH dotrze do odbiorcy
informacji, to wysy on wiadomość RESV jako potwierdzenie. Dopiero po
la
dotarciu tej wiadomości do odbiorcy, zaczyna on transmisje danych. Rezer-
wacja musi być odnawiana okresowo. Dzia protoko sygnalizacyjnego
lanie lu
RSVP obrazuje rys. 2.1.
Rysunek 2.1: Protokó rezerwacji (RSVP)
l
W tej architekturze dostepne sa trzy typy us
lug:
" Guaranteed Service [19] - przeznaczona dla aplikacji wymagajacych nie-
zawodnej gwarancji parametrów jakości przekazu danych zwiazanych
11
z opóznieniami. Tak rygorystyczne wymagania parametrów transmisji
maja transmisje obrazu i dzwieku w czasie rzeczywistym.
" Controlled Load Service [20] - przeznaczona dla aplikacji wymagajacych
bezstratnego przekazu danych i charakteryzujaca sie jakościa przekazu
lepsza niż Best Effort. Przyk lugi
ladowym zastosowaniem tego typu us
jest obs jednokierunkowych transmisji obrazu i dzwieku.
luga
" Best Effort - przeznaczona dla aplikacji nie wymagajacych parametrów
transmisji w ściśle określonych granicach.
Model ten sprawdza sie jedynie w mniejszych sieciach, gdyż w wiekszych
sieciach pojawiaja sie problemy ze skalowalnościa (zbyt dużo komunikatów
sygnalizacyjnych w stosunku do ilości przesy danych). W ostatnich la-
lanych
tach opracowywane sa metody zwiekszania skalowalności protoko RSVP
lu
[4]. Pierwsze podejście proponuje zwiekszanie odstepów wysy pakietów
lania
sygnalizacyjnych w sytuacji, gdy charakterystyki sesji nie zmieniaja sie. Dru-
gie podejście proponuje aczenie wielu sesji RSVP dzia
l lajacych w tych sa-
mych sekcjach sieci i posiadajacych takie same charakterystyki w jedna sesje.
2.2 Architektura QoS - Differentiated Services
Architektura Differentiated Services (w skrócie DiffServ lub DS) przedsta-
wiona na rys. 2.2 rozwiazuje problem skalowalności obserwowalny w IntServ.
Wymaga ona definicji klas ruchu na etapie konfiguracji sieci. Pakiety sa przy-
pisywane do poszczególnych klas przez rutery brzegowe, a znajdujace sie w
obrebie domeny QoS rutery rdzeniowe zajmuja sie wy acznie przekazywa-
l
niem pakietów. Przez domene QoS (domene DiffServ) [28] rozumie sie te
12
cześć sieci w ramach której zagwarantowana jest żadana jakość us siecio-
lug
wych. Podzia pakietów na klasy ruchu dokonuje sie na podstawie[4]:
lu
" pola Type Of Service (TOS ) w nag ówku IPv4,
l
" pola Traffic Class (TC ) w nag ówku IPv6,
l
" wybranych pól nag ówka IP lub nag ówka protoko warstwy sieciowej
l l lu
(TCP).
Rysunek 2.2: Architektura DiffServ
Rysunek 2.3: Nag ówek pakietu IPv4
l
13
Na rys. 2.3 przedstawiony jest nag ówek pakietu IPv4. Klasyfikacja pakie-
l
tów może sie odbywać na podstawie zawartości pola TOS (ang. Type of Se-
rvice) o rozmiarze ośmiu bitów. Pierwsze trzy bity określaja pierwszeństwo
(ang. precedence) pakietu. Wykorzystywane to jest do ustalania wzglednych
priorytetów pakietów przekazywanych dalej przez rutery. Nastepne cztery
bity maja znaczenie jak nastepuje [4]:
" 1000 minimalizacja opóznienia przesy pakietu
lania
" 0100 maksymalizacja przepustowości
" 0010 maksymalna pewność przesy pakietu
lania
1
" 0001 minimalny koszt przesy pakietu
lania
" 0000 normalne przesy
lanie.
Ostatni bit pola TOS jest stale ustawiony na zero.
Można także przypisywać pakiety do poszczególnych klas ruchu na pod-
stawie wartości innych pól nag ówka. Szczególnie przydatne do tego sa [4]:
l
" protokó warstwy sieciowej
l
" adres zród
lowy
" adres docelowy
Na rys. 2.4 pokazany jest nag ówek pakietu IPv6. Pole TOS znane z
l
poprzedniej wersji protoko zosta zastapione ośmiobitowym polem klasy
lu lo
1
Celem jest ograniczenie kosztu przesy informacji. Przyk metoda osiagnie-
lania ladowa
cia celu jest przesy pakietów w chwilach kiedy sieć jest najmniej obcia żona. Można
lanie
to osiagna ć poprzez zerowanie bitu psh w nag ówku pakietu TCP. W ten sposób dystry-
l
buowane sa listy dyskusyjne oraz poczta hurtowa (ang. bulk mail) używana w celach
komercyjnych.
14
Rysunek 2.4: Nag ówek pakietu IPv6
l
ruchu (ang. traffic class). Na razie wykorzystywane jest sześć starszych bi-
tów. Bity te nazywane sa DiffServ Code Point (DSCP) i wykorzystywane sa
w architekturze DiffServ do oznaczania przynależności pakietów do konkret-
nych klas ruchu. Dwa najm bity wykorzystywane sa do przenoszenia
lodsze
informacji ECN (ang. Explicit Congestion Notification). Informacja ta po-
zwala ruterom obs
lugujacych ECN elastyczniej decydować o losie pakietów
w przypadku, gdy przydzielone danej klasie ruchu pasmo zosta przekro-
lo
czone. Ruter w takiej sytuacji może przepuścić pakiet z w aczonymi bitami
l
ECN, jeśli ca pasmo nie zosta zajete. Daje to możliwość pe
le lo lniejszego wy-
korzystania pasma niż w przypadku nie korzystania z bitów ECN.
Klasyfikacji pakietów można dokonywać również na podstawie pozosta-
lych pól [4]:
" etykieta strumienia (identyfikacja przynależności pakietu do konkret-
nego strumienia)
" adres zród (128-bitowy)
lowy
" adres docelowy (128-bitowy)
15
Rysunek 2.5: Nag ówek pakietu TCP
l
Na rys. 2.5 przedstawiony jest nag ówek pakietu TCP. Do klasyfikacji
l
pakietów wykorzystywane sa tylko dwa pola:
" port zród
lowy
" port docelowy
Klasy ruchu można inaczej przedstawić jako strumienie danych, z których
każdy ma przypisany profil ruchu określajacy jakie warunki musi spe pa-
lnić
kiet, aby zostać przypisanym do niego.
Zdefiniowane sa dwa algorytmy przekazywania pakietów wchodzacych
w sk agregacji pakietów. Ogólnie określane sa one jako zasady PHB (ang.
lad
Per Hop Behaviour) [15]:
1. Expedited Forwarding (EF) [17, 18] - wartość pola DSCP (ang. Diffe-
rentiated Services Codepoint) z nag ówka IPv6 określa żadana jakość
l
us pod katem opóznień przekazywania pakietów. Jeśli pakiet nie
lugi
zawiera sie w profilu ruchu danego strumienia, to zostanie odrzucony.
2. Assured Forwarding (AF) [16] - definiuje sie cztery klasy ruchu i trzy po-
ziomy odrzucania pakietów w każdej z nich. Czasem używa sie pojecia
16
kolorowanie pakietów . Pakiet może zostać przyjety do strumienia ru-
chu, odrzucony lub dopuszczony do ruchu warunkowo , tzn. nastepny
ruter brzegowy może go odrzucić jeśli ca dostepna przepustowość sieci
la
bedzie akurat zajeta.
Zasady PHB sa zwykle implementowane jako filtry, kolejki i algorytmy ko-
lejkowania.
Obecnie QoS jest realizowany na poziomie warstwy transportowej sieci
(TCP). Każdy system jest na tyle wydajny, na ile jest wydajne jego wa-
skie gard W przypadku sieci komputerowych newralgicznymi jej punk-
lo.
tami sa rutery, dlatego wiec g ówny cieżar realizacji QoS spoczywa na nich.
l
W uproszczeniu droga pakietu danych w ruterze wyglada tak jak na rys. 2.6.
Pakiety sa przyjmowane przez interfejs wejściowy, nastepnie podlegaja de-
multipleksacji , czyli odrzuceniu nag ówków warstwy fizycznej (np. Ether-
l
net). Pakiety zaadresowane do rutera sa przesy do warstwy sieciowej,
lane
a pozosta sa przekazywane dalej (ang. forwading). Nastepnie pakiety prze-
le
kazywane sa kolejkowane do klas ruchu (ang. traffic class). Każda z klas ruchu
jest inaczej traktowana i pakiety z niej sa przekazywane do interfejsu wyj-
ściowego, z którego z kolei przesy sa do nastepnego wez sieci.
lane la
17
Rysunek 2.6: Droga pakietu w ruterze
18
Rozdzia 3
l
Stan aktualny implementacji
QoS w systemie Linux
Opis stanu aktualnego dotyczy najnowszego jadra z ga ezi stabilnej do-
l
stepnego w okresie pisania pracy, czyli wersji2.4.18.
1
Linux może s jako ruter w sieci IntServ, korzystajac z demona
lużyć
RSVPd [8], ale wiekszy nacisk po w jadrze na umożliwienie realizacji
lożono
sieci typu DiffServ. Implementacja linuksowa QoS opiera sie na nastepujacych
elementach podstawowych, które można ze soba aczyć, tworzac rozbudowana
l
hierarchie klas ruchu. Elementy te rozumie sie w nastepujacy sposób:
Algorytm kolejkowania (ang. qdisc = queueing discipline)
pośredniczy w transmisji pakietów TCP miedzy jadrem a inter-
fejsem sieciowym. Pakiety wychodzace sa wstawiane do kolejki przez
ten algorytm, a pakiety wychodzace sa pobierane z kolejki (a w
laściwie
klasy) przez jadro i przekazywane sterownikowi karty sieciowej. Algo-
1
W Uniksie demonem określa sie program lub jego cześć, która nie jest uruchamiana
jawnie, ale oczekuje na wystapienie pewnego zdarzenia. Przyk
ladowym zdarzeniem może
być próba nawiazania przez zdalny proces po aczenia TCP z konkretnym portem lokalnym.
l
19
rytmy kolejkowania dziela sie na zawierajace dalsze klasy (np. CBQ)
i bezklasowe (np. TBF ).
Klasa to kolejka w której przechowywane sa pakiety kolejkowane przez po-
dany algorytm kolejkowania. Klasa jest identyfikowana na podstawie
32-bitowego identyfikatora klasy (ang. class ID) nadawanego przez ad-
ministratora. Wewnatrz jadra klasa jest identyfikowana z pomoca we-
wnetrznego identyfikatora klasy (ang. internal class ID) przydzielanego
automatycznie przez jadro przy tworzeniu klasy.
Filtr (ang. classifier) jest przyporzadkowany do konkretnego algorytmu
kolejkowania. Decyduje on w której klasie zostanie umieszczony przy-
chodzacy pakiet TCP. Pakiet jest sprawdzany sekwencyjnie przez
wszystkie filtry obs
lugujace dany algorytm kolejkowania aż do pierw-
szego dopasowania (analogicznie jak regu firewalla). Filtr jest identy-
ly
fikowany wewnatrz jadra z pomoca wewnetrznego identyfikatora filtra
(ang. internal filter ID) przyznawanego automatycznie przez jadro przy
tworzeniu filtra.
Sterowanie ruchem (ang. traffic control) polega na wykonywaniu jednej
lub kilku z poniższych operacji:
Kszta
ltowanie (ang. shaping) ruchu polega na regulowaniu przepusto-
wości strumienia pakietów wychodzacych. Poza ograniczaniem dostep-
nej dla danej klasy przepustowości pozwala również na wyg
ladzanie
chwilowych przecia żeń ruchu. Przyk
ladowymi algorytmami kolejkowa-
nia realizujacymi kszta
ltowanie ruchu sa TBF i HTB.
Szeregowanie (ang. scheduling) transmitowanych pakietów to sposób
na poprawe interaktywności ruchu pochodzacego z wymagajacych tego
20
klas przy jednoczesnym zagwarantowaniu dużej przepustowości klasom
realizujacym transfery masowe. Przyk
ladowe algorytmy kolejkowania
realizujace szeregowanie to CBQ, HTB oraz PRIO.
Regulowanie (ang. policing) ruchu [28] polega na monitorowaniu pakie-
tów wchodzacych w celu upewnienia sie, że nadawca nie lamie zasad
ustalonej wcześniej charakterystyki ruchu. Równocześnie kszta
ltowany
jest ruch wchodzacy. Dostepnym algorytmem kolejkowania regulujacym
ruch jest Ingress.
Odrzucanie (ang. dropping) pakietów polega na nie obs
lugiwaniu pakie-
tów przekraczajacych ustawione limity przepustowości. Dotyczy ono
zarówno ruchu wchodzacego jak i wychodzacego. Przyk
ladowym algo-
rytmem tak dzia
lajacym jest RED.
3.1 Algorytmy kolejkowania pakietów
Aktualnie dostepnych standardowo jest sześć algorytmów kolejkowania.
W razie potrzeby można napisać swój modu realizujacy inny algorytm ko-
l
lejkowania. Należa dodatkowo w tym celu zmodyfikować standardowe
loby
narzedzie s do konfiguracji klas ruchu tc lub też napisać w
lużace lasne.
Wszystkie algorytmy kolejkowania można podzielić na:
Algorytmy klasowe (ang. classful) moga zawierać w sobie kolejne klasy.
Jeśli klasom wewnetrznym zostana przypisane klasowe algorytmy kolej-
kowania, to również one moga zawierać klasy. Ca przybiera postać
lość
drzewa klas, a klasy z przypisanymi im algorytmami klasowymi sa we-
z w drzewie. Algorytmami klasowymi sa:
lami
1. PRIO
21
2. CBQ
Algorytmy bezklasowe (ang. classless) nie moga zawierać w sobie ko-
lejnych klas. Klasy z przypisanymi im algorytmami bezklasowymi sa
liśćmi w drzewie. Algorytmami bezklasowymi sa:
1. PFIFO FAST, PFIFO, BFIFO
2. TBF
3. SFQ
4. CSZ
5. DSMARK
6. RED, GRED
3.1.1 Algorytmy kolejkowania FIFO
Rysunek 3.1: Algorytmy kolejkowania FIFO
Najprostszy z dostepnych algorytmów kolejkowania to rozwiniecie idei
FIFO (First-In First-Out). W jadrze zaimplementowany jest w trzech wer-
sjach: pfifo fast, pfifo oraz bfifo.
Algorytm kolejkowania pfifo fast jest domyślnym algorytmem kolejkowa-
nia. Oznacza to, że jeśli nie powiazano nowo stworzonej klasy z żadnym
algorytmem kolejkowania, to zostanie użyty pfifo fast. Wia że sie to z nie-
dogodnościa braku prowadzonych statystyk ruchu pakietów. W tej odmianie
22
algorytmu FIFO do trzech podkolejek kierowane sa pakiety o różnych prio-
rytetach. Można sobie wyobrazić ten algorytm kolejkowania jako po aczenie
l
trzech klas, z których każda jest obs
lugiwana przez algorytm pfifo. Kryte-
rium klasyfikacji pakietów jest wartość pola TOS z nag ówka pakietu IP.
l
Pakiety w kolejce o wyższym priorytecie, przyk należace do konwersa-
ladowo
cji interaktywnej (np. telnet), moga być kierowane do kolejki o najwyższym
priorytecie. Pakiety wchodzace w sk transmisji masowych np. FTP kie-
lad
rowane sa do kolejki o najniższym priorytecie, a pozosta ruch pakietów
ly
do pośredniej. Dana kolejka obs l
lugiwana jest wy acznie wtedy, gdy nie ma
już pakietów w kolejkach o wyższych priorytetach. Jeżeli nie można dopuścić
nawet do chwilowego zag
lodzenia kolejek o niższych priorytetach przez ko-
lejki o wyższych priorytetach, to można zastosować zamiast tego algorytmu
kolejkowania algorytm TBF (podsekcja 3.1.3) lub inny kszta ruch pa-
ltujacy
kietów.
Wersje pfifo oraz bfifo to proste mechanizmy kolejkowania bez dodat-
kowych ulepszeń przydatne g ównie w celach statystycznych (domyślny al-
l
gorytm kolejkowania pfifo fast nie udostepnia statystyki ruchu pakietów).
Można zastosować te algorytmy kolejkowania, aby sprawdzić jaki jest gene-
rowanych ruch pakietów i na podstawie wyników obserwacji ustalić strukture
klas ruchu odpowiednia dla danego zastosowania. Algorytmy te przechowy-
wuja wszystkie pakiety w pojedynczej kolejce FIFO. Rozmiar tej kolejki po-
daje sie w pakietach (dla pfifo) lub w bajtach (dla bfifo). Domyślny roz-
miar kolejki jest ustawiany przy aktywacji interfejsu sieciowego (np. dla sieci
Ethernet wynosi 100 pakietów) i może być w każdej chwili odczytany z po-
moca narzedziaifconfig. Jeśli kolejka osiagne maksymalny dopuszczalny
la
rozmiar, to nastepne przychodzace pakiety sa odrzucane.
23
3.1.2 Algorytm kolejkowania PRIO (PRIOrities)
Omawiany algorytm kolejkowania jest uogólniona odmiana algorytmu
pfifo fast. Modyfikacja w stosunku do wspomnianego algorytmu jest zastoso-
wanie traktowanie podkolejek jako niezależnych klas, z których każda może
być skojarzona z innym algorytmem kolejkowania. Klasyfikacja pakietów do
konkretnych podkolejek (ang. bands) może odbywać sie na podstawie naste-
pujacych kryteriów:
" ustawionej opcji gniazdekSO_PRIORITY, która pozwala na ustawianie
bitów TOS w nag ówkach wszystkich pakietów IP wysy z danego
l lanych
gniazdka
" program administrujacy filtrem pakietów IP iptables potrafi ustawić
bity TOS manipulujac bezpośrednio nag ówkami pakietów IP
l
" filtr pakietów, stworzony narzedziem tc, umożliwia bezpośrednie skie-
rowanie wybranych pakietów do danej podkolejki
" odwzorowanie priorytetów (ang. priomap = priorities map) pozwala
na kierowanie pakietów IP na postawie bitów TOS do odpowiedniej
podkolejki
Równie ważnym ulepszeniem tego algorytmu w porównaniu do pfifo fast
jest to, że algorytm jest klasowy. Przek sie to na wieksza elastyczność,
lada
gdyż pozwala klasyfikować pakiety do podkolejek nie tylko na podstawie bi-
tów TOS, ale także z pomoca narzedzia tc. Domyślnie istnieja trzy podkolejki,
do których sa kierowane pakiety z ustawionymi nastepujaco bitami TOS :
0. minimalne opóznienie (najwyższy priorytet)
1. maksymalna wiarygodność
24
2. minimalny koszt lub maksymalna przepustowość (najniższy priorytet)
Jeśli ustawionych jest jednocześnie kilka wartości pola TOS, to pakiet kie-
rowany jest do kolejki o najwyższym możliwym priorytecie (np. minimalne
opóznienie w po aczeniu z maksymalna przepustowościa kieruje do podko-
l
lejki 0). Można zmienić ilość podkolejek, ale wymusza to również zmiane
odwzorowania priorytetów.
Analogicznie jak w algorytmie kolejkowania pfifo fast pakiety sa pobie-
rane z podkolejek o niższych priorytetach dopiero wtedy, gdy nie ma już
pakietów w podkolejkach o wyższych priorytetach. Może doprowadzić to do
zag
lodzenia kolejek o niższych priorytetach. Najprostszym sposobem unik-
niecia takiej sytuacji jest przyporzadkowanie podkolejkom o wyższych prio-
rytetach algorytmu kolejkowania, który kszta ruch (np. TBF ).
ltuje
3.1.3 Algorytm kolejkowania TBF (Token Bucket Filter)
Rysunek 3.2: Algorytm kolejkowania TBF
25
Opis algorytmu TBF
Algorytm TBF (ang. Token Bucket Filter) przedstawiony na rys. 3.2 na-
leży do klasy algorytmów kszta
ltujacych ruch. Można go opisać korzystajac
z analogii cieknacego kube (ang. leaky bucket). Ruch pakietów regulo-
lka
wany jest z pomoca żetonów (ang. tokens). Pojedynczy żeton odpowiada
pojedynczemu bajtowi, tak wiec ilość żetonów odpowiada rozmiarowi pakietu
w bajtach z uwzglednieniem tego, że najmniejszy pakiet odpowiada pewnej
ilości żetonów. Można tu wyt
lumaczyć faktem, że nawet pakiet nie zawiera-
jacy żadnych danych ma pewien rozmiar (np. w sieciach Ethernet minimalny
rozmiar datagramu zawierajacego pakiet TCP bez danych wynosi 64 bajty).
Żetony magazynowane sa w kube z którego wyciekaja razem z wycho-
lku,
dzacymi pakietami.
Poczatkowo kube jest w pe wype żetonami. Żetony sa genero-
lek lni lniony
wane ze sta a czestotliwościa i sa magazynowane w kube aż do jego ca
l lku, l-
kowitego wype lany
lnienia. Pakiet wychodzacy jest wysy do sieci tylko wtedy,
gdy w danej chwili dostepna jest liczba żetonów odpowiadajaca jego rozmia-
rowi. Jeśli w danej chwili nie jest dostepna wystarczajaca liczba żetonów, to
pakiety sa wstawiane do kolejki o ograniczonej d
lugości. Z chwila, gdy kolejka
pakietów sie wype nowe żetony nie sa przyjmowane do kube dopóki nie
lni, lka
zostanie wys do sieci pierwszy pakiet z kolejki. W sytuacji braku dostep-
lany
nej odpowiedniej ilości żetonów, co uniemożliwia wysy pakietów, urucha-
lanie
miany jest regulator czasowy (ang. watchdog timer), który wznowi transmisje
pakietów po nadejściu wystarczajacej liczby pakietów. Magazynowanie pa-
kietów w kolejce może prowadzić do wystapienia krótkotrwa przecia żeń
lych
ruchu w sieci. W celu zminimalizowania tych przecia żeń korzysta sie z do-
datkowego kube o pojemności jednego pakietu (dok MTU pakietu).
lka ladnie
Pakiety nie sa wypuszczane do sieci z maksymalna predkościa, ale pakiety sa
26
wypuszczane co kwant czasu jadra (ang. jiffie).
Na platformie sprzetowej PC kwant ten równa sie 10ms. Odwrotność
wspomnianego kwantu czasu określa ile kwantów zmieści sie w okresie 1s
i oznacza sie jako HZ. Przyjmujac wiec, że średni rozmiar pakietu wynosi
1000 bajtów, otrzymujemy dok kszta
ladne ltowaniu ruch dla przepustowości
nie przekraczajacych 1Mbit. Można kszta przepustowość na wyższym
ltować
s
poziomie, ale wtedy odbywa sie to kosztem dok
ladności. Korzystajac z ru-
tera programowego opartego o platforme Alpha, można osiagna ć dok
ladne
kszta
ltowanie przepustowości do 10Mbit, ponieważ kwant czasu jadra na tej
s
1
platformie wynosi s.
1024
Algorytm ten umożliwia w prosty sposób przycinanie pasma konkretnego
użytkownika lub grupy użytkowników (np. pod aczenie kilku sieci Fast Ether-
l
net o przepustowości 100Mbit każda do jednego lacza T1 o przepustowości
s
1.5Mbit). ozwala on także na zapobieżenie zag
lodzenia klas o niższych prio-
s
rytetach przez klasy o wyższych priorytetach generujace stale duży ruch.
Wystarczy w takiej sytuacji kszta ruch wychodzacy z klas o wysokich
ltować
priorytetach z pomoca algorytmu TBF.
Formalny opis algorytmu TBF
Niech R oznacza żadana przepustowość, B g ebokość kube a si roz-
l lka,
miary pakietów obs
lugiwanych w chwilach ti. Wtedy ruch pakietów jest
kszta
ltowany zgodnie z oczekiwaniami jeżeli
i=k
"i k i=1 si B + R " (tk - ti)
B
Niech wartość poczatkowa N(ti) wyniesie a przyrost N(t) w czasie
R
można przedstawić jako
N(t + ") = min(B , N(t) + ")
R
27
Jeżeli pierwszy pakiet w kolejce ma d S, to może być wys do sieci
lugość lany
S
jedynie w chwili t", gdy N(t". Wtedy wartość N(t) zmienia sie nastepu-
R
jaco
S
N(t" + 0) = N(t" - 0) -
R
Dodatkowy kube używany do kontrolowania szczytowej przepustowości
lek
(ang. peak rate) P powinien mieć g ebokość M. Można zauważyć, że
l
P > R )" B > M
Dla przypadku, gdy P " wystarczy użyć jeden kube zamiast dwóch.
lek
W trakcie kszta
ltowania ruchu opóznienie transmisji pakietów (ang. la-
tency) szacowane jest w sposób nastepujacy
L-M
lat = max(L-B , )
R P
W sytuacji braku żetonów transmisja jest wstrzymywana i uruchamiany
jest regulator czasowy na okres jednego kwantu czasu (zwykle 10ms). Ozna-
czajac czestotliwość odmierzania kwantów czasu przez procesor jako HZ,
a maksymalna przepustowość jako Rmax, można napisać
Rmax = B " HZ
a w konsekwencji można wyznaczyć minimalna wymagana g ebokość kube
l lka
dla zapewnienia żadanej przepustowości
Rmax
B =
HZ
Przyk zależność ta dla sieci Ethernet o przepustowości 100Mbit nak
ladowo lada
s
wymóg, aby kube mia rozmiar co najmniej 128 kilobajtów.
lek l
28
Rysunek 3.3: Algorytm kolejkowania SFQ
3.1.4 Algorytm kolejkowania SFQ (Stochastic Fairness
Queueing)
Ten algorytm kolejkowania jedyne co wykonuje, to szeregowanie pakietów
wychodzacych. W praktyce polega to na opóznianiu transmisji wybranych
strumieni pakietów. Strumień pakietów przeważnie jest tożsamy z pojedyn-
cza transmisja TCP. Celem nadrzednym jest zapewnienie sprawiedliwego
podzia dostepnej przepustowości miedzy wszystkie strumienie w sposób jak
lu
najmniej obcia żajacy procesor.
Do ograniczonej liczby kolejek przydzielane sa pakiety. Realizowane jest to
z pomoca funkcji haszujacej, która jest regularnie co ustalony wstepnie okres
czasu (przyk co 10 s) przeliczana w celu zminimalizowania prawdopo-
ladowo
dobieństwa kolizji. Funkcja haszujaca [1] wyznacza numer kube w którym
lka
umieścić pakiet na podstawie nastepujacych parametrów:
" adres zród (w postaci liczby 32-bitowej)
lowy
" adres docelowy (w postaci liczby 32-bitowej)
29
" numer protoko transportowego
lu
" wartość ca
lkowita zmieniajaca sie co określony odstep czasu
Pobieranie pakietów z kube opiera sie na algorytmie cyklicznym
lków
round-robin (rys. 3.3). Mechanizm ten może zapewnić równoprawna ob-
s wielu równoleg konwersacji interaktywnych lub zapobiec zdomino-
luge lych
waniu lacza przez jedna konwersacje generujaca duży ruch. Pakiety wysy
lane
sa cyklicznie po jednym z każdego kube dlatego konwersacje sk
lka, ladajace sie
z wiekszej ilości mniejszych pakietów sa wysy najszybciej. Efekty pracy
lane
algorytmu sa widoczne jedynie wtedy, gdy ruch wychodzacy zajmuje ca a
l
dostepna dla niego przepustowość.
Należy podkreślić, ze algorytm ten ma ograniczenia. Do najbardziej wi-
docznych należy ograniczenie ilości kube (1024) oraz pakietów w kube
lków lku
(128). Można to ograniczenie latwo usuna ć zmieniajac kilka sta w kodzie
lych
zród jadra [1]. Nastepne ograniczenie wynika z prostoty. Algorytm ten
lowym
nie jest na tyle sprawiedliwy w podziale przepustowości, aby móg zapew-
l
nić wysoka jakość us w domenie DiffServ. Wynika to z oczekiwań jakie
lug
nak sie na wspó lu
lada lczesne algorytmy sprawiedliwego podzia (np. We-
ighted Fair Queueing - WFQ), które dziela dynamicznie strumienie pakietów
do kolejek o zmiennym priorytecie, stosujac jako kryterium podzia ilość
lu
danych przesy danym strumieniem [28]. W ten sposób faworyzowane
lanych
sa krótsze transmisje mniejszych ilości danych.
3.1.5 Algorytmy kolejkowania RED (Random Early Detection)
Protokó transportowy TCP posiada mechanizmy wewnetrzne umożli-
l
wiajace regulowanie szybkości przyjmowania pakietów przychodzacych [11].
Odbywa sie to przez odrzucaniu pakietów, jeśli przychodzi ich za dużo i nie
30
można nada żyć z ich obs Nadawca powinien wtedy zmniejszyć okno
luga.
nadawania pakietów o po czyli nadawać dwa razy mniej pakietów jedno-
lowe,
razowo bez uzyskania potwierdzenia. Mechanizm ten jest prosty i skuteczny,
ale dzia swe zaczyna zbyt pózno, gdy już dosz do przecia żenia ruchu
lanie lo
w sieci.
Alternatywnym rozwiazaniem problemu jest użycie algorytmów kolejko-
wania RED (ang. Random Early Detection) lub GRED (ang. Generalised
RED). Algorytmy te należa do szerszej rodziny algorytmów wczesnego od-
rzucania (ang. early discard). Pozwalaja one na kszta
ltowanie ruchu wycho-
dzacego poprzez oddzia
lywanie na ruch wchodzacy.
Na podstawie podanych niżej parametrów konfiguracyjnych decyduje sie
o losie pakietu:
" min minimalna d kolejki przy której pakiet może zostać zna-
lugość
kowany,
" max d kolejki dla której prawdopodobieństwo znakowania pa-
lugość
kietu jest maksymalne,
" avg średnia d kolejki,
lugość
" len bieżaca d kolejki,
lugość
" W sta czasowa filtru (zmniejszajac ja dopuszcza sie wystepowanie
la
wiekszych przecia żeń w ruchu sieci),
" p prawdopodobieństwo znakowania pakietów.
Dalszy los pakietu wyglada nastepujaco:
" avg < min : pakiet jest przepuszczany ,
31
" min <= avg < max : pakiet jest znakowany z prawdopodobieństwem
p,
" avg > max : pakiety jest znakowany.
Formalnie zapisuje sie to nastepujaco:
W = 2-n, n " N
maxP = 0.01..0.02
avg = (1 - W ) " avg + w " len
(avg-min)
p = maxP "
(max-min)
Znakowanie pakietu (inaczej kolorowanie pakietu) pozwala na warun-
2
kowe przes pakietu dalej. Jeśli ruter ma w aczona obs ECN , to
lanie l luge
wtedy pakiet jest znakowany i wysy dalej, a w przeciwnym razie pakiet
lany
jest od razu odrzucany. Znakowany pakiet bedzie przesy dalej dopóki
lany
przepustowość sieci bedzie wykorzystywana w niewielkim stopniu. Jeśli wy-
korzystanie przepustowości sieci osiagnie wysoki poziom, to pakiet zostanie
odrzucony.
Odmiana GRED (rys. 3.4) różni sie tym, że tworzy i obs wiek-
luguje
sza ilość kolejek, z których każda charakteryzuje sie innym prawdopodobień-
stwem odrzucenia pakietu. W celu zmniejszenia zapotrzebowania na zasoby
skorzystano z mechanizmu wirtualnych kolejek , polega to na tym, że kolejki
sa tworzone w razie potrzeby zgodnie z rozumowaniem, że kolejka powinna
istnieć jedynie wtedy, gdy znajduja sie w niej pakiety.
Jednym z możliwych zastosowań tego algorytmu kolejkowania jest realiza-
cja algorytmu przekazywania pakietów AF (opisany w rozdziale 2). Algorytm
ten zosta stworzony na potrzeby architektury DiffServ. Wymaga on trzech
l
różnych prawdopodobieństw odrzucania pakietów.
2
ECN (Explicit Congestion Notification) objaśnione w rozdziale 2
32
Rysunek 3.4: Algorytm kolejkowania GRED
Obydwa algorytmy pozwalaja na p
lynniejsza regulacje generacji pakietów
przez zród niż gdyby odpowiedzialny by za to jedynie mechanizm TCP.
lo l
Wynika to z tego, że algorytmy RED zaczynaja odrzucać pakiety wcześniej
niż zacznie to czynić protokó TCP. Druga zaleta stosowania tych algorytmów
l
na ruterach jest możliwość wykorzystania w wiekszym stopniu przepustowo-
ści sieci poprzez dopuszczanie do chwilowych przecia żeń. Kolejna zaleta jest
zwiekszenie interaktywności ruchu w sieci poprzez efektywne zmniejszenie
d kolejki.
lugości
3.1.6 Algorytm kolejkowania CBQ (Classful Based Queueing)
Algorytm kolejkowania CBQ to jeden z najbardziej elastycznych algoryt-
mów zawartych w linuksowej implementacji QoS. Elastyczność wynika bez-
pośrednio z jego klasowości (możliwości tworzenia klas wewnetrznych) i dużej
konfigurowalności. Algorytm ten może zarówno kszta ruch wychodzacy
ltować
jak i też szeregować pakiety wychodzace.
Struktura klas tworzona z wykorzystaniem CBQ ma postać odwróconego
drzewa. Na szczycie znajduje sie klasa g ówna (ang. root). Każda z pozo-
l
33
Rysunek 3.5: Algorytm kolejkowania CBQ
sta klas może być wez (ang. node) lub liściem (ang. leaf). Wez
lych lem ly
posiadaja zarówno rodzica jak i potomstwo, a liście posiadaja wy acznie ro-
l
dzica. Klasy majace wspólnego rodzica określane sa jako rodzeństwo (ang.
siblings). Rodzeństwo domyślnie wzajemnie pożycza sobie przepustowości,
ale można to zachowanie wy aczyć. Przeważnie każda klasa ma jawnie zdefi-
l
niowany uchwyt (ang. handle), dzieki któremu można odwo sie bezpo-
lywać
średnio do tej klasy (rodzic i rodzeństwo nie potrzebuja go znać, gdyż znaja
uchwyty generowane automatycznie przez algorytm kolejkowania). Z każda
klasa skojarzony jest algorytm kolejkowania, a jeśli nie zosta żaden jawnie
l
podany, to używany jest algorytm pfifo fast. Każdy weze może dodatkowo
l
posiadać filtr, który przekierowywuje pakiety do odpowiednich klas wśród
potomstwa.
34
Na rys. 3.5 pokazane sa wzajemne relacje miedzy klasami (wraz algoryt-
mami kolejkowania i filtrami), Linuksa oraz zewnetrzna siecia komputerowa.
Na uwage zas mechanizm umożliwiajacy bezpośrednie przesy pa-
luguje lanie
kietów do odpowiednich klas, podczas gdy pobieranie pakietów z klas wy-
maga już pośrednictwa rodziców.
Jadro komunikuje sie wy acznie z klasa g ówna. Pobieranie pakietów z
l l
klas może sie odbywać wy acznie z pośrednictwem rodziców, co jest warun-
l
kiem koniecznym dla dzia mechanizmu kszta
lania ltowania ruchu. Pobieranie
pakietów z klas wykonywane jest wed algorytmu WRR (Weighted Round-
lug
Robin). Algorytm WRR jest drobna modyfikacja algorytmu round-robin ,
polegajaca na przypisaniu różnych wag (priorytetów) każdej klasie. Klasy
o wyższych priorytetach sa sprawdzane w pierwszej kolejności. Wstawianie
pakietów do klas może sie odbywać z pominieciem ich bezpośrednich rodzi-
ców. Polega to na przekierowaniu przez jeden z filtrów po drodze pakietu
bezpośrednio do wybranej klasy. Przekierowywanie pakietów do wybranych
klas odbywa sie przeważnie z pomoca filtrów. Można również klasyfikować
pakiety bezpośrednio w klasach, nak
ladajac maske bitów TOS na pole TOS
z nag ówka pakiety IP.
l
Ogólny algorytm klasyfikowania (przekierowywania) pakietów do poszcze-
gólnych klas przedstawia sie nastepujaco [3]:
1. Sprawdz filtry przy aczone do bieżacej klasy. Jeśli znajdujesz sie w li-
l
ściu, to skończ, a w przeciwnym wypadku wróć do kroku 1.
2. Na óż maske bitów na bity TOS. Jeśli zgadza sie i znajdujesz sie w wezle
l
to skończ, a w przeciwnym razie wróć do kroku 1.
3. Wstaw pakiet do bieżacej klasy.
Poza szeregowaniem pakietów algorytm CBQ zajmuje sie również kszta
l-
35
towaniem ruchu wychodzacego. Mechanizm odpowiadajacy za to polega na
obliczaniu bezczynności i odpowiednim wstrzymywaniu ruchu pakietów. Ob-
liczenia przeprowadzane sa w oparciu o podany jako jeden z parametrów
algorytmu kolejkowania średni rozmiar pakietów (zwykle 1000 bajtów). Wy-
znacza sie sta a EWMA (ang. Exponential Weighted Moving Average), która
l
traktuje nowsze pakiety jako ważniejsze od starszych w stopniu wyk
ladni-
czym. Nastepnie od zmierzonego okresu bezczynności lacza sieciowego odej-
mowana jest bezczynność obliczona z użyciem EWMA, po czym jest ona
odejmowana od zmierzonej bezczynności, dajac w wyniku średnia bezczyn-
ność acza sieciowego. Średnia bezczynność lacza sieciowego może przyjmować
l
nastepujace wartości:
" ujemne acze jest przecia żone ilościa danych (ang. overlimit)
l
" zerowa acze jest idealnie zrównoważone
l
" dodatnia lacze jest niedocia żone ilościa danych (ang. underlimit)
W przypadku przecia żenia lacza transmisja pakietów bedzie wstrzymy-
wana na taki okres czasu, aby doprowadzić do zrównoważenia lacza. Nie
można wykonać zrównoważenia obcia żenia lacza z dowolna dok
ladnościa,
gdyż nie jest możliwe ustalenie czasu oczekiwania na transmisje z rozdziel-
czościa wieksza niż pojedynczy kwant czasu zegara (na platformie PC
10ms). W przypadku niedocia żenia lacza pakiety beda szybciej wysy aż
lane,
do momentu zrównoważenia obcia żenia lacza. W celu zapobieżenia możliwo-
ści wystapienia zbyt dużych chwilowych przecia żeń w ruchu w sieci w trakcie
wyrównywania obcia żenia definiowane jest maksymalna bezczynność acza
l
sieciowego, do którego jest obcinana w dó dowolnie wysoka wyliczona war-
l
tość bezczynności.
36
Przyk
ladowym zainteresowaniem CBQ jako algorytmu kolejkowania jest
architektura DiffServ korzystajaca z us o gwarantowanej jakości (opi-
lugi
sana jako Guaranteed Service w rozdz. 2).
3.1.7 Algorytm kolejkowania DSMARK (DiffServ Mark)
Rysunek 3.6: Algorytm kolejkowania DSMARK
Algorytm kolejkowania DSMARK jest wykorzystywany do realizacji ar-
chitektury DiffServ. Algorytm ten zajmuje sie znakowaniem pakietów wcho-
dzacych do domeny DS. Znakowanie odbywa sie z pośrednictwem filtra pa-
kietów tcindex.
Dzia tego algorytmu przedstawione jest na rys. 3.6. Algorytm opisu-
lanie
jacy jego dzia przedstawia sie nastepujaco:
lanie
1. punkt A: Jeśli ustawiona jest flagaset_tc_index, to odczytywana jest
wartość pola DS (TOS ) z nag ówka pakietu IP, a nastepnie zapisywana
l
jest w polutc_indexstruktury odzwierciedlajacej pakiet. W przeciw-
nym przypadku wpisywana jest do tego pola wartość domyślna uprzed-
nio zdefiniowana.
2. Filtrtcindexna podstawie polatc_indexprzekieruje pakiet do od-
powiedniej klasy
37
3. Pakiet dociera do wewnetrznej klasy, w której obowiazuje wewnetrzny
algorytm kolejkowania (np. pfifo).
4. punkt B: Poletc_indexużywane jest jako indeks umożliwiajacy do-
step do tablicy wartości (maska, wartość). Pierwotna wartość pola DS
mog zostać nadpisana przez wewnetrzny algorytm kolejkowania wiec
la
odtwarzana jest jego poprzednia wartość.
3.1.8 Algorytm kolejkowania CSZ (Clark-Shenker-Zhang)
Algorytm ten zosta opracowany przez trzech autorów, od których na-
l
zwisk wzia sie akronim: Clark-Shenker-Zhang [22]. Jest to najbardziej roz-
l
budowany z dostepnych aktualnie dla Linuksa algorytmów kolejkowania.
Opiera sie on na idei, że konwersacje z różnych klas ruchu sa umiesz-
czane w osobnych kolejkach FIFO+ [22]. Algorytm FIFO+ jest modyfikacja
algorytmu FIFO , uwzgledniajaca czas przyjścia pakietu. Przed wys
laniem
pakietu do nastepnego rutera obliczany jest i zapisywany w nag ówku IP spo-
l
dziewany czas przyjścia do niego. Po osiagnieciu tego rutera porównywany
jest on ze spodziewanymi czasami przyjścia pozosta pakietów z kolejki
lych
i pakiet jest wstawiany do kolejki w odpowiednie miejsce.
Wprowadza sie podzia konwersacji na: gwarantowanej jakości oraz
l
przewidywanej jakości . Pierwsza grupa to konwersacje aplikacji żadaja-
cych niezmiennych parametrów transmisji (nie adaptujacych sie do zmien-
nych parametrów transmisji), a druga to konwersacje aplikacji adaptujacych
sie do zmiennych parametrów transmisji. Do kolejek o wyższych priorytetach
wstawiane sa pakiety konwersacji o gwarantowanej jakości , a do kolejek
o niższych priorytetach pakiety konwersacji o przewidywanej jakości . Do
kolejki o najniższym priorytecie, dzia zgodnie z zasada najlepszego
lajacej
38
wysi trafiaja datagramy, które w ten sposób sa przesy minimalnym
lku , lane
kosztem. Należy jeszcze tylko zadbać o to, aby kolejki o wyższych priorytetach
nie zag ly kolejek o niższych priorytetach. Można w tym celu kszta
lodzi ltować
ruch wychodzacy z kolejek o najwyższych priorytetach z pomoca algorytmu
kolejkowania TBF (podsekcja 3.1.3).
Przyk konfiguracja oparta na algorytmie kolejkowania CSZ poka-
ladowa
zana jest na rys. 3.7.
Aktualnie implementacja tego algorytmu kolejkowania nie jest w pe
lni
funkcjonalna, a w przysz algorytm ten bedzie zastapiony zostanie algo-
lości
rytmem klasy HPFQ (ang. Hierarchical Packet Fairness Queueing). Algo-
rytmy takie potrafia równolegle obs
lugiwać klasy ruchu:
" Guaranteed Service [19]
" najlepszego wysi [4]
lku
" Controlled Load Service [20]
2
Przyk
ladowym algorytmem klasy HPFQ jest algorytm W F Q opisany
w [23].
Rysunek 3.7: Algorytm kolejkowania CSZ
39
3.2 Rodzaje filtrów
Szkielet (ang. framework) konstrukcji filtra pakietów umożliwia tworzenie
filtrów zawierajacych elementy wewnetrzne. Elementem takim przyk
ladowo
może być inny filtr pakietów. Sk filtru rozróżniane sa z pomoca uchwy-
ladowe
tów (ang. handle) 32-bitowych. Uchwyt o numerze 0 odnosi sie do filtru jako
ca Aktualnie żaden ze standardowych filtrów pakietów dostepnych w ja-
lości.
drze nie korzysta z tego mechanizmu zagnieżdżania filtrów.
Filtry pakietów dziela sie na:
" ogólne (ang. generic) jeden filtr skojarzony z konkretnym algoryt-
mem kolejkowania klasyfikuje pakiety do wszystkich klas ruchu obs
lu-
giwanych przez dany algorytm kolejkowania.
" szczegó (ang. specific) kilka filtrów skojarzonych z konkretnym
lowe
algorytmem kolejkowania klasyfikuje pakiety do klas ruchu obs
lugiwa-
nych przez dany algorytm kolejkowania.
3.2.1 Filtr route
Linux obs wiele tablic rutingu (domyślnie 256). Standardowo przy
luguje
wyborze trasy pakietów sprawdzane sa wpisy w nastepujacych tablicach
w podanej kolejności:
1. local - znajduja sie w niej trasy dodawane automatycznie przez jadro
przy podnoszeniu interfejsów oraz trasy broadcastowe;
2. main - znajduja sie w niej trasy dodawane przez administratora;
3. default - domyślnie jest pusta.
40
Administrator może dodawać trasy do każdej z wymienionych tablic.
Może także skasować wszystkie tablice z wyjatkiem tablicy local. Możliwe
jest również tworzenie nowych tablic rutingu i dodawanie do nich tras.
Dodatkowe możliwości stwarza użycie rutingu rozszerzonego (ang. po-
licy routing). Możliwe jest wtedy podejmowanie decyzji o rutingu na podsta-
wie nastepujacych parametrów:
" adresu zród
lowego
" protoko sieciowego (np. IP)
lu
" portu protoko transportowego (np. port 80 TCP)
lu
" wartości pola TOS z nag ówka IP
l
" wejściowego interfejsu sieciowego (np. ppp0)
" wartości pola ustawianego w pakiecie przez firewall
Ostatnie kryterium rutowania pakietów pozwala w praktyce na rutowanie
wg zawartości dowolnego pola nag ówków warstwy sieciowej lub transporto-
l
wej, a nawet zawartości pola danych pakietu. Wykorzystywany do tego jest
3
mechanizm znakowania pakietów przez narzedzie iptables . Znakowanie po-
lega na wpisywaniu dowolnej liczby sta
loprzecinkowej 32 bitowej bez znaku
do dodatkowego pola struktury reprezentujacej każdy pakiet IP.
Każda trasa w tablicy rutingu może mieć przypisana klase do której trafia
pakiety kierowane wzd tej trasy. Trase z klasa można skojarzyć na dwa
luż
sposoby. Można to osiagna ć przez wpisanie trasy do jednej z tablic rutingu
lub przez zdefiniowanie dziedziny rutujacej (ang. realm). Nastepnie przy de-
finiowaniu filtra można wskazać na wybrana tablice lub dziedzine rutujaca
jako na zród pakietów do filtrowania.
lo
3
Filtr fw (podsekcja 3.2.2) korzysta jawnie z tego mechanizmu
41
Poniższy przyk pokazuje zastosowanie filtra route. Wszystkie pakiety
lad
adresowane do podsieci192.168.10/24z pośrednictwem rutera o adresie
192.168.10.1wychodzace interfejsem sieciowymeth1sa kierowane do klasy
o identyfikatorze1:10. Elementem laczacym w tym przyk jest dziedzina
ladzie
rutujaca o identyfikatorze10.
# ip route add 192.168.10/24 via 192.168.10.1 dev eth1 realm 10
# tc filter add dev eth1 parent 1:0 protocol ip prio 100 \
route to 10 classid 1:10
Najwieksza zaleta tego filtra wynikajaca z jego prostoty jest duża szybkość
dzia
lania
3.2.2 Filtr fw
Kolejny rodzaj filtru korzysta z możliwości znakowania pakietów, stad
pochodzi jego nazwa fw (skrót terminu firewall). Filtr ten potrafi przekiero-
wać pakiety do zdefiniowanych klas na podstawie wartości 32 bitowej liczby
sta
loprzecinkowej bez znaku wpisanej uprzednio do struktury przedstawia-
jacej pakiet. Do wpisywania wspomnianej liczby s narzedzie konfiguracji
luży
firewalla iptables.
Jako demonstracje możliwości tego elastycznego filtra pokazano niżej za-
bezpieczenie serwera przed atakiem DoS polegajacym na przesy do niego
laniu
dużej ilości pakietów z ustawiona flaga TCP SYN(rozpoczynajacych po acze-
l
nie TCP) w celu doprowadzenia do przecia żenia serwera, a w konsekwencji
unieruchomienia go.
Pakiet z ustawiona flaga TCP SYNma wielkość 40 bajtów (320 bitów), tak
wiec w przybliżeniu trzy takie pakiety maja lacznie wielkość 1 kb. Ustawiajac
limit przepustowości dla pakietów z ustawiona flaga TCP SYNna 1 kb, akcep-
tujemy nie wiecej niż trzy próby nawiazania po aczenia w każdej sekundzie.
l
42
W tym celu znaczymy każdym przychodzacy interesujacym nas interfejsem
sieciowyeth0pakiet wartościa 1. Nastepnie wszystkie uprzednio znaczone
pakiety podlegaja kszta
ltowaniu ruchu i nadmiarowe pakiety sa odrzucane.
# iptables -A PREROUTING -i eth0 -t mangle -p tcp --syn -j MARK \
--set-mark 1
# tc filter add dev eth0 parent ffff: protocol ip prio 50 \
handle 1 fw police rate 1kbit burst 40 mtu 9k drop flowid :1
G ówna zaleta tego filtra jest jego elastyczność polegajaca na możliwości
l
wykorzystania wszystkiego co oferuje architektura netfilter, z której korzysta
narzedzie konfiguracji firewalla iptables. Jednocześnie można uaktywnić 256
niezależnych filtrów fw.
3.2.3 Filtry rsvp i rsvp6
Filtr rsvp umożliwia klasyfikacje pakietów zgodnie z ich przynależnościa
do odpowiednich strumieni IntServ. Klasyfikacja jest przeprowadzana na pod-
stawie nastepujacych parametrów:
" protokó warstwy sieciowej (np. TCP)
l
" adres docelowy IP
4
" port docelowy TCP lub GPI
" adres zród IP lub maska adresów IP (opcjonalnie)
lowy
4
W przypadku korzystania z tunelów IP w celu szyfrowania przesy danych zacho-
lania
dzi potrzeba odczytania z nag ówka pakietu TCP numerów portu zród i docelowego.
l lowego
Nag ówek TCP zostaje pózniej zaszyfrowany, wiec informacje te zapisuje sie w nag ówku
l l
GPI (ang. Generalised Port Identifier) [27], który dopisywany jest za nag ówkiem IP, a
l
przed nag ówkiem TCP.
l
43
" port zród IP lub etykieta przep (opcjonalnie i dozwolone tylko
lowy lywu
jeśli podano adres zród IP lub maske adresów)
lowy
W poniższym przyk wszystkie pakiety TCP przychodzace z adresu
ladzie
192.168.0.10i adresowane do192.168.0.1zostana przyporzadkowane do
klasy1:2. Zapewnieniem odpowiedniej jakości transmisji zajmie sie algorytm
kolejkowania z klasy1:2i nadrzedne.
# tc filter add dev eth0 parent 1:0 protocol ip prio 10 rsvp ipproto tcp \
sender 192.168.0.10 session 192.168.1.1 classid 1:2
Zastosowania filtru rsvp, podobnie jak protoko sygnalizacyjnego RSVP,
lu
nie sa ograniczone wy acznie do architektury IntServ. Protokó sygnaliza-
l l
cyjny RSVP nie jest zależny od konkretnego protoko sieciowego, dlatego
lu
też wspó
lpracuje zarówno z IPv4 jak i IPv6. W przypadku korzystania z pro-
toko IPv6 należy wywo ten filtr, podajac nazwe rsvp6. Jednocześnie
lu lywać
można uaktywnić 256 niezależnych filtrów rsvp.
3.2.4 Filtr tcindex
Nazwa tego filtru, sk
ladajaca sie z dwóch cześci tc (ang. Traffic Control)
oraz index, nawiazuje do architektury DiffServ. W architekturze DiffServ po-
dzia pakietów na klasy ruchu (w tej implementacji tożsamych z klasami)
l
dokonywany jest na podstawie wartości pola DS. Pole to tożsame jest z po-
lem TOS w nag ówku IPv4 oraz polem TC w nag ówku IPv6. Wartość tego
l l
pola przechowywana jest dodatkowo w polutcindexstruktury reprezentu-
jacej każdy pakiet.
W przypadku używania algorytmu kolejkowania dsmark wartość DS może
być automatycznie wczytana do zmiennejtcindex. Można też wymusić z po-
moca odpowiedniego parametru wywo wpisanie uprzednio zdefiniowanej
lania
44
domyślnej wartości do zmiennejtcindex. Jeśli nie skorzysta sie z żadnej z
wymienionych metod, należy przypisać wartość zmiennejtcindexw inny
sposób, aby unikna ć niejednoznaczności interpretacji.
W poniższym przyk opcjaset_tc_indexużyta w pierwszym po-
ladzie
leceniu nakazuje algorytmowi kolejkowania dsmark odczytać zawartość pola
TOS i wczytać ja do zmiennejtcindex. W drugim poleceniu na wartość
zmiennejtcindexnak jest maska logiczna0xfc, a nastepnie wynik
ladana
przesuwany jest o dwa bity w prawo. W ten sposób pomija sie bity ECN.
# tc qdisc add dev eth0 handle 1:0 root dsmark indices 64 \
set_tc_index
# tc filter add dev eth0 parent 1:0 protocol ip prio 1 \
tcindex mask 0xfc shift 2
Filtr może być wykorzystywany do różnych celów, nie tylko w po aczeniu
l
z algorytmem kolejkowania dsmark.
3.2.5 Filtr u32
Nazwa tego najbardziej elastycznego filtra pochodzi od formatu nag ów-
l
ków protoko ów warstw sieciowej i transportowej, które sk sie z wie-
l ladaja
lokrotności s 32 bitowego. Filtr ten może przyjmować jako kryterium
lowa
klasyfikacji pakietów do odpowiednich klas dowolne pola z nag ówków war-
l
stwy sieciowej (IPv4, IPv6 ) lub transportowej (TCP, UDP). Wartości wspo-
mnianych pól moga być sprawdzane zarówno z użyciem nazw symbolicznych
(np.ip dst 192.168.0.1) lub maskowania logicznego jednego, dwóch lub
czterech kolejnych bitów nag ówka (np.match u8 64 0xff at 8).
l
Pierwszy przyk prezentujacy możliwości omawianego filtra pokazuje
lad
przekierowanie do klasy1:0wszystkich pakietów posiadajacych pole TOS z
nag ówka IP ustawione na wartość0x10(minimalizacja opóznienia).
l
45
# tc filter add dev eth0 parent 1:0 protocol ip prio u32 \
match ip tos 0x10 0xff flowid 1:1
Nastepny przyk jest demonstracja filtrowania pakietów wzgledem war-
lad
tości pola TTL z nag ówka IP. Pakiety, których czas życia (TTL) wynosi
l
1, sa kierowane do oddzielnej klasy. W tym celu na dziewiaty bajt nag ówka
l
IP (przesuniecie o osiem bajtów) nak jest maska0xff, a wynik po-
ladana
równywany jest z oczekiwana wartościa TTL.
# tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 \
match u8 1 0xff at 8 flowid 1:1
Ostatni przyk zastosowania tego filtru sk sie z trzech selektorów.
lad lada
Selektorem nazywa sie pojedynczy warunek. Spe wszystkich na
lnienie lożo-
nych warunków (iloczyn logiczny) jest konieczne, aby filtr przekierowa pakiet
l
do odpowiedniej klasy. Pierwszy selektor sprawdza, czy pakiet przyszed z ad-
l
resu192.168.0.2. Nastepny selektor sprawdza, czy pakiet IP zawierajacy
ten pakiet ma wielkość dok
ladnie40bajtów. Ostatni z selektorów sprawdza,
czy w pakiecie jest ustawiona flagaTCP SYN.
# tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 \
match ip src 192.168.0.2 \
match u8 0x28 0xff at 3 \
match u8 0x10 0xff at nexthdr+13
3.3 Zastosowanie algorytmów kolejkowania i filtrów
W rzeczywistych zastosowaniach użycie pojedynczego algorytmu kolejko-
wania dla jednej klasy, do której parametry przydziela jeden filtr jest nie-
wystarczajace. Konstruuje sie wtedy hierarchie klas, korzystajac z różnych
algorytmów kolejkowania i filtrów.
46
Przyk rozbudowana struktura QoS przedstawiona jest na rys. 3.8.
ladowa
Na rysunku można zobaczyć zastosowanie filtrów pakietów u32 (podsekcja
3.2.5) oraz algorytmów kolejkowania SFQ (podsekcja 3.1.4), PRIO (podsek-
cja 3.1.2), TBF (podsekcja 3.1.3)oraz CBQ (podsekcja 3.1.6).
47
Rysunek 3.8: Przyk hierarchia klas
ladowa
48
Rozdzia 4
l
Możliwości rozbudowy
implementacji QoS w systemie
Linux
Dzieki elastycznej i modularnej budowie Linuksa można zmienić kod stan-
dardowych algorytmów kolejkowania lub filtrów adaptujac je do swych po-
trzeb. Można również napisać w filtry lub algorytmy kolejkowania, które
lasne
pózniej można skompilować jako modu dynamiczne i w razie potrzeby za-
ly
ladować do jadra systemu Linux.
W rozdziale tym nacisk jest po na budowe wewnetrzna algorytmu
lożony
kolejkowania oraz filtru, co u potencjalnym zainteresowanym napisanie
latwi
w
lasnego algorytmu kolejkowania lub filtru, badz też zaimplementowanie pod
system Linux algorytmu kolejkowania lub filtru już opracowanego teoretycz-
nie.
49
4.0.1 Opis ogólny
Implementacja sterowania ruchem (ang. traffic control) w zród Li-
lach
nuksa rozdzielona jest na kod elementów sterowania ruchem (pliki zród
lowe
w jezyku C) oraz na interfejs dostepu do tych elementów (pliki nag ów-
l
kowe w jezyku C). Jedynym wyjatkiem od tej zasady jest implementacja
filtrów rsvp wraz z rsvp6, która umiejscowiona jest w wiekszości w poje-
dynczym pliku nag ówkowym. Wszystkie wymienione niżej nazwy katalogów
l
i plików sa podawane wzgledem g ównego katalogu ze zród znajdujacego
l lami
sie w /usr/src/linuxchyba że jawnie napisano inaczej.
Komunikacja miedzy elementami sterowania ruchem dzia
lajacymi w try-
bie jadra a programami administracyjnymi dzia
lajacymi w trybie użyt-
kownika zapewnia mechanizm rtnetlink [3]. Mechanizm ten jest od-
miana ogólnego mechanizmu netlink wyspecjalizowana pod katem ob-
s protoko sieciowego IP. Implementacja obydwu wspomnianych me-
lugi lu
chanizmów znajduje sie odpowiednio w podkatalogu net/netlink oraz
pliku net/core/rtnetlink.c, z kolei interfejs jest umieszczony w na-
stepujacych plikach nag ówkowych: include/linux/netlink.horazinc-
l
lude/linux/rtnetlink.h.
Administrator systemu kontroluje sterowanie ruchem z pomoca zewnetrz-
nego programu tc. Program ten jest cześcia sk pakietu iproute, s
ladowa luża-
cego m. in. do sterowania rutingiem rozszerzonym. Cześć dotyczaca stero-
wania ruchem znajduje sie w podkataloguiproute2/tczróde [2]. Program
l
ten pozwala na manipulowanie wybranymi elementami sterowania ruchem.
Implementacja obs mechanizmów sterowania ruchem sk sie z dwóch
lugi lada
cześci:
" obs algorytmów kolejkowania i klas ruchu pliki q_ np. plik
lugi
q_tbf.codpowiada za obs algorytmu kolejkowania TBF (podsek-
luge
50
cja 3.1.3),
" obs filtrów pakietów plikif_np. plikf_u32.codpowiada za ob-
lugi
s filtru pakietów u32 (podsekcja 3.2.5).
luge
Jako komunikacje miedzy elementami sterowania ruchem a programami
dzia
lajacymi w trybie użytkownika traktuje sie komunikacje miedzy progra-
mem tc a konkretnymi klasami ruchu, algorytmami kolejkowania oraz filtrami
pakietów.
Implementacja mechanizmów sterowania ruchem w systemie Linux jest
integralna cześci obs sieci komputerowych. Sk sie ona z nastepujacych
lugi lada
cześci:
" plików zród
lowych (podkatalognet/sched) nastepujacych elementów
podstawowych:
algorytmów kolejkowania i klas pliki sch_ np. plik
sch_dsmark.czawiera kod zród implementacji algorytmu ko-
lowy
lejkowania DSMARK (podsekcja 3.1.7),
filtrów pakietów plikicls_np. plikcls_tcindexzawiera kod
zród implementacji filtra tcindex (podsekcja 3.2.4).
lowy
" plików nag ówkowych zawierajacych:
l
interfejs pośredniczacy miedzy elementami sterowania ruchem
a programami dzia
lajacymi w trybie użytkownika inc-
lude/net/pkt_sched.h(algorytmy kolejkowania i klasy) orazin-
clude/net/pkt_cls.h(filtry pakietów),
deklaracje używane tylko wewnatrz jadra i programy dzia
lajace
w trybie jadra include/linux/pkt_sched.h(algorytmy ko-
51
lejkowania i klasy) orazinclude/linux/pkt_cls.h(filtry pakie-
tów).
4.0.2 Opis implementacji algorytmów kolejkowania
Implementacja nowego algorytmu kolejkowania o przyk
ladowej nazwie foo
w uproszczeniu sk sie z nastepujacych kroków:
lada
1. Stworzenie plikufoo_sch.cw podkatalogunet/sched/.
2. Zdefiniowanie strukturyfoo_sched_dataprzechowywujacej informacje
pomocnicze dla dzia danego algorytmu kolejkowania (np. maksy-
lania
malne d kolejek wewnetrznych).
lugości
3. Zdefiniowanie strukturyfoo_schedprzechowujacej informacje wspó
l-
dzielone przez wszystkie równolegle wykorzystywane instancje danego
algorytmu kolejkowania oraz zawierajacej w sobie tablice, której ele-
menty maja postać strukturyfoo_sched_data.
4. Napisanie kodu nastepujacych funkcji:
foo_init inicjalizuje i wstepnie konfiguruje algorytm kolejko-
wania (na podstawie parametrów przekazanych programem tc)
foo_enqueue wstawia pakiet do kolejki w klasie. Jeśli wewnatrz
klasy znajduja sie kolejne klasy, to funkcja ta jest wywo
lywana ponow-
nie dla klasy wewnetrznej.
foo_dequeue zwraca oraz usuwa pakiet z kolejki do wys
lania.
Jeśli w kolejce nie ma pakietów lub nie można ich wys to zwracany
lać,
jest pusty wskaznikNULL.
foo_requeue wstawia z powrotem pakiet do kolejki po uprzed-
nim usunieciu go przez funkcjefoo_dequeue. Pakiet musi być wsta-
52
wiony z powrotem na to samo miejsce w kolejce, z którego zosta wcze-
l
śniej usuniety.
foo_drop usuwa jeden pakiet z końca kolejki.
foo_change zmienia konfiguracje algorytmu kolejkowania (na
podstawie parametrów przekazanych programem tc).
foo_dump zwraca informacje diagnostyczne przydatne dla ad-
ministratora. Zwyczajowo zwracane sa parametry konfiguracyjne oraz
wartości zmiennych stanu (np.foo_sched).
foo_reset przywraca poczatkowa konfiguracje algorytmu ko-
lejkowania. W tym celu wszystkie kolejki sa opróżniane, a regulatory
czasowe sterujace wysy pakietów sa zatrzymywane.
laniem
foo_destroy usuwa algorytm kolejkowania wraz ze wszystkimi
podrzednymi klasami ruchu wraz ze skojarzonymi algorytmami kolejko-
wania oraz filtrami, a wszystkie pakiety z tych kolejek sa odrzucane>.
Klasa zawierajaca ten algorytm kolejkowania pozostaje nienaruszona.
5. Wpisanie nazw wymienionych wyżej funkcji do strukturyQdisc_ops.
6. Jeśli nowy algorytm kolejkowania foo ma istnieć w postaci dynamicz-
nego modu jadra, to należy wykonać co nastepuje:
lu
(a) napisać funkcje inicjalizujaca modu (wykonywana po jego za
l la-
dowaniu przez jadro) i rejestrujaca go w jadrze init_module
(b) napisać funkcje wywo ladowaniem modu
lywana tuż przed wy lu
przez jadro i wyrejestrowywujaca go z jadra cleanup_module
(c) zapewnić inkrementacje licznika zabezpieczajacego przez wy-
lu
ladowaniem używanego modu z pomoca makrodefinicji
53
MOD_INC_USE_COUNT w funkcji foo_init, czasem również
wfoo_change
(d) zapewnić dekrementacje licznika zabezpieczeczajacego przed
wy lu
ladowaniem używanego modu z pomoca makrodefinicji
MOD_DEC_USE_COUNTw funkcjifoo_destroy
7. Jeśli nowy algorytm kolejkowania foo ma istnieć w postaci kodu wkom-
pilowanego statycznie w jadro, to należy wykonać co nastepuje:
(a) umieścić deklaracje dotyczace tego algorytmu kolejkowania do-
stepne tylko dla jadra w plikuinclude/net/pkt_sched.h
(b) umieścić interfejs pośredniczacy w komunikacji miedzy tym algo-
rytmem kolejkowania a programami dzia
lajacymi w trybie użyt-
kownika (np. tc) w plikuinclude/linux/pkt_sched.h
(c) umieścić kod zród algorytmu kolejkowania w pliku
lowy
net/sched/sch_foo.c
(d) zainicjować algorytm kolejkowania w funkcjipktsched_initznaj-
dujacej sie w plikunet/sched/sch_api.c
8. Należy zmodyfikować zród programu tc w sposób nastepujacy:
la
(a) stworzyć plikq_foo.c
(b) zdefiniować nastepujace funkcje:
" foo_parse_opt sprawdza poprawność podanych parame-
trów wywo a nastepnie przekazuje je algorytmowi kolej-
lania,
kowania
" foo_print_opt wypisuje aktualna konfiguracje algorytmu
kolejkowania
54
" foo_print_xstats wypisuje statystyki algorytmu kolejko-
wania
" explain wypisuje pomoc odnośnie parametrów przekazy-
wanych algorytmowi kolejkowania
(c) wpisać nazwy powyższych funkcji do strukturyqdisc_util
(d) skompilować poprawiona wersje programu tc
9. Kompilacji jadra, a nastepnie uruchomienia systemu operacyjnego pod
kontrola nowego jadra.
10. Jeśli algorytm kolejkowania istnieje w postaci modu to należy go
lu,
za
ladować do jadra z pomoca programu modprobe.
11. Skonfigurować sterowanie ruchem z pomoca programu tc.
4.0.3 Opis implementacji klas ruchu
Opis implementacji nowych klas w programie tc nie różni sie zasadni-
czo od implementacji nowych algorytmów kolejkowania, wiec w podsekcji tej
omówione zostana jedynie niezbedne zmiany w zród jadra.
lach
Implementacja nowej klasy o nazwie foo wyglada podobnie jak imple-
mentacja nowych algorytmów kolejkowania (podsekcja 4.0.2). Inne sa tylko
funkcje, które należy napisać i umieścić w plikufoo_sch.cznajdujacym sie
w podkatalogunet/sched. Wymagane sa nastepujace funkcje:
" foo_graft do acza nowy algorytm kolejkowania do klasy
l
" foo_get wyszukuje klase na podstawie jej identyfikatora i zwraca
jej wewnetrzny identyfikator. Jeśli klasa posiada w licznik odwo
lasny lań
do niej, to powinien zostać zwiekszony o jeden.
55
" foo_put zmniejsza licznik odwo do tej klasy, jeśli dana klasa go
lań
posiada. Jeśli licznik ten osiagnie zero, to klasa zostanie usunieta.
" foo_change_class zmienia konfiguracje bieżacej klasy (na podsta-
wie parametrów przekazanych programem tc).
" foo_delete usuwa bieżaca klase. Jeśli klasa posiada w licz-
lasny
nik odwo do niej, to jest on dekrementowany, a klasa jest usuwana
lań
wy acznie wtedy, gdy osiagnie on zero.
l
" foo_walk iteracyjnie wywo wszystkie funkcje zwrotne (ang. cal-
luje
lback) skojarzone z klasami wewnetrznymi. Przyk funkcje takie
ladowo
moga zwracać informacje diagnostyczne o klasach.
" foo_leaf zwraca wskaznik do klasy jeśli jest ona liściem drzewa
klas. W przeciwnym przypadku zwracany jest pusty wskaznikNULL.
" foo_dump zwraca dane diagnostyczne dotyczace bieżacej klasy.
Cześć implementacji dotyczaca zmian w programie tc jest dok taka
ladnie
sama jak w przypadku implementacji nowego algorytmu kolejkowania.
4.0.4 Opis implementacji filtrów pakietów
Proces implementacji nowego filtru o nazwie foo sk sie z nastepuja-
lada
cych kroków:
1. Napisanie poniższych funkcji:
" foo_init inicjalizuje filtr.
56
1
" foo_classify dokonuje klasyfikacji pakietu .
" foo_get szuka filtru o podanym identyfikatorze i zwraca jego
wewnetrzny identyfikator.
" foo_put sprawdza czy bieżacy filtr jest używany, a jeśli nie
jest, to usuwa go.
" foo_change zmienia konfiguracje filtra.
" foo_walk wywo funkcje zwrotne wszystkich elementów fil-
luje
tra.
" foo_dump zwraca informacje diagnostyczne dotyczace bieżacego
filtru.
" foo_delete usuwa wskazany element sk
ladowy filtra.
" foo_destroy usuwa filtr.
2. Wpisanie nazw tych funkcji do strukturytcf_proto_ops.
3. Należy zmodyfikować zród programu tc w sposób nastepujacy:
la
(a) stworzyć plikq_foo.c
(b) zdefiniować nastepujace funkcje:
" f_foo_parse_opt sprawdza poprawność podanych para-
metrów programu i przekazuje je filtrowi pakietów.
" f_foo_print_opt wyświetla aktualna konfiguracje filtra
pakietów.
(c) skompilować poprawiona wersje programu tc.
1
Dozwolonymi wynikami klasyfikacji sa: TC_POLICE_OK (pakiet zostanie przepusz-
czony), TC_POLICE_RECLASSIFY (pakiet bedzie powtórnie klasyfikowany, gdyż prze-
kroczy dopuszczalny limit przepustowości), TC_POLICE_SHOT (pakiet zostanie odrzu-
l
cony) oraz TC_POLICE_UNSPEC (pakiet zostanie odrzucony lub traktowany jako ruch
niskopriorytetowy)
57
Rozdzia 5
l
Badania wykonane bez
w aczonych mechanizmów QoS
l
5.1 Cel badań
Badania polega na zmierzeniu wp różnych czynników (pośrednic-
ly lywu
two rutera w transmisji danych, transmisje FTP wykonywane w tle, druga
transmisja interaktywna wykonywana w tle) na zmienność opóznienia w prze-
kazywaniu pakietów IP (ang. jitter). Sk ly sie z dwóch grup badań. Bada-
lada
nia z pierwszej grupy zosta wykonane bez w aczonych mechanizmów QoS.
ly l
W pierwszej grupie znalaz sie pomiary opóznień w transmisjach bezpośred-
ly
nich oraz w transmisjach przez nieobcia żony ruter. Na druga grupe z ly
loży
sie pomiary dokonane w sytuacjach, gdy ruter poza interesujaca transmisja
obcia żany by dodatkowymi transmisjami (transmisja interaktywna echo
l
oraz transmisje FTP).
58
5.2 Sprzet użyty w badaniach
Stanowisko badawcze (rys. 5.1) sk lo sie z nastepujacych elementów:
lada
" ruter programowy (komputer PC oznaczony na rysunkach symbo-
lem R),
" cztery końcówki klienckie (komputery PC oznaczone cyframi
1, 2, 3 i 4).
Rysunek 5.1: Stanowisko badawcze
Jako ruter programowy wykorzystano komputer klasy PC wyposażony
w procesor Intel Pentium 75, pamieć operacyjna wielkości 48 MB oraz cztery
karty sieciowe Thick Ethernet (100 Mbit). Komputer pracowa pod kon-
l
trola systemu GNU/Linux Debian 3.0. Dodatkowo skompilowano specjalnie
pod posiadany sprzet jadro w wersji 2.4.18. Ruter z końcówkami klienckimi
po aczono okablowaniem sieciowym typu skretka kategorii 5.
l
Jako końcówki klienckie użyto cztery komputery klasy PC. Każdy z nich
posiada procesor Intel Pentium III 733, pamieć operacyjna wielkości 64 MB
l
oraz pojedyncza karte sieciowa o przepustowości 100 Mbit. Komputery pra-
cowa pod kontrola systemu RedHat Linux w wersji 7.2. Również dla nich
ly
specjalnie skompilowano jadro w wersji 2.4.18. Użycie tego samego jadra
59
na wszystkich komputerach oraz wy aczenie nieużywanych demonów siecio-
l
wych (np. serwera poczty) zniwelowa wp poszczególnych dystrybucji
lo lyw
na prowadzone pomiary.
5.3 Opis oprogramowania testujacego
W celu wykonania obliczeń niezbedne jest zmierzenie opóznienia (czasu)
przekazywania pakietów IP. Należy również dok zmierzyć chwilowe,
ladnie
średnia i krańcowe wartości przepustowości. Można to wykonać na wiele spo-
sobów. Ogólnie mówiac, można dokonać pomiarów w trybie użytkownika
(ang. user mode) lub w trybie jadra (ang. kernel mode).
W uproszczeniu można powiedzieć, że tryb jadra to uprzywilejowany tryb
dostepu do procesora. Proces dzia w tym trybie może uczynić wszystko
lajacy
co umożliwia architektura sprzetowa na której jest wykonywany. Proces dzia-
lajacy w tym trybie nie jest ograniczany przez prawa dostepu do plików oraz
może zarówno odczytywać jak i zapisywać dane do przestrzeni adresowej in-
nych procesów. Proces taki może być uruchomiony jedynie przez administra-
tora danego komputera. W tym trybie dzia watki jadra (ang. kernel
laja
threads) oraz dynamiczne modu jadra. Jako watki jadra określa sie frag-
ly
menty jadra pracujace niezależnie od siebie. Przyk
ladowym watkiem jadra
jest watek obs przerwań programowych. Natomiast dynamiczne modu
lugi ly
jadra to programy niezależne programy, które moga być w aczane i wy a-
l l
czane w trakcie pracy systemu operacyjnego. Moga one również przyjmować
parametry wywo Przyk zastosowanie dla modu ów to sterowniki
lania. ladowe l
urzadzeń zewnetrznych np. kart sieciowych w technologii Ethernet.
Z kolei trybem użytkownika określa sie nieuprzywilejowany tryb dostepu
do procesora. Proces dzia w tym trybie podlega restrykcjom dotyczacy
lajacy
60
dostepu jedynie do w przestrzeni adresowej pamieci oraz jedynie do
lasnej
tych plików, których prawa dostepu na to pozwalaja. Wszystkie programy
uruchamiane przez zwyk użytkowników oraz cześć programów urucha-
lych
miana przez użytkowników pracuje w tym trybie. Przyk edytor tekstu,
ladowo
w którym napisana zosta niniejsza praca, pracowa w trybie użytkownika.
la l
5.3.1 Zasadność pomiarów w trybie użytkownika
Przyk lajacym w trybie użytkownika jest wy-
ladowym rozwiazaniem dzia
korzystanie do pomiaru programu pods
luchujacego ruch w sieci komputero-
wej (ang. sniffer). Należy uruchomić kilka instancji takiego programu (np.
tcpdump), po jednej na każdy interesujacy nas interfejs sieciowy. Pojawia sie
wtedy poważny problem zwiazany z szeregowaniem procesów przez jadro, nie
można w latwy sposób zagwarantować, że pomiary czasu dokonywane przez
nas ladne.
luchujace programy beda bardzo dok Wynika to z tego, że jadro
przydziela każdemu procesowi przez który ma dostep do procesora i po up
ly-
wie jego proces zostaje wyw
laszczony, nie wiadomo wiec czy pakietowi A,
który pojawi sie w ruterze przed pakietem B, zostanie przypisany czas nadej-
l
ścia wcześniejszy niż pakietowi B. Problem można rozwiazać, uruchamiajac
system Linux na maszynie wieloprocesorowej tak, aby każda instancja pro-
gramu nas la
luchujacego pracowa na oddzielnym procesorze, co w dostepnych
warunkach laboratoryjnych by niemożliwe. Dodatkowym minusem podej-
lo
ścia opartego na programach uruchamianych przez użytkownika jest mniejsza
dok
ladność niż to możliwe w trybie jadra. Programy takie moga odczytać czas
systemowy z rozdzielczoÅ›cia 1µs(10-6), czyli znacznie mniej niż czestotliwość
taktowania wspó
lczesnych procesorów. Ograniczenie to narzucone jest przez
biblioteke standardowa jezyka C i zwiazane jest z postulatem przenośności
(na poziomie zród oprogramowania napisanego w jezyku C.
la)
61
5.3.2 Zasadność pomiarów w trybie jadra
Alternatywne podejście, czyli dokonanie pomiarów w trybie jadra, można
zrealizować na dwa sposoby. Pierwszym z nich jest zmodyfikowanie zróde ja-
l
dra i zapisanie zmian w stosunku do orygina w pliku latce (ang. patch).
lu
Korzystajac pózniej z tego pliku można szybko uzyskać zmodyfikowane jadra
z oryginalnego jadra. Drugim sposobem osiagniecia celu jest napisanie mo-
du jadra, który można za ladować dynamicznie w trakcie pracy
lu ladować i wy
systemu Linux. Modu taki może w trakcie ladowania przyjmować parametry
l
wywo podobnie jak zwyk program. Po za l
lania ly ladowaniu modu traktowany
jest jako integralna cześć jadra. Istotne jest również to, iż raz napisany mo-
du można używać z pózniejszymi wersjami systemu Linux. W przypadku
l
poprawek bezpośrednio w jadrze, można spodziewać sie konieczności ich mo-
dyfikacji, aby dostosować zmiany do nowszych wersji jadra.
Mierzac czasy nadejścia pakietów z poziomu jadra można uzyskać po-
miary z dok
ladnościa do pojedynczego cykniecia zegara procesora. Przy-
k
ladowo posiadajac ruter z procesorem o czestotliwości 1GHz, osiagamy
rozdzielczość czasu 1ns(10-9). Negatywnymi stronami omawianego podej-
ścia sa nieprzenośność oraz potencjalna niestabilność. Nieprzenośność wia że
sie z faktem, że odczyt czasu nastepuje z rejestru TSC, który wystepuje
w procesorach Intela od modelu Pentium. Nie jest to dużym problemem,
gdyż wszystkie obecnie dostepne na rynku procesory klasy x86 posiadaja
ten rejestr (zak że nie korzysta sie z innych architektur procesorów
ladam,
np. Alphy). Znacznie poważniejszym problemem jest niestabilność, wynika-
jaca z tego, że proces dzia w trybie jadra nie jest przez nie kontrolowany
lajacy
i może poprzez zapis lub odczyt spod niew
laściwego adresu w pamieci spo-
wodować niestabilność ca systemu operacyjnego z jego zawieszeniem sie
lego
w acznie. Utrudnia to testowanie modu w trakcie jego tworzenia, ale po
l lu
62
jego stworzeniu i przetestowaniu już nie odgrywa roli.
5.3.3 Opis przyjetego rozwiazania
Badania wchodzace w sk niniejszej pracy zosta wykonane w try-
lad ly
bie jadra. Zdecydowano sie na napisanie modu jadra. Rozwiazanie to
lu
jest bardziej elastyczne niż dokonanie zmian bezpośrednio w jadrze. Mo-
du po za
l ladowaniu wypisuje komunikaty, które moga być zapisywane
do pliku (np. /var/log/kernel.log) lub przekazywane kolejki FIFO
(np. /dev/xconsole), z ktorej moga być odczytywane przez inny proces
dzia lokalnie na ruterze lub inny proces zdalny.
lajacy
Dla każdego pakietu wchodzacego do rutera lub wychodzacego z niego
każdy wiersz wyglada nastepujaco:
data nazwa rutera kernel: kierunek: czas adres zród > adres docelowy flagi rozmiarB
lowy
Znaczenie poszczególnych kolumn jest nastepujace:
" data: czas wpisywany przez jadro (np. Jul 28 15:59:22)
" nazwa rutera: nazwa komputera, który jest ruterem (np. o387)
" kierunek: określenie, czy jest to pakiet wchodzacy (coming) czy wycho-
dzacy (leaving)
" czas: dok czas nadejścia pakietu mierzony w cyklach zegara (np.
ladny
18019375715228
" adres zród adres IP nadawcy pakietu wraz z numerem portu (np.
lowy:
157.158.181.131:35078)
" adres docelowy: adres IP adresata pakietu wraz z numerem portu (np.
157.158.1.3:22)
63
" flagi: ustawione w nag ówku TCP flagi (np. PA oznacza psh+ack)
l
" rozmiar: rozmiar datagramu (np. 40B)
Ca badań zosta wykonana z pomoca standardowego powszechnie
lość la
dostepnego oprogramowania:
" tcpdump - program do pods
luchiwania ruchu w sieci
" ProFTPD - serwer FTP
" lftp - klient FTP
" inetd - demon sieciowy wywo inne us i programy (us echo
lujacy lugi luga
w wersji dla TCP)
Standardowe oprogramowanie nie spe lo wszystkich potrzeb, wiec do-
lni
datkowo napisano program w jezyku C do wysy co określony odstep
lania
czasu spreparowanych przeze mnie pakietów TCP. Analiza plików z logami
wraz z obliczeniami przeprowadzone zosta dedykowanymi programami na-
ly
pisanymi w jezyku Perl.
5.4 Przewodnik po badaniach
5.4.1 Pomiar przepustowości lacza
Wykonano pomiary szybkości transferów miedzy komputerami. Pomiary
przeprowadzono zarówno w transmisjach z pośrednictwem rutera (rys. 5.2),
jak i w po aczeniach bezpośrednich (rys. 5.3), aby ocenić wp rutera
l lyw
na transmisje.
Wykonano dziesieciokrotnie pomiary szybkości transferów przy przesy
la-
niu pliku o wielkości 1MB, 10MB i 100MB z pomoca protoko FTP miedzy
lu
dwoma komputerami. Uśrednione wyniki znajduja sie w tab. 5.1.
64
Rysunek 5.2: Transmisja FTP przy po aczeniu przez ruter
l
Rysunek 5.3: Transmisja FTP przy po aczeniu bezpośrednim
l
Jedynie przy przesy pliki o wielkości 1MB ruter nieznacznie (w gra-
laniu
nicach 1%) opóznia transmisje. Natomiast już przy transmisji pliku 10MB
oraz 100MB wp rutera na szybkość transmisji jest pozytywny. Przyspie-
lyw
szenie transmisji po wprowadzeniu rutera wynika stad, że ruter zmniejsza
chwilowe przecia żenia transferu poprzez odpowiednie buforowanie przecho-
dzacych przez niego pakietów sieciowych wyg ruch w sieci.
ladza
5.4.2 Pomiar opóznienia przekazywania pakietów IP
Nastepnie przeprowadzono pomiary opóznień przekazywania pakietów IP
oraz ich zmienności (ang. jitter). Również te badania wykonano dla po aczeń
l
komputerów z pośrednictwem rutera i bez pośrednictwa rutera. Do celów
testowych wykorzystano us echo w wersji dla TCP udostepniana przez
luge
serwer sieciowy inetd. Us ta polega na odsy z powrotem tego samego
luga laniu
pakietu, który nadszed przed chwila. Jedynie adresy zród i docelowy
l lowy
65
Rozmiar pliku [MB] Po aczenie bezpośrednie [Bps] Po aczenie przez ruter [Bps]
l l
1 746956 742279
10 655519 754742
100 494265 633246
Tablica 5.1: Średnia przepustowość przy przesy plików FTP
laniu
zamieniane sa ze soba.
Pomiar polega na mierzeniu odstepów (interwa ów) czasowych pomiedzy
l l
wysy pakietami TCP o wielkości 1500B. Jako interwa czasowy rozu-
lanymi l
miany jest odstep czasu miedzy wys pakietu przez klienta (nadawca)
laniem
a odebraniem go przez serwer (odbiorca). Zosta on wykonany pieciusetkrot-
l
nie dla różnych po aczeń klienta z serwerem oraz rozmaitych zak óceń. Zak ó-
l l l
ceniami by dodatkowe transmisje FTP wielomegabajtowych ilości danych
ly
przechodzacych przez ten sam ruter oraz dodatkowe transmisje echo.
Transmisje bez dodatkowych zak óceń
l
Wykonano pomiary transmisji pakietów echo bez żadnych zak óceń przy
l
po aczeniu bezpośrednim (rys. 5.4) oraz przy po aczeniu przez ruter (rys. 5.5).
l l
Uśrednione wyniki znajduja sie w tab. 5.2 oraz 5.3.
Rysunek 5.4: Transmisja echo przy po aczeniu bezpośrednim
l
66
Rysunek 5.5: Transmisja echo przy po aczeniu przez ruter
l
Interwa czasowy wysy
l lania
Po aczenie [ms] [s] Minimum [s] Maximum [s] Åšredni [s]
l
1 0.001 0.014453 0.035257 0.019911
bezpośrednie 10 0.01 0.019675 0.038340 0.020025
100 0.1 0.105180 0.109024 0.108878
1000 1 0.996572 1.001076 1.000007
1 0.001 0.016039 0.019829 0.019761
przez ruter 10 0.01 0.017482 0.033624 0.019926
100 0.1 0.100863 0.108952 0.108834
1000 1 0.991690 1.000076 0.999958
Tablica 5.2: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta
Interwa czasowy wysy
l lania
Po aczenie [ms] [s] Minimum [s] Maximum [s] Åšredni [s]
l
1 0.001 0.000021 0.122739 0.011300
10 0.01 0.019648 0.038468 0.020027
bezpośrednie 100 0.1 0.105168 0.996607 0.117809
1000 1 0.999080 1.001169 1.000125
1 0.001 0.000051 0.019794 0.010154
10 0.01 0.017453 0.142897 0.021235
przez ruter 100 0.1 0.108858 0.991577 0.117936
1000 1 1.000063 1.000191 1.000125
Tablica 5.3: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera
67
Transmisje z dodatkowymi zak óceniami
l
Do dodatkowe zak ócenie w postaci pojedynczej transmisji FTP,
lożono l
po czym wykonano pomiary opóznień przekazywania pakietów. Sytuacja ta
przedstawiona jest na rys. 5.6. Uśrednione wyniki znajduja sie w tab. 5.4 oraz
5.5.
Rysunek 5.6: Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
pojedyncza transmisje FTP
68
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000024 0.047132 0.019770
20 0.02 0.000023 0.109642 0.029816
30 0.03 0.007641 0.109497 0.040255
40 0.04 0.017919 0.081215 0.049482
50 0.05 0.021742 0.088609 0.059322
60 0.06 0.048739 0.092343 0.069495
70 0.07 0.075660 0.242671 0.080857
80 0.08 0.085501 0.090296 0.089076
90 0.09 0.08715 0.092508 0.089113
100 0.1 0.104528 0.113302 0.108887
1000 1 0.999641 1.000083 1.000038
Tablica 5.4: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy jednej transmisji FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001221 0.060525 0.020193
20 0.02 0.001208 0.092241 0.029742
30 0.03 0.002783 0.098029 0.039981
40 0.04 0.009262 0.087140 0.049608
50 0.05 0.006832 0.090942 0.059125
60 0.06 0.031493 0.093195 0.069320
70 0.07 0.040101 0.243162 0.080680
80 0.08 0.059644 0.130754 0.089336
90 0.09 0.058208 0.118759 0.089049
100 0.1 0.076205 0.146214 0.108689
1000 1 0.966067 1.036311 1.000078
Tablica 5.5: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy jednej transmisji FTP
69
Do kolejne zak ócenie w postaci drugiej transmisji FTP, po czym
lożono l
wykonano pomiary opóznień przekazywania pakietów. Sytuacja ta przedsta-
wiona jest na rys. 5.7. Uśrednione wyniki znajduja sie w tab. 5.6 oraz 5.7.
Rysunek 5.7: Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
dwie transmisje FTP
70
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000020 0.135074 0.020964
20 0.02 0.000021 0.161962 0.030675
30 0.03 0.000021 0.186652 0.039930
40 0.04 0.000022 0.155015 0.049483
50 0.05 0.000023 0.130363 0.059711
60 0.06 0.000023 0.169308 0.069262
70 0.07 0.000023 0.211906 0.079205
80 0.08 0.072677 0.134711 0.089510
90 0.09 0.041039 0.148767 0.098977
100 0.1 0.048513 0.207868 0.109949
1000 1 0.995435 1.000142 0.999996
Tablica 5.6: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy dwóch transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001219 0.132987 0.021038
20 0.02 0.001240 0.148864 0.030129
30 0.03 0.001046 0.187965 0.039930
40 0.04 0.001424 0.148929 0.048757
50 0.05 0.001376 0.129185 0.059427
60 0.06 0.001376 0.169068 0.069036
70 0.07 0.001363 0.193549 0.078719
80 0.08 0.043899 0.128606 0.089456
90 0.09 0.016620 0.149602 0.099032
100 0.1 0.012277 0.226049 0.109876
1000 1 0.925434 1.063195 1.000212
Tablica 5.7: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy dwóch transmisjach FTP
71
Do dodatkowe zak ócenie w postaci trzeciej transmisji FTP, po
lożono l
czym wykonano pomiary opóznień przekazywania pakietów. Sytuacja ta
przedstawiona jest na rys. 5.8. Uśrednione wyniki znajduja sie w tab. 5.8
oraz 5.9.
Rysunek 5.8: Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
trzy transmisje FTP
72
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.232668 0.023340
20 0.02 0.000022 0.256349 0.033539
30 0.03 0.000022 0.199251 0.040567
40 0.04 0.000022 0.235794 0.049922
50 0.05 0.000023 0.119680 0.059364
60 0.06 0.000024 0.182089 0.069230
70 0.07 0.000023 0.255396 0.079957
80 0.08 0.000024 0.182322 0.089056
90 0.09 0.005904 0.191247 0.099005
100 0.1 0.000024 0.240286 0.109862
1000 1 0.991639 1.000129 0.999957
Tablica 5.8: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy trzech transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001053 0.232879 0.023613
20 0.02 0.001208 0.249911 0.033465
30 0.03 0.001028 0.207301 0.040671
40 0.04 0.001044 0.228850 0.049883
50 0.05 0.001406 0.120586 0.059943
60 0.06 0.001206 0.185317 0.069109
70 0.07 0.001220 0.254266 0.079760
80 0.08 0.001220 0.187819 0.089140
90 0.09 0.004323 0.194543 0.099391
100 0.1 0.001392 0.240055 0.109731
1000 1 0.939382 1.053048 0.999843
Tablica 5.9: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy trzech transmisjach FTP
73
Do dodatkowe zak ócenie w postaci czwartej transmisji FTP, po
lożono l
czym wykonano pomiary opóznień przekazywania pakietów. Sytuacja ta
przedstawiona jest na rys. 5.9. Uśrednione wyniki znajduja sie w tab. 5.10
oraz 5.11.
Rysunek 5.9: Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
cztery transmisje FTP
74
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000020 0.114798 0.006528
20 0.02 0.000021 0.114269 0.005555
30 0.03 0.000021 0.082949 0.003302
40 0.04 0.000020 0.082614 0.004843
50 0.05 0.000021 0.073251 0.008533
60 0.06 0.000021 0.072662 0.007106
70 0.07 0.000020 0.109462 0.004978
80 0.08 0.000020 0.143179 0.003893
90 0.09 0.000020 0.080411 0.004719
100 0.1 0.000020 4.911110 0.010326
1000 1 0.000020 0.087505 0.002912
Tablica 5.10: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy czterech transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.178015 0.022632
20 0.02 0.000022 0.219057 0.032522
30 0.03 0.000023 0.206526 0.040703
40 0.04 0.000020 6.495322 0.162033
50 0.05 0.000021 5.386366 0.153751
60 0.06 0.000022 0.225404 0.068525
70 0.07 0.077640 0.238317 0.080825
80 0.08 0.000023 0.244727 0.089026
90 0.09 0.031520 0.164517 0.098994
100 0.1 0.000022 13.355381 0.231340
1000 1 0.997739 1.000608 1.000017
Tablica 5.11: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy czterech transmisjach FTP
75
Powrócono do sytuacji bez transmisji FTP, ale do dodatkowe za-
lożono
k ócenie w postaci dodatkowej transmisji echo, po czym wykonano pomiary
l
opóznień przekazywania pakietów. Sytuacja ta przedstawiona jest na rys.
5.10. Uśrednione wyniki znajduja sie w tab. 5.12 oraz 5.13.
Rysunek 5.10: Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
druga transmisje echo
76
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.017988 0.019940 0.019784
20 0.02 0.029138 0.029732 0.029698
30 0.03 0.000024 0.290135 0.039589
40 0.04 0.048844 0.049546 0.049500
50 0.05 0.058531 0.059437 0.059400
60 0.06 0.068518 0.069328 0.069302
70 0.07 0.078329 0.079287 0.079202
80 0.08 0.084922 0.093304 0.089106
90 0.09 0.098163 0.099035 0.099005
100 0.1 0.107975 0.115925 0.109006
1000 1 0.999263 1.000068 1.000034
Tablica 5.12: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo
lej
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.017645 0.020376 0.019781
20 0.02 0.029099 0.029778 0.029700
30 0.03 0.001015 0.290531 0.039591
40 0.04 0.048828 0.049568 0.049504
50 0.05 0.058532 0.059475 0.059404
60 0.06 0.068472 0.069381 0.069307
70 0.07 0.078316 0.079317 0.079208
80 0.08 0.083390 0.094833 0.089111
90 0.09 0.098124 0.099445 0.099013
100 0.1 0.107885 0.115580 0.109014
1000 1 0.999300 1.000188 1.000116
Tablica 5.13: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo
lej
77
Do dodatkowe zak ócenie w postaci czterech transmisji FTP, po
lożono l
czym wykonano pomiary opóznień przekazywania pakietów. Sytuacja ta
przedstawiona jest na rys. 5.11. Uśrednione wyniki znajduja sie w tab. 5.14
oraz 5.15.
Rysunek 5.11: Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
druga transmisje echo oraz cztery transmisje FTP
78
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.107957 0.020479
20 0.02 0.000021 0.175317 0.030805
30 0.03 0.000023 0.234044 0.040552
40 0.04 0.000023 0.154487 0.049577
50 0.05 0.000023 0.142766 0.059421
60 0.06 0.000027 0.226315 0.069261
70 0.07 0.000029 0.168799 0.079191
80 0.08 0.000025 0.230867 0.089201
90 0.09 0.025794 0.171598 0.099111
100 0.1 0.083233 0.133768 0.108908
1000 1 0.991799 1.144377 1.001479
Tablica 5.14: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy pieciu równoleg transmisjach
lych
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000018 0.122161 0.020952
20 0.02 0.000018 0.216222 0.030725
30 0.03 0.001189 0.224939 0.040922
40 0.04 0.001202 0.210858 0.050777
50 0.05 0.001306 0.153896 0.059945
60 0.06 0.001300 0.219455 0.069420
70 0.07 0.001204 0.166524 0.079882
80 0.08 0.001404 0.291819 0.090090
90 0.09 0.035026 0.205485 0.099737
100 0.1 0.038219 0.182717 0.109556
1000 1 0.932953 1.137455 1.001810
Tablica 5.15: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy pieciu równoleg transmisjach
lych
79
Do dodatkowe zak ócenie w postaci dodatkowej transmisji echo oraz
lożono l
sześciu transmisji FTP, a nastepnie wykonano pomiary opóznień przekazywa-
nia pakietów. Sytuacja ta przedstawiona jest na rys. 5.12. Uśrednione wyniki
znajduja sie w tab. 5.16 oraz 5.17.
Rysunek 5.12: Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
druga transmisje echo oraz sześć transmisji FTP
80
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000023 0.193585 0.022773
20 0.02 0.000022 0.120375 0.021131
30 0.03 0.000023 0.185401 0.030935
40 0.04 0.000024 0.129402 0.039755
50 0.05 0.000026 0.141291 0.049530
60 0.06 0.000025 0.164876 0.059752
70 0.07 0.000025 0.152054 0.069258
80 0.08 0.029578 0.128873 0.079124
90 0.09 0.055432 0.120149 0.089086
100 0.1 0.095892 0.121997 0.108919
1000 1 0.991908 1.139237 1.001561
Tablica 5.16: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy siedmiu równoleg transmisjach
lych
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000855 0.114927 0.021378
20 0.02 0.001040 0.199910 0.031439
30 0.03 0.000968 0.120478 0.040150
40 0.04 0.001206 0.154312 0.050262
50 0.05 0.001218 0.186794 0.061117
60 0.06 0.001221 0.186878 0.070839
70 0.07 0.021498 0.147259 0.080603
80 0.08 0.023551 0.153349 0.090087
90 0.09 0.001419 0.174340 0.099845
100 0.1 0.066775 0.162005 0.110097
1000 1 0.823181 1.133839 1.002453
Tablica 5.17: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy siedmiu równoleg transmisjach
lych
81
Rozdzia 6
l
Badania wykonane
z w aczonymi mechanizmami
l
QoS
6.1 Cel badań
Badania polega na zmierzeniu wp różnych czynników (pośrednic-
ly lywu
two rutera w transmisji danych, transmisje FTP wykonywane w tle, druga
transmisja interaktywna wykonywana w tle) na opóznienia w przekazywaniu
pakietów IP (ang. jitter). Badania zosta przeprowadzone z wykorzystaniem
ly
stanowiska opisanego w rozdz. 5. Na badania te sk ly sie pomiary transmi-
lada
sji danych przez obcia żony ruter dzia z wykorzystaniem mechanizmów
lajacy
QoS. Celem tych badań by sprawdzenie, czy mechanizmy QoS moga przy-
lo
bliżyć opóznienia przekazywania pakietów przez obcia żony ruter do sytuacji,
gdy ruter nie jest obcia żony (badania opisane w rozdz. 5).
82
6.2 Badania z wykorzystaniem algorytmu
PRIO
Zmierzono opóznienia przekazywania pakietów w trakcie transmisji z wy-
korzystaniem algorytmu PRIO (podsekcja 3.1.2. Dodatkowym obcia żeniem
by jedna transmisja FTP. Sytuacja ta przedstawiona jest na rys. 6.1. Uśred-
la
nione wyniku tego pomiaru znajduja sie w tab. 6.1 oraz 6.2.
Rysunek 6.1: Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji FTP
83
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.085218 0.019830
100 0.1 0.095642 0.118764 0.108861
1000 1 0.993492 1.000253 0.999976
Tablica 6.1: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy jednej równoleg transmisji FTP
lej
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001048 0.080605 0.019849
100 0.1 0.068598 0.140607 0.108881
1000 1 0.964936 1.023353 0.999971
Tablica 6.2: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy jednej równoleg transmisji FTP
lej
84
Do dodatkowe zak ócenie w postaci dwóch transmisji FTP. Sytu-
lożono l
acja ta przedstawiona jest na rys. 6.2. Uśrednione wyniki pomiarów zamiesz-
czone sa w tab. 6.3 oraz 6.4.
Rysunek 6.2: Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowych dwóch transmisjach FTP
85
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.104263 0.020269
100 0.1 0.098339 0.143924 0.109166
1000 1 0.997552 1.000081 1.000017
Tablica 6.3: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy dwóch transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001161 0.099931 0.020403
100 0.1 0.059071 0.168140 0.109281
1000 1 0.926992 1.061800 1.000059
Tablica 6.4: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy dwóch transmisjach FTP
86
Do dodatkowe zak ócenie w postaci trzeciej transmisji FTP. Sytu-
lożono l
acja przedstawiona jest na rys. 6.3. Uśrednione wyniki znajduja sie w tab. 6.5
oraz 6.6.
Rysunek 6.3: Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowych trzech transmisjach FTP
87
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.188033 0.022894
100 0.1 0.036477 0.185305 0.108958
1000 1 0.996380 1.000065 1.000005
Tablica 6.5: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy trzech transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001134 0.185643 0.022971
100 0.1 0.028200 0.188852 0.109223
1000 1 0.903677 1.061431 1.000156
Tablica 6.6: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy trzech transmisjach FTP
88
Nastepnie do dodatkowe zak ócenie w postaci czwartej transmisji
lożone l
FTP. Sytuacja przedstawiona jest na rys. 6.4. Uśrednione wyniki znajduja
sie w tab. 6.7 oraz 6.8.
Rysunek 6.4: Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowych czterech transmisjach FTP
89
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000021 0.218573 0.023747
100 0.1 0.013985 0.210690 0.108876
1000 1 0.680404 1.962631 0.997492
Tablica 6.7: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy czterech transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001122 0.215318 0.024141
100 0.1 0.012561 0.208918 0.108853
1000 1 0.658787 2.084703 0.999470
Tablica 6.8: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy czterech transmisjach FTP
90
Do druga transmisje echo, a ilość transmisji FTP zmniejszono do
lożono
jednej, po czym zmierzono opóznienia przekazywania pakietów w trakcie
transmisji echo. Sytuacja ta przedstawiona jest na rys. 6.5. Uśrednione wy-
niku tego pomiaru znajduja sie w tab. 6.9 oraz 6.10.
Rysunek 6.5: Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji echo oraz czterech transmisjach FTP
91
Interwa czasowy wysy
l lania
y wysy [ms] Minimum [s] Maximum [s] Åšredni [s]
lania
10 0.002110 0.079778 0.019891
100 0.101385 0.143802 0.109178
1000 0.993947 1.000080 0.999981
Tablica 6.9: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i dodatkowej
lej
transmisji FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001178 0.088238 0.019891
100 0.1 0.082097 0.167983 0.109427
1000 1 0.962866 1.034299 1.000222
Tablica 6.10: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy przy równoleg transmisji echo oraz jednej
lej
transmisji FTP
92
Do druga transmisje FTP, po czym zmierzono opóznienia przekazy-
lożono
wania pakietów w trakcie transmisji echo. Sytuacja ta przedstawiona jest na
rys. 6.6. Uśrednione wyniku tego pomiaru znajduja sie w tab. 6.11 oraz 6.12.
Rysunek 6.6: Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji echo oraz dwóch transmisjach FTP
93
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000021 0.115227 0.020546
100 0.1 0.090363 0.151436 0.109167
1000 1 0.996179 1.000073 1.000003
Tablica 6.11: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i dwóch trans-
lej
misjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001122 0.115419 0.020745
100 0.1 0.065040 0.161493 0.109154
1000 1 0.935454 1.043528 0.999929
Tablica 6.12: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony serwera przy równoleg transmisji echo i dwóch
lej
transmisjach FTP
94
Do trzecia transmisje FTP, po czym zmierzono opóznienia prze-
lożono
kazywania pakietów w trakcie transmisji echo. Sytuacja ta przedstawiona
jest na rys. 6.7. Uśrednione wyniku tego pomiaru znajduja sie w tab. 6.13
oraz 6.14.
Rysunek 6.7: Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji echo oraz trzech transmisjach FTP
95
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.206477 0.023548
100 0.1 0.046517 0.206947 0.109546
1000 1 0.995205 1.000082 0.999993
Tablica 6.13: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i trzech transmi-
lej
sjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001143 0.208647 0.023670
100 0.1 0.029283 0.211722 0.109484
1000 1 0.914671 1.058482 1.000026
Tablica 6.14: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony serwera przy równoleg transmisji echo i trzech
lej
transmisjach FTP
96
Do czwarta transmisje echo, po czym zmierzono opóznienia prze-
lożono
kazywania pakietów w trakcie transmisji echo. Sytuacja ta przedstawiona
jest na rys. 6.8. Uśrednione wyniku tego pomiaru znajduja sie w tab. 6.15
oraz 6.16.
Rysunek 6.8: Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji echo oraz czterech transmisjach FTP
97
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.220649 0.024257
100 0.1 0.046553 0.179133 0.108981
1000 1 0.996028 1.000541 1.000002
Tablica 6.15: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony klienta przy równoleg transmisji echo i czterech
lej
transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001087 0.221625 0.024353
100 0.1 0.019623 0.200774 0.108968
1000 1 0.917508 1.067277 0.999907
Tablica 6.16: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony serwera przy równoleg transmisji echo i czterech
lej
transmisjach FTP
98
6.3 Badania wykonane z wykorzystaniem al-
gorytmu TBF
Zmierzono opóznienia przekazywania pakietów w trakcie transmisji z
wykorzystaniem algorytmu kolejkowania TBF (podsekcja 3.1.3). Algorytm
ten wykorzystany by do kszta
l ltowania ruchu pakietów generowanego przez
transfery FTP.
Zaczeto od zak ócenia w postaci drugiej transmisji echo oraz jednej trans-
l
misji FTP. Sytuacja przedstawiona jest na rys. 6.9. Uśrednione wyniki zgro-
madzone sa w tab. 6.17 oraz 6.18
Rysunek 6.9: Transmisja echo z wykorzystaniem algorytmu TBF przy dodat-
kowej transmisji echo oraz jednej transmisji FTP
99
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000021 0.105156 0.020503
100 0.1 0.098810 0.138890 0.109117
1000 1 0.994620 1.20087 1.002092
Tablica 6.17: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i jednej transmisji
lej
FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001227 0.124556 0.024230
100 0.1 0.053717 0.202963 0.128995
1000 1 1.108759 1.475996 1.184452
Tablica 6.18: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony serwera przy równoleg transmisji echo i jednej
lej
transmisji FTP
100
Do zak ócenie w postaci drugiej transmisji FTP. Sytuacja ta przed-
lożono l
stawiona jest na rys. 6.10. Uśrednione wyniki zgromadzone sa w tab. 6.19
oraz 6.20
Rysunek 6.10: Transmisja echo z wykorzystaniem algorytmu TBF przy do-
datkowej transmisji echo oraz dwóch transmisjach FTP
101
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000022 0.259524 0.025290
100 0.1 0.000023 0.292046 0.108864
1000 1 0.994255 1.000575 0.999985
Tablica 6.19: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i dwóch trans-
lej
misjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001025 0.306166 0.029955
100 0.1 0.001168 0.343795 0.128711
1000 1 1.057435 1.291630 1.182050
Tablica 6.20: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony serwera przy równoleg transmisji echo i dwóch
lej
transmisjach FTP
102
Nastepnie do zak ócenia w postaci dodatkowych czterech transmisji
lożono l
FTP. Sytuacja przedstawiona jest na rys. 6.11. Uśrednione wyniki zgroma-
dzone sa w tab. 6.21 oraz 6.22
Rysunek 6.11: Transmisja echo z wykorzystaniem algorytmu TBF przy do-
datkowej transmisji echo oraz sześciu transmisjach FTP
103
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000021 0.494902 0.047233
100 0.1 0.000023 1.177996 0.126182
1000 1 0.307809 1.970862 1.013642
Tablica 6.21: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony klienta przy równoleg transmisji echo i sześciu
lej
transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000952 4.737959 0.656889
100 0.1 0.000462 4.982930 0.564265
1000 1 0.000026 4.809246 0.467232
Tablica 6.22: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony serwera przy równoleg transmisji echo i sześciu
lej
transmisjach FTP
104
6.4 Badania wykonane z wykorzystaniem al-
gorytmu RED
Zmierzono opóznienia przekazywania pakietów w trakcie transmisji z wy-
korzystaniem algorytmu kolejkowania RED (subsec 3.1.5). Algorytm ten wy-
korzystany by do regulowania ruchu pakietów generowany w trakcie trans-
l
misji FTP.
Zaczeto od zak ócenia w postaci drugiej transmisji echo oraz dwóch trans-
l
misji FTP. Sytuacja przedstawiona jest na rys. 6.12. Uśrednione wyniki
zgromadzone sa w tab. 6.23 oraz 6.24
Rysunek 6.12: Transmisja echo z wykorzystaniem algorytmu RED przy do-
datkowej transmisji echo oraz dwóch transmisjach FTP
105
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.002406 0.082508 0.020263
100 0.1 0.097322 0.218592 0.110006
1000 1 0.994988 1.000105 0.999991
Tablica 6.23: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony klienta przy równoleg transmisji echo oraz dwóch
lej
transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001497 0.089278 0.020592
100 0.1 0.044788 0.224570 0.109986
1000 1 0.929579 1.060968 0.999865
Tablica 6.24: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony serwera przy równoleg transmisji echo oraz dwóch
lej
transmisjach FTP
106
Do zak ócenie w postaci dodatkowych czterech transmisji FTP. Sy-
lożono l
tuacja przedstawiona jest na rys. 6.13. Uśrednione wyniki zgromadzone sa w
tab. 6.25 oraz 6.26
Rysunek 6.13: Transmisja echo z wykorzystaniem algorytmu RED przy do-
datkowej transmisji echo oraz sześciu transmisjach FTP
107
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.000021 0.272974 0.025631
100 0.1 0.019175 0.239059 0.108855
1000 1 0.997353 1.000765 1.000016
Tablica 6.25: Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony klienta przy równoleg transmisji echo oraz sześciu
lej
transmisjach FTP
Interwa czasowy wysy
l lania
[ms] [s] Minimum [s] Maximum [s] Åšredni [s]
10 0.01 0.001176 0.266241 0.025317
100 0.1 0.013522 0.254707 0.109323
1000 1 0.878032 1.104671 1.000324
Tablica 6.26: Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo oraz sześciu
lej
transmisjach FTP
108
Rozdzia 7
l
Podsumowanie oraz wnioski
Analiza wyników
Na pierwszy rzut oka można już zauważyć, że wyniki badań opóznień
przekazywania pakietów IP przy wysy pakietów co 1ms (tab. 5.2) sa
laniu
bardzo zbliżone do wyników osiagnietych przez wysy pakietów co 10ms
lanie
(tab. 5.2). Wynika to z tego, że na potrzeby jadra Linuksa czas mierzony
jest w kwantach czasu (ang. jiffies). Na platformie Intela x86 jednostka ta
równa sie 10ms. Wynika z tego, że pakiety można wysy bez kontroli cza-
lać
sowej ( najlepszy wysi [4]) lub w odstepach 10ms, badz wielokrotnościach
lek
10ms. Dlatego też w dalszych pomiarach zaniechano wysy pakietów co
lania
1ms. Dodatkowo można zauważyć, że podobnie jak w przypadku transferów
wiekszych ilości danych z pomoca FTP (tab. 5.1), nawet transmisje nie-
wielkich ilości danych przez ruter sa bardziej p niż te same transmisje
lynne
bezpośrednie (tab. 5.2 oraz 5.3).
Zmierzono opóznienia zachodzace w transmisji echo przy równoczesnym
transferze FTP przechodzacym przez ten sam ruter. Z wyników tych pomia-
rów można wyciagna ć nastepujace wnioski:
109
" Przy interwa czasowych wysy pakietów mniejszych od 100ms
lach lania
pojawiaja sie wartości mniejsze od zamierzonych. Wynika to ze spo-
sobu w jaki ruter obs pakiety TCP, tzn. jeśli pakiety nie zostaja
luguje
wys na czas z powodu przecia żenia, to pózniej wysy sa szybciej,
lane lane
aby średnie opóznienie mieści sie w wymaganych granicach. Takie za-
lo
chowanie rutera można zaobserwować dla interwa ów od 10ms do 60ms
l
(tab. 5.4).
" Wyg
ladzanie ruchu (uśrednianie opóznień przekazywania pakietów)
można zaobserwować g ównie dla interwa ów czasowych 100ms 1s (tab.
l l
6.15. Wynika to z faktu, że jadro Linuksa na potrzeby w odmierza
lasne
czas jako wielokrotność jednostki równej 10ms.
" Prosty algorytm kolejkowania PRIO (opis w podsekcji 3.1.2 a wyniki w
tab. 6.15 i tab. 6.16) dla naszego przypadku okaza sie porównywalnie
l
skuteczny jak algorytmy TBF (opis w podsekcji 3.1.3 a wyniki w tab.
6.21 oraz 6.22) oraz RED (opis w podsekcji 3.1.5 a wyniki w tab. 6.25
i tab. 6.26).
Każdy z użytych algorytmów ma swoje mocne i s strony, dlatego też
labe
dla każdego istnieja zastosowania w których może sprawować sie lepiej od
pozosta
lych:
" Algorytm kolejkowania PRIO (podsekcja 3.1.2) nadaje sie do prostej
klasyfikacji ruchu na kilka klas ruchu wed priorytetów ważności (ruch
lug
o najwyższym priorytecie powinien być obs
lugiwany w pierwszej ko-
lejności). Jako kryterium klasyfikacji wystarczy zastosować bity pola
TOS.
" Algorytm kolejkowania TBF (podsekcja 3.1.3) sprawdza sie w roli czyn-
nika kszta lumiacego) ruch. Pozwala on na zapobieżenie za-
ltujacego (t
110
g
lodzenia klas ruchu o niższym priorytecie przez klasy ruchu o wyż-
szym priorytecie.
" Algorytm kolejkowania RED (podsekcja 3.1.5) umożliwia stopniowe re-
gulowanie ruchu wchodzacego. Wykonuje to bardziej elastycznie niż
standardowe mechanizmy protoko TCP. Umożliwia również bardziej
lu
efektywne wykorzystanie dostepnej przepustowości pasma, warunkowo
przepuszczajac cześć nadmiarowych pakietów IP zamiast ich bezwa-
runkowego odrzucania.
Linux stale sie rozwija i w przysz do oficjalnej wersji jadra moga
lości
wejść dwa opracowane i przetestowane algorytmy, które na razie dostepne sa
w postaci laty na jadro.
Pierwszym z nich jest algorytm kolejkowania HTB (ang. Hierarchical To-
ken Bucket). Jest to elastyczny algorytm klasowy o zastosowaniach zbieżnych
z zastosowaniami algorytmu kolejkowania CBQ (podsekcja 3.1.6). W porów-
naniu z algorytmem CBQ jest bardziej precyzyjny w podziale przepustowo-
ści na klasy ruchu. Poza tym konfiguracja tego algorytmu jest prostsza, gdyż
nie wymaga on ustawiania kilkunastu parametrów konfiguracyjnych tak jak
CBQ, a jedynie kilku.
Drugim algorytmem kolejkowania, który w przysz czasie może stać sie
lości
cześcia oficjalnej ga ezi jadra, jest WRR (ang. Weighted Round-Robin). Algo-
l
rytm ten jest uogólniona wersja klasycznego algorytmu cyklicznego round-
robin . Modyfikacja w stosunku do pierwowzoru polega na przypisaniu każdej
z klas ruchu, która algorytm ten obs innej wagi. W zależności od przy-
luguje,
pisanej klasie wagi, pakietu moga być cześciej pobierane do wys z tej
lania
klasy (wyższa waga klasy) lub rzadziej pobierane do wysy (niższa waga
lania
klasy). Algorytm ten umożliwia w prosty sposób faworyzowanie wybrany
transmisji pakietów (np. wed adresów IP nadawcy i adresata).
lug
111
Niniejsza praca obejmuje swym zakresem tylko cześć zagadnienia tytu-
lościowe odzwierciedlenie stanu implementacji mechani-
lowego. Bardziej ca
zmów QoS w systemie Linux wymaga
loby:
1. poszerzenia zestawu badań
2. powtórzenia wszystkich badań na innych platformach sprzetowych
Poszerzenie zestawu badań wymaga zdefiniowania dodatkowych
loby
transmisji po aczeń, które zosta zmierzone. Szczególnie ciekawe by
l lyby loby
bardziej rygorystyczne skonfigurowanie mechanizmów kszta
ltowania ruchu
równolegle ze stworzeniem rozbudowanej hierarchii klas ruchu . Wykorzy-
stane do tego moga być algorytmy TBF (podsekcja 3.1.3) oraz CBQ (pod-
sekcja 3.1.6). Ciekawe może być również sprawdzenie skalowalności rozwia-
zań QoS poprzez zwiekszenie ilości komputerów i po aczeń miedzy nimi, czyli
l
rozbudowe stanowiska badawczego.
Równie interesujace by powtórzenie wszystkich badań na ca
loby lkowicie
innym stanowisku badawczym. Należa w tym celu zmienić komputer pe
loby l-
niacy role rutera programowego na szybszy. Najwiekszy wp w tym przy-
lyw
padku da zmiana procesora na szybszy. W ten sposób obs wewnetrz-
laby luga
nych mechanizmów czasowych sterujacych QoS mog być szybsza [1]. Dla
laby
uzyskania pe obrazu wydajności implementacji QoS w systemie Linux
lnego
dobrze by jako ruter programowy użyć komputera zbudowanego w opar-
loby
cie o inna platforme sprzetowa niż Intel x86. Można w tym celu skorzystać z
1
platformy Alpha, na której kwant czasu jadra wynosi s (dla porównania
1024
1
na platformie Intel x86 wynosi s).
10
112
Bibliografia
[1] yród Linuksa w wersji2.4.18, 2002
la
[2] yród pakietu iproute w wersji z dnia24.8.2001, 2001
la
[3] Podreczniki systemowe dla Linuksa, 2002
[4] G. Armitage: Quality Of Service In IP Networks Foundations for a
Multi-Service Internet , Macmillan Technical Publishing USA, 2000
[5] P. Krawczyk: Sterowanie przep danych w Linuxie 2.2 , 2001
lywem
[6] Linux Advanced Routing & Traffic Control HOWTO , 2001
[7] J. Wroclawski The Use of RSVP with IETF Integrated Services , RFC
2210, wrzesień 1997
[8] RSVP daemon , sierpień 1998
[9] Internet Protocol Darpa Internet Program Protocol Specification , STD
5, wrzesień 1981
[10] S. Deering, R. Hinden Internet Protocol, Version 6 (IPv6) Specifica-
tion , RFC 2460, grudzień 1998
[11] Transmission Control Protocol Darpa Internet Program Protocol Speci-
fication , STD 7, sierpień 1981
113
[12] Definition of the Differentiated Services Field (DS Field) in the IPv4
and IPv6 Headers , RFC 2474, grudzień 1998
[13] An Architecture for Differentiated Services , RFC 2475, grudzień 1998
[14] R. Braden, D. Clark, S. Shenker Integrated Services in the Internet
Architecture: and Overview , RFC 1633, czerwiec 1994
[15] Per Hop Behavior Identification Codes , RFC 3140, czerwiec 2001
[16] Assured Forwarding PHB Group , RFC 2597, czerwiec 1999
[17] An Expedited Forwarding PHB (Per-Hop Behavior , RFC 3246, marzec
2002
[18] Supplemental Information for the New Definition of the EF PHB
(Expedited Forwarding Per-Hop Behavior , RFC 3247, marzec 2002
[19] S. Shenker, C. Patridge, R. Guerin Specification of Guaranteed Quality
of Service , RFC 2212, wrzesień 1997
[20] J. Wroclawski Specification of the Controlled-Load Network Element
Service , RFC 2211, wrzesień 1997
[21] S. Floyd, V. Jacobson Random Early Detection Gateways for Conge-
stion Avoidance , sierpień 1993
[22] David D. Clark, Scott Shenker, L. Zhang Supporting Real-Time Ap-
plications in an Integrated Services Packet Network: Architecture and
Mechanism , 1992
[23] Jon C.R. Bennett, Hui Zhang Hierarchical Packet Fair Queueing Algo-
rithms , pazdziernik 1996
114
[24] S. Floyd, V. Jacobson Link-sharing and Resource Management Models
for Packet Networks , sierpień 1995
[25] S. Floyd Notes on Class-Based Queuing: Setting Parameters , luty 1996
[26] S. Floyd Notes on CBQ and Guaranteed Service , lipiec 1995
[27] L. Berger, T. O Malley RSVP Extensions for IPSEC Data Flows , RFC
2207, wrzesień 1997
[28] V. Johnson Technology Backgrounder Quality of Service Glossary
of Terms , 1999
115
Spis rysunków
2.1 Protokó rezerwacji (RSVP) . . . . . . . . . . . . . . . . . . . 11
l
2.2 Architektura DiffServ . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Nag ówek pakietu IPv4 . . . . . . . . . . . . . . . . . . . . . . 13
l
2.4 Nag ówek pakietu IPv6 . . . . . . . . . . . . . . . . . . . . . . 15
l
2.5 Nag ówek pakietu TCP . . . . . . . . . . . . . . . . . . . . . . 16
l
2.6 Droga pakietu w ruterze . . . . . . . . . . . . . . . . . . . . . 18
3.1 Algorytmy kolejkowania FIFO . . . . . . . . . . . . . . . . . . 22
3.2 Algorytm kolejkowania TBF . . . . . . . . . . . . . . . . . . . 25
3.3 Algorytm kolejkowania SFQ . . . . . . . . . . . . . . . . . . . 29
3.4 Algorytm kolejkowania GRED . . . . . . . . . . . . . . . . . . 33
3.5 Algorytm kolejkowania CBQ . . . . . . . . . . . . . . . . . . . 34
3.6 Algorytm kolejkowania DSMARK . . . . . . . . . . . . . . . . 37
3.7 Algorytm kolejkowania CSZ . . . . . . . . . . . . . . . . . . . 39
3.8 Przyk hierarchia klas . . . . . . . . . . . . . . . . . . . 48
ladowa
5.1 Stanowisko badawcze . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 Transmisja FTP przy po aczeniu przez ruter . . . . . . . . . . 65
l
5.3 Transmisja FTP przy po aczeniu bezpośrednim . . . . . . . . 65
l
5.4 Transmisja echo przy po aczeniu bezpośrednim . . . . . . . . . 66
l
5.5 Transmisja echo przy po aczeniu przez ruter . . . . . . . . . . 67
l
116
5.6 Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
pojedyncza transmisje FTP . . . . . . . . . . . . . . . . . . . 68
5.7 Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
dwie transmisje FTP . . . . . . . . . . . . . . . . . . . . . . . 70
5.8 Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
trzy transmisje FTP . . . . . . . . . . . . . . . . . . . . . . . 72
5.9 Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
cztery transmisje FTP . . . . . . . . . . . . . . . . . . . . . . 74
5.10 Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
druga transmisje echo . . . . . . . . . . . . . . . . . . . . . . . 76
5.11 Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
druga transmisje echo oraz cztery transmisje FTP . . . . . . . 78
5.12 Transmisja echo przy po aczeniu przez ruter zak ócana przez
l l
druga transmisje echo oraz sześć transmisji FTP . . . . . . . . 80
6.1 Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji FTP . . . . . . . . . . . . . . . . . . . . . 83
6.2 Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowych dwóch transmisjach FTP . . . . . . . . . . . . . . 85
6.3 Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowych trzech transmisjach FTP . . . . . . . . . . . . . . . 87
6.4 Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowych czterech transmisjach FTP . . . . . . . . . . . . . 89
6.5 Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji echo oraz czterech transmisjach FTP . . . 91
6.6 Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji echo oraz dwóch transmisjach FTP . . . . 93
117
6.7 Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji echo oraz trzech transmisjach FTP . . . . 95
6.8 Transmisja echo z wykorzystaniem algorytmu PRIO przy do-
datkowej transmisji echo oraz czterech transmisjach FTP . . . 97
6.9 Transmisja echo z wykorzystaniem algorytmu TBF przy do-
datkowej transmisji echo oraz jednej transmisji FTP . . . . . . 99
6.10 Transmisja echo z wykorzystaniem algorytmu TBF przy do-
datkowej transmisji echo oraz dwóch transmisjach FTP . . . . 101
6.11 Transmisja echo z wykorzystaniem algorytmu TBF przy do-
datkowej transmisji echo oraz sześciu transmisjach FTP . . . . 103
6.12 Transmisja echo z wykorzystaniem algorytmu RED przy do-
datkowej transmisji echo oraz dwóch transmisjach FTP . . . . 105
6.13 Transmisja echo z wykorzystaniem algorytmu RED przy do-
datkowej transmisji echo oraz sześciu transmisjach FTP . . . . 107
118
Spis tablic
5.1 Średnia przepustowość przy przesy plików FTP . . . . . . 66
laniu
5.2 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta . . . . . . . . . . . . . . . . . . . . 67
5.3 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera . . . . . . . . . . . . . . . . . . . . 67
5.4 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy jednej transmisji FTP . . . . 69
5.5 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy jednej transmisji FTP . . . . 69
5.6 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy dwóch transmisjach FTP . . . 71
5.7 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy dwóch transmisjach FTP . . 71
5.8 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy trzech transmisjach FTP . . . 73
5.9 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy trzech transmisjach FTP . . 73
5.10 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy czterech transmisjach FTP . . 75
119
5.11 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy czterech transmisjach FTP . 75
5.12 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo . . 77
lej
5.13 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo . 77
lej
5.14 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy pieciu równoleg transmisjach 79
lych
5.15 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy pieciu równoleg transmi-
lych
sjach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.16 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy siedmiu równoleg trans-
lych
misjach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.17 Pomiary transmisji dla us echo miedzy klientem i serwe-
lugi
rem mierzone od strony serwera przy siedmiu równoleg
lych
transmisjach . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.1 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy jednej równoleg transmisji
lej
FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.2 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy jednej równoleg transmisji
lej
FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.3 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy dwóch transmisjach FTP . . . 86
6.4 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy dwóch transmisjach FTP . . 86
120
6.5 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy trzech transmisjach FTP . . . 88
6.6 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy trzech transmisjach FTP . . 88
6.7 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy czterech transmisjach FTP . . 90
6.8 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy czterech transmisjach FTP . 90
6.9 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i
lej
dodatkowej transmisji FTP . . . . . . . . . . . . . . . . . . . 92
6.10 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy przy równoleg transmisji
lej
echo oraz jednej transmisji FTP . . . . . . . . . . . . . . . . . 92
6.11 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i
lej
dwóch transmisjach FTP . . . . . . . . . . . . . . . . . . . . . 94
6.12 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo i
lej
dwóch transmisjach FTP . . . . . . . . . . . . . . . . . . . . . 94
6.13 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i
lej
trzech transmisjach FTP . . . . . . . . . . . . . . . . . . . . . 96
6.14 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo i
lej
trzech transmisjach FTP . . . . . . . . . . . . . . . . . . . . . 96
121
6.15 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i
lej
czterech transmisjach FTP . . . . . . . . . . . . . . . . . . . . 98
6.16 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo i
lej
czterech transmisjach FTP . . . . . . . . . . . . . . . . . . . . 98
6.17 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i
lej
jednej transmisji FTP . . . . . . . . . . . . . . . . . . . . . . 100
6.18 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo i
lej
jednej transmisji FTP . . . . . . . . . . . . . . . . . . . . . . 100
6.19 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i
lej
dwóch transmisjach FTP . . . . . . . . . . . . . . . . . . . . . 102
6.20 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo i
lej
dwóch transmisjach FTP . . . . . . . . . . . . . . . . . . . . . 102
6.21 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo i
lej
sześciu transmisjach FTP . . . . . . . . . . . . . . . . . . . . 104
6.22 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo i
lej
sześciu transmisjach FTP . . . . . . . . . . . . . . . . . . . . 104
6.23 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo
lej
oraz dwóch transmisjach FTP . . . . . . . . . . . . . . . . . . 106
122
6.24 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo
lej
oraz dwóch transmisjach FTP . . . . . . . . . . . . . . . . . . 106
6.25 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony klienta przy równoleg transmisji echo
lej
oraz sześciu transmisjach FTP . . . . . . . . . . . . . . . . . . 108
6.26 Pomiary transmisji dla us echo miedzy klientem i serwerem
lugi
mierzone od strony serwera przy równoleg transmisji echo
lej
oraz sześciu transmisjach FTP . . . . . . . . . . . . . . . . . . 108
123
Wyszukiwarka
Podobne podstrony:
Dynamiczny przydział pasma użytkownika sieci z wykorzystaniem usługi QoS w systemie Linux (2)Laboratorium 11 5 5 Dokumentowanie sieci z wykorzystaniem polece us ugowychIe 14 (E 36) Instrukcja o organizacji i użytkowaniu sieci radiotelefonicznychw03 UZYTKOWNIK SIECI KOMPUTEROWYCHKancelaria zdobyła dane 50 tys użytkowników sieci Orange i domaga się od internautów po 750 zł10 Dynamiczne przydzielanie pamieci05 Dynamiczne przydzielanie pamięci311[15] Z2 06 Użytkowanie sieci i urządzeń elektrycznych w wyrobiskachDynamiczne przydzielanie pamięci metodą stref nieprzesuwalnychJak dostać się do dysku innego komputera w sieci wykorzystuji(bitnova info)Konfigurowanie systemu Linux do pracy w sieci IPjak dlugo przetrwa w sieci komputer z nowo zainstalowanym systemem windowsWykorzystanie formatu SVG w systemach informacji przestrzennejwykorzystanie urządzeń energoelektronicznych w systemie elektroenergetycznymwięcej podobnych podstron