Laboratorio di Elettronica e Telecomunicazioni - Semi-modulo di analisi di reti 802.11

Accesso al mezzo trasmissivo

Capiamo cosa accade quando una o più stazioni mobili comunicano per mezzo dell'Access Point!

Indice


Distributed Coordination Function

La trasmissione radio delle trame 802.11 su di uno stesso canale, si avvale di una tecnica di accesso condiviso al mezzo nota come CSMA/CA (Carrier Sense Multiple Access, Collision Avoidance), che trae origine dal fatto che le stazioni non possono trasmettere e ricevere allo stesso tempo (dato che si usa la stessa frequenza in entrambe le direzioni), e quindi non è possibile accorgersi se la propria trasmissione è disturbata da un'altra (come nel caso del Collision Detect dell'Ethernet). Pertanto, tutti gli sforzi sono concentrati ad evitare che avvengano collisioni.

La modalità DCF (Distributed Coordination Function) non prevede l'esistenza di un controllo centralizzato delle trasmissioni, e prevede che quando lo strato MAC di una stazione riceve una trama pronta per essere inviata, la trasmissione abbia luogo solo dopo aver osservato un intervallo IFS (Inter Frame Space), durante il quale nessun altro sta trasmettendo. La durata di IFS può assumere uno di tre valori:
in casi differenti, permettendo di privilegiare certe trasmissioni rispetto ad altre.



Il caso più generale, è che una stazione mobile si ponga in attesa che sia trascorso un DIFS. Qualora il mezzo trasmissivo divenga occupato prima dello scadere del DIFS, questo vuol dire che la situazione non è così quieta come sembrava in un primo momento, e le stazioni che ancora devono trasmettere fanno un passo indietro (BackOff), estraendo un numero casuale inferiore ad un valore massimo, e che definisce la finestra di contesa.



Nella successiva occasione in cui il mezzo rimane libero per un intero DIFS, le stazioni in attesa di trasmettere si astengono dal farlo immediatamente, ed eseguono invece un conteggio all'indietro a partire dal numero estratto: la prima stazione che raggiunge lo zero, inizia a trasmettere. Le altre, che osservano il mezzo trasmissivo ritornare occupato, congelano i propri contatori, ed all'occasione seguente, fanno ripartire il conteggio a ritroso dal valore di backoff residuo a cui erano arrivati. Il senso di questa logica, è che la stazione che era in procinto di trasmettere, mantiene il suo vantaggio rispetto alle altre.



Nella figura precedente è esemplificato un caso in cui siamo presenti 5 diverse stazioni, che all'istante marcato dalle frecce arancioni, ricevono un pacchetto da trasmettere. Dopo che è trascorso un DIFS dal momento in cui STA3 ha ricevuto un pacchetto, questa inizia a trasmettere, prevenendo STA1 che pure aveva (successivamente) ricevuto un pacchetto. Nel momento in cui STA3 termina, anche STA2 e STA5, oltre a STA1, sono pronte a trasmettere, cosicché ha luogo la contesa basata sul backoff. Il caso vuole che STA2 abbia estratto il numero più basso, cosicché si aggiudica la possibilità di trasmettere, e dopo un ulteriore DIFS, inizia un altro tentativo di appropriazione del mezzo, a cui partecipa ora anche STA4, mentre STA1 e STA5 ripartono dal valore di backoff residuo.
Stavolta sia STA4 che STA5 iniziano a trasmettere contemporaneamente, dando luogo ad una collisione, indicata in figura con un fulmine, che sta a rappresentare l'interferenza reciproca delle due trasmissioni. La collisione viene rilevata da parte delle due stazioni che l'hanno prodotta, per il fatto che nessuna di esse riceve (entro un SIFS) una trama di ACKnoledgement (discussa sotto), e quindi, trascorso un nuovo DIFS, le tre stazioni tornano a competere per trasmettere lo stesso pacchetto, dopo che STA4 e STA5 (che hanno prodotto collisione) hanno estratto un nuovo valore di backoff. Ma quest'ultima contesa è vinta da STA1, che ha usato il backoff residuo dal tentativo precedente.
^ indice

ACKnoledgments

Come anticipato, una stazione non ha modo di accorgersi se la propria trasmissione incorre in una collisione, cosicché la stazione destinataria della trama deve comunicare l'avvenuta ricezione mediante dei riscontri positivi, detti ACK. Questi vengono trasmessi prima che sia trascorso un DIFS dal momento in cui il mezzo è tornato libero, rubando così il mezzo a tutte le altre stazioni in attesa del DIFS (che è più lungo del SIFS). In assenza di ACK, la stazione trasmittente tenterà di nuovo l'invio della trama non riscontrata.


^ indice

Terminale nascosto

Questo problema è noto con il nome di Hidden Terminal, ed è illustrato nella figura seguente. La copertura radio delle stazioni A e B è tale che queste non sono in visibilità reciproca, e quindi non possono accorgersi se l'altra sta già trasmettendo, rendendo inapplicabile il meccanismo di Collision Avoidance basato sull'attesa di un periodo di silenzio pari al DIFS. Nel caso di stazioni in visibilità, la finestra temporale in cui si può verificare collisione è pari al tempo di propagazione tra le stazioni, mentre nel caso di assenza di visibilità, si estende alla durata della trasmissione di una intera trama, aumentando considerevolmente la probabilità di una collisione.



Per evitare questo fenomeno, le stazioni possono configurare un parametro, che sancisce l'intervento di un diverso meccanismo di prenotazione delle risorse, qualora la dimensione della trama superi un certo valore. In tal caso la trasmissione è preceduta da uno scambio RTS-CTS (Request To Send - Clear To Send) in cui chi deve trasmettere (B nell'esempio), una volta trascorso il DIFS, anziché inviare al destinatario (C nell'esempio) la trama dati già pronta, gliene invia una di controllo molto più corta, il RTS appunto. A questo punto la stazione C (che tipicamente coincide con l'Access Point) assume un ruolo di coordinamento, e risponde con una trama di controllo di CTS. Quest'ultima viene ricevuta anche dal terminale nascosto (A nell'esempio), che da quel momento in poi, si astiene dal trasmettere, per il tempo indicato dal campo Duration presente nella trama CTS.



Il campo Duration delle trame RTS-CTS, viene impostato alla durata della successiva trasmissione, chiamata NAV (Network Allocation Vector), che per l'RTS corrisponde al tempo necessario alla ricezione del CTS e dell'ACK, alla trasmissione della trama dati, ed agli IFS relativi; il NAV associato al CTS è invece ridotto coerentemente. Tutte le stazioni che ricevono l'RTS od il CTS (compreso quindi il terminale nascosto), prendono nota del valore di NAV, si astengono dal trasmettere durante tale intervallo, e riprendono l'attesa per un DIFS silente allo scadere del NAV. L'intervallo coperto dal NAV è pertanto riservato alla trasmissione operata da parte di chi ha inviato l'RTS, e per ridurre l'impegno del media al minimo, tutti gli IFS sono di tipo Short.

Il file di capture orinoco.pcap, ottenuto nel contesto del setup sperimentale dopo aver fatto associare eth2 con l'AP, congiuntamente alla richiesta della pagina http://airsnort.shmoo.com/orinocoinfo.html, mostra sia la presenza degli acknowledgements a seguito di ogni trama, che la presenza dei RTS/CTS, nel caso di invio di trame di dimensione superiore ai 1000 bytes, avendo impostato l'Access Point in tal senso.
^ indice

Frammentazione

Ogni volta che si opera una trasmissione a pacchetto, occorre sempre ricordare che se l'adozione di una lunghezza di pacchetto elevata riduce l'inefficienza legata alla presenza delle intestazioni, allo stesso tempo aumenta la probabilità che si verifichi un errore di trasmissione (oltre a monopolizzare il mezzo trasmissivo). Pertanto, le stazioni possono operare su di un ulteriore parametro, che stabilisce la lunghezza massima di una trama, oltre la quale questa sarà trasmessa suddivisa in frammenti.



Come illustrato sopra, la trasmissione dei frammenti è preceduta da uno scambio RTS-CTS, che permette di diffondere un NAV con il quale si prenota il mezzo per il tempo necessario alla corretta trasmissione del solo primo frammento, in modo che se la trasmissone di quest'ultimo non va a buon fine, il mezzo torna rapidamente libero. Al contrario, se il primo frammento è trasmesso correttamente, a questo (ed al relativo ACK) è associato un nuovo NAV, con il quale si prenota il mezzo per la trasmissone del secondo frammento, e così via.

Considerando che l'ACK (come il CTS) è inviato dall'AP, il problema del terminale nascosto è anche stavolta risolto.

Nel caso in cui si verifichi un errore di trasmissione, il mezzo viene rilasciato e subentra una normale fase di contesa basata sull'attesa del DIFS; quando la stazione che non ha terminato di trasmettere i suoi frammenti si aggiudica (mediante RTS-CTS) nuovamente il mezzo, la trasmissione prosegue a partire dal successivo frammento ancora da trasmettere.

Il file di capture orinoco-frag.pcap, ottenuto nel contesto del setup sperimentale dopo aver fatto associare eth2 con l'AP, congiuntamente alla richiesta della pagina http://airsnort.shmoo.com/oldorinocoinfo.html, mostra l'intervento della procedura di frammentazione, per le trame di dimensione superiore ai 1200 bytes, avendo impostato l'Access Point in tal senso.
^ indice

Tipi e formato di trame, indirizzi

Ora che abbiamo più elementi, riassumiamo i possibili tipi di trama. In funzione dei due bit del campo Type



possiamo osservare tre tipi di trame, che si specializzano in base ai 4 bit del Subtype:
  • di gestione - i beacon ed i probe, le richieste/risposte di associazione ed autenticazione,
  • di controllo - RTS e CTS, ACK, PS-Poll, CF-end
  • dati - oltre al payload proveniente dagli strati superiori, possono anche trasportare il significato di Poll o di ACK nelle fasi Contention Free
Inoltre ora dovrebbe essere chiaro il senso dei campi More Fragments, Duration e Sequence Control (per numerare i frammenti). Per ciò che riguarda i possibili 4 campi indirizzo, questi possono essere presenti tutti o meno, in funzione del tipo di trama: ad esempio, per ciò che riguarda le trame ACK, RTS e CTS, le loro dimensioni sono molto contenute, risultando


Per quanto riguarda i flag To DS e From DS, questi indicano che la trama è diretta o proveniente dal/al Distribution System, ossia la rete cablata, e modificano il significato dei campi indirizzo, che sono assegnati in accordo alla tabella sottostante, in cui



Ad esempio, nella terza riga la trama ha origine in una stazione wireless (SA), è trasmessa verso l'AP (BSSID), ma il destinatario risiede nella rete cablata (DA). Nella quarta riga invece, la trama transita tra due AP che permettono di estendere due LAN separate, per mezzo di un ponte radio wireless.


^ indice

PCF e Contention Free Period

Un AP può assumere un controllo ancor più rigoroso sull'andamento delle trasmissioni, se svolge un ruolo di Point Coordinator (PC), supportando la Point Coordination Function (PCF). In tal caso, in occasione delle trame Beacon può dare inizio ad un periodo libero da contesa (CFP, Contention Free Period), in cui annuncia un NAV tale da inibire la trasmissione di tutte le altre stazioni.



La trasmissione del Beacon, che dovrebbe avvenire ad intervalli regolari, può essere posticipata a causa della occupazione del mezzo trasmissivo, ed in tal caso ha luogo dopo che è trascorso un PIFS (PCF IFS) dal momento in cui il mezzo è libero.
La durata del CFP può essere minore del previsto, nel qual caso viene tramessa una trama di controllo CF-end, che resetta la durata del NAV.
Durante il CFP, il PC invia messaggi di Poll a rotazione verso le stazioni, interrogandole a riguardo della disponibilità di dati da trasmettere. In questo modo, anche in presenza di traffico sostenuto proveniente/destinato da/a tutte le stazioni, si riesce a garantire una certa equità di trattamento per le diverse stazioni.


^ indice

Sincronizzazione e risparmio energetico

Come ossevato, i Beacon Frame (quasi un heartbeat della rete wireless) possono essere ritardati, a causa di traffico preesistente. All'interno del Beacon è presente un Timestamp, attualizzato al momento della trasmissione, che permette alle altre stazioni di mantenere la sincronizzazione.



Come già mostrato precedentemente, le stazioni in uno stato di Power Saving si pongono periodicamente in ricezione in occasione dell'arrivo atteso del Beacon; permangono in ricezione finchè il beacon non arriva per davvero, e verificano se nella TIM o DTIM non sia annunciato del materiale per loro.



La figura mostra una stazione che prima rimane attiva per ricevere del traffico multicast, poi si disattiva non appena si avvede che non c'è traffico per lei. Quindi al terzo Beacon, la cui TIM annucia traffico per la stazione, questa invia una trama di controllo PS-Poll, riceve i dati, e ne trasmette a sua volta. Infine, resta nuovamente attiva per ricevere una nuova trama broadcast.
^ indice

Letture ulteriori

^ indice