Differences

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

Link to this comparison view

isrm:laboratoare:06 [2014/11/10 09:39]
dragos.niculescu
isrm:laboratoare:06 [2019/04/04 16:31] (current)
mbarbulescu
Line 1: Line 1:
-==== Laboratoarele ​6 și 7 ====+==== Laboratorul ​6 și 7 ====
 === 802.11 Contention Window === === 802.11 Contention Window ===
-== Introducere ​==+ 
 +== Bibliografie recomandată == 
 + 
 +    * [[https://​www.dropbox.com/​s/​tgx0f51lhezrzn5/​Draft%20P802.11REVmc_D8.0.pdf?​dl=0|Standardul IEEE 802.11]] - secțiunile 10.3, 10.3.2.1 - 10.3.2.5 
 +    * [[https://​wi-fi.cs.pub.ro/​~dniculescu/​didactic/​isrm/​doc/​%20Next%20Generation%20Wireless%20LANs_%20Throughput,​%20Robustness,​%20and%20Reliability%20in%20802.11n%20%5b2008%5d.pdf|Next Generation Wireless]] - secțiunea 7.3.  
 + 
 +== Teorie/​Recapitulare == 
 + 
 +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: 
 + 
 +{{:​isrm:​laboratoare:​backoffprocedureperahia.png?​700|}}  
 + 
 +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$ - durata altor IFS (inter-frame spacing) este egală cu SIFS plus un număr de //slot times//. Propagarea cadrelor la nivel de PHY pot cauza ca unele stații să vadă limita terminării unui cadru (frame) la un alt moment de timp decât altele. Aici intervine rolul ''​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: 
 +{{:​isrm:​laboratoare:​chanaccesstimingperahia.png?​700|}}  
 +     * $Random()$ - o funcție care întoarce un număr pseudorandom distribuit uniform în intervalul $[0, CW]$.  
 +         * $CW$ - este contention window, un număr întreg care poate lua valori în intervalul $[aCWmin, aCWmax]$. Cele două valori depind de tipul de PHY. În standard atât ''​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.  
 + 
 + 
 + 
 + 
 +== Ce facem la laborator ​==
  
 Scopul acestui exerciţiu este de a investiga impactul Scopul acestui exerciţiu este de a investiga impactul
Line 34: Line 59:
      * ''​cwmax''​ pentru a indica limita maxima a fereastrei de arbitraj/​contenție ​      * ''​cwmax''​ pentru a indica limita maxima a fereastrei de arbitraj/​contenție ​
      * De exemplu, dacă ar fi să rulaţi un experiment cu 4 noduri în zona de 150m x 10m de reţea, cu fereastra de 63, vi se va cere să rulaţi următoarea comandă:      * De exemplu, dacă ar fi să rulaţi un experiment cu 4 noduri în zona de 150m x 10m de reţea, cu fereastra de 63, vi se va cere să rulaţi următoarea comandă:
- <​code> ​       ns cwsim.tcl -ns 2 -nr 2 -cwmin 63 -cwmax 63 </​code>​+<​code ​bash> 
 +student@isrm-vm:​~$ ​ns cw.tcl -ns 2 -nr 2 -cwmin 63 -cwmax 63 
 +</​code>​
      * Pentru 802.11b standard, cu fereastra adaptiva: ​      * Pentru 802.11b standard, cu fereastra adaptiva: ​
-<​code> ​       ns cwsim.tcl -ns 2 -nr 2 -cwmin 15 -cwmax 1023 </​code>​ +<​code ​bash> 
-     * Rulaţi scriptul pentru ns =  4, 916, 2536 şi pentru CWMin CWMax să ia următorul set de valori: 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095  +student@isrm-vm:​~$ ​ns cw.tcl -ns 2 -nr 2 -cwmin 15 -cwmax 1023 
-     ​* ​ Obţineţi şi plotați ca funcții de dimensiunea CW: +</​code>​ 
 +     * Rulaţi scriptul pentru ​''​ns =  4, 672040'' ​şi pentru ​''​CWMinCWMax''​ ele vor fi egale și iau următorul set de valori: 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095  
 +     ​* ​ Obţineţi şi plotați ca funcții de dimensiunea CW: 
         * total pachete livrate la destinație ​ (( {{:​isrm:​laboratoare:​06:​cwsim-pkt.png|grafic 1}} ))         * total pachete livrate la destinație ​ (( {{:​isrm:​laboratoare:​06:​cwsim-pkt.png|grafic 1}} ))
         * rata CBR livrată la destinație [Mbps] (( {{:​isrm:​laboratoare:​06:​cwsim-rata.png|grafic 2}} ))         * rata CBR livrată la destinație [Mbps] (( {{:​isrm:​laboratoare:​06:​cwsim-rata.png|grafic 2}} ))
Line 48: Line 77:
         * numărul de retransmisiuni per cadru (( {{:​isrm:​laboratoare:​06:​cwsim-retr.png|grafic 8}} ))         * numărul de retransmisiuni per cadru (( {{:​isrm:​laboratoare:​06:​cwsim-retr.png|grafic 8}} ))
   
-<​html>​ +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ă: ​ 
- <P ALIGN=LEFT>​Pentru a calcula PDR, va trebui să calculați numărul + 
- de pachete trimise şi numărul de pachete primite. În acest +<code bash
- exemplu, pentru a obţine numărul de pachete trimise, puteţi +student@isrm-vm:~$ grep AGT cw.tr | grep ^s |grep cbr | wc -l  
- utiliza următoarea comandă:  +</code> 
- </P+ 
- <PRE CLASS="​western"​ STYLE="​text-alignleft"> ​       ​grep AGT cwsim.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ă: ​ 
-                </PRE><​P ALIGN=LEFT+ 
- Numărul raportat ​<B>de mai sus</​B> ​este numărul de pachete ​<B>trimise</​B>​ +<code bash
- de către toate nodurile. Pentru a obţine numărul de pachete +student@isrm-vm:~$ grep AGT cw.tr | grep ^r |grep cbr | wc -l  
- primite, aveţi posibilitatea să utilizaţi o comandă similară:  +</code> 
- </P+ 
- <PRE CLASS="​western"​ STYLE="​text-alignleft"> ​       ​grep AGT cwsim.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: 
-                </PRE><​P ALIGN=LEFT+ 
- Numărul raportat este numărul de pachete primite (ar trebui să +$PDR = \displaystyle \frac{N_{pktRx}}{N_{pktTx}}$ 
- fie cel mult egal cu numărul de pachete trimise). ​Raportul ​de +  
- <​B>​Pachete [primite] / [pachetele trimise]</​B>​ este PDR +Pachete emise si trimise de nivelul MAC
- </P> +  ​* ​Cu comanda de mai jos obțineți numărul global de pachete care au intrat în coliziune. 
- <PRE CLASS="​western"​ STYLE="​text-alignleft"> ​       grep COL cwsim.tr | grep ^d |grep cbr | wc -l  +<code bash>student@isrm-vm:~$ grep COL cw.tr | grep ^|grep cbr | wc -l</code
-                </​PRE><​P ALIGN=LEFT>​ +  ​* ​Cu comanda de mai jos obțineți numărul de pachete de date emise de MAC.  
- Cu comanda de mai sus obțineți numărul global de pachete care au +<code bash>​student@isrm-vm:​~$ grep MAC cw.tr | grep ^s |grep cbr | wc -l </code> 
- intrat în coliziune.  + 
- </P> +<note tip> 
- <PRE CLASS="​western"​ STYLE="​text-alignleft"> ​     ​grep MAC cwsim.tr | grep ^|grep cbr | wc -l +Pentru a înţelege mai multe despre formatul fișierului trace, vi-l reamintim mai jos: 
-                ​</PRE><​P ALIGN=LEFT+ 
- Cu comanda de mai sus obțineți numărul de pachete de date emise +<code> 
- de MAC.  +sSend 
- </P+r: Receive 
- <P ALIGN=LEFT>Pentru a înţelege mai multe despre formatul +d: Drop 
- fișierului trace: <A href="​http://nsnam.isi.edu/​nsnam/​index.php/​NS-2_Trace_Formats#​New_Wireless_Trace_Formats">​ pe scurt,</a+f: Forward  
-                          sau mai mult <A href="http://​www.isi.edu/​nsnam/​ns/​doc/​node186.html">​detaliu</​a>​+ 
- </P> +-t double Time (* For Global Setting) 
-</​UL>​ +-Ni int Node ID 
-</html>+-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 tcpcoloana 47) 
 +</code
 + 
 +Format detaliat aveți pe [[http://​www.isi.edu/​nsnam/​ns/​doc/​node186.html|isi.edu]] 
 +</note>
 == Analiză == == Analiză ==
 Această temă vă permite să corelați mărimea CW şi Această temă vă permite să corelați mărimea CW şi
isrm/laboratoare/06.1415605156.txt.gz · Last modified: 2014/11/10 09:39 by dragos.niculescu
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