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:

  • trafic de voce (UDP, port 8000)
  • trafic video (UDP, port 6000)
  • trafic FTP (TCP, port 21)
  • trafic HTTP (TCP, port 80)

Traficul nu va fi real ci îl vom simula cu ajutorul lui iperf prezentat anterior.

Fiecare tip de trafic din cele considerate mai sus are anumite caracteristici și constrângeri. Pentru o funcționare optimă, trebuie să ținem seama de acestea:

  • trafic de voce
    • sensibil la: delay, jitter, packet loss
    • consum de banda: mic, constant
  • trafic video
    • sensibil la: delay, jitter, packet loss
    • consum de banda: mare, constant
  • trafic FTP si HTTP
    • sensibil la: nimic
    • consum de banda: mare, variabil, greedy (tinde sa “umple” intreaga latime de banda a legaturii)

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 4 servere iperf pe stația client1 (urmăriți comentariile):

iperf-client1.sh
#!/bin/bash
 
# Asculta trafic UDP, pe port-ul 8000 - fluxul de voce
iperf --server --udp --port 8000 &> out1.txt  &
 
# Asculta trafic UDP, pe port-ul 6000 - fluxul video
iperf --server --udp --port 6000 &> out2.txt &
 
# Asculta trafic TCP, pe port-ul 21 - fluxul FTP
# Daca nu se specifica --udp, implicit este TCP
iperf --server --port 21 &> out3.txt &
 
# Asculta trafic TCP, pe port-ul 80 - fluxul HTTP
# Daca nu se specifica --udp, implicit este TCP.
iperf --server --port 80 &> out4.txt &
 
echo "iperf servers started. Now run the script on the gateway."

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:

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

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.txt · Last modified: 2014/05/19 13:01 by alexandru.carp
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