52 | | |
53 | | ---- |
54 | | |
55 | | = Analisi dello standard IEEE 802.11 = |
56 | | |
57 | | == Descrizione funzionale del sottolivello MAC == |
58 | | Sommario degli argomenti presenti: |
59 | | * DCF |
60 | | * PCF |
61 | | * Frammentazione |
62 | | * Deframmentazione |
63 | | * Supporto ad ampiezze di banda multiple |
64 | | * Sequenze consentite per lo scambio di frame |
65 | | * Restrizioni aggiuntive per limitare il riordino o lo scarto di MSDU |
66 | | |
67 | | === Coordinamento per la trasmissione === |
68 | | ,,20061018-1512 SoujaK,,[[BR]] |
69 | | L'accesso al mezzo di trasmissione comune e' regolato da una strategia che e' |
70 | | detta CSMA/CA (i.e. ''carrier sense multiple access with collision avoidance'') |
71 | | che intende minimizzare le probabilita' di collisione. |
72 | | |
73 | | La funzionalita' di coordinamento distribuito (Distributed Coordination Function |
74 | | o, piu' brevemente, DCF) che si fa carico della cosa e' pertanto componente |
75 | | necessario di ogni stazione, sia che essa operi all'interno di reti configurate |
76 | | in modalita' ''infrastracture'' che ''ad-hoc''. E' inoltre presente un metodo di |
77 | | accesso opzionale che si basa su un coordinatore centrale detto PC (i.e. ''Point |
78 | | Coordinator'') che risiede nell'AP del BSS. Poiche' DCF e PCF devono poter |
79 | | coesistere ed operare in maniera concorrente all'interno di una BSS, i due |
80 | | metodi di accesso si alterneranno, con un periodo in cui l'accesso e' |
81 | | prestabilito e il mezzo libero dalla contesa (Contention-Free Period o CFP) |
82 | | seguito da un periodo di contesa (Contention Period o CP). |
83 | | |
84 | | ==== DCF ==== |
85 | | ===== CSMA/CA e il meccanismo RTS/CTS ===== |
86 | | ,,20061018-2031 SoujaK,,[[BR]] |
87 | | Il concetto chiave su cui si basa il protocollo di comunicazione CSMA/CA e' la |
88 | | distribuzione di informazioni di prenotazione del mezzo trasmissivo. I noti |
89 | | frame RTS e CTS contengono infatti un campo (Duration/ID) che contiene il tempo |
90 | | durante il quale il mezzo e' riservato per l'invio del frame (o del frammento) e |
91 | | per la ricezione dell'ACK. Le STA esterne alla comunicazione imparano, tramite |
92 | | questo meccanismo, che il canale e' occupato per tale lasso di tempo evitando le |
93 | | collisioni, anche le STA sono all'interno del raggio d'azione del ricevente, ma |
94 | | non del trasmittente (problema del nodo esposto). E' importante precisare che il |
95 | | meccanismo RTS/CTS non e' obbligatorio: deve essere evitato per trasmissioni |
96 | | multicast o broadcast (chi risponderebbe con il CTS?). Inoltre puo' essere |
97 | | evitato nel caso di frame piccoli (al fine di limitare l'overhead che si |
98 | | introduce): la soglia e' definita nell'attributo dot11RTSThreshold. |
99 | | |
100 | | ===== ''Carrier-sense'' virtuale e il NAV ===== |
101 | | ,,20061027-0416 SoujaK,,[[BR]] |
102 | | La funzionalita' permette di capire lo stato del mezzo trasmissivo (occupato o |
103 | | libero) ed e' presente non solo nel sottostrato PHY, come e' ovvio, ma anche in |
104 | | MAC. Qui in MAC il meccanismo e' da considerarsi virtuale, nel senso che |
105 | | interroga il Network Allocation Vector. Ogni STA ha il compito di tenere traccia |
106 | | nel NAV delle "prenotazioni" effettuate da altri che indicano la futura |
107 | | indisponibilita' del canale e, se necessario, rimandare i tentativi di |
108 | | trasmissione. Il calcolo di questa durata non e' altro che la somma dei tempi |
109 | | necessari alle fasi della comunicazione: la trasmissione dei vari frame di dati, |
110 | | degli [wiki:Studio#Acknoledgment acknoledgment] e l'attesa dei vari |
111 | | [wiki:Studio#InterframespaceIFSspaceIFS IFS]. |
112 | | Le citate informazioni necessarie alle stazioni estranee alla comunicazione sono |
113 | | o prefissate dallo standard (la durata di invio di un ACK o i tempi inter-frame) |
114 | | oppure sono comunicate dalle stazioni interne alla comunicazione. Il campo |
115 | | Duration/ID e' quindi presente sia nella coppia iniziale < RTS e CTS > che nelle |
116 | | successive coppie < PDU e ACK > diverse dalla prima; esso contiene la distanza |
117 | | temporale al termine della comunicazione, i.e. il primo acknoledgment. |
118 | | |
119 | | ===== Acknoledgment ===== |
120 | | ,,20061027-0445 SoujaK,,[[BR]] |
121 | | La strategia usata e' l'acknoledgment positivo, il che significa che la STA |
122 | | ricevente ha il compito di confermare alla STA trasmittente la corretta |
123 | | ricezione del frame (solo in caso di frame unicast, come e' facile intuire). Il |
124 | | trasmittente attende il frame ACK per un periodo di tempo fissato da |
125 | | ACKTimeout e poi conclude che la trasmissione e' fallita. Lo stesso succede |
126 | | qualora esso riceva altro che non sia un ACK. Si noti che la mancata ricezione |
127 | | dell'ACK puo' indistinguibilmente indicare anche un errore durante la |
128 | | trasmissione dello stesso acknoledgment. |
129 | | |
130 | | ===== Interframe space (IFS) ===== |
131 | | ,,20061019-0849 SoujaK,,[[BR]] |
132 | | Lo standard stabilisce la lunghezza di tempo che deve intercorrere fra le |
133 | | trasmissioni dei vari frame; lo scopo e' quello di fornire informazioni precise |
134 | | alle stazioni. Queste ultime, attraverso il meccanismo ''carrier-sense'', |
135 | | attendono infatti di poter considerare libero il mezzo trasmissivo a seconda |
136 | | dei periodi di inattivita' rilevati. |
137 | | |
138 | | A seconda della situazione viene usato uno dei seguenti 4 periodi: |
139 | | 1. SIFS (short interframe space): |
140 | | usato per frame ACK, CTS, per frame (eccetto il primo) di una |
141 | | trasmissione frammentata, per le risposte al polling del PCF; |
142 | | 2. PIFS (PCF interframe space): |
143 | | usato solo dalle STA che, sotto un PCF, tentano di avere accesso al mezzo |
144 | | trasmissivo all'inizio del CFP; |
145 | | 3. DIFS (DCF interframe space): |
146 | | usato sotto DCF dalle STA per i frame dati (MPDU) o per i frame di gestione |
147 | | (MMPDU); |
148 | | 4. EIFS (extented interframe space): |
149 | | usato quando il PHY indica al MAC che l'ultimo frame MAC non e' stato |
150 | | ricevuto corettamente e che il campo FCS non e' utilizzabile; |
151 | | |
152 | | ===== Random backoff time ===== |
153 | | ,,20061025-1233 SoujaK,,[[BR]] |
154 | | In seguito al rilevamento di inattivita' del mezzo trasmissivo (secondo le |
155 | | politiche appena descritte), ogni STA e' tenuta a ritardare ulteriormente la |
156 | | propria trasmissione per un periodo di backoff di durata casuale, a meno che non |
157 | | sia gia' stato impostato il relativo timer. L'intento e' quello di evitare che |
158 | | tutte le STA in attesa collidano nel momento in cui contemporaneamente |
159 | | effettuino tentativi di trasmissione.[[BR]] |
160 | | Il periodo di backoff e' espresso come quantita' casuale di quanti di tempo (dal |
161 | | valore `aSlotTime` presente in PHY). Questa quantita' di slot e' mantenuta in un |
162 | | intero pseudocasuale le cui variazioni devono osclillare in maniera |
163 | | uniforme fra 0 e CW, un altro parametro definito come intero compreso |
164 | | nell'intervallo di estremi `aCWmin` e `aCWmax`(definiti in PHY). Ogni STA |
165 | | mantiene inoltre una coppia di contatori dei tentativi di trasmissione (SSRC e |
166 | | SLRC) non andati a buon fine: questi vengono inizializzati a 0 e vengono |
167 | | incrementati con l'andamento andamento esponenziale del 2 ogni volta che la |
168 | | comunicazione fallisce. Supponendo CWmin e CWmax settati rispettivamente a 7 e a |
169 | | 255, un esempio di incremento esponenziale e' dato dalla sequenza 7, 15, 31, 63, |
170 | | 127, 255, 255. Un cosi' alto andamento di crescita del periodo di backoff rende |
171 | | piu' stabile il protocollo, aumentando la sua capacita' di adeguarsi |
172 | | repentinamente a condizioni di alto carico per poi saperle sopportare con |
173 | | maggiore facilita'.[[BR]] |
174 | | I contatori prima citati vengono poi resettati (azzerati) al verificarsi di |
175 | | determinati eventi interpretabili come comunicazione ben riuscita (e.g la |
176 | | ricezione di un ACK): i due contatori si differenziano proprio su questo |
177 | | particolare, ma non e' il caso di approfondire ulteriormente. |
178 | | |
179 | | ===== Frame duplicati ===== |
180 | | ,,20061027-0536 SoujaK,,[[BR]] |
181 | | Dal momento che le procedure di conferma di trasmissione e di ritrasmissione |
182 | | sono incorporati all'interno del protocollo, esiste la possibilita' che un |
183 | | determinato frame venga ricevuto piu' di una volta. La stazione ricevente deve |
184 | | rendersi conto della duplicazione e scartare i doppioni. E' stato pertanto |
185 | | inserito un campo di controllo di sequenza all'interno nei frame dati e in |
186 | | quelli di gestione, contentente il numero della sequenza e quello del frammento. |
187 | | Ogni STA mantiene dunque una cache delle tuple <indirizzo, numero |
188 | | di sequenza, numero di frammento> che permette di identificare agilmente i |
189 | | frame duplicati. Il numero di sequenza e' un intero progressivo che __tende__ ad |
190 | | essere unico fra i vari frame: qualora (sfortunatamente) capitasse il contrario, |
191 | | il frame valido erroneamente scartato verrebbe presto ritrasmesso dalla |
192 | | sorgente. |
193 | | |
194 | | ==== PCF ==== |
195 | | ,,SoujaK: da fare :(,, |
196 | | |
197 | | == Gestione degli strati == |
198 | | I due livelli (data link e fisico) su cui lo standard e' definito possiedono |
199 | | un insieme di operazioni primitive proprie, ma le loro definizioni sono lungi |
200 | | dal poter essere considerate vere e proprie interfacce: si tratta delle "MAC |
201 | | layer management entities" (MLME) e delle "PHY layer management entities" |
202 | | (PLME). |
203 | | E' assai importante notare, specialmente ai fini dello studio in oggetto, che lo |
204 | | strato MAC non oscura il sottostante PHY, ma permette alla "station management |
205 | | entity" (SME) di interagire direttamente con esso. Le varie entita' hanno la |
206 | | possibilita' di comunicare fra loro secondo le specifiche dello standard, |
207 | | attraverso i SAP (service access point). Tale concetto intende aggregare |
208 | | l'insieme di chiamate che una determinata entita' espone alle altre per |
209 | | realizzare forme di comunicazione o invocazione. Il periodo di inattivita' che |
210 | | le STA si autoimpongono e' detto CW (contention window) e viene ripetuto |
211 | | ogni volta che si presenti una collisione. Viene inoltre incrementato a fronte |
212 | | di ogni collisione con andamento esponenziale (per scongiurare il pericolo |
213 | | di fino al raggiungimento di un valore massimo prestabilito. |
214 | | |
215 | | {{{ |
216 | | __||________________________ |
217 | | | | | | |
218 | | | MAC | MLME = | |
219 | | | | | | |
220 | | |--||--|--||--| Station | |
221 | | | | | Managemement | |
222 | | | PLPC | PLME | Entity | |
223 | | | | | | |
224 | | |--||--| = | |
225 | | | | | | |
226 | | | PMD | | | |
227 | | |______|______|______________| |
228 | | }}} |
229 | | |
230 | | |
231 | | In generale il livello MAC, come ovvio, deve essere il piu' possibile |
232 | | indipendente da quello fisico anche se a volte e' necessario che il livello MAC |
233 | | gestisca stati opportuni del livello fisico. |
234 | | |
235 | | Il livello PHY viene suddiviso nella seguente maniera: |
236 | | * PLCP (Physical Layer Convergence Procedure): funzioni di convergenza del |
237 | | livello fisico (adattamento del medium a PHY service), che realizzano una |
238 | | traduzione al fine di rendere l'interfaccia comune; |
239 | | * PMD (Physical Medium Dependent): insieme di funzioni fortemente dipendenti |
240 | | dallo specifico dispositivo wireless (ad esempio richieste di trasmissione o |
241 | | ricezione di dati). |
242 | | |
243 | | Anche in questo caso le relazioni con l'esterno sono gestite da appositi |
244 | | moduli SAP: uno specifico per la porzione PLCP (PLCP-SAP) e un altro relativo al |
245 | | sottostrato PMD (PMD-SAP). |
246 | | |
247 | | === Primitive di gestione generica === |
248 | | Le informazioni specifiche per la gestione di ogni strato sono incapsulate |
249 | | all'interno di cio' che viene definita Management Information Base (MIB) che |
250 | | puo' essere visto come un componente di ogni livello. In accordo con questo, |
251 | | ogni Management Entity possiede specifiche primitive di GET e SET in |
252 | | grado di operare sugli attributi della relativa MIB. Informazioni dettagliate |
253 | | sugli attributi dei vari MIB sono presenti nel |
254 | | [http://www.xt3.it/reti0506/MIB-D6.2.txt documento ufficiale] |
255 | | |
256 | | === Interfaccia di MAC: MLME SAP === |
257 | | * POWERMGT: richieste al modulo che gestisce il risparmio energetico |
258 | | * SCAN: scansione della rete alla ricerca di BSS disponibili |
259 | | * JOIN: sincronizzazione con un BSS |
260 | | * AUTHENTICATE: autenticazione con un BSS |
261 | | * DEAUTHENTICATE: deautenticazione con un BSS |
262 | | * ASSOCIATE: associazione fra una STA e un AP |
263 | | * REASSOCIATE: associazione fra una STA e un altro AP |
264 | | * DEASSOCIATE: disassociazione fra una STA e un AP |
265 | | * RESET: azzeramento |
266 | | * START: creazione di un nuovo BSS (diventa AP) o IBSS (prima STA di una rete |
267 | | ad-hoc) |
268 | | |
269 | | ,,20061019-0920 SoujaK:,, |
270 | | ''La revisione g del documento non introduce nessun cambiamento alle |
271 | | interfacce del SAP legato al livello MAC. Viene piuttosto esteso il livello |
272 | | PHY al fine di supportare larghezze di banda maggiori e differenti modulazioni |
273 | | del segnale.'' |
274 | | |
275 | | === Interfaccia di PHY: PLME SAP === |
276 | | In generale si hanno disposizione tutti i getter e i setter necessari per |
277 | | manipolare tutti gli attributi del MIB (normati nell'aggiunta `Annex D`). |
278 | | Inoltre, si hanno a disposizione le seguenti primitive: |
279 | | * RESET.request: forza il reset del livello PHY, reinizializzandolo allo stato |
280 | | di ricezione; |
281 | | * CHARACTERISTICS.request: ritorna le caratteristiche operative della PHY |
282 | | entity; |
283 | | * CHARACTERISTICS.confirm: viene sollevata dalla PHY entity successivamente |
284 | | ad una CHARACTERISTICS.request. Fornisce le caratteristiche operative |
285 | | della PHY entity; |
286 | | * DSSSTESTMODE.request: utile per entrare in modalita' test in una PHY DSSS |
287 | | entity; |
288 | | * DSSSTESTOUTPUT.request: opzionale, testa i segnali di output di una PHY |
289 | | DSSS entity. |
290 | | |
291 | | |
292 | | === Interfaccia di PHY: PHY SAP === |
293 | | Come gia' accennato in precedenza, le funzioni proprie dello strato PHY sono |
294 | | separate nei due livelli distinti PMD e PLCP; quest'ultimo intende fornire un |
295 | | meccanismo indipendente dalla PHY entity per trasferire MPDU fra le STA. |
296 | | Anche in questa sezione, i servizi vengono definiti in maniera puramente |
297 | | astratta, in modo da non forzare a particolari implementazioni delle interfacce. |
298 | | |
299 | | Le primitive tra MAC e PHY si possono dividere in due categorie: |
300 | | * primitive per il supporto d'interazioni punto-a-punto a livello MAC |
301 | | (primitiva PHY-DATA.{request, confirm, receive, indication}). |
302 | | * primitive con significato locale per agevolare l'interazione tra sottolivelli |
303 | | (e.g. PHY-TXStart.{request,...}). |
304 | | |
305 | | gnappo:,,chiarire meglio tutte le primitive con il loro significato. Sara' utile |
306 | | nella comprensione delle specifiche del livello PHY (ad esempio DSSS). ,, |
307 | | |
308 | | === FHSS (Frequency Hopping Spread Spectrum) === |
309 | | Si tratta di una specifica del livello PHY. |
310 | | Vengono in generale definite un sacco di primitive che vanno dal controllo |
311 | | del consumo energetico del medium, alla trasmissione, al CS/CCA. |
312 | | Frequency hopping: il salto delle frequenze (channel) e' fatto alfine di |
313 | | ottenere un maggior throughput della rete (non si impegna mai una stessa |
314 | | frequenza per "troppo" tempo). Questo hopping deve avvenire entro |
315 | | un tempo limite di 224us. |
316 | | |
317 | | gnappo:,,fa schifo! pensero' io stesso a migliorare,, |
318 | | |
319 | | === DSSS === |
320 | | 20061021-???? gnappo [[BR]] |
321 | | DSSS (Direct Sequence Spread Spectrum) e' un'altra specifica del livello fisico |
322 | | che permette di raggiungere in linea teorica un capacita' trasmissiva pari a |
323 | | 11Mbit/s (802.11b). Attraverso opportune tecniche e' possibile fornire bitrate |
324 | | inferiori (in tal modo si ottiene compatibilita' all'indietro). |
325 | | Come descritto precedentemente, anche in questa occasione avremo opportune |
326 | | funzioni di convergenza atte a garantire l'indipendenza di MAC rispetto alla |
327 | | specifica implementazione di PHY. [[BR]] |
328 | | Il PPDU e', naturalmente, differente rispetto a quello definito per FHSS (nel |
329 | | seguito troverete qualche dettaglio). Interessante osservare che il preambolo e |
330 | | l'header del frame sono trasmessi, diversamente dal resto, ad un 1Mbit/s per |
331 | | assicurarsi che l'interlocutore capisca effettivamente questa parte essenziale |
332 | | della comunicazione. L'effettivo invio del payload (MPDU) potra' essere |
333 | | compiuto con modulazioni diverse opportunamente specificate nell'header (campo |
334 | | SIGNAL). |
335 | | |
336 | | |
337 | | ==== Algoritmo di trasmissione ==== |
338 | | 20061021-???? gnappo [[BR]] |
339 | | Per trasmettere i dati, PHY-TXSTART.request dev'essere abilitata per portare PHY |
340 | | nello stato di trasmettitore (precedentemente su ricevitore). Il canale su cui |
341 | | trasmettere e' regolato via PLME. Se il canale risulta libero (PHY-CCA.indicate) |
342 | | allora MAC puo' procedere all'effettivo invio invocando la primitiva |
343 | | PHY-TXSTART.request (PHY-SAP) passando i parametri necessari (DATARATE, |
344 | | TX_ANTENNA, TXPWR_LEVEL). Una volta terminato l'invio del preambolo, attraverso |
345 | | una serie di chiamate PHY-DATA.request(DATA) verrano scambiati i dati tra MAC e |
346 | | PHY. Al termine della trasmissione l'entita' fisica ritornera' allo stato di |
347 | | ricevitore. |
348 | | |
349 | | ==== Algoritmo di ricezione ==== |
350 | | 20061021-???? gnappo [[BR]] |
351 | | Per quanto riguarda la ricezione e' necessario che l'entita' fisica sia nello |
352 | | stato di ricevitore (quindi PHY-TXSTART disabilitato). Attraverso la PLME e' |
353 | | possibile scegliere il canale su cui ascoltare ed il metodo di CCA (Clear |
354 | | Channel Assessment). Altri parametri (come per la trasmissione) sono passati |
355 | | attraverso PHY-SAP. |
356 | | Non appena il dispositivo ha rilevato attivita' sul canale sul quale e' in |
357 | | ascolto, PHY invoca la primitiva PHY-CCA.indicate con la quale informa MAC che |
358 | | il canale e' BUSY. Dopodiche' PHY va alla ricerca di un delimitatore di inizio |
359 | | frame e procede alla lettura dell'header. Se la lettura va a buon fine (i.e. |
360 | | formato riconosciuto, niente errori su CRC) allora viene chiamata la primitiva |
361 | | PHY-RXSTART.indicate per mettere a conoscenza di MAC di informazioni contenute |
362 | | nell'header (i.e. campo SIGNAL, lunghezza del MPDU, RX_ANTENNA, RSSI, SQ, |
363 | | campo SERVICE). I dati successivamente ricevuti saranno assemblati e |
364 | | presentati a MAC attraverso la primitiva PHY-DATA.indicate(DATA). Al termine |
365 | | dell'intera ricezione lo stato del ricevitore ritornera' IDLE e la primitiva |
366 | | PHY-RXEND.indicate(NoError) sara' sollevata. |
367 | | Se la ricezione non andasse a buon fine, PHY informerebbe MAC attraverso la |
368 | | primitiva PHY-RXEND.indicate della causa dell'errore (e.g. !CarrierLost). |
369 | | |
370 | | ==== Note ==== |
371 | | Per quanto riguarda questioni di tempistiche ed altre informazioni dettagliate |
372 | | (MIB attributes) rimando alle specifiche ieee, capitolo 15. |
373 | | |
374 | | === Specifiche della modulazione HR/DSSS (802.11b/802.11g) === |
375 | | 20061022-2130 Zeratul [[BR]] |
376 | | High Rate Direct Sequence Spread Spectrum (HR/DSSS) e' l'evoluzione della |
377 | | "semplice" DSSS che consente di portare la bandwith massima a 5.5 |
378 | | o 11 Mbps (nell'802.11g si arrivera' anche a ~ 54 Mbps). |
379 | | Gli header e preamboli PLCP sono gli stessi della DSSS, in questo modo |
380 | | e' possibile la coesistenza di entrambe le modulazioni in una stessa |
381 | | connessione. [[BR]] |
382 | | |
383 | | Le sostanziali differenze con il suo predecessore sono molteplici: |
384 | | 1. si sono riuniti i [http://en.wikipedia.org/wiki/Chip_rate "chips"] |
385 | | in gruppi da 8 formando cosi chiavi a codice complementario |
386 | | (8-chip complementary code keying, aka CCK) che vengono spediti alla stessa |
387 | | frequenza del DSSS (11 MHz), ottimizzando cosi l'uso della banda del canale. |
388 | | 2. sono state aggiunte delle funzionalita' opzionali per aumentare il bandwith, |
389 | | che sono utilizzabili solo se l'hardware e' abbastanza recente da supportarle. [[BR]] |
390 | | Le funzionalità sono le seguenti: |
391 | | * sostituzione del CCK con il packet binary convolutional coding (HR/DSSS/PBCC); |
392 | | * HR/DSSS/short, ovvero possibilita' di ridurre il preambolo PLCP |
393 | | per aumentare significantemente il transfer data rate, limitando cosi pero' la |
394 | | possibilita' di coesistenza con il DSSS a sole alcune particolari circostanze; |
395 | | * inserimento del Channel Agility, ovvero una particolare implementazione |
396 | | che consente di superare diversi problemi dovuti all'assegnamento di un canale statico, |
397 | | senza dover aggiungere alla totale implementazione il costo di questa funzionalita'.[[BR]] |
398 | | |
399 | | Purtroppo l'IEEE non ha concesso le specifiche inerenti all'evoluzione della modulazione nella versione |
400 | | 802.11g, quindi non ci e' concesso sapere i miglioramenti che hanno portato poi il protocollo a |
401 | | supportare velocita' di circa 54 Mbps.[[BR]] |
402 | | Parlandone con il Dott. Bononi, si e' arrivati ad ipotizzare che lo sviluppo sempre + veloce della |
403 | | tecnologia abbia portato ad un'alta precisione e sensibilita' di ricezione/trasmissione che quindi, |
404 | | ha portato ad un'aumento dei simboli (in modulazione un simbolo e' un particolare segnale che identifica |
405 | | una serie di bit) e ad una diminuzione dei bit adibiti al controllo di errori, cosi aumentandone di molto |
406 | | il bit rate potenziale.[[BR]] |
407 | | Rimaniamo comunque nella ricerca di specifiche piu' recentemente rilasciate, lasciando quest'ultima parte |
408 | | di paragrafo come "prossima ad essere aggiornata". |
409 | | |
410 | | == Management del sottolivello MAC == |
411 | | |
412 | | Uno degli aspetti più importanti, per quanto riguarda la connessione di più |
413 | | hosts ad una rete wireless, è sicuramente il meccanismo di sincronizzazione, il |
414 | | quale deve esistere per permettere la comunicazione all'interno della rete. |
415 | | Per permettere ciò ogni nodo ha al suo interno un TSF (Timing Synchronization |
416 | | Function) che funge da orologio per tutti i nodi. |
417 | | La sincronizzazione è presente sia nei BSS che nei IBSS e avviene in maniere |
418 | | differenti. |
419 | | |
420 | | In un BSS la sincronizzazione viene mantenuta dall'AP, che inizializza il |
421 | | suo TSF interno e invia beacons a tutti i nodi della rete con all'interno il |
422 | | proprio timer. Ogni nodo che riceve il beacon deve sincronizzare il proprio |
423 | | timer con il valore del timestamp ricevuto. |
424 | | |
425 | | In un IBSS invece ogni nodo partecipa allla sincronizzazione mediante |
426 | | l'utilizzo di un algoritmo distribuito; in pratica ogni nodo invia dei beacon |
427 | | ad ogni nodo della rete e riceve beacons da tutti gli altri. |
428 | | Decide poi autonomamente se settare il proprio timer col valore ricevuto o se |
429 | | scartare il beacon perchè il valore del timetamp all'interno è più vecchio del |
430 | | valore del proprio timer. |
431 | | |
432 | | Il mantenimento della sincronizzazione è dato da un algoritmo: |
433 | | ogni nodo mantiene un timer TSF in modulo 2^64^ microsecondi e si aspetta di |
434 | | ricevere un beacon ad intervalli regolari (definiti come ''aBeaconPeriod'', che è |
435 | | un parametro del nodo). |
436 | | Un nodo che vuole inviare un beacon deve settare il valore del timestamp, che |
437 | | è dato dalla somma tra il valore del TSF al tempo della trasmissione del primo |
438 | | bit del timestamp su PHY e dal tempo di ritardo per la trasmissione (passaggio |
439 | | dall'interfaccia MAC-PHY a PHY). |
440 | | |
441 | | === Acquisizione della sincronizzazione mediante scansione === |
442 | | |
443 | | Ogni stazione (o nodo) può operare attraverso due modalità di scansione: |
444 | | la modalità passiva o la modalità attiva. |
445 | | In modalità di scansione passiva la stazione sta in ascolto su tutti i canali |
446 | | e aspetta di ricevere dei beacon in cui il valore SSID sia uguale al valore |
447 | | SSID dell'ESS di cui la stazione vuole entrare a fare parte. Una volta ritornati |
448 | | questi frames, la stazione (attraverso opportune funzioni) entra a far parte di |
449 | | un BSS, acquisendo tutti i parametri del BSS (timer di sincronizzazione, |
450 | | parametri di PHY, BSSID, parametri di trasmissione dei beacon...). |
451 | | La modalità di scansione attiva invece si basa sul concetto di Probe Request e |
452 | | Probe Response: praticamente una stazione invia un Probe Request e si mette in |
453 | | ascolto di un Probe Response; quando il Probe Response conterrà il SSID cercato |
454 | | dalla stazione allora avrà inizio la sincronizzazione e la stazione entrerà a |
455 | | far parte di un BSS. L'algoritmo di scansione è al cap 11.1.3.2.2 (pag 127 di |
456 | | ieee 802.11-1999). |
457 | | |
458 | | === Associazione e riassociazione di una stazione con un AP === |
459 | | |
460 | | L'associazione tra una stazione e un AP avviene in due fasi: |
461 | | * autenticazione |
462 | | * associazione |
463 | | Una volta effettuata l'autenticazione su un AP, la stazione invia una richiesta |
464 | | di associazione all'AP e attende la risposta;in caso di risposta affermativa |
465 | | la stazione sarà fisicamente associata all'AP e potrà avviare la comunicazione, |
466 | | in caso contrario la stazione non si potrà associare. |
467 | | Analogamente quando una stazione vorrà riassociarsi ad un AP invierà allo stesso |
468 | | una richiesta di riassociazione e attederà la risposta dall'AP. |
469 | | Naturalmente quado un AP riceve una richiesta di associazione controlla che la |
470 | | stazione che ha inviato tale richiesta sia autenticata su sè stesso; in caso |
471 | | affermativo l'AP invierà una risposta (positiva o negativa) alla stazione. |
472 | | |
473 | | == Appunti vari == |
474 | | ,,20061014-1305 Roma,,[[BR]] |
475 | | Ho letto qualcosa su come si instaura una connessione tra una client e un AP: vi |
476 | | è praticamente una serie di richieste tra il client e l'AP affinchè la |
477 | | connessione venga instaurata; nota importante è che il client prima di |
478 | | collegarsi all'AP deve autenticarsi sull'AP stesso. Una volta fatto cio' AP |
479 | | manda un pacchetto che indica l'avvenuta autenticazione e l'inizio di una nuova |
480 | | connessione. Naturalmente vi sono già delle primitive implementate atte a |
481 | | svolgere questo tipo di compito (sia per quanto riguarda l'instaurazione che |
482 | | per le reinstaurazione). |
483 | | Inoltre i vari client devono essere tutti sincronizzati per paralare tra loro |
484 | | (es che fece anche il seminarista se non ricordo male) e per fare ciò si |
485 | | inviano delle simpatiche "pancette" con dentro il proprio timestamp; a monte |
486 | | comunque c'è l'AP che controlla tutta la sincronizzazione ed egli stesso manda |
487 | | pancette ai client conessi a lui; quindi vi è una doppia sincronizzazione: una |
488 | | tra AP e client e una tra client e client (cap 11 del documento ieee 802.11). |
489 | | |