Differences

This shows you the differences between two versions of the page.

Link to this comparison view

isrm:laboratoare:new:05 [2020/03/21 17:42]
vlad.traista [[02] Packet delivery ratio UDP]
isrm:laboratoare:new:05 [2023/03/28 12:17] (current)
dragos.niculescu [Modelul Friis]
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]]+  * 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 9:
  
 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 17:
 ====== 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 98:
  
 ====== 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 update ​--init --recursive +student@isrm-vm-2020:~$ cd ~/ns-3-dev/examples 
-student@isrm:​~/​ns-3-dev$ cd scratch+student@isrm-vm-2020:​~/​ns-3-dev/​examplesgit clone https://​github.com/isrm-lab/ns3-labs.git 
-student@isrm:​~/​ns-3-dev/​scratchln -s ../examples/ns3-labs/​lab-05-06-mcs/​lab5.cc lab5.cc +student@isrm-vm-2020:~$ cd ~/​ns-3-dev 
-student@isrm:​~/​ns-3-dev/scratch$ cd .. +student@isrm-vm-2020:~$ ./waf configure --build-profile=debug --enable-examples --enable-tests 
-student@isrm:​~/ns-3-dev$ ./waf configure --build-profile=debug --enable-examples --enable-tests ​&& ./waf build -j4 +student@isrm-vm-2020:~$ ./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 116: Line 129:
 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 242: Line 247:
 ===== [02] Packet delivery ratio UDP ===== ===== [02] Packet delivery ratio UDP =====
  
-Plotați packet delivery ratio la nivel fizic (''​tries=1''​) și la nivel MAC (''​tries=4,​10''​) pentru distanțele implicite din model, pentru trafic UDP. Prin packet delivery ratio se intelege raportul dintre numarul de pachete primite si numarul de pachete trimise (RX/TX).+Plotați packet delivery ratio la nivel fizic (''​tries=1''​) și la nivel MAC (''​tries=4,​10''​) ​in functie de distanta ​pentru distanțele implicite din model, pentru trafic UDP. Prin packet delivery ratio se intelege raportul dintre numarul de pachete primite si numarul de pachete trimise (RX/TX).
  
 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 271: Line 285:
   * 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]]): ​
Line 282: Line 296:
 Pe callbackurile mai sus definiți două funcții simple care incrementează un contor global. Cu acest tracing: Analizați pachetele pierdute și justificați folosind timpii de emisie ai pachetelor. Pe callbackurile mai sus definiți două funcții simple care incrementează un contor global. Cu acest tracing: Analizați pachetele pierdute și justificați folosind timpii de emisie ai pachetelor.
  
-===== [04] ACK L2 vs L4 =====+===== [04 - Bonus] ACK L2 vs L4 =====
  
 Repetați experimentele cu TCP și UDP activând PCAP tracing. Urmăriți în PCAP momentul în care transmițătorul pachetelor de date UDP/TCP (adică AP-ul) nu mai primește ACK-urile de L2: Repetați experimentele cu TCP și UDP activând PCAP tracing. Urmăriți în PCAP momentul în care transmițătorul pachetelor de date UDP/TCP (adică AP-ul) nu mai primește ACK-urile de L2:
isrm/laboratoare/new/05.1584805357.txt.gz · Last modified: 2020/03/21 17:42 by vlad.traista
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