QoS - Klasifikace síťového provozu

Viktor Michálek,xmichal4(závin)fi.muni.cz

Obsah

Úvod

Na počátku vývoje byly internetové protokoly navrženy jako best effort služby, tzn. že síťové prvky  se snaží doručit daný paket nejlépe jak mohou a nikomu neodepřou přístup do sítě.

QoS

 Kvalitu služeb (Quality of Service) můžeme definovat jako souhrn následujících parametrů:

Strategie řešení QoS

Best effort a TOS routing

Triviální metoda řešení QoS problematiky existovala ve specifikaci IP protokolu prakticky od počátku. Řešení spočívalo v tom, že odesílatel nastavil v IP hlavičce datagramu pole TOS (Type of Service), které obsahvalo údaj o typu a prioritě datagramu, na jehož základě měl směrovač vybrat nejlepší trasu pro daný datagram.
Toto řešení však bylo nasazováno velmi pomalu a sporadicky a proto se příliš nerozšířilo.

Integrated services - IntServ

Přístup intengrovaných služeb spočívá v použití RSVP protokolu , kterým daná aplikace oznamuje počítačové síti své požadavky na přenos dat, které mají být při přenosu paketu dodrženy. Síť oznámí aplikaci, zda jí může vyhovět. Pokud ne, aplikace může požádat o nižší přiřazení QoS. Pokud síť aplikaci vyhoví, musí o tom informovat všechny síťové prvky, po kterých bude daná komunikace probíhat. Uvedená strategie není vhodná pro velmi rozsáhlé sítě, protože má velkou časovou režii a vysoké nároky na směrovače.

Differentiated services - DiffServ

DIferencované služby jsou oproti intengrovaným službám mnohem rošířenější, nabízejí lepší škálovatelnost při nižší zátěži jednotlivých směrovačů, což umožňuje garanci kvality a velké vzdálenosti. V této strategii rozlišujeme 3 druhy směrovačů:

Policing a shaping

Shaping a jednotlivé disciplíny

Classless

Clasful

Konfigurace QoS v Linuxu

Na zprovoznění traffic shapingu v Linuxu je třeba mít správně nainstalované nástroje iproute a iptables.

Příklad rozdělení šířky pásma odchozího  provozu do podtříd

CEIL=240
tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate ${CEIL}kbit ceil ${CEIL}kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 80kbit ceil 80kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 80kbit ceil ${CEIL}kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20kbit ceil ${CEIL}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 20kbit ceil ${CEIL}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 10kbit ceil ${CEIL}kbit prio 3
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 30kbit ceil ${CEIL}kbit prio 3
tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 130: sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 140: sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 150: sfq perturb 10

Kde:

Struktura tohoto rozdělení pak vypadá takto:

+---------+
| root 1: |
+---------+
|
+---------------------------------------+
| class 1:1 |
+---------------------------------------+
| | | | | | 
+----+ +----+ +----+ +----+ +----+ +----+
|1:10| |1:11| |1:12| |1:13| |1:14| |1:15| 
+----+ +----+ +----+ +----+ +----+ +----+ 

Příklad klasifikace paketů

tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:10
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:12
tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:13
tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:14
tc filter add dev eth0 parent 1:0 protocol ip prio 6 handle 6 fw classid 1:15

Literatura