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:01]
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/sh+#!/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 4 servere pornite pe stația ''​client1'',​ generând cele 4 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
 +
 +IP_VM="​192.168.1.1"​
 +TIME=60 # Durata unui test
 +
 +# Initiaza un flux UDP catre server, pe portul 8000
 +# 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)
 +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
 +# Fiecare datagrama are dimensiunea maxima (pentru ca nu o specificam explicit)
 +# Se trimite la o rata de 30Mbps
 +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)
 +# Limitam dimensiunea unui segment la 512 octeti
 +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)
 +# 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)
 +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>​
 +
 +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.1400324467.txt.gz · Last modified: 2014/05/17 14:01 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