This shows you the differences between two versions of the page.
isrm:laboratoare:new:04 [2020/03/13 20:47] mbarbulescu created |
isrm:laboratoare:new:04 [2024/03/19 09:04] (current) mbarbulescu [[00] Pregătire laborator] |
||
---|---|---|---|
Line 3: | Line 3: | ||
====== Concepte noi ====== | ====== Concepte noi ====== | ||
- | TODO: despre RTS/CTS | + | Un mod explicit de rezervare a mediului se face prin intermefdiul pachetelor ''RTS/CTS''. Emițătorul trimite RTS, iar receptorul răspunde cu CTS. În pașii 3 și 4 se transmit datele și confirmarea ACK în modul obișnuit. Diferența este acum că nodurile vecine au ocazia să estimeze durata conversației în 4 pași prin citirea câmpului **Duration** fie din RTS, fie din CTS. |
+ | {{ :isrm:laboratoare:rtscts.gif |}} | ||
+ | |||
+ | Mai multe explicații despre RTS/CTS puteți citi: | ||
+ | * [[https://mrncciew.com/2014/10/26/cwap-802-11-ctrl-rtscts/|pe mrnccview]] | ||
+ | * Sec 7.5.1.1 RTS/CTS frame exchange din [[https://wi-fi.cs.pub.ro/~dniculescu/didactic/isrm/doc/%20Next%20Generation%20Wireless%20LANs_%20Throughput,%20Robustness,%20and%20Reliability%20in%20802.11n%20%5b2008%5d.pdf|Perahia - Next generation wireless]] | ||
+ | |||
+ | Despre trafic TCP vă recomandăm reîmprospătarea cunoștințelor folosind TCP/IP Illustrated | ||
====== [00] Pregătire laborator ====== | ====== [00] Pregătire laborator ====== | ||
- | Intrați în directorul ''/home/student/Desktop/ISRM/ns-3-dev''. Rulați comenzile: | ||
+ | <note important> | ||
+ | Pe [[:isrm:mv|mașina virtuală]] aveți tot ce trebuie în ''/home/student/ns-3-dev''. | ||
+ | |||
+ | Dacă lucrați pe alt dispozitiv trebuie să rulați comenzile: | ||
<code bash> | <code bash> | ||
- | git remote add isrm https://gitlab.com/b12mihai1/ns-3-dev.git | + | student@isrm-vm-2020:~$ git clone https://gitlab.com/nsnam/ns-3-dev.git |
- | git remote update | + | student@isrm-vm-2020:~$ cd ~/ns-3-dev |
- | git checkout -b isrm_2020 remotes/isrm/isrm_2020 | + | student@isrm-vm-2020:~/ns-3-dev$ git checkout -b ns-332-rel ns-3.32 |
- | git submodule init | + | student@isrm-vm-2020:~$ cd ~/ns-3-dev/examples |
- | git submodule update --remote --merge | + | student@isrm-vm-2020:~/ns-3-dev/examples$ git clone https://github.com/isrm-lab/ns3-labs.git |
- | git submodule foreach git pull origin master # in caz ca cea anterioara nu ne muta pe ultimul commit din master | + | student@isrm-vm-2020:~$ cd ~/ns-3-dev |
+ | student@isrm-vm-2020:~$ ./waf configure --build-profile=debug --enable-examples --enable-tests | ||
+ | student@isrm-vm-2020:~$ ./waf build -j4 | ||
</code> | </code> | ||
+ | </note> | ||
- | Dacă directorul nu există rulați comenzile de mai jos și țineți minte unde aveți ''ns-3-dev'' folder cu toate lucrurile compilate: | + | Pentru a lansa aplicatia de Jupyter Notebook, rulati urmatoarea comanda: |
<code bash> | <code bash> | ||
- | git clone https://gitlab.com/b12mihai1/ns-3-dev.git ~/ns-3-dev | + | student@isrm-vm-2020:~$ jupyter-notebook |
- | cd ~/ns-3-dev | + | |
- | git checkout -b isrm_2020 remotes/origin/isrm_2020 | + | |
- | git submodule init | + | |
- | git submodule update --remote --merge | + | |
- | git submodule foreach git pull origin master | + | |
- | ./waf configure --build-profile=debug --enable-examples --enable-tests && ./waf build -j4 | + | |
</code> | </code> | ||
- | Pentru a realiza grafice, trebuie sa instalam si pachetele de Python: | + | Pe parcursul laboratorului, vom avea nevoie de utilitarul ''tshark'': |
<code bash> | <code bash> | ||
- | student@isrm-vm-2020:~$ sudo apt-get update | + | student@isrm-vm-2020:~$ sudo apt-get install tshark |
- | student@isrm-vm-2020:~$ sudo apt-get install python3-pip | + | |
- | student@isrm-vm-2020:~$ pip3 install matplotlib jupyter | + | |
- | student@isrm-vm-2020:~$ sudo ln -s ~/.local/bin/jupyter-notebook /usr/bin/jupyter-notebook | + | |
</code> | </code> | ||
- | Pentru a lansa aplicatia de Jupyter Notebook, rulati urmatoarea comanda: | + | Daca sunt probleme cu plot-ul (in special in Windows Subsystem for Linux) mai e nevoie de acest pachet: |
<code bash> | <code bash> | ||
- | student@isrm-vm-2020:~$ jupyter-notebook | + | sudo apt install -y python3-tk |
</code> | </code> | ||
+ | ====== [01] Capacitatea ideală simulare UDP 2 noduri RTS/CTS ====== | ||
+ | |||
+ | Atentie trebuie rulat pentru 802.11b: | ||
- | Pe parcursul laboratorului, vom avea nevoie de utilitarul ''tshark'': | ||
<code bash> | <code bash> | ||
- | student@isrm-vm-2020:~$ sudo apt-get install tshark | + | sed -i 's/WIFI_PHY_STANDARD_80211g/WIFI_PHY_STANDARD_80211b/g' ./ns3-labs/lab-03-04-capacity/lab3.cc |
</code> | </code> | ||
- | ====== [01] Capacitatea ideală simulare TCP ====== | + | |
+ | Re-rulați simularea de capacitate ideală trafic UDP cu 2 noduri activând RTS/CTS. | ||
+ | |||
+ | <code bash> | ||
+ | mihai@wormhole:~/facultate/ns-3-dev$ ./waf --run "lab3 --numberOfNodes=2 \ | ||
+ | --payloadSize=1400 --offeredRate=11Mbps --phyRate=DsssRate11Mbps \ | ||
+ | --simulationTime=2 --tracing=true --enableRtsCts=true" | ||
+ | </code> | ||
+ | |||
+ | De ce este throughput-ul mai prost la UDP folosind RTS/CTS? Comparați cu rezultatul obținut la laboratorul trecut și cu cea dată de formulă. | ||
+ | |||
+ | Inspectați cele trei trace-uri generate: ''wifi-lab3.tr, AccessPoint-0-0.pcap Station-1-0.pcap'' | ||
+ | |||
+ | Ca template de bash pentru rularea scriptului, puteti folosi urmatorul template: | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | for mcs in 1 2 3 4; do | ||
+ | for payload in 100 200 300 400; do | ||
+ | |||
+ | ./waf --run "lab3 --numberOfNodes=2 --payloadSize=$payload --offeredRate=11Mbps --phyRate=$mcs --simulationTime=2 --tracing=true --enableRtsCts=true" | ||
+ | done | ||
+ | done | ||
+ | </code> | ||
+ | ====== [02] Capacitatea ideală simulare TCP ====== | ||
Repetați experimentele de la traficul UDP din [[:isrm:laboratoare:new:03|laborator 3, exercițiul 3]] folosind trafic de tip TCP. | Repetați experimentele de la traficul UDP din [[:isrm:laboratoare:new:03|laborator 3, exercițiul 3]] folosind trafic de tip TCP. | ||
Line 85: | Line 115: | ||
Scopul acestui task este să repetați graficele precedente/teoretice folosind simularea în ''ns-3''. Puncte de evaluare pentru ''payloadSize'': 20, 50, 100, 500, 1000, 1500. | Scopul acestui task este să repetați graficele precedente/teoretice folosind simularea în ''ns-3''. Puncte de evaluare pentru ''payloadSize'': 20, 50, 100, 500, 1000, 1500. | ||
+ | |||
+ | <note important> | ||
+ | Pentru a schimba standardul folosit in cadrul scriptului, modificati la [[https://github.com/isrm-lab/ns3-labs/blob/master/lab-03-04-capacity/lab3.cc#L111|linia]]. | ||
+ | </note> | ||
<note important> | <note important> | ||
Line 176: | Line 210: | ||
</note> | </note> | ||
- | ====== [02] Capacitatea ideală simulare TCP cu RTS/CTS ====== | + | ====== [03] Capacitatea ideală simulare TCP cu RTS/CTS ====== |
Repetați experimentele de mai sus folosind RTS/CTS pentru traficul de tip TCP. | Repetați experimentele de mai sus folosind RTS/CTS pentru traficul de tip TCP. | ||
Line 189: | Line 223: | ||
Îmbunătățește RTS/CTS situația TCP-ului? | Îmbunătățește RTS/CTS situația TCP-ului? | ||
- | ====== [03] Capacitatea ideală simulare UDP/TCP multiple downlink ====== | + | ====== [04] Capacitatea ideală simulare UDP/TCP multiple uplink ====== |
- | Vom evalua capacitatea în condiții noi: client unic vs. multipli, uplink vs downlink. Topologia este una specifică modului infrastructură, cu un AP și mai mulți clienți asociați, dar cadrele de beacon, autentificare, și asociere sunt omise pentru simplitate. Realizați graficul doar pentru ''802.11b'', ''payloadSize=1460'', ''phyRate=11Mbps'' | + | Vom evalua capacitatea în condiții noi: client unic vs. multipli uplink. Topologia este una specifică modului infrastructură, cu un AP și mai mulți clienți asociați, dar cadrele de beacon, autentificare și asociere sunt omise pentru simplitate. Realizați graficul doar pentru ''802.11b'', ''payloadSize=1460'', ''phyRate=11Mbps'' |
- | Scenariul este: downlink - sursa: AP, destinații: 1..30 clienți (scriptul original) trafic întai UDP apoi TCP. | + | Scenariul pentru uplink este urmatorul: receptorul este reprezentat de AP, iar sursele sunt clienții 1..30 (pana la 30 de clienti). |
- | Se variază doar numărul de clienți, și se plotează debitul cumulativ pentru toate fluxurile. | + | Folosind acelasi script ca in exercitiile anterioare si variind doar numărul de clienți, construiti grafice care sa arate evolutia debitului cumulativ pentru toate fluxurile in functie de numarul de clienti. Realizati aceste grafice atat pentru trafic UDP, cat si pentru trafic TCP. |