This shows you the differences between two versions of the page.
|
isrm:laboratoare:new:05 [2020/03/26 09:18] vlad.traista [Pregătirea laboratorului] |
isrm:laboratoare:new:05 [2024/12/04 09:16] (current) dragos.niculescu |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| ====== Materiale ajutătoare ====== | ====== Materiale ajutătoare ====== | ||
| - | * Pentru cei curioși, mai ales pentru matematica din spate, recomandăm, pentru acest laborator, capitolul 2 din cartea [[http://web.cs.ucdavis.edu/~liu/289I/Material/book-goldsmith.pdf|Wireless Communications - Andrea Goldsmith]] | + | <hidden> |
| + | |||
| + | fix lab5.cc to print MAC PH TX RX correctly | ||
| + | </hidden> | ||
| + | |||
| + | * Pentru cei curioși, mai ales pentru matematica din spate, recomandăm, pentru acest laborator, capitolul 2 din cartea [[https://ctipub-my.sharepoint.com/:b:/g/personal/mbarbulescu_upb_ro/ESbjitohgCNNmTHzyAjT-xcBahQw5XPlZKFOAMOLLMLSdQ?e=VstVsm|Wireless Communications - Andrea Goldsmith]] | ||
| * Celor curioși cu privire la bazele mecanismelor de retransmisie din TCP recomandăm [[http://www.pcvr.nl/tcpip/tcp_time.htm|capitolul 21 din TCP Illustrated]] | * Celor curioși cu privire la bazele mecanismelor de retransmisie din TCP recomandăm [[http://www.pcvr.nl/tcpip/tcp_time.htm|capitolul 21 din TCP Illustrated]] | ||
| Line 9: | Line 14: | ||
| Acest model calculează puterea la receptor după următoarea formulă | Acest model calculează puterea la receptor după următoarea formulă | ||
| - | [[https://www.nsnam.org/doxygen/classns3_1_1_log_distance_propagation_loss_model.html#details|descrisă în pagina ns-3]] | + | [[https://www.nsnam.org/docs/models/html/propagation.html#logdistancepropagationlossmodel|descrisă în pagina ns-3]] |
| + | |||
| Atributele pe care le putem controla din ns-3 sunt: exponentul, distanța de referință la care atenuarea e calculată și atenuarea de referință. | Atributele pe care le putem controla din ns-3 sunt: exponentul, distanța de referință la care atenuarea e calculată și atenuarea de referință. | ||
| Line 15: | Line 22: | ||
| ====== Modelul Three Log Distance ====== | ====== Modelul Three Log Distance ====== | ||
| - | Este la fel ca log distance însă folosește trei exponenți diferiți pentru "near, middle, far". Este descris [[https://www.nsnam.org/doxygen/classns3_1_1_three_log_distance_propagation_loss_model.html#details|matematic aici]]. ns-3 ne oferă posibilitatea de a configura distanțele și exponenții pentru "near, middle, far" și atenuarea de referință. | + | Este la fel ca log distance însă folosește trei exponenți diferiți pentru "near, middle, far". Este descris [[https://www.nsnam.org/doxygen/classns3_1_1_three_log_distance_propagation_loss_model.html#details|matematic în manualul ns3]]. |
| + | |||
| + | $$L = L_0 + 10 n \log(\frac{d}{d_0})$$ | ||
| + | |||
| + | |||
| + | ns-3 ne oferă posibilitatea de a configura distanțele și exponenții pentru "near, middle, far" și atenuarea de referință. | ||
| ====== Modelul Nakagami ====== | ====== Modelul Nakagami ====== | ||
| - | Este o generalizare a [[https://en.wikipedia.org/wiki/Rayleigh_fading|modelului popular Rayleigh]] (îl găsiți și în Goldsmith - TODO pagina). Descrierea lui este [[https://www.nsnam.org/doxygen/classns3_1_1_nakagami_propagation_loss_model.html#details|aici]], dar și în paper-ul scris de M. Nakagami: {{:isrm:laboratoare:new:nakagami1960.pdf|}}. | + | Este o generalizare a [[https://en.wikipedia.org/wiki/Rayleigh_fading|modelului popular Rayleigh]]. Descrierea lui este [[https://www.nsnam.org/doxygen/classns3_1_1_nakagami_propagation_loss_model.html#details|aici]], dar și în paper-ul scris de M. Nakagami: {{:isrm:laboratoare:new:nakagami1960.pdf|}}. |
| ====== Modelul Friis ====== | ====== Modelul Friis ====== | ||
| - | https://www.nsnam.org/doxygen/classns3_1_1_friis_propagation_loss_model.html#details | + | |
| + | Formula clasică din curs [[ https://www.nsnam.org/docs/models/html/propagation.html#friispropagationlossmodel | Friis ]]. | ||
| ====== Combaterea pierderilor ====== | ====== Combaterea pierderilor ====== | ||
| Line 90: | Line 103: | ||
| ====== Pregătirea laboratorului ====== | ====== Pregătirea laboratorului ====== | ||
| + | |||
| + | <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> | ||
| - | student@isrm:~$ git clone https://gitlab.com/b12mihai1/ns-3-dev.git | + | student@isrm-vm-2020:~$ git clone https://gitlab.com/nsnam/ns-3-dev.git |
| - | student@isrm:~$ cd ns-3-dev/ | + | student@isrm-vm-2020:~$ cd ~/ns-3-dev |
| - | student@isrm:~/ns-3-dev$ git checkout -b isrm_2020 remotes/origin/isrm_2020 | + | student@isrm-vm-2020:~/ns-3-dev$ git checkout -b ns-332-rel ns-3.32 |
| - | student@isrm:~/ns-3-dev$ git submodule init | + | student@isrm-vm-2020:~$ cd ~/ns-3-dev/examples |
| - | student@isrm:~/ns-3-dev$ git submodule update --remote --merge | + | student@isrm-vm-2020:~/ns-3-dev/examples$ git clone https://github.com/isrm-lab/ns3-labs.git |
| - | student@isrm:~/ns-3-dev$ git submodule foreach git pull origin master | + | student@isrm-vm-2020:~$ cd ~/ns-3-dev |
| - | student@isrm:~/ns-3-dev$ cd scratch/ | + | student@isrm-vm-2020:~$ ./waf configure --build-profile=debug --enable-examples --enable-tests |
| - | student@isrm:~/ns-3-dev/scratch$ ln -s ../examples/ns3-labs/lab-05-06-mcs/lab5.cc lab5.cc | + | student@isrm-vm-2020:~$ ./waf build -j4 |
| - | student@isrm:~/ns-3-dev/scratch$ cd .. | + | |
| - | student@isrm:~/ns-3-dev$ ./waf configure --build-profile=debug --enable-examples --enable-tests && ./waf build -j4 | + | |
| - | student@isrm:~/ns-3-dev$ ./waf --run "lab5 --apManager=ns3::ConstantRateWifiManager --phyRate=ErpOfdmRate54Mbps --propagationModel=0" | + | |
| </code> | </code> | ||
| + | </note> | ||
| Parametrii pe care simularea noastră îi primește: | Parametrii pe care simularea noastră îi primește: | ||
| Line 118: | Line 134: | ||
| cmd.AddValue("pcap", "Enable/disable PCAP Tracing", pcapTracing); | cmd.AddValue("pcap", "Enable/disable PCAP Tracing", pcapTracing); | ||
| cmd.AddValue("tries", "Max number of attempts to send frame (Short and Long Retry limit for station)", tries); | cmd.AddValue("tries", "Max number of attempts to send frame (Short and Long Retry limit for station)", tries); | ||
| - | </code> | ||
| - | |||
| - | Pentru a realiza grafice, trebuie sa instalam si pachetele de Python: | ||
| - | <code bash> | ||
| - | student@isrm-vm-2020:~$ sudo apt-get update | ||
| - | 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> | ||
| Line 247: | Line 255: | ||
| Pentru ''tries=1'' alegeți ultimele două coloane pentru a contoriza pachetele trimise/primite - sunt extrase la nivel PHY. | Pentru ''tries=1'' alegeți ultimele două coloane pentru a contoriza pachetele trimise/primite - sunt extrase la nivel PHY. | ||
| - | Pentru ''tries=4,10'' alegeți coloanele 3-4 pentru a contoriza pachetele trimise/primite - sunt extrase la nivel MAC. | + | Pentru ''tries=4,10'' alegeți coloanele 4-5 pentru a contoriza pachetele trimise/primite - sunt extrase la nivel MAC. |
| + | |||
| + | <note important>Modelul ramane acelasi: Nakagami - pentru aceste rulari. Comanda este: | ||
| + | |||
| + | <code bash> | ||
| + | ./waf --run "lab5 --apManager=ns3::ConstantRateWifiManager --phyRate=ErpOfdmRate54Mbps --propagationModel=0 --tries=1" | ||
| + | </code> | ||
| + | |||
| + | Din ea veti varia numarul de ''tries'' | ||
| + | </note> | ||
| Line 273: | Line 290: | ||
| * Activați RTS/CTS pentru acest caz (''tries=1''). De ce nu se îmbunătățește situația TCP-ului? | * Activați RTS/CTS pentru acest caz (''tries=1''). De ce nu se îmbunătățește situația TCP-ului? | ||
| - | Plotați capacitatea obținută de TCP pentru ''tries=4, 10''. Explicați diferențele față de comportarea UDP în același setup. Observație: Capacitatea TCP crește când reîncercările la nivel MAC ascund pierderile. | + | Plotați capacitatea si packet delivery ratio obținute de TCP pentru ''tries=4, 10''. Explicați diferențele față de comportarea UDP în același setup. Observație: Capacitatea TCP crește când reîncercările la nivel MAC ascund pierderile. |
| **Bonus**: Vă puteți adăuga trace pentru pachete pierdute la nivel MAC în simulare astfel (vedeți și [[https://www.nsnam.org/docs/release/3.29/doxygen/_trace_source_list.html|documentația ns-3 - All TraceSources]]): | **Bonus**: Vă puteți adăuga trace pentru pachete pierdute la nivel MAC în simulare astfel (vedeți și [[https://www.nsnam.org/docs/release/3.29/doxygen/_trace_source_list.html|documentația ns-3 - All TraceSources]]): | ||