Differences

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

Link to this comparison view

saisp:labs:11:contents:07 [2014/05/18 13:46]
mihai.carabas
saisp:labs:11:contents:07 [2014/05/18 14:28] (current)
mihai.carabas
Line 1: Line 1:
-==== 07. HTB - u32 hashing tables ​====+==== 07. [10p] HTB - observarea consumului de resurse ​====
  
 Ștergeți qdisc-ul root adăugat anterior. Ștergeți qdisc-ul root adăugat anterior.
Line 5: Line 5:
 Creați un script ce adaugă o limită de 1mbps pentru toate adresele IP din clasa 10.0.0.0/21 (trebuie să creați câte o clasă și câte un filtru pentru fiecare adresă IP). La finalul scriptului adăugați limita de 1mbps și pentru adresele IP asociate stațiilor ''​client1''​ și ''​client2''​. Creați un script ce adaugă o limită de 1mbps pentru toate adresele IP din clasa 10.0.0.0/21 (trebuie să creați câte o clasă și câte un filtru pentru fiecare adresă IP). La finalul scriptului adăugați limita de 1mbps și pentru adresele IP asociate stațiilor ''​client1''​ și ''​client2''​.
  
-Realizați un transfer între stația ''​client2''​ și stația ''​gateway''​ folosind ''​iperf''​. Utilizați 5 thread-uri pe partea de client a ''​iperf''​ (Hint: ''​-P''​). În timpul transferului observați încărcarea stației ''​gateway''​ (în mod special thread-urile kernel ''​ksoftirq''​). Acest lucru se datorează faptului că fiecare pachet trebuie să parcurgă toate filtrele adăugate secvențial. Clasificatoul ''​u32''​ a venit cu o soluție pentru acest lucru: folosirea unor tabele de hash, stocând filtrele sub forma unui arbore. Cheia hash-ului este dată de un octet al adresei IP destinație (mai multe detalii în curs  +Realizați un transfer între stația ''​client2''​ și stația ''​gateway''​ folosind ''​iperf''​. Utilizați 5 thread-uri pe partea de client a ''​iperf''​ (Hint: ''​-P''​). În timpul transferului observați încărcarea stației ''​gateway''​ (în mod special thread-urile kernel ''​ksoftirq''​). Acest lucru se datorează faptului că fiecare pachet trebuie să parcurgă toate filtrele adăugate secvențial. Clasificatoul ''​u32''​ a venit cu o soluție pentru acest lucru: folosirea unor tabele de hash, stocând filtrele sub forma unui arbore. Cheia hash-ului este dată de un octet al adresei IP destinație (mai multe detalii în curs și la exercițiul de la BONUS). 
-<​solution -hidden+  
 +<​solution -hidden
 +<file bash htb.sh>​ 
 +#​!/​bin/​bash 
 + 
 +tc qdisc del dev eth0 root 
 +tc qdisc add dev eth0 root handle 1: htb 
 +tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit burst 128k 
 + 
 +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 
 +        tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 10.0.$j.$i flowid 1:​$classid 
 +    done 
 +done 
 + 
 +classid=$(($classid + 1)) 
 +tc class add dev eth0 parent 1:1 classid 1:$classid htb rate 100mbit burst 128k 
 +tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.1 flowid 1:​$classid 
 +echo $classid 
 + 
 +classid=$(($classid + 1)) 
 +tc class add dev eth0 parent 1:1 classid 1:$classid htb rate 100mbit burst 128k 
 +tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.2 flowid 1:​$classid 
 +</​file>​ 
 +</​solution>​
saisp/labs/11/contents/07.1400409985.txt.gz · Last modified: 2014/05/18 13:46 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