Quality of Service ˇ PRÍRU ˇ ˇ APLIKACNÍ CKA
POUŽITÉ SYMBOLY
Použité symboly ˇ Nebezpeˇcí – duležité ˚ upozornení, které muže ˚ mít vliv na bezpeˇcí osoby nebo funkˇcnost pˇrístroje. ˇ na možné problémy, kterým muže Pozor – upozornení ˚ dojít ve specifických pˇrípadech. Informace, poznámka – informace, které obsahují užiteˇcné rady, nebo zajímavé poznámky. Pˇríklad – ukázka použití daných funkcí, pˇrikazu˚ cˇ i skritpu. ˚
GPL licence Zdrojové kódy, na které se vztahuje GPL licence, jsou dostupné bez poplatku po zaslání žádosti na adresu:
[email protected].
ˇ Conel s.r.o., Sokolská 71, 562 04 Ústi nad Orlicí, Ceská Republika ˇ 15. kvetna ˇ Pˇríruˇcka byla vydána v CR, 2014
i
OBSAH
Obsah 1 Úvod od QoS
1
1.1 Fronty paketu˚ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Classless qdisc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Classful qdisc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Konfigurace
1 1 2 3
2.1 Shaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ii
3
1. ÚVOD OD QOS
1. Úvod od QoS ˇ dostupnou pˇrenosovou kapaQuality of Service (QoS) je metoda, jejíž smyslem je rozdelit citu do tˇríd tak, aby nedocházelo pˇri zahlcení síteˇ ke snížení kvality sít’ových služeb. V podstateˇ se jedná o schopnost zajistit ruznou ˚ prioritu ruzným ˚ aplikacím, uživatelum ˚ cˇ i datovým tokum ˚ tak, aby byly pˇríslušné pakety z jednotlivých tˇríd odesílány v daném poˇradí. To mimo jiné znamená, že díky QoS lze zaruˇcit vlastnosti, jako je pˇrenosová rychlost (bit rate), zpožˇ (delay), rozptyl zpoždení ˇ (jitter) nebo ztrátovost paketu, dení ˚ což je velmi duležité, ˚ pokud sít’ nemá dostaˇcující kapacitu. Taková situace muže ˚ nastat pˇredevším v pˇrípadeˇ realtime streamingových multimediálních aplikací jako je VOIP (Voice over IP) cˇ i IP-TV, nebot’ vyžadují ˇ stálou pˇrenosovou rychlost a jsou citlivé na zpoždení.
1.1
Fronty paketu˚
Fronta paketu˚ je poˇradí, v jakém budou pakety odeslány ze sít’ového rozhraní. Pakety, ˇ lze ovlivnovat ˇ které cˇ ekají ve fronte, pomocí disciplín qdisc (queueing discipline). Jedná se o implementace ruzných ˚ QoS algoritmu. ˚ Jednotlivé pakety ve fronteˇ je možné zahazovat, zpoˇ malovat nebo menit jejich poˇradí. Rozlišujeme dva základní typy disciplín classless qdisc a classful qdisc.
1.2
Classless qdisc
Disciplína tohoto typu nemuže ˚ obsahovat jiné qdisc. Urˇcuje pouze, jakým zpusobem ˚ bude naloženo s paketem (zda bude zaˇrazen, zpomalen nebo zahozen). • FIFO – Výchozí fronta. Pakety jsou odesílány v poˇradí, v jakém byly pˇrijaty. Nejedná se tedy o pˇríliš spravedlivou nebo nastavitelnou qdisc. • TBF – Vhodné pro jednoduché omezení rychlosti na sít’ovém rozhraní. Funguje na bázi „kapes“, do které se ukládají pakety. Ty se postupneˇ odesílají nastavenou rychlostí. Jakmile kapsa pˇreteˇce, jsou pakety zahazovány. Ve výsledném efektu je fronta díky kapse odolná vuˇ ˚ ci menším výpadkum. ˚ ˇ • SFQ – Zajišt’uje rovnomerné využití síteˇ všemi aktivními datovými proudy. Vytváˇrí více ˇ front, do kterých rozdeluje datové proudy podle hashovací funkce. Tato funkce se v cˇ ase ˇ mení, cˇ ímž jsou ˇrešeny kolize (dva proudy ve stejné fronteˇ dlouho nezustanou). ˚ • RED – Je urˇcen pro vytížené páteˇrní spoje. Pˇri pˇrekroˇcení urˇcité meze vypoˇcítané ze ˇ lineárneˇ zvyšuje poˇcet zahozených paketu˚ a snaží se tak pˇrestatistik, s rostoucí záteží dejít zahlcení linky. • WRED – RED s podporou priorit.
1
1. ÚVOD OD QOS
Jestliže není nadefinován žádný typ qdisc, používá se automaticky fronta FIFO. Jinou frontu je možné zvolit pˇríkazem: tc qdisc add dev
root ˇ Odebrání fronty se pak provádí následovne: tc qdisc del dev root
1.3
Classful qdisc
Classful qdisc jsou tˇrídy, jež mohou obsahovat další qdisc (classless i classful). Tvoˇrí tak strom tˇríd, jehož uzly obsahují další classful qdisc a listy práveˇ jednu classless qdisc. Každá disciplína typu classful muže ˚ mít filtry, pomocí nichž se urˇcí další qdisc, do které budou pakety pˇredány. Díky tomu pakety putují stromovou strukturou až k listum. ˚ • PRIO – Vytváˇrí tˇri tˇrídy s prioritami 0, 1 a 2. Tˇrídy se zpracovávají postupneˇ od nejnižší priority po nejvyší. ˇ • CBQ – Casto používaný typ qdisc s velkým množstvím nastavení. Pakety rozˇrazuje do potˇríd, kde jsou dále zpracovávány. Podporuje priority. ˇ ˇ • HTB – Modernejší a efektivnejší obdoba CBQ. Má jednoduší nastavení a nepoužívá propoˇcty neˇcinnosti linky.
2
2. KONFIGURACE
2. Konfigurace Provádí se pomocí utility tc (traffic control) z balíˇcku iproute. Jednotlivé disciplíny jsou oznaˇcovány ve tvaru cˇ íslo:ˇcíslo, pˇriˇcemž první cˇ íslo (pˇred dvojteˇckou) udává cˇ íslo qdiscu a to druhé (za dvojteˇckou) cˇ íslo tˇrídy. Hodnoty musí být voleny tak, aby byly jedineˇcné, nebot’ se jedná o identifikaˇcní údaje. V rámci vytváˇrení stromové struktury je potˇreba dodržovat urˇcitá pravidla. Šíˇrka pásma rodiˇcovského uzlu nesmí být menší než souˇcet prutok ˚ u˚ dat listu. ˚ Zárovenˇ není vhodné, aby byl strom tvoˇren velkým poˇctem listu˚ s mnohonásobneˇ nižší garantovanou propustností než je celková propustnost.
2.1
Shaping
Shaping je oznaˇcení pro omezování šíˇrky pásma na výstupu. Realizace probíhá pomocí ˇ jejich poˇradí. front, kde je možné pakety zahazovat, zpomalovat nebo menit ˇ Mejme linku s downloadem 1 Mbps, kterou bychom rádi nasdíleli tˇrem uživatelum ˚ tak, ˇ ˇ abychom prvnímu uživateli zaruˇcili alesponˇ 512 kbps a zbylým dvema 256 kbps. Jestliže neˇ ˇ se volná cˇ ást mezi ostatní. Tvar IP který z uživatelu˚ pˇridelenou kapacitu nevyužije, rozdelí adres, které mají tito uživatelé je 10.0.0.10 – 10.0.0.12. Nejprve vytvoˇríme strukturu HTB tˇríd, pˇriˇcemž koˇrenová bude obsahovat celou kapacitu linky a její podtˇrídy budou odpovídat tˇrem uživatelum. ˚ tc qdisc del dev eth0 root tc qdisc add dev eth0 root handle 1: htb default 1 tc class add dev eth0 parent 1: classid 1:1 htb rate 1024kbit tc class add dev eth0 parent 1:1 classid 1:11 htb rate 512Kbit ceil 1024kbit tc class add dev eth0 parent 1:1 classid 1:12 htb rate 256Kbit ceil 1024kbit tc class add dev eth0 parent 1:1 classid 1:13 htb rate 256Kbit ceil 1024kbit ˇ dˇríve. Parametr rate udává garantovanou proTˇrídy s vyšší prioritou se zpravidla uvádejí ˇ pˇresáhnout hodnotu rate rodiˇce). pustnost (celkový souˇcet hodnot rate potomku˚ by nemel ˇ být vetší nežli Parametr ceil udává maximální propustnost a platí, že ceil potomka by nemel ceil rodiˇce. Výchozí frontou na classful qdisc je fronta typu FIFO. Ta však není pˇríliš spravedlivá, a tak ji nahradíme SFQ. Parametr perturb používaný na konci pˇríkazu udává, jak cˇ asto má být ˇ ena ˇ men hashovací funkce. tc qdisc add dev eth0 parent 1:11 handle 11: sfq perturb 10 tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 10 tc qdisc add dev eth0 parent 1:13 handle 13: sfq perturb 10
3
2. KONFIGURACE
Zbývá nám roztˇrídit pakety do správných tˇríd, a proto zavedeme filtry. Identifikace paketu˚ ˇ pro danou tˇrídu lze provést nekolika zpusoby. ˚ Filtr muže ˚ cˇ íst znaˇcku v TOS oktetu hlaviˇcky paketu, filtrovat pomocí zdrojové/cílové IP adresy, zdrojového/cílového portu nebo využít znaˇcky vytvoˇrené pˇres mangle tabulku v iptables. Nejprve tedy identifikace na základeˇ cílové IP adresy: tc filter add dev eth0 parent 1:1 protocol ip u32 match ip dst 10.0.0.10 flowid 1:11 tc filter add dev eth0 parent 1:1 protocol ip u32 match ip dst 10.0.0.11 flowid 1:12 tc filter add dev eth0 parent 1:1 protocol ip u32 match ip dst 10.0.0.12 flowid 1:13 Identifikace na základeˇ oznaˇcení pˇres iptables: iptables -t mangle -A FORWARD -d 10.0.0.10 -j MARK –set-mark 10 iptables -t mangle -A FORWARD -d 10.0.0.11 -j MARK –set-mark 11 iptables -t mangle -A FORWARD -d 10.0.0.12 -j MARK –set-mark 12 tc filter add dev eth0 parent 1: protocol ip handle 10 fw flowid 1:11 tc filter add dev eth0 parent 1: protocol ip handle 11 fw flowid 1:12 tc filter add dev eth0 parent 1: protocol ip handle 12 fw flowid 1:13 Identifikace na základeˇ cílové IP adresy se využívá pˇredevším v situacích, kdy není zapoˇ tˇrebí složitejších pravidel. Výhody identifikace pomocí iptables se projeví napˇríklad pˇri klasifiˇ pomalejší. kaci na základeˇ MAC adres. Nutno však dodat, že tato metoda je o neco
4