Klasifikácia prevádzky siete

Martin Brakl, 410316[\at/]mail.muni.cz

Obsah


1. Úvod

Počítačové siete boli od začiatku navrhnuté ako spravodlivé ku všetkým pripojeným počítačom. Všetky sieťové toky v TCP/IP sieťach sú obsluhované s rovnakou prioritou. Avšak ľubovoľný z nich môže byť ovplyvnený negatívnym vlastnostiam sietí ako sú napr. straty paketov, oneskorenie, duplikácia, zmena poradia paketov, atď. Toto je podstata best-effort služby, ktorú poskytujú spravodlivé počítačové siete.

Existujú ale aplikácie, ktoré vyžadujú určitú kvalitu služby (Quality of Service, skr. QoS), teda je nutné ich toky určitým spôsobom prioritizovať:


1.1 Základné parametre tokov


1.2 Mechanizmy QoS [2]

Obsluha I/O front na hostoch a sieťových prvkoch. Všetky 3 mechanizmy: plánovanie, formovanie tokov a prevencia zahltenia je nutné kombinovať.

1.2.1 Plánovanie (scheduling)


1.2.2 Formovanie tokov (traffic shapping)

Mechanizmus riadenia množstva a rýchlosti odosielania paketov.

Leaky bucket

Zariadenie má buffer pevnej veľkosti, ktorý prijíma pakety na odoslanie. Buffer ale odosiela množstvo dát, ktoré je zhora ohraničené. Ak sa dosiahne limit bufferu, tak nové pakety sa začnú zahadzovať.

Token bucket (TBF)

Rieši nespravodlivosť Leaky bucketu k menej aktívnym zariadeniam. Ak je zariadenie aktívne, tak zbiera tokeny. Ak zariadenie odosiela dáta, tak za ne platí nahromadenými tokenmi. Ak sa buffer (vedro) naplní tokenmi, tak začne zahadzovať pakety. Veľkosť bufferu (vedra) určuje maximálnu možnú veľkosť špičky v sieti.


1.2.3 Prevencia zahltenia (Congestion avoidance)

Mechanizmus zahadzovania paketov vzhľadom k zaplneniu fronty/bufferu.

Random Early Detection (RED)

Nezahadzuje pakety až keď je buffer plný ale začne zahadzovať pakety náhodne zvoleného toku s rastúcim zaplnením bufferu.

Weighted Random Early Detection (WRED)

To isté ako RED, ale pravdepodobnosť zahodenia paketu závisí aj na priorite toku.


2. QoS v IP sieťach

2.1 Integrated services

Starší prístup, ktorý zavádza do siete naspäť stav. Zariadenie sa snaží na ceste k cieľu rezervovať potrebné zdroje a kvalitu služby. Absolútne nepoužiteľné pre počítačové siete. Spôsobuje vysokú réžiu a neškáluje.

2.2 Differentiated services

Značkuje pakety, čím ich priraďuje do určitých tried priority. Zdroj paketu si nediktuje podmienky kvality prenosu, ale pri vstupe paketu do siete (router) je paket označený kvalitatívnou triedou prenosu.

2.2.1 IPv4 - Type of Service (ToS)

Paket je označený v poli Type of Service (ToS field), ktoré reprezentuje druhý bajt v pakete. Hodnoty pola radia paket do určitej triedy dôležitosti. Tento koncept je ďalej rozvíjaný v IPv6.

2.2.1 IPv6 - Differentiated Services (DiffServ)

Paket je označený v poli Traffic Class, ktoré je tiež 1 bajt dlhé a začína už na štvrtom bite paketu. IPv6 nie je zatiaľ schopné garantovať v praxi určitú kvalitu služby ako je šírka pásma, oneskorenie alebo jeho rozptyl. Dokáže iba zabezpečiť konkrétnu prioritu s akou je paket spracovaný a umožňuje definovať určité triedy komunikácie.


3. Bufferbloat

Je dôsledok moderných sieťových prvkov s veľkými buffermi a rýchlymi sieťovými rozhraniami. Tento jav sa deje keď niekoľko sieťových prvkov naraz vypustí do jedného úzkeho miesta siete (router alebo switch) veľké množstvo dát zo svojich bufferov. Toto úzke hrdlo siete má v dôsledku toho zaplnený vlastný buffer/frontu a začne zahadzovať pakety aby predišlo zahlteniu. Zahodené pakety musia ich zdroje často znova preposielať čo môže spôsobiť opakované zahltenie siete.

Otestujte si odolnosť siete na bufferbloat tu.

3.1 Ukážka nevyhladeného dátového toku

Na zlomok časového kvanta je zahltené prenosové médium na maximum a ak sa stretne naraz viac takýchto špičkových tokov v sieti, tak zahltia prvé úzke miesto siete, kde sa stretnú.

	 bandwidth[%] 
	     V 
	100 -+  +--------+  <----- many streams like this, in the same moment causes bufferbloat in the first network bottleneck
	     |  |********|
	     |  |********|
	     |  |********|
	     |  |********|
	50  -+  |********|
	     |  |********|
	     |  |********|
	     |  |********|
	     |  |********|
	0   -+ -+********+----------------------------------------
	     |
	    -+--+--------+----------+----------+----------+-------> t[s]
	        0       0.25       0.5        0.75        1
	

3.2 Riešenie Bufferbloat

Existujú 2 základné skupiny riešení, ktoré sa často dopĺňajú:

Algoritmus CoDel (controlled delay) [18]

Je to plánovací algoritmus pre network scheduler vytvorený tak aby prekonal Bufferbloat problém na sieťovom hardvéri (smerovače, prepínače) tým, že nastavuje limity na oneskorenie paketov počas priechodu buffermi [19].

Je jedným z prvých fundamentálnych pokrokov v oblasti active queue management. Nevyžaduje žiadne parametre narozdiel od algoritmov ako RED. Umožňuje prenášať dáta sieťou s nízkou latenciou ale aj špičkové prenosy (bursts of traffic). Dynamicky sa prispôsobuje zmenám množstva prenášaných dát.

Podstatou algoritmu je, že rozlišuje 2 typy front. Dobré fronty (good queue) su fronty, ktoré obsluhujú komunikáciu, ktorá nespôsobuje Bufferbloat. Zlé fronty (bad queues) sú fronty, ktoré často spôsobujú Bufferbloat, tým že produkujú nárazové prúdy dát, ktoré maximálne naplnia buffer a po nejaký čas si udržujú intenzitu.

Dnes už existuje aj upravená verzia fq_CoDel a tieto algoritmy často využíva len OpenWRT a prípade komerčných vendorov to ešte nie je vždy podporovaný štandard.


4. QoS v Linuxe

4.1 Modelovanie sieťovej záťaže

4.1.1 iPerf / iPerf3

Vyžaduje inštaláciu na obidvoch koncoch testovaného spojenia. Zaujímavý návod na inštaláciu a základné použitie nájdete tu [11] alebo na homepage projektu [14]. Inštalácia je jednoduchá, stačí použiť balíčkovacie služby ako apt alebo yum.

Ukážka výstupu testu pre server a klienta (spojenie oboma smermi)

server

	------------------------------------------------------------
	Server listening on TCP port 5001
	TCP window size: 85.3 KByte (default)
	------------------------------------------------------------
	------------------------------------------------------------
	Client connecting to 198.51.100.5, TCP port 5001
	TCP window size:  351 KByte (default)
	------------------------------------------------------------
	[  3] local 198.51.100.6 port 50618 connected with 198.51.100.5 port 5001
	[  5] local 198.51.100.6 port 5001 connected with 198.51.100.5 port 58650
	[ ID] Interval       Transfer     Bandwidth
	[  5]  0.0-10.1 sec  1.27 GBytes  1.08 Gbits/sec
	[  3]  0.0-10.2 sec  1.28 GBytes  1.08 Gbits/sec

klient

	shell$ iperf -c 198.51.100.5 -d
	------------------------------------------------------------
	Client connecting to 198.51.100.6, TCP port 5001
	TCP window size:  153 KByte (default)
	------------------------------------------------------------
	[  6] local 198.51.100.5 port 58650 connected with 198.51.100.6 port 5001
	[  6]  0.0-10.1 sec  1.27 GBytes  1.08 Gbits/sec
	[  5]  0.0-10.2 sec  1.28 GBytes  1.08 Gbits/sec

4.2 Monitoring prietoku dát sieťou

4.2.1 iftop

Inštalácia podobná ako iperf cez balíčkovacie služby. Vyžaduje rootovské opravnenia. Je to nástroj, ktorý v tabuľke zobrazí aktuálne využívanú šírku pásma medzi dvoma koncovými stanicami (napr. medzi hostom a google.com). Pekná ukážka je napr. [15]

4.2.2 iptraf

iptraf je oveľa sofistikovanejší ako iftop. Avšak posledný release je z roku 2005 [17].

4.3 Nastavenie šírky pásma pre sieťové rozhranie

4.3.1 wondershaper (Debian)

Hlavným účelom wondershapru je minimalizácia latencie na sieti tým, že logicky obmedzuje šírku pásma pre sieťové rozhranie (eth0 apod.)

Príklad

Nasledujúci príkaz dokáže upraviť šírku pásma pre daný interface.
	wondershaper interface download_rate upload_rate
	
eth0 obmedzí download na 10000 kbps a upload na 1000 kbps.
	wondershaper eth0 10000 1000
	
Zrušenie limitov pre eth0
	wondershaper remove eth0
	
Automatické zapnutie limitov v /etc/network/interfaces
	iface eth0 inet dhcp
    	up /sbin/wondershaper eth0 00 100
    	# je vhodné limit vypnúť pred vypnutím rozhrania
    	down /sbin/wondershaper remove eth0
	

tc (iproute package)

Zaujímavý návod je v refereráte Martina Kolmana [13] (kódovanie stredoeurópske jazyky ISO)


Pozvánka - UltraGrid

Príďte sa pozrieť na prednášku Miloša Lišku venovanú UltraGridu rámci predmetu PV188. Prednáška bude 17.12. o 18:00 v laboratóriu Sitola (A502).

UltraGdrid síce používa QoS keď je to možné, avšak QoS je dnes na dnešných sieťach tak málo podporovaný koncept, že len s jeho využitím by nedokázal dosiahnuť technické parametre, ktoré garantuje.

UltraGrid podporuje prenos komprimovaného a nekomprimovaného audia a videa vo vysokom rozlíšení až do kvality 4K(4096@60p) s latenciou do 80ms.


Literatúra


Zaujímavé zdroje