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