QoS - Quality of Service
Jiří Šádek sadekj1(at)feld(dot)cvut(dot)cz
1. Úvod
Rozlišení paketů v síti je zpravidla dáno toky, které tyto pakety vytváří. Best-effort službou sítě je zajištěna základní konektivita avšak bez jakýchkoliv garancí. Chceme-li však provozovat v síti služby multimediálního charakteru - voice, telephony, video streaming - či obecně aplikace s různými specifickými požadavky na službu od sítě, musíme mít v síti mechanismy, které je zaručí. To si davá za cíl právě Quality of Service.
1.1 Co je tedy "QoS"
Jedná se o soubor technik, které řídí zpoždění (delay), fázové chvění (jitter), ztrátovost paketů (packet loss) a šířku pásma (bandwidth) pro toky v síti.
1.2 Úrovně QoS
- Best-effort - služba klasického internetu, poskytující základní konektivitu bez garancí
- Differentiated - služba rozdělující provoz v síti do tříd podle požadavků
- CoS - pro každou třídu je konfigurovatelný QoS mechanismus podle, kterého je poté obsloužena
- Soft QoS - bez garancí pro službu jako takovou, diferencuje pouze provoz
- Guaranteed - požadavek pro přidělení určitého množství síťových zdrojů
- Hard QoS - vyžaduje přísné garance od sítě
1.2.1 Qos na linkové vrstvě
Některé z technologií 2. vrstvy je podpora QoS přímo dostupná. Jedná se především o ATM technologii, která je zde nejsilnější avšak její nevýhodou je, že pokud je použita jedná se především o páteřní sítě a nikdy nedosáhne ke koncovým uživatelům. Zde je nejrozšířenější technologií ethernet, který ve své nedávné specifikaci 802.1p také přidal možnosti použití QoS. Dále můžeme zmínit Frame Relay (minCIR) a Token Ring.
Všechny výše zmíněné technologie mají však své uplatnění zhlediska QoS v sítích rozsahu LAN či WAN. Nejedná se však o řešení postačující pro celý Internet.
1.2.2 QoS z hlediska End-to-End konektivity
V síti Internet je použito velké množství heterogeních technologií linkové vrstvy a proto End-to-End konektivita začíná na 3. (síťové) vstvě. Pro Internet založený na TCP/IP je QoS založen na IP tak, že mapuje své funkce QoS do mechanismů linkové vrstvy.
2. IP QoS
2.1 Historie
Myšlenku o rozlišování typů paketů a nasledné možnosti jeho zpracování v rámci QoS, byla již v počáteční době specifikaci IP (RFC791) a jedná se o pole ToS (Type of Service, 1 Byte) v hlavičce IP paketu. V raných dobách internetu nebyla podpora ToS důležitá a proto ji většina IP implementací ignorovala.
Počátkem 90. let 20. století se začaly uplatňovat mechanismy pro plánování front paketů na routerech - WFQ, WRED - pro eliminaci stavů jejich zahlcení. Dále rozšířením aplikací mající striktní požadavky na šíři pásma byl zaveden model integrated services (RFC1633) pro garance predikovatelného chování sítě těmto aplikacím (protokoly RSVP, COPS). Zatímco u integrated services signalizují požadavky na specifický QoS aplikace, u následného modelu differentiated services (RFC2430) síť rozpoznává jednotlivé třídy, které vyžadují specifický QoS.
2.2 Modely pro IP QoS
2.2.1 Integrated services - IntServ model

Resource reservation se používá k identifikaci toku (daného aplikací) a signalizaci zda je pro ni dostatek zdrojů. Admission control určuje zda může aplikace dostat požadované zdroje.
RSVP - Resource reservation protocol (RFC2205) byl vyvinut právě pro vyjednávání potřeb aplikací na síťové zdroje mezi síťovými zařízeními. Je typicky používán aplikacemi přenášejícími voice či video přes IP sítě. Dále RSVP s rozšířením je také používáno MPLS traffic engineeringem pro sestavení MPLS/TE tunelů.


Mezi výhody použití IntServ modelu a tedy protokolu RSVP patří zmíněný resource admission control, který podporuje end-to-end řešení. Nevýhodou je nepřetžité signalizování a špatná škálovatelnost.
2.2.2 Differentiated services - DiffServ model
Tento model popisuje služby asociované s třídami provozu. Za účelem lepší škálovatelnosti se veškerá klasifikace a úprava daného provozu přesunula pouze na hranici sítě - v každém paketu hodnota DSCP (differentiated services code point) slouží k výběru per-hop behavior (PHB). Ve vlastní síti se vykonávají pouze pravě PHB, implemetované použitím určirého QoS mechanismu. Provisioning prvek DiffServ modelu alokuje zdroje pro třídy provozu. Dalším požadavky pro DiffServ model bylo zrušení vazby mezi službou a aplikací, potlačení hop-by-hop signalizování a slučitenost s uzly sítě neiterpretující DS pole korektně.
2.2.2.1 DS pole, DSCP kódování
DSCP je 6 bitová hodnota části DS pole což je dnešní název pro bývalý ToS Byte a využívá se pro určení PHB - metody pro forwarding a fronty. DS pole je oktet v IP hlavičce třídy provozu pokud je interpretován podle definice RFC2427. Při použití horních 3 bitů DSCP zpětně kompatibilní s IP precedence. Zbývající bity nejsou v současné době využity.
DSCP kódování má tři rozsahy:
- xxxxx0 - standardní akce
- xxxx11 - experimentální užití
- xxxx01 - EXP/LU - budoucí využití
Defaultně je DSCP - 000000 a PHB - FIFO, tail-drop
Výběr per-hop behavior:
- default PHB
- class selector (IP precedence) PHB
- expedited forwarding PHB
- zajišťuje minimální departure rate (odchozí rychlost)
- garance šíře pásma - třída má garantováno množství šíře pásma s prioritizovaným forwardingem
- hlídá šíři pásma - po překročení garantovaného množství je nadměrný provoz zahozen
- assured PHB
- garance šíře pásma
- umožní rozšířit pásmo (bandwidth) činných tříd jsou-li k dospozici volné zdroje, způsob rozdělení musí být specifikován

Funkční blok | Umístění | Funkce | Akce |
Traffic conditioners | vstupní interface na hraničním routeru diffserv domény | klasifikace paketů, shaping, policing | pro přicházející provoz nastavuje DSCP pole podle profilu provozu |
PHB | všechny routery v diffserv doméně | alokace zdrojů, politika zahazování paketů | PHB aplikované na pakety založené na charakteristice služby definované DSCP |

2.2.2.2 Traffic conditioners (kondicionéři provozu)
Uplatňují se na hranicích sítě a jsou proto velice důležitou součástí pro zajištění diferencovaných služeb uvnitř síťové domény. Poskytuje:
- Klasifikaci paketů (packet classifier)
- Označování paketů (packet marker)
- Traffic rate manager
Klasifikace paketů
Je prostředkem pro identifikaci paketu určité třídy podle jednoho či více polí v hlavičce paketu. Těmi mohou být:
- IP flow identifikace podle:
- zdrojové a cílové IP adresy
- zdrojového a cílového čísla portu
- pole IP protokolu
- IP precedence nebo DSCP pole
- TCP/IP parametry hlavičky (např. délka paketu)
- Zdrojová a cílová MAC
- URL adresa, NBAR (Network Based Application Recognition)
Označování paketů
Klasifikovaný paket lze označit pro indikaci jeho třídy provozu. Na routeru máme k dispozici možnost označit (někdy termín obarvit) paket podle jeho IP precedence nebo DSCP polem v IP hlavičce, nebo QoS group polem paketu v interní datové struktuře routeru.
IP precendence
Indikuje v IP hlavičce relativní prioritu pro zacházení s paketem pomocí 3 bitů z pole ToS. K obarvení může dojít v libovolném uzlu sítě nebo přímo aplikací generující provoz. Celkem má 8 tříd:
Hodnota IP precedence | Bity IP precedence | Název IP precedence |
0 | 000 | Routine |
1 | 001 | Priority |
2 | 010 | Immediate |
3 | 011 | Flash |
4 | 100 | Flash Override |
5 | 101 | Critical |
6 | 110 | Internetwork control |
7 | 111 | Network control |
DSCP
Viz. výše. 64 (0 - 63) tříd.
QoS group
Jedná se o pole v datové struktuře paketu interně v routeru, je tedy pouze značkou pro router a není součástí IP hlavičky. 100 (0 - 99) tříd.
Traffic rate manager
Na hranici domény QoS sítě je vstupující zátěž hlídána routery, zaručující, že rychlost zůstane v limitu pro danou službu. V případě, že vstupní zátěž vzroste nad možnosti páteřní sítě, vede degradovaný výkon k znemožnění poskytovaní QoS pro celý síťový provoz. Z toho důvodu jsou implementovány policing a shaping funkce.
Policing funkce odesílá pakety až do rychlosti linky a dovoluje shluky, nevyhlazuje ani nebufferuje provoz a může zahazovat pakety až když je překročena dovolná hranice.
Shaping funkce uhlazuje provoz a odesíla pakety konstantní rychlostí, používá bufferování požadavků a metody front (hlavně FIFO a WFQ) pro pakety překračující danou rychlost.
2.2.2.2 Per-Hop Behavior, alokace zdrojů
Jedná se především o mechanismy plánování front paketů pro podporu QoS na síťových prvcích uvnitř DiffServ domény.
FIFO queuing

First in, First out je nejednodušší queuing metodou, používající pouze jednu výstupní frontu na portu, obsluhující pakety ve stejném pořadí jako přicházejí. Fronta má omezenou délku a pokud je zaplněna dojde k zahazování dalších příchozích paketů (tail drop). Klasifikovaný provoz nepodporuje, pakety s větší prioritou mohou být zpožděny nebo zahazovány zatímco jsou obsluhovány pakety s nižší prioritou.
Multi-priority Queuing

Je formou násobnou formou FIFO front pro různé typy provozu. Provoz je klasifikován a rozdělen do správných front, každá fronta nese pakety stené priority. Pokud je výstup paketů s vyšší prioritou velký dochází ke zpoždění či zahazování paketů s nízkou prioritou. Problémem Multi-priority queuingu je fakt, že pokud bude provoz s vyšší prioritou velký tak veškerý traffic s nízkou prioritou bude zpožděn. Také je možné, že nejvyšší priorita dostává lepší než požadovaný QoS, zatímco pro nejnižší není splněn jeho minimální limit.
Fair Queuing

Řešením problémů u multi-priority queuingu je fair queuing, kde každé třídě přiřadí fixní váha pro alokování zdrojů routeru. Ještě lepším řešením je však Weighted Fair Queing.
Weighted Fair Queuing

Každé frontě je přiřazen její váhový faktor. Podle počtu obsazených front se zdroje alokují podle poměru daným váhovým faktorem.
2.2.2.3 Per-Hop Behavior, politika zahazovaní paketů
- RED - Random Early Detection
- WRED - Weighted RED = více front rozdílné zahazování při RED

