Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
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
(disassociation) -distribuzione (distribution) -integrazione (integration) -
riassociazione (riassociation). Il servizio di distribuzione viene invocato
,ogniqualvolta una stazione in un ESS spedisce un messaggio. La stazione
trasmittente invia il messaggio all’AP (di input) a cui è associata, che viene dato in
consegna al DS, il quale provvede a inviare il messaggio stesso all’AP di output, che
recapiterà infine il messaggio alla stazione destinataria. E’ da notare che gli AP di
input e di output potrebbero coincidere. Se la stazione di destinazione fa parte di una
LAN integrata, dopo il servizio di distribuzione si dovrà chiamare in causa il servizio
di integrazione. Questo eseguirà tutte le operazioni necessarie a inviare il messaggio
in maniera corretta, tra cui la conversione degli indirizzi, se richiesta. Il servizio di
integrazione sarà necessario anche nel caso opposto in cui la stazione sorgente sia in
una LAN integrata e la destinazione in una rete 802.11. in questo caso uno dei due
AP di input o di output sarà sostituito da un portale. Da quanto detto sopra si vede
che il DS deve essere in grado di associare all’indirizzo di una stazione l’AP
corrispondente. Questo viene fatto attraverso il servizio di associazione. E’ chiaro
che per non generare confusione una stazione in ogni istante deve essere associata a
un solo AP. Nel caso che una stazione mobile si sposti nell’area di copertura di un
altro BSS deve essere invocato il servizio di riassociazione, per permette al DS di
rimanere a conoscenza dell’esatta mappatura tra AP e stazione. Nel caso la stazione
oltre a cambiare BSS cambi anche ESS, il mantenimento della connettività non è
garantito dallo standard. Tutti questi servizi sono sempre richiesti dalla stazione, e
non dall’AP. Infine il servizio di disassociazione elimina un’associazione esistente.
Ogni tentativo di comunicare con una stazione disassociata darà esito negativo. La
disassociazione non è una richiesta ma una notifica e può essere eseguita sia dalle
stazioni che dagli AP.
26
STRATO FISICO
Lo standard 802.11 definisce varie bit-rate da utilizzare nelle comunicazioni
via radio, a partire da 1 Mbps fino a 11, e con le ultime aggiunte anche 50 Mbps. La
tecnica su cui sono basate le LAN wireless è chiamata a dispersione di spettro
(Spread Spectrum SS). Tra i vantaggi dati da questa tecnologia possiamo evidenziare
la resistenza ad interferenze date da altre trasmissioni vicine e agli effetti di multipath
e di fading, la ridondanza e la sicurezza offerte. Esistono due principale tecniche di
modulazioni che sfruttano lo Spread Spectrum, Frequency Hopping Spread Spectrum
(FHSS) e Direct Sequence spread Spectrum (DSSS).
L’idea alla base della tecnica Spread Spectrum è, come dice il nome stesso, di
ampliare la banda del segnale trasmesso rispetto a quella del segnale originale. In
questo modo si avrà una bassa densità spettrale di potenza, in modo da interferire al
minimo con altri sistemi vicini e da rendere difficile la ricezione del segnale da parte
di intrusi. Inoltre sarà altamente improbabile che una eventuale interferenza riesca a
influenzare una banda di frequenza molto larga, rendendo perciò il segnale rilevabile
anche in presenza di rumori sul canale radio.
All’inizio la banda utilizzata nello standard era quella detta ISM (Industrial
Scientific and Medical), da 2.4 a 2.4835 GHz, ma nelle aggiunte successive, per
aumentare la capacità trasmissiva, si passò ad utilizzare anche la banda a 5 Ghz.
La tecnica di modulazione consiste in due passi principali, il processo di
spreading, attraverso lo spreading code, che genera la maggiore larghezza di banda
del segnale, e la modulazione vera e propria fatta dal messaggio da trasmettere.
Nel caso FHSS lo spreading code è una lista 79 frequenze che vanno da 2.402
a 2.480 GHz, con una larghezza di canale di 1 MHz. Il processo di spreading consiste
nel modificare periodicamente la frequenza della portante (frequency hopping)
usando una precisa sequenza di frequenze detta hopping sequence. Ogni hop, ossia
intervallo, ha una durata uguale a un dwell time, in genere uguale a 100 ms. Fatto
questo il segnale da trasmettere modula la portante con una Gaussian Frequency
Shift Keying GFSK, a 2 (1Mbps) o 4 (2Mbps) livelli, generando un segnale a banda
stretta in ogni intervallo, ma che diventa a banda larga se osservato per un periodo di
alcuni secondi. In questo caso la ridondanza è data dalla possibilità di utilizzare
27
frequenze diverse per effettuare la trasmissione. Per limitare la possibilità di
sovrapposizione dei salti tra stazioni diverse, lo standard definisce 78 sequenze di 79
salti; le stazioni interessate si accordano sulla specifica sequenza da utilizzare prima
della trasmissione.
Nel DSSS invece lo spreading code è dato da una sequenza di 11 bit, detta di
chip, attraverso la quale viene modulata la portante. In pratica ogni bit del messaggio
viene sostituito con questa sequenza, se il bit corrispondente è “1”, o il suo inverso se
il bit è “0”. In questo modo i simboli 1 e 0 sono rappresentati da diverse sequenze e il
ricevitore può ricostruire il messaggio originale anche in presenza di errori su alcuni
dei bit ricevuti. Nella banda ISM sono stati individuati 14 canali, ognuno con una
larghezza pari a 22 MHz; la portante è modulata attraverso il Differential Phase Shift
Keying e anche in questo caso è possibile scegliere tra bit-rate di 1 e 2 Mbps.
L’estensione 802.11b ha portato la bit-rate a 5.5 e 11 Mbps, sempre utilizzando le
frequenze della banda ISM e mantenendo la larghezza del canale a 22 MHz, ma
utilizzando una tecnica leggermente diversa per il processo di spreading.
Lo standard indica anche la possibilità di sfruttare gli infrarossi (IR) come
mezzo trasmissivo. Però in questo caso il collegamento è limitato dal fatto che
possiamo operare solo in line-of-sight, ossia se le stazioni si vedono direttamente.
Questo limite è superabile utilizzando la propagazione per riflessione degli infrarossi,
che porta però a distanze utilizzabili più brevi. Inoltre per evitare danni agli occhi, la
potenza deve essere limitata, limitando la distanza a circa 20 metri. Il vantaggio di
questa tecnologia è l’immunità alle interferenze elettromagnetiche e la sicurezza
intrinseca data dalla breve lunghezza dei collegamenti. In questo caso la bit-rate è
limitata a 1 o 2 Mbps.
Le specifiche IEEE 802.11a hanno introdotto nelle reti LAN wireless un altro
sistema di modulazione, l’OFDM (Orthogonal Frequency Division Multiplexing),
nella banda 5 GHz. In questo modo si possono raggiungere bit-rate fino a 54 Mbps
utilizzando 52 sottoportanti che possono essere modulate attraverso il binary o
quadrature phase shift keying (BPSK/QPSK), 16-quadrature amplitude modulation
(QAM), o 64-QAM, ottenendo diverse velocità di trasmissione a seconda della
modulazione usata. Lo standard stabilisce anche l’uso di un codice convoluzionale
per la correzione degli errori (FEC forward error correction). Questo tipo di
28
modulazione opera concettualmente come l’accesso multiplo a divisione di frequenza
(Frequency Division Multiple Access FDMA), con la differenza che tutti i canali
sono utilizzati per lo stesso flusso di dati. Questo viene diviso in più flussi, ognuno
dei quali viene poi modulato in una sottoportante, che viene inviata sul canale. Il
principale vantaggio di questa tecnica è che eventuali disturbi riguarderanno solo
alcune sottoportanti e perciò usando un codice FEC si può ricostruire il segnale
originale eliminando gli errori. La spaziatura tra le frequenze delle sottoportanti è di
0.3125 MHz e la correzione degli errori è garantita da un codificatore convoluzionale
1/2, 2/3 o 3/4 a seconda della bit-rate scelta.
tabella che mostra i parametri di modulazione in funzione dalla bit-rate: il
parametro R si riferisce alla ridondanza introdotta dal codificatore convoluzionale
29
codifica delle costellazioni usate nella modulazione
30
SICUREZZA
In una rete wireless, in assenza di qualche tipo di controllo, qualsiasi
terminale adatto potrebbe utilizzare la rete stessa, anche se non è autorizzato in tal
senso. Per ovviare a questo grave problema di sicurezza lo standard IEEE 802.11
definisce il servizio di autenticazione, che permette a una coppia di stazioni,
generalmente stazione e AP, di controllare a vicenda l’effettiva autorizzazione
all’utilizzo della rete.
Nello standard sono definiti due tipi di autenticazione: Open System e Shared
Key. In genere in architetture complesse, cioè ESS, ogni stazione si autentica con
l’AP, mentre in reti ad hoc è possibile anche l’autenticazione reciproca tra due
stazioni.
Nel caso Open System l’autenticazione è permessa a tutte le stazioni, ovvero
ogni terminale ha il permesso di accedere alla rete. Il processo di autenticazione è
molto semplice, in quanto necessita solo di una richiesta da parte di una stazione e, se
come tipo di autenticazione è impostato l’Open System, la risposta positiva della
stazione destinataria. L’autenticazione di tipo Open System è quella di default.
L’autenticazione di tipo Shared Key invece presuppone la conoscenza da
parte della stazione di una chiave segreta condivisa. Questa procedura viene
effettuata senza la necessità di trasmettere la chiave condivisa in chiaro, quindi
richiede l’utilizzo dell’algoritmo di cifratura WEP. La chiave segreta deve essere
inviata ad ogni stazione attraverso un mezzo sicuro indipendente dalla rete wireless.
L’algoritmo di cifratura WEP presentato nello standard è pensato per
aumentare il livello di sicurezza e privacy delle reti wireless a quello delle reti LAN
cablate. Infatti il problema dell’eavesdropping (ascolto di nascosto, senza
autorizzazione) è critico nelle reti senza fili; attraverso questo algoritmo è possibile
evitare l’”ascolto” dei pacchetti inviati da parte di terzi non autorizzati. L’algoritmo
WEP basa la propria forza sul fatto di essere difficilmente decodificabile attraverso
attacchi di tipo “brute force”, a causa della lunghezza della chiave segreta. Inoltre è
possibile cambiare la chiave, rendendo così ancora più difficile ogni tentativo di
decodifica. E’ anche molto efficiente, perciò può essere implementato sia per via
hardware che software.
31
L’algoritmo di cifratura si basa sulla chiave segreta di 40 bit, condivisa tra
tutte le stazioni attraverso una operazione esterna alla rete wireless, e su un vettore di
24 bit chiamato initialization vector (IV). I 64 bit ottenuti dalla loro concatenazione,
chiamati seme, vengono usati come input di un generatore di numeri
pseudorandomici (WEP PRNG). L’output di questo processo è una chiave di
lunghezza uguale alla lunghezza della MPDU da criptare più quattro byte. I quattro
ottetti aggiuntivi servono per cifrare anche l’integrity check value (ICV), una
sequenza di bit che serve per assicurarsi che i dati da trasmettere non vengano
modificati. Per ottenerli viene utilizzato un algoritmo di integrità che usando un
codice ciclico (CRC-32) specificato nello standard elabora il messaggio e crea i 32
bit necessari. Fatto questo il passo finale consiste nell’applicare una trasformazione
matematica, specificatamente lo XOR bit a bit; gli input di questo processo sono la
chiave a lunghezza variabile e la MPDU più l’ICV. Cambiando l’IV si cambia anche
la chiave; tenendo fissa la chiave segreta perciò è possibile modificare l’IV e perciò
anche la sequenza generata dal PRNG. Questo è molto importante perché spesso nei
dati trasmessi alcune parti sono fisse, perciò osservando pacchetti successivi
trasmessi utilizzando la stessa chiave segreta e lo stesso IV è possibile decifrare
alcune parti del messaggio, pur non conoscendo la chiave segreta. E’ possibile
cambiare l’IV anche per ogni pacchetto, in quanto questo viaggia in chiaro e
permette sempre al ricevente di decifrare il messaggio. Questo non comporta alcun
problema perché la conoscenza dell’IV non da alcuna informazione ad un eventuale
aggressore.
La decifratura del messaggio è molto semplice e implica l’inversione del
processo sopra presentato. Dal messaggio ricevuto è possibile estrarre l’IV, che
32
combinato con la chiave segreta fornisce il seme che serve per decifrare il
messaggio. Infatti per l’operazione di XOR vale la seguente proprietà
A ⊕ B ⊕ B = A
Prima di accettare il messaggio però occorre controllare se è stato modificato
attraverso il confronto dell’ICV ricevuto con quello calcolato a partire dal pacchetto.
L’algoritmo che viene utilizzato per la creazione della chiave attraverso il
generatore di numeri pseudocasuali è l’RC4, algoritmo proprietario della RSA. Per
innalzare ulteriormente il livello di sicurezza è stato proposto un algoritmo simile a
questo (WEP2), non standardizzato ma largamente usato, in cui la chiave segreta è
lunga 104 bit, che forma insieme all’IV un vettore di 128 bit.
SINCRONIZZAZIONE
Tutte le stazioni all’interno dello stesso BSS devono essere sincronizzate a
uno stesso timer per un corretto funzionamento. All’interno dello standard è definita
una funzione chiamata timing synchronization function (TSF) che ha il compito di
mantenere questa sincronizzazione; ogni stazione inoltre deve mantenere un timer
TSF locale. Il timer interno è costituito di un contatore modulo 642 , con incrementi
di microsecondi; l’algoritmo qui presentato sincronizza il timer con scostamento
massimo di 4 µs più il massimo ritardo di trasmissione dato dallo strato fisico
utilizzato.
Se è presente un AP, questo sarà il timing master, il cui timer sarà utilizzato
da tutte le altre stazioni del BSS per la sincronizzazione. Se invece siamo in presenza
di un IBSS si utilizzerà un algoritmo distribuito e ogni stazione aggiornerà il proprio
timer solo se il valore ricevuto nel timestamp sarà maggiore del proprio.
33
Nel caso di un BSS, l’AP inizializza il proprio timer indipendentemente dagli
altri e periodicamente invia frame speciali chiamate beacon che contengono tra
l’altro una copia del TSF timer. Tutte le stazioni alla ricezione del beacon aggiornano
il proprio timer a quello ricevuto a prescindere dal valore. L’intervallo tra l’invio dei
beacon è uguale al Target Beacon Transmitting Time (TBTT); se il mezzo è
occupato allo scoccare di uno di questi intervalli l’AP ritarda l’invio del beacon
secondo le regole specificate precedentemente, aggiornando però il timestamp al
tempo effettivo di invio.
RISPARMIO ENERGETICO
In genere le reti wireless sono formati da dispositivi portatili, come palmari e
notebook, per i quali le batterie sono una risorsa di fondamentale importanza, ma
limitata. Per questo motivo lo standard IEEE 802.11 prevede dei meccanismi per
limitarne il consumo, consentendo alle stazioni di passare in modalità a basso
consumo (sleep mode) per alcuni periodi, senza perdere pacchetti destinati a quelle
stazioni. Lo standard definisce due stati in cui può trovarsi una stazione:
− awake: la stazione è completamente attiva
− doze: la stazione non può ricevere o trasmettere trame e consuma
pochissima potenza
Vengono poi definite due modalità di funzionamento, attiva (active mode
AM) e risparmio energetico (power save PS). Se una stazione è in modalità attiva,
deve sempre rimanere nello stato awake, in cui può sempre ricevere e inviare trame.
Se una stazione si trova nella polling list di un AP dovrebbe sempre rimanere in
questa modalità di funzionamento. La modalità risparmio energetico invece permette
alla stazione di passare in modalità doze attraverso meccanismi che comunque
permettono di ricevere tutte le trame dirette a quella stazione o quelle di tipo
broadcast e multicast. Una stazione prima di cambiare modalità di funzionamento
deve informare l’AP con una sequenza di scambio corretta; infatti l’AP conserva
informazioni riguardo allo stato attuale di tutte le stazioni, per memorizzare i
pacchetti destinati alle stazioni in modalità power saving. L’eventuale presenza di
trame memorizzate indirizzate a una determinata stazione viene indicata nel campo
34
TIM (traffic indication map), che viene inserito in ogni beacon. Le stazioni in
modalità power save devono periodicamente attivarsi e ascoltare i beacon inviati
dall’AP, per controllare se c’è del traffico a loro indirizzato. Se sono presenti delle
trame memorizzate la stazione può operare in due modi: se il BSS opera in modalità
DCF, o si trova nel periodo a contesa della modalità PCF, deve inviare un PS-poll
all’AP, che deve rispondere con le MSDU memorizzate al suo interno oppure con un
ACK, per poi inviare le trame in un secondo momento; se invece si trova nel periodo
libero da contese della la stazione non invia richieste ma aspetta che sia l’AP a
inviare le trame, oppure aspetta la fine del CFP.
Il campo TIM consiste principalmente in una sequenza di bit che indica se la
stazione, a cui viene assegnato un Association ID (AID) univoco, ha delle trame
memorizzate nell’AP. Esistono poi dei TIM particolari chiamati DTIM (delivery
traffic indication message) che vengono inviati all’interno dei beacon ogni intervallo
DTIM_Period; questi servono per permettere l’invio di trame broadcast e multicast,
infatti ogni stazione in modalità power save si attiva allo scoccare di questo
intervallo per ricevere tali trame ed eventualmente inviare delle richieste PS-Poll.
esempio di invio di trame multicast e di richiesta di trame memorizzate in
modalità power save
35
CONSIDERAZIONI
L’ampio utilizzo che sta avendo lo standard IEEE 802.11 ha portato alla luce
alcuni problemi, principalmente riguardanti la qualità del servizio (Quality of Service
QoS) offerta. Infatti con la modalità DCF non ci sono differenziazioni tra le varie
stazioni e i dati da esse trasmessi: un flusso dati a bassa priorità potrebbe bloccare un
video streaming, deteriorandone irreparabilmente la visione da parte dell’utente.
Inoltre l’algoritmo di backoff introduce ritardi e jitter che rendono questo tipo di
trasmissione inutilizzabile per traffico real-time. Il metodo di accesso PCF è più
portato ad offrire un servizio time-bounded, comunque non sufficiente a soddisfare le
necessità sopra esposte. Infatti all’inizio del periodo del periodo libero da contese,
allo scattare del TBTT (Target Bacon Transmission Time) il PC deve ascoltare il
canale prima di poter trasmettere il beacon; l’invio di quest’ultimo potrebbe essere
ritardato se è presente nel canale del traffico DCF rimasto dal periodo a contesa
precedente. La sincronizzazione introdotta attraverso l’uso del PCF in questo caso
potrebbe essere persa totalmente. Un altro problema è che le stazioni che ricevono la
richiesta di invio, possono trasmettere trame la cui lunghezza è variabile, rendendo
impossibile qualsiasi previsione sul tempo di occupazione del canale. Questo
impedisce qualsiasi tentativo di programmare un certo livello di qualità del servizio
per le stazioni che devono ricevere poll nel resto del CFP.
Un’ulteriore limitazione allo sviluppo di questo metodo di accesso è nella sua
definizione: infatti nello standard questa modalità, e in particolare la gestione della
polling list, non sono state fissate con esattezza e quasi nessun produttore ha
implementato questa possibilità nei propri dispositivi. La Wi-Fi Alliance,
un’associazione tra i maggiori produttori di dispositivi per reti wireless, non ha
incluso la modalità PCF tra i propri standard di interoperabilità.
Sono stati fatti molti studi e sperimentazioni sulla possibilità di modificare i
due metodi di accesso classici, dimostrando che la necessità di un servizio più
affidabile è molto sentita dagli utilizzatori.
36
IEEE 802.11E E QOS
L’IEEE ha recepito la richiesta da parte del mercato di disporre di una qualità
del servizio più elevata, e differenziata a seconda del tipo di traffico. Il gruppo
802.11 ha allo studio delle modifiche ai metodi di accesso originali per introdurre
anche nelle reti wireless il concetto di QoS. La nuova estensione, denominata
802.11e, non è stata presentata come standard ma solo come Draft, che rappresenta
una versione provvisoria che deve essere rivista prima di poter essere pubblicata.
La modifica alla modalità DCF consiste nell’introdurre un nuovo schema di
accesso chiamato ECDF (Enhanced distributed coordination Function); il supporto
per la qualità del servizio è realizzato mediante l’introduzione delle categorie di
traffico (traffic classes TC). Ogni stazione supporta al suo interno fino a otto TC,
ognuna delle quali ha a disposizione una propria coda di trasmissione, che si
comportano come stazioni virtuali all’interno della stazione stessa. Ognuna di queste
utilizza l’algoritmo di backoff indipendentemente dalle altre quando rileva che il
mezzo è libero per un periodo superiore a Arbitration Interframe Space (AIFS);
questo è un nuovo intervallo tra le trame e il suo valore minimo è uguale al DIFS, ma
può essere aumentato per ogni TC a seconda della sua priorità. Trascorso questo
intervallo si genera un intervallo di backoff utilizzando il metodo già visto nello
standard; la differenza sta nel fatto che il parametro CWmin[TC], che definisce
l’apertura minima della finestra di contesa, dipende dalla categoria di traffico a cui fa
riferimento la procedura di backoff. Per avere priorità sul traffico di stazioni che
utilizzano la procedura DCF basta impostare AIFS uguale al suo valore minimo, cioè
DIFS, e l’apertura minima CWmin[TC] a un valore minore dell’analogo nel caso
DCF. Se il mezzo viene rilevato occupato prima che il contatore di backoff
raggiunga lo zero, l’operazione di decremento si interrompe e può riprendere solo se
il mezzo viene rilevato libero per un periodo uguale a AIFS; l’unica differenza in
questa procedura sta nel fatto che il contatore riprende a diminuire allo scoccare
dell’ultimo timeslot dell’intervallo AIFS, anticipatamente rispetto allo standard
classico. Viene definito anche un nuovo parametro chiamato Persistance Factor (PF),
anch’esso dipendente dalla categoria di traffico. Questo viene usato per allargare la
contention window dopo ogni invio non riuscito: mentre prima l’intervallo in cui
37
scegliere il numero casuale raddoppiava (corrispondente a PF=2), l’802.11e usa
questo parametro per modificare l’ampiezza della contention window secondo la
seguente formula
newCW [TC] >= (( oldCW[TC] + 1 ) * PF ) – 1
Il parametro CW[TC] comunque non deve mai superare il limite dato da
CWmax[TC].
spaziatura tra le trame presenti nell’802.11e
Come detto all’interno di ogni stazione possono essere attive fino a otto code,
ognuna delle quali fa riferimento a una categoria di traffico. Se nello stesso istante
due differenti contatori di backoff raggiungono lo zero, si ha una collisione virtuale,
che viene gestita all’interno della stazione da degli algoritmi che garantiscono
l’utilizzo del mezzo radio alla coda la cui priorità è più alta.
confronto tra l’802.11 classico, a sinistra, e il nuovo standard 802.11e
38
Una definizione importante all’interno dell’802.11e è quella di Transmission
Opportunity (TXOP). Una TXOP è definita come un intervallo di tempo in cui una
stazione ha il diritto di trasmettere ed è identificato da un istante di inizio e da una
durata massima. Le TXOP possono essere assegnate a una stazione attraverso il
meccanismo a contesa (ECDF-TXOP) oppure da una richiesta inviata alla stazione
dall’HCF (polled-TXOP). La durata limite è stabilita per le ECDF-TXOP attraverso
un parametro inviato alle stazioni attraverso i beacon, mentre nel caso poll-TXOP la
durata massima viene indicata nel poll stesso.
Nell’802.11 viene modificata anche la modalità PCF, introducendo la Hybrid
coordination function HCF. Come nel caso classico viene definita una supertrama,
che viene poi suddivisa in Contention free period (CFP) e Contention Period (CP).
Durante il CP l’accesso al mezzo viene governato dall’EDCF, anche se l’Hybrid
Coordinator (HC) può inviare trame QoS CF-Poll alle stazioni, iniziando così la
modalità HCF. Durante il CFP, l’HC invia a una particolare stazione un QoS CF-Poll
in cui è specificato l’inizio e la durata della TXOP. Durante questo intervallo di
tempo le stazioni, anche quelle che non supportano il nuovo standard, impostano il
NAV alla durata specificata nel beacon ricevuto all’inizio del CFP; in questo modo
una stazione che riceve un QoS CF-Poll assume di avere una TXOP e perciò invia le
trame memorizzate. Per migliorare l’efficienza nell’utilizzo del mezzo, se una
stazione non risponde a un QoS CF-Poll entro un tempo uguale al SIFS, l’HC attende
un PIFS e poi riprende il controllo del mezzo inviando un altro QoS CF-Poll a
un’altra stazione. Nell’allocare le TXOPs l’HC dovrebbe considerare molti fattori tra
i quali: 1) la priorità delle TC 2) la qualità del servizio richiesta dalle varie
categorie di traffico (in base a jitter, banda, ritardo, ecc...) 3) la lunghezza delle
code per ogni TC 4) la lunghezza delle code per ogni stazione 5) la durata delle
TXOP 6) la qualità richiesta recentemente dalle varie TC. Per ottimizzare l’invio di
QoS CF-Poll l’HC ha bisogno di conoscere il più possibile di questi parametri; per
far questo sono state modificate i campi di controllo all’interno delle trame MAC,
introducendo queste informazioni.
39
Acronimi ed abbreviazioni
ACK Acknowledgement
AIFS Arbitration Inter Frame Space (802.11e)
AP Access Point (punto di accesso)
BPSK Binary Phase Shift Keying
BSA Basic Service Area
BSS Basic Service Set
CA Collision Avoidance
CD Collision Detection
CFP Contention Free Period (periodo senza contese)
CF-Poll Contention Free – Poll
CF-End Contention Free – End
CP Contention Period (periodo a contesa)
CRC Cyclic Redundancy Check
CSMA Carrier Sense Multiple Access
CW Contention Window
CWmax Contention Window Maximum
CWmin Contention Window Minimum
DCF Distributed Coordination Function
DIFS DCF Inter Frame Space
DS Distribution System
DSSS Direct Sequence Spread Spectrum
EDCF Enhanced DCF (802.11e)
ESS Extended service set
FEC Forward Error Correction
FHSS Frequency Hopping Spread Spectrum
GFSK Gaussian Frequency Shift Keying
HC Hybrid Coordinator (802.11e)
HCF Hybrid Coordination Function (802.11e)
IEEE Institute of Electrical and Electronics Engineers
IR Infrared
40
ISM Industrial, Science, Medical
LLC Logical Link Control
MAC Medium Access Control
MPDU MAC Protocol Data Unit
MSDU MAC Service Data Unit
NAV Network Allocation Vector
OFDM Orthogonal Frequency Division Multiplexing
PC Point Coordinator
PCF Point Coordination Function
PF Persistence Factor (802.11e)
PHY Physical Layer (livello fisico)
PIFS PCF Inter Frame Space
QAM Quadrature Amplitude Modulation
QBSS QoS-supporting Basic Service Set (802.11e)
QoS Quality of Service
QPSK Quadrature Phase Shift Keying
RTS/CTS Request to Send/Clear to Send
SIFS Short Inter Frame Space
TBTT Target Beacon Transmission Time
TC Traffic Category (802.11e)
TXOP Transmission Opportunity (802.11e)
WEP Wireless Equivalent Privacy
WLAN Wireless Local Area Network
BIBLIOGRAFIA
1. IEEE 802.11 WG, “International Standard [for] Information
Technology-Telecommunications and information exchange between
systems- Local and metropolitan area networks- Specific
Requirements- Part 11: Wireless LAN Medium Access Control
(MAC) and Physical Layer (PHY) specifications,” 1997.
41
2. IEEE 802.11 WG, “Reference number ISO/IEC 8802-11:1999(E)
IEEE Std 802.11, 1999 edition. International Standard [for]
Information Technology-Telecommunications and information
exchange between systems- Local and metropolitan area networks-
Specific Requirements- Part 11: Wireless LAN Medium Access
Control (MAC) and Physical Layer (PHY) specifications,” 1999.
3. (IEEE 802.11 WG, “Draft Supplement to STANDARD FOR
Telecommunications and Information Exchange Between Systems -
LAN/MAN Specific Requirements - Part 11: Wireless Medium
Access Control (MAC) and physical layer (PHY) specifications:
Medium Access Control (MAC) Enhancements for Quality of Service
(QoS)”, IEEE 802.11e/D2.0, Nov. 2001)
4. Stallings William, “Wireless communications and networks”, Prentice
Hall, Inc., 2002
5. Brenner Pablo, “A technical tutorial on the IEEE 802.11 protocol”,
BreezeCOM, 1997
6. Young Albert, “Wireless LAN Security for Enterprise”, 2001
7. Mangold Stefan, Choi Sunghyun, May Peter, Klein Ole, Hiertz Guido,
Stibor Lothar, “IEEE 802.11e Wireless LAN for Quality of Service”,
2002
8. Garg Priyank, Doshi Rushabh, Greene Russell, Baker Mary, Malek
Majid, Cheng Xiaoyan, “Using IEEE 802.11e MAC for Qos over
Wireless”, Stanford University
9. Rouzet Philippe, “QoS support on IEEE 802.11a (IEEE 802.11e)”,
2002
10. Raghavan Sunil, Jordan Ramiro, Jerez Henry N., Abdallah Chaouki
T., “Real-time streaming over an IEEE 802.11b based wireless LAN
test bed”, University of New Mexico, 2002