Klasifikácia sieťového prenosu
Štefan Miklošovič, miklosovic@gmail.com
Obsah
Teória
Úvod
Internet bol vybudovaný s cieľom poskytnúť prenosovú službu,
bez zabezpečenia parametrov spojenia, ako je napríklad doručenie
paketov do určitej doby (s minimalizáciou oneskorenia spôsobeného
prenosom v sieti) prípadne zabezpečenia predom definovanej šírky pásma
po celú dobu trvania prenosu a podobne. Pritom v dnešných sieťach je stále
častejšie potrebné rozlišovať rôzne požiadavky na kvalitu služieb, tzv. QoS.
QoS
QoS je skratka pre Quality of Service. Je definovaná ako výsledok výkonnosti služby,
ktorá určuje stupeň spokojnosti užívateľa. Pojem ako "spokojnosť užívateľa" je
dosť ťažko definovateľný. Kvalita služby v IP sieťach charakterizuje
výkonnosť toku paketov jednou alebo viacerými sieťami. Snahou je doručiť
pakety medzi koncovými užívateľmi podľa určitých kritérii. Už v dobe zrodu
Internetu sa definovali pravidlá:
žiadnemu typu sieťovej prevádzky nebude odmietnutý prístup do siete
s akýmkoľvek sieťovým prenosom sa bude zaobchádzať rovnako
jediná garancia pre určitý sieťový prenos bude, že z celkového
hladiska bude prenesený čo najlepším spôsobom, tzv. Best Effort, samozrejme
v závislosti na dostupných prostriedkoch. V praxi to znamená, že nebude umelo
dochádzať k oneskoreniu alebo ku stratám paketov.
Tieto zásady sú z dnešného poľadu prekonané a sú prežitkom. Existujú rôzne
typy sieťového prenosu, ktorých aplikácie požadujú pre svoj korektný
beh kvalitatívne rôzne požiadavky. Napríklad IP telefónia, multimediálne prenosy,
videokonferencie a komunikácia interkatívneho charakteru.
Triedy služieb
Sieťový prenos sa kategorizuje do tried. Kategorizácia sa deje pomocou
tzv. Behavior Aggregate a MultiField. Pre sieťový prenos sú
bežne definované nasledujúce triedy:
| Typ služby | |
Best effort | Real-time | Business |
www | IP telefónia | www |
komunikačné programy (icq,msn,aim,irc ... ) | on-line web kamery | vzdialená správa pc (vnc ...) |
e-mail | on-line TV | |
ftp,p2p | | |
Základné parametre prenosu
Kvalita služby je ovplyvnená kombináciou rôznych parametrov:
strata paketov - súvisí so spoľahlivosťou
aplikácie pracujúce v reálnom čase používajú nespoľahlivý transportný
protokol UDP, tieto aplikácie sú citlivejšie na stratu paketov, pretože
nemajú mechanizmus na opätovné vysielanie paketov a to preto, lebo je
neskoršie poslanie paketu vzhľadom na povahu služby zbytočné
oneskorenie - súvisí so šírkou pásma
prípravou paketov na prenos, oneskorením pri prenose, čakaním vo fronte na vybavenie
kolísanie (jitter) - súvisí s oneskorením
šírka pásma - jedná sa o kapacitu spoja, udáva sa v kbps
Implementácia QoS
Ku otázke QoS môžeme pristupovať troma spôsobmi:
TOS smerovanie
Jedná sa o smerovanie podľa poľa TOS (type of service) v protokole IP. Aj keď toto pole bolo v
protokole implementované, prvé implementácie QoS sa snažili len doručiť paket a o kvalitu sa
príliš nezaujímali. Na TOS sa používa prvých 5 bitov poľa, kde sa určuje priorita a typ služby.
Tieto hodnoty by mali nastavovať koncoví užívateľia. Požiadavky na užívateľov sú popísané v
RFC 1122,
1123.
TOS smerovanie sapoužíva v protokoloch IS-IS, Intra-domain Routing protocol a OSPF.
Integrované služby
U integrovaných služieb aplikácia oznámi počítačovej sieti
svoje požiadavky na prenos dát, takze definuje vlastnosti, ktoré
by mali byť pri prenose paketu dodržané. Sieť overí, či môže aplikácii
vyhovieť. Ak sa jej nedá vyhovieť, aplikácie môže požiadať o nižšie
priradenie QoS. Ak sieť vyhovie aplikácii, o tomto rozhodnutí musí
informovať všetky sieťové komponenty, napríklad smerovače v
uzloch siete, cez ktoré bude prebiehať spojenie, aby mohli rezervovať
zodpovedajúci objem prostriedkov (šírka pásma, vyrovnávacia pamäť ...).
Na tento účel slúži protokol RSVP
(Resource reSerVation Protocol). Nie je vhodný pre použitie v Internete, pretože jeho veľkou
nevýhodou je potrebná časová réžia a zvýšené nároky na smerovače.
Diferencované služby
Tento prístup ku QoS umožňuje "diskrimináciu" služieb v Internete bez
nutnosti udržovať stavové informácie o každom prúde. Používa TOS v protokole IP.
Tieto položky nastavujú hraničné smerovače a podľa toho ich potom vnútorné
smerovače smerujú. Sieť musí vedieť, čo má robiť s paketmi s určitou prioritou.
To zaručuje tzv. PHB (Per Hop Behaviour). Existujú dva typy PHB.
- AF - Assured Forwarding - pakety sú rozdelené do tried a paket v danej
triede má prednosť pred zahodením
- EF - Expedited Forwarding - minimalizuje oneskorenie a rozptyl do výšky
prevádzkovej kapacity, zvyšok je zahodený.
Hlavný rozdiel medzi integrovanými a diferencovanými službami je ten,
že integrované služby zaisťujú požadovanú kvalitu pre konkrétny užívateľský
prúd dát, kdežto diferencované služby naopak globálne znevýhodňujú dané
triedy prúdov dát, takže môžeme povedať, že integrované služby sa
správajú ako dynamické, ale diferencované služby sa správajú ako statické.
Obmedzovanie šírky pásma
Najjednoduchším prístupom, ako sa vyhnúť zahlteniu linky, je pakety proste zahodiť. Toto ale
nie je vo všeobecnosti dobrý prístup, pretože to vedie k nežiadúcim efektom najmä pri
spojovaných službách. Existujú lepšie metódy ako napríklad:
- RED (Random Early Detection) - lineárne narastanie pravdepodobnosti zahodenia paketu pri naplnení fronty.
- WRED (Weighted Random Early Detection) - Oproti RED je tu prítomná podpora priorít.
- TBF (Token Bucket Filter) - TBF sa spáva podobne ako vedro s dierou. Do tohoto vedra pravidelne pritekajú tokeny.
Príchodzí paket je prepustený ďalej len v prípade, ak je vo vedre potrebný počet tokenov, inak je zahodený.
- SFQ (Stochastic Fairness Queuing) - Pakety sú rozdelené do tokov, tie sú potom cyklicky obsluhované (Round Robin).
- WFQ (Weighted Fairness Queuing) - rovnaké ako SFQ, ale fronty mají priority.
- CBQ (Class Based Queuing) - pakety sú radené do tried, ktoré sú ďalej spracovené.
- HTB - podobné CBQ.
- Prio - existuje niekoľko prioritních front.
Referenčný model diffserv
classification
- classifier
triedi prichádzajúci tok paketov do niekoľkých skupín podľa
preddeklarovaných pravidiel. Má dva základné druhy
triedičov:
- Behavioral Aggregate (BA) - triedi pakety na základe hodnoty pola DSCP v hlavičke paketu
- MultiField (MF) - triedi na základe rôznych polí z pätice: zdrojová adresa, cieľová adresa, zdrojový port, cieľový port, protokolový identifikátor
- marker
- Expedited forwarding - urýchlené predávanie - ponúka absolútne záruky veľkosti kolísania oneskorenia pre danú triedu
- Assured forwarding - zaistené predávanie, zaistenie garantovanej prenosovej rýchlosti, s tcp protokolom, v prípade zahltenie je najnižšia trieda QoS zahodená.
conditioning
- meter - pre každú triedu meria merač dátový tok od zákazníka
s jeho dátovým profilom, tým myslíme dohodnuté podmienky medzi
zákazníkom a poskytovateľom, tie pakety, ktoré zodpovedajú
danému profilu môžu do siete vstúpiť, inak nemôžu.
- remarker
- dropper
- shaper - rozdiel medzi markerom a shaperom je ten, že
shaper zabráni vstupným paketom prejsť sieťou do tej doby,
pokiaľ sa dátový tok neprispôsobí danému profilu. Tvarovanie je
menej náročná forma zachádzania s paketmi ako značkovanie.
Prax
Konfigurácia vo FreeBSD
Možnosť jednoduchého obmedzenia prenosu ponúka akcia "probability" v príkaze
ipfw. napr.:
ipfw add prob 0.8 allow icmp from any to any in icmptypes 8
Týmto zahadzujeme 20% ICMP paketov. Omnoho pokročilejším riešením je dummynet, bol
prvotne navrhnutý pre testovanie sieťových protokolov. K obmedzeniu prenosu sú
určené dve štruktúry, pipe a queue. Pipe emuluje linku s určitou šírkou pásma, queue implementuje
tzv. WF2Q+ (Worst-case Fair Weighted Fair Queueing). Fronty sú napojené na
rúru, každá fronta má svoju váhu, vyššia váha má väčšiu prioritu. Každá váha má
svoju veľkosť a stratovosť, fronty sa môžu tvoriť dynamicky podľa zdrojových
prípadne cieľových adries. Pakety sa presúvajú z queue do pipe až keď je v pipe
miesto, rýchlosť, akou sa pakety v pipe prenášajú je dané jej konfiguráciou.
Začlenenie dummynet-u do systému
# kldload dummynet // zavedieme modul do jadra
# kldload dummynet && ipfw add allow all from any to any
Ak nemáme v jadre zapnutú podporu dummynet-u, spravíme tak nesledovne:
# cd /usr/src/sys/i386/conf && vim KERNEL
tam
options IPFIREWALL
options DUMMYNET
a potom jadro preložíme.
výpis rúr a front
# ipfw pipe show
# ipfw queue show
zmazanie rúr/front
# ipfw pipe delete cislo_rury
# ipfw queue delete cislo_fronty
zmazanie všetkých rúr/front
# ipfw pipe flush
# ipfw queue flush
príklady
Obmedzenie linky na 128Kbit/s full-duplex a rovnomerné rozdelenie
rúry na pásmo 128Kbit/s s dĺžkou fronty 16KB obojsmerne
# ipfw pipe 1 config bw 128Kbps queue 16Kbytes
# ipfw pipe 2 config bw 128Kbps queue 16Kbytes
rovnomerné rozdelenie pásma rúr podľa zdrojovej a cieľovej IP adresy
# ipfw queue 1 config pipe 1 mask src-ip 0xffffffff queue 16Kbytes
# ipfw queue 2 config pipe 2 mask dst-ip 0xffffffff queue 16Kbytes
# ipfw add queue 1 ip from ... to ....
# ipfw add queue 2 ip from ... to ....
Obmedzenie linky na 256Kbit/s half-duplex a jej delenie v pomere 2/3,
rúra o šířke pásma 256Kbit/s s dĺžkou fronty 32KB.
# ipfw pipe 1 config bw 256Kbit/s queue 32Kbytes
# ipfw queue 1 config pipe 1 weight 40 queue 32Kbytes
# ipfw queue 2 config pipe 1 weight 60 queue 32Kbytes
# ipfw add queue 1 ip from ... to ....
# ipfw add queue 2 ip from ... to ....
Monitorovanie okamžitého prietoku dát
užitočné, nielen sieťové, monitorovacie nástroje
Literatúra