1 WLAN IEEE 802.11: Descrizione generale INTRODUZIONE Gli standard IEEE 802.11 descrivono le specifiche dell’architettura di reti LAN wireless. Questi nascono dall’esigenza di realizzare reti in area locale senza dover stendere cavi, complicando l’installazione della rete stessa e aumentandone i costi. Nel corso degli anni sono state sviluppate più versioni dello standard, per supportare velocità di trasmissione sempre più elevate: − 802.11, versione iniziale dello standard, 1 o 2 Mbps utilizzando le tecniche Spread Spectrum (FHSS e DSSS) − 802.11a 54 Mbps nella banda a 5 GHz utilizzando Ortogonal Frequency Division Multiplexing OFDM − 802.11b conosciuta anche come Wi-Fi, è un’estensione dello standard iniziale e utilizzando la tecnica DSSS fornisce una bit-rate di 5.5 e 11 Mbps, sempre nella banda a 2.4 GHz − 802.11g estensione dell’802.11b, fornisce una bit-rate di 54 Mbps nella banda ISM a 2.4 GHz ARCHITETTURA Lo standard IEEE 802.11 descrive l’architettura del livello MAC (Medium Access Control) e del livello fisico. E’ definito un livello MAC e tre livelli fisici, operanti a differenti bit-rate. 802.2 802.11 MAC Data Link Layer FH DS OFDM IR Physic layer
41
Embed
WLAN IEEE 802.11: Descrizione generaleconan.diei.unipg.it/RCM/dispense/Wi-Fi_descrizione generale.pdf · basic service set (BSS), ovvero un insieme di stazioni che trasmettono e ricevono
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
WLAN IEEE 802.11: Descrizione generale
INTRODUZIONE
Gli standard IEEE 802.11 descrivono le specifiche dell’architettura di reti
LAN wireless. Questi nascono dall’esigenza di realizzare reti in area locale senza
dover stendere cavi, complicando l’installazione della rete stessa e aumentandone i
costi.
Nel corso degli anni sono state sviluppate più versioni dello standard, per
supportare velocità di trasmissione sempre più elevate:
− 802.11, versione iniziale dello standard, 1 o 2 Mbps utilizzando le
tecniche Spread Spectrum (FHSS e DSSS)
− 802.11a 54 Mbps nella banda a 5 GHz utilizzando Ortogonal
Frequency Division Multiplexing OFDM
− 802.11b conosciuta anche come Wi-Fi, è un’estensione dello standard
iniziale e utilizzando la tecnica DSSS fornisce una bit-rate di 5.5 e 11
Mbps, sempre nella banda a 2.4 GHz
− 802.11g estensione dell’802.11b, fornisce una bit-rate di 54 Mbps
nella banda ISM a 2.4 GHz
ARCHITETTURA
Lo standard IEEE 802.11 descrive l’architettura del livello MAC (Medium
Access Control) e del livello fisico. E’ definito un livello MAC e tre livelli fisici,
operanti a differenti bit-rate.
802.2
802.11 MAC
Data Link Layer
FH DS OFDM IR Physic layer
2
Il livello MAC appare al livello superiore (Logical Link Control LLC) come
un qualsiasi altro protocollo 802.X; per soddisfare i requisiti di affidabilità che i
livelli superiori richiedono sono incorporate delle funzioni particolari, come la
frammentazione, la ritrasmissione e la conferma dei pacchetti, che sono
comunemente di competenza dei livelli superiori.
L’architettura IEEE 802.11 è di tipo cellulare; il sistema è diviso in celle, le
basic service set (BSS), ovvero un insieme di stazioni che trasmettono e ricevono
trame, ognuna delle quali è controllata da una stazione particolare chiamata Access
Point. Più BSS possono essere connesse tra loro attraverso un sistema di
distribuzione (distribution system DS) per formare un extended service set (ESS);
tutte le stazioni dello stesso ESS appaiono come appartenenti allo stesso BSS agli
strati superiori dell’architettura. In questo caso l’Access Point fornisce l’accesso al
DS a tutte le stazioni del BSS. Il DS nella maggior parte dei casi è una LAN cablata
della famiglia 802.X, ma nulla vieta di implementarlo attraverso un collegamento
wireless. Il DS fornisce anche il collegamento ad altre tipologie di reti LAN, tramite
un componente logico dell’architettura, un portale (portal); le reti non wireless
collegate al DS vengono dette integrate. Se siamo di fronte a un BSS non connesso
tramite un DS si parla di indipendent BSS (IBSS), o anche di rete ad hoc. Questo tipo
di rete, del tipo peer to peer, può essere formata anche da sole due stazioni, e in
genere si forma per scopi temporanei, ad esempio riunioni o convegni.
Due BSS indipendenti
3
Due BSS collegate attraverso il DS per formare un ESS
BSS collegata attraverso il DS a una rete LAN non 802.11
MODALITA’ DI ACCESSSO AL MEZZO
All’interno di ogni BSS è attiva una funzione di coordinamento (coordination
function CF), ossia una funzione logica che all’interno della cella stabilisce a quale
stazione è permesso ricevere o inviare trame.
Le CF possono essere di due tipi, distributed coordination function (DCF) o
point coordination function (PCF). Nel primo caso la funzione logica è attiva in tutte
le stazioni, mentre nel secondo caso lo è solo in una stazione per ciascun BSS. Il
sistema di accesso principale, il DCF, è chiamato Carrier Sense Multiple Access with
Collision Avoidance (CSMA/CA), simile a quello usato nello standard Ethernet
CSMA/CD dove CD sta per Collision Detection. La modalità CSMA/CA cerca di
ridurre la probabilità di collisione quando il canale diventa libero dopo essere stato
Distribution System Access Point Portale
LAN 802.X
Distribution System Access Point
4
occupato per un certo periodo di tempo, in quanto è possibile che più stazioni
cercheranno di trasmettere. Per questo motivo, oltre all’ascolto (sensing) del canale,
sia virtuale che fisico, viene introdotto l’algoritmo di backoff. Ogni stazione, prima
di trasmettere, controlla il canale, per determinare se un’altra stazione ha già iniziato
l’invio di un pacchetto. Il canale deve essere libero almeno per uno specificato
intervallo minimo affinché la trasmissione possa avvenire. Se invece il mezzo è
occupato, la stazione trasmittente dovrà selezionare un intervallo di tempo, detto
appunto di backoff, casualmente entro certi limiti, passato il quale tenterà di nuovo la
trasmissione.
Come detto nel PCF la logica di controllo è presente solo in una stazione
all’interno di un BSS, l’access point, che viene chiamato point coordinator PC. In
questo caso si opera in modalità polling, con il PC che funge da polling master. Il PC
abilita alla trasmissione una stazione alla volta, utilizzando delle trame particolare e
andando a impostare il network allocation vector NAV di ogni stazione. In questo
modo è possibile impostare una modalità di accesso contention free, in quanto il PC
permette la trasmissione ad una stazione alla volta. L’interspazio tra le trame in
questo caso è più piccolo rispetto al caso DCF. Perciò nel caso di sovrapposizione tra
le aree di copertura di una BSS gestita in modalità DCF e di una gestita da un PC,
quest’ultimo avrà la priorità nell’accesso al mezzo trasmissivo. In questo caso
potrebbe essere necessaria una modifica alla modalità di accesso per evitare tale
problema.
FORMATO DELLE TRAME
Esistono tre tipi di trame:
− Data frame, usate per la trasmissione dei dati
− Control frame, che servono per controllare l’accesso al mezzo,
come RTS/CTS o gli ACK e
− Management frame, che sono inviate come le trame di dati, ma
servono per scambiare informazioni di gestione e non vengono
passate ai livelli superiori.
Ogni trama a livello fisico è costituita da quattro componenti fondamentali:
− preambolo (preamble)
5
− PLCP Header
− MAC Data
− CRC
Il preambolo contiene due campi: il primo di sincronizzazione, formato da 80
bit, che serve per adattare il ricevitore sull’esatta frequenza di trasmissione (che
potrebbe variare leggermente da quella nominale) e il secondo, chiamato Start Frame
Delimiter, che consiste in 16 bit (0000 1100 0011 1101) usati per sincronizzare la
trama.
Il PLCP header consiste di tre campi separati: PSDU Length Word (PLW),
PLCP Signaling Field (PSF), PLCP Header Error Check Field (HEC). Il PLW
rappresenta il numero di ottetti presenti nel pacchetto, e serve al livello fisico per
determinare correttamente la fine della trasmissione. Il PSF contiene informazioni
sulla bit-rate utilizzata, mentre l’HEC è un campo che serve per controllare l’assenza
di errori all’interno dell’header stesso, ed è realizzato mediante un codice ciclico.
Il CRC permette di individuare la presenza di errori nell’intero pacchetto.
MAC Data non è altro che la trama MAC passata dal livello superiore
dell’architettura. La sua massima lunghezza è di 2304 byte e è formata da tre
componenti principali:
− MAC header
− Corpo della trama
− Frame Check Sequence (FCS), contiene un CRC (Ciclyc
Redundancy Check) di 32 bit per controllare la presenza di
errori
Il formato generale della trama è il seguente
6
Nel Frame Control sono presenti vari campi di controllo, come mostrato nella
figura sottostante.
tipi e sottotipi di trame e relative configurazioni dei bit
7
Nel protocol version viene specificato il protocollo utilizzato; è principalmente per
compatibilità verso evoluzioni future e per ora i bit sono posti entrambi a zero. In
type e subtype viene specificato il tipo di trama (management, control o data) e la sua
specifica funzione. Il campo To DS è posto a uno quando la trama deve essere
indirizzata all’AP che deve ridistribuirla tramite il Distribution System (anche se la
stazione di destinazione è nello stesso BSS), mentre il bit From DS indica che la
trama proviene dal DS. Il bit More Fragments sarà posto a 1 se la trama fa parte di un
set di frammenti e non è l’ultima della sequenza. Utile è anche il Retry field, che
specifica se la trama corrente è la ritrasmissione di una trama precedente che non è
stata ricevuta correttamente. Il campo Power management è utilizzato dalla stazioni
che sfruttano il Power save mode, come lo è il campo More Data, che indica alla
stazione che ci sono dei pacchetti memorizzati nell’AP. Infine il campo WEP indica
l’utilizzo dell’algoritmo di cifratura, mentre in Order è specificato se la trama utilizza
il servizio StrictlyOrdered.
Il campo Duration/ID ha una doppia funzione a seconda del tipo di trama: è
utilizzato nel meccanismo del Virtual Carrier Sensing per specificare la durata delle
successive operazioni di trasmissione e così aggiornare il NAV, oppure nelle
operazioni di poll identifica la stazione.
Ogni trama può contenere fino a quattro campi Address, e il loro significato è
subordinato ai valori dei campi To e From DS prima visti. Gli indirizzi utilizzato
sono a 48 bit e rispettano lo standard IEEE 802. I primi due sono sempre
rispettivamente l’indirizzo del destinatario e della sorgente del messaggio all’interno
della stessa BSS; questo vuol dire che se il messaggio è diretto in un’altro BSS
dell’ESS l’indirizzo ricevente sarà quello dell’AP, e l’indirizzo della stazione
destinataria vera e propria sarà posto nel terzo campo di indirizzo. Al contrario se il
messaggio è arrivato attraverso il DS, e quindi il bit From DS è posto a 1, l’indirizzo
del mittente sarà uguale a quello dell’AP. Il quarto indirizzo è utilizzato se si sta
usando un sistema di distribuzione di tipo wireless; in questo caso entrambi i bit To e
From DS saranno uguali a 1 e nei primi due indirizzi saranno presenti gli ID dei due
AP interessati, mentre gli indirizzi della stazione sorgente e destinataria saranno posti
nei due restanti campi
8
Il campo Sequence Control è utilizzato per controllare l’ordine di frammenti
appartenenti alla stessa trama; è composto dal Sequence Number, che identifica il set
di frammenti, e dal Fragment Number che individua il frammento all’interno del set.
Infine l’ultimo campo, il cyclic redundancy check (CRC), è utilizzato per il
controllo di errore attraverso un codice ciclico.
Quella fin qui presentata è la struttura generica, e non è detto che tutti i campi
siano presenti in ogni trama.
Ad esempio tra le trame di controllo è presente la trama Request To Send
(RTS), che ha il seguente formato:
Nel campo RA viene indicato l’indirizzo della stazione che deve ricevere la
trama seguente, in TA l’indirizzo della stazione che ha spedito il pacchetto e nel
campo Duration è specificata la durata in microsecondi richiesta per l’invio del
messaggio, della trama CTS di risposta e dell’ACK. Sono inoltre compresi tre SIFS
per compensare i ritardi di attesa tra le trame.
La trama Clear To Send (CTS) è così composta:
Nel campo RA è posto l’indirizzo prelevato dal campo TA della trama RTS
immediatamente precedente, di cui la trama CTS è la risposta. Il valore del campo
Duration è sempre ottenuto dalla trama RTS sottraendo il tempo necessario a inviare
il CTS e il tempo di attesa SIFS.
La trama di acknowledgement (ACK) è così composta:
9
Anche in questo caso il campo RA è ricavato dalla trama immediatamente
successiva. Il campo Duration è diverso da zero solo se la trama precedente aveva il
bit More Fragments posto a 1; in questo caso il campo durata è ricavato dall’analogo
valore nella trama precedendo sottraendo il tempo necessario alla trasmissione
dell’ACK e l’intervallo SIFS.
Altre trame di controllo sono:
− CF-End: inviata dal PC per annunciare la fine del periodo senza contese
− CF-End + CF-Ack: come sopra ma in questo caso esegue anche
l’acknowledgment di una trama ricevuta precedentemente
− Power Save Poll (PS-Poll): inviato da una stazione all’AP per chiedere la
trasmissione dei pacchetti memorizzati mentre la stazione era in modalità di
risparmio energetico.
La trama principale è ovviamente quella che trasmette dati (Data frame); il
suo formato è il seguente:
I campi di controllo, di indirizzo e l’FSC sono già stati presentati. Il campo
Duration invece ha un comportamento diverso a seconda della modalità di accesso al
mezzo che si sta usando. Se si sta utilizzando la PCF e siamo nel periodo libero da
collisioni (CFP), il campo è settato al suo valore massimo, cioè 32768. Se invece
siamo nell’intervallo di collisione, il campo ha diversi valori:
− se il campo di indirizzo rappresenta un indirizzo di gruppo, è
posto a 0
10
− se l’indirizzo invece è unicast e il bit More Fragments è posto
a 0, il campo Duration ha un valore uguale al tempo di
trasmissione di un ACK più un intervallo SIFS.
− Se infine il bit More Fragments è uguale a 1, al campo
Duration del caso precedente bisogna aggiungere il tempo
necessario a spedire il prossimo frammento e quello per
confermarlo attraverso l’ACK
Il corpo della trama ha una lunghezza variabile, e comprende la MSDU, o un
suo frammento, più eventualmente l’IV e l’ICV se si sta utilizzando l’algoritmo
WEP. Le trame che trasportano dati sono otto e sono divisi in due gruppi. Le prime
quattro sono:
− Data: è il frame di dati più semplice e può essere utilizzato sia nel periodo a
contesa che nel periodo contention-free.
− Data + CF-Ack: usato solo nel periodo a contesa, invia dati e esegue
l’acknowledgment di trame ricevute precedentemente
− Data + CF-Poll: può essere utilizzato solo dal coordinatore centrale PC per
inviare dati e contemporaneamente richiede alla stazione destinataria l’invio di
dati eventualmente memorizzati (poll)
− Data + CF-Ack + CF-Poll: combina le funzioni delle due trame sopra esposte
Gli altri quattro tipi di trame in realtà non trasportano dati: il frame Null è
utilizzato per trasmettere informazioni sullo stato del trasmettitore attraverso il
campo Frame Control, mentre le altre trame svolgono la stessa funzioni di quelle
sopra presentate senza però trasportare dati.
Tra le trame di tipo management, una tra le più importanti è il Beacon.
Questa trama viene inviata periodicamente all’interno di un BSS, in genere dall’AP,
e serve ad esempio per sincronizzare le varie stazioni o per la gestione delle stazioni
in modalità Power Save.
I campi presenti in questa trama sono:
− timestamp, che riporta il valore di un timer a scopo di
sincronizzazione;
11
− supported rates, che specifica le bit-rate supportate
− alcuni campi specifici a seconda dello strato fisico utilizzato
− il CF Parameter Set, una sequenza di campi che riportano
informazioni sulla modalità PCF: CFP_Count, che indica quanti
DTIM rimangono prima del prossimo CFP (se è uguale a zero vuol
dire che questo beacon ne indica l’inizio); CFP_Period indica il
numero di DTIM tra un CFP e l’altro; CFP_ Max_Duration e
CFP_Dur_Remaining indicano la durata del CFP.
− il campo TIM (traffic indication map), che indica tra quanto tempo
verrà inviata una trama di tipo DTIM (delivery traffic indication
message) e, per le stazioni in modalità Power Save, se ci sono dei
pacchetti memorizzati nell’AP e pronti per essere spediti.
−
Altre trame di tipo management sono le richieste e le risposte di associazione,
di riassociazione, di autenticazione e di probe. Quest’ultima viene usata dalle stazioni
per ottenere informazioni da un’altra stazione o da un AP e serve per identificare un
BSS. L’Announcement Traffic Indication Message viene inviato da una stazione ad
altre stazioni che si trovano in modalità a basso consumo per avvertirle che sono
presenti delle trame memorizzate diretti a quelle stazioni.
12
FRAMMENTAZIONE
La serie di standard IEEE 802 prevede pacchetti lunghi fino ad alcune
migliaia di byte (ad esempio in Ethernet la dimensione massima dei pacchetti è di
1518 ottetti). Nelle reti wireless questo potrebbe dare dei problemi, infatti a causa
della maggiore error rate, è più probabile avere errori in pacchetti lunghi. Inoltre
utilizzando la modulazione FHSS ogni trasmissione dovrebbe essere effettuata
all’interno di uno stesso hop ma questo è reso più difficoltoso da pacchetti più
lunghi, con conseguenti ritardi a causa del rinvio della trasmissione. Perciò lo
standard implementa a livello MAC un semplice meccanismo di frammentazione dei
pacchetti.
Innanzitutto però è necessario un meccanismo per l’individuazione e
l’eventuale eliminazione dei pacchetti duplicati. Per far questo ogni trama ha
all’interno un campo, chiamato sequence control field, che consiste di un numero di
sequenza e un numero di frammento. In questo modo si possono individuare i singoli
frammenti (MAC protocol data unit MPDU) che fanno parte dello stesso messaggio
(MAC service data unit MSDU), in quanto avranno tutti lo stesso numero di
sequenza. La stazione ricevente dovrà mantenere un set di tuple del tipo <indirizzo
mittente, numero di sequenza, numero di frammento>, che sarà aggiornato
ogniqualvolta si riceve correttamente una trama intermedia di una sequenza. In
questo modo se una stazione riceverà una trama con il retry field posto a 1 e che è già
presente nell’insieme di trame ricevute potrà scartarla in quanto è il duplicato di una
frame già correttamente ricevuta. La stazione dovrà comunque confermare la trama
attraverso l’ACK anche se questa viene scartata perché già ricevuta.
Quando si deve trasmettere una trama, si deve controllare se è il caso di
frammentarla in pacchetti più piccoli, attraverso il confronto con
FragmentationThreshold. Questo parametro specifica anche la dimensione massima
che devono avere i pacchetti una volta frammentati. Possono essere frammentate solo
le trame unicast; le trame di tipo broadcast o multicast non devono essere
frammentate anche se la loro dimensione eccede il limite imposto. Le trame devono
avere una dimensione fissa, tranne l’ultima che può essere più piccola, e questa
13
dimensione non può cambiare durante la trasmissione di una sequenza, ad esempio
per compensare il limite del dwell time. La stazione tenta di trasmettere i frammenti,
aspettando l’ACK dopo ogni invio. Se a causa di errori il numero di tentativi supera
un limite prefissato, la stazione smette di inviare i frammenti rimanenti, e la stazione
ricevente scarta l’intera sequenza ricevuta. Lo standard permette alle stazioni di
inviare pacchetti ad altre stazioni anche se non si è finito di inviare una sequenza.
Questo si dimostra particolarmente utile nel caso di un AP che ha molti pacchetti da
inviare verso diverse stazioni e una di queste non risponde.
La stazione ricevente, una volta ricevuti tutti i pacchetti, avrà tutte le
informazioni per deframmentare la sequenza e ricavare la trama originale. Anche in
questo caso la stazione controlla il tempo di ricezione dei frammenti e se questo
diventa superiore a un valore massimo, l’intera sequenza di frammenti ricevuti viene
scartata. La stazione dovrà controllare anche l’eventuale presenza di frammenti
duplicati e eventualmente scartarli attraverso il meccanismo prima presentato.
IFS
L’intervallo tra due trame successive viene chiamato interframe space (IFS).
Nello standard sono definiti quattro tipi di IFS, per fornire diversi livelli di priorità
nell’accesso al mezzo. Essi sono, partendo dal più breve:
SIFS short interframe space
PIFS PCF interframe space
DIFS DCF interframe space
EIFS extended interframe space
14
Il SIFS viene usato nell’invio di ACK, nella risposta a un RTS attraverso il
CTS, nell’invio di una sequenza di frammenti e dal PC per tutte le trame durante il
CFP. Questo è l’intervallo più breve definito nello standard, e viene usato da una
stazione quando questa ha preso il controllo del mezzo e deve mantenerlo per
terminare una serie di trasmissioni. In questo modo la stazione, usando l’IFS più
breve, impedisce ad altre stazioni di utilizzare il mezzo radio, in quanto queste ultime
devono controllare che il mezzo sia libero per un periodo di tempo maggiore. Il suo
valore è calcolato in modo da permettere al ricevitore di passare dalla modalità di
invio alla modalità di ricezione e di decodificare il pacchetto in arrivo.
Il PIFS è usato solamente all’interno dei periodi contention free, durante la
modalità operativa PCF.
Il DIFS viene usato dalle stazioni nella modalità DCF per trasmettere trame di
dati o di management. L’unica eccezione al suo utilizzo è la ricezione di una trama
non corretta.
L’EIFS deve essere usato da una stazione operante in modalità DCF se il
livello fisico riporta la ricezione di una trama affetta da errori. Questo tempo deve
permettere ad altre stazioni di confermare la trame che questa stazione non ha
ricevuto correttamente. Se durante questo intervallo la stazione riceve una trama
senza errori il timer viene azzerato e la stazione torna al normale funzionamento
DCF.
I valori esatti di questi interspazi variano a seconda del livello fisico utilizzato
nella trasmissione.
DCF
Nello standard Ethernet viene utilizzato il meccanismo della identificazione
della collisione (Collision Detection CD), in modo che il livello MAC possa scartare
le trame affette da errore e richiedere un loro ulteriore invio. Nelle reti wireless
questo meccanismo è improponibile in quanto necessita di un canale full duplex, che
farebbe aumentare il prezzo degli apparati, e inoltre sottintende che tutte le stazioni
siano in diretto contatto radio, cosa che invece non è data per scontata nelle reti
802.11. Per ovviare a questi problemi si utilizza il meccanismo Collision Avoidance
15
con acknowledgement positivo. Anche in questo caso la stazione deve controllare la
presenza di trasmissioni sul canale attraverso il meccanismo del sensing, che viene
fornito dal livello fisico, e che può essere effettuato anche in modalità virtuale. Se il
canale viene rilevato libero per un tempo uguale al distributed inter frame space
(DIFS) la trasmissione può avvenire, altrimenti si dovrà invocare il meccanismo di
backoff. La stazione ricevente controllerà il pacchetto e se questo sarà ricevuto senza
errori, invierà un acknowledgement (ACK) alla stazione sorgente dopo aver atteso un
intervallo SIFS; se l’ACK non giungerà alla stazione entro un tempo di timeout
prestabilito, quest’ultima ritrasmetterà il messaggio fino alla sua corretta ricezione
oppure dopo un intervallo determinato scarterà il messaggio.
esempio di contesa e IFS
Il sensing del canale viene effettuato anche in modalità virtuale, attraverso lo
scambio preliminare di pacchetti tra le stazioni. Una stazione prima di trasmettere un
messaggio invierà una breve trama detta Request To Send (RTS) in cui saranno
indicati gli indirizzi della stazione sorgente e di quella destinataria, e la lunghezza
della successiva operazione, ovvero la durata dell’invio del messaggio e dell’ACK,
comprensivi di interspazi tra le trame. La stazione di destinazione risponderà con un
altro breve messaggio chiamato Clear To Send (CTS); questo pacchetto avrà la
precedenza sugli altri perché la stazione che lo invia deve aspettare solo un tempo
uguale allo short inter frame space SIFS, che è il minimo intervallo di tempo tra le
trame. All’interno di questo pacchetto saranno specificati gli indirizzi delle due
stazioni interessate nell’operazione e la sua durata, ricavata dal messaggio RTS a cui
però sarà sottratta la durata dell’ACK e dell’intervallo SIFS. La stazione che ha
16
inviato la trama RTS dovrà attendere un intervallo di timeout entro il quale si aspetta
di ricevere la risposta dalla stazione destinataria del pacchetto. Se non dovesse
ricevere nessuna trama durante questo intervallo, o se ricevesse una trama ma non
del tipo CTS, questo dovrebbe essere interpretato come esito negativo della
procedura RTS/CTS, perciò la stazione dovrà invocare la procedura di backoff. Se al
contrario la stazione riceve un pacchetto del tipo CTS dalla stazione dal destinatario
del pacchetto RTS, la procedura di invio può continuare. Tutte le altre stazioni alla
ricezione del messaggio aggiorneranno un indicatore interno chiamato Network
Allocation Vector (NAV) alla durata impostata nel messaggio. Questo vettore
manterrà informazioni sull’occupazione futura del canale di comunicazione, e
combinando le sue informazioni con quelle del sensing fisico si potrà conoscere lo
stato di occupazione del mezzo radio. Utilizzando i pacchetti RTS/CTS si hanno
anche ulteriori vantaggi, infatti si evitano collisioni anche nel caso di stazioni
nascoste, ovvero che non siano in contatto diretto tra loro. Tutte le stazioni vicine al
ricevitore avranno ricevuto il CTS e quindi riserveranno un periodo di tempo per
quel messaggio impostando il NAV, mentre le stazioni vicine alla stazione sorgente,
avendo ricevuto l’RTS, non interferiranno con la trasmissione, e in particolare
permetteranno la corretta ricezione dell’ACK. Il discorso si applica anche a stazioni
che ricevono le trame RTS/CTS ma che fanno parte di altre BSS che si
sovrappongono parzialmente con quella interessata. Questo meccanismo ha
significato solo nel caso in cui il messaggio da trasmettere sia significativamente più
grande dei pacchetti RTS/CTS, altrimenti lo standard prevede anche un tipo di
trasmissione senza la prenotazione del mezzo. In questo caso si userà una variabile
detta RTS_Threshold da confrontare con la lunghezza del pacchetto da trasmettere,
al disotto del quale non saranno inviati i pacchetti RTS/CTS.
17
esempio di procedura RTS/CTS e uso del NAV
La procedura di virtual channel sense viene utilizzata anche nel caso di una
MSDU frammentata, con alcune modifiche. La stazione che inizia la procedura invia
una trama RTS, in cui il campo Duration/ID è impostato a un valore uguale al tempo
necessario per inviare il primo frammento e l’ACK corrispondente, più due SIFS, e
la stazione che risponde con il CTS utilizza il campo durata in modo simile, cioè per
permettere l’arrivo del primo ACK. Dopo aver ricevuto l’ACK e avere atteso un
intervallo SIFS, la stazione sorgente invia il secondo frammento dell’unità dati, e
sfrutta il campo Duration della trama per impostare il NAV delle altre stazioni fino
alla fine del secondo ACK; anche la stazione ricevente utilizza l’ACK allo stesso
scopo. In questo modo si attua una procedura RTS/CTS virtuale, in quanto queste
trame vengono spedite solo prima del primo pacchetto mentre in seguito vengono
sfruttate le trame dati per lo stesso fine.
utilizzo di RTS/CTS in caso di frammentazione
18
L’algoritmo di backoff verrà chiamato in causa ogniqualvolta il mezzo sarà
trovato occupato, sia attraverso il virtual carrier sense che attraverso l’ascolto vero e
proprio del canale, o anche nel caso di errore nel messaggio o nell’ACK. Dopo aver
rilevato che il mezzo di comunicazione è occupato, la stazione attende che torni
libero; quando il canale radio rimane libero per un tempo DIFS, l’algoritmo genera
un tempo addizionale per un ulteriore rinvio della trasmissione, a meno che il timer
non abbia già un valore diverso da zero. Questo serve per minimizzare la probabilità
di collisione tra stazioni che hanno rinviato la trasmissione a causa dello stesso
evento.
Per calcolare il tempo di backoff si applica una semplice formula
BackoffTime = Random() * SlotTime
dove SlotTime è la durata di uno slot temporale mentre Random() è un
numero casuale. Per calcolare questo numero casuale bisogna definire il parametro
contention window CW, che è compreso tra CWmin e CWmax. Il numero Random()
sarà scelto in una distribuzione uniforme nell’intervallo [0,CW]; è importante
assicurarsi che i numeri casuali scelti dalle varie stazioni siano statisticamente
indipendenti tra loro, altrimenti si perderebbe tutto il vantaggio del meccanismo di
backoff. I valori di CW saranno scelti in una sequenza in cui ciascun intero è una
potenza del 2, meno 1 (7, 15, 31, 63,…). Partendo da CWmin, si sceglierà il numero
seguente quando si avrà un tentativo di invio senza successo di un pacchetto, fino a
raggiungere CWmax; se si invia un pacchetto in modo corretto si reimposterà CW al
valore minimo. Ad ogni invio errato quindi l’ampiezza della contention window
raddoppierà, per cui il meccanismo è chiamato exponential backoff algorithm.
19
esempio dell’aumento esponenziale della durata della contention window CW
Una volta calcolato il numero casuale, il timer di backoff viene settato a
questo valore. Dopo che il mezzo è rimasto libero per un tempo uguale a DIFS, la
procedura controlla che il mezzo trasmissivo rimanga libero per la durata di uno slot:
se questo avviene, il timer di backoff viene decrementato di un valore uguale alla
durata di uno slot, mentre se il canale è occupato il contatore non viene decrementato
e la procedura di decremento riprendo dopo DIFS. Quando infine il contatore
raggiunge lo zero si avvia la trasmissione. In questo modo la stazione che avrà
calcolato il più breve intervallo di backoff avrà la precedenza sulle altre e inizierà a
inviare il messaggio per prima.
esempio di procedura di backoff: la stazione C, che ha calcolato l'intervallo di backoff più
breve inizia la trasmissione per prima
20
La procedura di recupero in caso di errore in una trama, ad esempio dovuto
alla mancata ricezione della trama CTS o di un ACK a causa di collisioni o di
interferenze nel canale radio, deve essere effettuata dalla stazione che ha iniziato la
sequenza di scambio. Questa deve provvedere a rinviare le trame che non sono state
inviate con successo, finché non si ha la conferma di ricezione corretta oppure non si
raggiunge un limite prestabilito, e allora il pacchetto viene scartato. Il limite dipende
anche dal tipo di trama che si sta spedendo: infatti esistono due variabili, Station
Short Retry Counter SSRC e Station Long Retry Counter SLRC, l’una utilizzata
come contatore per gli invii di trame di lunghezza minore o uguale all’RTSTheshold,
l’altra per tutte quelle che superano tale lunghezza. La ritrasmissione delle trame
deve continuare fino a che il contatore interessato non raggiunge il limite associato e
cioè Short Retry Limit o Long Retry Limit.
Quando una stazione riceve una trama che necessita di ACK (questo non
serve ad esempio per pacchetti multicast o broadcast), dopo aver aspettato il SIFS,
invia la conferma del messaggio. La stazione che ha inviato la trama deve attendere
un intervallo di tempo entro il quale si aspetta di ricevere l’ACK; se questo timeout
scade, assume che il pacchetto sia andato perso e perciò utilizza la procedura di
backoff per tentare di inviarlo di nuovo. Per la stazione non è possibile sapere se
l’errore è avvenuto nella trama inviata o nella conferma. Se invece l’ACK giunge a
destinazione, dopo averne controllata l’esattezza, la stazione ricevente può mantenere
il controllo del canale e continuare a inviare un altro pacchetto, sempre ritardando di
SIFS l’invio. Il controllo del canale può essere mantenuto dalla stazione fino a che
non si ha un errore nell’invio, ovvero non si riceve il relativo ACK, oppure si arresta
l’invio di tutti i frammenti relativi a una certa MSDU, oppure se l’operazione di
invio, cioè la trasmissione stessa e il tempo necessario per ricevere l’ACK, non
supera un tempo massimo di occupazione del canale da parte della stazione. La
tecnica di inviare frammenti multipli dopo aver guadagnato il controllo del canale è
chiamata fragment burst.
PCF
21
La funzione PCF si basa sulla modalità DCF, di cui sfrutta le regole. Nel
PCF, il point coordinator (PC), che risiede nell’AP, utilizza il meccanismo del
polling per rendere la comunicazione senza contese (contention free). In questa
modalità di funzionamento i periodi liberi da contese (Contention Free Period CFP)
si alternano a intervalli controllati dalla logica DCF, in cui perciò si potrebbero avere
delle contese di utilizzo (Contention Period CP). La sequenza di questi periodi è
organizzata in intervalli detti supertrame (superframe); all’inizio di ognuno di questi
intervalli è presente un periodo senza contese regolato dal PC, mentre nella seconda
parte il coordinatore centrale rimane inattivo per permettere l’uso della modalità a
contesa, disciplinata dal DCF.
Le stazioni che possono rispondere a dei poll, ossia delle richieste, emessi
dall’AP sono chiamate “CF-Pollable” (CF sta per Contention Free). La stazione che
risponde al poll da parte del PC può inviare solo una MPDU, non necessariamente al
PC ma ad ogni altra stazione nel BSS, e inoltre può utilizzare il piggyback, che
consiste nello sfruttare la trama dati per confermare una trama ricevuta in precedenza
usando campi appositi. Nel caso di trasmissione errata, la stazione non può inviare di
nuovo la trama ma deve aspettare una nuova richiesta da parte del PC prima di poter
tentare un nuovo invio. La stazione ricevente, se è “CF-pollable”, deve rispondere
dopo un SIFS alla richiesta del PC, altrimenti se non può rispondere al poll deve
comunque inviare un ACK dopo un intervallo SIFS. In questa modalità non vengono
usate le trame RTS/CTS.
coesistenza di periodi di contesa e periodi senza contese in una supertrama
Il PC all’inizio di un CFP invia una trama di tipo Beacon, contenente un
elemento DTIM, che serve per sincronizzare le stazioni che obbediscono alla logica
22
PCF e fornire parametri relativi al CFP. Il PC crea CFP rispettando la Contention
Free Period Rate CFPR, ossia l’intervallo di ripetizione tra un CFP e l’altro. Il CFP
ha una durata massima prestabilita, CFP_Max_Duration, oltre la quale il controllo
deve essere restituito al DCF. Per evitare che una stazione possa prendere controllo
del mezzo durante un CFP, viene inviato anche il parametro CFP_Max_Duration a
tutte le stazioni riceventi, che impostano il NAV a questo valore. All’inizio di un
CFP, dopo aver atteso un tempo uguale a SIFS, il PC emette un beacon, ossia una
trama di controllo, con cui comunica alle stazioni l’inizio della modalità CF e la sua
durata. In seguito con ogni beacon informerà le stazioni della durata restante del CFP
attraverso il campo CFP_Dur_Remaining, che contiene la durata massima restante
del periodo libero da contese. Diciamo massima perché il PC potrebbe decidere di
interrompere il CFP prima della sua terminazione nominale se non c’è traffico
memorizzato o la polling list è vuota. Durante il CP il parametro
CFP_Dur_Remaining viene posto uguale a zero. Se all’inizio nominale del CFP il PC
rileva che il canale radio è occupato deve ritardare l’invio del beacon, per permettere
la fine del traffico DCF. Quando il PC acquisisce il controllo del mezzo di
comunicazione, lo mantiene fino alla fine del CFP utilizzando intervalli più brevi tra
le trame (PIFS e SIFS, entrambi più brevi del DIFS). Alla ricezione del beacon tutte
le stazioni, siano esse “CF-Pollable” o meno, impostano il NAV alla durata
specificata nel campo CFP_Max_Duration per impedire l’accesso al mezzo; questa
considerazione vale anche per stazioni che fanno parte di altre BSS ma che ricevono
comunque il beacon. Si definisce TBTT (target beacon transmission time) l’istante
nominale in cui il PC invia il beacon, all’inizio di ogni CFP; l’invio potrebbe essere
ritardato se il PC rileva che il mezzo è occupato. Questo parametro serve per la
sincronizzazione delle stazioni all’interno del BSS; inoltre ogni stazione imposta il
NAV al valore contenuto in CFP_Max_Duration ad ogni TBTT, in corrispondenza
dell’inizio programmato del CFP, in modo da bloccare l’accesso al mezzo anche se il
beacon è ritardato a causa di traffico DCF presente sul mezzo radio.
Dopo aver trasmesso il beacon il PC può inviare trame di diversi tipi: –dati –
CF-Poll –dati+CF-Poll –CF-End. La stazione destinataria deve rispondere dopo un
tempo SIFS, anche se non è “CF-Pollable”; in quest’ultimo caso la risposta sarà un
ACK, come nella modalità DCF. Durante il CFP ogni stazione alla ricezione di un
23
beacon con i parametri CF Parameter Set aggiorna il NAV al valore ricavato da
CFP_Dur_Remaining; se la stazione riceve la trama CF-End dal PC, che segnala la
fine del periodo libero da contese azzera il vettore NAV. La stazione che ha ricevuto
un poll ignora, ma non reinizializza, il NAV per effettuare l’invio.
sequenza di beacon
I parametri CFP_Max_Duration e CFP_Dur_Remaining sono stabiliti in
modo da permettere la coesistenza di periodi che utilizzano la logica PCF e altri che
utilizzano la logica DCF. Infatti sono impostati in modo da permettere l’invio di
almeno una trama nel periodo di contesa, e di permettere l’invio di un beacon e di
una trama da parte del PC e la risposta da una stazione durante il CFP.
La polling list, che può essere presente nel PC, serve per forzare l’invio di
richieste alle stazioni durante il CFP, anche se il coordinatore centrale non ha traffico
memorizzato da inviare. Il PC scorre tutta la lista di stazioni e emette richieste per
ogni stazione; quest’ultima trasmette una trama di dati e poi aspetta una nuova
richiesta. Se la polling list non è vuota il PC deve almeno fare una richiesta in un
periodo senza contese. Quando il coordinatore ha eseguito una richiesta per ogni
stazione presente nella polling list, può emettere poll a una stazione nell’elenco
oppure inviare trame dati o di gestione a una qualsiasi stazione, non necessariamente
nella lista. Ogni stazione comunica la propria disponibilità a ricevere polls in fase di
associazione; per comunicare modifiche la stazione deve eseguire la riassociazione.
Nel caso ci siano due aree di copertura di diverse BSS che si sovrappongono
si potrebbero originare delle contese; lo standard prevede perciò delle procedure
risolvere tali problemi. Se all’inizio di un CFP il PC rileva che il mezzo è occupato,
dovrà rinviare la trasmissione del beacon. Il PC perciò aspetta un DIFS e poi un
24
ulteriore intervallo di backoff prima di tentare un ulteriore invio, per limitare al
minimo le possibilità di contesa nel CFP. Per evitare che una stazione di un altro
BSS sovrapposto possa prendere il controllo del mezzo il PC utilizza il PIFS nel caso
in cui una stazione non risponda a un poll entro un SIFS: tale intervallo è più piccolo
del DIFS, perciò il PC avrà la precedenza su altre trasmissioni da parte di stazioni
che usano il DCF.
esempio di sequenza di trasferimento in modalità PCF
SERVIZI
Lo standard IEEE 802.11 non definisce la specifica implementazione del DS,
ma specifica invece i servizi forniti dall’architettura. I servizi possono essere di 2
tipi, servizi di stazione (station services SS) e servizi del sistema di distribuzione
(distribution service services DSS). I SS, presenti in ogni stazione, anche negli AP,
sono i seguenti: -autenticazione (authentication) - deautenticazione
(deauthentication) -privacy -consegna delle MSDU (MSDU delivery).
L’autenticazione permette a una stazione di identificarsi all’interno di una BSS.
Questa procedura è resa necessaria dal fatto che altrimenti ogni stazione abilitata
potrebbe sfruttare le funzionalità della rete; ciò non è vero nelle LAN cablate in
quanto una stazione è implicitamente autenticata dal fatto di essere connessa alla
rete. L’autenticazione può essere di tipo open system, quando cioè l’autenticazione è
permessa ad ogni stazione, oppure può utilizzare il sistema a chiave condivisa. In
questo caso, con l’uso dell’algoritmo WEP (wireless equivalent privacy), una
25
stazione diventa autenticata solo se conosce una chiave segreta. La deautenticazione
consiste semplicemente nel terminare un’autenticazione esistente. Nelle reti wireless
ogni stazione potrebbe ascoltare il traffico di rete. Attraverso il servizio di privacy si
cerca di innalzare la sicurezza delle reti WLAN a un livello equivalente di quello
delle reti LAN cablate. Questo, utilizzando l’algoritmo WEP, cripta il messaggio che
perciò può essere letto solo da stazioni che conoscono la chiave segreta.
I DSS sono i seguenti: -associazione (association) -disassociazione