This shows you the differences between two versions of the page.
isrm:laboratoare:new:04 [2020/03/13 23:07] vlad.traista [[02] Capacitatea ideală simulare TCP] |
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. |
- | ====== [00] Pregătire laborator ====== | + | {{ :isrm:laboratoare:rtscts.gif |}} |
- | Intrați în directorul ''/home/student/Desktop/ISRM/ns-3-dev''. Rulați comenzile: | + | 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]] | ||
- | <code bash> | + | Despre trafic TCP vă recomandăm reîmprospătarea cunoștințelor folosind TCP/IP Illustrated |
- | git remote add isrm https://gitlab.com/b12mihai1/ns-3-dev.git | + | ====== [00] Pregătire laborator ====== |
- | git remote update | + | |
- | git checkout -b isrm_2020 remotes/isrm/isrm_2020 | + | |
- | git submodule init | + | |
- | git submodule update --remote --merge | + | |
- | git submodule foreach git pull origin master # in caz ca cea anterioara nu ne muta pe ultimul commit din master | + | |
- | </code> | + | |
- | 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: | ||
- | <code bash> | + | <note important> |
- | git clone https://gitlab.com/b12mihai1/ns-3-dev.git ~/ns-3-dev | + | Pe [[:isrm:mv|mașina virtuală]] aveți tot ce trebuie în ''/home/student/ns-3-dev''. |
- | 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> | + | |
- | Pentru a realiza grafice, trebuie sa instalam si pachetele de Python: | + | Dacă lucrați pe alt dispozitiv trebuie să rulați comenzile: |
<code bash> | <code bash> | ||
- | student@isrm-vm-2020:~$ sudo apt-get update | + | student@isrm-vm-2020:~$ git clone https://gitlab.com/nsnam/ns-3-dev.git |
- | student@isrm-vm-2020:~$ sudo apt-get install python3-pip | + | student@isrm-vm-2020:~$ cd ~/ns-3-dev |
- | student@isrm-vm-2020:~$ pip3 install matplotlib jupyter | + | student@isrm-vm-2020:~/ns-3-dev$ git checkout -b ns-332-rel ns-3.32 |
- | student@isrm-vm-2020:~$ sudo ln -s ~/.local/bin/jupyter-notebook /usr/bin/jupyter-notebook | + | student@isrm-vm-2020:~$ cd ~/ns-3-dev/examples |
+ | student@isrm-vm-2020:~/ns-3-dev/examples$ git clone https://github.com/isrm-lab/ns3-labs.git | ||
+ | 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> | ||
Pentru a lansa aplicatia de Jupyter Notebook, rulati urmatoarea comanda: | Pentru a lansa aplicatia de Jupyter Notebook, rulati urmatoarea comanda: | ||
Line 49: | Line 42: | ||
</code> | </code> | ||
+ | Daca sunt probleme cu plot-ul (in special in Windows Subsystem for Linux) mai e nevoie de acest pachet: | ||
+ | |||
+ | <code bash> | ||
+ | sudo apt install -y python3-tk | ||
+ | </code> | ||
====== [01] Capacitatea ideală simulare UDP 2 noduri RTS/CTS ====== | ====== [01] Capacitatea ideală simulare UDP 2 noduri RTS/CTS ====== | ||
+ | |||
+ | Atentie trebuie rulat pentru 802.11b: | ||
+ | |||
+ | <code bash> | ||
+ | sed -i 's/WIFI_PHY_STANDARD_80211g/WIFI_PHY_STANDARD_80211b/g' ./ns3-labs/lab-03-04-capacity/lab3.cc | ||
+ | </code> | ||
+ | |||
Re-rulați simularea de capacitate ideală trafic UDP cu 2 noduri activând RTS/CTS. | Re-rulați simularea de capacitate ideală trafic UDP cu 2 noduri activând RTS/CTS. | ||
Line 63: | Line 68: | ||
Inspectați cele trei trace-uri generate: ''wifi-lab3.tr, AccessPoint-0-0.pcap Station-1-0.pcap'' | 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 ====== | ====== [02] Capacitatea ideală simulare TCP ====== | ||
Line 207: | Line 223: | ||
Îmbunătățește RTS/CTS situația TCP-ului? | Îmbunătățește RTS/CTS situația TCP-ului? | ||
- | ====== [04] 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. |