Protocolul CSMA/CA a fost conceput pentru a reduce probabilitatea coliziunii între mai multe stații care accesează mediul wifi, în punctul în care coliziunile pot să apară cel mai probabil. O dată ce mediul devine liber (“idle medium”) și apoi devine imediat ocupat (“busy medium”) - indicație obținută de la funcția CS (carrier-sense) avem o probabilitate ridicată de coliziune. Asta deoarece mai multe stații au așteptat ca mediul să fie liber. Această situație necesită o procedură de random backoff pentru a rezolva conflictele de acces la mediu:
O stație care dorește să inițieze un transfer de cadre folosind DCF (Distributed Coordination Function) ca procedură de acces la mediu va folosi funcția de CS (carrier-sense) pentru a determina dacă mediul e busy sau idle. Dacă mediul e ocupat stația trebuie să aștepte ca mediul să fie liber pentru o perioadă egală cu DIFS (ultimul cadru a fost recepționat fără întrerupere de mediu) sau mediul a fost liber fără întrerupere pentru o perioadă egală cu EIFS. După DIFS sau EIFS, stația care vrea să transmită trebuie să genereze o perioadă de random backoff înainte de a își iniția transferul de cadru. Această perioadă e egală cu:
$BackoffTime = Random() \cdot aSlotTime$
Aici avem:
aSlotTime
- se alege o valoare suficient de mare prin care toate stațiile participante la comunicația Wifi să detecteze preambulele de PHY ale stațiilor vecine. Pe parcursul fiecărui aSlotTime
stațiile stau în modul receptor și așteaptă finalizarea propagării cadrelor pe aer. aSlotTime
e valoare dependentă de tipul de PHY (DSSS, OFDM, ERP etc.) șî în general pentru protocoalele 802.11a/g/n
găsim valoarea de 9 microsecunde. Figura de mai jos vă arată pentru diferite tiprui de cadre wifi (management - beacon, probe request etc., date, ack la nivel de wifi) cum se face spațierea pe aer:aSlotTime
cât și aCWmin
și aCWmax
le găsim în tabele care depind de tipul de PHY: tabelul 15-5 ne dă valori pentru PHY de tipul DSSS (întâlnit la 802.11b), tabelul 17-21 ne dă pentru OFDM, tabelul 18-5 pentru ERP și tot așa. În acest laborator vom simula cu niște valori alese de noi pentru 802.11b care are PHY de tip DSSS. Scopul acestui exerciţiu este de a investiga impactul dimensiunii ferestrei de arbitrare (contention window) asupra performanţei protocolului IEEE 802.11. MAC-ul IEEE 802.11 prevede ca toate nodurile să aleagă un timp de așteptare aleator cuprins între zero şi CW (fereastra de arbitraj), şi aşteaptă numărul ales de sloturi înainte de a încerca să acceseze canalul. Iniţial, CW este setat la CWMin (minim fereastra susţinute de mărime). Cu toate acestea, atunci când există o coliziune, dimensiunea fereastrei este dublată, până la o valoare maximă: CWMax. Aceasta tehnică de randomizare şi scalare a ferestrei este folosită pentru a reduce coliziunile. În studiul nostru vom lua în considerare o variantă de 802.11 pt cazul în care mărimea ferestrei este fixă, şi anume CWMin = CWmax = CW. Deși nu se scalează fereastra, se folosește randomizarea.
Vom avea nevoie de o topologie în care pentru a studia efectul dimensiunii fereastrei. Pentru aceasta, folosim o reţea de un hop atunci când toate nodurile sunt plasate într-un grup compact. În particular, vom considera o arie de 150x10m comună pentru toate nodurile. Fiecare sursă participă la o conversaţie, o destinaţie poate participa la mai multe.
$val(mac) set CWMin_ 31
iar rata CBR rezultă din intervalul de generare
$cbr_($i) set interval_ 0.05
ns
numărul de sursenr
numărul de destinațiicwmin
pentru a indica limita minima a fereastrei de arbitraj/contenție cwmax
pentru a indica limita maxima a fereastrei de arbitraj/contenție student@isrm-vm:~$ ns cw.tcl -ns 2 -nr 2 -cwmin 63 -cwmax 63
student@isrm-vm:~$ ns cw.tcl -ns 2 -nr 2 -cwmin 15 -cwmax 1023
ns = 4, 6, 7, 20, 40
şi pentru CWMin, CWMax
ele vor fi egale și iau următorul set de valori: 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095 Pentru a calcula PDR, va trebui să calculați numărul de pachete trimise şi numărul de pachete primite. În acest exemplu, pentru a obţine numărul de pachete trimise, puteţi utiliza următoarea comandă:
student@isrm-vm:~$ grep AGT cw.tr | grep ^s |grep cbr | wc -l
Numărul raportat de mai sus este numărul de pachete trimise de către toate nodurile. Pentru a obţine numărul de pachete primite, aveţi posibilitatea să utilizaţi o comandă similară:
student@isrm-vm:~$ grep AGT cw.tr | grep ^r |grep cbr | wc -l
Numărul raportat este numărul de pachete primite (ar trebui să fie cel mult egal cu numărul de pachete trimise). Probabilitatea de recepție este:
$PDR = \displaystyle \frac{N_{pktRx}}{N_{pktTx}}$
Pachete emise si trimise de nivelul MAC:
student@isrm-vm:~$ grep COL cw.tr | grep ^d |grep cbr | wc -l
student@isrm-vm:~$ grep MAC cw.tr | grep ^s |grep cbr | wc -l
s: Send r: Receive d: Drop f: Forward -t double Time (* For Global Setting) -Ni int Node ID -Nx double Node X Coordinate -Ny double Node Y Coordinate -Nz double Node Z Coordinate -Ne double Node Energy Level -Nl string Network trace Level (AGT, RTR, MAC, etc.) -Nw string Drop Reason -Hs int Hop source node ID -Hd int Hop destination Node ID, -1, -2 -Ma hexadecimal Duration -Ms hexadecimal Source Ethernet Address -Md hexadecimal Destination Ethernet Address -Mt hexadecimal Ethernet Type -P string Packet Type (arp, dsr, imep, tora, etc.) -Pn string Packet Type (cbr, tcp) -Ps sequence number (pentru tcp, coloana 47)
Format detaliat aveți pe isi.edu
Această temă vă permite să corelați mărimea CW şi dimensiunea reţelei / densitatea. Tendinţa poate sau nu să fie clară din cauza unor factori cum ar fi interferenţe cu creşterea densităţii etc. Încercaţi să răspundeţi la următoarele întrebări cu privire la graficele obţinute mai sus:
ns=nr=4
) față de celelalte populații? ACKNOWLEDGMENT: inspired by http://www.crhc.illinois.edu/wireless/assignments/simulations/slabc1.html