Differences

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

Link to this comparison view

isrm:laboratoare:new:06 [2020/03/28 16:30]
mbarbulescu [Materiale ajutătoare]
isrm:laboratoare:new:06 [2022/04/11 09:34] (current)
mbarbulescu [[03] Algoritmi adaptivi - evoluția în PCAP]
Line 15: Line 15:
   * După cum am menționat mai sus layer-ul de MAC (nivelul legătură de date cum  îl mai știți) își ia ca feedback RSSI (sau SNR - Signal to Noise Ratio) pentru a decide MCS-ul folosit la transmisie. Un algoritm destul de simplu care folosește un raport între SNR și BER (Bit Error Rate) este [[https://​www.nsnam.org/​doxygen/​classns3_1_1_ideal_wifi_manager.html#​details|Ideal Rate control algorithm din ns-3]], care este implementat conform descrierii din acest paper: {{:​isrm:​laboratoare:​new:​mesh-mobicom01.pdf|}}   * După cum am menționat mai sus layer-ul de MAC (nivelul legătură de date cum  îl mai știți) își ia ca feedback RSSI (sau SNR - Signal to Noise Ratio) pentru a decide MCS-ul folosit la transmisie. Un algoritm destul de simplu care folosește un raport între SNR și BER (Bit Error Rate) este [[https://​www.nsnam.org/​doxygen/​classns3_1_1_ideal_wifi_manager.html#​details|Ideal Rate control algorithm din ns-3]], care este implementat conform descrierii din acest paper: {{:​isrm:​laboratoare:​new:​mesh-mobicom01.pdf|}}
  
-  * **AARF** - Adaptive Automatic Rate Feedback (paper: {{:​isrm:​laboratoare:​new:​aarf.pdf|}}) - un algortim ​îmbunătățit al clasicului ARF publicat în 1997 de Bell Labs (paper aici: {{:​isrm:​laboratoare:​new:​06770930.pdf|}}) și care a fost folosit în dongle-uri WiFi 802.11b de la acea vreme. Pe scurt acești algoritmi încearcă din start să folosească cel mai mare MCS suportat de ambii vorbitori iar după două eșecuri să micșoreze treptat. Într-un mod similar, dar cu o implementare proprietară,​ funcționează algoritmii ''​iwl-mwm-rs''​ din placile Wireless Intel (care au driverul ''​iwlwifi''​),​ puteți vedea un paper aici: {{:​isrm:​laboratoare:​new:​mswim_2019_1_.pdf|}}. Implementarea AARF în [[https://​www.nsnam.org/​docs/​doxygen/​classns3_1_1_aarf_wifi_manager.html#​details|simulatorul ns-3 este descrisă aici]]. ​+  * **AARF** - Adaptive Automatic Rate Feedback (paper: {{:​isrm:​laboratoare:​new:​aarf.pdf|}}) - un algoritm ​îmbunătățit al clasicului ARF publicat în 1997 de Bell Labs (paper aici: {{:​isrm:​laboratoare:​new:​06770930.pdf|}}) și care a fost folosit în dongle-uri WiFi 802.11b de la acea vreme. Pe scurt acești algoritmi încearcă din start să folosească cel mai mare MCS suportat de ambii vorbitori iar după două eșecuri să micșoreze treptat. Într-un mod similar, dar cu o implementare proprietară,​ funcționează algoritmii ''​iwl-mwm-rs''​ din placile Wireless Intel (care au driverul ''​iwlwifi''​),​ puteți vedea un paper aici: {{:​isrm:​laboratoare:​new:​mswim_2019_1_.pdf|}}. Implementarea AARF în [[https://​www.nsnam.org/​docs/​doxygen/​classns3_1_1_aarf_wifi_manager.html#​details|simulatorul ns-3 este descrisă aici]]. ​
  
   * În kernelul de Linux, pentru plăcile care nu implementează în firmware off-loaded un algoritm adaptiv, există [[https://​wireless.wiki.kernel.org/​en/​developers/​documentation/​mac80211/​ratecontrol/​minstrel|algoritmul Minstrel]] și este folosit de stiva WiFi de networking a Linux. Acest algoritm nu se bazează exclusiv pe feedback-ul RX-ului (e.g. RSSI cum menționam mai sus) ci încearcă să creeze un model statistic de variabile aleatoare care sunt determinate de: număr de biți transmiși, numărul de retransmisii ale unui pachet în aer deja planificat de DCF și probabilitatea estimată de succes a TX-ului în funcție de robustețea MCS-ului ales la acel moment. Minstrel încearcă **toate** ratele de TX posibile și le elimină pe cele care oferă rezultate proaste. Implementarea Minstrel în [[https://​www.nsnam.org/​doxygen/​classns3_1_1_minstrel_wifi_manager.html#​details|simulatorul ns-3 este descrisă aici]].   * În kernelul de Linux, pentru plăcile care nu implementează în firmware off-loaded un algoritm adaptiv, există [[https://​wireless.wiki.kernel.org/​en/​developers/​documentation/​mac80211/​ratecontrol/​minstrel|algoritmul Minstrel]] și este folosit de stiva WiFi de networking a Linux. Acest algoritm nu se bazează exclusiv pe feedback-ul RX-ului (e.g. RSSI cum menționam mai sus) ci încearcă să creeze un model statistic de variabile aleatoare care sunt determinate de: număr de biți transmiși, numărul de retransmisii ale unui pachet în aer deja planificat de DCF și probabilitatea estimată de succes a TX-ului în funcție de robustețea MCS-ului ales la acel moment. Minstrel încearcă **toate** ratele de TX posibile și le elimină pe cele care oferă rezultate proaste. Implementarea Minstrel în [[https://​www.nsnam.org/​doxygen/​classns3_1_1_minstrel_wifi_manager.html#​details|simulatorul ns-3 este descrisă aici]].
Line 26: Line 26:
  
 ====== Taskuri ====== ====== Taskuri ======
 +
 +===== [00] 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>
 +student@isrm-vm-2020:​~$ git clone https://​gitlab.com/​nsnam/​ns-3-dev.git
 +student@isrm-vm-2020:​~$ cd ~/ns-3-dev
 +student@isrm-vm-2020:​~/​ns-3-dev$ git checkout -b ns-332-rel ns-3.32
 +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>​
 +</​note>​
 +
 +Pentru a lansa aplicatia de Jupyter Notebook, rulati urmatoarea comanda:
 +
 +<code bash>
 +student@isrm-vm-2020:​~$ jupyter-notebook
 +</​code>​
  
 ===== [01] Comparație între MCS-uri fixe versus distanță - trafic UDP ===== ===== [01] Comparație între MCS-uri fixe versus distanță - trafic UDP =====
Line 38: Line 64:
  
 <note tip>​MCS-urile mai slabe care nu pot înghesui mulți biți de informație într-un simbol sunt mai robuste pe distanțe lungi.</​note>​ <note tip>​MCS-urile mai slabe care nu pot înghesui mulți biți de informație într-un simbol sunt mai robuste pe distanțe lungi.</​note>​
 +
 +<note important>​Plotați Throughput în funcție de distanță</​note>​
  
 ===== [02] Algoritmi adaptivi - trafic UDP ===== ===== [02] Algoritmi adaptivi - trafic UDP =====
Line 50: Line 78:
 ./waf --run "lab5 --apManager=ns3::​IdealWifiManager"​ ./waf --run "lab5 --apManager=ns3::​IdealWifiManager"​
 </​code>​ </​code>​
 +
 +<note important>​Plotați Throughput (Oy) în funcție de distanță (Ox)</​note>​
  
 ===== [03] Algoritmi adaptivi - evoluția în PCAP ===== ===== [03] Algoritmi adaptivi - evoluția în PCAP =====
  
-Activați PCAP tracing pentru cei trei algoritmi adaptivi și reluați experimentele. Urmăriți evoluția parametrilor pentru pachetele de date (puneți filtru TODO de UDP):+Activați PCAP tracing pentru cei trei algoritmi adaptivi și reluați experimentele. Urmăriți evoluția parametrilor pentru pachetele de date (adica doar pachetele ​UDP):
     * Signal Strength     * Signal Strength
     * DataRate     * DataRate
- 
  
 <code bash> <code bash>
-./waf --run "lab5 --apManager=ns3::​AarfWifiManager --isPcap=true"​ +./waf --run "lab5 --apManager=ns3::​AarfWifiManager --pcap=true"​ 
-./waf --run "lab5 --apManager=ns3::​MinstrelWifiManager ​ --isPcap=true"​ +./waf --run "lab5 --apManager=ns3::​MinstrelWifiManager ​ --pcap=true"​ 
-./waf --run "lab5 --apManager=ns3::​IdealWifiManager --isPcap=true"+./waf --run "lab5 --apManager=ns3::​IdealWifiManager --pcap=true"
 </​code>​ </​code>​
  
-TODO: task sa foloseasca ​tshark pentru a plota o funcție ​MCS(distanțăsau MCS(timestamp) și să compare cu taskul 2+Odata ce ati obtinut capturile, ne vom folosi de ''​tshark'' ​pentru a extrage coloanele de ''​timestamp'',​ ''​data rate''​ si ''​signal strength''​ si vom realiza urmatoarele grafice: ​MCS (data ratein functie de timestamp, signal strength in functie de timestamp.
  
-===== [04] Algoritmi adaptivi - trafic TCP =====+Coloanele de interes pentru ''​tshark''​ sunt urmatoarele:​ 
 +    * Signal Strength (pentru a selecta acest camp puteti folosi identificatorul ''​wlan_radio.signal_dbm''​) 
 +    * DataRate (pentru a selecta acest camp puteti folosi identificatorul ''​wlan_radio.data_rate''​) 
 +    * Timestamp (pentru a selecta acest camp puteti folosi identificatorul ''​frame.time_epoch''​)
  
-Ne amintim laboratorul trecut comportamentul TCP cu ''​ns3::​ConstantRateWifiManager'' ​(deci cu rata fixată) și un singur număr de reîncercări era foarte prostHai să repetăm experimentul pentru ''​tries=1,4,7'' ​și să vedem comportamentul TCP-ului cu cei trei algoritmi adaptivi: Ideal, Minstrel și AARFExemplu de rulare:+Vom extrage aceste coloane doar pentru pachetele UDP. In consecinta, va trebui sa aplicam un filtru: ''​ip.proto == 17''​. ​
  
-<code bash> +Pentru mai multe detalii legate de cum puteti parsa un fisier ''​pcap''​ cu ''​tshark'',​ puteti sa va uitati [[https://ocw.cs.pub.ro/courses/isrm/​laboratoare/​new/​03#​b_analiza_pcap_cu_tshark|aici]].
-./waf --run "lab5 --apManager=ns3::​IdealWifiManager --isTcp=true --tries=1"​ +
-./waf --run "lab5 --apManager=ns3::​MinstrelWifiManager --isTcp=true --tries=1"​ +
-./waf --run "lab5 --apManager=ns3::​AarfWifiManager --isTcp=true --tries=1"​ +
-</code>+
  
-Vom obține două seturi de date pe care ne propunem să le plotăm pe acelașgrafic (luăm datele din outputul simulării ​și facem tot o funcție throughput(distanță)). +<note important>​Pentru fiecare algoritm: plotați 2 grafice: Ox=Timestamp ​și Oy va fi MCS ales (''​data_rate''​respectiv ''​wlan_radio.signal_dbm''​. Folosiți același template de la lab5</​note>​
  
-Care algoritm se comportă mai bine în cazul TCP-ului cu ''​tries=1''​, care a avut rezultate proaste . Parcurgeți ​din nou teoria despre ​cei doi algoritmi și uitați-vă cu atenție pe grafice la comportamentul lor la pierderi (e.g. Minstrel coboară mai rapid la rate mici facând un fel de căutare binară)+<note tip>Se alege pcap-ul: ''​lab5-propagation-adaptive-1-0.pcap''​</​note>​ 
 + 
 +===== [04 - optional] Algoritmi adaptivi - trafic TCP ===== 
 + 
 +Ne amintim ​din laboratorul trecut comportamentul TCP cu ''​ns3::​ConstantRateWifiManager''​ (deci cu rata fixată). Vom vedea comportamentul TCP-ului cu cei trei algoritmi ​adaptivi: Ideal, Minstrel ​și AARFExemplu ​de rulare: 
 + 
 +<code bash> 
 +./waf --run "lab5 --apManager=ns3::​IdealWifiManager --isTcp=true"​ 
 +./waf --run "lab5 --apManager=ns3::​MinstrelWifiManager --isTcp=true"​ 
 +./waf --run "lab5 --apManager=ns3::​AarfWifiManager --isTcp=true"​ 
 +</​code>​
  
-Ce se întamplă atunci când ''​tries=7'',​ cum se comportă cei doi algoritmi? ​+Vom obține trei seturi de date pe care ne propunem să le plotăm pe același grafic (luăm datele din outputul simulării și facem tot o funcție throughput(distanță)). ​
  
 +Care algoritm se comportă mai bine în cazul TCP-ului? Care a avut rezultate proaste? Parcurgeți din nou teoria despre cei trei algoritmi și uitați-vă cu atenție pe grafice la comportamentul lor la pierderi (e.g. Minstrel coboară mai rapid la rate mici facând un fel de căutare binară). ​
  
  
isrm/laboratoare/new/06.txt · Last modified: 2022/04/11 09:34 by mbarbulescu
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