Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:11:contents:05 [2014/05/18 12:18]
mihai.carabas [05. Lorem ipsum]
saisp:labs:11:contents:05 [2015/05/25 16:04] (current)
alexandru.carp [05. [10p] Traffic shaping classful]
Line 1: Line 1:
-==== 05. Lorem ipsum ====+==== 05. [10p] Traffic shaping classful ​====
  
 ''​htb''​ este un qdisc **classful** (tratează traficul în mod diferențiat,​ în funcție de clasa din care face parte). Este varianta **classful** a ''​tbf''​ (împarte traficul pe clase, apoi aplica ''​tbf''​ pe fiecare în parte). ''​htb''​ este un qdisc **classful** (tratează traficul în mod diferențiat,​ în funcție de clasa din care face parte). Este varianta **classful** a ''​tbf''​ (împarte traficul pe clase, apoi aplica ''​tbf''​ pe fiecare în parte).
Line 61: Line 61:
 </​code>​ </​code>​
  
-Verificăm qdisc-ul asociat interfeței ''​eth0''​ și ierarhia de clase adăugată+Verificăm qdisc-ul asociat interfeței ''​eth0''​ și ierarhia de clase adăugată:<code bash> 
 +root@gateway:​~#​ tc qdisc show dev eth0 
 +qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 82 direct_qlen 1000
  
-<​code>​ +root@gateway:~# tc class show dev eth0 
-# tc qdisc show dev tap1 +class htb 1:1 root prio 0 rate 1000Kbit ceil 1000Kbit burst 128Kb cburst 1600b 
-qdisc htb 1root refcnt 2 r2q 10 default 0 direct_packets_stat 940 +class htb 1:2 root prio 0 rate 40000Kbit ceil 40000Kbit burst 128Kb cburst ​1600b 
- +class htb 1:3 root prio 0 rate 5000Kbit ceil 5000Kbit burst 128Kb cburst 1600b 
-# tc class show dev tap1 +class htb 1:4 root prio 0 rate 3000Kbit ceil 3000Kbit burst 128Kb cburst ​1599b
-class htb 1:1 root prio 0 rate 1000Kbit ceil 1000Kbit burst 128Kb cburst 1600b  +
-class htb 1:2 root prio 0 rate 40000Kbit ceil 40000Kbit burst 131055b ​cburst ​1575b  +
-class htb 1:3 root prio 0 rate 5000Kbit ceil 5000Kbit burst 128Kb cburst 1600b  +
-class htb 1:4 root prio 0 rate 3000Kbit ceil 3000Kbit burst 128Kb cburst ​1593b+
 </​code>​ </​code>​
  
-Cu toate ca am definit ierarhia de clase, nu am definit cum impartim ​traficul ​in aceste clase. ​Pentru aceasta, avem nevoie ​de filtre. +Cu toate că am definit ierarhia de clase, nu am definit cum selectăm ​traficul ​pentru ​aceste clase. ​Vom folosi noțiunea ​de filtre ​oferită de utilitarul ''​tc''​. Definim primul filtru, ce selectează ​trafic cu portul ​destinație ''​8000''​. Trebuie ​să specificam:​ 
- +  * protocolul de nivel 3: IP 
-Definim primul filtru, ce selecteaza ​trafic cu portul ​destinatie ​8000. Trebuie ​sa specificam:​ +  * parintele: ​''​1:'' ​- vom atasa toate filtrele ​în nodul rădăcina 
-** protocolul de nivel 3: IP +  * prioritatea: ​''​1'' ​- toate filtrele vor avea aceeași ​prioritate 
-** parintele: ​"1:" ​- vom atasa toate filtrele ​in nodul radacina +  * tipul de filtru: ​''​u32''​, ce poate face match pe header-ul IP 
-** prioritatea: ​"1" ​- toate filtrele vor avea aceeasi ​prioritate +  condiția ​de match: portul ​destinație ​(8000), ​și masca (0xffff - dorim să facem match pe toți cei 16 biți asociați câmpului destinație
-** tipul de filtru: ​"u32", ce poate face match pe header-ul IP. Alte filtre sunt "​rsvp",​ "​route"​ etc., dar sunt folosite cu alte scopuri. +  * clasa în care va fi încadrat ​traficul (flowid): ​''​1:1'':​<​code ​bash
-** conditia ​de match: portul ​destinatie ​(8000), ​si masca (0xffff - dorim sa facem match pe toti cei 16 biti+root@gateway:​~# ​tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 8000 0xffff flowid 1:1
-** clasa in care va fi incadrat ​traficul (flowid): ​"1:1+
- +
-<​code>​ +
-tc filter add dev tap1 protocol ip parent 1: prio 1 u32 match ip dport 8000 0xffff flowid 1:1+
 </​code>​ </​code>​
  
-* Procedam ​analog ​si cu celelalte filtre: +Procedăm ​analog ​și cu celelalte filtre:<​code ​bash
- +root@gateway:​~# ​tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 6000 0xffff flowid 1:2 
-<​code>​ +root@gateway:​~# ​tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 21 0xffff flowid 1:3 
-tc filter add dev tap1 protocol ip parent 1: prio 1 u32 match ip dport 6000 0xffff flowid 1:2 +root@gateway:​~# ​tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 80 0xffff flowid 1:4
-tc filter add dev tap1 protocol ip parent 1: prio 1 u32 match ip dport 21 0xffff flowid 1:3 +
-tc filter add dev tap1 protocol ip parent 1: prio 1 u32 match ip dport 80 0xffff flowid 1:4+
 </​code>​ </​code>​
  
-* Verificam ​filtrele create: +Verificăm ​filtrele create:<​code ​bash
- +root@gateway:​~# tc filter show dev eth0 
-<​code>​ +filter parent 1: protocol ip pref 1 u32 
-# tc filter show dev tap1 +filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1 
-filter parent 1: protocol ip pref 1 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:1 +filter parent 1protocol ip pref 1 u32 fh 800::​800 ​order 2048 key ht 800 bkt 0 flowid 1:1
   match 00001f40/​0000ffff at 20   match 00001f40/​0000ffff at 20
-filter parent 1: protocol ip pref 1 u32 fh 800::802 order 2050 key ht 800 bkt 0 flowid 1:2 +filter parent 1: protocol ip pref 1 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:2
   match 00001770/​0000ffff at 20   match 00001770/​0000ffff at 20
-filter parent 1: protocol ip pref 1 u32 fh 800::803 order 2051 key ht 800 bkt 0 flowid 1:3 +filter parent 1: protocol ip pref 1 u32 fh 800::802 order 2050 key ht 800 bkt 0 flowid 1:3
   match 00000015/​0000ffff at 20   match 00000015/​0000ffff at 20
-filter parent 1: protocol ip pref 1 u32 fh 800::804 order 2052 key ht 800 bkt 0 flowid 1:4 +filter parent 1: protocol ip pref 1 u32 fh 800::803 order 2051 key ht 800 bkt 0 flowid 1:4
   match 00000050/​0000ffff at 20   match 00000050/​0000ffff at 20
 </​code>​ </​code>​
  
-Pe masina **fizica**rulati ​din nou script-ul ​**iperf-client.sh**Asteptati ​60 de secunde. Inspectati ​output-ul ​de pe masina **virtuala**. Ce observati+Pe stația gatewayrulați ​din nou script-ul ​''​iperf-gateway.sh''​Asteptați ​60 de secunde ​și inspectați ​output-ul ​afișat. Ce observați
-** Fiecare flux de trafic nu a depasit banda alocata. +  * Fiecare flux de trafic nu a depasit banda alocata. 
-** Packet-loss-ul este foarte mic pentru flow-urile UDP. +  * Packet-loss-ul este în continuare apropiat de 0% (ca la ''​tbf''​) ​pentru flow-urile UDP.
saisp/labs/11/contents/05.1400404731.txt.gz · Last modified: 2014/05/18 12:18 by mihai.carabas
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0