Differences

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

Link to this comparison view

saisp:labs:11:contents:02 [2014/05/17 14:06]
mihai.carabas [02. Generarea traficului pe baza unor caracteristici și constrângeri din lumea reală]
saisp:labs:11:contents:02 [2014/05/19 13:01] (current)
alexandru.carp [02. [10p] Generarea traficului pe baza unor caracteristici și constrângeri din lumea reală]
Line 1: Line 1:
-==== 02. Generarea traficului pe baza unor caracteristici și constrângeri din lumea reală ====+==== 02. [10p] Generarea traficului pe baza unor caracteristici și constrângeri din lumea reală ====
  
 În cadrul laboratorului,​ vom explora principalele strategii de QoS din Linux. Pentru a observa comportamentul strategiilor implementate,​ vom folosi un model de trafic, compus din: În cadrul laboratorului,​ vom explora principalele strategii de QoS din Linux. Pentru a observa comportamentul strategiilor implementate,​ vom folosi un model de trafic, compus din:
Line 22: Line 22:
 Dupa cum ați observat la exercițiul anterior, o conexiune ''​iperf''​ client-server generează un singur tip de trafic (implicit, trafic TCP pe portul 5001). Noi dorim să generăm mai multe tipuri de trafic, concomitent,​ pentru a vedea cum se afectează între ele. Deci va trebui să instanțiem mai multe astfel de perechi, în background. Dupa cum ați observat la exercițiul anterior, o conexiune ''​iperf''​ client-server generează un singur tip de trafic (implicit, trafic TCP pe portul 5001). Noi dorim să generăm mai multe tipuri de trafic, concomitent,​ pentru a vedea cum se afectează între ele. Deci va trebui să instanțiem mai multe astfel de perechi, în background.
  
-Vom crea un script cu numele ''​iperf-client1.sh''​ care va porni servere ''​iperf''​ pe stația ''​client1''​ (urmăriți comentariile):<​file bash iperf-client1.sh>​+Vom crea un script cu numele ''​iperf-client1.sh''​ care va porni servere ''​iperf''​ pe stația ''​client1''​ (urmăriți comentariile):<​file bash iperf-client1.sh>​
 #!/bin/bash #!/bin/bash
  
 # Asculta trafic UDP, pe port-ul 8000 - fluxul de voce # Asculta trafic UDP, pe port-ul 8000 - fluxul de voce
-iperf --server --udp --port 8000 > out1.txt ​2> out1.txt ​&+iperf --server --udp --port 8000 &> out1.txt ​ &
  
 # Asculta trafic UDP, pe port-ul 6000 - fluxul video # Asculta trafic UDP, pe port-ul 6000 - fluxul video
-iperf --server --udp --port 6000 > out2.txt 2> out2.txt &+iperf --server --udp --port 6000 &> out2.txt &
  
 # Asculta trafic TCP, pe port-ul 21 - fluxul FTP # Asculta trafic TCP, pe port-ul 21 - fluxul FTP
 # Daca nu se specifica --udp, implicit este TCP # Daca nu se specifica --udp, implicit este TCP
-iperf --server --port 21 > out3.txt 2> out3.txt &+iperf --server --port 21 &> out3.txt &
  
 # Asculta trafic TCP, pe port-ul 80 - fluxul HTTP # Asculta trafic TCP, pe port-ul 80 - fluxul HTTP
 # Daca nu se specifica --udp, implicit este TCP. # Daca nu se specifica --udp, implicit este TCP.
-iperf --server --port 80 > out4.txt 2> out4.txt &+iperf --server --port 80 &> out4.txt &
  
-watch -n 1 cat out*.txt+echo "iperf servers startedNow run the script on the gateway."​
 </​file>​ </​file>​
  
-Vom crea pe stația ''​gateway''​ un script cu numele ''​iperf-gateway.sh''​ care se va conecta la cele servere pornite pe stația ''​client'',​ generând cele tipuri de trafic prezentate anterior. Simulăm tipurile de trafic prin generare de pachete ce au caracteristici asemănătoare cu cele din cazurile reale. Urmăriți comentariile din fișier:<​file bash iperf-gateway.sh>​+Vom crea pe stația ''​gateway''​ un script cu numele ''​iperf-gateway.sh''​ care se va conecta la cele servere pornite pe stația ''​client1'',​ generând cele tipuri de trafic prezentate anterior. Simulăm tipurile de trafic prin generare de pachete ce au caracteristici asemănătoare cu cele din cazurile reale. Urmăriți comentariile din fișier:<​file bash iperf-gateway.sh>​
 #!/bin/bash #!/bin/bash
  
Line 51: Line 51:
 # Fiecare datagrama are dimensiunea de 128 octeti (tipic pentru pachetele de voce) # Fiecare datagrama are dimensiunea de 128 octeti (tipic pentru pachetele de voce)
 # Se trimite la o rata de 640Kbps (dorim sa simulam 10 conversatii VoIP, a cate 64Kbps) # Se trimite la o rata de 640Kbps (dorim sa simulam 10 conversatii VoIP, a cate 64Kbps)
-iperf --client $IP_VM --port 8000 --udp --len 128 --bandwidth 640K --time $TIME &+iperf -x SC --client $IP_VM --port 8000 --udp --len 128 --bandwidth 640K --time $TIME > out3.txt 2> /​dev/​null ​&
  
 # Initiaza un flux UDP catre server, pe portul 6000 # Initiaza un flux UDP catre server, pe portul 6000
 # Fiecare datagrama are dimensiunea maxima (pentru ca nu o specificam explicit) # Fiecare datagrama are dimensiunea maxima (pentru ca nu o specificam explicit)
 # Se trimite la o rata de 30Mbps # Se trimite la o rata de 30Mbps
-iperf --client $IP_VM --port 6000 --udp --bandwidth 30M --time $TIME &+iperf -x SC --client $IP_VM --port 6000 --udp --bandwidth 30M --time $TIME > out4.txt 2> /​dev/​null ​&
  
 # Initiaza un flux TCP catre server, pe portul 80 (HTTP) # Initiaza un flux TCP catre server, pe portul 80 (HTTP)
 # Limitam dimensiunea unui segment la 512 octeti # Limitam dimensiunea unui segment la 512 octeti
-iperf --client $IP_VM --port 80 --mss 512 --time $TIME &+iperf -x SC --client $IP_VM --port 80 --mss 512 --time $TIME > out1.txt 2> /​dev/​null ​&
  
 # Initiaza un flux TCP catre server, pe portul 21 (FTP) # Initiaza un flux TCP catre server, pe portul 21 (FTP)
 # Dimensiunea unui segment va fi de 1400 octeti (dorim ca fluxul FTP sa fie mai agresiv) # Dimensiunea unui segment va fi de 1400 octeti (dorim ca fluxul FTP sa fie mai agresiv)
 # Dimensiunea ferestrei TCP va fi de 256K (dorim ca fluxul FTP sa fie mai agresiv) # Dimensiunea ferestrei TCP va fi de 256K (dorim ca fluxul FTP sa fie mai agresiv)
-iperf --client $IP_VM --port 21 --mss 1400 --window 256K --time $TIME &+iperf -x SC --client $IP_VM --port 21 --window 256K --mss 1400 --time $TIME > out2.txt 2> /​dev/​null ​& 
 + 
 +wait 
 +for i in out*; do echo; cat $i; done 
 +rm out*.txt
 </​file>​ </​file>​
 +
 +Rulați script-urile create anterior (''​iperf-client1.sh''​ pe stația ''​client1''​ și ''​iperf-gateway.sh''​ pe stația ''​gateway''​). Așteptați 60 de secunde și inspectați output-ul de pe stația ''​gateway''​. Ce observați?
 +
 +Observăm că fluxurile UDP au suferit **packet loss**, ele neavând nici un mecanism pentru retransmitere sau reglare a vitezei în funcție e starea legăturii. Pentru fluxul video, o pierdere de pachete de câteva procente este inacceptabilă. În continuare vom studia mecanismele implicite de QoS din Linux și cum putem preveni aceste pierderi de pachete.
saisp/labs/11/contents/02.1400324768.txt.gz · Last modified: 2014/05/17 14:06 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