Exerciții
Scheletul laboratorului se regaseste la adresa de aici. Funcționalitatea disponibilă este descrisă în README.md. În continuare, vom folosi Mininet pentru a simula o topologie formată din 3 host-uri conectate la un router:
sudo python3 topo.py
.
Astăzi vom folosi matplotlib
pentru a desena grafice.
sudo apt install python3-pip
sudo pip3 install matplotlib
Astazi vom studia comportamentul TCP in mai multe situatii, vom urmarii live cum TCP actualizeaza CWND si cum acest lucru afecteaza throughput-ul.
Vă punem la dispoziție un script de Python, run_client.py
, care rulează un client de iperf și desenează un grafic interactiv cu throughput-ul și congestion window-ul (cwnd) clientului. Adresa IP a lui H2 este ip address show -> 172.16.0.100
. Din topo.py
puteți modifica parametrii link-urilor.
1. Pe h2
rulați un server de iperf. Pe h1
rulați scriptul run_client.py
și urmăriți graficul. După
30 de secunde deschideți pe h3
un al doilea client de iperf. Urmăriți cele două grafice, ce se întâmplă cu
throughput-ul și cwnd? Cum sunt impartite intre h1
si h3
? Modificati valorile bandwidth-ului la 30Mbps
,
se modifica comportamentul?
2. Vom reproduce scenariul anterior, doar că pe H1 vom rula scriptul run_client.py
, iar pe h3
vom porni n
instanțe de clienți folosind iperf -c 172.16.0.100
. Ce putem spune că se întâmplă în acest caz?
3. De data aceasta vom rula două servere iperf pe h2
, unul de UDP și unul de TCP. Pe h1
vom
rula run_client.py
, iar pe h3
vom rula un client de UDP cu un bandwidth (-b) cu valori cuprinse
între 1 Mb - 10 Mb. Ce observăm?
4. Parcurgeti subsectiunea Modeling TCP congestion control. Vom modifica delay-ul din topo.py
pe link-ul dintre router si h3
sa fie 5ms.
Cum va fi impartit throughput-ul intre h1
si h3
?
Hint: CWND=√83∗p=k√p și Throughput=√32∗MSSRTT∗√p
5. Vom face un client de iperf. Acesta este un simplu program ce se conectează la un server, trimite un număr de bytes pentru t
secunde și la final afișează throughput-ul.