Differences

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

Link to this comparison view

saisp:labs:11:contents:08 [2014/05/18 12:56]
mihai.carabas created
saisp:labs:11:contents:08 [2016/05/23 21:20] (current)
alexandru.carp [08. [20p] HTB - u32 hashing tables]
Line 1: Line 1:
-==== 08. Colectare statistici folosind ''​tc'' ​====+==== 08. [20p] HTB - u32 hashing tables ​====
  
-Pe lângă controlul traficului, utilitarul ​''​tc'' ​ne furnizează și statistici despre traficul transferat de fiecare clasă:<code bash> +Generarea de mână a filtrelor folosind ​''​hash tables'' ​este anevoioasă și NU se recomandă. Vom folosi un program C, disponibil [[http://​vcalinus.gemenii.ro/​prefixtree.c||aici]].
-root@gateway:​~#​ tc -s class show dev eth0 +
-</code>+
  
-Scrieți un script care extrage numărul de octeți trimiși pentru una din clase. Utilizați acest script să generați un grafic folosind informațiile prezentate în [[saisp:labs:03:contents:05|]].+Descărcați și compilați programul ''​prefixtree''​:<code bash> 
 +root@gateway:~# wget http://​vcalinus.gemenii.ro/​prefixtree.c 
 +root@gateway:​~#​ make prefixtree 
 +cc     ​prefixtree.c ​  -o prefixtree 
 +root@gateway:~# ./​prefixtree 
 +IPv4 u32 hash filter generator - (C) 2006 Calin Velea
  
 +Syntax: prefixtree {prefix.in} {u32filters.out} {interface} {src/dst} [batch]
 +</​code>​
 +Vom scrie fișierul ''​prefix.in''​ care trebuie să conțină pe câte o linie adresa IP pentru care vrem să ne genereze filtrele și ''​classid''​-ul asociat.
 +
 +Modificați scriptul de la exercițiul [[saisp:​labs:​11:​contents:​07|]] astfel încât să introducă perechea ''​adresaIP classid''​ în fișierul ''​prefix.in''​ în loc să adauge filtrul asociat. Adăugați și masca adresei IP (''/​32''​).
 <​solution -hidden> <​solution -hidden>
-<code bash> +<file bash htbht.sh
-root@gateway:~# tc -s class show dev eth0 | grep -A 4 "class htb 1:1"|grep Sent|cut -d " " -f3 +tc qdisc del dev eth0 root 
-6375340+tc qdisc add dev eth0 root handle 1htb 
 +tc class add dev eth0 parent ​1: classid ​1:1 htb rate 100mbit burst 128k
  
-Se adaugă comanda de mai sus în scriptul din [[saisp:labs:03:contents:05|]], la variabila ''​outOctets''​ +> prefix.in 
-</code>+ 
 +classid=2 
 +for j in $(seq 0 15); 
 +do 
 +    for i in $(seq 1 254); 
 +    do 
 +        classid=$(($classid + 1)) 
 +        tc class add dev eth0 parent 1:1 classid 1:$classid htb rate 100mbit burst 128k 
 +        echo 10.0.$j.$i/​32 $classid >> prefix.in 
 +    done 
 +done 
 + 
 +classid=$(($classid + 1)) 
 +tc class add dev eth0 parent 1:1 classid 1:$classid htb rate 100mbit burst 128k 
 +echo 192.168.1.1/​32 $classid >> prefix.in 
 + 
 +classid=$(($classid + 1)) 
 +tc class add dev eth0 parent 1:1 classid 1:$classid htb rate 100mbit burst 128k 
 +echo 192.168.1.2/​32 $classid >> prefix.in 
 +</file>
 </​solution>​ </​solution>​
  
 +Rulăm comanda ''​prefixtree''​ pe fișierul generat:<​code bash>
 +root@gateway:​~#​ ./​prefixtree prefix.in filters.out eth0 dst
 +lines parsed: 4066
 +total hashtables: 4
 +</​code>​
 +Observați conținutul fișierului ''​filters.out''​. Aplicăm filtrele generate:<​code bash>
 +root@gateway:​~#​ chmod +x filters.out
 +root@gateway:​~#​ ./​filters.out
 +</​code>​
 +
 +Testați din nou folosind ''​iperf''​. Obervați faptul că stația ''​gateway'',​ cea care face limitările,​ nu mai intră în load (thread-urile kernel ''​ksoftirqd''​ au CPU usage foarte mic).
saisp/labs/11/contents/08.1400406992.txt.gz · Last modified: 2014/05/18 12:56 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