Differences

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

Link to this comparison view

saisp:labs:11:contents:03 [2014/01/26 13:07]
127.0.0.1 external edit
saisp:labs:11:contents:03 [2014/05/18 14:29] (current)
mihai.carabas
Line 1: Line 1:
-==== 03. Lorem ipsum ====+==== 03. [10p] Clasificarea folosind ToS ====
  
-...+În Linux, strategiile de QoS se inspectează și configurează folosind comanda ''​tc''​Termenul folosit pentru strategiile de QoS este ''​qdisc''​ (de la ''​queueing discipline''​).
  
 +Afisați detalii despre qdisc-ul implicit, asociat interfeței ''​eth0''​ de pe stația ''​gateway'':<​code>​
 +# tc qdisc show dev eth0
 +qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap ​ 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 +</​code>​
  
 +Observați că qdisc-ul implicit este ''​pfifo_fast''​ (strategia implicită de QoS):
 +  * Numele vine de la ''​priority FIFO''​.
 +  * Este un qdisc **classless** (nu putem clasifica traficul și limita traficul, îl putem doar prioritiza)
 +  * Nu este o simpla coada FIFO, ci conține 3 (sub)cozi, numite 0, 1 si 2 (fiecare din ele fiind FIFO). Cât timp coada coada ''​0''​ conține pachete, cozile 1 si 2 NU vor fi servite.
 +
 +Ce reprezintă ''​priomap ​ 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1''?​ În Linux, kernel-ul asociază fiecărui pachet o prioritate, în functie de campul TOS (Type of Service) din header-ul IP. Prioritatea ne selectează una din cele 3 (sub)cozi din pfifo_fast: coada 0, 1 sau 2. Asocierile se fac după următorul tabel:<​code>​
 +TOS     ​Means ​                   Linux Priority ​   Band
 +-------------------------------------------------------
 +0x0     ​Normal-Service ​          0 Best Effort ​    1
 +0x2     ​Minimize-Monetary Cost   1 Filler ​         2
 +0x4     ​Maximize-Reliability ​    0 Best Effort ​    1
 +0x6     ​mmc+mr ​                  0 Best Effort ​    1
 +0x8     ​Maximize-Throughput ​     2 Bulk            2
 +0xa     ​mmc+mt ​                  2 Bulk            2
 +0xc     ​mr+mt ​                   2 Bulk            2
 +0xe     ​mmc+mr+mt ​               2 Bulk            2
 +0x10    Minimize-Delay ​          6 Interactive ​    0
 +0x12    mmc+md ​                  6 Interactive ​    0
 +0x14    mr+md                    6 Interactive ​    0
 +0x16    mmc+mr+md ​               6 Interactive ​    0
 +0x18    mt+md                    4 Int. Bulk       1
 +0x1a    mmc+mt+md ​               4 Int. Bulk       1
 +0x1c    mr+mt+md ​                4 Int. Bulk       1
 +0x1e    mmc+mr+mt+md ​            4 Int. Bulk       1
 +</​code>​
 +
 +Observăm că pachetele normale (cu TOS 0x00) sunt introduse în (sub)coada 1. La punctul anterior, fluxul UDP avea o pierdere semnificativă de pachete. O primă soluție ar fi marcarea pachetelor de voce și video cu un ToS favorabil (de exemplu, ''​0x10''​),​ pentru a avea prioritate mai mare față de pachetele. Marcarea se realizează folosind lanțul ''​mangle''​ al comenzii ''​iptables'':<​code>​
 +root@gateway:​~# ​ iptables -t mangle -A OUTPUT -p udp --dport 6000:8000 -j TOS --set-tos Minimize-Delay
 +</​code>​
 +Comanda anterioară marchează toate pachetele UDP cu porturile în intervalul 6000 și 8000 cu tag-ul ''​Minimize-Delay''​. Se observă că se poate folosi numele tag-ului în loc de valoare (''​0x10''​).
 +
 +Rulați din nou scriptul ''​iperf-gateway.sh''​ pe stația ''​gateway''​ și observați că procentele pierdute s-au diminuat foarte puțin. Nu e suficientă doar o prioritizare a pachetelor.
saisp/labs/11/contents/03.1390734467.txt.gz · Last modified: 2014/05/18 11:35 (external edit)
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