This is an old revision of the document!


Laborator 03 - 04: Capacitatea mediului

Materiale ajutătoare

Teorie:

  • Despre modulațiile DSSS-CCK și OFDM - quick intro bun aici
  • Despre comuncația la lower level MAC - quick intro aici
  • studiu similar pentru a/g/n/ac, agregare 80211notes

Concepte

  • 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)

  • 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

Introducere în tshark

TODO: de pus analiza de pcap cu wireshark, tshark, tcpdump

Tshark este un wireshark pentru terminal. Are avantajul de a folosi limbajul wireshark pentru filtre (condițiile pot fi create în wireshark si apoi copiate cu copy/paste), dar în același timp oferă controlul afișarii la stdout.

Exemple filtre

tshark -T fields -e frame.time_epoch -e frame.number -e ip.src -r ./first-0-0.pcap '(ip.proto == 17) && (ip.src == 10.1.1.1)'

  • fișierul .pcap este produs din simulare second.cc, sau dintr-un dump real
  • -T fields indică câmpurile din pachete care se doresc printate
  • Colecție de câmpuri de interes:
opțiune pentru -e semnificație
frame.time_epoch timpul de la începutul simulării
frame.number numărul cadrului
ip.src adresa IP sursă
ip.id IP identifier field
ip.ttl câmpul TTL din headerul de IP
wlan.flags câmpul flags din headerul WLAN
wlan.seq numărul de secvență WLAN
wlan.fcs_good cadrul WLAN este validat de câmpul FCS
  • (ip.proto == 17) && (ip.src == 10.1.1.1) indică condiția de filtrare a pachetelor din .pcap; folosește acelasi limbaj ca și wireshark
  • (udp.dstport == 9), doar cadrele către portul 9 (echo)
  • wlan.fc.type_subtype == 0x08, filtrează cadrele de tip beacon (FIXME)
  • wlan.fc.pwrmgt == 1, filtrează cadrele de tip power management (FIXME)

[03.01] Capacitatea ideală simulare

  • 802.11b Antet PHY de 192biți trimis la MCS=1Mbps
  • 802.11g Antet PHY de 16us + 24biți trimis la MCS=6Mbps
  • 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, măsurată în bps
  • folosiți duratele temporizărilor specificate în standard, și dimensiunile antetelor PHY din schemele de mai sus
    • 11b: slot=20, SIFS=10, DIFS=50
    • 11g: slot=9, SIFS=10, DIFS=28
  • pentru început determinați durata în microsecunde a unei tranzacții (separat 11b și 11g)
    • Durata pentru 802.11b 1)
  • 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 2)
  • 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
    • gnuplot> plot MCS=1, Throughput(x) w l t '1Mbps', MCS=2, Throughput(x) w l t '2Mbps', MCS=5.5, Throughput(x) …
  • realizați grafice pentru 802.11b (axa x: payload UDP; axa y: Throughput[Mbps])
    • 4 curbe pentru 1Mbps, 2Mbps, 5.5Mbps, 11Mbps
  • realizați grafice pentru 802.11g (axa x: payload UDP; axa y: Throughput[Mbps])
    • 4 curbe pentru 6Mbps, 12Mbps, 24Mbps, 54Mbps

[03.02] Capacitatea ideală simulare

  • Pentru un singur client, se vor repeta curbele de mai sus folosind ns-3. Modelul lab3.cc 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. Exepmlu de rulare de interes (cu parametrii de interes) pentru acest task:
./waf --run "lab3 --numberOfNodes=2 --payloadSize=1000 --dataRate=11Mbps --phyRate=DsssRate11Mbps"

numberOfNodes reprezintă numărul total de noduri (inclusiv AP-ul).

Parametrul phyRate (reprezinta MCS) va lua urmaoarele valori:

  • Pentru 802.11b:
  DsssRate1Mbps
  DsssRate2Mbps
  DsssRate5_5Mbps
  DsssRate11Mbps
  • Pentru 802.11g:
  ErpOfdmRate6Mbps
  ErpOfdmRate9Mbps
  ErpOfdmRate12Mbps
  ErpOfdmRate18Mbps
  ErpOfdmRate24Mbps
  ErpOfdmRate36Mbps
  ErpOfdmRate48Mbps
  ErpOfdmRate54Mbps

Parametrul dataRate corespunde traficului trimis de aplicație în socketul UDP. Pe linia de comandă trebuie dați parametrii relevanți pentru dimensiunea pachetului și rata dorită de UDP.

Scopul acestui task este să repetați graficele precedente/teoretice folosind simularea în ns-3. Puncte de evaluare pentru payloadSize: 20, 50, 100, 500, 1000, 1500.

Puteți reduce timpii simulării folosind parametrul --simulationTime=1

De ce iterăm peste aceste packet size-uri? Iată câteva valori din trafic real: VoIP ~ 20-300; DNS, TCP~ 500; Ethernet MTU=1500; 802.11 Beacon=380

[03.03] Capacitatea ideală simulare - RTS/CTS activ

Repetați experimentele anterioare cu RTS/CTS activat. Ce impact are asupra pachetelor mari? Dar a celor mici? Activarea RTS/CTS o puteți face astfel pentru simulare:

./waf --run "lab3 --numberOfNodes=2 --payloadSize=1000 --dataRate=11Mbps --phyRate=DsssRate11Mbps --enableRtsCts=true" 

Pentru 11n și 11ac situația este chiar mai gravă, iar soluția este agregarea de cadre.

1) 50 + 310 + 192 + (24 + 20 + 8 + x + 4)*8/MCS + 10 + 192 + 14*8/MCS
2) gnuplot> Throughput_11b(x) = x*8 /(764 + (70 + x)*8/MCS)
isrm/laboratoare/new/03-04-capac.1583217436.txt.gz · Last modified: 2020/03/03 08:37 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