Table of Contents

Laborator 06: Algoritmi Adaptivi MCS

Obiectiv

Laboratorul trecut am studiat evoluția throughputului atunci când stația se îndepărtează de access point fără a apela la metode de compensare. În principiu am observat că scăderea este bruscă de la throughput maxim la 0. În acest laborator ne propunem să vedem cum poate nivelul de MAC să intervină în a compensa cât mai mult pierderile cauzate de mediu și de distanță. O metodă este adaptarea ratelor de TX (tx_rates sau MCS) în funcție de feedbackul primit pe recepție (RSSI - received signal strength indicator, virtual carrier sense, physical carrier sense).

Constelațiile/MCS bogate necesită putere mare, dar funcționează la distanță mai mică așa cum am putut deja observa la laboratorul trecut pentru 54Mbps. Vom vedea la acest laborator comportamentul diverselor constelații ale 802.11g și cum ne ajută anumiți algoritmii adaptivi.

Materiale ajutătoare

În acest laborator vom studia comportamentul a trei algoritmi adaptivi:

Ce vom face la laborator

Vom folosi o simularea realizată în ns-3 de la laboratorul 5 și vom încerca să amânăm pierderile pachetelor cauzate de către îndepărtarea stației de access point prin adaptarea dinamică a MCS-ului folosită de algoritmii la nivel MAC descriși mai sus.

Taskuri

[00] Pregătirea laboratorului

Pe 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:

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

Pentru a lansa aplicatia de Jupyter Notebook, rulati urmatoarea comanda:

student@isrm-vm-2020:~$ jupyter-notebook

[01] Comparație între MCS-uri fixe versus distanță - trafic UDP

Rulați simularea cu parametrii impliciți schimbând doar phyRate. Folosim ConstantRateWifiManager. Exemplu de rulare pentru 6Mbps:

./waf --run "lab5 --apManager=ns3::ConstantRateWifiManager --phyRate=ErpOfdmRate6Mbps"

Salvați datele obținute, ne interesează să obținem o funcție throughput(distanță) pentru următoarele phyRate: ErpOfdmRate6Mbps, ErpOfdmRate12Mbps, ErpOfdmRate24Mbps, ErpOfdmRate54Mbps. Plotați datele obținute. Ce observăm? De ce credeți că se întâmplă așa?

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.

Plotați Throughput în funcție de distanță

[02] Algoritmi adaptivi - trafic UDP

Păstrați datele obținute la task-ul anterior pentru a putea plota pe același grafic evoluția algoritmilor adaptivi în comparație cu constelațiile. Algoritmii adaptivi nu au nevoie de specificarea parametrului phyRate deoarece ei vor încerca să folosească cel mai bun MCS suportat de ambii vorbitori și îl vor regla treptat în funcție de signal strength și pierderi ale ACK-urilor de L2.

Rulare pentru cei trei algoritmi de interes:

./waf --run "lab5 --apManager=ns3::AarfWifiManager"
./waf --run "lab5 --apManager=ns3::MinstrelWifiManager"
./waf --run "lab5 --apManager=ns3::IdealWifiManager"

Plotați Throughput (Oy) în funcție de distanță (Ox)

[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 (adica doar pachetele UDP):

./waf --run "lab5 --apManager=ns3::AarfWifiManager --pcap=true"
./waf --run "lab5 --apManager=ns3::MinstrelWifiManager  --pcap=true"
./waf --run "lab5 --apManager=ns3::IdealWifiManager --pcap=true"

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 rate) in functie de timestamp, signal strength in functie de timestamp.

Coloanele de interes pentru tshark sunt urmatoarele:

Vom extrage aceste coloane doar pentru pachetele UDP. In consecinta, va trebui sa aplicam un filtru: ip.proto == 17.

Pentru mai multe detalii legate de cum puteti parsa un fisier pcap cu tshark, puteti sa va uitati aici.

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

Se alege pcap-ul: lab5-propagation-adaptive-1-0.pcap

[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 AARF. Exemplu de rulare:

./waf --run "lab5 --apManager=ns3::IdealWifiManager --isTcp=true"
./waf --run "lab5 --apManager=ns3::MinstrelWifiManager --isTcp=true"
./waf --run "lab5 --apManager=ns3::AarfWifiManager --isTcp=true"

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ă).