Klasifikace síťového provozu

Pavel Hančar, xhancar@fi.muni.cz

Obsah

Úvod

Různé síťové služby mají na síť různé požadavky. Například služby jako Voice over IP nebo IP-TV požadují stálou přenosovou rychlost a jsou citlivé na zpoždění, narozdíl třeba od e-mailu, kde nezáleží na rychlosti, ale na tom, jestli pakety dojdou všechny. Ke klasifikaci slouží pojem kvalita služby, známý jako QoS (Quality of Service). Můžeme ho definovat jako souhrn těchto vlastností:

Modely QoS

IntServ

Integrated services je model založený na protokolu Resource ReSerVation Protocol (RSVP). Je vhodný jen pro menší sítě, protože požaduje, aby všechny routery na trase měly uložené informace o svých datových tocích. Ve větších sítích jsou tímto routery nadměrně zatěžovány, takže v Internetu se IntServ nepoužívá.

DiffServ

Differentiated services je daleko používanější než IntServ. Třídí jednotlivé pakety do tříd a do hlavičky IP paketu do pole TOS ukládá informaci o tom, ke které třídě paket náleží. Pole TOS je často označováno jako DS. Režii mají na starosti pouze vysílající a přijímající router.

Omezování šířky pásma

U odchozího provozu se toto omezování nazývá shaping a děje se pomocí zahazování, zpožďování a přeřazování paketů tak, aby nepřekročily šířku pásma (V Linuxu se pouze zahazuje).

Policing

Neboli omezení šířky pásma na vstupním rozhraní. V podstatě není možné, protože to, jak ostatní počítače vysílají, ovlivnit nemůžeme. Lze ovšem využít jednu vlastnost TCP: pokud budeme zahazovat pakety na vstupu, tak druhá strana zpomalí jejich vysílání. Někdy nám může pomoci předřazení virtuálního rozhraní (toto rozhraní je ale pak vystaveno stejnému problému, jaký mělo rozhraní původní).

Konfigurace v Linuxu

Do jádra přidat (počet IMQ zařízení stačí 2):
CONFIG_IMQ (Network device support/IMQ (intermediate queueing device) support)
CONFIG_IP_NF_TARGET_IMQ (Networking options/IP: Netfilter Configuration/IMQ target support)

Je třeba mít podporu pro iptables a QoS.

Příkaz tc (traffic control)

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 htb default 11
tc class add dev eth0 parent 1:0 classid 1:1 rate 128kbit

tc class add dev eth0 parent 1:1 classid 1:11 rate 64kbit ceil 128kbit
tc class add dev eth0 parent 1:1 classid 1:12 rate 32kbit

Fronty paketů

Pakety čekají ve frontě a pořadí jejich odeslání určují disciplíny qdisc (Queue disciplin).

  1. pfifo_fast Standardní algoritmus podle principu FIFO. Má 3 fronty 0, 1, 2. Podle příznaku TOS rozděluje pakety do front (0 s nejvyšší prioritou). Pokud jsou pakety ve frontě 0, ty v 1 musí čekat.
  2. RED (Random Early Detection) Při překročení určité hranice roste zahazování paketů lineárně.
  3. WRED (Weighted Random Early Detection) To samé jako RED + priority.
  4. CBQ Pakety jsou řazeny do tříd, kde jsou dále zpracovány.
  5. TBF Pokud počet paketů ve frontě dosáhne určitého počtu, jsou další příchozí pakety zahazovány.
  6. HTB Je dílem Čecha Martina Devery. Podobný CBQ, ale lepší implementace.
  7. SFQ Vytváří několik front pro příchozí pakety. Pakety jsou rovnoměrně odebírány z jednotlivých front a odesílány.
  8. WFQ Stejné jako SFQ, ale podporuje priority.
  9. Prio je podobné pfifo_fast, ovšem neřídí se jen TOS příznaky, ale dovoluje použití filtrů.

Literatura