| | 1 | [[PageOutline(1-6)]] |
| | 2 | = IEEE 802.11 - Definizione dei servizi MAC = |
| | 3 | |
| | 4 | ,,20061201-0930 SoujaK,,[[BR]] |
| | 5 | Il livello MAC comunica con l'hardware utilizzando il livello PHY in qualita' |
| | 6 | di tramite, che puo' pertanto essere visto come a lui sottostante. Il trasporto |
| | 7 | delle MSDU viene effettuato con trasmissioni ''connectionless'' di tipo |
| | 8 | ''best-effort'', non ci sono quindi garanzie ne' sulla effettiva consegna dei |
| | 9 | frame, ne', tantomeno, sull'ordine di arrivo degli stessi. Comunicazioni ad |
| | 10 | indirizzamento di tipo ''broadcast'' o ''multicast'' possono quindi, a causa |
| | 11 | della loro natura, essere soggette a diverse prestazioni e qualita' di servizio. |
| | 12 | |
| | 13 | == Coordinamento per la trasmissione == |
| | 14 | ,,20061207-1902 SoujaK,,[[BR]] |
| | 15 | L'accesso al mezzo di trasmissione comune deve essere regolato, poiche', per |
| | 16 | sua intrinseca natura non puo` essere utilizzato per trasmissioni simultanee |
| | 17 | sulle stesse frequenze. Per questo motivo il livello MAC comprende funzionalita' |
| | 18 | in grado di farsi carico della coordinazione delle varie stazioni che operano |
| | 19 | sul medesimo canale trasmissivo. Si tratta della funzione di |
| | 20 | [wiki:IEEE802.11/DefinizioneDeiServiziMAC#CoordinamentodistribuitoDCF coordinamento distribuito] |
| | 21 | (piu' brevemente DCF), un componente evidentemente necessario ad ogni stazione, |
| | 22 | in qualsiasi modalita' essa operi, ''infrastracture'' come ''ad-hoc''. |
| | 23 | [[BR]] |
| | 24 | E' inoltre presente un metodo di accesso opzionale, basato sulla funzione di |
| | 25 | [wiki:IEEE802.11/DefinizioneDeiServiziMAC#CoordinamentocentralizzatoPCF coordinamento centralizzato] |
| | 26 | (detto anche PCF) che fa uso di un coordinatore centrale detto PC (i.e. ''Point |
| | 27 | Coordinator'') che risiede nell'AP del BSS. |
| | 28 | |
| | 29 | DCF e PCF devono poter coesistere ed operare in maniera concorrente all'interno |
| | 30 | di una BSS, quindi i due metodi di accesso al mezzo si alterneranno, con un |
| | 31 | periodo in cui l'accesso e' prestabilito e il mezzo libero dalla contesa |
| | 32 | (''Contention-Free Period'' o CFP) in cui il coordinamento e' centralizzato, |
| | 33 | seguito da un periodo di contesa (''Contention Period'' o CP), in cui il |
| | 34 | coordinamento e' distribuito. |
| | 35 | |
| | 36 | === Coordinamento distribuito (DCF) === |
| | 37 | |
| | 38 | ==== CSMA/CA e il meccanismo RTS/CTS ==== |
| | 39 | |
| | 40 | ,,20061027-1950 SoujaK,,[[BR]] |
| | 41 | Il concetto chiave attraverso il quale il protocollo interpreta il meccanismo di |
| | 42 | comunicazione CSMA/CA e' la distribuzione di informazioni di prenotazione del |
| | 43 | mezzo trasmissivo. Ogni comunicazione fra un nodo sorgente e un nodo |
| | 44 | destinazione deve cominciare con lo scambio di due frame RTS (''request to |
| | 45 | send'') e CTS (''clear to send'') dalla seguente semantica: "richiesta di invio" |
| | 46 | e "pronto alla ricezione". Tali frame RTS e CTS contengono un campo |
| | 47 | (Duration/ID) che contiene il tempo durante il quale il mezzo e' riservato per |
| | 48 | l'invio del frame (o del frammento) e per la ricezione dell'ACK. Le STA esterne |
| | 49 | alla comunicazione imparano, tramite questo meccanismo, che il canale e' |
| | 50 | occupato per tale lasso di |
| | 51 | tempo evitando le collisioni. La doppia presenza delle informazioni in questione |
| | 52 | nei due versi della comunicazione (sia nei frame RTS che in CTS, ad esempio) |
| | 53 | permette di raggiungere tutte le STA interessate, scongiurando alcuni problemi, |
| | 54 | come quello del nodo esposto). E' importante precisare che il meccanismo RTS/CTS |
| | 55 | non e' obbligatorio: deve essere evitato per trasmissioni multicast o broadcast |
| | 56 | (chi risponderebbe con il CTS?). Inoltre puo' essere evitato nel caso di frame |
| | 57 | piccoli (al fine di limitare l'overhead che si introduce): la soglia e' definita |
| | 58 | nell'attributo MAC denominato `dot11RTSThreshold`. |
| | 59 | |
| | 60 | ==== ''Carrier-sense'' virtuale e il NAV ==== |
| | 61 | |
| | 62 | ,,20061027-0416 SoujaK,,[[BR]] |
| | 63 | La funzionalita' permette di capire lo stato del mezzo trasmissivo (occupato o |
| | 64 | libero) ed e' presente non solo nel sottostrato PHY, come e' ovvio, ma anche in |
| | 65 | MAC. Qui in MAC il meccanismo e' da considerarsi virtuale, nel senso che |
| | 66 | interroga il ''Network Allocation Vector''. Ogni STA ha il compito di tenere |
| | 67 | traccia nel NAV delle "prenotazioni" effettuate da altri che indicano la futura |
| | 68 | indisponibilita' del canale e, se necessario, rimandare i tentativi di |
| | 69 | trasmissione. Il calcolo di questa durata non e' altro che la somma dei tempi |
| | 70 | necessari alle fasi della comunicazione: la trasmissione dei vari frame di dati, |
| | 71 | degli ''[IEEE802.11/DefinizioneDeiServiziMAC#Acknowledgment acknowledgment]'' e |
| | 72 | l'attesa dei vari |
| | 73 | [wiki:IEEE802.11/DefinizioneDeiServiziMAC#InterframespaceIFSspaceIFS IFS]. Le |
| | 74 | citate informazioni necessarie alle stazioni estranee alla comunicazione sono o |
| | 75 | prefissate dallo standard (la durata di invio di un ACK o i tempi |
| | 76 | ''inter-frame'') oppure sono comunicate dalle stazioni interne alla |
| | 77 | comunicazione. Il campo `Duration/ID` e' quindi presente sia nella coppia |
| | 78 | iniziale < RTS , CTS > che nelle successive coppie < PDU , ACK > diverse dalla |
| | 79 | prima; esso contiene la distanza temporale al termine della comunicazione, i.e. |
| | 80 | il primo ''acknowledgment''. |
| | 81 | |
| | 82 | ==== ''Acknowledgment'' ==== |
| | 83 | |
| | 84 | ,,20061027-0445 SoujaK,,[[BR]] |
| | 85 | La strategia usata e' l'acknowledgment positivo, il che significa che la STA |
| | 86 | ricevente ha il compito di confermare alla STA trasmittente la corretta |
| | 87 | ricezione del frame (solo in caso di frame unicast, come e' facile intuire). Il |
| | 88 | trasmittente attende il frame ACK per un periodo di tempo fissato da |
| | 89 | `ACKTimeout` e poi conclude che la trasmissione e' fallita. Lo stesso succede |
| | 90 | qualora esso riceva altro che non sia un ACK. Si noti che la mancata ricezione |
| | 91 | dell'ACK puo' indistinguibilmente indicare anche un errore durante la |
| | 92 | trasmissione dello stesso ''acknowledgment''. |
| | 93 | |
| | 94 | ==== ''Interframe space'' (IFS) ==== |
| | 95 | |
| | 96 | ,,20061019-0849 SoujaK,,[[BR]] |
| | 97 | Lo standard stabilisce la lunghezza di tempo che deve intercorrere fra le |
| | 98 | trasmissioni dei vari frame; lo scopo e' quello di fornire informazioni precise |
| | 99 | alle stazioni. Queste ultime, attraverso il meccanismo ''carrier-sense'', |
| | 100 | attendono infatti di poter considerare libero il mezzo trasmissivo a seconda |
| | 101 | dei periodi di inattivita' rilevati. |
| | 102 | |
| | 103 | A seconda della situazione viene usato uno dei seguenti 4 periodi: |
| | 104 | 1. SIFS (''short interframe space''): |
| | 105 | usato per frame ACK, CTS, per frame (eccetto il primo) di una |
| | 106 | trasmissione frammentata, per le risposte al ''polling'' del PCF; |
| | 107 | 2. PIFS (PCF ''interframe space''): |
| | 108 | usato solo dalle STA che, sotto un PCF, tentano di avere accesso al mezzo |
| | 109 | trasmissivo all'inizio del CFP; |
| | 110 | 3. DIFS (DCF ''interframe space''): |
| | 111 | usato sotto DCF dalle STA per i frame dati (MPDU) o per i ''frame'' di |
| | 112 | gestione (MMPDU); |
| | 113 | 4. EIFS (''extented interframe space''): |
| | 114 | usato quando il PHY indica al MAC che l'ultimo ''frame'' MAC non e' stato |
| | 115 | ricevuto correttamente e che il campo FCS non e' utilizzabile; |
| | 116 | |
| | 117 | ==== Random backoff time ==== |
| | 118 | |
| | 119 | ,,20061209-1941 SoujaK,,[[BR]] |
| | 120 | In seguito al rilevamento di inattivita' del mezzo trasmissivo (secondo le |
| | 121 | politiche appena descritte), ogni STA e' tenuta a ritardare ulteriormente la |
| | 122 | propria trasmissione per un periodo di ''backoff'' di durata casuale, a meno che |
| | 123 | non sia gia' stato impostato il relativo timer. L'intento e' quello di evitare |
| | 124 | che tutte le STA in attesa collidano nel momento in cui contemporaneamente |
| | 125 | effettuino tentativi di trasmissione.[[BR]] |
| | 126 | Il periodo di inattivita' che le STA si auto-impongono e' detto CW (''contention |
| | 127 | window'') e viene ripetuto ogni volta che si presenti una collisione. Viene |
| | 128 | inoltre incrementato a fronte di ogni collisione con andamento esponenziale (per |
| | 129 | scongiurare il pericolo di fino al raggiungimento di un valore massimo |
| | 130 | prestabilito. |
| | 131 | |
| | 132 | Il periodo di ''backoff'' e' espresso come quantita' casuale di quanti di tempo |
| | 133 | (dal valore `aSlotTime` presente in PHY). Questa quantita' di slot e' mantenuta |
| | 134 | in un intero pseudo-casuale le cui variazioni devono oscillare in maniera |
| | 135 | uniforme fra 0 e CW, un altro parametro definito come intero compreso |
| | 136 | nell'intervallo di estremi `aCWmin` e `aCWmax`(definiti in PHY). Ogni STA |
| | 137 | mantiene inoltre una coppia di contatori dei tentativi di trasmissione (SSRC e |
| | 138 | SLRC) non andati a buon fine: questi vengono inizializzati a 0 e vengono |
| | 139 | incrementati con l'andamento andamento esponenziale del 2 ogni volta che la |
| | 140 | comunicazione fallisce. Supponendo `CWmin` e `CWmax` settati rispettivamente a 7 |
| | 141 | e a 255, un esempio di incremento esponenziale e' dato dalla sequenza 7, 15, 31, |
| | 142 | 63, 127, 255, 255. Un cosi' alto andamento di crescita del periodo di backoff |
| | 143 | rende piu' stabile il protocollo, aumentando la sua capacita' di adeguarsi |
| | 144 | repentinamente a condizioni di alto carico per poi saperle sopportare con |
| | 145 | maggiore facilita' . |
| | 146 | |
| | 147 | I contatori prima citati vengono poi resettati (azzerati) al verificarsi di |
| | 148 | determinati eventi interpretabili come comunicazione ben riuscita (e.g la |
| | 149 | ricezione di un ACK): i due contatori si differenziano proprio su questo |
| | 150 | particolare, ma non e' il caso di approfondire ulteriormente. |
| | 151 | |
| | 152 | ==== Frame duplicati ==== |
| | 153 | |
| | 154 | ,,20061027-0536 SoujaK,,[[BR]] |
| | 155 | Dal momento che le procedure di conferma di trasmissione e di ritrasmissione |
| | 156 | sono incorporati all'interno del protocollo, esiste la possibilita' che un |
| | 157 | determinato frame venga ricevuto piu' di una volta. La stazione ricevente deve |
| | 158 | rendersi conto della duplicazione e scartare i doppioni. E' stato pertanto |
| | 159 | inserito un campo di controllo di sequenza all'interno nei frame dati e in |
| | 160 | quelli di gestione, contenente il numero della sequenza e quello del frammento. |
| | 161 | Ogni STA mantiene dunque una cache delle triple <indirizzo , numero di sequenza |
| | 162 | , numero di frammento> che permette di identificare agilmente i frame duplicati. |
| | 163 | Il numero di sequenza e' un intero progressivo che __tende__ ad essere unico fra |
| | 164 | i vari frame: qualora (sfortunatamente) capitasse il contrario, il frame valido |
| | 165 | erroneamente scartato verrebbe presto ritrasmesso dalla sorgente. |
| | 166 | |
| | 167 | === Coordinamento centralizzato (PCF) === |
| | 168 | |
| | 169 | ,,20061210-1651 SoujaK,,[[BR]] |
| | 170 | La PCF fornisce un metodo di trasmissione dei ''frame'' che e' libero dalla |
| | 171 | contesa (e quindi anche dagli sprechi di tempo che essa comporta), grazie alle |
| | 172 | regole imposte dal PC residente nell' ''access-point''. Ogni stazione deve |
| | 173 | sottostare obbligatoriamente ai dettami del coordinatore impostando |
| | 174 | adeguatamente il proprio [wiki:CollegamentoMancante NAV] all'inizio di ogni CFP. |
| | 175 | Durante questi periodi, essendo la comunicazione strettamente regolata dal PC, |
| | 176 | le comunicazioni non necessitano dello scambio iniziale dei ''frame'' RTS/CTS. |
| | 177 | Questa e' una possibilita' offerta soltanto alle stazioni che implementano PCF, |
| | 178 | una funzionalita', ricordiamolo, opzionale. |
| | 179 | |
| | 180 | Affinche' il coordinatore possa conoscere quali stazioni sono accessibili in |
| | 181 | maniera ottimale durante i CFP, invia un apposito ''poll'', a cui risponderanno |
| | 182 | soltanto le stazioni dotate di tale caratteristica. Questo ''CF-poll'' e' |
| | 183 | inoltre la chiave di volta su cui questa modalita' di coordinamento si fonda; |
| | 184 | infatti le stazioni ''CF-pollable'' hanno occasione di spedire secondo una |
| | 185 | strategia di ''piggyback'', una (e una sola) MPDU assieme all' |
| | 186 | ''acknowledgment''.[[BR]] |
| | 187 | Se tale invio fallisce il ''frame'' non potra' essere ritrasmesso subito, ma la |
| | 188 | stazione interessata dovra' attendere il prossimo segnale di ''poll'' dal |
| | 189 | coordinatore, o il prossimo periodo di contesa. Il PC, invece ha la |
| | 190 | possibilita' di operare ritrasmissioni di frame non confermati (di cui, cioe', |
| | 191 | non ha ricevuto l'ACK) dopo un periodo di ''backoff'' di lunghezza temporale |
| | 192 | pari a [wiki:CollegamentoMancante PIFS]. |
| | 193 | |
| | 194 | ==== Struttura e tempistiche con PCF ==== |
| | 195 | |
| | 196 | ,,20061210-1817 SoujaK,,[[BR]] |
| | 197 | Come gia' anticipato i periodi liberi dalla contesa (CFP), in cui la |
| | 198 | trasmissione e' coordinata da PCF, si alternano temporalmente a periodi di |
| | 199 | contesa (CP) in cui il coordinamento e' gestito secondo DCF. I CFP hanno inizio |
| | 200 | dopo un ''frame Beacon'' contenente un apposito DTIM (Delivery Traffic |
| | 201 | Indication Message, messaggio di indicazione sul traffico della consegna) e |
| | 202 | avranno luogo con frequenze ben definite. Queste frequenze sono espresse come |
| | 203 | quantita' di intervalli DTIM, e sono comunicate dal PC alle altre stazioni |
| | 204 | tramite un campo appartenente ai ''frame Beacon'', nel set dei parametri |
| | 205 | dedicati a CF. |
| | 206 | |
| | 207 | La durata dei CFP e' invece di appannaggio del coordinatore che ha liberta' di |
| | 208 | scelta, purche' essa sia dichiarata preventivamente nel parametro |
| | 209 | ''CFP-MaxDuration'', appartenente al set precedentemente citato. Non e' inoltre |
| | 210 | necessario che la durata del CFP sia multipla dell'intervallo di trasmissione |
| | 211 | dei Beacon, dal momento che essi contengono anche un campo "''CFPDurRemaining''" |
| | 212 | che (come il nome suggerisce) indica il tempo rimanente alla fine del periodo |
| | 213 | libero dalla contesa, espresso in [wiki:CollegamentoMancante TU]. In ogni caso |
| | 214 | la durata del CFP e' al piu' pari al valore inizialmente dichiarato dal PC, |
| | 215 | quindi va precisato che, qualora la trasmissione dei ''frame Beacon'' iniziale |
| | 216 | venga ritardata (rispetto al [wiki:CollegamentoMancante TBTT]) a causa dell'alto |
| | 217 | carico del mezzo trasmissivo, il CFP puo' essere terminato anticipatamente di |
| | 218 | una quantita' di tempo pari al ritardo. |
| | 219 | |
| | 220 | ==== Procedura di accesso del PCF ==== |
| | 221 | |
| | 222 | ,,20061210-1931 SoujaK,,[[BR]] |
| | 223 | Il protocollo di trasmissione libero da contesa e' basato su uno schema di |
| | 224 | ''polling'' attuato dal coordinatore che opera nel' ''access-point'' del BSS. |
| | 225 | Durante questo lasso di tempo il PC prima prende il controllo del canale, e poi |
| | 226 | si assicura di mantenerlo. Prima di ogni sua trasmissione, infatti, attende |
| | 227 | per intervalli di tempo minori rispetto a quelli di ogni stazione operante |
| | 228 | tramite DCF. In generale tutte le stazioni diverse dal PC che sono presenti nel |
| | 229 | BSS setteranno il loro NAV in accordo con il valore del parametro |
| | 230 | ''CFPMaxDuration'' comunicato dal coordinatore. Per minimizzare il numero di |
| | 231 | trasmissioni sono definite dallo standard precisi sequenze con cui concatenare |
| | 232 | le informazioni aggregate tramite la pratica del ''piggyback''. |
| | 233 | |
| | 234 | ===== Accesso di base al mezzo ===== |
| | 235 | |
| | 236 | ,,20061211-1508 SoujaK,,[[BR]] |
| | 237 | All'inizio nominale di ogni CFP il PC controlla che il mezzo trasmissivo sia |
| | 238 | inutilizzato per un periodo lungo PIFS. Dopodiche' puo' trasmettere un ''frame |
| | 239 | Beacon'' contenente il set di parametri dedicati al CF settati in maniera |
| | 240 | opportuna unitamente ad un elemento DTIM. |
| | 241 | |
| | 242 | Dopo la trasmissione iniziale il coordinatore e' tenuto ad attendere almeno per |
| | 243 | un periodo SIFS, poi puo' cominciare a tramettere un ''frame'' di dati, un |
| | 244 | ''frame'' di tipo ''CF-Poll'', un ''frame'' contenente dati assieme al |
| | 245 | ''CF-Poll'' oppure un ''frame CF-End''. Nel caso in cui il CFP sia di durata |
| | 246 | nulla, perche' il PC non ha accumulato ne' traffico ne' ''poll'', esso inviera' |
| | 247 | subito dopo il ''beacon'' il ''frame CF-End''. |
| | 248 | |
| | 249 | Le stazioni che ricevono ''frame'' senza errori sono tenute a rispondere dopo un |
| | 250 | periodo SIFS, in accordo con le procedure che descriveremo piu' avanti |
| | 251 | [###todolink]. Le STA riceventi che non siano di tipo ''CF-Pollable'', |
| | 252 | segnaleranno il successo della ricezione con un classico ''frame'' ACK. |
| | 253 | |
| | 254 | ===== Uso del NAV ===== |
| | 255 | |
| | 256 | ,,20061218-1449 SoujaK,,[[BR]] |
| | 257 | Le modalita' di gestione del NAV durante i periodi liberi da contesa sono state |
| | 258 | pensate per consentire la sovrapposizione di piu' BSS di tipo infrastruttura. |
| | 259 | Ogni stazione (fatta eccezione per il PC) e' tenuto a preimpostare il proprio |
| | 260 | NAV con frequenza dettata dal TBTT (''target beacon trasmission time'') e con il |
| | 261 | valore del parametro `CFPMaxDuration` contenuto nei ''frame beacon''. Le varie |
| | 262 | STA potranno settare in maniera piu' accurata il NAV soltanto in seguito, |
| | 263 | utilizzando il parametro CFPDurRemaining presente nei ''frame beacon''. E' |
| | 264 | fondamentale notare che, al fine di gestire la sovrapposizione delle BSS le |
| | 265 | stazioni diverse dal PC prenderanno in considerazione anche i ''beacon'' |
| | 266 | provenienti da BSS diverse dalla propria. |
| | 267 | |
| | 268 | ==== Procedura di trasferimento ==== |
| | 269 | __DA FARE__ |