Úvod
Počítačové siete sú navrhnuté ako tzv. best-effort služby, teda všetky sieťové toky v TCP/IP sieťach sú obsluhované ekvivalentne, avšak ľubovoľný z nich môže byť ovplyvnený negatívnymi vlastnostiami sietí ako sú napr. straty paketov, oneskorenie, zmena poradia paketov...
Existujú ale prípady, kedy je potrebné niektoré toky uprednostniť pred inými, teda poskytnúť im definovanú kvalitu služby (Quality of Service): real-time prenosy...
Klasifikácia prevádzky na sieti
Proces, pri ktorom sieťové zariadenie rozpoznáva jednotlivé pakety a zaraďuje ich do určitých tried podľa ich vlastností. Umožňuje následnú prioritizáciu, shaping alebo policing. Cieľom klasifikácie je umožniť rozdielne zaobchádzanie s rôznymi typmi dát.
- L2 klasifikácia: priority vo VLAN (PCP field)
- L3 klasifikácia: DSCP, IP zdroj a cieľ
- L4 klasifikácia: porty TCP/UDP (napr. 80, 443)
- DPI (Deep Packet Inspection): identifikácia aplikácie podľa obsahu paketov (heuristiky)
V súčasnosti je klasifikácia stále ťažsia: šifrovanie, tunelovanie cez HTTP, QUIC
Prioritizácia dátových tokov
Prioritizácia určuje, ktoré toky majú prednosť pri preťažení. Kritické toky (napr. VoIP alebo online hry) dostanú vyššiu prioritu než menej dôležité (downloady).
Zabezpečuje sa pomocou klasifikácie, front, shapingu a policingu
QoS v Internetu
Navrhnuté dva spôsoby zaistenia kvality služby:
- Integrované služby (Integrated services) - založené na rezervácií zdrojov na vnutorných prvkoch siete po ceste k príjemcovi
- Rozlišované služby (Differentiated services) - založené na značkovaní poketov
QoS v IPv4
Používa pole ToS (Type of Service) alebo DS (Differentiated Services) v IPv4 hlavičke:
- Kedysi iba IPP (IP Precedence)
- Dnes rozdelené na DSCP (Differentiated Services Code Point, 6 bitov) a ECN (Explicit Congestion Notification, 2 bity) - slúži na signalizáciu preťaženia bez zahadzovania paketov
DSCP štandartné označovanie paketov:
- DF (Default Forwarding) - best effort traffic - hodnota 0
- EF (Expedited Forwarding) - nízka strátovosť, oneskorenie a rozptyl oneskorenia - hodnota 46
- AF (Assured Forwarding) - definuje 4 triedy prenosu, kde každá má 3 levely prednosti zahodenia
- CS (Class selector) - zabezpečuje spätnú kompatibilitu s IPP
QoS v IPv6
Postavené na rovnakých princípoch ako v IPv4
Používa pole Traffic Class (8 bitov), ktoré obsahuje DSCP a ECN
Mechanizmy QoS (RED, WRED, CBQ, TBF, HTB, SFQ, WFQ, PRIO)
RED a WRED patria do části QoS, ktorá sa nazýva congestion avoidance (prevencia zahltenia).
PRIO, WFQ, SFQ - scheduling (v akom poradí sa obslúžia pakety z jednotlivých front).
TBF - shaping (riadenie množstva a rychlosti odosielaných paketov).
CBQ, HTB - schaping + scheduling
RED (Random Early Detection)
Vlastnosti
Predchádza zahlteniu fronty tým, že náhodne zahadzuje pakety (resp. posiela ECN) ešte pred úplným naplnením.
Pokiaľ zaplnenie fronty presiahne určitú mez, začne router zahadzovať pakety náhodne vybraných tokov. Odosielateľ daného toku ako reakciu na stratený paket zníži rýchlosť odosielania.
Pravdepodobnosť zahodenia paketu sa zvyšuje so zvyšujúcim sa zaplnením fronty.
Parametre konfigurácie
min_thresh– od tejto hodnoty začína náhodné zahadzovanie paketovmax_thresh– po prekročení je zahadzovanie pravdepodobnejšiemax_p– maximálna pravdepodobnosť zahodenia medzi min_thresh a max_thresh
WRED (Weighted RED)
Vlastnosti
Rozširuje RED o rozdielne váhy podľa tried (DSCP). Prioritné toky sú zahadzované menej často ako bežné toky.
Parametre konfigurácie
- rovnaké parametre ako pri RED
- DSCP mapovanie - pre rôzne triedy sa nastavujú iné min/max thresh a max_p
CBQ (Class-Based Queueing)
Vlastnosti
- Logicky rozdeľuje linku na triedy (classes), pričom každá trieda môže mať vlastnú frontu a konfiguráciu.
- Každá trieda má definovanú rýchlosť (rate), ktorá určuje, koľko šírky pásma minimálne dostane (aj pri maximálnom zaťažení).
- Triedy sú usporiadané v strome – rodičovská trieda rozdeľuje svoje pásmo medzi podtriedy.
- Triedy môžu byť:
- bounded – nemôžu prekročiť svoj rate aj pri voľnom pásme, ale iné triedy si môžu požičať
- unbounded / borrow – môžu si požičať nevyužité pásmo od iných tried (implicitne)
- isolated – trieda sa nedelí o pásmo so žiadnou inou triedou
Parametre konfigurácie (root vs podtriedy)
parent– miesto triedy v hierarchiirate– garantovaná rýchlosť triedypriority– určuje poradie obsluhy medzi triedamiavpkt– priemerná veľkosť paketubounded,isolated– obmedzenia delenia šírky pásma
TBF (Token Bucket Filter)
Vlastnosti
- Mechanizmus, ktorý obmedzuje rýchlosť odosielania paketov (traffic shaper)
- Hlavná úloha: obmedziť výstupnú rýchlosť tak, aby nebola prekročená dlhodobá požadovaná hodnota (rate), ale zároveň umožní krátke špičky (burst), keď je vedro plné.
- Predstava vedra so žetónmi:
- do vedra neustále pribúdajú žetóny predom nastavenou rýchlosťou
- každý odoslaný paket spotrebuje žetóny podľa svojej veľkosti
- ak žetóny sú, paket môže okamžite odísť
- ak žetóny dôjdu, paket musí počkať vo fronte, kým pribudnú nové (resp. zahodí sa)
Parametre konfigurácie
rate– rýchlosť, akou pribúdajú žetóny - maximálna priemerná rýchlosťburst– kapacita vedra (bucket size) - koľko dát sa môže odoslať naraz, aj keď sú väčšie než ratelimit– kapacita fronty - koľko paketov môže čakať, keď nie sú žetónymtu– priemerná veľkosť paketu, aby TBF vedel počítať žetóny presnejšie
HTB (Hierarchical Token Bucket)
Vlastnosti
- kombinuje presné riadenie rýchlosti (ako TBF) a hierarchické triedenie (ako CBQ)
- používa token bucket mechanizmus s dvoma vedrami pre každú triedu:
- rate bucket – riadi garantovanú minimálnu rýchlosť triedy (TBF)
- ceil bucket – určuje maximálnu povolenú rýchlosť triedy a umožňuje využiť nevyužité pásmo iných tried (ako v CBQ)
Parametre konfigurácie (root vs podtriedy)
rate– minimálna garantovaná rýchlosťceil– maximálna povolená rýchlosťburst– veľkosť rate bucketu, rate burstcburst– veľkosť ceil bucketu, ceil burstprio– priorita triedyquantum– počet bajtov, ktoré plánovač spracuje za jednu rotáciu triedy
SFQ (Stochastic Fair Queueing)
Vlastnosti
- Férové rozdelenie šírky pásma medzi veľké množstvo tokov bez nutnosti udržiavať frontu pre každý tok zvlášť
- Rozdelí všetky prichádzajúce pakety do menšieho počtu front (fixný počet) pomocou hashovacej funkcie na základe identifikátora toku (napr. src IP + dst IP + porty)
- Každý tok dostane približne rovnakú šírku pásma
- nízka latencia - fronty krátke a spravované rýchlo cyklicky
Parametre konfigurácie
perturb– ako často sa mení hashovacia funkcia (aby sa rovnaké toky nestretávali v rovnakej fronte)quantum– veľkosť obsluhy počas jednej rotácie
PRIO Queueing
Vlastnosti
- Niekoľko prioritných front (priority bands)
- Fronta s vyššou prioritou sa vždy obslúži skôr (čím nižšie číslo, tým väčšia priorita)
- Vhodné pre realtime prevádzku
- Môže nastať starvation – nízke priority sa nemusia dostať na rad
Parametre konfigurácie
bands– počet prioritných front (typicky 3 alebo 4)priomap- určuje, ktoré DSCP hodnoty idú do ktorej prioritydefault band- do ktorej fronty sa zaradia pakety, ktoré nemajú špeciálne mapovanie
WFQ (Weighted Fair Queueing)
Vlastnosti
- Pakety pridelené do prioritných front, kde každá fronta má pridelenú váhu (vyššia váha = vyššia priorita)
- Fronty obsluhované cyklicky podľa priradenej váhy (Round Robin) - čím väčsia váha, tým viac paketov je z fronty odobraných
- Rieši starvation PRIO queueing
Parametre konfigurácie - neexistuje v tc
weight– určuje podiel šírky pásma pre daný tok/triedu
Bufferbloat a riešenia
Bufferbloat je jav, pri ktorom sú buffery v sieťových zariadeniach príliš veľké. Buffery pakety držia príliš dlho, čo spôsobuje vysokú latenciu a jitter.
Riešenie - AQM – Adaptive Queue Management - algoritmy, ktoré aktívne riadia plnenie fronty, aby zabránili bufferbloatu. Ich cieľ je informovať TCP, aby spomalilo skôr, než sa buffer zaplní.
Najznámejšie AQM sú:
- RED/WRED, PIE
- CoDel: kontrolovaný delay – udržiava oneskorenie vo fronte pod cieľovou hranicou
- FQ-CoDel: kombinácia fair queueing a CoDel, najpoužívanejší
Obmedzenie šírky pásma na vstupnom rozhraní (ingress shaping)
Shaping na vstupnom rozhraní je problematický, pretože pakety už dorazia do zariadenia a nevieme regulovať akou rýchlosťou. Preto obmedzenie ako také nie je priamo možné.
Riešenie:
- IFB (Intermediate Functional Block) – presmerovanie vstupnej prevádzky na virtuálne rozhranie, kde sa aplikuje shaping (TBF, HTB...)
- Policing - kontroluje rýchlosť a pri jej prekročení buď zahodí paket alebo označuje pakety ako nízku prioritu (DSCP remark)
Rozdelenie záťaže cez viac rozhraní
Load-balancing umožňuje využívať viac liniek súčasne. Sieťový traffic sa nevedie iba cez jedno rozhranie, ale rozdelí sa na viac liniek.
Cieľom je zvýšiť celkovú priepustnosť, dostupnosť aj spoľahlivosť siete.
Dva hlavné spôsoby rozdelenia:
- Per-packet balancing: každý paket môže ísť inou linkou – v praxi sa moc nepoužíva.
- Per-flow balancing: každý tok je priradený jednej linke - rozdelenie komunikácie na základe flowu, teda hashu (src IP, dst IP, src port, dst port, protokol). Realizujú ho: ECMP - rozdelenie rôznych tokov cez viac ciest, LACP - spojenie viacerých fyzických liniek do jedného logického interface (redundancia)
Modelovanie sieťovej záťaže a monitoring
Na sledovanie aktuálneho prenosu sa používajú monitorovacie nástroje - aktívne (vytvára traffic), pasívne
Modelovanie záťaže - generovanie dátovej prevádzky na testovacie účely:
- iperf: dokáže merať - maximálnu priepustnosť linky, latenciu, výkon TCP a UDP, jednosmerný aj obojsmerný prenos
iperf -s iperf -c ip_serveru
Monitorovanie sieťovej prevádzky:
- iftop: zobrazovanie aktívnych spojení a priepustnosti
iftop -i eth0 - iptraf: interaktívne sledovanie sieťovej prevádzky
iptraf - nload: grafický zobrazenie aktuálneho download/upload
nload eth0
Zdroje
- referat 2019
- referat 2020
- PB156, lecture 6
- RFC 2309 - Recommendations on Queue Management and Congestion Avoidance
- tc dokumentácia
- tc-red
- tc-cbq
- tc-htb
- tc-tbf
- tc-sfq
- tc-prio
- RFC 2474 - Definition of the Differentiated Services Field (DS Field) in IPv4/IPv6
- bufferbloat
- klasifikácia wiki
- QoS wiki
- Obrázok k RED