This shows you the differences between two versions of the page.
isrm:laboratoare:03 [2014/10/27 12:02] dragos.niculescu |
isrm:laboratoare:03 [2019/11/29 08:53] (current) dragos.niculescu [Materiale ajutătoare] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Laboratorul 3 ==== | + | ====== Laboratorul 3 ====== |
- | === Capacitatea WiFi === | + | |
+ | ===== Materiale ajutătoare ===== | ||
+ | |||
+ | Teorie: | ||
+ | * Despre modulațiile DSSS-CCK și OFDM - quick intro bun [[http://www.rfwireless-world.com/Terminology/CCK-vs-DSSS-vs-OFDM.html|aici]] | ||
+ | * Despre comuncația la lower level MAC - quick intro [[https://www.cwnp.com/802.11-mac-series-ndash-basics-mac-architecture-ndash-part-1-3/|aici]] | ||
+ | * studiu similar pentru a/g/n/ac, agregare [[http://80211notes.blogspot.com/2014/03/phy-rate-and-udp-throughput.html|80211notes]] | ||
+ | |||
+ | ===== Concepte (rezumat) ===== | ||
+ | * Modulație PHY - Modulația este un proces folosit în telecom prin care modificăm parametrii unui semnal cu scopul de a transmite informații. Dacă la radio am auzit de AM (modularea în amplitudine a semnalului) sau FM (modularea în frecvență a semnalului) în WiFi întâlnim preponderent DSSS (Direct Sequence Spread Spectrum), CCK (Complementary Code Keyring) și, cea mai modernă, inclusiv în tehnologia 802.11ac și 4G-LTE: OFDM (Orthogonal Frequency Division Multiplexing) | ||
+ | * Cadrele (frame-urile) în wifi - vă veți tot lovi de conceptele astea fie prin curs, fie prin standard, fie chiar și prin kernelul de Linux: | ||
+ | * Pachetele ETH/IP/UDP cu care suntem familiari circulă prin WiFi conform figurii de mai jos (valabil pentru orice standard) - în lumea wifi ele poartă numele de MSDU (MAC Service Data Unit) | ||
+ | {{ :isrm:laboratoare:f.png?500 |}} | ||
+ | * La nivel MAC (L2) clientții (în standard îi întâlniți sub numele de STA de la stații) comunică cu AP (access point) prin MPDU - MAC Protocol Data Units. Headerul de MAC va conține chestii de interes pentru noi în acest laborator: | ||
+ | * dataRate (sau MCS): | ||
+ | * la frame-uri de tip "legacy" (802.11a și 802.11b/g) întâlnim valori în Mbps: | ||
+ | * Uzual pentru 802.11b (2.4 GHz DSSS-CCK): 1, 2, 5.5, 11 Mbps | ||
+ | * Uzual pentru 802.11g (2.4 GHz ERP-OFDM): 6, 12, 36, 54 Mbps | ||
+ | * Uzual pentru 802.11a (5 GHz ERP-OFDM): 6, 9, 12, 18, 24, 36, 48, 54 Mbps | ||
+ | * Acestea sunt valori "teoretice" maxime care pot fi atinse de standardul respectiv | ||
+ | * **OPȚIONAL**: la frame-uri de tip HT/VHT (802.11n/802.11ac) întâlniți valori de MCS de la 0 la 9 care conțin informații despre schema de modulare (BPSK, QPSK, QAM etc.) și rata de codare | ||
+ | * duration - durata în microsecunde a semnalului modulat pe aer prin simboluri - cât timp va ține acest device mediul ocupat cu transmiterea pachetului plus timpul pe care acesta îl cere pentru ACK la nivel de wifi (SIFS) | ||
+ | * CRC - 4 bytes adăugați de stivă pentru validarea MSDU-ului | ||
+ | * Mai sunt și altele dar nu intră în scopul acestui laborator | ||
+ | * La nivel PHY: avem PSDU (PLCP Service Data unit) și PPDU (PLCP Protocol Data Unit - o sumă de PSDU-uri) | ||
+ | * **Algoritmul de acces la mediu în wifi**: | ||
+ | * DCF (Distributed Coordinated Function) - întâlnită la majoritatea AP-urilor și clienților de 802.11 a/b/g/n, dar și la unele device-uri 802.11ac mai ales de tip Wave1 | ||
+ | * EDCA (Enhanced Distributed Channel Access) - întâlnim de la 802.11ac în sus | ||
+ | * acestea afectează durata unei tranzacții atomice de transmitere a unui cadru (care nu e doar timpul în microsecunde necesar plasării simboluri PHY pe aer) | ||
+ | * **Durata de transmitere** a unui cadru wifi cu tehnologia DCF pe aer e suma următoarelor elemente | ||
+ | * DIFS - DCF Inter Frame Spacing - o valoare care spune device-urilor Wifi așa: dacă mediul e liber pentru un timp egal cu DIFS atunci puteți transmite cadrul vostru | ||
+ | * Slot time - arbitraj - durate de timp definite de layerul de MAC pentru inter-frame spacing - depinde de tehnologia de PHY | ||
+ | * transmiterea PPDU-ului pe aer: antet PHY, antet MAC, header IP, header UDP sau TCP, Payload L4 de x octeți, CRC (4 bytes) | ||
+ | * SIFS - Short Inter Frame Spacing - durata de timp în care mă aștept să primesc ACK la nivel wifi (L2) de la celălalt device că a recepționat corect cadrul | ||
+ | * ACK - durata de timp ocupată pe aer de cadrul de tip ACK - el e trimis tot cu o modulație (dataRate) în format legacy - de obicei se alege cea mai mică rată pe care o suportă un anumit standard (e.g 6 Mbps pentru 802.11a/g OFDM și 1 Mbps pentru 802.11b DSSS-CCK) | ||
+ | |||
+ | |||
+ | ===== Scop ===== | ||
+ | |||
+ | Scopul acestui laborator este de a calcula capacitatea unui canal 802.11 pentru diverse standarde, în condiții ideale. | ||
+ | Vom face o analiză teoretică folosind temporizările, randomizările, și dimensiunile antetelor din standard, versus estimarea în simulator. Cazurile de interes sunt: | ||
+ | * 802.11b, 802.11g - PHY în 2.4 GHz, PHY modulat în DSSS-CCK respectiv ERP-OFDM | ||
+ | * 802.11a - PHY în 5 GHz, PHY modulat în ERP-OFDM | ||
+ | * cu și fără RTS/CTS | ||
+ | * trafic de tip UDP și TCP | ||
+ | * clienți multipli la un AP downlink și uplink | ||
+ | |||
+ | |||
+ | ===== Capacitatea WiFi ===== | ||
Scopul acestui laborator este de a calcula capacitatea unui canal 802.11 pentru diverse standarde, în condiții optime. Vom face o analiză teoretică folosind temporizările, randomizările, și dimensiunile antetelor din standard, versus estimarea în simulator. Cazurile de interes sunt: | Scopul acestui laborator este de a calcula capacitatea unui canal 802.11 pentru diverse standarde, în condiții optime. Vom face o analiză teoretică folosind temporizările, randomizările, și dimensiunile antetelor din standard, versus estimarea în simulator. Cazurile de interes sunt: | ||
Line 8: | Line 56: | ||
* clienți multipli la un AP downlink, uplink | * clienți multipli la un AP downlink, uplink | ||
- | == Capacitatea ideală teoretică == | + | ==== Capacitatea ideală teoretică ==== |
* 802.11b Antet PHY de 192biți trimis la MCS=1Mbps {{:isrm:laboratoare:03:802.11b.phy.preamble.png?400| }} | * 802.11b Antet PHY de 192biți trimis la MCS=1Mbps {{:isrm:laboratoare:03:802.11b.phy.preamble.png?400| }} | ||
- | * | ||
* 802.11g Antet PHY de 16us + 24biți trimis la MCS=6Mbps {{:isrm:laboratoare:03:erp-ofdm.11ag.png?600| }} | * 802.11g Antet PHY de 16us + 24biți trimis la MCS=6Mbps {{:isrm:laboratoare:03:erp-ofdm.11ag.png?600| }} | ||
- | * calculați durata unei tranzacții atomice de transmitere a unui cadru: DIFS, arbitraj, PHY header, MAC header, IP/UDP header, UDP Payload, FCS, SIFS, ACK | + | * calculați durata unei tranzacții atomice de transmitere a unui cadru: DIFS, arbitraj, PHY header, MAC header, IP/UDP header, UDP Payload de x octeți, FCS, SIFS, ACK |
- | * atenție: MAC, IP,UDP,Payload, CRC și corp ACK se transmit prin aer la rata MCS | + | * atenție: MAC, IP,UDP,Payload, CRC și corp ACK se transmit prin aer la rata MCS, măsurată în bps |
* folosiți duratele temporizărilor specificate în standard, și dimensiunile antetelor PHY din schemele de mai sus | * folosiți duratele temporizărilor specificate în standard, și dimensiunile antetelor PHY din schemele de mai sus | ||
* 11b: slot=20, SIFS=10, DIFS=50 | * 11b: slot=20, SIFS=10, DIFS=50 | ||
* 11g: slot=9, SIFS=10, DIFS=28 | * 11g: slot=9, SIFS=10, DIFS=28 | ||
* pentru început determinați durata în microsecunde a unei tranzacții (separat 11b și 11g) | * pentru început determinați durata în microsecunde a unei tranzacții (separat 11b și 11g) | ||
- | *Durata pentru 802.11b - spoiler (( 50 + 310 + 192 + (24 + 20 + 8 + x + 4)*8/MCS + 10 + 192 + 14*8/MCS )) | + | *Durata pentru 802.11b (( 50 + 310 + 192 + (24 + 20 + 8 + x + 4)*8/MCS + 10 + 192 + 14*8/MCS )) |
- | * scrieți funcția Throughput_11b(x) unde x este payload UDP, iar MCS(o constantă) ia valorile din standard 11b=1, 2, 5.5, 11 | + | * scrieți funcția Throughput_11b(x) unde x este payload UDP, iar MCS(o constantă) ia valorile din standard 11b=1, 2, 5.5, 11 (( ''gnuplot> Throughput_11b(x) = x*8 /(764 + (70 + x)*8/MCS)'' )) |
- | * spoiler (( ''gnuplot> Throughput_11b(x) = x*8 /(764 + (70 + x)*8/MCS)'' )) | + | |
* scrieți funcția Throughput_11g(x) unde x este payload UDP, iar MCS ia valorile din standard 11g=6, 12, 36, 54 | * scrieți funcția Throughput_11g(x) unde x este payload UDP, iar MCS ia valorile din standard 11g=6, 12, 36, 54 | ||
* deduceți modul în care debitul obținut în Mbps depinde de MCS și de dimensiunea UDP payload | * deduceți modul în care debitul obținut în Mbps depinde de MCS și de dimensiunea UDP payload | ||
Line 32: | Line 78: | ||
* {{:isrm:laboratoare:03:11g.ovhd.png?linkonly|rezultat}} | * {{:isrm:laboratoare:03:11g.ovhd.png?linkonly|rezultat}} | ||
- | == Capacitatea ideală simulare == | + | ==== Capacitatea ideală simulare ==== |
- | * Pentru un singur client, se vor repeta curbele de mai sus folosind ns-2. Scriptul {{isrm:laboratoare:03:infra.tcl}} configurează la (0,0) un AP și n-1 noduri plasate în vecinătatea sa. Traficul este generat de la AP către fiecare nod. | + | * Pentru un singur client, se vor repeta curbele de mai sus folosind ns-2. Scriptul {{isrm:laboratoare:src:infra.tcl}} configurează la (0,0) un AP și n-1 noduri plasate în vecinătatea sa. Traficul este generat de la AP către fiecare nod. |
* pentru capacitatea ideală, folosim un AP, un client,trafic de tip UDP | * pentru capacitatea ideală, folosim un AP, un client,trafic de tip UDP | ||
* necesită parametrii ''-run_tcp 0 -nn 2 -packetSize 100 -sendingRate 1Mbps '' | * necesită parametrii ''-run_tcp 0 -nn 2 -packetSize 100 -sendingRate 1Mbps '' | ||
Line 43: | Line 89: | ||
* De ce? [[http://www.bandcalc.com/| VoIP]] ~ 20-300; DNS, TCP~ 500; Ethernet=1500; 802.11 Beacon=380 | * De ce? [[http://www.bandcalc.com/| VoIP]] ~ 20-300; DNS, TCP~ 500; Ethernet=1500; 802.11 Beacon=380 | ||
* repetați experimentele cu RTS/CTS activat. Ce impact are asupra pachetelor mari? Dar a celor mici? | * repetați experimentele cu RTS/CTS activat. Ce impact are asupra pachetelor mari? Dar a celor mici? | ||
+ | * Pentru [[http://80211notes.blogspot.com/2014/03/phy-rate-and-udp-throughput.html|11n și 11ac]] situația este chiar mai gravă, iar soluția este agregarea de cadre. | ||
+ |