This shows you the differences between two versions of the page.
saisp:labs:11:contents:04 [2014/01/26 13:07] 127.0.0.1 external edit |
saisp:labs:11:contents:04 [2014/05/19 13:16] (current) alexandru.carp [04. [5p] Traffic shaping în Linux] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 04. Lorem ipsum ==== | + | ==== 04. [5p] Traffic shaping în Linux ==== |
- | ... | + | Am observat faptul că policing-ul pe baza ToS-ului nu este suficient pentru a asigura echitatea între servicii. Soluția ce se apoate aplica este dată de limitarea serviciilor FTP și HTTP. |
+ | ''tbf'' este cea mai simplă metodă de a face traffic shaping în Linux. Este, de asemenea, un qdisc **classless** (ca și ''pfifo_fast''). | ||
+ | Dorim să limităm viteza pentru fluxurile FTP și HTTP (însumate) la aproximativ 9Mbps. Deoarece fluxul de voce are 640kbps, iar cel video are 30Mbps, rezulta ca o valoare acceptabila pentru viteza totală ar fi 40Mbps. Pe stația ''gateway'' ne dorim următoarele setări: | ||
+ | * Viteza maximă de transfer să fie 50Mbps (40Mbps pentru datele propriu zise și o marjă de 20% pentru încapsulare - headere IP, TCP/UDP, Ethernet) | ||
+ | * În caz de congestie, acceptăm un surplus de 128Kbps, pentru 50ms. | ||
+ | Vom seta qdisc-ul ''tbf'', pe interfața ''eth0'' astfel:<code bash> | ||
+ | root@gateway:~# tc qdisc add dev eth0 root tbf rate 50mbit burst 128kbit latency 50ms | ||
+ | </code> | ||
+ | |||
+ | Rulați din nou script-ul ''iperf-gateway.sh'' de pe stația ''gateway''. Asteptați 60 de secunde și inspectați output-ul afișat. Ce observați? Pierderile de pachete pentru conexiunea UDP au dispărut, qdisc-ul ''tbf'' asigurând echitate între conexiuni. | ||
+ | |||
+ | Cu toate că suma vitezelor fluxurilor este de aproximativ 50Mbps, ea nu este distribuită așa cum ne-am fi asteptat. Fluxurile FTP și HTTP ocupa mai mult decât 9Mbps. Motivul este că limitarea a fost facută printr-o metoda **classless**, ce limitează întreg traficul de pe o interfață, fără a avea posibilitatea de a selecta și clasifica diferite tipuri de trafic. Soluția este dată de aplicarea unui qdisc **classful**, ce trateaza in mod separat diferitele clase de trafic. |