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