Le LAN wireless sono oggi una delle tecnologie più importanti per l'accesso a Internet.
Tra i vari standard emersi negli anni IEEE 802.11 wireless LAN è di sicuro il più conosciuto e usato, ed è noto anche come Wi-Fi.
In tabella vediamo diverse versioni di questo standard.
Queste versioni hanno in comune diverse caratteristiche come per esempio il fatto che utilizzano lo stesso protocollo di accesso al mezzo (CSMA/CA) e la stessa struttura del frame a livello di collegamento. Tutti possono ridurre la frequenza trasmissiva per raggiungere distanze maggiori. Inoltre gli standard 802.11 hanno retrocompatibilità, ovvero un device abilitato a 802.11g può interagire con una più recente base station 802.11ac.
Gli standard presentano anche notevoli differenze.
La rete 802.11b opera in bande di frequenza da 2,4 a 2,485 GHz, utilizzata anche dai telefoni 2,4Ghz e dai forni a microonde, e la banda di frequenza da 5,1 GHz a 5,8Ghz, con una portata di trasmissione più breve (a parità di potenza) e danneggiata dalla propagazione su cammini multipli.
I due standard più recenti 802.11n e 802.11ac usano antenne su più ingressi e più uscite (MIMO, multiple-input multiple-output).
Le stazioni 802.11ac possono trasmettere a più stazioni simultaneamente e possono usare antenne intelligenti con beamforming adattivo, in modo da ridurre le interferenze.
La figura illustra i principali protagonisti dell'architettura 802.11, ovvero i basic service set (BSS, insieme dei servizi di base) che contiene una o più stazioni base (altri host) e una o più basi centrali chiamate access point. Vi è poi un router/switch che collegate la rete Wi-Fi ad Internet. Di solito router e access point sono assemblati nello stesso dispositivo.
Come nel caso di Ethernet, le stazioni 802.11 hanno indirizzi MAC di 6 byte cablati nel firmware della scheda di rete. Ciascun AP ha anche un MAC per le interfacce wireless. Come per Ethernet, i MAC sono gestiti da IEEE e sono (in teoria) univoci.
Le reti con AP (access point) sono anche chiamate reti con infrastruttura, dove l'infrastruttura è data dagli AP, dalla rete Ethernet e da un router. 802.11 può essere utilizzato per creare una rete ad hoc, ovvero senza infrastruttura.
Dispositivi vicini, mobili, potrebbero volersi scambiare dei dati, allora sfruttano la creazione di una rete "al volo" per poter comunicare. In quest'argomentazione ci concentreremo sulle reti LAN wireless con infrastruttura.
Prima di inviare o ricevere pacchetti dati 802.11 le stazioni (host) devono associarsi a un AP. Sebbene tutti gli standard 802.11 utilizzino il meccanismo dell'associazione discuteremo l'argomento in modo specifico per 802.11/b/g.
Quando un amministratore di rete installa un AP, gli assegna uno o due identificativi, detti SSID (service set identifier), che non sono altro che dei nomi che appaiono, per esempio quando con un dispositivo si ricerca tra le reti Wi-Fi disponibili. L'amministratore di rete deve anche assegnare all'AP un numero di canale.
802.11 opera nella banda da 2,4 a 2,485 Ghz, in questi 85 MHz di banda, 802.11 definisce 11 canali parzialmente sovrapposti. I canali per non essere sovrapposti devono essere distanti tra di loro di 4 canali. I canali 1, 6 e 11, sono canali privi di sovrapposizione. Un amministratore di rete può creare una LAN wireless con una capacità trasmissiva globale di 44 Mbps, installando 3 AP 802.11b nello stesso luogo, assegnandoli tali canali e connettendoli con uno switch.
Descriviamo adesso una situazione interessante, nota con il nome giungla di Wi-Fi (Wi-Fi jungle) una zona dello spazio in cui vi sono diverse AP. Immaginiamo di essere in un bar a Milano e di avere con noi una stazione wireless (host) che potrebbe raccogliere segnali da diversi AP, tra cui quello del bar in cui ci troviamo, oppure quello di altri appartamenti nelle vicinanze. Supponiamo che ci siano 5 AP nella giungla. Per ottenere accesso a Internet, la nostra stazione dovrà associarsi a uno dei 5 AP, ovvero il nostro dispositivo, deve creare un cavo virtuale verso l'AP scelto.
Lo standard 802.11 richiede che l'AP invii periodicamente dei frame beacon, che contengono il proprio codice SSID e il proprio MAC. La nostra stazione wireless riceve i beacon proveniente dagli AP nelle vicinanze, analizzando gli 11 canali. Venuti a conoscenza della presenza degli AP nei dintorni possiamo selezionare quello a cui associarci.
Lo standard 802.11 non specifica alcun algoritmo per la selezione dell'AP con il quale associarsi: tale algoritmo viene lasciato ai progettisti firmware e software 802.11 del nostro host wireless.
Questo vuol dire che, se fosse possibile associarsi agli host nelle vicinanze (per esempio a causa di precedenti associazioni, o di AP ad accesso libero) la scelta dell'host a cui associarsi in automatico non fa parte di specifici standard di 802.11. In genere viene scelta la rete con alta potenza di segnale, anche se tenere in considerazione solo questo parametro non è sufficiente, la rete potrebbe aver un buon segnale, ma potrebbe essere sovraccarica di host tra cui la banda deve essere suddivisa.
Il processo di scansione dei canali alla ricerca di frame beacon è detta scansione passiva. Mentre l'invio da parte di un host wireless di un frame sonda in broadcast indicando l'SSID di interesse, che verrà ricevuto dagli AP nel raggio di copertura dell'host wireless, viene chiamata scansione attiva. Gli AP rispondono al frame sonda inviato dall'host. Dopo aver individuato gli AP nei dintorni l'host può procedere con una richiesta di associazione all'AP, il quale risponde con un frame di risposta di associazione. Questo scambio richiesta/risposta è necessario con la scansione attiva, in quanto un AP che risponde all'iniziale frame sonda di richiesta non sa con quale dei (molti) AP che rispondono sceglierà di associarsi l'host. Una volta associato, l'host vorrà entrare nella sottorete alla quale appartiene l'AP. L'host quindi, in genere, invai un messaggio d'identificazione DHCP nella sottorete, tramite l'AP, per ottenere un indirizzo IP su quella sottorete. Una volta ottenuto l'indirizzo, l'host viene visto come un altro host con un indirizzo IP in quella sottorete.
L'AP potrebbe richiedere alla stazione AP l'autenticazione per far parte della sua sottorete.
802.11 fornisce diverse possibilità per la gestione degli accessi:
Una volta che una stazione è associata ad un AP, può iniziare a trasmette e a ricevere frame dati da e verso l'AP. Ma, poiché stazioni multiple potrebbero voler trasmettere frame di dati contemporaneamente sullo stesso canale, è necessario un protocollo ad accesso multiplo per coordinare la trasmissioni. In questo contesto, per stazione intendiamo sia l'AP che gli host.
Come abbiamo già visto per Ethernet, ci sono tre classi di protocolli ad accesso multiplo: a suddivisione di canale (compreso CDMA), ad accesso casuale e a rotazione.
Ispirandosi al grande successo di Ethernet, i progettisti 802.11 scelsero proprio il protocollo ad accesso casuale. Nel contesto di 802.11 è chiamato CSMA con prevenzione di collisioni, o CSMA/CA (dove CA sta per Collision Avoidance). CSMA significa, come per ethernet, accesso multiplo con rilevazione della portante, ovvero ciascuna stazione ascolta il canale prima di trasmettere e si astiene dal farlo se rileva che il canale è occupato. Sebbene sia ethernet che 802.11 usino CSMA con accesso casuale, i loro protocolli MAC presentano sostanziali differenze.
La prima la si intuisce dal nome, 802.11 ha CSMA/CA, collision avoidance e tende ad evitare le collisioni, non a rilevarle come in CSMA/CD di ethernet. Inoltro, essendo il tasso di errore nei bit più alto in 802.11, abbiamo anche uno schema di "avvenuta ricezione/ritrasmissione" e livello di collegamento (ARQ) che descriveremo in seguito.
Con l'algoritmo di rilevazioni delle collisioni, le stazioni ethernet ascoltano il canale durante la ritrasmissione. Se una stazione che sta trasmettendo rileva la trasmissione di un'altra stazione, la prima interrompe la trasmissione e ritenta dopo un breve intervallo di tempo di durata casuale. Al contrario del protocollo Ethernet, il MAC 802.11 non implementa la rilevazione delle collisioni, almeno per due motivi:
Non usando la rilevazione delle collisioni, quando una stazione 802.11, inizia a trasmettere un frame, lo trasmette interamente senza interrompere la trasmissione. Trasmettere interamente i frame, quando le collisioni sono diffuse, potrebbe degradare le prestazioni di un protocollo ad accesso multiplo. Per ridurre il rischio di collisioni, 802.11 implementa numerose tecniche di prevenzione. Prima di descriverle vediamo come funziona lo schema di avvenuta ricezione (acnkowledgment scheme) a livello di collegamento 802.11.
In 802.11 un frame inviato da una stazione in una rete wireless può andare perduto per diversi motivi, per contrastare queste possibilità di smarrimento il Medium Access Control di 802.11 utilizza la conferma di avvenuta ricezione a livello di collegamento.
Come mostrato in figura sopra, quando la stazione di destinazione riceve un frame che passa il controllo CRC, attende per un breve periodo di tempo, noto come SIFS (short inter-frame space, spazio inter-frame breve), dopo il quale invia al mittente un frame di conferma di avvenuta ricezione. Se la stazione trasmittente non riceverà questo riscontro entro un arco di tempo stabilito, presupporrà un errore e ritrasmetterà il frame, utilizzando ancora il protocollo CSMA/CA per accedere al canale. Se il frame di conferma non sarà ricevuto dopo un numero prefissato di ritrasmissioni, la stazione trasmittente passerà oltre e scarterà il frame.
Adesso siamo siamo in grado di comprendere la descrizione di CSMA/CA.
Supponiamo che una stazione (un host o un AP) abbia un frame da trasmettere.
Nel protocollo ethernet di accesso, una stazione inizia a trasmettere appena percepisca che il canale è inattivo. Con CSMA/CA, invece, la stazione evita di trasmettere mentre decrementa il contatore, anche se ha rilevato che il canale è inattivo.
Consideriamo uno scenario in cui due stazioni hanno un frame dati da trasmettere, ma non lo fanno in quanto percepiscono che una terza stazione sta trasmettendo. Con CSMA/CD (ethernet), le due stazioni vorrebbero trasmettere appena rilevano che la terza ha terminato. Questo causerebbe una collisione che però non sarebbe un serio problema con CSMA/CD, in quanto entrambe le stazioni interromperebbero l'invio, evitando l'inutile trasmissione della rimanente parte di frame. In 802.11, invece, non potendo interrompere la trasmissione del frame, non avviene il rilevamento della collisione. Il frame che subisce collisione, viene comunque trasmesso interamente. L'obiettivo in 802.11 è evitare, quando possibile, le collisioni. In 802.11, se le due stazioni rilevano che il canale è occupato, entrambe entreranno immediatamente nello stato di ritardo casuale, con la speranza di scegliere valori di ritardo differenti. Se è così, quando il canale diventa inattivo, una delle due stazioni inizierà la trasmissione prima dell'altra e (se le due stazioni non sono nascoste l'una all'altra) la stazione perdente (con il timer più lungo) ascolterà il segnale della stazione vincitrice, bloccherà il suo contatore e si asterrà dall'inviare frame finché l'altra stazione non ha terminato l'invio dei frame. Evitando una collisione costosa. Due stazioni potrebbero essere nascoste, o potrebbero scegliere valori di ritardo abbastanza simili, tali che la ritrasmissione della stazione che ha iniziato per prima non abbia ancora raggiunto la seconda.
Il protocollo MAC 802.11 include anche un elegante (ma opzionale) schema di prenotazione che aiuta a evitare collisioni anche in presenza di terminali nascosti. Consideriamo la seguente figura:
Le due stazioni H1 e H2 sono collocate nel raggio dell'AP.
L'AP vede entrambe le stazioni H1 e H2.
Ma H1 e H2 non si vedono, si nascondono a vicenda, poiché a causa dell'attenuazione del segnale anche l'area di copertura delle stazioni (così come quella dell'AP) sono limitate.
Vediamo ora perché i terminali nascosti sono problematici.
Supponiamo che la stazione H1 stia trasmettendo un frame e, a metà della trasmissione di H1, la stazione H2 inizia a trasmettere anch'essa un frame. H2, non rilevando la trasmissione di H1 attende l'intervallo DIFS, dopo di che comincia a trasmettere, causando una collisione per tutta la durata della trasmissione del frame di H1 e anche quello di H2. Il canale risulterà sprecato, per tutta la durata di trasmissione di questi frame.
Per evitare questo problema IEEE 802.11 prevede due frame di controllo:
Utilizzando delle antenne direzionali, potrebbe essere utilizzato il protocollo 802.11 per instaurare una connessione punto-punto anche su distanze lunghe dell'ordine delle decine di chilometri.
In figura abbiamo un pacchetto IEEE 802.11. I frame IEEE 802.11 sono molto simili ai frame Ethernet, ma contengono campi specifici per l'utilizzo nei collegamenti wireless. I numeri sopra ciascun campo ne rappresentano la lunghezza in byte; quelli sopra i sotto-campi del campo di controllo rappresentano la lunghezza in bit. Esaminiamo ora, in modo specifico, i campi nel frami e alcuni importanti sotto-campi.
Il cuore del frame è il campo payload, che solitamente consiste di un datagramma IP o di un pacchetto ARP. Anche se può essere 2312 byte, in genere non raggiunge i 1500. Come in ethernet, i frame 802.11 hanno un campo CRC per il rilevamento degli errori nei bit.
La differenza più evidente è che il frame 802.11 contiene quattro campi indirizzo, ciascuno dei quali può contenere un indirizzo MAC di 6 byte. I tre campi indirizzo sono necessari a scopi di interconnessione (specialmente per trasportare datagrammi del livello di rete da una stazione wireless, attraverso un AP, all'interfaccia di un router). Il quarto indirizzo è impiegato nelle reti ad hoc, poiché ci stiamo concentrando sulle reti a infrastruttura, lo ignoreremo. I tre campi, nello standard 802.11 sono definiti come segue:
Per spiegare più approfonditamente il significato del campo indirizzo 3, analizziamo un esempio d'interconnessione.
Nella figura sopra, abbiamo due AP, ciascuno responsabile di un certo numero di stazioni wireless. Entrambi gli AP, hanno una connessione diretta al router che li connette a internet.
Supponiamo ora di trasportare un datagramma dall'interfaccia R1 del router alla stazione wireless H1. Il router non è consapevole della presenza di un AP tra sé e H1. Dal punto di vista del router, H1 è solo un host in una delle sotto-reti alle quali (il router) è connesso.
Ricordiamo che ogni volta che una stazione 802.11 riceve correttamente un frame da un'altra stazione, ne restituisce uno che conferma l'avvenuta ricezione. Poiché la conferma potrebbe andare persa, la stazione trasmittente potrebbe spedire più copie dello stesso frame. I numeri di sequenza permettono al ricevente di distinguere tra un frame che è stato appena trasmesso e un frame che è stato ritrasmesso.
Teniamo presenta che 802.11 permette alla stazione trasmittente di riservare il canale per un periodo di tempo che include la trasmissione del suo frame dati e quella del frame di conferma. Questo valore viene incluso nel campo durata per i frame RTS e CTS.
Il campo di controllo del frame è articolato in molti sotto-campi. I campi tipo e sotto-tipo sono utilizzati per distinguere frame di associazione RTS, CTS, ACK e dati. I campi verso AP e da AP definiscono la funzione dei diversi campi indirizzo. Il significato di questi cambia a seconda che sia utilizzata una rete ad hoc o con infrastruttura e, in quest'ultimo caso, se il frame è inviato da una stazione o da un AP. Infine, il campo WEP specifica un'eventuale cifratura dei dati.
Per aumentare la copertura di una LAN wireless, aziende e università dispongono spesso vari BSS all'interno di una stessa sotto-rete IP. Questo fa nascere il problema della mobilità all'interno di una stessa sotto-rete IP: come può una stazione wireless muoversi da un BSS a un altro durante la stessa sessione TCP? All'interno di una stessa sotto-rete non è un problema molto difficile da affrontare. Mentre quando una stazione passa da una sotto-rete ad un'altra è necessario utilizzare protocolli più sofisticati (IP mobile) utilizzato nella telefonica mobile (3G. 4G).
La figura sopra mostra due BSS interconnessi.
L'host H1 si sta spostando dal BSS1 al BSS2. Dato che in questo esempio il dispositivo che connette i due BSS non è un router, tutte le stazioni all'interno di queste, inclusi gli AP, apparterranno alla stessa sotto-rete IP.
Quando H1 si sposta da BSS1 al BSS2, può mantenere il suo indirizzo IP e tutte le sue connessioni TCP aperte. Se il dispositivo d'interconnessione fosse stato un router allora H1 avrebbe dovuto cambiare IP e terminare le sue connessioni TCP aperte.
Man mano che H1 si allontana da AP1, ne riceve sempre più debolmente il segnale e inizia a ricercarne uno più intenso. H1 riceve i beacon frame da parte di AP2, che molto spesso ha lo stesso SSID di AP1. Allora H1 si disconnette da AP1 per connettersi con AP2, mantenendo le sue connessioni TCP e il suo indirizzo IP.
Come abbiamo imparato dal capitolo 6, gli switch auto-apprendono, costruendo in autonomia le proprie tabelle di inoltro. Grazie a questa qualità di auto-apprendimento si riescono ad affrontare positivamente gli spostamenti occasionali. Tuttavia, gli switch, non sono stati progettati per supportare utenti che si spostano di frequente, pretendendo di mantenere le loro connessioni TCP mentre cambiano BSS. Per valutare questo problema, ricordiamo che prima dello spostamento, lo switch ha una voce nella sua tabella d'inoltro che associa il MAC di H1 alla porta attraverso la quale H1 può essere raggiunto. Se H1 è inizialmente connesso al BSS1, allora il datagramma destinato a H1 gli sarà inoltrato attraverso l'AP1. Una volta che H1 si sarà associato a BSS2, il suo frame dovrebbe essere diretto ad AP2. Una soluzione potrebbe essere che, appena realizzata la nuova associazione, AP2 invii in broadcast allo switch un frame ethernet, con l'indirizzo MAC sorgente di H1. Ricevuto il frame, lo switch aggiorna la sua tabella di inoltro, in modo che H1 sia raggiungibile attraverso AP2.
Abbiamo visto all'inizio che vi sono diverse tecniche di modulazione che si associano a scenari di SNR distinti.
Per esempio, immaginiamo un utente mobile 802.11 che è inizialmente lontano 20 metri dalla stazione base e con un elevato rapporto segnale-rumore.
Avendo un alto SNR, l'utente può comunicare con la stazione base usando una tecnica di modulazione a livello fisico, che fornisce una tasso trasmissivo elevato, mantenendo un BER basso. Se l'utente comincia ad allontanarsi dalla stazione base: l'SNR diminuisce all'aumentare della distanza. In questo caso, se la tecnica di modulazione usata nel protocollo 802.11, in funzione in quel momento tra la stazione base e l'utente non cambia, il BER diventerà alto e non più accettabile al diminuire di SNR e, alla fine, nessuno dei frame trasmessi sarà ricevuto correttamente. Per questa ragione, alcune implementazioni di 802.11 sono in grado di variare il tasso trasmissivo selezionando in modo adattivo la tecnica di modulazione da usare a livello fisico in base alle attuali o recenti caratteristiche del canale. Se un nodo invia due frame consecutivi senza riceve un riscontro (indicazione di errori sui bit nel canale), il tasso trasmissivo ricade al successivo valore più basso. Se per 10 frame consecutivi viene confermata la ricezione o scade il timer che tiene traccia del tempo dall'ultima sostituzione del tasso, il tasso trasmissivo si incrementa al successivo valore più alto. Il meccanismo è simile al probing di TCP per il controllo della congestione: il tasso trasmissivo viene aumentato fino a che non si verifica un evento di perdita, ovvero la mancata ricezione degli ACK, dopo il quale, il tasso trasmissivo viene ridotto.
Nei dispostivi mobili l'energia è fondamentale.
Lo standard 802.112 fornisce funzionalità per la gestione dell'energia che consentono ai nodi 802.11 di minimizzare la quantità di tempo nel quale le loro funzionalità di ascolto, trasmissione, ricezione nonché altri circuiti elettrici debbano rimanere attivi. Un nodo è in grado di alternare esplicitamente tra gli stati di "attivo" (wake) e "inattivo" (sleep).
Un nodo comunica all'AP che sta per disattivarsi impostando a 1 il bit di gestione energetica nell'intestazione del frame 802.11. Il nodo imposta un timer affinché torni ad attivarsi appena prima dell'istante in cui l'AP è programmato per inviare i frame beacon (ogni 100 ms circa). Dato che l'AP è a conoscenza che il nodo è inattivo, l'AP sa che non dovrà mandare frame a tale nodo e memorizza i frame che lo riguardano per inviarli successivamente.
Qualche istante prima che l'AP invia frame beacon, il nodo si riattiva, la procedura di riattivazione richiede solo 250 microsecondi.
Perché i beacon contengono una lista dei frame che l'AP ha salvato per il nodo. Se il nodo vede che ci sono dei frame per lui allora comunica all'AP di inviarglieli, con una richiesta esplicita (interrogazione). Altrimenti il nodo ritorna in modalità sleep.
I beacon vengono inviati ogni 100 ms, il nodo si riattiva in 250 microsecondi. Questo ci permette di far dormire il nodo per il 99% del tempo, ricavando vantaggi per quanto riguarda il comparto energetico dell'host.