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:12]
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.
  
 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 și la exercițiul de la BONUS).
 + 
 +<​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.1400407970.txt.gz · Last modified: 2014/05/18 13:12 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