Facoltà di Ingegneria Corso di Studi in Ingegneria delle Telecomunicazioni tesi di laurea Configurazione di nodi wireless con supporto della qualità del servizio Anno Accademico 2003/2004 Relatore Ch.mo Prof. G. Ventre correlatori Ing. M. D’Arienzo Ing. M. Ficco candidato Domenico Beneduce matr. 39/1963 Configurazione di nodi wireless con supporto della qualità del servizio Indice Introduzione 6 Capitolo 1. Obiettivo della tesi: progetto iniziale 10 1.1 1.2 1.3 11 13 14 L’idea iniziale La realizzazione Il Sequence Diagram Capitolo 2. Qualità del Servizio su Internet: IntServ e DiffServ 16 2.1 La qualità del servizio 17 2.2 2.2.1 2.2.2 2.2.3 2.2.4 Il Il Il Il Il 18 21 23 23 24 2.3 2.4 2.4.1 2.4.2 2.5 2.5.1 2.5.2 L’architettura di un Router nel modello Integrated Services Le classi di servizio Controlled Load Service (CLS) Guaranteed Service (GS) Tipologie di applicazioni Applicazioni real time Applicazioni Elastiche 24 26 26 27 28 28 31 2.6 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 Il modello Differentiated Services Il condizionamento del traffico Classificazione dei pacchetti Profilo del Traffico: Meter Marker Sheduler 32 34 35 36 37 38 Modello Integrated Services Protocollo RSVP modulo Admission Control modulo Packet Classifier modulo Packet Scheduler 2 Configurazione di nodi wireless con supporto della qualità del servizio 2.6.6 2.6.7 2.6.8 2.6.9 2.6.10 2.6.10.1 2.6.10.2 2.6.10.3 Policing Policy Shaper Dropper Per Hop Behavior (PHB) Expedited Forwarding (EF) Assured Forwarding (AF) Best Effort (BE) 39 39 40 41 41 42 43 44 2.7 Il protocollo RTP 45 Capitolo 3. La QoS negli end-system 46 3.1 La qualità de servizio sulle reti IP 46 3.2 L’influenza del sistema operativo 53 Capitolo 4. Reti wireless 802.11 62 4.1 4.1.1 4.1.2 4.1.3 Il protocollo IEEE 802.11 QoS su reti wireless 802.11 Il MAC 802.11 Il MAC 802.11e 62 65 65 67 4.2 4.2.1 4.2.2 4.2.2.1 4.2.2.2 4.2.2.3 4.2.2.4 4.2.3 4.2.4 4.2.5 4.2.5.1 Procedure di handoff Strategie di attivazione dell’handoff Schemi di controllo dell’handoff Mobile Controlled Handoff (MCHO) Network Controlled Handoff (NCHO) Mobile Assisted Handoff (MAHO) Network Assisted Handoff (MAHO) Schemi di attivazione della connessione Schemi di trasferimento della connessione L’handoff a livello Rete Il protocollo IP e gli handoff 70 72 73 74 74 75 75 77 77 78 79 4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 Il protocollo Mobile IP Il funzionamento di Mobile IP Meccanismi di Agent Discovery Cambiamento di rete Procedura di registrazione presso l’Home Agent L’IP Mobility ed i messaggi ARP 81 83 89 90 91 96 4.4 4.4.1 4.4.2 Cellular IP: un approccio all’Host Mobility Introduzione a Cellular IP Approccio alternativo alla gestione degli utenti mobili 98 99 104 3 Configurazione di nodi wireless con supporto della qualità del servizio 4.4.3 4.4.4 4.4.4.1 4.4.4.2 4.4.4.3 4.4.4.4 4.4.5 4.4.5.1 4.4.5.2 4.4.5.3 4.4.5.4 4.4.6 4.4.6.1 4.4.6.2 4.4.6.3 4.4.7 Modello di rete ad accesso wireless Cellular IP Meccanismi di mapping: Paging Caches e Routing Caches Paging di Cellular IP Routing di Cellular IP Handoff di Cellular IP Problemi relativi al disegno del protocollo Indirizzamento e Migrazione Pacchetti di controllo Configurazione dei nodi Algoritmi dei nodi Realizzazione del protocollo Realizzazione della temporizzazione Realizzazione delle Caches Realizzazione del Paging Conclusioni su Cellular IP 109 113 114 118 123 125 129 129 130 131 132 133 133 135 136 137 Capitolo 5. Access Point con supporto della qualità del servizio: HostAP e HostQs 139 5.1 HostAP 140 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 HostQs: Differenziazione del traffico in WLAN Introduzione a HostQs QoS dell’IEEE 802.11e: la funzione EDCA Differenziazione del traffico a livello LLC L’implementazione di HostQs Risultati del test Conclusioni e sviluppi futuri 143 144 145 145 150 152 159 Capitolo 6. Sviluppo software e misurazioni 161 6.1 Modifica del codice di Queue Manager 168 6.2 6.2.1 6.2.2 Misurazioni Studio dei parametri statistici Calcolo della varianza approssimata 170 172 172 Appendice A. Codici dei programmi 176 A.1 A.2 A.3 A.4 176 179 180 180 Codice del programma Server Codice del programma Client Codice della libreria di servizio Il Makefile 4 Configurazione di nodi wireless con supporto della qualità del servizio Appendice B. How-to di installazione 182 B.1 B.2 B.3 B.4 B.5 B.6 182 183 186 187 189 190 Installazione del sistema di base Compilazione del kernel Installazione di HostAP e HostQs Configurazione delle interfacce Impostazione del DHCP Impostazione del NAT Bibliografia 192 5 Configurazione di nodi wireless con supporto della qualità del servizio Introduzione In uno scenario in cui la dimensione dei computer portatili diventa sempre più ridotta e la loro presenza sempre più diffusa grazie anche ad un’accessibilità dei costi quasi totale, si rende necessaria la possibilità di collegarsi ad una rete - nel più classico dei casi ad Internet - in maniera semplice, veloce e con pochi click e soprattutto senza l’impiego di fili. Una possibilità di collegamento senza fili è già offerta in alcuni luoghi - ancora pochi in realtà - come aeroporti o grandi alberghi dove sono presenti zone fornite di un servizio di copertura wireless chiamate hot spot; tale servizio è offerto dai principali gestori di telefonia mobile e per lo più a scopo pubblicitario. In verità l’accesso alla rete è efficiente ma abbastanza macchinoso perché c’è bisogno dell’impostazione di alcuni parametri iniziali che per semplicità di accesso o solamente per comodità, sarebbe bene che fosse eseguita in maniera trasparente all’utente. In altre parole, la sola presenza di un determinato computer portatile in una rete dovrebbe essere quasi sufficiente a far partire automaticamente un processo di configurazione di parametri base per la connessione alla rete locale più vicina e, attraverso questa, a Internet. In questa tesi vengono proposti alcuni sistemi per effettuare la connessione wireless in poco tempo e se possibile senza impostazione manuale dei 6 Configurazione di nodi wireless con supporto della qualità del servizio parametri; ovviamente un minimo di configurazione sarà comunque necessaria e inoltre si immagina che la presenza di alcuni sistemi hardware e software venga diffusa in aree più estese di quelle classicamente associate alle LAN. Ma il cuore del presente studio è basato sulla configurazione di un Access Point mobile che implementi la gestione della qualità del servizio: attraverso elementi hardware particolari e soprattutto con l’aiuto di prodotti software studiati e modificati ad hoc laddove necessario, è possibile fare in modo che un normale computer portatile (un laptop o un palmare) possa essere configurato per funzionare come un nodo di rete, dando la possibilità a qualunque altro nodo all’interno di un certo raggio e fornito di una normale scheda di rete wireless, di collegarsi alla LAN più vicina - volendo a Internet - proprio come se a gestire la comunicazione fosse un normale Access Point. Il nodo viene configurato prevedendo un supporto della qualità del servizio, ossia la possibilità di creare classi di utenti, ognuna delle quali associata ad un livello di priorità. La differenziazione tra le classi, ovvero la decisione del livello di precedenza, è stabilita attraverso l’analisi di un determinato campo dell’header IP; ora, sebbene il campo ToS (Type of Service) sia un byte dedicato proprio a scopi di questo tipo, è sembrato molto più utile distinguere un utente attraverso il suo identificativo più univoco: l’indirizzo IP. Una volta che un pacchetto sia giunto al portatile-Access Point, invece di essere immediatamente servito, viene inviato ad un blocco studiato apposta che si occupa di leggere l’indirizzo IP, decidere quale priorità assegnarvi, quindi riporre il pacchetto nella coda relativa a quel livello di precedenza. A questo punto entra in gioco uno schedulatore che dà al pacchetto un ritardo 7 Configurazione di nodi wireless con supporto della qualità del servizio proporzionale alla dimensione della sua coda e a quelle delle code con priorità più alta; solo dopo che il pacchetto avrà risalito tutta la fila, verrà rimandato al punto da cui era stato prelevato e sarà quindi pronto per essere inoltrato. Il blocco dei pacchetti (in altre parole la gestione della qualità del servizio) avviene quindi all’interno del nostro nodo in un modo semplice quanto efficace. L’efficienza del funzionamento del sistema viene testato con l’aiuto di piccoli programmi pensati per questo scopo: una serie di programmi client generano flussi di dati, gli assegnano una priorità e li inviano all’indirizzo di un programma server che raccoglie informazioni statistiche sui tempi di consegna e sui ritardi subiti dai dati. Vengono inoltre proposti dei sistemi alternativi per la gestione della qualità del servizio basati su idee innovative che tendono a sfruttare a pieno tutte le potenzialità della rete. Dato il crescente interesse verso le tecnologie senza filo, gli studi e le idee esposte in questa tesi rappresentano un buon punto di partenza per sviluppi futuri: in una visione più generale in cui la presenza di computer portatili configurati come Access Point sia molto diffusa, lo scenario globale cambia completamente. Infatti l’accesso wireless può essere fornito non più da un singolo hot spot fissato in un punto ben definito dello spazio ma potrebbe essere affidato ad utenti mobili, dando la possibilità di estendere la zona di copertura wireless su un’area tanto estesa quanto il numero degli Access Point permetta. In altre parole, non si può dire a priori quanto sia estesa una LAN wireless perché in ogni punto può esserci copertura fornita da un Access Point che a sua volta si trova nella zona di copertura di un altro Access Point. 8 Configurazione di nodi wireless con supporto della qualità del servizio Figura 0.1: Scenario attuale Figura 0.2: Possibile scenario futuro Il disegno generale nel quale si inquadra questo studio è interessante quanto complesso e nel seguito sarà illustrato nei dettagli. In effetti, un computer portatile con queste caratteristiche sbiadisce la distinzione fra terminali e nodi di rete e può essere impiegato nelle situazioni più disparate, cosa che la fantasia e la capacità di degli esperti del mondo dell’informatica non tarderà a notare. 9 Configurazione di nodi wireless con supporto della qualità del servizio Capitolo 1 Obiettivo della tesi: progetto iniziale L’idea che porta alla realizzazione di questo studio di tesi si presenta ambiziosa ed allo stesso tempo di notevole interesse, soprattutto in un epoca come quella attuale, dominata dalla presenza sempre più assidua - e qualche volta anche asfissiante - di apparecchi elettronici delle più svariate forme e dimensioni, che vanno dai personal computer nel classico formato monitor-case-tastiera, ai moderni laptop, ai palmari, ai telefoni cellulari di ultima generazione. Qualunque sia la natura del sistema elettronico, non mancherà mai una caratteristica fondamentale: la possibilità di un collegamento senza fili verso uno o più sistemi dotati della stessa tecnologia o verso una rete locale LAN e verso la rete globale Internet. La capacità di collegamento senza fili a un entità esterna che fino a poco fa restava prerogativa esclusiva dei telefoni cellulari, è ormai una caratteristica richiesta a qualunque computer anche non portatile. Così diventa corredo standard per uffici, aeroporti, hotel e altre strutture concepite per ospitare risorse umane, l’offerta di un servizio di accesso wireless per tutti coloro che lo richiedano. Da qui nascono tante altre problematiche di realizzazione basate soprattutto 10 Configurazione di nodi wireless con supporto della qualità del servizio sulla gestione delle politiche di alcuni sistemi (nel caso più comune Internet) che erano stati pensati per la comunicazione di utenti inquadrati in uno scenario ben determinato e che si trovano oggi a dover essere convertiti per fornire servizi in scenari del tutto diversi, come le reti wireless. Nasce tra gli altri il problema della differenziazione degli utenti, comunemente identificato con la realizzazione del supporto della qualità del servizio (QoS). Proprio in questa direzione nasce il presente progetto che anche se non realizzato in ogni suo punto, dà un’idea di una buona politica di gestione della QoS e fornisce un sistema funzionante di differenziazione degli utenti che può essere utilizzato da solo o può rappresentare un buon punto di partenza per studi futuri. 1.1 L’idea iniziale Lo scenario complessivo nel quale si inquadra questa tesi comprende una serie di elementi, a volte anche indipendenti gli uni dagli altri, ma che messi insieme danno una visione generale assolutamente sensata. Si parta immaginando un dispositivo hardware wireless, che può essere governato da qualsivoglia tecnologia; per fissare le idee si pensi ad un elemento Bluetooth capace di gestire una scheda di rete: tale dispositivo sarà l’elemento fondamentale per il riconoscimento di un utente. Il dispositivo fornisce una chiave, ovvero un elemento univocamente associato al possessore e leggendo dati dalla scheda di rete, invia ad un Access Point una serie di dati, tra i quali: 11 Configurazione di nodi wireless con supporto della qualità del servizio • l’indirizzo MAC della scheda di rete che gestisce; • un ID, cioè la chiave che identifica univocamente un utente. Quest’ultimo dato può essere impostato dall’esterno fornendo così un duplice vantaggio: • il possessore del dispositivo può accedere alla rete con la stessa QoS utilizzando anche terminali diversi; • lo stesso dispositivo può essere usato da utenti diversi, ognuno dei quali può usufruire di una propria qualità del servizio. Figura 1.1: Collegamento tra client e Access Point Nel caso in cui l’Access Point sia già a conoscenza della ID, potrebbe assegnare a quell’utente un livello di priorità alta, cioè dare al traffico generato da quell’utente la precedenza rispetto al traffico generato da un cliente con una ID sconosciuta. Si verrà quindi a creare una tabella che associa ad ogni indirizzo MAC un certo livello di priorità: 12 Configurazione di nodi wireless con supporto della qualità del servizio ID Già conosciuta Indirizzo MAC Priorità ID1212 Sì 11-22-33-44-55-66 Alta ID3434 Sì 77-88-99-00-AA-BB Media ID5656 No 00-DD-EE-FF-11-22 Bassa ID7878 No 33-44-55-66-77-88 Bassa Tabella 1.1: Associazione ID/priorità C’è bisogno adesso della scelta di un criterio di associazione della ID/priorità con un parametro caratteristico dello standard di comunicazione IEEE802.11 per poter rendere la gestione della qualità del servizio effettivamente implementabile. Benché questa scelta possa essere indirizzata verso tante direzioni, si è scelto di associare la ID/priorità al parametro che negli standard di comunicazione rappresenta l’identificativo univoco per antonomasia: l’indirizzo IP. 1.2 La realizzazione Per associare una ID/priorità all’indirizzo IP, si richiede un servizio speciale al DHCP (Dynamic Host Configuration Protocol): quando richiesto, questo protocollo non fornirà semplicemente il primo indirizzo IP disponibile ma effettuerà una scelta: in base alla ID/priorità rilevata, darà all’utente un indirizzo che sarà associato ad una casse di servizio. Supponendo per fissare le idee che le classi di servizio siano 3, all’utente verrà dato: 13 Configurazione di nodi wireless con supporto della qualità del servizio • un indirizzo IP tra X.X.X.1 e X.X.X.10 per una classe a priorità alta; • un indirizzo IP tra X.X.X.11 e X.X.X.30 per una classe a priorità media; • un indirizzo IP tra X.X.X.11 e X.X.X.30 per una classe a priorità bassa. Le tre classi contengono un numero di possibili clienti che è proporzionale al proprio livello di priorità: la prima classe avrà 10 possibili utenti, la seconda classe 20 e infine la classe a priorità più bassa avrà possibili 30 utenti. Tale ripartizione del numero di possibili utenti risulta lecita se si immagina che gli utenti con priorità alta siano minori in numero rispetto a quelli con priorità bassa. Se una classe risulta saturata mentre le altre possono ancora accettare connessioni, si potrà scegliere di assegnare un indirizzo di classe superiore o inferiore. ID/priorità IP associato utenti possibili Alta IP X.X.X.1 - X.X.X.10 10 Media IP X.X.X.11 - X.X.X.30 20 Bassa IP X.X.X.31 - X.X.X.60 30 Tabella 1.2: utenti per ogni classe di servizio 1.3 Il Sequence Diagram Il Sequenze Diagram graficizza brevemente i passi per realizzare l’obiettivo proposto. Le ultime fasi del Server relative a HostAP e Queue Manager verranno 14 Configurazione di nodi wireless con supporto della qualità del servizio analizzate nei dettagli nei relativi capitoli quando si esporranno tutte le caratteristiche di questi prodotti software. Figura 1.2: il Sequence Diagram 15 Configurazione di nodi wireless con supporto della qualità del servizio Capitolo 2 Qualità del servizio su Internet: IntServ e DiffServ La rete Internet attuale offre un solo servizio di trasporto dei dati che viene chiamato best effort. Questo tipo di servizio non fornisce nessuna garanzia sul comportamento end-to-end della rete, dato che non è possibile fare alcun tipo di ipotesi sulla banda disponibile, sul ritardo di transito o sulla corretta consegna dei singoli pacchetti, se non su base statistica. L’utilizzo di applicazioni con esigenze real time rimane quindi confinato nell’ambito delle reti locali fino a che la rete Internet non sarà in grado di garantire qualche forma di qualità di servizio. Le alternative principali per fornire servizi di trasporto garantiti sono essenzialmente due: • sovradimensionare la rete Internet in modo che anche nelle condizioni di traffico elevato vi siano sempre risorse a sufficienza per soddisfare tutte le richieste; • introdurre nella rete nuovi meccanismi per garantire, controllare e tariffare la qualità richiesta, quindi suddividere i servizi disponibili per il trasporto, differenziandoli in base alla qualità che possono fornire e consentire l’utilizzo di tutta una nuova serie di servizi commerciali che non possono prescindere da opportune politiche di tariffazione e garanzia di qualità. 16 Configurazione di nodi wireless con supporto della qualità del servizio Con riferimento agli standard IETF (Internet Engineering Task Force) sono state proposte una serie di modifiche necessarie per far evolvere rete Internet attuale verso una rete in grado di fornire un supporto di QoS. 2.1 La qualità del servizio Il compito principale di una rete di telecomunicazioni è il trasporto dell’informazione da un punto all’altro della rete stessa. Le informazioni trasportate sono soggette ad una notevole variabilità; quindi per uno sfruttamento ottimale delle risorse di rete, nasce l’esigenza di una diversificazione nel trattamento riservato ai singoli flussi di dati. È evidente che applicazioni di video-conferenza che comportano la generazione di traffico dati audio e video con vincoli di real time, hanno esigenze molto diverse da applicazioni come il trasferimento di file o il servizio di posta elettronica che possono invece accettare un ritardo nella consegna dei dati ma assolutamente non tollerano perdite. Si introduce il termine Qualità del Servizio (QoS) per individuare una corrispondenza tra le esigenze di una data applicazione e il servizio di trasporto che può essere fornito dalla rete di telecomunicazioni. Nel seguito ci si riferirà al termine Qualità del Servizio intendendo la capacità della rete nel fornire e garantire una serie di servizi di trasporto diversificati in termini di banda utilizzabile, ritardo end-to-end, jitter e tasso di errore. Nella rete Internet attuale l’unico servizio disponibile è quello di best effort, il cui paradigma si basa sul trasporto dei datagrammi IP quando c’è banda disponibile, sull’accodamento quando ci sono buffer liberi e sullo scarto quando le risorse di rete sono esaurite. 17 Configurazione di nodi wireless con supporto della qualità del servizio 2.2 Il Modello Integrated Services Le risorse messe a disposizione dalla rete Internet sono essenzialmente i router e la banda trasmissiva dei link di interconnessione tra le entità costituenti la rete stessa. I router sono caratterizzati da una determinata capacità elaborativa e da buffer che consentono di conservare i dati tutte le volte che non è possibile eseguire un loro reinstradamento immediato. Nel documento “Integrated Service in the Internet Architecture” [1], redatto in ambito IETF, si propone un’estensione dell’architettura di Internet e dei protocolli utilizzati per realizzare l’integrazione di servizi differenziati per il trasporto di flussi. Questo modello, a cui ci si riferirà in seguito con il nome IntServ, si poggia su due concetti fondamentali: • la scelta del ritardo come il parametro privilegiato per definire la QoS: si è dimostrato che un limite più o meno rigido sul ritardo massimo sperimentatile dai singoli pacchetti di dati consente effettivamente di fornire servizi di trasporto garantiti in termini di banda utilizzabile, ritardo end-to-end, jitter e tasso di errore; • la scelta del dominio a cui applicare il concetto di classe di servizio: nell’Internet attuale, i router che si occupano di instradare i datagrammi dalla sorgente alla destinazione, forniscono un trattamento 18 Configurazione di nodi wireless con supporto della qualità del servizio indifferenziato secondo una disciplina di accodamento di tipo FIFO (first in, first out), rendendo di fatto impossibile una qualunque previsione non statistica sul ritardo o sulle perdite end-to-end. Dato che nell’insieme di datagrammi trasportati è possibile individuare diversi livelli di correlazione, il modello IntServ introduce il concetto di flusso, inteso come l’insieme dei datagrammi scambiati in seguito alla stessa attività d’utente, individuabili in modo univoco e caratterizzati dalla stessa Qualità del Servizio. Si osservi che il flusso rappresenta la granularità minima del modello IntServ, dato che è l’insieme minimo identificabile di datagrammi IP per i quali è possibile fornire una desiderata QoS. In aggiunta, per modellare le trasmissioni multicast si introduce anche il concetto di sessione, definita come l’insieme di uno o più flussi aventi una particolare destinazione ed un dato protocollo. Per una caratterizzazione del flusso si usa il Filter Specificator formato da: • l’indirizzo IP Sorgente e Destinazione, • il tipo di protocollo di trasporto (TCP, UDP, etc.) • i porti Sorgente e Destinazione (nel caso di IPv6 è stato previsto nell’header un campo apposito di 24 bit chiamato flow-label). Si definisce un modulo, il Packet Classifier, che si occupa di discriminare i flussi provenienti da applicazioni distinte; esso opera senza imporre variazioni ai protocolli utilizzati per il trasporto, dato che le informazioni necessarie sono contenute nell’header del datagramma IP. 19 Configurazione di nodi wireless con supporto della qualità del servizio Figura 2.1: il Filter Specificator Il modello IntServ prevede di associare ad ogni flusso un oggetto chiamato Flow Descriptor [2] che è formato dalla coppia Flow Specificator (Flow Spec) e Filter Specificator. Il FlowSpec è composto da, due insiemi distinti di parametri che permettono di caratterizzare il flusso in termini di qualità del servizio richiesta e profilo di traffico: • TSpec - Traffic Specification [3]: descrive le caratteristiche del flusso dati generato dal nodo trasmettitore, fornendo i parametri di un modello di occupazione di banda noto come token bucket [3]; nel caso del ricevitore (fruitore del servizio) il TSpec definisce il livello di traffico per cui si vuole veder garantita una certa QoS; • RSpec - Service Request Specification [3]: specifica la qualità del servizio che l’applicazione ricevente il flusso dati vorrebbe veder garantita; l’host fruitore del servizio specifica la banda minima di cui ha bisogno, il ritardo e la perdita massima tollerabile per i pacchetti dati. 20 Configurazione di nodi wireless con supporto della qualità del servizio Figura 2.2: il Flow Descriptor Una volta stabilite le basi logiche su cui poggia il modello Integrated Services (flusso e massimo ritardo end-to-end) restano da definire i componenti da aggiungere alla struttura di lnternet per ottenere la Qualità del Servizio. Si individuano perciò quattro blocchi fondamentali: • un protocollo di segnalazione per la prenotazione delle risorse (attivo su Host e Router); • un modulo per la verifica delle richieste fatte alla rete: Admission Control Routine (Router); • un modulo per suddividere il traffico in flussi distinti secondo la QoS, il cosiddetto Packet Classifier (Router); • un modulo per gestire la QoS richiesta ai vari flussi: il Packet Scheduler (Router); 2.2.1 Il Protocollo RSVP Il protocollo RSVP (Resource ReSerVation Protocol) [2] è un protocollo di segnalazione a livello IP utilizzato per comunicare in modo dinamico all’interno di una rete la richiesta di servizi di trasporto differenziati per trasmissioni unicast o multicast: tramite una serie di messaggi è possibile dichiarare le 21 Configurazione di nodi wireless con supporto della qualità del servizio esigenze in termini di risorse di rete richieste da un singolo flusso, esplicitare alla rete la volontà di riservare queste risorse e comunicare quando le risorse non sono più necessarie. Sarà poi compito del modulo di controllo del traffico rendere operative queste richieste. Quando un’applicazione ha intenzione di trasmettere dei dati a cui attribuire una certa QoS è necessario comunicare ai ricevitori ed alla rete questa intenzione: viene inviato un messaggio chiamato PATH che definisce un percorso tra trasmettitore e ricevitore, comunicando al ricevitore e a tutti i router attraversati le esigenze del flusso dati generato dall’applicazione. Il ricevitore potrà a questo punto richiedere di riservare delle risorse inviando a ritroso un messaggio di RESV, rendendo esplicita la richiesta di risorse, che affinché diventi operativa deve essere accolta da tutti i router che collegano il trasmettitore al ricevitore. Si intuisce l’importanza di fissare una connessione virtuale identificata univocamente dal percorso effettuato dal messaggio di PATH: in questo modo viene meno il paradigma classico delle comunicazioni IP di tipo connectionless, perché per garantire la qualità del servizio si deve fissare un percorso ed allocare nei router attraversati le risorse necessarie. I router RSVP conservano le informazioni riguardanti la qualità del servizio assegnata ad ogni flusso con una tecnica di soft-state, quindi se ricevitore e trasmettitore non inviano periodicamente i messaggi di RESV e di PATH le risorse vengono liberate automaticamente allo scadere di un timeout. Questa tecnica rende il protocollo RSVP estremamente robusto nei riguardi di eventuali perdite di messaggi di servizio e flessibile nella gestione dinamica di variazioni di percorso o qualità del servizio. 22 Configurazione di nodi wireless con supporto della qualità del servizio Le caratteristiche principali di RSVP possono essere riassunte nei seguenti punti: • protocollo receiver initiated; • indipendente dai meccanismi di routing: i messaggi di controllo di RSVP sono incapsulati in pacchetti IP (Type 46) ed instradati come normali pacchetti dati in modo che ci sia una completa indipendenza dai meccanismi di routine) • utilizzo di stati soft; • disponibilità di diversi stili di prenotazione; • Compatibile sia con IPv4 che con IPv6 2.2.2 Il modulo Admission Control Questo modulo si occupa di verificare se la richiesta di QoS per un dato flusso si può accettare senza che vengano meno le risorse precedentemente allocate. In pratica ogni volta che ad un nodo arriva una richiesta di prenotazione di risorse viene presa una decisione per accettare o rifiutare la richiesta. Questa funzione è particolarmente delicata perché scelte troppo conservative porteranno ad uno sottosfruttamento delle risorse disponibili, mentre una scelta poco conservativa potrebbe far venir meno la qualità del servizio precedentemente garantita. 2.2.3 Il modulo Packet Classifier Il compito di questo modulo è di suddividere i pacchetti IP che arrivano alle 23 Configurazione di nodi wireless con supporto della qualità del servizio interfacce di ingresso in classi opportune in base a criteri locali. Un router di backbone cercherà di suddividere i flussi in poche classi per favorire l’aggregazione e ridurre il numero di entità distinte da trattare, mentre router più vicini alla periferia potranno adottare criteri diversi permettendo una maggior differenziazione delle classi. 2.2.4 Il modulo Packet Scheduler Questo modulo rappresenta la parte più critica di tutto il processo di allocazione delle risorse perché dalla sua realizzazione dipende l’efficienza dell’intero meccanismo di controllo del traffico: la funzione principale consiste nell’instradare i vari flussi di pacchetti utilizzando degli opportuni sistemi di code (Simple Priority Queuing, Class Based Queuing, Weigheted Fair Queuing [4]) in modo da garantire un trattamento differenziato ai singoli flussi. Lo Scheduler può anche svolgere la funzione di policing, cioè esercitare un controllo per impedire che un host immetta in rete un traffico non conforme a quello dichiarato. 2.3 L’architettura di un Router nel Modello Integrated Services In figura 2.3, dove viene mostrata l’architettura di riferimento di un Router in grado di supportare il modello Integrated Services; sono individuabili due sezioni distinte: il Background Code ed il Forwarding Path posti rispettivamente sopra e sotto la riga orizzontale. 24 Configurazione di nodi wireless con supporto della qualità del servizio Figura 2.3 Architettura di un Router nel Modello ISI Il Forwarding Path opera su ogni pacchetto IP e rappresenta la parte operativa del processo di routing. Il blocco di Internet Forwarding analizza l’header di tutti i pacchetti IP eseguendo una loro classificazione utilizzata dal successivo modulo di Packet Scheduler. Il Background Code è un’insieme di routine che si occupano di gestire le strutture dati necessarie al corretto funzionamento del Forwarding Path. Si possono individuare le seguenti funzioni: • Routing Agent: implementa i protocolli di routing gestendo gli opportuni database; • Reservation Setup Agent: implementa il protocollo per la gestione della prenotazione delle risorse; il modulo di Admission Control verifica se le richieste di QoS possono essere soddisfatte e successivamente vengono configurati il Packet Classifier ed il Packet Scheduler; 25 Configurazione di nodi wireless con supporto della qualità del servizio • Management Agent: si occupa del network management: admission control policies, controlled link sharing, etc. Il router risulta quindi l’elemento fondamentale per garantire il controllo del traffico a livello di rete. Nello svolgere questa funzione deve poter identificare i singoli flussi per riservare ad ognuno di essi un trattamento ben determinato per garantire il rispetto degli impegni presi nei confronti degli altri elementi della rete. Si definisce stato del router la sua conoscenza sul trattamento da riservare ai singoli flussi dati che lo interessano. 2.4 Le classi di servizio Il gruppo di lavoro IntServ dell’IETF ha definito tre classi di servizio [1] che permettono di identificare tre diversi scenari di comportamento end-to-end. Di queste classi solo due implementano un servizio vero e proprio, in quanto la classe tradizionale Best Effort, che può comportare ritardi e perdite impredicibili di pacchetti, rappresenta il servizio che si riceve in assenza di richieste specifiche. 2.4.1 Controlled Load Service (CLS) La classe di servizio Controlled Load Service [5] fornisce ad un’applicazione un comportamento end-to-end che approssima quello ottenibile da una rete non congestionata con servizio best effort. Facendo l’ipotesi di assenza di malfunzionamenti della rete, l’applicazione può ritenere che: • la rete con servizio CLS garantisce una percentuale di perdita di pacchetti 26 Configurazione di nodi wireless con supporto della qualità del servizio molto vicina al tasso di errore del mezzo trasmissivo, dato che non si verificano più perdite dovute alla congestione; • il ritardo medio dei pacchetti non si scosterà molto dal ritardo minimo che consiste nel ritardo dovuto alla propagazione del segnale nel mezzo trasmissivo più il tempo di processamento delle informazioni nei dispositivi di rete attraversati. Per gestire il servizio CLS è necessario che l’applicazione fornisca alla rete le informazioni sul traffico che intende generare (Tspec), in modo che lungo il percorso fatto dai dati siano allocate risorse sufficienti a soddisfare la QoS richiesta. Il servizio CLS è stato introdotto per essere di supporto a tutta una serie di applicazioni che subiscono un degrado notevole delle prestazioni in condizione di overload ma che non richiedono vincoli stringenti sul ritardo massimo sperimentabile dai dati. 2.4.2 Guaranteed Service (GS) Il servizio Guaranteed Service [6] assicura un ritardo massimo di consegna dei pacchetti IP (ritardo tra sorgente e destinazione) non superiore al guaranteed delivery time, garantendo allo stesso tempo l’assenza di perdite di pacchetti dovute ad overflow dei buffer dei router. Per ottenere questo risultato è necessario fissare il percorso che verrà fatto dai dati ed avere dei dispositivi di rete in grado di supportare il Guaranteed Service lungo tutta la tratta interessata. 27 Configurazione di nodi wireless con supporto della qualità del servizio Il ritardo sperimentato da un pacchetto che viaggia lungo una rete è composto da due parti: un ritardo fisso (transmission delay), dovuto alla distanza ed ai tempi fissi di elaborazione dei dispositivi di rete, ed un ritardo dovuto all’attesa per la presenza di buffer nei router (queuing delay). Il transmission delay dipende dal percorso che viene scelto tra sorgente e destinazione, mentre il queuing delay dipende dal Guaranteed Service, che permette di impostare un valore massimo per il tempo di attesa in coda una volta che si conoscono le caratteristiche del traffico. Questo tipo di servizio è stato pensato per tutte quelle applicazioni che sono intolleranti ad un ritardo eccessivo dei pacchetti: si pensi alle applicazioni di video e audio playback che usano codifiche per le quali i datagrammi arrivati oltre un certo ritardo non sono più utilizzabili per la riproduzione real time. 2.5 Tipologie di applicazioni Per meglio caratterizzare la qualità del servizio è necessario focalizzarsi sulle esigenze delle singole applicazioni. In linea di principio la quantità che più pregiudica le prestazioni di una applicazione è il ritardo che ogni pacchetto dati subisce nel transitare attraverso la rete. Le applicazioni a seconda dell’effetto del ritardo dei pacchetti possono essere suddivise in Applicazioni real time ed Applicazioni Elastiche. 2.5.1 Applicazioni real time Si definiscono applicazioni real time tutte le applicazioni che impongono un 28 Configurazione di nodi wireless con supporto della qualità del servizio limite massimo al ritardo subito da ogni pacchetto dati: se un pacchetto arriva con eccessivo ritardo non è più utilizzabile dall’applicazione e quindi viene scartato perché privo di valore. Un classico esempio di applicazioni real time sono le applicazioni di signal playback che svolgono la funzione di riprodurre un segnale generato da una sorgente e trasportato dalla rete fino alla destinazione; il segnale trasformato in forma numerica e successivamente segmentato in pacchetti dati, viene trasportato dalla rete che introduce un ritardo aleatorio tra pacchetto e pacchetto. Nel ricostruire il segnale originale, il ricevitore deve rispettare dei vincoli temporali e quindi deve conoscere il ritardo massimo accumulabile da ogni pacchetto per ritardare la riproduzione del segnale della stessa quantità (Offset Delay). Il ritardo massimo può essere dichiarato a priori se è disponibile una conoscenza della rete, oppure ricavato dall’analisi dei ritardi dei singoli pacchetti in modo da poter variare l’offset delay in modo dinamico. Va precisato che le applicazioni di playback si possono suddividere in tolleranti se accettano una variazione del ritardo massimo o intolleranti se il ritardo massimo deve essere fissato perché non è consentita nessuna forma di distorsione del segnale originale. Tabella 2.1: Esempi di applicazioni con esigenze real time 29 Configurazione di nodi wireless con supporto della qualità del servizio Per caratterizzare le applicazioni real time si usano i concetti di latenza e fedeltà. Per latenza si intende il periodo di permanenza di un pacchetto dati nella rete, cioè il ritardo che subisce nella tratta trasmettitore-ricevitore, mentre per fedeltà ci si riferisce alla qualità del segnale riprodotto dall’applicazione. La sensibilità alla latenza è tanto maggiore quanto più si richiede l’interazione tra i due estremi della connessione: la latenza è più dannosa per una telefonata o una videoconferenza piuttosto che per la riproduzione audio o video, che è invece più sensibile alla variazione della fedeltà. Si può quindi riformulare la definizione di applicazione intollerante come un’applicazione che deve riprodurre esattamente il segnale trasmesso, a meno di un inevitabile ritardo temporale, senza alcuna perdita di fedeltà. Quindi un’applicazione real time intollerante deve appoggiarsi ad un servizio di trasporto dati che garantisca un ritardo massimo per i pacchetti ed una assoluta mancanza di perdite. Le applicazioni real time di tipo tollerante sono in grado di accettare una variazione dell’offset delay, anzi in genere cercano di ricavare questa quantità dall’analisi dei ritardi dei singoli pacchetti per ridurre il ritardo con cui viene riprodotto il segnale, nel qual caso si parla di Adaptive Playback. Ne segue che le esigenze di questo tipo di applicazioni sono meno pesanti di quelle viste per le applicazioni intolleranti: rilassando i vincoli sul ritardo viene incrementato il livello di utilizzazione della rete, senza che l’applicazione ne risenta in modo pesante. Per questo motivo per applicazione Adaptive Playback si propone un servizio di trasporto analogo al classico Best Effort riferito però ad una rete scarica. 30 Configurazione di nodi wireless con supporto della qualità del servizio 2.5.2 Applicazioni Elastiche Nelle applicazioni elastiche, al contrario delle applicazioni real time, i dati vengono elaborati a mano a mano che arrivano; quindi l’applicazione è in grado di svolgere le sue funzioni anche se alcuni dati arrivano in ritardo. Il ritardo riduce le prestazioni globali dell’applicazione, ma non al punto da renderla inutilizzabile: il calo di prestazioni è dovuto al ritardo medio piuttosto che alle code della distribuzione statistica dei ritardi, quindi alcuni pacchetti possono arrivare con un ritardo notevole, ma il valore medio del ritardo deve essere contenuto entro certi limiti. Per questo motivo il servizio più adatto a soddisfare i requisiti delle applicazioni elastiche è sicuramente il Best Effort, con una eventuale differenziazione a seconda della diversa sensibilità alla latenza delle singole applicazioni. Tabella 2.2: Sensibilità alla latenza di alcune applicazioni tipiche 31 Configurazione di nodi wireless con supporto della qualità del servizio 2.6 Il Modello Differentiated Services L’architettura Differentiated Services detta anche DiffServ o DS, viene definita nell’RFC2475 dell’IETF dove sono descritte tutte le regole che si devono rispettare per garantire l’interoperabilità tra i sistemi DS. La caratteristica di questa architettura è rappresentata dal traffico che non è più considerato come un insieme generico di pacchetti che costituiscono un unico flusso che viene trattato in modo best effort, ma la banda complessiva disponibile nei vari collegamenti viene suddivisa in un insieme di flussi caratterizzati da alcuni comportamenti comuni. Al loro interno sono costituiti dei microflussi che rappresentano aggregati di differenti connessioni aventi caratteristiche comportamentali analoghe (stesso BA - Behavior Aggregate). La gestione di un flusso prescinde quindi dalla sua composizione, ossia da come sono organizzati dentro di sé i vari microflussi, in questo modo da un lato si opera trattando analogamente tutti i microflussi appartenenti ad un unico Behavior Aggregate, ma dall’ altro è necessario che questo flusso aggregato rispetti i livelli di servizio concordati con l’utente. Una caratteristica importante per la soluzione DS è la scalabilità, ossia la possibilità di interfacciare tra loro differenti rete DS in sequenza o l’una dentro 32 Configurazione di nodi wireless con supporto della qualità del servizio l’altra, anche senza conoscere nel dettaglio i meccanismi gestionali di ciascuna rete; questo meccanismo è importante nel caso in cui due AS (Autonomus System), che supportano entrambi DS, si interfaccino tra di loro. La rete DiffServ quindi non prevede controlli sul singolo microflusso, ma solo sugli aggregati, pertanto è necessario che verso i nodi più esterni della rete venga previsto un controllo del rispetto dei requisiti che si vogliono mantenere mediante delle policy opportune per evitare in seguito comportamenti imprevedibili. Poiché la rete DiffServ è asimmetrica, ogni connessione è vista come un flusso monodirezionale. I pacchetti vengono quindi classificati e marcati in modo tale da poter essere trattati in modo diverso: chiaramente la differenza di trattamento è imposta dal particolare comportamento di inoltro (PHB - Per Hop Behavior) sui nodi lungo il percorso. C’è quindi una sequenza di operazioni che devono essere svolte per garantire un corretto funzionamento di una rete DS. La rete DiffServ è divisa in domini (figura 2.4) e a loro volta i domini si possono suddividere in due insiemi significativi: • i domini centrali (CORE); • i domini di confine (EDGE). I domini di confine (Edge Router) sono i più delicati per lo svolgimento delle politiche di qualità e di differenziazione dei servizi, in quanto è lì che è necessario classificare i pacchetti, e svolgere altre importanti operazioni come shaping, policing, dropping e remarking. 33 Configurazione di nodi wireless con supporto della qualità del servizio Figura 2.4: Architettura di un dominio di rete DiffServ 2.6.1 Il condizionamento del traffico Un condizionatore di traffico può contener i seguenti elementi: • classifier • meter • marker • shaker • dropper Quando i pacchetti escono dal dispositivo di condizionamento del traffico di un edge router, deve essere impostata ad un valore appropriato, un’etichetta DS (DiffServ Code Point) per ogni pacchetto. I condizionatori di traffico, che rappresentano la parte più complessa della rete DS, sono normalmente situati sulla frontiera della rete ma non è escluso che possano anche essere posizionati nei nodi interni di un dominio DS o talvolta dentro un dominio non compatibile con DS. La figura 2.5 mostra un diagramma a blocchi di un classificatore e condizionatore di traffico. Questo dispositivo può non essere necessariamente costituito da tutti e quattro gli elementi. Per 34 Configurazione di nodi wireless con supporto della qualità del servizio esempio nel caso in cui nessun profilo di traffico sua configurato, i pacchetti passano soltanto attraverso un classificatore e un marker. Figura 2.5: Condizionamento e classificazione del traffico 2.6.2 Classificazione dei pacchetti Prima che il traffico di rete riceva un trattamento differenziato è necessario classificarlo, ossia suddividerlo in classi differenziate in base ai comportamenti di inoltro (PHB) che si vogliono garantire, quindi associarlo ad opportune code specifiche per i vari tipi di traffico, per poi effettuare l’operazione di marking inserendo un’etichetta (DSCP) presente nell’intestazione del pacchetto IP che viene riconosciuta in tutta la rete DiffServ, in modo da garantire un trattamento diverso dagli altri pacchetti. Pertanto queste funzioni avvengono ai nodi di ingresso della rete DS. I classificatori selezionano i pacchetti in un flusso di traffico basandosi sul contenuto di una parte dell’intestazione del pacchetto. Esistono due tipi di classificatori: • il classificatore Behavior Aggregate classifica i pacchetti basandosi solo sull’etichetta DSCP; • il classificatore Multifield seleziona i pacchetti sulla base di uno o più 35 Configurazione di nodi wireless con supporto della qualità del servizio campi dell’intestazione, come per esempio l’indirizzo IP sorgente e/o destinatario, il campo DS, il protocollo (protocol ID), i numeri dei porti sorgente o destinazione ed altre informazioni. Figura 2.6 : Esempio di un elemento classifier Sarà chiaro che un Classifier considera un flusso di traffico come input e lo dirige al corretto output. 2.6.3 Profilo del Traffico: Meter Se le proprietà di un flusso di pacchetti non superano certi parametri predefiniti, i pacchetti sono chiamati in-profile; in caso contrario saranno detti out-profile. I profili di traffico specificano le proprietà temporali (rate, burst) di un certo livello di servizio e così forniscono le regole per la determinazione se un pacchetto è in-profile oppure no. Un esempio di profilo di traffico, può essere: • max bit rate = 1Mbit/s • burst di 2Mbit/s con massima durata di 20 secondi, se non sono entro 1 minuto l’uno dall’altro 36 Configurazione di nodi wireless con supporto della qualità del servizio Figura 2.7: Esempio di un elemento meter La figura 2.7 mostra un elemento meter molto generico: esso considera un flusso di dati come input e decide se quel flusso è conforme o non conforme ad un certo profilo di traffico. È facile capire che l’operazione di marking è fortemente influenzata dal metering, infatti subito dopo la misurazione del traffico verranno prese decisioni di dropper o shaping. 2.6.4 Marker Sulla frontiera (EDGE) di ingresso della rete DiffServ, i pacchetti subiscono il marking: vengono prima selezionati da un classificatore e successivamente marcati opportunamente scrivendo una sequenza di codice sempre all’interno dell’header, chiamata DS-byte (si utilizza la porzione di campo riservata al ToS/CoS del pacchetto Ipv4/Ipv6) . Si tratta di 8 bit, di cui 6 costituiscono il cosiddetto DiffServ Code Point (DSCP), i restanti 2 bit (i meno significativi) sono riservati. Il marking di un pacchetto quindi fa in modo di aggiungerlo ad un particolare flusso aggregato. 37 Configurazione di nodi wireless con supporto della qualità del servizio Figura 2.8: DSCP nell’header IP Il marker può essere configurato per fare il marking di tutti i pacchetti che gli arrivano ad una stessa etichetta, o può essere configurato per fare marking di un pacchetto ad una o un insieme di etichette utilizzate per selezionare un aggregato in un gruppo, in accordo con lo stato del misuratore. Quando il marker cambia un precedente DSCP presente in un pacchetto in uno nuovo si dice che esso ha subito un remarking. 2.6.5 Scheduler Lo scheduler attua al suo interno vari algoritmi di selezione che descrivono il modo con cui i pacchetti possono venire trattati dopo essere stati classificati ed opportunamente accodati, determinando in quale ordine ed in che momento i pacchetti che arrivano al suo ingresso sono inviati alla rete. Tali algoritmi sono chiamati discipline di servizio. Sono inoltre inclusi parametri che influiscono sull’operazione di uno scheduler: parametri statici come la priorità relativa associata ai vari canali di input, e parametri dinamici come il valore DSCP dei pacchetti presenti all’ingresso di uno 38 Configurazione di nodi wireless con supporto della qualità del servizio scheduler. Sono possibili quindi diverse discipline di servizio, come: • FCFS: first come, first served • RB: rated based • WFBS: weighted fair bandwidth sharing 2.6.6 Policing Il Policing è il processo di eliminazione dei pacchetti (per mezzo di un dropper) appartenenti ad un determinato flusso di traffico in funzione dello stato di un misuratore (meter). Esso è quindi costituito da un insieme di regole che devono essere rispettate per mantenere la proporzione voluta fra i volumi di traffico che devono occupare l’intera banda disponibile di un collegamento ed è pertanto uno dei metodi che si utilizzano per realizzare il condizionamento del traffico. Per mantenere all’interno la semplicità della rete DS, è fortemente consigliabile effettuare l’operazione di policing solo nei nodi di ingresso. 2.6.7 Policy Può succedere che i pacchetti che sono in eccesso ad un certo profilo di traffico possano subire diversi trattamenti. Con l’impostazione delle policy è possibile stabilire i limiti per i vari profili di traffico e le azioni da intraprendere tra le seguenti: • scarto (dropping) • remarking • trasmissione come Best Effort 39 Configurazione di nodi wireless con supporto della qualità del servizio Quando vengono intraprese azioni diverse dall’eliminazione dei pacchetti, come il remarking dei pacchetti in eccesso, è consigliabile utilizzare un nuovo DSCP che ha un comportamento associato differente, magari meno privilegiato rispetto al precedente; solitamente inoltre si utilizza come nuovo comportamento quello standard che identifica il traffico di default, chiamato Best Effort. In questi casi nasce un pericolo: è possibile che venga sovvertito l’ordine con cui arrivano i pacchetti e questo infatti può mettere in crisi il meccanismo di gestione della congestione. Infatti alcuni pacchetti che andrebbero eliminati, nel caso in cui vengano rimarcati come Best Effort, possono subire dei ritardi troppo elevati dovuti ai diversi comportamenti di inoltro (PHB) che subiscono e rischiano quindi di arrivare anche con ritardi consistenti rispetto agli altri, introducendo meccanismi di ritrasmissione che non creano alcun beneficio. Per risolvere questo problema quindi è necessaria un’accurata gestione delle policy e un continuo monitoraggio della rete. Le operazioni di policy solitamente sono svolte nei nodi di confine ed in particolare nei cosiddetti ingress nodes, per garantire un’equa ripartizione delle risorse disponibili tra i diversi domini che generano del traffico. 2.6.8 Shaper Lo shaper ha il compito di ritardare qualcuno o tutti i pacchetti in un flusso di traffico cercando di mantenere l’ordine all’interno dello stesso microflusso in modo tale da fornire un profilo di traffico compatibile con il tipo di servizio che si vuole offrire. 40 Configurazione di nodi wireless con supporto della qualità del servizio Uno shaper normalmente ha un buffer a lunghezza finita ed i pacchetti possono essere limitati se in esso non c’è spazio sufficiente per mantenere tutti quelli che devono essere ritardati. In ogni caso viene suggerito di evitare per quanto possibile l’eliminazione dei pacchetti in quanto lo shaper serve per evitare che le policy successive eliminino i pacchetti poco distribuiti, che si presentano cioè sotto forma di burst. Essenzialmente ci sono tre tecniche per implementare il traffic shaping: • Leaky bucket • Token bucket • Flow specification 2.6.9 Dropper Il dropper elimina qualcuno o tutti i pacchetti in un flusso di traffico senza però cambiare l’ordine di arrivo per mantenere il flusso con un profilo di traffico compatibile. Da notare che un dropper può essere implementato come un caso particolare di uno shaper attraverso la regolazione della lunghezza del buffer dello shaper a zero o a pochi pacchetti. 2.6.10 Per Hop Behaviors (PHB) Quando un pacchetto viene classificato all’interno di un router, viene differenziato rispetto agli altri in base all’etichetta, ovvero dal valore del campo DS. Questa può essere vista come divisa in due parti: la prima parte viene utilizzata per scegliere la coda di appartenenza del pacchetto; la seconda per 41 Configurazione di nodi wireless con supporto della qualità del servizio eseguire una differenziazione tra i pacchetti appartenenti alla stessa coda, nel caso si verifichi una congestione. Ognuna delle code presenti in un router è collegata ad una particolare classe di servizio, quindi ad un Per Hop Behaviors (PHB), e le proprietà di queste code, come l’ampiezza di banda o il ritardo medio, dipendono dal meccanismo di scheduling adottato. Il PHB non è altro che una descrizione della regole di smistamento del traffico assegnate a tutti i pacchetti aventi stesso valore DSCP. Si descrive nel dettaglio tre differenti tipologie di PHB: • Expedited Forwarding (EF) • Assured Forwarding (AF) • Best Effort (BE) 2.6.10.1 Expedited Forwarding (EF) L’Expedited Forwarding PHB (EF) è un servizio che fornisce all’utente una percentuale minima garantita per l’utilizzo del collegamento. L’EF si presenta quindi come la forma di traffico privilegiato a cui si fornisce quindi un minimo ritardo, un jitter e una minima perdita di pacchetti. Per poter garantire al traffico EF i requisiti minimi di basso delay e bassa delay variation, bisogna fare in modo che la permanenza all’interno della coda sia minima; pertanto il compito del manager della rete deve essere quello di determinare un valore limite alla lunghezza delle code, fino al punto in cui si abbia perdita di pacchetti molto bassa. Infatti è preferibile perdere un pacchetto fra tanti, piuttosto che rallentarlo in una coda lunga. 42 Configurazione di nodi wireless con supporto della qualità del servizio E’ importante notare che la dimensione della coda dipende dal tipo di traffico EF che si intende trasportare, cioè dalla composizione dei microflussi che compongono l’aggregato EF; per cui è necessario monitorare i pacchetti trasmessi da questa classe di servizio, in maniera da mantenere mediamente la velocità dei pacchetti del flusso EF in arrivo sempre minore di quella con cui vengono smaltiti. 2.6.10.2 Assured Forwarding (AF) L’Assured Forwarding PHB (AF) è un servizio piuttosto complesso nella cui specifica può essere osservato che la classe delle azioni standard è stata ripartita nel seguente modo: • 4 classi indipendenti • ciascuna classe in tre livelli di precedenza Questa specifica indica quattro classi di traffico, per ognuna delle quali è garantita una minima quantità di banda e di buffer; si tratta quindi di requisiti non stringenti come invece si era osservato nell’EF, ma comunque migliori rispetto al Best Effort. Tabella 2.3: Schema di assegnazione delle classi secondo il PHB Assurded Forwarding 43 Configurazione di nodi wireless con supporto della qualità del servizio La tabella che mette in relazione il DSCP della classe con il corrispettivo valore di precedenza di scarto. La suddivisione viene fatta chiamando ciascun comportamento con il simbolo Afij con 0<i<4 e 0<j<3; quindi il pedice i indica la classe e il pedice j il livello di precedenza. Le quattro classi definibili sono indipendenti tra loro, quindi un flusso che viene assegnato ad una classe non può essere rimarcato su una classe diversa. Per rispettare le specifiche sul DSCP, una classe Afi è caratterizzata da comportamenti associati a caratteristiche di inoltro superiori rispetto ad una classe Afj quando i>j. La precedenza di eliminazione invece è una caratteristica specifica di ogni classe e può essere più alta o più bassa. Essa serve soprattutto per permettere all’interno di una stessa classe ed in caso di congestione, diversi comportamenti con caratteristiche di inoltro differenziate. Normalmente all’interno della classe AF è consigliabile l’uso di due precedenze in caso di rare situazioni di congestione, e tre nel caso di forti e prolungate situazioni di blocco del corretto funzionamento della rete. All’interno di una stessa classe la precedenza di eliminazione serve per stabilire parametri di accodamento e di scarto dei pacchetti differenziati. 2.6.10.3 Best Effort (BE) Il Best Effort (BE) rappresenta il comportamento associato al traffico non privilegiato, cioè che non viene trattato per soddisfare requisiti particolari, ma a cui possiamo comunque associare una banda minima garantita con opportune policy per garantirne l’inoltro. 44 Configurazione di nodi wireless con supporto della qualità del servizio Quando all’ingresso di un edge router si presenta del traffico che non rispetta le condizioni imposte dai filtri (ossia nessun campo dell’ intestazione del pacchetto è configurato per la rete DS), viene automaticamente assegnato ad un profilo di traffico di tipo Best Effort. 2.7 Il protocollo RTP Per rendere più agevoli le operazioni svolte dalle applicazioni real time è stato introdotto il protocollo di trasporto RTP (Real-Time Protocol) che si appoggia al protocollo UDP ma aggiunge una serie di nuovi servizi: • numerazione sequenziale dei pacchetti trasmessi; • gestione del timestamping per ricavare la temporizzazione corretta dei dati; • identificazione del traffico trasportato (audio, video) e della codifica usata (MPEG, H.261, ecc.); • controllo della qualità del servizio resa disponibile dalla rete. Si osservi che il protocollo RTP non assicura nessuna qualità del servizio ma pone in parte rimedio ai problemi dovuti al ritardo aleatorio dei pacchetti dati perché fornisce all’applicazione una serie di informazioni che consentono di migliorare la riproduzione del segnale. Alcuni applicativi si appoggiano per il trasporto dei dati proprio al protocollo RTP, permettendo di snellire la struttura dell’applicazione, a discapito di un aumento in termini di banda occupata a causa dell’overhead dovuto ai protocolli di trasporto. 45 Configurazione di nodi wireless con supporto della qualità del servizio Capitolo 3 La QoS negli end-system In questo capitolo si cercherà di spiegare come può essere gestita la qualità del servizio sui nodi terminali di una rete; verranno presentate le principali soluzioni oggi presenti negli scenari classici evidenziandone i vantaggi e i limiti e le idee proposte per un miglioramento delle prestazioni. 3.1 La qualità del servizio sulle reti IP IP (Internet Protocol) è un protocollo di tipo connectionless, cioè senza connessione. Questo protocollo non richiede che tutti i pacchetti attraversino lo stesso percorso, bensì la decisione d’instradamento viene presa in maniera indipendente dai pacchetti stessi, tipicamente in funzione delle condizioni di traffico presenti nella rete. Questo garantisce una robustezza maggiore alla rete nei confronti d’eventuali crash di nodi intermedi di un percorso. Contemporaneamente però il protocollo IP non fa alcun riferimento al trattamento esplicito del traffico. L’unica modalità di trasmissione di dati prevista da tale protocollo è quella best effort. Tale modalità di trasmissione, 46 Configurazione di nodi wireless con supporto della qualità del servizio pur prestando un elevato grado di robustezza, mal si adatta ad applicazioni di tipo real time. La nascita di questo tipo di applicazioni - in particolare delle applicazioni multimediali - ha fatto sentire sempre di più la necessità di trovare delle soluzioni capaci di garantire comunicazioni interattive caratterizzate da una certa Quality of Service. Le esigenze legate alle applicazioni multimediali hanno spinto il gruppo di lavoro IETF a realizzare un modello che cercasse di superare i limiti di quello corrente senza però sconvolgere la struttura stessa di Internet [1]. Quello che si è proposto il gruppo di lavoro IntServ, è di modificare l’odierna infrastruttura di Internet al fine di poter fornire garanzie di Quality of Service. Il modello proposto cerca di offrire tre servizi di base: • servizi best effort • servizi real time • servizi di controllo della banda disponibile L’assunzione di base del modello Integrated Service è la limitata capacità di trasmissione dei link: una conseguenza di ciò è che il numero di flussi real time che un link può sopportare è limitato. Da queste prime assunzioni si può intuire che il modello IntServ fornisce ai router la capacità di riservare risorse in modo da fornire una ben determinata qualità del servizio per specifici flussi. Un’altra assunzione del modello IntServ è che sia il traffico real time che quello differito debbano usare le stesse infrastrutture di rete; in tal caso si dovrebbe progettare un unico stack di protocolli che usi un singolo Internet layer per entrambi i tipi di traffico. 47 Configurazione di nodi wireless con supporto della qualità del servizio Una possibile infrastruttura che realizzi le ipotesi poste dal modello IntServ è costituita da quattro nuovi componenti: • un packet scheduler • un packet classifier • un insieme di admission control • un protocollo per la prenotazione delle risorse. Di questi quattro componenti i primi tre costituiscono il modulo di Controllo del Traffico (Traffic Control) ossia il componente del router che si occupa di garantire le differenti qualità del servizio ai flussi che lo attraversano. Figura 3.1: Architettura RSVP negli host e nei router L’unico componente a non essere incluso nel Traffic Control è il protocollo di prenotazione delle risorse; la presenza di questo protocollo è legata alla necessità di memorizzare uno stato nei nodi della rete per ogni flusso 48 Configurazione di nodi wireless con supporto della qualità del servizio prenotato. Il protocollo funziona inviando una serie di messaggi sulla rete, che informano i nodi intermedi della presenza di un nuovo flusso prenotato, permettendo al packet scheduler di trattare i pacchetti appartenenti a questo flusso in maniera da garantire la qualità del servizio. Nel modello non è specificato come effettivamente è fatto questo protocollo, anche se di fatto quello che sembra essere destinato ad essere utilizzato è il protocollo RSVP (Resource reSerVation Protocol) [7]. Il modello IntServ prevede una serie di classi di servizio che fanno riferimento fondamentalmente al ritardo di trasmissione: • Guaranteed Service [8]: impone al flusso di dati generato da un’applicazione, un limite superiore sul ritardo di trasmissione end-to-end cui un generico pacchetto può essere soggetto a causa delle attese nelle code degli elementi di rete; in più fornisce garanzie sulla banda passante assegnata al flusso; non agisce né sullo jitter né sul valore medio di tale ritardo; • Controlled Load [5]: offre alle applicazioni un sevizio che approssima le caratteristiche di un flusso best effort in condizioni di rete scarica. Si assume in particolare che: o un’alta percentuale dei pacchetti raggiungerà la destinazione; o il ritardo di trasmissione di questi pacchetti non eccederà il ritardo minimo sperimentato dai pacchetti consegnati con successo. • Bandwidth Recovery [9]: ha come principio base quello di recuperare la banda assegnata in eccesso ai flussi appartenenti alla classe Guaranteed Service. Il modello a servizi integrati [10][11] si presta all’impiego in una serie di 49 Configurazione di nodi wireless con supporto della qualità del servizio interessanti scenari applicativi. Esso tuttavia sfruttando in maniera intensiva le informazioni di stato, presenta problemi di scalabilità, il che contrasta nettamente con l’elevato tasso di crescita della rete Internet. Diventa dunque necessario concepire un modello alternativo che non memorizzi nei nodi della rete informazioni sullo stato dei singoli flussi ma gestisca il traffico in maniera aggregata. Su questo paradigma è fondato il modello elaborato dal gruppo di lavoro Differentiated Services [10], nel quale l’aggregazione è ottenuta sfruttando un apposito campo DS inserito all’interno del pacchetto IP. Il modello di riferimento DiffServ è basato su un modello costituito da domini: un flusso dati proveniente da una certa sorgente entra in un dominio DS (DiffServ) e una volta classificato come appartenente ad una certa classe di traffico e sottoposto ad un processo di condizionamento, viene aggregato a tutti i flussi appartenenti alla stessa classe di traffico. All’interno del dominio, viene identificato mediante il campo DS e viene trattato secondo il per-hop-Behavior (PHB) associato al codice DS. Quando un’entità richiede un servizio ad un fornitore di servizi DiffServ, tra i due viene stabilito un contratto in termini di livello del servizio offerto detto Service Level Agreement o SLA. Questo contratto specifica inoltre quale deve essere il profilo del traffico generato da chi usufruisce del servizio e come deve essere trattato se esso non coincide con il profilo stipulato. I servizi offerti hanno due caratteristiche fondamentali: si riferiscono al traffico in una sola direzione e fanno riferimento ad aggregati di traffico. Una parte importante dell’SLA è il Traffic Condition Agreement (TCA): esso 50 Configurazione di nodi wireless con supporto della qualità del servizio specifica in dettaglio i parametri che caratterizzano il livello di servizio e tali parametri comprendono: • valori indicanti caratteristiche del servizio in termini di performance, come throughput, probabilità di perdita dei pacchetti, latenza; • i profili di traffico a cui si deve aderire affinché il servizio possa essere fornito in maniera corretta; • la disposizione sul traffico così detto out-of-profile, ossia quando la banda utilizzata supera quella prenotata; la parte di traffico in più è proprio quella detta “fuori dal profilo”; • caratteristiche di marking: i pacchetti da trasmettere vengono preventivamente marcati allo scopo di distinguerli nel tragitto tra i due end-point; • caratteristiche di shaping: ossia si cerca di rendere il traffico uniforme e quindi senza fenomeni di burst. Il Service Level Agreement specifica inoltre altri parametri più generali quali: • affidabilità di condizioni critiche, legate per esempio al re-routing dovuto a danneggiamenti di nodi intermedi; • servizi di crittografia; • vincoli di instradamento; • meccanismi d’autenticazione; • meccanismi di monitoraggio del traffico offerto; • tariffazione. Le architetture IntServ e DiffServ sembrano rappresentare due soluzioni completamente opposte al problema dell’offerta di servizi di comunicazione caratterizzati da QoS. 51 Configurazione di nodi wireless con supporto della qualità del servizio Ognuna delle due presenta però una serie di problematiche: sostanzialmente il problema del modello IntServ/RSVP è la scalabilità, dovuta alla memorizzazione di uno stato per ogni flusso; il problema del modello DiffServ è che l’aggregato non è adatto ad offrire servizi di tipo quantitativo, dove servizi qualitativi sono servizi del tipo: “il 90% del traffico in-profile subirà al massimo 50ms di latenza”. Il DiffServ sembra tuttavia essere la soluzione più adatta ad essere realizzata in tempi ragionevoli, anche se è importante assicurare che i meccanismi di host e router già esistenti basati sul modello IntServ, possano interoperare con i meccanismi di reti basate sul modello DiffServ. Un possibile modello che prevede la coesistenza di rete IntServ e DiffServ è costituito da una rete di transito (Transit Network) basata sul modello DiffServ e da un certo numero di rete periferiche (Stub Networks) basate sul modello IntServ. In un modello del genere gli host utilizzano RSVP per effettuare le richieste di QoS; tali richieste, oltre a generare messaggi RSVP, invocano il modello di controllo del traffico locale. Gli edge router, ovvero i router terminali, fanno invece da punti di connessione tra le reti periferiche e le reti di transito. Tuttavia è spesso conveniente separare questi elementi in due parti: una parte di tipo RSVP-capable, che si affaccia sulla rete periferica e una parte DiffServ-capable, che si affaccia sulla rete di transito. 52 Configurazione di nodi wireless con supporto della qualità del servizio Figura 3.2: Coesistenza tra IntServ e DiffServ 3.2 L’influenza del sistema operativo Sebbene i due modelli standard IntServ e DiffServ propongano una soluzione al problema della qualità del servizio relativa alla gestione delle risorse di rete nei nodi intermedi (router), non è trattato in maniera altrettanto efficace la gestione delle risorse sull’end-system (host). In sostanza l’end-system è considerato come un semplice punto nel modello della rete e non come un sistema a sua volta complesso che necessita di gestire un numero notevole di risorse. Recenti ricerche [12] hanno evidenziato come, al fine di fornire concrete garanzie di QoS per applicazioni distribuite di tipo delay-sensitive, risulti fondamentale considerare un modello di QoS che includa al suo interno sia le caratteristiche della rete che del sistema operativo usato. Ad esempio, per alcune applicazioni real time che richiedono servizi audio/video, risulta fondamentale non solo “domandare” delle risorse alla rete, come l’allocazione di una certa banda, ma è anche necessario configurare in 53 Configurazione di nodi wireless con supporto della qualità del servizio maniera opportuna il sistema operativo degli host, come la schedulazione dei processi, l’assegnazione della priorità dei pacchetti, in modo tale da garantire una corretta tempificazione della trasmissione e della ricezione dei pacchetti delle applicazioni che sono eseguite sull’end-system. Il sistema operativo ha dunque il compito di gestire (coordinare ed allocare) le risorse del sistema (memoria, accesso alle periferiche, tempo di CPU). Tale gestione si rende necessaria per due ragioni fondamentali: • in primo luogo perché il numero di risorse presenti nel sistema, essendo questo limitato, rende necessario un controllo sulle richieste multiple di una stessa risorsa, ad esempio un disco, un’interfaccia seriale, un’interfaccia di rete, ecc; • in secondo luogo perché è necessario controllare l’accesso, richiesto da parte di uno o più processi utente, a risorse critiche o condivise come ad esempio le memorie condivise, le code di messaggi, le strutture dati di un processo, ecc. Di seguito sono descritti i compiti del sistema operativo ed inoltre sono elencate le attività di cui il sistema operativo è responsabile per la loro gestione: • la gestione dei processi: o creare e deallocare i processi di utente e di sistema; o schedulare i processi; o fornire i meccanismi per la sincronizzazione dei processi; o fornire i meccanismi per la comunicazione tra processi; o fornire i meccanismi per la gestione dei deadlock; • la gestione della memoria centrale: o tenere traccia di quali parti della memoria sono attualmente utilizzate e da chi; 54 Configurazione di nodi wireless con supporto della qualità del servizio o decidere quali processi debbono essere caricati in memoria quando vi sia spazio disponibile; • la gestione della memoria secondaria: o gestire ed allocare lo spazio libero; o scheduling del disco; • la gestione dei file: o creare e cancellare i file e le directory; o fornire le primitive per la manipolazione di file e directory; o mapping dei file sulla memoria secondaria; o backup dei file su dispositivi di memoria stabili. Inoltre il sistema operativo deve: • fornire un meccanismo di protezione che controlla l’accesso da parte dei programmi, dei processi e degli utenti alle risorse del sistema; • fornire un interprete dei comandi, il quale costituisce l’interfaccia tra l’utente ed il sistema operativo; • gestire il sistema di I/O che ha il compito di nascondere all’utente le caratteristiche dei dispositivi hardware. Nella figura 3.3 viene riportato uno schema a blocchi semplificato dell’architettura di un generico sistema operativo. Un’importanza fondamentale va data allo scheduling dei processi ed al meccanismo di I/O relativamente alla condivisione delle risorse nei sistemi operativi: si ritiene che questi meccanismi siano le principali cause di ritardi nella comunicazione all’interno degli end-system. 55 Configurazione di nodi wireless con supporto della qualità del servizio Figura 3.3: Struttura a blocchi di un kernel Molti dispositivi hardware (dispositivi di memoria di massa, disk driver, interfaccia di rete, ecc.) sono nascosti all’utente grazie meccanismi offerti dal SO, come l’interfaccia socket ed il sottosistema di I/O. Per capire la complessità di un end-system si può pensare ad esempio allo scheduling dei processi che dipende dal tipo di programma da eseguire e dagli obiettivi della politica di scheduling. Il tempo d’esecuzione di un programma è generalmente composto da una parte dovuta al tempo d’elaborazione di CPU e da un’altra dovuta al tempo di elaborazione per eseguire le istruzioni di I/O. La politica di scheduling 56 Configurazione di nodi wireless con supporto della qualità del servizio tipicamente ha il compito di bilanciare l’utilizzazione delle risorse in base al tempo richiesto da un’applicazione al fine di completare il proprio task. La priorità di un processo è periodicamente ricalcolata in base a vari parametri, come l’intervallo di tempo in cui esso occupa la CPU, la quantità di memoria che esso occupa o richiede per l’esecuzione, e così via. Un esempio è il real time scheduling, il quale deve assicurare che il processo finisca entro uno specifico deadline o in un particolare ordine. Il sistema operativo 4.4BSD ad esempio non implementa il real time scheduling. La politica di scheduling del 4.4BSD [13] assegna inizialmente ad ogni processo la massima priorità e permette ad un processo di essere eseguito per un fissato time slice. Durante l’esecuzione del processo la sua priorità viene abbassata, cosicché il processo che utilizza più a lungo la CPU avrà un priorità che si abbassa rapidamente mentre i processi che rimangono inattivi hanno una priorità che aumenta. Quando questi ultimi sono pronti per essere eseguiti possono prelazionare le risorse al processo in esecuzione ammesso che questo abbia una priorità più bassa. La priorità del processo dipende da due valori p_estcpu e p_vice. Il valore p_estcpu fornisce una stima della recente utilizzazione della CPU da parte del processo; il valore p_nice è modificabile a livello d’utente e varia tra -20 e 20 (il valore normale è 0). La priorità complessiva del processo viene ricalcolata periodicamente in base a questi valori. Solaris 2.x [14] è un sistema multithreaded e multiprocesso e quindi il suo scheduler di processo deve supportare tali caratteristiche. Il risultato è uno scheduler molto efficiente per l’esecuzione di processi real time. Lo scheduling 57 Configurazione di nodi wireless con supporto della qualità del servizio dei thread è basato sulla priorità e su classi di scheduling. Il sistema organizza e classifica i thread in quattro classi: interattivi (IA), timesharing (TS), real time (RT) e thread di sistema (SYS). All’interno d’ogni classe è assegnata una priorità al thread. I thread TS sono eseguiti per un periodo di tempo al termine del quale, se non hanno completato il loro task, vengono schedulati a favore di un altro thread. Ad ognuno di essi è assegnato un time slice la cui lunghezza varia in base alla priorità del thread. Comunque la priorità del thread è modificata ad ogni cambio di contesto per evitare fenomeni di starvation in cui un thread monopolizza l’uso di una risorsa del sistema. La classe SYS è usata per eseguire processi di sistema; i thread in questa classe hanno una priorità fissata e non posseggono un time slice. Essi sono eseguiti finché non sono completati, oppure finché gli viene prelazionata la CPU da un thread (a priorità maggiore) della stessa classe. I thread d’utente non possono essere schedulati o assegnati alla classe SYS. I thread della classe RT posseggono una priorità fissata e un time slice. Essi sono schedulati in base alla priorità. Anche Linux [15] è un sistema operativo multithreaded e multitask. La politica di scheduling può assumere uno dei seguenti valori • SCHED_OTHER (la politica di default); • SCHED_FIFO; • SCHED_RR; le ultime due individuano delle politiche speciali per applicazioni time critical. Queste politiche consentono di sospendere i processi di tipo SCHED_OTHER. Un 58 Configurazione di nodi wireless con supporto della qualità del servizio processo SCHED_FIFO può essere sospeso solo da un processo con priorità più alta, ma un processo SCHED_RR, se necessario, sarà sospeso per condividere il tempo di esecuzione con altri processi che hanno la stessa priorità. Linux assegna inizialmente ad ogni processo una priorità intermedia, a meno che non venga richiesta dall’utente una specifica priorità. Durante l’esecuzione la priorità viene modificata dinamicamente. Come in 4.4BSD e Solaris 2.x esiste un valore di priorità detto nice che è modificabile a livello d’utente e varia tra -19 e 19. Anche in Linux il valore nominale di nice è 0. Maggiore è la priorità nice associata ad un processo e più il sistema operativo tenterà di abbassare la priorità interna associata allo stesso. Ciò e dovuto alla politica alla base dello scheduling di Linux: tutti i processi devono essere trattati in modo quanto più equo possibile. Il problema di garantire parametri di qualità del servizio nella comunicazione end-to-end richiede una diversità di risorse; tra queste le risorse di rete rappresentano solo una piccola parte. Le altre risorse, come la capacità d’elaborazione (CPU), I/O caching, I/O devices, memoria paginata, memorie ausiliarie (buffer e memoria video), periferiche (videocamera, microfono) ecc., devono essere gestite in accordo con la rete al fine di garantire il comportamento desiderato. Nella figura 3.4 viene mostrato come le esigenze di QoS delle applicazioni non riguardano solo i parametri di QoS della rete (throughput, latency, jitter, lost rate) ma anche quelli del sistema operativo come la priorità assegnata ad un processo, il time slice (quanto di tempo in cui la CPU è assegnata ad un dato processo), la priorità dei pacchetti trasmessi, ecc. Di conseguenza, i parametri di QoS forniti a livello di applicazione vengono in parte tradotti in parametri di QoS per il sistema operativo e parte in parametri di QoS per la rete. 59 Configurazione di nodi wireless con supporto della qualità del servizio Figura 3.4: Parametri di QoS delle applicazioni Si potrebbe pensare di migliorare la comunicazione tra processi remoti ottimizzando la gestione delle risorse dell’end-system locale e in particolare i meccanismi di I/O offerti dal sistema operativo. La schedulazione dei pacchetti all’interno dello stream rappresenta la reale difficoltà per garantire pienamente alcuni parametri di QoS nei sistemi host, più della schedulazione dei processi. Risulta quindi necessario estendere il processo di Quality of Service Management anche all’interno dell’end-system. Il compito di tale processo è quello di ottimizzare, in base al livello di servizio richiesto dall’applicazione, l’utilizzo delle risorse dell’end-system e i meccanismi offerti dal sistema operativo in accordo con la rete. Il QoS Management deve essere in grado, attraverso dei processi di Admission Subsystem e di Resource Scheduler, di fornire garanzie alle richieste di risorse. Attraverso il processo di prenotazione delle risorse un’applicazione può 60 Configurazione di nodi wireless con supporto della qualità del servizio richiedere risorse ed ottenere una risposta dal sistema da parte dell’Admission Subsystem il quale determina quante e quali risorse servono per soddisfare la richiesta. Sarà poi compito del Resource Scheduler ottenere una corretta suddivisione delle risorse tra le applicazioni ed in particolare offrire una sufficiente garanzia della loro disponibilità. Esso effettua un processo di scheduling che consiste nella determinazione della disponibilità di risorse in un particolare istante di tempo. Se ci sono sufficienti risorse disponibili, il Resource Scheduler restituisce una conferma all’Admission Subsystem il quale accetta la richiesta dell’applicazione. Nella figura 3.5 è rappresentato un modello di QoS Management che comprende l’end-system. Tale modello prevede anche un processo di prenotazione delle risorse coordinato e controllato delle risorse stesse non solo della rete, ma anche di quelle offerte dal sistema operativo. Figura 3.5: End-System QoS Management 61 Configurazione di nodi wireless con supporto della qualità del servizio Capitolo 4 Reti wireless 802.11 Le tecnologie per la comunicazione senza fili si stanno diffondendo rapidamente in tutto il mondo. Esse sono utilizzate sia per realizzare reti locali (LAN) di computer mobili, sia per la comunicazione tra dispositivi di uso comune come telefoni, macchine fotografiche, ecc. Le reti locali senza fili sono dette Wireless Local Area Network (WLAN) e vengono utilizzate per fornire connettivitá ad utenti mobili con prestazioni paragonabili alle soluzioni broadband via cavo che si trovano sul mercato. Le principali tecnologie wireless si basano sulle specifiche del protocollo IEEE 802.11. 4.1 Il protocollo IEEE 802.11 Nel 1990 venne costituito il primo gruppo di lavoro 802.11 dedicato allo sviluppo di uno standard per reti wireless, che venne approvato dall’IEEE sette anni dopo. Parallelamente l’IEEE costituì diversi gruppi di lavoro dedicati allo sviluppo di nuove funzionalità da aggiungere allo standard di base: • 802.11a : è lo standard di trasmissione ad alta velocità (54 Mbit al 62 Configurazione di nodi wireless con supporto della qualità del servizio secondo) sulla frequenza 5 GHz. I problemi legati a questa specifica non sono pochi, ad esempio non è prevista alcuna compatibilità con 802.11b, che era già molto diffuso al momento dell’approvazione di 802.11a. Alcuni produttori hanno sviluppato tecnologie per rendere interoperabili i due standard, anche se questa linea di prodotti non ha coinvolto i consumatori. Questo contrasto ha sicuramente influenzato negativamente lo standard 802.11a, che lavorando sulla frequenza 5 GHz, eviterebbe eventuali interferenze con forni microonde o dispositivi Bluetooth e permetterebbe una trasmissione con meno disturbi. • 802.11b: è attualmente lo standard piú diffuso; consente trasmissioni a 11 Mbps sulla frequenza di 2,4 GHz. Dal momento che è ormai diffuso con una certa capillarità sul territorio mondiale (soprattutto USA, Europa e Giappone) l’IEEE sta rivolgendo i propri sforzi principalmente sulla realizzazione di standard ad esso compatibili, come l’802.11g, ormai pronto ad arrivare sul mercato. Alcuni produttori hanno sviluppato una tecnologia proprietaria chiamata 802.11b+, che comunque non è certificata dall’IEEE e che permette di trasmettere fino a 22 Mbps. • 802.11c/d: sono stati raccolti questi due gruppi di lavoro perché il primo è stato sospeso e si è poi unito al secondo; i lavori sono ancora in corso e mirano alla definizione di un livello fisico utilizzabile in qualsiasi paese. • 802.11e: anche questo gruppo di lavoro, che si occupa della QoS, non ha completato le proprie attività. Si lavora sul livello MAC per aggiungere funzionalità multimediali alla tecnologia 802.11. Una volta approvato questo standard riguarderà tutte le specifiche di trasmissione 63 Configurazione di nodi wireless con supporto della qualità del servizio (802.11a/b/g) e permetterà di sfruttare il wireless anche all’interno di apparecchi multimediali. • 802.11f: è stato già completamente implementato ed è solo in attesa dell’approvazione dell’IEEE, definisce le specifiche a livello MAC, per la realizzazione di sistemi wireless distribuiti e piú in generale per le attività di roaming. La realizzazione del protocollo IAPP (Inter Access Point Protocol), su cui la specifica si basa, è stata sostenuta da diversi produttori tra cui Lucent e Cisco. • 802.11g: è l’ultimo gruppo costituito per la definizione di nuovi parametri di trasmissione sulla frequenza 2,4 GHz. Questo standard, totalmente compatibile con 802.11b, è capace di trasmettere fino a 54 Mbps utilizzando la stessa tecnica di modulazione di 802.11a. Come già detto le trasmissioni su 2,4 GHz sono ad alto rischio di interferenza, per questo si pensa che 802.11g sia uno standard di transito verso una futura specifica che permetterà di migrare sulla piú sicura e versatile frequenza dei 5 GHz. • 802.11h: si sta tuttora lavorando per la ridefinizione della frequenza di trasmissione sui 5 GHz, per diminuire le emissioni di onde radio da parte dei dispositivi. • 802.11i: questo gruppo di lavoro sta lavorando all’implementazione di sistemi di sicurezza per 802.11 che si affida attualmente al semplice Wired Equivalent Privacy (WEP), un meccanismo che prevede la possibilità di proteggere i dati trasmessi criptandoli tramite chiavi. Alcuni miglioramenti sono stati già implementati e in alcuni casi già disponibili 64 Configurazione di nodi wireless con supporto della qualità del servizio sul mercato (per esempio il Wi-Fi Protected Access WPA); le pressanti richieste del mercato porteranno a breve alla realizzazione di altri sistemi di sicurezza piú solidi. • 802.11j: questo gruppo, non più attivo, si è occupato della progettazione di una specifica unica, a livello nazionale, per LAN wireless alla frequenza di 5 GHz. 4.1.1 QoS su reti wireless 802.11 Le reti WLAN 802.11 sono considerate come un “Ethernet senza filo” per il tipo di servizio best effort fornito dal livello Medium Access Control (MAC), simile a quello di Ethernet. Ad oggi non sono stati ancora definiti standard per supportare a livello MAC la QoS; sono solamente disponibili alcune bozze del protocollo 802.11e che dovrà fornire questa funzionalità. Basandosi su queste bozze alcuni produttori hanno già messo in commercio dispositivi che hanno caratteristiche di QoS. Verranno ora analizzate le caratteristiche principali dei protocolli MAC presenti nello standard originale 802.11 e nelle bozze 802.11e [16][17]. 4.1.2 Il MAC 802.11 Il protocollo MAC 802.11 consiste di due funzioni di coordinamento: una obbligatoria detta Distributed Coordination Function (DCF) basata sul Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) e una opzionale chiamata Point Coordination Function (PCF) basata su un protocollo di tipo poll65 Configurazione di nodi wireless con supporto della qualità del servizio and-response. La maggior parte dei dispositivi disponibili sul mercato utilizza solamente la modalità DCF. Il controllo del traffico realizzato dal DCF si basa su un servizio non-preemptive (ad esempio con una coda FIFO). Il meccanismo del controllo di accesso del canale è schematizzato in figura 4.1. Figura 4.1: Accesso al canale 802.11 DCF Quando un pacchetto MAC esce dalla coda, deve attendere finché non si liberi il canale e successivamente aspettare per un intervallo di tempo fissato per evitare potenziali collisioni con altri nodi di rete. Questo tempo di attesa fissato è detto DCF InterFrame Space (DIFS). Quando il canale rimane libero per il tempo DIFS, viene iniziato un conto alla rovescia di durata casuale detto backoff (BO), al termine del quale viene trasmesso il pacchetto. Se il canale diventa occupato viene sospeso temporaneamente il BO, che riprende dall’ultimo valore calcolato quando il canale ritorna libero per un tempo maggiore di DIFS. Ogni dispositivo che utilizza il canale wireless possiede un valore chiamato Contention Window (CW), utilizzato per la scelta del BO. Il valore iniziale del BO 66 Configurazione di nodi wireless con supporto della qualità del servizio è assegnato scegliendo in modo pseudo-casuale un numero intero nell’intervallo [0,CW]. Se il pacchetto non viene trasmesso con successo viene calcolato un nuovo BO utilizzando il valore di CW raddoppiato, per diminuire la probabilità di collisione con altre stazioni. Il valore iniziale del CW è indicato come CWmin, mentre limite massimo che può assumere in caso di insuccessi è definito da CWmax. Nel caso in cui un pacchetto arrivi in una coda vuota e il canale è libero da un tempo maggiore di DIFS, il pacchetto viene inviato immediatamente. Per offrire un supporto alla QoS, seppur in modo limitato, è stato definito il Point Coordination Function (PCF). Il PCF permette alle stazioni mobili di avere accesso al canale wireless con diversa priorità, grazie ad una stazione Point Coordinator (PC) che svolge la funzione di coordinamento. Il PCF ha una priorità maggiore rispetto al DIFS, visto che può trasmettere dopo un intervallo di tempo più breve rispetto alla durata del DIFS; nel caso di PCF, il tempo di attesa viene chiamato PCF InterFrame Space (PIFS). Il PIFS è sempre minore del Simple InterFrame Space (SIFS). Per una spiegazione più dettagliata riguardo al PCF si rimanda al testo [16]. 4.1.3 Il MAC 802.11e Il gruppo di lavoro 802.11e ha proposto uno sviluppo del protocollo MAC precedentemente descritto, definendo una unica funzione di coordinamento Hybrid Coordination Function (HCF). L’HCF combina le funzioni di DCF e PCF con l’aggiunta di alcune proprietà specifiche per la QoS. L’HCF utilizza per il controllo d’accesso al canale 67 Configurazione di nodi wireless con supporto della qualità del servizio l’Enhanced Distributed Coordination Function (EDCF). Le stazioni che operano con il protocollo 802.11e sono chiamate Enhanced Station e in modo opzionale possono operare come controllore centralizzato per le altre stazioni associate nello stesso gruppo. Generalmente questa funzione denominata Hybrid Coordinator (HC) viene svolta dall’Access Point (AP). Un AP insieme al gruppo di stazioni ad esso associate forma un Basic Service Set (BSS), mentre se questi componenti sono compatibili con le specifiche del 802.11e l’insieme viene chiamato QoS Basic Service Set (QBSS). Figura 4.2: Categorie di accesso della EDCF L’EDCF realizza la QoS introducendo delle categorie di traffico, in modo da gestire otto differenti priorità. Il valore della priorità, detto Traffic Category Identification (TCID), è memorizzato all’interno dell’header del pacchetto MAC. 68 Configurazione di nodi wireless con supporto della qualità del servizio Una stazione 802.11e deve avere almeno quattro categorie d’accesso (AC) e al massimo otto, una per ogni priorità. Ogni categoria d’accesso corrisponde ad una variante estesa della coda FIFO presente nel DCF (figura 4.2). Ogni pacchetto che arriva al livello MAC viene indirizzato in una categoria di accesso in base alla priorità. È da notare come la priorità di valore 0 riceve una priorità relativa tra il livello 2 e il livello 3 (in accordo con le specifiche IEEE 802.1d). I parametri che influenzano il tempo di attesa prima della trasmissione sono assegnati in funzione della categoria d’accesso del pacchetto elaborato. I parametri utilizzati sono CWmin[AC], CWmax[AC] e AIFSD[AC], quest’ultimo utilizzato in sostituzione del DISF presente nel DCF. L’AIFSD è calcolato in questo modo: AIFSD[AC] = SIFS + AIFS[AC] · SlotTime I valori di CWmin[AC], CWmax[AC] e AIFSD[AC] sono determinati e comunicati dall’AP attraverso dei beacon frame trasmessi periodicamente (generalmente ogni 100 msec). L’AP può adattare questi parametri alle condizioni della rete e utilizzarli per differenziare la priorità d’accesso alle diverse categorie di traffico. Ogni coda associata ad un AC possiede un proprio valore di AIFS e un proprio contatore di BO. Se più code finiscono il proprio BO contemporaneamente, la collisione viene gestita in modo virtuale trasmettendo il pacchetto a più alta priorità e riassegnando un BO agli altri con CW aumentato. In [18] sono riportati i risultati di alcune simulazioni effettuate sul meccanismo EDCF. 69 Configurazione di nodi wireless con supporto della qualità del servizio 4.2 Procedure di handoff Quando un utente mobile si sposta, tipicamente si trova nella condizione di dover lasciare l’area di copertura radio del suo fornitore di servizi per entrare nell’area servita da un altro provider. Occorre quindi gestire questo tipo di transizione denominata handoff o handover. Per poter capire meglio cosa si intende per handoff, è opportuno distinguere tra due tipologie principali [19],[20]: • si verifica un Intra-Segment Handoff quando il terminale si sposta in un’area servita da più celle della stessa natura di rete; questo tipo di handoff avviene molto spesso spostandosi con un terminale GSM e passando da una zona di copertura di una stazione base ad una zona servita da un’altra. In questo caso vengono attivate delle procedure di Intra-Segment Handoff che permettono al terminale mobile di spostare il suo punto di accesso alla rete e che venga garantita la qualità del servizio prevista nel passaggio da una stazione base all’altra; • si verifica un Inter-Segment Handoff quando il terminale si sposta in un’area servita da più stazioni base, ad esempio quando si muove in un’area coperta dal servizio GPRS verso un’altra area coperta da servizi WLAN e ci si troverà nelle condizioni di eseguire un handoff tra elementi di reti differenti. Il terminale in tal caso dovrà prevedere un sistema 70 Configurazione di nodi wireless con supporto della qualità del servizio d’accesso multi-segmento. Quando il terminale si sposta dalla zona servita dal GPRS a quella servita dalla WLAN dovrà attivare delle procedure di Inter-Segment Handoff per assicurare che le comunicazioni attivi rimangano tali. Quindi l’Intra-Segment Handoff è applicato correntemente nelle reti cellulari commerciali mentre l’Inter-Segment Handoff, che sarà oggetto di discussione in seguito, non è attualmente molto utilizzato. Per essere eseguito, il processo di handoff richiede innanzitutto la conoscenza dello stato dei link radio ed eventualmente la possibilità di prevedere come evolveranno in futuro. La conoscenza dello stato delle connessioni può permettere di effettuare delle scelte e quindi di eseguire il passaggio della connessione da un link ad un altro reputato più conveniente. Da ciò si evince che il processo si può pensare divisibile in tre fasi: • una fase di Information Gathering, nella quale vengono raccolte informazioni sulla qualità radio dei segmenti d’accesso; • una fase di Decision, in cui sulla base delle misure raccolte si decide se è necessario eseguire l’handoff, cioè spostare la comunicazione dal segmento “corrente” ad un altro dei segmenti disponibili; • una fase di Execution : una volta presa la decisione viene stabilita una nuova connessione sul segmento scelto e la vecchia connessione viene rilasciata. La qualità del processo di handoff dipende molto da come e con che cura vengono eseguite queste fasi: in particolare la fase di Information Gathering presuppone una scelta attenta dei parametri radio da considerare ed altrettanta 71 Configurazione di nodi wireless con supporto della qualità del servizio importanza è data all’interpretazione di tali parametri. 4.2.1 Strategie di attivazione dell’handoff L’attivazione del processo di handoff può avvenire per varie ragioni: la prima è il mero spostamento di un utente da una zona di copertura ad un’altra ma può essere anche generato a causa della degradazione del segnale radio e può essere attivato da procedure di gestione della rete. Di seguito si riportano le diverse condizioni che possono attivare il processo di handoff: • le variazioni dei link radio percepiti possono determinare la necessità di eseguire l’handoff; ad esempio se il livello del segnale radio ricevuto in una certa zona diminuisce troppo, significa che verosimilmente stiamo uscendo da questa zona di copertura e quindi si rende necessario il trasferimento delle connessioni su un altro link più affidabile; • la necessità di eseguire un cambio di segmento può nascere anche da condizioni della rete fissa; ad esempio se la rete attuale è congestionata può essere conveniente spostare le connessioni su un segmento più scarico; • non tutti i segmenti wireless sono in grado di assicurare la stessa qualità del servizio e quindi possono essere adatti o meno ad essere usati per determinate applicazioni per cui anche l’utente, richiedendo un servizio particolare, può determinare la necessità di spostare le sue connessioni su un segmento piuttosto che su un altro; • un’altra motivazione per eseguire un handoff è quella di prevedere degli eventi; ad esempio, conoscendo l’attuale direzione e posizione – dati 72 Configurazione di nodi wireless con supporto della qualità del servizio facilmente ottenibili utilizzando un sistema GPS (Global Positioning System) - e conoscendo “l’ambiente” si può sapere in anticipo se il terminale mobile sta uscendo dalla zona di copertura del segmento nel quale si trova in un determinato momento e quindi attivare la procedura di handoff. 4.2.2 Schemi di controllo dell’handoff Esistono diverse modalità di controllo dell’handoff che si differenziano le une dalle altre per la quantità di segnalazione, per le prestazioni e per la complessità richiesta agli apparati della rete o del terminale mobile. Di seguito si riporta uno schema delle differenti strategie. Handoff Schema Controllo Handoff Handoff Controllato Da Rete Handoff Controllato Da Mobile Schema Attivazione Connessione Handoff Assistito Da Rete Handoff Assistito Da Mobile Handoff Verso Dietro Schema Trasferiment o Handoff Verso Avanti Switched Diversity Soft Handoff Hard Handoff Signalling Diversity Combined Diversity Schema 4.1: Strategie di handoff Si vede che esistono diverse metodologie di controllo dell’handoff che si basano su chi esegue il controllo del link radio e su chi esegue la decisione. 73 Configurazione di nodi wireless con supporto della qualità del servizio Si possono distinguere quattro schemi di controllo dell’handoff. 4.2.2.1 Mobile Controlled Handoff (MCHO) Lo schema di controllo MCHO prevede che il terminale mobile esegua tutte le azioni; ossia è il terminale mobile ad effettuare le misure sui diversi segmenti wireless ed in base a queste è sempre il terminale mobile a prendere la decisione di effettuare l’handoff; in questo modo otteniamo che la segnalazione tra la rete e il terminale mobile relativa all’handoff è praticamente nulla. Il lato negativo di questo schema è che le decisioni sono prese considerando lo stato di un solo link radio, ovvero quello detto downlink, e non viene considerato l’altro capo della connessione, il cosiddetto uplink, che potrebbe essere influenzato da fenomeni di shadowing e di fading. Inoltre, questo schema comporta una maggiore complessità del terminale mobile. Utilizzando questo schema si ottiene un handoff molto veloce; questo metodo è utilizzato dal Digital Enhanced Cordless Telecommunications (DECT) che presenta tempi di handoff compresi trai 100 e i 500 ms. 4.2.2.2 Network Controlled Handoff (NCHO) Questo schema di controllo prevede che la rete si occupi sia di acquisire le informazioni relative ai segnali radio, sia di prendere la decisione di effettuare un handoff. Questo metodo permette di avere un basso signalling tra rete e il terminale e permette di semplificare notevolmente i terminali mobili dato che il carico elaborativo per quanto riguarda l’handoff, è tutto 74 Configurazione di nodi wireless con supporto della qualità del servizio concentrato sulla rete fissa. Un limite è nel fatto che basando le decisioni sulle sole misure di segnale in uplink non si riesce ad un quadro completo dei link radio e quindi si possono prendere decisioni poco affidabili. Altro problema è la lentezza dell’algoritmo: infatti la rete corrente non ha la capacità di misurare le risorse radio delle altre reti d’accesso e quindi le procedure di handoff richiedono un notevole volume di segnalazione tra la rete corrente e le altre reti. 4.2.2.3 Mobile Assisted Handoff (MAHO) In questo schema la decisione è presa solo dalla rete ma le misure sui link radio sono effettuate da entrambe le entità: la rete effettua misure sull’ uplink e il terminale mobile sul downlink; queste vengono mandate al nodo di rete per essere processate. La frequenza con cui il terminale mobile effettua le misure sul link è molto importante perché una frequenza troppo bassa può fornire dati obsoleti, mentre una frequenza troppo alta può creare un traffico di segnalazione troppo elevato rispetto al traffico dati utente e quindi ridurre le prestazioni della rete. Questo schema è affidabile anche se non molto veloce e presenta una complessità modesta per il terminale mobile ma alta per il nodo di rete. Una rete che utilizza questo schema è la GSM 75 Configurazione di nodi wireless con supporto della qualità del servizio 5.2.2.4 Network Assisted Handoff (NAHO) In questo schema la decisione è presa solo dal terminale mobile ma le misure sui link radio sono effettuate da entrambe le entità: la rete effettua misure sull’ uplink e il terminale mobile sul downlink; le misure effettuate dalla rete devono essere trasmesse al terminale mobile con opportuni messaggi di segnalazione. Lo schema proposto è molto affidabile e veloce dato che le decisioni sono prese solo dal terminale mobile; ma come nel caso MAHO, si genera un traffico di signalling abbastanza pesante ed una elevata complessità del terminale mobile. La tabella seguente riassume le principali caratteristiche degli schemi di controllo visti. Schema MCHO NCHO MAHO NAHO Centralizzato Centralizzato Decentralizzato Decentralizzato Alta Bassa Moderata Alta Veloce Lento Lento Veloce Dimensione del signalling Contenuta Contenuta Alta Alta Affidabilità Moderata Moderata Alta Alta Processo di handoff Complessità del terminale Velocità dell’handoff Tabella 4.1: Confronto tra gli schemi di handoff 76 Configurazione di nodi wireless con supporto della qualità del servizio 4.2.3 Schemi di attivazione della connessione Per avviare o trasferire una connessione è necessario uno scambio di segnalazione tra il terminale mobile e la rete. Nel caso di un trasferimento di connessione la segnalazione può essere instradata sul nuovo canale oppure sul vecchio canale che dovrà in seguito essere rilasciato. Otteniamo quindi due metodi: • il metodo Backward Handoff che utilizza il vecchio canale di comunicazione per scambiare la segnalazione con la rete; questo metodo non è molto affidabile perché se il vecchio link deve essere abbandonato a causa di instabilità, non vi è assicurazione che la procedura di signalling vada a buon fine prima della caduta del link provocando in tal caso la perdita delle connessioni aperte; • il metodo Forward Handoff prevede di utilizzare il nuovo link per scambiare la segnalazione con la rete; in tal caso anche la caduta improvvisa del vecchio link non influenza il completamento della procedura e quindi il trasferimento delle connessioni sul nuovo segmento. 4.2.4 Schemi di trasferimento della connessione Il trasferimento di una connessione da un link ad un altro può essere eseguito in diversi modi; la classificazione tiene conto di come vengono gestite le risorse radio e del modo in cui si instrada la segnalazione. Si individuano tre categorie principali: • un primo metodo, il Soft Handoff , si presenta quando in corrispondenza dell’handoff, le risorse radio relative al vecchio link vengono rilasciate 77 Configurazione di nodi wireless con supporto della qualità del servizio solo quando il nuovo link è attivo; questo metodo permette di eseguire un handoff completamente trasparente all’utente. In relazione a come viene trasferito il signalling, nel Soft Handoff si distinguono due casi: o se la segnalazione passa su uno solo dei link attivi si parla di Switched Diversity o se la segnalazione passa su entrambi i link contemporaneamente si parla di Combined Diversity; La realizzazione del Soft Handoff presenta molti problemi legati alla sincronizzazione della segnalazione nel caso di handoff tra link eterogenei. Una soluzione è data dalla metodologia Signalling Diversity: con questo sistema per la segnalazione viene creato un canale apposta che fa coesistere insieme il vecchio ed il nuovo link; su questo canale viaggia la segnalazione necessaria ad istaurare una nuova connessione e a trasferire i flussi dati utente, in modo che tutto sia trasparente all’utente stesso, e quella necessaria al rilascio della connessione abbandonata; • un altro metodo è l’Hard Handoff: si verifica quando il vecchio link viene rilasciato prima che il nuovo venga attivato; in questo caso lo spostamento del punto di accesso, da una rete all’altra provoca l’interruzione del servizio. La rete GPRS adotta algoritmi di Hard handoff. 4.2.5 L’handoff a livello Rete Fino ad ora si è discusso dell’handoff dal punto di vista metodologico ed 78 Configurazione di nodi wireless con supporto della qualità del servizio architetturale e si è parlato di connessioni e di segmenti wireless eterogenei; ora analizzeremo come si instaura una connessione e come si può trasferire una connessione attiva da un segmento wireless ad un altro. 4.2.5.1 Il Protocollo IP e gli handoff Il protocollo di rete più diffuso è senza dubbio l’IP (Internet Protocol); esso è il protocollo principale del livello 3 dell’architettura TCP/IP [21]. È un protocollo semplice, non connesso e non affidabile cioè non garantisce che l’informazione spedita arrivi a destinazione; il suo compito principale è instradare i messaggi sulla rete. La comunicazione tra due host attraverso una rete generica formata da host e router, è eseguita tramite lo scambio di pacchetti; questi pacchetti contengono l’indirizzo IP della sorgente e l’indirizzo IP del destinatario. Il singolo pacchetto si trova ad attraversare durante il suo percorso molti router che devono essere in grado di sapere come instradare il pacchetto. Questa decisione è presa in relazione alla “tabella di routing” che ogni router possiede e che contiene le associazioni tra rete di destinazione e di interfaccia a cui devono essere inviati pacchetti. Partendo dall’host sorgente, ogni nodo della rete sa a quale nodo vicino deve essere instradato il pacchetto per raggiungere la destinazione. Questo metodo, prevede che ogni router mantenga una completa tipologia della rete in modo da conoscere la destinazione di ogni singola sottorete; questo può andare bene per reti limitate, ma quando si considerano reti di decine di migliaia di nodi, diventa indispensabile ricorrere ad un’architettura di tipo gerarchico; si pensa così di dividere la rete in varie Regioni. Quindi un utente comunica con tutti gli altri della rete attraverso il suo indirizzo 79 Configurazione di nodi wireless con supporto della qualità del servizio IP. Se questo host vuole muoversi deve utilizzare una connessione wireless con la rete e se questa connessione non è grado di servirlo in tutti i suoi movimenti deve dotarsi di più connessioni senza filo di tipo eterogeneo. Un terminale del genere dovrà perciò avere un’interfaccia per ogni rete wireless a cui collegato. Ogni interfaccia ha caratteristiche dipendenti dal link radio considerato ma queste differenze sono limitate dal livello fisico e da quello Data Link; esse sono trasparenti rispetto al livello rete: ad ogni interfaccia è quindi assegnato un indirizzo IP compatibile con la sottorete del relativo segmento wireless. Un terminale siffatto sarebbe quindi raggiungibile da una rete differente utilizzando ogni volta un indirizzo IP differente e questo di fatto lo renderebbe inutilizzabile! La soluzione a questo problema semplice ed è ottenibile utilizzando il protocollo Mobile IP di cui si parlerà ampiamente in seguito. Il problema dell’handoff, limitatamente all’esecuzione dello stesso, può essere risolto impiegando il protocollo Mobile IP e modificando le tabelle di routing del terminale. 80 Configurazione di nodi wireless con supporto della qualità del servizio 4.3 Il protocollo Mobile IP L’importanza della mobilità nelle reti informatiche cresce di pari passo allo sviluppo delle tecnologie di comunicazione wireless ed alla diffusione dei mezzi di comunicazione portatili quali laptop, telefoni cellulari, computer palmari. Questa richiesta di mobilità di comunicazione ovunque e comunque e di interconnessione globale si basa su reti terrestri preesistenti, collegate tra loro con mezzi diversi e gestite con politiche diverse. Internet invece utilizza come protocollo di rete il protocollo IP. Quando l’IP fu implementato, non si prese in considerazione il problema della mobilità dei terminali poiché date le dimensioni dei computer dell’epoca, essi erano necessariamente fissi. Quando un terminale di rete si sposta da un luogo ad un altro, vale a dire se non si trova più connesso al link corrispondente al prefisso di rete del suo indirizzo IP, il protocollo IP prevede che il nodo sia considerato come non più raggiungibile; vale a dire che i pacchetti spediti a quel nodo non saranno più giudicati consegnabili e saranno scartati. Per fare in modo che il nodo possa riprendere a comunicare dalla sua nuova locazione, è necessario modificare le tabelle di routing di quei nodi che si occupano dell’instradamento dei pacchetti indirizzati verso quel determinato nodo mobile. 81 Configurazione di nodi wireless con supporto della qualità del servizio Questa soluzione presenta notevoli problemi di scalabilità: ogni qualvolta un terminale mobile si sposta, bisogna modificare la configurazione di tutti i router attraversati dal flusso di pacchetti diretti quel terminale e ciò deve avvenire per ogni singolo utente mobile che si sposta. Un’altra soluzione al problema sarebbe quella di cambiare l’indirizzo IP del nodo mobile e renderlo compatibile con la rete corrente. Anche questa soluzione presenta dei problemi: cambiare l’indirizzo IP significa chiudere tutte le connessioni attive nel momento del passaggio da una rete all’altra; e poi cambiando l’indirizzo IP al nodo mobile, bisognerà aggiornare tutti gli altri nodi che vogliono comunicare con lui. Una soluzione efficiente e semplice al problema è data dall’introduzione di un nuovo protocollo basato su IP: il Mobile IP. Il Mobile IP (Mobile Internet Protocol) [22] è stato sviluppato nel 1996 per assicurare la mobilità di un utente: rappresenta un’estensione del protocollo di rete IP pensata per permettere proprio la mobilità di un utente; è una soluzione scalabile, robusta e sicura e permette ai nodi mobili, anche durante lo spostamento da un link all’altro, di mantenere attive tutte le comunicazioni in corso. In seguito si vedrà che l’utilizzo di tale questo protocollo è sconsigliato nei casi in cui la rete da gestire sia molto estesa e verrà proposta una soluzione per aggirare il problema utilizzando un altro protocollo, il Cellular IP, che sarà di supporto al Mobile IP. L’utilizzo del protocollo Mobile IP è trasparente ai protocolli di livello superiore ed è altrettanto trasparente nodi e ai router attraversati dai flussi dati. Il Mobile IP è un protocollo semplice, che richiede pochi messaggi di signalling, 82 Configurazione di nodi wireless con supporto della qualità del servizio riservando in tal modo poca banda al protocollo stesso: questo è utile quando si utilizza, come accade spesso per i sistemi mobili, un link di connessione wireless caratterizzato da una banda limitata. 4.3.1 Il funzionamento di Mobile IP Il problema discusso prima che ha richiesto l’ampliamento del protocollo IP è che un nodo, quando si sposta, non può utilizzare il suo vecchio IP Address in quanto questo, collegato ad una nuova rete, diventa irraggiungibile. Con il protocollo Mobile IP si è pensato di associare ad ogni utente mobile due indirizzi IP, uno della rete originaria detta home network ed uno della rete correntemente utilizzata, chiamata foreign network. I due indirizzi IP assegnati al modo mobile sono: • home-address: rappresenta l’indirizzo assegnato al nodo mobile dalla rete di origine, quella che è stata chiamata la home network; questo indirizzo è stabilmente attribuito al terminale mobile; • care-of-address: rappresenta l’indirizzo temporaneo assegnato al nodo mobile dalla rete che lo ospita, ovvero dalla foreign network. Il protocollo Mobile IP introduce delle entità con ben precise funzionalità e caratteristiche: • il Mobile node rappresenta il terminale che si muove; questo terminale deve quindi poter cambiare il punto di connessione alla rete pur mantenendo il suo il suo indirizzo IP - cioè l’home address - e l’accesso alle risorse; esso deve anche continuare ad essere raggiungibile; • l’Home Agent rappresenta un nodo ben determinato della home network dell’utente mobile: le sue funzionalità sono essenzialmente di routing e di 83 Configurazione di nodi wireless con supporto della qualità del servizio instradamento dei pacchetti al terminale mobile quando questi è lontano dalla sua home network. La Home Agent mantiene quindi le giuste informazioni sulla posizione corrente del nodo mobile; • il Foreign Agent rappresenta un router della rete ospite, cioè della foreign network, e la sua funzione è assegnare il care-of-address e consegnare i pacchetti al nodo mobile spediti dalla Home Agent. Il protocollo Mobile IP risolve il problema della mobilità introducendo un’entità router, l’Home Agent, che tiene traccia della posizione dell’utente mobile ed è quindi in grado, tramite un Tunnelling di recapitare i pacchetti a questi destinati. L’applicazione del protocollo Mobile IP prevede una serie di messaggi scambiati tra le diverse entità: • Foreign Agent e Home Agent (chiamati anche Mobility Agent) pubblicizzano la loro presenza attraverso messaggi di Agent Advertisement; un nodo mobile può sollecitare l’emissione di tali informazioni attraverso messaggi di Agent Solicitation; • il nodo mobile ricevendo un messaggio di Agent Advertisement determina se si trova nella sua home network o in una foreign network; • se il nodo mobile si ricollega alla sua home network, ossia abbandona una foreign network e torna nella sua rete primaria, allora si deregistra con il suo Home Agent attraverso i messaggi di Registration Request e Registration Reply; 84 Configurazione di nodi wireless con supporto della qualità del servizio • se il nodo mobile si collega ad una nuova foreign network, gli viene assegnato un nuovo care-of-address; l’assegnazione può essere ottenuta mediante un advertisement spedito da un Foreign Agent (che verrà chiamato Foreign Agent care-of-address) oppure tramite protocolli tipo DHCP (co-located care-of-address). 85 Configurazione di nodi wireless con supporto della qualità del servizio • quando il nodo mobile ha ottenuto un nuovo care-of-address deve comunicarlo all’Home Agent. La registrazione avviene attraverso messaggi di Registration Request e Registration Reply scambiati direttamente con l’Home Agent oppure tramite il Foreign Agent: • l’Home Agent, una volta registrato il care-of-address di un nodo mobile, è in grado di intercettare i pacchetti ad esso destinati, cioè destinati all’home address del nodo mobile, e mediante un tunnelling può reinstradarli da questo verso l’indirizzo care-of-address del nodo mobile. Il punto di uscita del tunnel può essere il nodo mobile o il Foreign Agent; 86 Configurazione di nodi wireless con supporto della qualità del servizio • i pacchetti spediti dal nodo mobile sono consegnati alla destinazione (il cosiddetto correspondent node) usando i meccanismi standard di routing; 87 Configurazione di nodi wireless con supporto della qualità del servizio Quindi il traffico diretto all’utente mobile e proveniente da un nodo qualsiasi della rete, cioè dal correspondent node, raggiunge la Home Network, viene intercettato dall’Home Agent che lo incapsula e lo instrada verso il care-ofaddress attuale del nodo mobile. I pacchetti spediti dal nodo mobile sono direttamente inviati al correspondent node. Tutto il meccanismo anzidetto si basa sulla capacità del nodo mobile di determinare, tramite processi di Agent Discovery, il passaggio della sua connessione da una rete ad una altra; questo permette al nodo mobile di ottenere il care-of-address e di registrarlo presso il suo Home Agent. 88 Configurazione di nodi wireless con supporto della qualità del servizio 4.3.2 Meccanismi di Agent Discovery Il modo con cui il nodo mobile riesce a capire se è connesso alla sua home network oppure è collegato ad una foreign network o se si è spostato su un’altra foreign network, è l’Agent Discovery [23]. Il protocollo Mobile IP per realizzare il meccanismo di Agent Discovery utilizza i messaggi ICMP di Router Discovery ed amplia questi messaggi con delle estensioni. Queste estensioni sono formate da tre campi: il tipo di estensione, la lunghezza ed un campo contenente l’informazione vera e propria. I messaggi utilizzati sono: Agent Advertisement ed Agent Solicitation. Gli Agent Advertisement sono messaggi emessi dai Mobility Agent, sia da Home Agent che da Foreign Agent, per informare i terminali mobili della loro presenza. Un Agent Advertisement è un ICMP Router Advertisement esteso con l’estensione Mobility Agent Advertisement. L’estensione Mobility Agent Advertisement segue i campi dell’ICMP Router Advertisement e contiene: • il Type di messaggio, che in questo caso vale 16; • il Registration Lifetime che rappresenta il massimo tempo (espresso in secondi) che questo agent può accettare nei messaggi di Registration Request; il nodo mobile utilizza questo valore per la richiesta di registrazione; • i campi che indicano che tipo di Agent, Foreign o Home, che ha emesso il messaggio ed il tipo di compressione ed encapsulation; • il care-of-address che fornisce l’agent. Quando il nodo mobile si sposta in una foreign network riceve un messaggio di Agent Advertisement da un Foreign Agent, se questo è presente: 89 Configurazione di nodi wireless con supporto della qualità del servizio Il messaggio di Agent Advertisement ha nell’header IP come indirizzo sorgente l’indirizzo del Foreign Agent, come indirizzo di destinazione un indirizzo broadcast o multicast e il campo Protocol impostato a 1 (che corrisponde al messaggio ICMP). L’ICMP Router Advertisement che segue l’header IP, ha il campo Type posto a 9 per identificare il messaggio ICMP come un advertisement ed il campo lifetime impostato ad un valore che indica con quale frequenza il Foreign Agent spedisce gli advertisement. Infine l’estensione Mobility Agent Advertisement, che segue l’ICMP Router Advertisement, contiene il care-of-address che il nodo mobile dovrà utilizzare. Gli Agent Solicitation sono messaggi emessi dai nodi mobili per sollecitare gli Agent Advertisement; sono identici ai messaggi ICMP Router Solicitation (con la sola restrizione che il campo Time To Live del pacchetto IP deve essere posto a 1). Il valore 10 per il campo Type dell’ICMP Router Solicitation distingue il messaggio di sollecitazione dagli altri tipi di messaggi ICMP. 4.3.3 Cambiamento di rete Quando un nodo mobile spostandosi cambia rete di accesso, deve riuscire a 90 Configurazione di nodi wireless con supporto della qualità del servizio ottenere al più presto le informazioni indirizzate ad esso. La sollecitudine con cui si riesce ad attivare le operazioni opportune, rappresenta uno dei parametri per quantizzare il livello di prestazioni della rete. Ci sono due meccanismi attraverso i quali un nodo mobile può capire se ha cambiato rete di acceso: il primo è basato sul campo lifetime dell’ICMP Router Advertisement: un nodo mobile monitorizza i messaggi di Agent Advertisement che riceve da un Agent e controlla se sono cadenzati di un tempo lifetime; se non riceve alcun Advertisement dallo stesso Agent entro il lifetime specificato allora può presumere di aver cambiato collegamento, quindi deve cercare un altro Mobile Agent a cui registrarsi. Il secondo metodo consiste nell’analizzare tutti gli Agent Advertisement e confrontare l’indirizzo di rete del mittente con il corrente care-of-address che è utilizzato dal nodo mobile: se questi indirizzi sono differenti significa che i due Agent Advertisement sono stati ricevuti su differenti link e quindi che il nodo mobile ha cambiato posizione. 4.3.4 Procedura di registrazione presso l’Home Agent Una volta ottenuto il care-of-address da un foreign agent o da un DHCP, se un nodo mobile connesso ad una foreign network vuole essere raggiungibile deve registrarsi presso il suo Home Agent o meglio registrare il nuovo care-ofaddress. Il nodo mobile deve anche rinnovare la registrazione prima dello scadere del lifetime altrimenti la Home Agent lo elimina dalla lista dei terminali mobili attivi rendendolo irraggiungibile. Il nodo mobile si registra attraverso l’invio un messaggio di Registration Request, direttamente presso il suo Home Agent se ha ottenuto il care-ofaddress da un DHCP oppure invia la richiesta al Foreign Agent che gli 91 Configurazione di nodi wireless con supporto della qualità del servizio ha fornito l’indirizzo IP. Il Foreign Agent analizza la richiesta e la invia al corrispondente Home Agent. In presenza di una Registration Request, l’Home Agent controlla la richiesta e risponde con Registration Reply. Il messaggio Registration Request è contenuto in un pacchetto UDP ed include: • il Type del messaggio, che in questo caso vale 1; • un campo che specifica il Simultaneous Bindings: il nodo mobile richiede all’Home Agent di mantenere la precedente (o le precedenti) binding table; in questo modo restano validi tutti i care-of-address precedentemente utilizzati: questa funzionalità è molto utile per implementare meccanismi di Soft Handoff; • il lifetime che rappresenta il numero dei secondi rimanenti prima che la registrazione sia considerata scaduta; • il care-of-address, cioè l’indirizzo IP del punto di uscita del tunnel; nel caso particolare in cui il nodo mobile torni nella sua home network e cioè desideri deregistrare tutti i suoi care-of-address, questo campo deve essere riempito con l’home address che fornisce l’Agent; • l’Home Address, cioè l’indirizzo IP del nodo mobile; • l’Home Agent, cioè l’indirizzo IP dell’Home Agent del nodo mobile; • l’Identification che è un parametro costruito dal nodo mobile per il matching tra Registration Request e Registration Reply e per salvaguardarsi dagli attacchi esterni. Il messaggio di Registration Reply contiene tutte le informazioni necessarie per informare il nodo mobile sullo stato della sua richiesta di registrazione. Il messaggio di Registration Reply segue l’header UDP e contiene: • il Type di messaggio, in questo caso vale 3; • un Code che indica il risultato della Registration Request; 92 Configurazione di nodi wireless con supporto della qualità del servizio • l’Home Agent, cioè indirizzo IP dell’Home Agent del nodo mobile; • l’Identification che è un parametro usato per il matching tra Registration Request e Registration Reply, e per salvaguardarsi dagli attacchi esterni. Il campo Identification presente sia nel messaggio di Registration Request sia in quello di Registration Reply è legato alla gestione di meccanismi di sicurezza. Nella registrazione gli scenari possibili sono tre: • il nodo mobile si registra usando un foreign care-of-address; • il nodo mobile si registra usando un co-located care-of-address; • il nodo mobile si deregistra perché è di ritorno sulla sua home network. In ogni caso il nodo mobile spedisce un messaggio di Registration Request che è formato da un header IP, da un header UDP, dalla vera e propria Registration Request e dalla Mobile Home Authentication. L’Home Agent, una volta ricevuto una Registration Request, spedisce un messaggio di Registration Reply composto da un header IP, un header UDP, dal messaggio Registration Reply e dalla Mobile-Home Authentication. Il nodo mobile invia la Registration Request al Foreign Agent: questa richiesta di registrazione ha come Source Address dell’header IP l’home address del nodo mobile e come Destination Address, l’indirizzo del Foreign Agent; nella Registration Request che segue l’header UDP, i campi lifetime e care-of-address includono gli stessi valori contenuti nel messaggio di Agent Advertisement spedito dal Foreign Agent e diretto al nodo mobile. 93 Configurazione di nodi wireless con supporto della qualità del servizio Il Foreign Agent ricevuta la richiesta di registrazione spedisce un pacchetto all’Home Agent. Questa Registration Request ha come Source Address dell’header IP l’indirizzo del Foreign Agent, mentre il Destination Address è l’indirizzo dell’Home Agent. Il resto del messaggio è identico a quello prodotto dal nodo mobile. Questo messaggio raggiunge l’Home Agent, viene controllato e quindi avviene l’aggiornamento della binding table con una riga contenente la tripla Home Address, care-of-address, lifetime. A questo punto l’Home Agent genera un messaggio di Registration Reply diretto al Foreign Agent e quest’ultimo lo rigira al nodo mobile. 94 Configurazione di nodi wireless con supporto della qualità del servizio Se la Foreign Network non possiede un Foreign Agent, lo scambio di messaggi è direttamente tra il nodo mobile e Home Agent. Il nodo mobile ottiene il co- located care-of-address da un DHCP. La registrazione, analogamente al caso precedente, inizia con un messaggio di Registration Request dal nodo mobile che contiene l’header IP il cui Source Address è riempito con il care-of-address assegnato al nodo e il Destination Address è l’indirizzo dell’Home Agent. Inoltre nella Registration Request il campo lifetime è impostato arbitrariamente dal nodo mobile 95 Configurazione di nodi wireless con supporto della qualità del servizio La Registration Request ha come Home Source Address l’home address del nodo mobile e come Destination Address l’indirizzo IP dell’Home Agent. II campo lifetime è impostato a 0 indicando in tal modo all’Home Agent il desiderio del nodo mobile di deregistrarsi. Il campo care-of-address è riempito con l’home address del nodo mobile. Quando l’Home Agent riceve la Registration Request, aggiorna la binding table e risponde al nodo mobile con un messaggio di Registration Reply inserendo nel campo Lifetime il valore 0. 4.3.5 L’IP Mobility ed i messaggi ARP Nelle reti IP per conoscere gli indirizzi di livello Data Link di un host della stessa sottorete, conoscendo l’indirizzo IP, si utilizza il protocollo ARP (Address Resolution Protocol) [24]. Nel caso dell’IP Mobility il nodo mobile è connesso ad un’altra network e quindi non è in grado di rispondere ai messaggi ARP, quindi è l’Home Agent a farsi carico di rispondere con il proprio indirizzo MAC a tali richieste. Quindi l’Home Agent a tutti gli effetti si sostituisce al nodo mobile e per fare questo utilizza dei messaggi ARP appositi: • Proxy ARP: è un particolare ARP Reply inviato a fronte di un ARP Request indirizzato ad altro nodo incapace di rispondere; • Gratuitous ARP: è un ARP Request o ARP Reply usato per forzare tutte le macchine della sottorete all’aggiornamento delle loro tabelle ARP. Quando l’Home Agent intercetta un ARP Request diretta ad un nodo mobile che gestisce, risponde utilizzando un Proxy ARP indicando come indirizzo di livello Data Link quello associato alla sua interfaccia di rete. 96 Configurazione di nodi wireless con supporto della qualità del servizio Quando un nodo mobile si registra al suo Home Agent con un care-of-address, oltre alle già citate procedure di registrazione, invia in broadcast nella sottorete un messaggio di Gratuitous ARP per costringere tutti i nodi della sottorete ad aggiornare le loro tabelle ARP. Le tabelle ARP dei nodi della home network assoceranno l’home address del nodo mobile con l’indirizzo di livello data link dell’Home Agent. Quando un nodo mobile torna nella sua home network, spedisce un messaggio di Gratuitous ARP quindi si deregistra con il suo Home Agent. A deregistrazione completata l’Home Agent invia a sua volta un messaggio Gratuitous ARP; in tal modo tutti i nodi presenti nella home network aggiorneranno le loro tabelle ARP associando all’home address l’indirizzo di livello Data Link del nodo mobile. 97 Configurazione di nodi wireless con supporto della qualità del servizio 4.4 Cellular IP: un approccio all’Host Mobility Questo documento presenta un nuovo modo di vedere Internet dal punto di vista di un utente mobile. Rimarcando la separazione che con il tempo è andata quasi dissolvendosi tra aree locali e aree estese (cioè tra LAN e WAN), le prestazioni di alcuni protocolli di connessione mobile proposti in passato (vedi Mobile IP) possono essere significativamente migliorate. Cellular IP è un protocollo leggero e allo stesso tempo robusto, ottimizzato per supportare mobilità in aree locali e per interagire efficientemente con Mobile IP fornendone una sorta di integrazione per fornire il supporto per la mobilità in aree estese. Esso mostra enormi progressi rispetto alle altre proposte di connessione mobile soprattutto per scenari dove gli utenti si muovono e migrano frequentemente da una rete ad un’altra, situazione questa molto più vicina ad una regola che ad un’eccezione in una realtà dove gli accessi wireless ad Internet diventano sempre più frequenti nel tempo e nello spazio. Questo protocollo mantiene delle cache distribuite per tutti i meccanismi di gestione delle locazioni e del routing. Queste cache rimangono in stato di inattività (o stato idle) per ogni utente ma vengono usate per determinare velocemente e con efficienza gli utenti “idle” che vogliono impegnarsi per una comunicazione attiva. 98 Configurazione di nodi wireless con supporto della qualità del servizio Questo approccio è vantaggioso perché si possono allocare tanti clienti in una rete senza sovraccaricare il sistema di gestione delle locazioni. Altre cache dette di routing restano nello stato “attivo” nell’area dove è fornita la connessione ma viene fatto un refresh dinamico dello stato di routing per quegli utenti attivi che richiedono un handoff. In questo modo, gli algoritmi distribuiti di gestione delle locazioni e del routing hanno un’implementazione semplice e di basso costo e non sovraccaricano Internet giacché non richiedono pacchetti in un nuovo formato né altra allocazione di spazio oltre a quella normalmente richiesta dal protocollo IP. 4.4.1 Introduzione a Cellular IP Data la dimensione sempre più ridotta dei computer portatili e la connessione a una rete globale pressoché onnipresente, la domanda di fornire un accesso alla rete agli utenti mobili è sempre più rapidamente in crescita. La difficoltà di base della maggior parte dei protocolli che offrono questo tipo di connessione [25][26][27][28] risiede nella natura dell’indirizzo IP che ha un duplice significato: esso è infatti sia un identificativo univoco dell’utente (che perciò dovrebbe essere mantenuto costante indipendentemente dalla locazione), sia un parametro che identifica la posizione e che quindi deve cambiare così come l’utente si sposta [29]. Questi sono due requisiti che vanno in competizione tra loro e che il protocollo di connessione mobile dovrebbe risolvere efficientemente [29][30]. Il problema fondamentale da risolvere è la separazione di questi due ruoli e allo stesso tempo si deve rendere disponibile una mappa di identificativi di utenti e delle loro relative informazioni di localizzazione. 99 Configurazione di nodi wireless con supporto della qualità del servizio Immaginiamo quindi un utente mobile in uno scenario in cui la connessione a Internet avviene tipicamente in maniera wireless - anche se oggi questo è ancora un’eccezione. Pensiamo quindi a un ambiente in cui sia presente un gran numero di utenti mobili che si muovono e che spesso migrano da una zona ad un’altra durante il trasferimento di dati e che si aspettano che la rete gestisca questi handoff con il minimo disturbo sulla sessione. Anche se è poco probabile (e poco prudente!) che si legga un testo o si guardi un video mentre si guida o si cammina, si potrebbe comunque desiderare di scaricare dati o di parlare a telefono sfruttando Internet mentre si è in movimento. Con la diffusione di computer portatili e palmari sempre più piccoli ed economicamente convenienti, la visione di una rete globale di computer diventa una realtà. Nasce così l’esigenza di un accesso wireless a Internet economico e onnipresente. Si potrebbe addirittura pensare che in tale realtà la popolarità dei telefoni cellulari possa essere offuscata dall’uso di palmari che supportino Internet insieme ad una vasta gamma di servizi che si adattino perfettamente ad ogni situazione senza il minimo intervento da parte dell’utente, un po’ come avviene oggi per i telefonini. In altre parole si può pensare che telefonini e computer palmari evolveranno insieme verso un successore comune. Si può vedere [28] che in uno scenario simile Mobile IP non rappresenta una soluzione ottimale essendo meglio impiegato per mobilità di macro-livello dove gli utenti si muovono lentamente e poco frequentemente. Infatti ad ogni migrazione, Mobile IP prevede l’invio un messaggio di aggiornamento della locazione verso una stazione server detta home agent che potrebbe anche 100 Configurazione di nodi wireless con supporto della qualità del servizio trovarsi molto lontano: questo potrebbe da un lato avere effetti sulla latenza di handoff e dall’altro sovraccaricare una parte della rete Internet. Per sorpassare questa limitazione si introduce un approccio gerarchico della gestione della mobilità: la soluzione è un’architettura formata da due livelli: • un primo livello è composto da più reti locali con accesso wireless che gestiscono facilmente la mobilità locale; • un secondo livello comprende una grande rete Internet gestita da Mobile IP che vi fornisce un servizio di mobilità per l’area estesa. In questo caso una stazione home agent è informata del movimento di un host solamente quando questo si sposta da una rete di accesso ad un’altra mentre rimane all’oscuro degli spostamenti che effettuano gli host quando questi, pur movendosi, restano nella stessa area di accesso (figura 4.3). Figura 4.3: Compresenza di Celular IP e Mobile IP Il vantaggio principale di dividere la mobilità tra l’area locale e estesa sta proprio nel fatto che le home agent non hanno bisogno di essere informate circa gli spostamenti locali all’interno delle aree di accesso wireless e questo 101 Configurazione di nodi wireless con supporto della qualità del servizio diventa sempre più importante quando le celle diventano sempre più piccole, la frequenza delle migrazioni più alta e la popolazione degli host più estesa. Gestendo localmente la maggior parte degli handoff, possiamo studiare metodi per renderli più veloci, limitare l’impatto che questi possono avere sulle sessioni attive e inoltre evitare il problema delle migrazioni verso stazioni home agent lontane. Un ulteriore beneficio dell’approccio architetturale gerarchico della mobilità sorge nel caso in cui un grande numero di utenti vuole spostarsi trasportando computer portatili che hanno bisogno di essere permanentemente connessi a Internet: questi utenti genererebbero frequenti messaggi di aggiornamento di locazione anche non essendo attivamente in fase di trasmissione di dati. La diminuzione della dimensione della singola cella porterebbe poi a un aumento dei messaggi di servizio e il traffico da questi generato potrebbe raggiungere un’entità paragonabile al traffico utile. Quindi per permettere la connessione a un gran numero di utenti, il protocollo di gestione della mobilità ha bisogno di uno schema di trasporto delle informazioni di locazione che sia semplice e che allo stesso tempo non sovraccarichi con traffico o processi la rete globale quando gli host sono in stato idle. Ci riferiremo a questa proprietà chiamandola connessione passiva leggera (cheap passive connectivity). Per questi obiettivi viene utilizzato Cellular IP, un protocollo di mobilità ottimizzato per reti ad accesso wireless con un gran numero di utenti. Il primo obiettivo che Cellular IP si prefigge è la semplicità: il fatto che un AP wireless di Cellular IP possa essere costituito da dispositivo un piccolo ed economico (è necessaria una sola BS per ogni ufficio o per ogni piano) rende 102 Configurazione di nodi wireless con supporto della qualità del servizio possibile un’applicazione per così dire “domestica”. D’altro canto Cellular IP può essere implementato anche sui classici router IP per permettere delle migrazioni più facili sui sistemi già installati e funzionanti. Un altro obiettivo chiave è la scalabilità: il sistema di gestione distribuito rende possibile l’uso dello stesso protocollo e degli stessi nodi topologici (che ricordiamo sono all’oscuro di ciò che inoltrano) sia in piccoli sistemi domestici, sia in aree molto estese, sia addirittura in sistemi eterogenei. Questo permette agli utenti di migrare liberamente e senza difficoltà tra aree con diverse caratteristiche: si può pensare di ottenere una connessione dagli operatori locali di telefonia cellulare che danno il servizio di Cellular IP e un utente può ricevere una banda ampia per scaricare dati o per usare VoIP (Voice over IP) mentre passeggia tranquillamente per strada e poi continuare a farlo usando sempre lo stesso protocollo quando entra in un ufficio o in un edificio in cui c’è una copertura wireless. Si può vedere che fornire trasparenza insieme ad un supporto della qualità del servizio indipendente dalla locazione non è un obiettivo semplice da ottenere per protocolli di mobilità che lavorano in scenari wireless [29]. Cellular IP aggira l’ostacolo fornendo scalabilità cioè la capacità di avere lo stesso protocollo in ambienti diversi ottenendo sempre lo stesso servizio. Questa proprietà inoltre permette ai gestori di rete di estendere la dimensione della zona di servizio quando la domanda cresce. Ciò risulta molto importante giacché la capacità globale dei sistemi wireless è determinata proprio dalla densità delle BS e può essere estesa installando nuove apparecchiature che portano con sé tutti i problemi relativi al costo. Un altro vantaggio nell’uso di Cellular IP è la sua completa compatibilità con il protocollo IP: non si richiede l’invio di pacchetti supplementari, non si 103 Configurazione di nodi wireless con supporto della qualità del servizio richiedono ulteriori incapsulamenti, non si richiede spazio extra per gli indirizzi. Il sistema di Cellular IP usa tre tipi di pacchetti di controllo che possono essere implementate come opzioni di IP perciò non c’è alcun bisogno di aggiornare il funzionamento dei regolari router IP. Nel paragrafo seguente si propone un approccio alternativo al problema della mobilità e lo paragona tale approccio al metodo di Cellular IP; nel paragrafo 3 si presenta un nuovo modello di rete ad accesso wireless; nel paragrafo 4 vengono analizzate nel dettaglio le caratteristiche di Cellular IP; nel quinto e sesto si discutono gli argomenti relativi all’implementazione. 4.4.2 Approccio alternativo alla gestione degli utenti mobili Una soluzione che richieda agli utenti mobili un processo di aggiornamento continuo, supporta portabilità ma non mobilità [29]. Il primo obiettivo quindi per un protocollo di mobilità è permettere all’utente di cambiare punto di accesso senza una riconfigurazione manuale. Questo requisito è fondamentale per la proprietà di trasparenza. Un utente potrebbe desiderare di spostarsi durante il trasferimento di dati effettuando così un cambio di punto di accesso mentre la connessione è attiva, operazione chiamata migrazione o handoff. Un’altra caratteristica importante per un protocollo che si occupa di utenza mobile è la gestione di questi handoff senza disturbi significativi alla trasmissione di dati. 104 Configurazione di nodi wireless con supporto della qualità del servizio Si può vedere [30] che molti protocolli per la gestione di utenti mobili, compreso il famoso IETF Mobile IP [31], possono essere considerati casi speciali di un’architettura “a due livelli di indirizzamento” perché un utente mobile è logicamente associato a due indirizzi IP: • un indirizzo detto home address assegnato dalla prima stazione (home agent) che è un identificatore dell’utente e che rimane sempre lo stesso; • un altro indirizzo relativo all’attuale punto di collegamento a Internet, dipendente perciò dalla posizione. Quest’architettura generalizzata comprende tre componenti fondamentali: • una Tabella di Locazioni (Local Directory) cioè un data base possibilmente distribuito che contiene i dati aggiornati relativi a ogni utente e ai suoi due indirizzi; • un’Unità di Traduzione degli Indirizzi (Address Translation Agent) che associa ad ogni utente l’indirizzo della destinazione dei pacchetti da esso generati gestendo le richieste sia della Local Directory, sia di altre cache locali; • un’Unità di Spedizione (Forwarding Agent) che assicura che i pacchetti che arrivano all’utente mobile hanno un campo con l’home address e uno con la destinazione finale. Anche se queste soluzioni, in particolare quella dell’IETF Mobile IP, raggiungono gli obiettivi di trasparenza operazionale e supporto degli handoff, sono in realtà ottimizzate per gli utenti che si muovono molto lentamente e diventano addirittura inefficienti nel caso di migrazioni frequenti [28]. Mobile IP richiede che la stazione home agent sia informata ogniqualvolta un suo utente si muova verso un altro agent. Durante la fase di aggiornamento che può durare non poco, alcuni utenti possono spostarsi e quindi i pacchetti a 105 Configurazione di nodi wireless con supporto della qualità del servizio questi destinati verranno inoltrati verso una destinazione sbagliata con conseguente disturbo per la trasmissione di dati. Analogamente, durante l’ottimizzazione del processo di instradamento [32][33], la trasmissione di dati sarà disturbata mentre il corrispondente host otterrà un nuova connessione. L’effetto di questi ritardi ovviamente cresce con l’aumento della frequenza di migrazione. Inoltre i messaggi di aggiornamento possono sovraccaricare sia Internet che la home agent quando un utente si muove anche se non sta attivamente trasferendo dati (stato idle). L’entità del sovraccarico è proporzionale al numero degli utenti mobili e non al traffico generato quindi si potrebbe venire a creare una situazione in cui un solo utente sia in trasmissione attiva ma comunque incontri una rete sovraccaricata da traffico di servizio. Come se non bastasse, questo problema paradossalmente cresce con lo sviluppo della mobilità perché la connessione deve essere onnipresente, le celle più piccole e gli handoff più frequenti. Per superare le limitazioni di Mobile IP, nasce un approccio di gestione della mobilità di tipo gerarchico [28]. Sono definiti quindi tre livelli di mobilità: • il livello di mobilità locale; • il livello di mobilità all’interno di un dominio amministrativo; • il livello di mobilità globale. Per ognuno di questi livelli viene proposto un protocollo di mobilità e Mobile IP viene associato al livello di mobilità globale. Cellular IP differisce da questo approccio per due aspetti importanti: • prima di tutto, invece di definire livelli gerarchici di mobilità, fornisce una 106 Configurazione di nodi wireless con supporto della qualità del servizio struttura che può scalare da sistemi di piccoli uffici fino ad aree molto estese. Infatti spesso queste aree possono trovarsi sovrapposte, per esempio un ufficio potrebbe avere la sua propria rete locale e nello stesso tempo essere all’interno di un campus e della sua relativa rete o in un un’area metropolitana; ognuna di queste reti o sottoreti potrebbe usare lo stesso protocollo di Cellular IP sebbene con un’impostazione diversa del dispositivo di gestione delle locazioni (ved. paragrafo 4); • in seconda istanza Cellular IP utilizza un efficiente schema della gestione e della ricerca delle locazioni che evita i problemi relativi al trasporto degli utenti in stato idle, ovvero riducendo il carico sulle reti ad accesso wireless. Questa caratteristica è necessaria per la proprietà di connessione passiva leggera che abbiamo identificato come un importante obiettivo per i futuri sistemi wireless basati su IP. Una tecnica familiare alla telefonia cellulare è basata su un trasporto “leggero” della posizione degli utenti mobili per poi zoomare su di essi quando c’è bisogno di una connessione attiva, cioè quando inoltrano o ricevono una chiamata. Per esempio nel sistema GSM (Global System for Mobile Communications) gli utenti non attivi (ovvero in stato idle) sono localizzati con una precisione molto bassa, si associa ad ognuno di essi solo l’area di localizzazione, ma vengono focalizzati all’interno dell’area (si dice paged) quando c’è una chiamata in arrivo o in uscita [34]. Aumentando la dimensione dell’area di localizzazione il traffico di paging può essere associato al traffico di aggiornamento delle localizzazioni; il punto operazionale ottimale dipende dalle caratteristiche di chiamata e di mobilità degli utenti. Cellular IP si basa su questo concetto e analogamente al sistema di telefonia 107 Configurazione di nodi wireless con supporto della qualità del servizio cellulare, tende a evitare le procedure di aggiornamento delle localizzazioni degli utenti non attivi che consumano risorse. Tuttavia diversamente dal sistema di voce, Cellular IP non può far affidamento su una fase di inizializzazione della connessione per focalizzare gli utenti mobili come avviene nel sistema GSM ogni volta che si accende un telefonino. Al contrario anzi, la gestione delle localizzazioni è basato su un sistema di segnalazione “leggera”, detta soft-state, che è in grado di distinguere gli host attivi e quelli inattivi (active o idle) senza introdurre operazioni come l’inizializzazione della connessione. Una tale visione differenzia il nostro approccio anche dai i continui sforzi di fornire un servizio di trasporto dati attraverso la rete della telefonia cellulare. Infatti il sistema GPRS (General Packet Radio Service) per esempio, prima che una vera e propria trasmissione abbia inizio, richiede che sia stabilita una connessione riservando un canale logico tra il cliente mobile e la rete. Inoltre il sistema GPRS è implementato sull’infrastruttura di GSM che limita l’applicabilità a piccole reti, specialmente quelle di tipo “domestico”. Il sistema mobile di terza generazione è predisposto per fornire più servizi di dati agli utenti mobili e questo, unito ai sistemi ATM e CDMA, dà supporto a una vasta gamma di servizi che va dalla trasmissione di voce a quella di multimedia di alta qualità [13]. In confronto a questa standard evoluto, Cellular IP fornisce un approccio semplicistico offrendo un servizio di consegna non garantito e perciò è molto più appropriato per i traffici best effort. In ogni caso essendo disegnato intorno al paradigma IP, esso può evolvere per soddisfare futuri schemi della qualità del sevizio di IP [15]. 108 Configurazione di nodi wireless con supporto della qualità del servizio Diversamente da alcune tecniche multicast di IP pensate per risolvere problemi di indirizzamento e locazioni che richiedono alla rete la continua conoscenza della posizione di ogni utente non attivo, Cellular IP usa un albero di percorsi tempo-variante per ricercare gli utenti mobili. Queste tecniche multicast non soddisfano il requisito di connessione passiva leggera e inoltre, come molti altri protocolli di questo tipo, c’è bisogno di un router IP speciale in ogni stazione base, cosa molto costosa rispetto al meccanismo proposto con Cellular IP. 4.4.3 Modello di rete ad accesso wireless Una rete ad accesso wireless consiste in prima analisi di una o più BS (Base Station) interconnesse con collegamenti wired come illustrato in figura 4.4. Figura 4.4: Modello di rete ad accesso wireless 109 Configurazione di nodi wireless con supporto della qualità del servizio A parte la stazione base, la rete può contenere nodi che non contengono dispositivi radio ma che fungono da concentratori di traffico o supportano funzioni di controllo della mobilità. Nella figura 4.4 tutti i nodi, ad eccezione del nodo E, hanno un dispositivo radio. Le reti ad accesso wireless sono connesse ad Internet attraverso i router gateway. Questo router speciale rappresenta anche la migliore posizione per la stazione home agent se la rete di accesso wireless funziona da home network per alcuni utenti mobili; inoltre quella è anche la migliore posizione per la stazione detta foreign agent per utenti ospiti. Si supponga che nella rete Internet globale la mobilità sia affidata a Mobile IP e che la precisione di localizzazione sia la posizione della rete ad accesso wireless. Entrando in una rete wireless (azione 1 della figura) un utente mobile X si connette attraverso la sua home agent (azione 2) che quindi inoltrerà i pacchetti diretti all’utente X verso quella la rete wireless (azione 3). Quindi fino a che l’utente rimane connesso alla stessa rete, i suoi spostamenti sono celati alla sua home agent che d’altro canto si comporterebbe nella stessa maniera anche se ne fosse informata. Gli spostamenti tra reti wireless avvengono con una frequenza molto bassa e perciò Mobile IP risulta un buon protocollo di controllo. Nel prosieguo identificheremo alcuni requisiti chiave per le reti ad accesso wireless. All’interno dell’area di servizio della rete wireless, gli utenti mobili non hanno una locazione base o un punto dedicato al loro aggancio alla rete. Le BS perciò inviano periodicamente segnali di controllo per permettere agli utenti mobili di 110 Configurazione di nodi wireless con supporto della qualità del servizio identificare una stazione base disponibile. Fino a che sono connessi alla rete wireless, gli utenti mobili esterni alla rete (come l’utente X della figura) sono trattati come se fossero interni. Però quando uno di questi utenti si collega o lascia una rete ospitante, conformemente a quanto richiesto da Mobile IP, deve informare la sua home agent. Inoltre nel caso di ingresso a una rete ospitante, c’è bisogno anche di procedure di registrazione e autenticazione. Per facilitare la mobilità globale, le procedure di registrazione alla rete devono essere facili e veloci. Tuttavia sebbene per migliorare una ricercabilità globale, un utente ospite dovrebbe avere un indirizzo locale, è comunque vantaggioso in termini di trasparenza che esso sia identificato proprio dal suo indirizzo IP originario (quello della home network) anche all’interno di una rete ospitante. In uno scenario dove gli utenti si portano dietro computer portatili capaci di connettersi in maniera wireless che siano sempre accesi, un altro requisito importante è la capacità di permettere l’accesso al maggior numero di utenti possibile in una data rete ad accesso wireless. E mentre il traffico generato dagli utenti attivi può essere limitato da alcuni meccanismi della rete, agli utenti idle, che hanno bisogno solo della possibilità di essere raggiunti, si deve imporre la generazione di traffico esiguo. Come già precedentemente detto, ci riferiamo a questa proprietà chiamandola connessione passiva leggera (cheap passive connectivity). Una situazione comune e anche comoda si presenta quando due celle adiacenti hanno angoli sovrapposti, facilitando così un perfetto supporto degli handoff. In questo caso il protocollo della rete wireless può considerare soft handoff , cioè se un utente cambia cella diventando temporaneamente irraggiungibile, i 111 Configurazione di nodi wireless con supporto della qualità del servizio pacchetti continuano a essere consegnati anche se con un piccolo disordine. Ciò si realizza permettendo temporaneamente una trasmissione simultanea da/verso entrambe le stazioni base. In ogni caso anche se ciò non fosse possibile perché le celle non si sovrappongono, il protocollo deve comunque funzionare efficientemente. Ora siccome le celle di solito coprono un’area piccola (delle dimensioni di qualche stanza o tratto strada), la rete wireless deve poter funzionare bene anche in presenza di migrazioni molto frequenti. Tenere nota di ogni movimento di un utente con la precisione di una cella richiede che sia inviato un messaggio di controllo dopo ogni migrazione verso una locazione base e che questo sia processato in quel punto, cosa che può diventare molto inefficiente in regime di un’alta frequenza di handoff. E comunque lasciare che un utente si muova in un’area servita da una rete wireless senza che nessuno ne rilevi il movimento per poi localizzarlo solo quando ci siano dati da consegnare è una soluzione inefficiente e poco scalabile. Uno schema di gestione delle locazioni efficiente deve invece mantenere informazioni circa la posizione degli utenti inattivi senza sovraccaricare la rete con messaggi di aggiornamento e dovrebbe anche utilizzare un algoritmo di ricerca veloce ed efficiente, da utilizzare anche nel caso in cui non ci siano dati da consegnare ad utenti inattivi. Dato che la frequenza delle migrazioni può variare nelle reti, il meccanismo di gestione delle localizzazioni dovrebbe essere adattabile a caratteristiche locali, in particolare in scenari con una frequenza di handoff bassa, si dovrebbe mantenere per gli utenti idle un’informazione della localizzazione più accurata mentre al contrario, in sistemi con una frequenza di migrazioni alta dovrebbero 112 Configurazione di nodi wireless con supporto della qualità del servizio riporre molta fiducia in un meccanismo di ricerca on-demand per limitare il più possibile il carico imposto dai messaggi di aggiornamento delle localizzazioni. Per permettere la connessione anche a dispositivi portatili di bassa potenza (e costo!), una rete ad accesso wireless non dovrebbe affidare una complessità alta agli utenti mobili. Idealmente un host mobile è senza memoria (o memoryless) nel senso che esso continua ad operare le stesse azioni elementari per restare connesso sia nel caso in cui sia sotto l’azione di ricerca di una BS, sia nel caso in cui resti inattivo. Inoltre nessuna operazione particolare dovrebbe essere richiesta nel caso di un handoff o dopo un black out radio temporaneo. In definitiva il disegno del protocollo di Cellular IP è motivato da ben 5 requisiti chiave che una rete di accesso wireless deve soddisfare: 1. migrazione globale semplice; 2. connessione passiva leggera; 3. supporto degli handoff flessibile; 4. semplice gestione delle locazioni; 5. comportamento degli host mobili semplici e senza memoria. 4.4.4 Cellular IP In aggiunta ai requisiti discussi nel paragrafo precedente, l’obiettivo principale di Cellular IP è fornire la massima scalabilità e robustezza con la minima complessità. Una rete Cellular IP è completamente distribuita se: 113 Configurazione di nodi wireless con supporto della qualità del servizio • i nodi non conoscono la topologia della rete; • non esiste un data base centralizzato né alcun altro punto debole; • nessun elemento della rete può far aumentare la complessità quando aumenta l’area di copertura (e quindi il potenziale numero di utenti connessi). 4.4.4.1 Meccanismi di mapping: Paging e Routing Caches Per semplicità e scalabilità, in una rete Cellular IP nessuno dei nodi conosce l’esatta posizione di un utente mobile. I pacchetti indirizzati ad un utente mobile sono inviati alla sua attuale BS con il classico metodo hop-by-hop dove ogni nodo ha bisogno di sapere solo su quale porto di uscita inoltrare i pacchetti. Questa tecnica di limitare le informazioni di routing solo localmente non richiede che i nodi abbiano conoscenza della topologia dell’intera rete wireless. Ci riferiremo a questo tipo di operazioni con la parola mapping (che tradotto letteralmente significa “disegnare una mappa”) perché si associano un ogni utente mobile (ovvero ad ogni suo identificatore, rappresentato dall’indirizzo IP) ad un numero di porto. Il meccanismo del mapping è generato e tenuto in piedi grazie all’invio dei pacchetti trasmessi da tutti gli utenti mobili della rete: i pacchetti viaggiano nella rete di accesso verso il gateway che è governato da una politica hop-by- hop. Monitorando questi pacchetti e assegnando l’indirizzo del mittente al relativo porto entrante, i nodi della rete creano un percorso inverso hop-by-hop utile per i pacchetti che in futuro verranno indirizzati a quel determinato utente. Per minimizzare la segnalazione di controllo, i dati di mapping non vengono 114 Configurazione di nodi wireless con supporto della qualità del servizio cancellati in modo esplicito subito dopo un handoff; piuttosto si assegnato un timer, scaduto il quale il mapping viene considerato antiquato e solo in quel caso viene cancellato definitivamente. Questo implica quello per mantenere vivo l’insieme di informazioni utili al proprio mapping, un utente deve inviare pacchetti fittizi (detti dummy) periodicamente anche quando non ha nessuno dato reale da spedire. La combinazione di pacchetti emessi periodicamente e timer associati ai mapping assicura che appena un utente mobile entri in un’area di servizio, tra il gateway della rete ospitante e la BS di quell’host esisteranno sempre delle informazioni aggiornate riguardanti il mapping. Questo schema porta vantaggi anche relativamente alla facile migrazione tra reti di accesso perché i nodi non hanno bisogno di nessuna informazione preliminare riguardo ad un utente mobile per creare le tabelle di mapping e non ha bisogno di essere informati quando un utente lascia l’area. Comunque, affidarsi al meccanismo dei timer genera il seguente trade off: dopo che un utente abbia compiuto un handoff, il suo percorso relativo alla “vecchia” staziona rimarrà valido finché i tutte le informazioni di mapping non saranno cancellate. Ma se nel frattempo verranno inviati dei pacchetti a quell’utente, non saranno consegnati solo alla sua BS attuale ma anche a quella “vecchia”. Questo risulta un spreco di risorse che può essere minimizzato selezionando un timeout abbastanza piccolo. D’altra parte gli utenti idle hanno bisogno di emettere pacchetti dummy con un periodo comparabile con il timeout del mapping e minore risulta essere questo parametro, più frequentemente saranno inviati pacchetti fittizi e quindi più alto sarà il rischio di sovraccarico della rete! 115 Configurazione di nodi wireless con supporto della qualità del servizio Questo può essere particolarmente pericoloso laddove le risorse radio sono scarse perché in questi casi il timeout deve essere piccolo. Per superare questo problema, si può osservare innanzitutto che il sistema ha due caratteristici livelli di temporizzazione: per minimizzare lo spreco di risorse dovuto ad informazioni di mapping non usate ma non ancora cancellate, il timeout dovrebbe essere dell’ordine del tempo di consegna pacchetto (detto anche tempo di pacchetto); ma d’altra parte per una periodicità ragionevole dei pacchetti dummy, il timeout dovrebbe durare tutto il tempo che un utente resta agganciato ad una BS, cioè il tempo tra due handoff successivi, che può essere di ordini di grandezza maggiore del tempo considerato precedentemente. Cellular IP risolve questo problema usando due strutture di mapping parallele. I nodi mantengono un primo insieme di mapping, chiamato Paging Caches (PC) che viene usato solo per gli utenti mobili inattivi. I mapping relativi alle PC hanno un timeout comparabile alla frequenza di migrazione, possibilmente nell’ordine dei secondi o addirittura dei minuti. Poi indipendentemente dalle Paging Caches, i nodi mantengono un altro set di mapping chiamato Routing Caches (RC): le informazioni che vi sono contenute sono utilizzate solamente per quegli utenti mobili che attualmente ricevono o sono in attesa di ricevere dati. Per i mapping delle Routing Caches il timeout può essere dello stesso ordine di grandezza del tempo di pacchetto. Perciò questo motivo le Paging Caches si possono considerare dei data base di informazioni di locazione di basso livello, adatto solo agli utenti idle. Quando poi uno di questi utenti comincia ad entrare effettivamente in fase di trasmissione attiva, ad esso vengono applicate le informazioni delle Routing Caches, viste come data base più “nobili”. 116 Configurazione di nodi wireless con supporto della qualità del servizio In figura 4.5 è rappresentata la relazione tra le Paging Caches e le Routing Caches. Fintantoché rimane inattivo, l’utente X tiene aggiornata la sua PC emettendo pacchetti dummy ad una frequenza bassa (azione 1 della figura). Le Paging Caches hanno un timeout relativamente lungo, poiché gli basta tener traccia di un utente in maniera scadente, dato che l’utente in questione è inattivo. Figura 4.5: Paging e Routing Quando ci sono pacchetti da indirizzare ad un utente mobile idle, vengono utilizzati i mapping delle PC per localizzare l’utente (azione 2 della figura). Da questo momento e fintantoché continuano ad arrivare dati, un utente mantiene attivi i timeout delle Routing Caches, sia attraverso i suoi pacchetti in partenza, sia attraverso la trasmissione di pacchetti dummy (azione 3 della figura). I pacchetti indirizzati all’utente sono gestiti dalle RC (azione 4 della figura) che diversamente dalle PC localizzano l’utente più da vicino. 117 Configurazione di nodi wireless con supporto della qualità del servizio La separazione delle Paging Caches dalle Routing Caches ha un ulteriore vantaggio: una rete di accesso wireless può avere un grande numero di utenti mobili collegati allo stesso tempo, dei quali solamente una piccola percentuale sta ricevendo effettivamente dati. In questo caso, la Paging Cache conterrà in ogni momento un gran numero di tabelle di mapping, perciò il suo data base risulterà molto più esteso di quello della Routing Cache. E siccome le PC sono usate solamente per cercare utenti inattivi e non per inviare dati con un bit rate alto, il gestore della rete può scegliere di mettere le Paging Caches solamente in un piccolo numero di nodi posizionati strategicamente e lasciare agli altri nodi il compito di ricerca broadcast, che è un’operazione ovviamente più delicata. Creando più PC le informazioni di locazione possono essere realizzate con più precisione riducendo così la dimensione dell’area di ricerca. Questa caratteristica architetturale lascia al gestore della rete la libertà di sincronizzare le operazioni di localizzazione secondo le caratteristiche di mobilità di quella particolare rete. Si discuterà più approfonditamente di questo problema nel paragrafo 6. 4.4.4.2 Paging di Cellular IP Gli utenti mobili inattivi periodicamente generano pacchetti di controllo, di lunghezza molto ridotta, chiamati pacchetti di aggiornamento del paging (paging-update packets) e li spediscono alla stazione base attiva più vicina. I pacchetti di aggiornamento del paging viaggiano nella rete di accesso verso il router gateway (GW), instradati attraverso la politica dell’hop-by-hop, come 118 Configurazione di nodi wireless con supporto della qualità del servizio illustrato in figura 4.6. I nodi dotati di Paging Caches monitorano continuamente i pacchetti di aggiornamento che vi passano e mantengono attive le cache che associano l’identificativo di utente con il porto al quale il pacchetto di aggiornamento del paging è destinato (si veda il paragrafo 5.1 per l’indirizzamento mobile). Il router gateway scarta automaticamente da Internet i pacchetti di aggiornamento del paging che trasportano informazioni circa alcune specifiche operazioni di Cellular IP. Come illustrato in figura 4.6, un utente mobile X è attualmente nella cella del nodo G. Figura 4.6: Il mapping nelle PC creato dai pacchetti di aggiornamento del paging I paging-update packets generati da X viaggiano verso il GW attraverso nodi G, E, C ed A. In questo esempio i nodi A ed E contengono Paging Caches ma nodo C no. Ora C semplicemente inoltra i pacchetti di aggiornamento del paging verso il gateway senza registrare alcuna informazione di localizzazione sull’utente X. Il nodo A nota che i pacchetti arrivano da X attraverso il porto di C, mentre il nodo E nota che i pacchetti di X arrivano attraverso il porto di G. 119 Configurazione di nodi wireless con supporto della qualità del servizio Quando un utente idle si muove, continua a spedire i suoi pacchetti di aggiornamento del paging alla BS più vicina, forzando le Paging Caches ad avere informazioni relative al mapping sempre aggiornate. I mapping antiquati vengono fisicamente cancellati dopo uno specifico timeout impostato dal sistema. Se per esempio l’utente X si muove verso la cella F, i suoi pacchetti aggiornamento del paging saranno spediti alla stazione F come illustrato in figura 4.7: mentre il nodo A non noterà alcuna differenza, nel nodo E sarà creato un nuovo percorso di instradamento per X e dopo un po’ (quando il relativo timeout sarà scaduto) il vecchio percorso sarà considerato antiquato e perciò verrà cancellato. Figura 4.7: Aggiornamento delle Paging Caches per un utente mobile Per un po’ di tempo i due percorsi di mapping coesistono garantendo sempre la raggiungibilità per l’utente X anche durante la migrazione. Quando al router gateway arrivano i pacchetti IP indirizzati ad un utente mobile 120 Configurazione di nodi wireless con supporto della qualità del servizio per il quale non è disponibile nessuna informazione di mapping aggiornata, vengono usate le Paging Caches per rintracciare l’utente. Siccome non conosce l’esatta localizzazione del destinatario, il gateway accoda i pacchetti IP arrivati e genera un pacchetto di controllo con lo scopo di rintracciare l’utente, chiamato pacchetto di paging che contiene l’identificatore dell’utente mobile cercato. Il pacchetto di paging è instradato nella rete di accesso dalle Paging Caches che semplicemente invertono il percorso di instradamento degli ultimi pacchetti di aggiornamento del paging. A questo punto se tutti i nodi sono forniti di Paging Caches, allora è disponibile un hop-by-hop inverso e si può risalire alla posizione corrente dell’utente; se alcuni nodi invece non hanno le Paging Caches, allora spediranno il pacchetto di paging a tutti i porti in uscita. Continuando l’esempio (figura 4.8) per instradare i pacchetti di paging, il nodo A controlla la sua cache e scopre che i paging update packets di X sono arrivati recentemente al suo porto attraverso il nodo C. Quindi A inoltra il pacchetto di paging verso C che invece non ha informazioni sull’utente X e perciò inoltra il pacchetto in tutte le possibili direzioni. Il pacchetto di paging spedito verso il nodo D si scarta perché D sa che l’utente X non è nella sua cella. Quello mandato ad E invece invita il nodo a controllare le sue cache e si scopre che X sta spedendo pacchetti attraverso F; perciò E inoltra il pacchetto di paging a F e quindi a X. 121 Configurazione di nodi wireless con supporto della qualità del servizio Figura 4.8: I pacchetti di paging vengono indirizzati dalle PC verso l’utente mobile Una volta ricevuto il pacchetto di paging, l’utente mobile crea un pacchetto di controllo chiamato pacchetto di aggiornamento dell’instradamento (route- update packet) e lo invia alla sua stazione basi (F nell’esempio dell’utente X). Analogamente ai pacchetti di aggiornamento del paging, i pacchetti di aggiornamento dell’ instradamento viaggiano verso il router gateway in base ad un meccanismo hop-by-hop e creano il mapping nelle Routing Caches per l’utente mobile che ha spedito quel pacchetto. Quando i pacchetti di aggiornamento dell’instradamento raggiungono il router gateway, tutte le Routing Caches incontrate per la strada vengono automaticamente aggiornate e i pacchetti di dati accodati nel router gateway possono finalmente essere consegnati all’utente mobile. Questo processo di ricerca dell’utente ritarda la consegna del primo pacchetto di dati ma una volta che il percorso risulta stabilito, i pacchetti seguenti usano le informazioni acquisite precedentemente senza ripetere la ricerca. Comunque se in qualunque momento durante il trasferimento dei dati, l’utente diviene temporaneamente irraggiungibile e scadono i timeout delle Routing 122 Configurazione di nodi wireless con supporto della qualità del servizio Caches, i prossimi pacchetti di dati genereranno un nuovo processo di paging proprio a partire dalle ultime informazioni che avevano a disposizione. In questo modo anche un black-out temporaneo del canale radio non genera nessuna reazione dell’utente, al più provoca un ulteriore ritardo nel processo di paging. 4.4.4.3 Routing di Cellular IP I pacchetti di dati emessi da un utente mobile sono instradati verso il router gateway in una base ad una politica hop-by-hop. I nodi che contengono Routing Caches controllano tutti i pacchetti di dati che vi passano e li usano per creare le associazioni tra identificatori di utente e numeri di porto. I pacchetti indirizzati verso l’utente mobile sono instradati dalle Routing Caches attraverso un percorso hop-by-hop inverso quando ci sono le relative informazioni oppure vengono mandati in broadcast quando queste informazioni non ci sono. La struttura e le operazione principali del routing sono fondamentalmente le stesse di quelle del paging. Per chiarire la dualità tra i due meccanismi, nella tabella 4.2 si espongono in breve alcune caratteristiche delle Paging Caches a confronto con quelle delle Routing Caches. Può essere utile notare ancora una volta che le due funzioni sono divise a causa dell’intrinseca differenza delle temporizzazioni caratteristiche dei relativi meccanismi di funzionamento. 123 Configurazione di nodi wireless con supporto della qualità del servizio Paging Caches (PC) Routing Caches (RS) tutti i pacchetti generati da un pacchetti dati e route-update configurate da utente mobile (dati,route-update, packets originati da un paging-update) utente mobile localizzazione scopo timeout sia degli utenti mobili attivi che idle Instradamento dei pacchetti di paging dell’ordine di grandezza della frequenza di handoff solo degli utenti mobili attivi instradamento dei pacchetti dati indirizzati ad un utente mobile dell’ordine di grandezza del tempo di pacchetto Tabella 4.2: confronto tra PC e RC Le Routing Caches si occupano solamente degli utenti attivi (cioè di quelli che effettivamente stanno ricevendo o emettendo pacchetti di dati) e sono aggiornate da timeout dell’ordine di grandezza del cosiddetto tempo di pacchetto, cioè quel tempo necessario alla consegna di un pacchetto. Questo permette alle Paging Caches di operare su una scala temporale molto più grande, la cui misura è data dalla frequenza di handoff, in modo da evitare frequenti aggiornamenti del paging operati da utenti inattivi. L’utente mobile può continuare a ricevere pacchetti di dati per un certo tempo anche se non ha niente da spedire. Per mantenere le Routing Caches configurate ed evitare paging ripetuti, gli utenti mobili che sono in attesa di dati ma non hanno nessuno pacchetto da inviare (cosa che succede ad esempio quando è aperta una connessione TCP) 124 Configurazione di nodi wireless con supporto della qualità del servizio devono inviare periodicamente i pacchetti di aggiornamento dell’instradamento. Così come i pacchetti di dati, anche i route-udate packets configurano le Routing Caches ed assicurano che il percorso di instradamento basato sull’hop- by-hop dal router gateway verso l’utente mobile rimanga aggiornato. Si può notare poi che per scopi di affidabilità, le Paging Caches non smettono mai di “inseguire” gli utenti quando questi sono attivi e che comunque gli utenti attivi non hanno bisogno di spedire pacchetti di aggiornamento del paging perché le Paging Caches sono configurate anche dai pacchetti di aggiornamento dell’instradamento e da qualunque altro tipo di pacchetto generato dagli utenti. 4.4.4.4 Handoff di Cellular IP I meccanismi sopra descritti assicurano che gli handoff, che altro non sono che migrazioni durante un trasferimento dei dati in corso, vengano gestiti automaticamente. Un handoff in Cellular IP è sempre provocato dal movimento dell’utente: appena un utente si avvicina ad una nuova stazione base, reindirizza i suoi pacchetti di dati dalla vecchia alla nuova stazione. Il primo di questi pacchetti reindirizzati configura automaticamente un nuovo percorso che sarà utilizzato dalle Routing Caches per la localizzazione per di quell’utente. Per un tempo uguale a quello del timeout del mapping delle Routing Caches, i pacchetti indirizzati all’utente mobile saranno consegnati ad ambo le stazioni base, quella vecchia e quella nuova. Nel caso in cui l’apparecchiatura radio dell’utente sia capace di gestire due canali logici nello stesso tempo, gli handoff saranno detti soft. 125 Configurazione di nodi wireless con supporto della qualità del servizio Se invece l’utente non è capace di stare in ascolto di due stazioni contemporaneamente, allora l’handoff è detto hard e l’efficienza della migrazione dipende esclusivamente dalle apparecchiature radio. Dopo un certo tempo, il percorso relativo alla vecchia stazione base sarà giudicato antiquato e verrà cancellato, mentre i pacchetti inizieranno ad essere consegnati alla locazione corrente dell’utente attraverso la sua nuova stazione base. In figura 4.9 è illustrato uno scenario di handoff. L’utente mobile X sta trasferendosi dalla cella F a D mentre sta spedendo e ricevendo pacchetti di dati. Presumendo che tutti i nodi abbiano a disposizione delle Routing Caches, prima che l’utente si sia mosso, le informazioni di localizzazione delle RC sono quelle indicate nelle bandiere. Dopo la migrazione, i pacchetti di dati generati dall’utente, indicate in figura con frecce continue, comunicano al nodo C un nuovo percorso di localizzazione. Per un certo tempo, i pacchetti indirizzati a X sono consegnati sia a D che a F; questo è mostrato in figura con frecce tratteggiate. Dopo un tempo pari al timeout della Routing Cache del nodo E, il vecchio percorso di localizzazione viene cancellato, così come quello della Routing Cache del nodo F. Da quel momento in poi, è usato solamente il percorso di instradamento aggiornato. La cache di A rimane invariata per l’intera durata del processo. Questo processo di handoff è semplice, trasparente ed automatico. Nei nodi dove ai vecchi e ai nuovi percorsi corrisponde lo stesso instradamento, i vecchi mapping vengono riusati automaticamente rendendo non necessaria per 126 Configurazione di nodi wireless con supporto della qualità del servizio Cellular IP una nuova ricerca per quei punti detti “di cross-over”. Figura 4.9: Il meccanismo di handoff di Cellular IP Inoltre se vecchie e nuove celle si sovrappongono, c’è una piccola interruzione o disturbo nella comunicazione: infatti se all’atto di un handoff l’utente mobile rimane temporaneamente fuori contatto radio mentre si muove tra due celle, negli strati superiori (cioè i TCP) si possono verificare dei ritardi e alcuni pacchetti possono perfino andare persi; ma la comunicazione è comunque ripresa appena l’utente riappare nella nuova cella. Si può verificare che questo meccanismo è efficiente anche se applicato a quegli utenti che temporaneamente risultano irraggiungibili a causa di ragioni diverse dall’handoff. Se un utente riappare prima della scadenza del timeout della Routing Cache, il servizio continua senza alcun ulteriore ritardo; se invece il timeout è scaduto, le Routing Caches vengono riconfigurate dal primo pacchetto inviato dall’utente al quale non è neanche richiesto di conoscere la sua condizione di raggiungibilità 127 Configurazione di nodi wireless con supporto della qualità del servizio dalla Routing Cache quando verso un’altra cella. Nella descrizione del processo di handoff, si presuppone implicitamente che l’utente mobile abbia sempre pacchetti di dati da spedire. Quando un utente si aggancia alla rete ed entra nella zona di servizio di nuova cella, per configurare il percorso di localizzazione manda immediatamente dei pacchetti di aggiornamento dell’instradamento; questo però non accade nel caso di un handoff perché l’utente è all’oscuro della sua migrazione: è la rete a gestire il tutto in accordo con la regola di non caricare su un terminale le procedure di gestione della rete. Tuttavia siccome i pacchetti di dati hanno lo stesso effetto dei pacchetti di aggiornamento dell’instradamento, il meccanismo degli handoff è gestito comunque ottimamente quando un utente invia un pacchetto di dati. Ovviamente nel caso in cui l’utente a non abbia nessun dati da spedire, continuerà a inviare pacchetti di aggiornamento dell’instradamento alla sua nuova cella per mantenere la localizzazione. Mentre questo processo darebbe luogo normalmente a handoff semplici, ci sono dei casi, soprattutto in sistemi “domestici”, dove gli handoff si possono verificare con una frequenza molto alta oppure può addirittura accadere che un utente mobile sia sul confine tra due celle e che il suo servizio rimbalzi tra le due stazioni base. Per assicurare una comunicazione continua in queste situazioni, l’utente mobile mantiene il percorso di instradamento delle Routing Caches in entrambe le stazioni base spedendo i suoi pacchetti di dati ad una e mandando in parallelo i pacchetti di aggiornano dell’instradamento all’altra. In questo caso, la rete è preparata per l’handoff e la trasmissione di dati sarà 128 Configurazione di nodi wireless con supporto della qualità del servizio continua anche nel momento in cui l’utente decidesse improvvisamente di spostarsi verso una delle due stazioni diventando irraggiungibile per l’altra. Si noti che la stessa politica può essere usata per gli utenti mobili idle per assicurarsi la raggiungibilità: invece di spedire pacchetti di aggiornamento del paging a una sola stazione base, l’utente può spedirli a due o più stazioni in parallelo. Cellular IP può usare queste strategie per migliorare la raggiungibilità e la qualità degli handoff in cambio di una piccola degradazione dell’efficienza della rete. 4.4.5 Problemi relativi al disegno del protocollo Nelle sezioni precedenti sono stati descritti i concetti base di Cellular IP e le sue funzioni di paging, instradamento e handoff. In seguito saranno discussi alcuni dettagli algoritmici di Cellular IP. 4.4.5.1 Indirizzamento e Migrazione Siccome gli indirizzi dell’utente mobile non hanno un significato relativo alla localizzazione all’interno di una rete di Cellular IP, può essere usato qualunque spazio di identificatori di utente. L’uso dell’home address IP è una soluzione semplice ma che allo stesso tempo ha il vantaggio di non cambiare i pacchetti IP né mascherarli quando vengono usati nella rete di accesso. 129 Configurazione di nodi wireless con supporto della qualità del servizio Non è necessario nessun incapsulamento né conversione di indirizzo in una rete di Cellular IP: l’uso degli indirizzi di IP come identificatori di utente mobile rende la migrazione tra reti di accesso incredibilmente semplice. Un utente mobile che accede ad una rete Cellular IP, ha semplicemente il compito di comunicare l’indirizzo del router gateway locale alla sua home agent 1 . L’home agent invierà quindi i suoi pacchetti al router gateway che a sua volta poi li smisterà sulla rete di Cellular IP. Il processo di paging e settaggio/modifica delle Routing Caches non hanno bisogno di nessuna informazioni preliminare per cominciare a creare le informazioni di mapping per l’utente che si è appena agganciato alla rete, né richiedono di essere informati quando un utente mobile lascia rete di accesso. 4.4.5.2 Pacchetti di controllo I tre tipi di pacchetti di controllo (del paging, di aggiornamento del paging e di aggiornamento dell’instradamento) usati da Cellular IP possono essere regolari pacchetti IP. Tutti e tre i tipi contengono solamente un singolo elemento di informazione: l’identificatore dell’utente mobile. E poiché questo elemento viene indicato nel campo di origine o di destinazione del pacchetto (per i pacchetti di aggiornamento del paging/dell’instradamento e per i pacchetti di paging rispettivamente), la parte contenente il payload può anche rimanere vuota. I pacchetti di controllo possono essere implementati da una IP nuova opzione e 1 L’indirizzo di IP del router gateway può essere incluso in una segnalazione di controllo della stazione base. Serve poi anche ad identificare la rete di accesso wireless quando l’utente è coperto da più reti di accesso contemporaneamente. 130 Configurazione di nodi wireless con supporto della qualità del servizio non è necessario che i router semplici comprendano il funzionamento di questa opzione. 4.4.5.3 Configurazione dei nodi In una rete Cellular IP, nessun dei nodi ha bisogno di avere una visione del livello di rete o informazioni topologiche del sistema, né ha bisogno di conoscere la propria posizione all’interno della rete. I nodi non hanno bisogno di essere configurati: Cellular IP è una soluzione plug-and-play che permette anche il recupero di un nodo se questo dovesse subire un crash. Comunque in ogni nodo deve essere disponibile una certa quantità di informazioni di routing. Un nodo deve sapere quale dei suoi porti usare per instradare i pacchetti verso il router gateway. Un modo semplice per mantenere queste informazioni è implementato proprio dal router gateway che periodicamente trasmette segnali di controllo in broadcast per permettere che i nodi registrino il porto attraverso il quale hanno ricevuto l’ultimo pacchetto. Nella descrizione degli algoritmi, ci si riferirà a questo porto con il nome “uplink-port”. Inoltre il nodo deve sapere quali dei suoi porti è connesso all’uplink-port di un altro nodo 2 . Questi porti saranno chiamati “downlink-port”. È importante che le informazioni di instradamento immagazzinate nei nodi siano consistenti, nel senso che esiste sempre un percorso di instradamento (che si suppone senza cappi) che collega qualsiasi nodo al router gateway. Mentre le modifiche frequenti di questi percorsi di instradamento possono 2 Questa informazione serve ad evitare dei loop quando dei pacchetti indirizzati ad un utente mobile sono inviati in broadcast. 131 Configurazione di nodi wireless con supporto della qualità del servizio degradare le prestazioni della rete in termini di aumento dei tempi di consegna e del tasso di perdita dei pacchetti, il ripristino delle informazioni di instradamento dopo un crash o la congestione temporanea di un tratto di rete non mettono in pericolo le prestazioni, anzi questi meccanismi possono essere usati per garantire la tolleranza alle situazioni anomale quando Cellular IP lavora su una rete soggetta a frequenti congestioni. 4.4.5.4 Algoritmi dei nodi I nodi che non hanno né Paging Caches né Routing Caches semplicemente inoltrano tutti i pacchetti che arrivano al downlink-port verso il loro uplink-port e i pacchetti che arrivano all’uplink-port verso il downlink-port . Un nodo con una Paging Cache deve monitorare tutti i pacchetti che arrivano dai suoi downlinkport: prima di instradarli attraverso l’uplink-port, legge l’indirizzo del mittente ed lo usa per aggiornare la PC secondo le seguenti regole: se sono disponibili informazioni di localizzazione circa l’utente mobile mittente al porto al quale il pacchetto è arrivato, il timer per questo mapping è azzerato; se queste informazioni di localizzazione non esistono, vengono create adesso e il timer viene inizializzato. Quando un pacchetto di paging arriva attraverso l’uplinkport, viene controllata la Paging Cache: se esistono informazioni aggiornate sulla localizzazione della destinazione, il pacchetto è spedito sui relativi porti; se non ci sono informazioni di localizzazione, il pacchetto viene scartato. L’operazione di un nodo con Routing Caches differisce in due parti: primo, come discusso nel paragrafo 4.4.4.3, i pacchetti di aggiornamento del paging non aggiornano le Routing Caches. Secondo, invece dei pacchetti di paging, le Routing Caches inoltrano i pacchetti dati che vi arrivano dall’uplink-port. Ovviamente possono esserci nodi che hanno allo stesso tempo sia Paging 132 Configurazione di nodi wireless con supporto della qualità del servizio Caches che Routing Caches nel qual caso vengono eseguiti entrambi gli algoritmi. I nodi senza Paging Caches indirizzano tutti i pacchetti di paging verso tutti i downlink-port mentre i nodi senza le Routing Caches spediscono tutti i pacchetti di dati che arrivano dall’uplink-port a tutti i downlink-port. 4.4.6 Realizzazione del protocollo Cellular IP definisce una struttura generale che dà grande libertà ad un amministratore di rete di regolare il sistema in funzione delle caratteristiche locali. Attualmente le reti Cellular IP sono soltanto di tipo sperimentale e servono per lo più come testbed per studi di prestazioni di sistema e di dipendenze dei settaggi. 4.4.6.1 Realizzazione della temporizzazione I timer giocano un ruolo fondamentale per l’efficienza di Cellular IP; anche se l’accuratezza delle temporizzatori non è un fattore cruciale (e quindi la sincronizzazione potrebbe essere omessa), i valori dei timeout delle Paging Caches e delle Routing Caches e il periodo di invio dei pacchetti di aggiornamento del paging e dei pacchetti di aggiornamento dell’instradamento devono essere dimensionati attentamente per avere buone prestazioni. Per entrambi i timeout, un valore più alto dà luogo a comunicazioni di controllo meno frequenti, ma estende la validità di percorsi non usati. Se dopo migrazione l’utente spedisce sempre un pacchetto di aggiornamento 133 Configurazione di nodi wireless con supporto della qualità del servizio del paging extra alla nuova stazione base, allora la frequenza dei pacchetti di aggiornamento del paging può essere bassa senza mettere in pericolo la raggiungibilità. L’ideale sarebbe settare tale frequenza ad un valore approssimativamente uguale alla quello della frequenza di migrazione. Per mantenere le informazioni di mapping delle Paging Caches anche se si verificano alcune perdite di pacchetti di aggiornamento del paging consecutive, i timeout delle Paging Caches dovrebbero essere qualche multiplo del tempo dei pacchetti di aggiornamento del paging: con questo settaggio, il carico imposto dai pacchetti di aggiornamento del paging sarà comparabile con quello imposto dalla segnalazione relativa alle migrazioni esplicite. Il tasso dei pacchetti di aggiornamento del paging è perciò il parametro primario da considerare per la gestione della mobilità di Cellular IP e va accordato con la dimensione della cella del sistema e la velocità media dell’utente. Le prestazioni sono anche molto sensibili ai timeout delle Routing Caches: questo parametro dovrebbe essere settato in modo tale che un utente mobile che generi un handoff soft riceva solo pochi pacchetti da ambo le stazioni base per assicurare handoff senza difetti. Un timeout delle Routing Caches più lungo dovrebbe essere evitato per limitare lo spreco di risorse. Il tasso di invio dei pacchetti di aggiornamento dell’instradamento dovrebbe essere tale che durante il timeout delle Routing Caches arrivino pochi pacchetti di aggiornamento dell’instradamento per mantenere il mapping anche quando tali pacchetti vanno persi. 134 Configurazione di nodi wireless con supporto della qualità del servizio Si noti che in molte sessioni di comunicazione ci saranno anche tanti pacchetti di dati o di acknowledgement emessi dall’utente mobile, perciò i pacchetti di aggiornamento dell’instradamento non sono sempre necessari. 4.4.6.2 Realizzazione delle Caches Un altro modo per adattare la rete alle caratteristiche locali è utilizzando le Paging e le Routing Caches. Anche se il protocollo supporta nodi senza Routing Caches, è probabile che per un utilizzo efficiente delle risorse della rete, si possa scegliere di associare una RC ad ogni nodo. Invece per le Paging Caches, che contengono un data base considerevolmente più grande, si può pensare di posizionarle solamente in alcuni punti strategici della rete. Poiché i nodi senza Paging Caches non fanno altro che inoltrare in broadcast i pacchetti di impaginazione, il processo di paging resta operativo anche con poche PC. Perciò più Paging Caches danno luogo a meno carico di paging in cambio ad un costo hardware ovviamente superiore. Quindi l’amministratore posizionerà tipicamente le Paging Caches in nodi con molti porti foglia (cioè quelli che sono connessi ad altri nodi ma che a loro volta non sono connessi con altri) ed in nodi che interconnettono grandi aree della rete che sono separate da tutto il resto. Poiché il carico di routing è proporzionale al numero di sessioni e non al traffico globale, ottimizzare la densità delle Paging Caches è il modo migliore per adattare la rete alle caratteristiche del traffico: un numero di Paging Caches maggiore dovrebbe essere considerato solo nel caso in cui il traffico consista 135 Configurazione di nodi wireless con supporto della qualità del servizio principalmente di frequenti burst, cioè di comunicazioni piccole nella durata ma grandi per la quantità di dati inviati; al contrario un numero di Paging Caches minore è giustificato nel caso in cui il traffico sia formato soprattutto da trasmissioni di dati grandi e prolungate nel tempo. Comunque il router gateway dovrebbe contenere sempre una Paging Cache per evitare l’accodamento dei pacchetti di quegli utenti che non sono più collegati alla rete di accesso. Sebbene nella descrizione del protocollo questo non è stato evidenziato, è possibile avere nodi che hanno solo Paging Caches per alcuni dei loro downlinkport, ma non per tutti. Questo può avere senso specialmente nel caso di stazioni base con porti molto usati e che perciò dovrebbero avere una PC anche se la loro posizione nella rete può non giustifichi la presenza in quel punto. Questi nodi si comporteranno come stazioni con Paging Caches per i porti per i quali mantengono la cache, ma sembreranno nodi di senza PC per gli altri porti foglia. 4.4.6.3 Realizzazione del Paging Dipendentemente dalla dimensione di rete, il tempo per localizzare un utente mobile qualche volta può essere lungo. Sono necessari ulteriori studi per vedere se questi ritardi sono accettabile per la maggior parte delle applicazioni IP: se il ritardo di paging è troppo alto, è possibile usare il primo pacchetto di dati (o i primi pacchetti) come pacchetti di paging invece di accodarli nel router gateway e generare dei piccoli pacchetti di paging. Questa soluzione semplifica anche le realizzazioni dei router gateway, sebbene 136 Configurazione di nodi wireless con supporto della qualità del servizio provochi un più alto carico della rete giacché i pacchetti di dati sono ovviamente più grandi di quelli di paging. Si possono poi considerare delle implementazioni più sofisticate, intermedie tra queste due soluzioni proposte e scelte ad hoc in funzione dalla dimensione e dal tipo di payload dei pacchetti. 4.4.7 Conclusioni su Cellular IP In questo capitolo sono state discusse alcune limitazioni dei protocolli per la gestione di utenti mobili (come Mobile IP) che diventano difficilmente utilizzabili in ambienti wireless dove gli utenti mobili si spostano molto velocemente dando luogo a frequenti operazioni di handoff. Quindi è stato analizzato nei dettagli un altro protocollo chiamato Cellular IP che ha come scopo principale il miglioramento e l’integrazione di reti wireless con barriere tecniche di quel tipo. L’architettura di Cellular IP conta sulla separazione della mobilità locale dalla mobilità di area estesa. È stato affermato che mentre Mobile IP può sostenere efficientemente la mobilità di un’area estesa (come Internet ad esempio), la mobilità locale impone speciali requisiti non presi in considerazione nel disegno e dallo sviluppo di Mobile IP. Si identificano perciò un insieme di requisiti chiave, come la migrazione globale semplice, la connessione passiva leggera, il supporto flessibile degli handoff, la gestione locale efficiente ed il concetto di utente mobile senza memoria: Cellular IP è ottimizzato per reti ad accesso wireless ed è stato progettato per soddisfare questi requisiti chiave. Due ulteriori vantaggi del protocollo sono la sua semplicità e la sua robustezza. 137 Configurazione di nodi wireless con supporto della qualità del servizio Una rete Cellular IP inoltre è scalabile: si possono usare gli stessi nodi semplici ed economici sia per piccoli sistemi domestici che per aree metropolitane estese. La semplicità di un nodo di Cellular IP e la capacità di intercomunicazione con Mobile IP facilita ne facilita l’introduzione nel panorama attuale dei sistemi di gestione degli utenti mobili, data anche la sua compatibilità con sistemi più datati; per queste proprietà una rete wireless può essere facilmente estesa incrementandone un po’ per volta la sua dimensione e le sue capacità. Attualmente le reti di Cellular IP esistono solo per scopi sperimentali che serviranno come testbed per studi futuri. 138 Configurazione di nodi wireless con supporto della qualità del servizio Capitolo 5 Access Point con supporto della qualità del servizio: HostAP e HostQs Questo capitolo rappresenta la parte principale per l’acquisizione dello stato dell’arte delle tecnologie che si sono utilizzate: attraverso uno studio dei software di base HostAP 3 e HostQs 4 si può ottenere una prima realizzazione di un Access Point che fornisca un supporto della qualità del servizio. Sfortunatamente le regole sulle quali si basa la politica di schedulazione dell’HostQs, o più precisamente di quella parte dell’HostQs che viene chiamata Queue Manager, non sono utili alla realizzazione della idea iniziale di cui si è parlato precedentemente. Tuttavia per un buon utilizzo delle strategie da realizzare, si rende necessaria un’analisi approfondita di questi due elementi chiave. 3 4 http://hostap.epitest.fi/ http://www.inlab.csp.it/tools/wireless/hostqs/ 139 Configurazione di nodi wireless con supporto della qualità del servizio 5.1 HostAP Il progetto di HostAP è formato da tre componenti principali: • il driver di HostAP che lavora sotto Linux con schede basate su tecnologia Prism2/2.5/3 5 • il demone hostapd per gli Access Point: include funzioni base per l’autenticazione di sistemi Linux e BSD basate sullo standard IEEE802.11x, identificatori EAP e autenticazioni per server RADIUS • WPA Supplicant per driver di Linux, BSD e Windows HostAP è un driver che controlla sotto Linux le schede wireless basate sul chipset Intersil Prism 2/2.5/3. Il driver supporta la cosiddetta modalità HostAP o Master che controlla i time critical tasks, cioè le funzioni di gestione dello standard IEEE802.11x per fa sì che un normale computer agisca come un Access Point, senza alcun aggiunta di ulteriori firmware. Inoltre esso fornisce supporti per le operazioni delle normali stazioni BBS e IBBS. Alcune le funzioni (come WPA e RSN) sono supportate solo se il driver viene accompagnato da altri programmi di utilità quali hostapd e WPA Supplicant. 5 http://wiki.personaltelco.net/index.cgi/Prism2Card 140 Configurazione di nodi wireless con supporto della qualità del servizio Le stazioni con tecnologia Intersil Prism2 supportano il cosiddetto modo HostAP nel quale si gestiscono quei compiti legati alle temporizzazioni critiche come l’invio di segnali di controllo e di riconoscimento di frame (beacon e acknowledgement) ma lasciano gli altri compiti di gestione al driver del computer host. Oltre a implementare le funzioni di base necessarie a inizializzare e configurare le schede basate sulla tecnologia Prism2, a inviare e ricevere frame, il driver è anche fornito di un sistema per raccogliere informazioni di tipo statistico. Inoltre esso include un’implementazione delle seguenti funzioni dello standard IEEE802.11: • autenticazione (e deautenticazione) • associazione (con riassociazione e deassociazione) • trasmissione di dati tra due stazioni wireless • controllo dell’energia (PS - Power Saving) • gestione di frame per il PS con segnalazioni e buffering. Nel pacchetto di HostAP sono presenti anche altre funzioni per il debugging e il controllo di strutture dello standard IEEE802.11 come l’accesso alle configurazioni dei record hardware, ai registri di I/O e alle frames con gli header 802.11. Quando viene usato anche il demone, la combinazione di HostAP e hostapd permette funzioni speciali: • il settaggio della chiave come previsto dall’IEEE802.1x e del WEP (Wired Encryption Privacy) dinamico; • l’accounting RADIUS per l’autenticazione IEEE802.11 (nel caso si utilizzi questo server come supporto); 141 Configurazione di nodi wireless con supporto della qualità del servizio • l’accesso al sistema; • e altre funzionalità base dello standard IEEE802.11f. Hostapd è un demone per Access Point e server di autenticazione che implementa alcune funzionalità base degli Access Point previste dallo standard IEEE802.11, come l’autenticazione così come preista dello standard IEEE802.1x/WPA e autenticazione RADIUS. Il WPA (Wi-Fi Protected Access) è una tecnologia che ha come scopo la gestione della sicurezza delle reti wireless attraverso la protezione dei dati (encrypting) e il controllo di accesso alla rete attraverso un forte controllo sull’utente: l’autenticazione e l’associazione sono affidati ad un meccanismo di negoziazione di una chiave mentre il roaming è controllato dal driver wireless. Sia l’hostapd che il WPA sono disegnati per essere programmi “demone” che vengono eseguiti in background e agiscono come componenti finali controllando le autenticazioni e le connessioni wireless. 142 Configurazione di nodi wireless con supporto della qualità del servizio 5.2 HostQs: Differenziazione del traffico in WLAN La questione del supporto della qualità del servizio (QoS - Quality of Service) nelle attuali reti locali senza filo (WLAN - Wireless Local Area Network) è affrontata dal software Queue Manager con un approccio molto innovativo, chiamato HostQs, che mira alla differenziazione del traffico a seconda di requisiti di QoS lavorando a livello 2, ovvero al livello LLC. L’approccio è basato sulla creazione di una coda LLC per ogni categoria di traffico e sulla schedulazione delle code in accordo con il concetto di connessione virtuale tra le differenti priorità all’interno della stazione wireless. La frame alla testa della coda LLC che vince la contesa è consegnata al livello MAC e gestita in base alle regole di questo sottolivello. Il meccanismo proposto è stato implementato in ambiente Linux su un Access Point Open-Source usando una scheda basata su un chipset Prism2. 5.2.1 Introduzione a HostQs Una delle applicazioni più promettenti delle WLAN basate sulla tecnologia IEEE 802.11 è senza dubbio il supporto di traffico multimediale come ad esempio Voice over IP (VoIP). In realtà le WLAN potrebbero essere utilizzate con molto successo per 143 Configurazione di nodi wireless con supporto della qualità del servizio trasportare traffico voce su un’architettura IP se la rete fosse utilizzata solo per questo scopo! Ma nelle WLAN classiche che trasportano traffico di natura eterogenea nascono molti problemi a causa del limitato grado di sviluppo del supporto QoS che l’attuale tecnologia 802.11b riesce a fornire. L’esigenza di servizi più potenti ha portato quindi allo sviluppo di nuovi standard IEEE o almeno a degli abbozzi di standard, come il cosiddetto IEEE 802.11e [35], nel quale si definiscono le procedure MAC per supportare applicazioni LAN con requisiti di QoS, compreso traffico voce, audio e video su WLAN. Lo standard IEEE 802.11e introduce una funzione di coordinamento ibrido (HFC - Hybryd Coordination Function) e specifica poi due schemi di accesso: l’accesso a canale distribuito migliorato (EDCA - Enhanced Distributed Channel Access) e l’accesso a canale controllato da HCF (HCCA - HCF Controlled Channel Access) [35]. Un analisi un po’ più approfondita dei meccanismi di accesso 802.11e possono essere trovati in [37]. Tuttavia non si trovano disponibili implementazioni commerciali né dell’EDCA né del HCCA e lo studio delle prestazioni si basa soltanto su analisi teoriche e simulazioni. In particolare in [36] viene presentato uno studio analitico mentre in [38], [39] e [40] si possono trovare risultati di simulazione. L’approccio HostQs non fa parte dell’IEEE 802.11e ma può essere visto come un miglioramento dell’architettura dello standard IEEE 802.11b che fornisce una differenziazione del traffico in modo simile a EDCA ma senza richiedere modifiche al livello MAC. L’interpretazione principale di questo approccio è un’architettura che può essere vista come una soluzione intermedia prima che lo standard 802.11e sia definitivamente e largamente diffuso: siccome l’approccio HostQs si basa sugli stessi principi dell’EDCA, è comprensibile come entrambe le soluzioni possano 144 Configurazione di nodi wireless con supporto della qualità del servizio coesistere e allo stesso tempo, poiché HostQs non apporta modifiche al MAC 802.11b, si garantisce una compatibilità di base. Nel prossimo paragrafo si elencano le principali caratteristiche dell’EDCA, nel paragrafo 5.2.3 si descrivono le modifiche al livello LLC dell’IEEE 802.11b, nel 5.2.4 l’implementazione di HostQs su una piattaforma Open-Source e infine nel paragrafo 5.2.5 vengono proposti i risultati di alcune misurazioni effettuate con questo nuovo approccio e l’effettiva funzionalità della soluzione proposta. 5.2.2 QoS dell’IEEE 802.11e: la funzione EDCA In questo paragrafo saranno esposte brevemente le caratteristiche principali dell’EDCA; per ulteriori informazioni si rimanda a [35] e [37]. Così come la funzione di coordinamento distribuito (DCF - Distributed Coordination Function) presente nell’802.11, anche la funzione EDCA è basata sullo schema CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) e impiega il concetto di Inter Frame Space (IFS) come meccanismo di backoff. Le innovazioni introdotte sono: • ogni volta che una stazione 802.11e si aggancia a un canale, viene autorizzata a trasmettere una o più frame in un dato intervallo di tempo chiamato Transmission Opportunity (TXOP) che è caratterizzato da una durata massima, indicata con TXOP-limit; • vengono definite categorie di accesso (AC - Access Categories), ognuna delle quali corrisponde ad un differente livello di priorità e ad un differente insieme di parametri che vengono usati per la contesa del canale. In particolare una stazione 802.11e che opera con la funzione EDCA può includere fino a 4 code MAC. Una coda utilizza i seguenti parametri per accedere al canale: 145 Configurazione di nodi wireless con supporto della qualità del servizio o spazio tra due frame (AIFS[AC] - Arbitration Inter Frame Space), parametro simile al DIFS usato dalla DCF; o la Finestra di Contesa Minima e Massima, Contention Window (CWmin[AC] ,CWmax[AC]); o il tempo limite TXOP-limit[AC] 6 Più è alta la priorità di una AC, più sono piccoli i parametri AIFS[AC], CWmin[AC] ,CWmax[AC]; più è grande TXOP-limit[AC], maggiore risulta la capacità della categoria di accesso. In ogni caso i valori di CWmin[AC] e CWmax[AC] devono essere scelti con molta cura per evitare situazioni di alta probabilità di collisioni nei flussi di traffico che appartengono alla stessa AC; • all’interno di ogni stazione 802.11e, uno schedulatore risolve le collisioni virtuali tra le code AC, ovvero tra le varie istanze CSMA/CA, abilitando alla trasmissione sempre la coda associata alla priorità più alta. 5.2.3 Differenziazione del traffico a livello LLC Come già precedentemente sottolineato, l’obiettivo principale della implementazione di un nuovo meccanismo di differenziazione del traffico è realizzata attraverso uno schema di priorità simile a quello che lo standard IEEE 802.11e introdurrebbe se dovesse gestire un traffico molto eterogeneo, mantenendo comunque una compatibilità di base con le WLAN esistenti. I punti cardine del sistema sono: • nessuna modifica introdotta al livello MAC: per questo motivo il protocollo CSMA/CA è applicato come nello standard IEEE 802.11b; le 6 Il valore di AIFS deve essere grande almeno quanto l’intervallo DIFS; l’unica eccezione è rappresentata nel caso di un AP che può usare un AIFS grande anche μs. 146 Configurazione di nodi wireless con supporto della qualità del servizio modifiche sono limitate al livello LLC; • la differenziazione del traffico è basata sull’inserimento delle frame di differenti categorie di traffico in differenti code; tale divisione delle frame viene effettuata in base ad un etichetta che nella soluzione proposta è rappresentata dal valore del campo ToS (Type of Service); sebbene le priorità possano essere forzate usando un qualsiasi algoritmo già esistente (round robin, EDF, ecc.), la scelta di emulare EDCA ha portato ad un supporto delle priorità attraverso contese e collisioni virtuali tra le code LLC. Figura 5.1: Il ToS nel pacchetto IP In figura 5.2 è rappresentato un disegno concettuale del nuovo livello LLC e delle sue due componenti principali, le code di traffico e lo schedulatore delle collisioni. Le diverse frame vengono accodate in accordo con le indicazioni dei livelli superiori: in questa implementazione è stato usato lo standard DiffServ nel campo ToS del pacchetto IP. Ogni coda di traffico i-ma ha una particolare priorità che è espressa dai valori di quantità chiamate Finestra Minima e Finestra Massima di Contesa Virtuale (VCWmin,i ,VCWmax,i - Minimum, Maximum 147 Configurazione di nodi wireless con supporto della qualità del servizio Virtual Contention Window). Figura 5.2: Schema del sistema delle code del livello LLC introdotto da HostQs Le code di traffico sono poi servite in accordo all’ordine stabilito da una contesa virtuale tra differenti Finestre di Connessione Virtuali VCWi : ad ogni coda di traffico i-ma viene associato un numero intero tra 0 e VCWi che rappresenta il tempo di backoff per la coda i-ma, tempo che sarà indicato con tb,i . La coda con il tempo di backoff più piccolo, che sarà indicato con tb,min , vince la contesa virtuale e viene quindi servita per prima: la frame in cima a tale coda sarà 148 Configurazione di nodi wireless con supporto della qualità del servizio perciò la prima ad essere trasferita al livello MAC una volta scaduto il timer di backoff, cioè non appena trascorso il tempo tb,min . Allo stesso istante in tutte le altre code, il valore tb,i viene decrementato di una quantità che corrisponde esattamente a tb,min e ci si prepara ad un nuovo processo di contesa. La coda vincitrice quindi genera un altro tempo di backoff che il cui il valore è tra zero 0 e VCWi e la nuova contesa può iniziare. Se in due code diverse il timer di backoff scade allo stesso istante, la coda a trasferire la prima frame al MAC è quella con la priorità nominale più alta mentre la coda perdente (o le code perdenti) che partecipavano alla collisione virtuale generano un altro tempo di backoff dove però la nuova Finestra di Connessione Virtuale è più grande e il suo valore cresce in maniera esponenziale secondo la relazione: VCWnew = 2 * VCWold + 1 Di conseguenza viene generato un flusso da inviare al MAC e l’ordine delle frame risulta lo stesso di quello che sarebbe stato rispettato da una stazione wireless 802.11e. Successivamente le frame vengono trasmesse (o sarebbe meglio dire che cercano di essere trasmesse) con spaziatura temporale che ricorda quella del sistema di backoff orientato alle priorità adottato nello standard 802.11e. Ovviamente con questo metodo a fianco alla struttura dei tempi di backoff imposta al MAC si introduce un ulteriore backoff ma questa sovrapposizione è necessaria per forzare la stessa priorità tra le varie stazioni wireless della WLAN: in questo modo il traffico con bassa priorità accede al canale in media con un tempo più lungo del normale periodo di backoff. 149 Configurazione di nodi wireless con supporto della qualità del servizio In seguito si vedrà che il backoff addizionale viene richiesto solo se più di una stazione implementa la differenziazione di traffico allo strato LLC, nel qual caso il traffico con bassa priorità viene egualmente penalizzato. 5.2.4 L’ implementazione di HostQs L’architettura di seguito proposta è stata implementata su un sistema Linux facente uso di una scheda di rete dotata di una tecnologia particolare 7 . Il sistema è fornito quindi di un driver capace di supportare la cosiddetta funzionalità HostAP [41], cioè ha la capacità di gestire le funzioni dello standard IEEE 802.11 in modo tale da trasformare un normale computer portatile fornito di una scheda di rete wireless in un potente Access Point senza richiedere l’utilizzo di alcun firmware ulteriore. Oltre a comportarsi come un Access Point, la funzionalità HostAP supporta anche la possibilità di gestire le normali operazioni sulle stazioni di una sottorete semplice o BSS (Basic Service Set). Nella modalità HostAP, il firmware si occupa della gestione dei compiti basati sui cosiddetti tempi critici come ad esempio l’invio di segnali e la richiesta di conferme di avvenuta ricezione delle frame (in gergo dette acknowledgement o ack), lasciando gli altri compiti di gestione al computer host. Questo driver implementa inoltre le funzionalità base necessarie per inizializzare e configurare una scheda basata su tecnologia Prism2, per mandare e ricevere frame e per raccogliere informazioni di tipo statistico. Inoltre esso include l’implementazione di molte funzioni IEEE 802.11 come l’autenticazione (e la deautenticazione), l’associazione (la reassociazione e la deassociazione) di una utente mobile, la trasmissione dati tra due stazioni wireless, il controllo della potenza (PS - Power 7 scheda di rete dotata di chipset basato su tecnologia Intersil’s Prism2/2.5/3. 150 Configurazione di nodi wireless con supporto della qualità del servizio Saving) e buffering di segnali e di frame per le stazioni PS. HostQs è stato implementato attraverso la modifica del codice originale del driver HostAP e l’aggiunta di un modulo supplementare che si occupa di frame allo strato LLC (figura 5.2). Il modulo del driver contiene una funzione di trasmissione modificata che invia i pacchetti di rete non direttamente allo strato MAC ma prima al modulo supplementare la cui funzione di accodamento è rappresentata attraverso simboli del kernel. La funzione di trasmissione originale è mantenuta nel driver sotto un nome diverso e rappresentata anch’essa attraverso simboli del kernel in modo da permettere che possa essere utilizzata dal modulo supplementare per la spedizione dei pacchetti. Il modulo supplementare conserva i pacchetti in code separate, dipendentemente dai loro valori del ToS; un elemento separato risolve la contesa virtuale e schedula le frame secondo il risultato della contesa virtuale. Quando pacchetti devono essere spediti, il modulo utilizza la funzione di trasmissione originale implementata nel driver di HostAP, così i messaggi vengono spediti nello stesso ordine in cui erano stati accodati dallo strato superiore. Le code di traffico implementate con priorità decrescente sono le seguenti : • traffico in tempo reale (ad esempio chiamate VoIP) • applicazioni di streaming multimediale • dati best effort (trasferimento file, navigazione web, ecc.) e i valori di VCW che vi sono stati assegnati sono mostrati in tabella 5.1. La realizzazione è stata ottimizzata in modo da poter essere lanciata anche su terminali lenti: nelle prove eseguite è stato usato un sistema operativo Linux versione 2.4.22 installato su un Pentium III da 450 MHz con 256 MB RAM. 151 Configurazione di nodi wireless con supporto della qualità del servizio Una implementazione Open-Source di HostQs è disponibile su rete [42]. Tabella 5.1: Impostazione del VCW 5.2.5 Risultati del test In figura 5.3 è mostrata la configurazione di rete utilizzata per il test. Figura 5.3: Scenario del test Il nodo di HostQs è configurato come un Access Point per una BSS che include alcune stazioni wireless indicate con WS (Wireless Stations). HostQs raccoglie 152 Configurazione di nodi wireless con supporto della qualità del servizio traffico da un sintetizzatore di voce, da un generatore di streaming video e da un generatore di traffico TCP. Quindi spedisce le frame alle varie WS dopo aver stabilito le priorità attraverso il meccanismo della contesa virtuale. Le priorità sono assegnate in ordine decrescente a voce, video e dati rispettivamente; in tabella 5.1 sono stati riportati i valori scelti per le rispettive VCWmin e VCWmax. Le stazioni wireless accedono al canale usando i criteri dello standard IEEE 802.11b senza alcun miglioramento e senza alcuna priorità sul traffico. Così la differenziazione di traffico e l’impostazione delle priorità è realizzata solamente dalla direzione di downstreaming, in altre parole il blocco avviene tra Queue Manager e il driver HostAP ma solo nella fase di invio dei dati diretti alle WS. La fonte di voce sintetica proveniente dal server voce è pensata per emulare un flusso di traffico che potrebbe essere generato da VoIP codificato attraverso vocoder G.711 a 64 Kbps senza nessuna funzione di rivelazione di voce VAD (Voice Activity Detection). Lo streaming video è di tipo Unicast, scorre con una frequenza di 350 Kbps ed è generato da un server Fenice, un progetto Open- Source studiato appunto per applicazioni di questo tipo[43]. Alcuni esperimenti comprendono anche interferenza di traffico UDP, generato sinteticamente nella direzione di downstream. La valutazione delle prestazioni relative alla qualità della voce è operata da elementi come Agilent VQT e PESQ [44]. PESQ (Perceptual Evaluation of Speech Quality) è un tool di misurazione che può predire i risultati di un test di ascolto su sistemi di telefonia basandosi su un modello sensoriale che confronta il segnale originale, e perciò non processato, col il segnale degradato dalla rete o da un elemento della rete. La qualità che alla fine ne risulta è analoga a una “qualità media soggettivamente testata”, 153 Configurazione di nodi wireless con supporto della qualità del servizio cioè misurata con prove empiriche; il valore che si dà a questa grandezza si indica con l’acronimo MOS (Mean Opinion Score). I risultati di PESQ sono calibrati usando un database molto complesso di test soggettivi che dà alla qualità media soggettivamente testata una valutazione da 1 a 4.5. La qualità eccellente è indicata con valori tra 3.2 e 4.5, quella mediocre è rappresentata da valori di PESQ tra il 2.5 ed il 3.2, quella cattiva infine ottiene valori inferiori a 2.5. La valutazione della prestazione di traffico video è operata direttamente dai client video, in termini di percentuale di pacchetti video perduti. Come nota finale, si riporta l’osservazione che l’uso di HostQs in una situazione dove la BSS è formata da stazioni wireless che non offrono un supporto di qualità del servizio, ha suggerito una semplificazione nell’algoritmo di schedulazione di HostQs stesso. Infatti c’è effettivamente un piccolo svantaggio nell’usare un meccanismo supplementare di gestione dei tempi di backoff nello strato LLC poiché ogni WS usa una scheda gestita dai criteri di IEEE 802.11b: il traffico al livello di HostQs sarebbe perciò inutilmente ritardato e i relativi pacchetti verrebbero retrocessi per abbassare le priorità rispetto al traffico proveniente dalle stazioni wireless, senza tener conto delle effettive priorità interne. Analogamente l’uso di HostQs in un’architettura che non supporta qualità del servizio ha poco senso in termini di AIFS (Arbitration Inter Frame Space), cioè lo spazio tra due frame. Per questo motivo, lo strato LLC dell’HostQs è autorizzato a inoltrare immediatamente le frame al livello MAC quando la contesa è risolta, senza aspettare il tempo di backoff. Le contese virtuali divengono così semplicemente un algoritmo di ordinazione all’interno del blocco HostQs, sebbene abbiano l’importantissima proprietà di fornire un’ordinazione simile a quella della funzione EDCA dello standard 154 Configurazione di nodi wireless con supporto della qualità del servizio 802.11e. Nella tabella 5.2 è mostrata una valutazione preliminare: lo scopo è riportare delle scelte di CWmin e CWmax col relativo throughput ottenuto da due flussi UDP con diverse priorità che usano quei CW. Ai due flussi corrispondono diversi valori del ToS nell’header IP; questi valori del ToS sono quindi elencati secondo tre categorie di accesso diverse, una alta indicata con H, una media indicata con M e infine una bassa indicata con L; il ToS pari a 6 indica una priorità alta, pari a 5 per una priorità media, pari al valore nullo per una priorità bassa. Tabella 5.2: Throughput dei flussi UDP per differenti valori di CW, ovvero per priorità alta (H), media (M) e bassa (L) I throughput della tabella misurati in Mbps evidenziano che: • è possibile ottenere delle priorità scalabili, cioè gradi diversi di priorità. Infatti da un’analisi più accurata dei valori risulta che nella metà superiore della tabella si nota una differenza di throughput molto grande tra flussi con priorità alta e i flussi con priorità bassa; nella metà inferiore della tabella invece la differenza di throughput tra i flussi con priorità alta e i flussi con priorità media è molto ridotta; 155 Configurazione di nodi wireless con supporto della qualità del servizio • CWmin è il parametro dominante, mentre il sistema è insensibile alle variazioni del valore di CWmax. Si osservi infatti che nella seconda riga della tabella 5.2 è stato cambiato solo un valore rispetto alla prima riga: il CWmin è stato ridotto da un valore 3 ad un valore nullo; per la relativa categoria di accesso bassa (indicata con L) questo equivale a dare una priorità molto bassa a tutti i flussi di quella categoria, come del resto ci si poteva aspettare. Si noti poi che nella terza riga della tabella 5.2 invece, l’unico valore ad essere stato variato risulta il CWmax della categoria di accesso alta, ridotta da un valore di 1023 a un valore di 511: la risposta del sistema in termini di throughput risulta assolutamente invariata! Il successivo insieme di risultati si riferisce ad un singolo flusso VoIP con rumore di fondo crescente che interferisce con traffico UDP. Figura 5.4. PESQ come funzione del traffico UDP formato da un flusso VoIP e traffico interferente 156 Configurazione di nodi wireless con supporto della qualità del servizio La figura 5.4 mostra il PESQ rilevato per tale flusso visto come funzione del traffico globale offerto alla WLAN. Le due curve della figura riportano le prestazioni del flusso VoIP con e senza il supporto delle priorità. Si vede chiaramente che nel caso in cui vengano applicati solamente i normali criteri di gestione del traffico dello standard IEEE 802.11b senza il supporto delle priorità, la qualità del flusso VoIP comincia a degradarsi appena dopo i 4 Mbps di traffico offerto e che prima dei 5 Mbps la qualità scende molto al di sotto di livelli accettabili. L’ultimo insieme di risultati delle figure 5.5, 5.6 e 5.7 mostrano le prestazioni di una WLAN che trasporta un singolo flusso VoIP e 1, 2 o 3 streaming video concorrenti, considerati di nuovo come una funzione di traffico UDP interferente. È interessante osservare che nel caso in cui vengano applicati solamente i normali criteri di gestione del traffico IEEE 802.11 senza il supporto delle priorità, sia VoIP che i flussi di video incontrano una degradazione della qualità approssimativamente della stessa consistenza che si riscontra fra i 4.5 Mbps e 5 Mbps, dipendentemente dal numero di video concorrenti. Al contrario il traffico che ha precedenza, cioè quello voce e video, sebbene con priorità diverse, mantiene lo stesso livello di QoS indipendentemente dal carico della rete. 157 Configurazione di nodi wireless con supporto della qualità del servizio Figura 5.5: PESQ e percentuale di perdita di pacchetti video come funzione del traffico UDP interferente formato da un flusso VoIP, uno streaming video e traffico interferente Figura 5.6: PESQ e percentuale di perdita di pacchetti video come funzione del traffico UDP interferente formato da un flusso VoIP, due streaming video e traffico interferente 158 Configurazione di nodi wireless con supporto della qualità del servizio Figura 5.7: PESQ e percentuale di perdita di pacchetti video come funzione del traffico UDP interferente formato da un flusso VoIP, tre streaming video e traffico interferente 5.2.6 Conclusioni e sviluppi futuri Nel contesto delle reti locali ad accesso wireless 802.11 (WLAN) è stato studiato un approccio innovativo che punta alla differenziazione del traffico al livello LLC in base a dei requisiti di qualità del servizio. Questo approccio chiamato HostQs è basato sulla creazione di una coda al livello LLC per ogni categoria di traffico desiderata e sulla schedulazione delle code in base a priorità di traffico. Questo meccanismo può offrire una differenziazione di traffico per lo standard IEEE 802.11b attualmente in uso che non supporta alcun tipo di gestione delle precedenze e allo stesso tempo può servire per migliorare il supporto della qualità del servizio già previsto nel nuovo standard 802.11e, benché nella versione attuale la gestione sia limitata a sole 4 categorie di accesso. 159 Configurazione di nodi wireless con supporto della qualità del servizio È stato implementato a tale scopo un meccanismo basato su un Access Point Open-Source che lavora in ambiente Linux e che si appoggia su un altro interessante progetto chiamato HostAP che richiede l’uso di una scheda di rete basata su un chipset con tecnologia Prism2. Sono stati poi mostrati dei risultati preliminari che illustrano la flessibilità e l’efficacia di configurazioni di BSS in cui HostQs venga montato su un solo nodo, circondato poi da molte altre stazioni che lavorano in una normale ambientazione wireless basata sullo standard IEEE 802.11b. Gli sviluppi futuri prevedono uno scenario in cui anche le singole stazioni wireless implementino un sistema di differenziazione del traffico basato su classi di servizio che vengano gestite dallo strato LLC in modo da raggiungere una interoperabilità ottimale tra i vari nodi di una rete. 160 Configurazione di nodi wireless con supporto della qualità del servizio Capitolo 6 Sviluppo software e misurazioni Per poter realizzare l’idea iniziale di sviluppare un prodotto software che gestisca il supporto della qualità del servizio su sistemi wireless secondo i criteri utili per il nostro fine, il punto di partenza è stato l’utilizzo dello schedulatore fornito da Queue Manager che si appoggia a sua volta su HostAP: • il primo pacchetto software fornisce il vero e proprio schedulatore che a seconda di determinate informazioni lette nell’header IP, accoda i pacchetti in diverse liste, ognuna delle quali dotata di un proprio livello di priorità; • il secondo software invece fornisce il driver che gestendo i tempi critici delle schede wireless dotate di tecnologia Intersil Prism, è capace di utilizzare un normale terminale mobile come se si trattasse di un vero e proprio Access Point: esso permette di ricevere - oltre che di inviare - le informazioni via radio. Questi due software messi insieme forniscono quello che è stato chiamato l’approccio HostQs: 161 Configurazione di nodi wireless con supporto della qualità del servizio Figura 6.1: Gestione dei sottolivelli LLC e MAC Tuttavia l’HostQs, di cui è presente una implementazione su Internet [42], basa la distinzione del traffico e la selezione dei pacchetti sul parametro ToS (Type of Service) dell’header IP. In verità tale campo fu pensato proprio per scopi di questa natura: infatti nei suoi 8 bit, il ToS ne contiene 3 che rappresentano il sottocampo chiamato Precedence, i 3 bit successivi sono i flag Delay, Throughput e Reliability, mentre gli ultimi 2 bit completano l’ottetto e sono riservati per scopi futuri. 162 Configurazione di nodi wireless con supporto della qualità del servizio Figura 6.2: I bit del campo ToS Su 3 bit possono codificarsi 8 valori, ma come già affermato precedentemente, Queue Manager implementa solo 3 code, a ognuna delle quali è associata un livello di precedenza. Le 3 code si riferiscono a: • traffico in tempo reale (ad esempio chiamate VoIP) • applicazioni di streaming multimediale • dati best effort (trasferimento file, navigazione web, ecc.) L’ordine dell’elenco rappresenta anche l’ordine della priorità. Ma da un’analisi più approfondita del codice sorgente si può vedere che esiste 163 Configurazione di nodi wireless con supporto della qualità del servizio una categoria di pacchetti che non subisce il blocco dello schedulatore: in totale quindi le classi di priorità sono 4 e non 3! Infatti la procedura che si occupa dell’analisi del ToS e dell’accodamento di pacchetti è dichiarata come segue: void queue_up_skb(struct sk_buff *skb, struct net_device *dev) e all’interno di tale procedura vengono effettuati i seguenti controlli: if(*((u16 *)(skb->data + 12)) != __constant_htons(ETH_P_IP)) { … queue = -1;} e if (*((u16 *)(skb->data + 12)) == __constant_htons(ETH_P_CONTROL)) { … queue = -1;} Questi controlli servono ad analizzare un determinato flag dell’header IP: se risulta che esso sia stato riempito con il valore ETH_P_IP oppure con il valore 164 Configurazione di nodi wireless con supporto della qualità del servizio ETH_P_CONTROL, allora il pacchetto in questione è un dummy ovvero un pacchetto di controllo. Quindi i pacchetti che non passano attraverso lo schedulatore di HostQs sono quelli che hanno funzioni utili per la gestione della rete e che per questo motivo è importante che vengano consegnati con il minimo ritardo possibile: il valore negativo della variabile queue sintetizza appunto questa caratteristica. Può capitare che un pacchetto dummy contenga proprio nel suo header le informazioni utili per la gestione della rete; ciò avviene ad esempio quando viene richiesto un pacchetto di aggiornamento delle tabelle di mapping. Le informazioni richieste in casi come questo sono semplicemente l’indirizzo IP dell’host mobile o di uno dei router per i quali vengono instradati i pacchetti che quell’host genera. Ovviamente non sarebbe utile inviare un pacchetto senza dati perciò utilizzando la tecnica del piggybacking, si inserisce payload anche nei dummy. Perciò anche se abbastanza raramente, può capitare che alcuni dati che a rigore dovrebbero avere una priorità bassa, vengano incapsulati con un header contenente informazioni prioritarie e che per questo motivo vengano spediti rapidamente, senza neanche passare nel blocco Queue Manager. Per evidenziare questa caratteristica di funzionamento, nello schema principale del funzionamento di HostQs che viene ripresentato di seguito, si nota una freccia tratteggiata che va da direttamente da Queue Manager al blocco identificativo del Livello MAC: 165 Configurazione di nodi wireless con supporto della qualità del servizio Figura 6.3: Schema principale del funzionamento di HostQs Di seguito si riporta quella parte del codice della funzione queue_up_skb che si occupa di leggere il campo ToS e a seconda del valore rilevato, associare un livello di priorità al relativo pacchetto. 166 Configurazione di nodi wireless con supporto della qualità del servizio tos=( *((u8 *)(skb->data + ETH_HLEN + 1) ) & 0xE0) >> 5; switch (tos) { case 0: queue=0; break; case 1: queue=0; break; case 2: queue=1; break; case 3: queue=1; break; case 4: queue=2; break; case 5: queue=2; break; case 6: queue = -1; break; case 7: queue = -1; break; } La suddetta parte di codice sarà l’oggetto delle variazioni, volendo effettuare una differenziazione basata non sulla tipologia di traffico ma su una priorità intrinseca dell’utente. 167 Configurazione di nodi wireless con supporto della qualità del servizio 6.1 Modifica del codice di Queue Manager La modifiche da effettuare al codice sorgente di Queue Manager deve solo considerare il cambiamento della politica di accodamento dei pacchetti: invece che distinguerli a seconda del ToS, si vuole che la differenziazione e l’ordinamento nelle code avvengano in base al valore degli indirizzi IP. In questo modo la distinzione non sarà tra classi di traffico bensì da identificatori dei utente! Perciò in accordo con l’idea iniziale, gli utenti verranno disposti come segue: • nella coda con priorità più alta andranno gli utenti aventi un indirizzo IP particolare: nel nostro studio quelli che vanno da X.X.X.1 a X.X.X.10; • nella coda con priorità intermedia andranno gli utenti associati agli indirizzi IP da X.X.X.11 a X.X.X.30; • la coda con l’ultimo livello di priorità conterrà tutti gli utenti identificati con indirizzi che vanno da X.X.X.31 a X.X.X.60. Le tre classi possono contenere rispettivamente 10, 20 e 30 utenti giacché si immagina che gli utenti con priorità alta siano pochi mentre quelli con priorità bassa siano molto numerosi. Si ricorda che l’associazione dell’indirizzo IP di categoria alta, media o bassa avverrà per opera di un DHCP impostato adeguatamente. 168 Configurazione di nodi wireless con supporto della qualità del servizio Rimane comunque importante dare una priorità massima ai pacchetti dummy: quindi sfruttando le proprietà della funzione queue_up_skb, si lasceranno passare tutti quei pacchetti per i quali il valore della variabile queue risulta negativo. Al contrario, tutti i pacchetti con un valore positivo della variabile queue verranno imbottigliati nelle 3 code così come precedentemente stabilito: queue priorità Pacchetti dummy -1 massima IP X.X.X.1 – X.X.X.10 0 alta IP X.X.X.11 – X.X.X.30 1 media IP X.X.X.31 – X.X.X.60 2 bassa Tabella 6.1: Priorità come funzione dell’indirizzo IP Si riporta di seguite la parte relativa alla nuova funzione queue_up_skp dopo le modifiche apportate: ip_latest_byte=( *((u8 *)(skb->data + ETH_HLEN + 15) )); tos=( *((u8 *)(skb->data + ETH_HLEN + 1) ) & 0xE0) >> 5; switch (tos){ case 6: queue = -1; break; case 7: queue = -1; break; default: switch(ip_latest_byte){ case((ip_latest_byte>=1)&(ip_latest_byte<=10)): queue=0; break; case((ip_latest_byte>=11)&(ip_latest_byte<=30)): queue=1; break; case((ip_latest_byte>=31)&(ip_latest_byte<=60)): queue=2; break; } /* END switch(ip_latest_byte) */ }/* END switch (tos) */ 169 Configurazione di nodi wireless con supporto della qualità del servizio 6.2 Misurazioni Non potendo effettuare misure su una rete reale, per verificare l’effettivo funzionamento del montaggio del Queue Manager modificato e per quantizzare in qualche modo il livello di prestazioni, è stato creato un testbed per la misurazione composto da un programma Client e da un programma Server. Il programma Client genera traffico formato da un numero finito di pacchetti abbastanza grande da poter considerare il raggiungimento di una condizione di regime. Da linea di comando si può decidere: • a quale indirizzo IP indirizzare il traffico; • quale porto utilizzare; • quale valore del campo ToS assegnare per quella comunicazione. Quindi viene aperta una socket che incanala il traffico con le caratteristiche impostate. Il programma Client non dà output, se non una conferma di ricezione per ogni pacchetto inviato. Il programma Server viene lanciato indicando da linea di comando 170 Configurazione di nodi wireless con supporto della qualità del servizio • l’indirizzo IP; • il porto utilizzato; dopodiché rimane semplicemente in ascolto. Nel momento in cui viene lanciato il programma Client, del traffico comincia ad arrivare all’indirizzo del programma Server che quindi può iniziare delle misurazioni statistiche sui tempi di interarrivo di ogni singolo pacchetto. Per la misurazione sono necessarie almeno due macchine: per la prima è necessaria una scheda wireless basata su tecnologia Intersil Prism e l’utilizzo del sistema operativo Linux su cui risulti montato sia HostAP che il Queue Manager modificato. Per la seconda macchina è necessaria solo una scheda wireless; la tecnologia di base non è importante. Lanciando sulla prima macchina il programma Server e utilizzando la seconda macchina per inviare contemporaneamente 3 processi del programma Client, tutti con lo stesso indirizzo IP e porto del Server ma con tre diversi valori di impostazione del ToS, il programma Server riceverà tre flussi di traffico concorrenti e per ognuno opererà le misurazioni. Poiché il programma Server lavora a valle del blocco Queue Manager, le misurazioni sui tempi di interarrivo rispecchierà lo schema delle priorità. Figura 6.4: Passaggio di controllo tra HostAP e Queue Manager 171 Configurazione di nodi wireless con supporto della qualità del servizio 6.2.1 Studio dei parametri statistici I parametri che maggiormente caratterizzano le elaborazioni statistiche sono rappresentati dalla media aritmetica e dalla varianza. Il programma Server opera uno studio della media utilizzando un ciclo iterativo in cui ad ogni arrivo di un pacchetto, si rileva il tempo trascorso dall’ultimo pacchetto ricevuto e si aggiorna la media. Per quanto riguarda lo studio dell’altro parametro, non è possibile implementare un processo iterativo semplice che dia il valore esatto della varianza. Tuttavia poiché l’interesse del presente lavoro di tesi è incentrato su altri obiettivi, ci si accontenta di un valore approssimato della varianza purché l’implementazione del processo di calcolo sia semplice e veloce. 6.2.2 Calcolo della varianza approssimata La varianza di una serie di misurazioni è un parametro che rappresenta lo scostamento quadratico medio rispetto al valore medio. La sua formula è ( xi − xn ) 2 σ =∑ n −1 i =1 n 2 dove • xi è la singola misurazione; • xn è la media considerata su n valori. 172 Configurazione di nodi wireless con supporto della qualità del servizio Risulta perciò: σ 2 (1) = 0 ( x1 − x2 ) 2 + ( x2 − x2 ) 2 σ (2) = 1 2 ( x1 − x3 ) 2 + ( x2 − x3 ) 2 + ( x3 − x3 ) 2 σ (3) = 2 2 … ( x1 − xn−1 ) 2 + ( x2 − xn−1 ) 2 + ... + ( xn−1 − xn−1 ) 2 σ (n − 1) = n−2 2 Dalla composizione delle reazioni precedenti si evince che non è possibile realizzare un algoritmo iterativo semplice per la varianza giacché ad ogni passo bisognerebbe calcolare ex novo tutti i termini quadratici che dipendono dal valore di una media aggiornata. Ad esempio mentre nel calcolo di σ 2 (2 ) , il primo termine tra parentesi al numeratore ( x1 − x2 ) 2 dipende da una media calcolata su 2 valori, nel calcolo successivo di σ 2 (3) , il termine analogo ( x1 − x3 ) 2 dipende da una media calcolata su 3 valori. 173 Configurazione di nodi wireless con supporto della qualità del servizio Sarebbe perciò necessaria la memorizzazione di tutte le singole misurazioni xi e di tutti i valori medi xn e ciò rende evidentemente impossibile il calcolo in tempo reale del valore della varianza. Tuttavia se il numero delle misurazioni è molto grande, si può assumere: xn−1 ≅ xn e con tale approssimazione si può scrivere: ( x1 − xn−1 ) 2 + ( x2 − xn−1 ) 2 + ... + ( xn−1 − xn−1 ) 2 n − 2 ( xn − xn ) 2 ⋅ + σ (n ) ≅ n−2 n −1 n −1 2 in altre parole si giunge alla formula: n − 2 ( xn − xn ) 2 + σ (n ) ≅ σ (n − 1) ⋅ n −1 n −1 2 2 che potrebbe essere usata in un algoritmo iterativo. Ma questo ancora non è possibile perché il termine additivo ( x n − xn ) 2 n −1 tende ad annullarsi al crescere di n, mentre il primo termine contenente il fattore moltiplicativo n−2 <1 n −1 174 Configurazione di nodi wireless con supporto della qualità del servizio tende a decrescere, cosa inaccettabile per il calcolo della varianza che può solamente aumentare. Ora supponendo che il numero di misurazioni sia molto elevato, si può considerare la varianza approssimata nel seguente modo: ( xn − xn ) 2 σ (n ) ≅ σ (n − 1) + n −1 2 2 Questo valore assunto per σ 2 (n ) porta con sé una quantità additiva di errore accumulata soprattutto nella fase iniziale del calcolo quando l’approssimazione xn−1 ≅ xn non è una operazione lecita a causa di un valore non ancora sufficientemente elevato di n. In conclusione, poiché il presente studio si focalizza su obiettivi diversi dal calcolo esatto dei parametri statistici e i relativi errori, il valore della varianza così approssimato può essere considerato tollerabile perché comunque dà un’idea della variazione media di parametri relativi al traffico. 175 Configurazione di nodi wireless con supporto della qualità del servizio Appendice A Codici dei programmi A.1 Codice del programma Server #include “client_lat.h” void uso(); int main(int argc, char *argv[]){ int i,n,num,iter; int clilen,childpd; int sockfd,newsockfd; char newpk[dimpack]; timeval timestart,timestop; timeval arrivestart,arrivestop; long interarr,media=0,varianza; /* prototipo di utilizzo */ /* /* /* /* /* /* /* /* /* /* variabili di appoggio */ identificatori di processo */ identificatori di socket */ buffer di ricezione */ contatori temporali */ dell’intero processo*/ contatori temporali degli */ interarrivi */ media e deviazione standard */ degli interarrivi */ if(argc!=2){ uso(); exit(1); } /* lettura dei parametri di ingresso */ if(sscanf(argv[1],”%i”,&port_num)!=1){ uso(); exit(1); } /*porto del server */ /* apertura di una socket TCP (SOCKET STREAM) */ if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){ perror(“socket open error\n”); exit(1); } /* riempimento della struttura serv_addr */ bzero((char*)&serv_addr,sizeof(serv_addr)); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=htonl(INADDR_ANY); 176 Configurazione di nodi wireless con supporto della qualità del servizio serv_addr.sin_port=htons(port_num); /* bind all’indirizzo locale del server */ /* in modo che il client possa trasmettere dati */ if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0){ perror(“Impossibile eseguire la bind\n”); exit(1); } /*attesa di una connessione da un processo client */ listen(sockfd,7); /* server concorrente attivo */ printf(“il server è pronto!\n\n”); for(;;){ clilen=sizeof(cli_addr); if((newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,(unsigned*)&clilen))<0){ perror(“server:errore di accept\n”); exit(0); } /* inizio processo figlio */ if((childpd=fork())<0){ perror(“server: errore di fork!\n”); exit(0); } if(childpd==0){ close(sockfd); /* chiude la socket padre */ /* lettura dei messaggii del client */ if((nbytes=recvfrom(newsockfd,pacch,dimpack,0,ptrcli_addr,(unsigned*)& clilen))<0){ perror(“errore nella read!\n”); exit(0); } /* END if */ else{ gettimeofday(&timestart,NULL); /* inizio misurazione temporale */ /* dell’intero processo */ totalnbytes=nbytes; printf(“inizio ricezione di %d pacchetti\n”,numpack); printf(“all’istante%d\n\n”,(timestart.tv_sec*1000000+ timestart.tv_usec)); for(iter=1;iter<=numpack;iter++){ gettimeofday(&arrivestart,NULL); /* inizio misurazione del */ /* tempo dell’interarrivo */ if((nbytes=recvfrom(newsockfd,newpk,dimpack,0,ptrcli_addr, (unsigned*)&clilen))<0){ perror(“errore nella read!\n”); exit(0); } /* END if */ else{ gettimeofday(&arrivestop,NULL); /* fine misurazione del */ 177 Configurazione di nodi wireless con supporto della qualità del servizio /* tempo dell’interarrivo */ totalnbytes=totalnbytes+nbytes; interarr=(arrivestop.tv_sec-arrivestart.tv_sec)*1000000+ (arrivestop.tv_usec-arrivestart.tv_usec); printf(“pacchetto %d ricevuto in %d us\n”,iter,interarr); /* calcolo della media */ media=((media*(iter-1))+interarr)/iter; printf(“media degli interarrivi %d us\n”,media); /* calcolo della varianza APPROSSIMATA */ if(iter==1) varianza=0; else{ varianza=varianza+(interarr-media)*(interarr-media)/(iter-1); printf(“varianza degli interarrivi %d us2 \n”,varianza); } /* END else */ printf(“byte ricevuti finora %d \n”,totalnbytes); } /* END else */ } /* END for */ gettimeofday(&timestop,NULL); /* fine misurazione temporale */ /* dell’intero processo */ printf(“\ntempo totale di trasmissione %d us\n\n”,(timestop.tv_sectimestart.tv_sec)*1000000+(timestop.tv_usectimestart.tv_usec)); } /* END else */ /* decommentare nel caso si voglia anche l’invio di un ack if((num=sendto(newsockfd,ack,sizeof(ack),0,(struct sockaddr*)ptrcli_addr,clilen))<0){ perror(“errore nella write \n”); exit(0); } */ /* chiusura della socket figlio */ close(newsockfd); exit(0); } /*END if processo figlio */ } /*END processo padre */ printf(“fine ciclo server \n\n”); exit(0); } /* END main */ /* prototipo di comando da dare da terminale */ void uso(){ printf(“Uso: server port_number \n”); printf(“ port_number : numero del porto del server \n”); } 178 Configurazione di nodi wireless con supporto della qualità del servizio A.2 Codice del programma Client #include <iostream.h> #include <stdlib.h> #include “client_lat.h” void uso(); /* prototipo di utilizzo */ int main(int argc, char *argv[]){ char ack[4]; int i,j,iter; int nbytes; int sockfd; int servlen; int tosval; int optlen=sizeof(char); char *target; /* /* /* /* /* /* /* /* buffer per ricezione dell’ack */ variabili di ciclo */ byte ricevuti */ descrittore della socket */ lunghezza indirizzo server */ valore del tos */ lunghezza variabile optval */ indirizzo del server */ /* inizializzazione della stringa */ for(j=0;j<dimpack;j++) pacch[j]=‘x’; /* se il comando dato da terminale non prevede tre argomenti */ /* viene visualizzato il prototipo di chiamata */ if(argc!=4){ uso(); exit(1); } /* lettura dei parametri di ingresso */ /* indirizzo del server */ target=argv[1]; /*porto del server e valore del tos */ if(((sscanf(argv[2],”%i”,&port_num))&&(sscanf(argv[3],”%i”,&tosval)))!=1){ uso(); exit(1); } printf(“il client è pronto!\n\n”); /* riempimento della struttura serv_addr */ bzero((char*)&serv_addr,sizeof(serv_addr)); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr(target); serv_addr.sin_port=htons(port_num); /* apertura di una socket TCP (SOCKET STREAM) */ if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0) perror(“client: impossibile aprire la socket di stream\n”); /* connessione al server */ if(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0){ perror(“client: impossibile connettersi al server\n”); exit(1); } 179 Configurazione di nodi wireless con supporto della qualità del servizio /* costruzione del pacchetto */ servlen=sizeof(serv_addr); memset(pacch,35,dimpack); /* settaggio del tos */ if((setsockopt(sockfd,IPPROTO_IP,IP_TOS,&tosval,optlen))<0){ perror(“errore nel settaggio del tos: “); exit(0); } else{ /* inizio invio pacchetti */ for(iter=1;iter<=numpack;iter++){ if((num=sendto(sockfd,pacch,dimpack,0,(struct sockaddr*)&serv_addr,sizeof(serv_addr)))<0){ perror(“errore nella write\n”); exit(0); } /* END if */ } /* END for */ } /* END else */ /* decommentare nel caso si voglia anche la ricezione di un ack if((nbytes=recv(sockfd,ack,sizeof(ack),0))<0){ perror(“socket red failed\n”); exit(0); } */ }/*END main*/ /* prototipo di void uso(){ printf(“Uso: printf(“ printf(“ printf(“ } comando da dare da terminale */ client ip_dot_address port_number tosval\n”); ip_dot_address : indirizzo IP del server\n”); port_num : numbero del porto server\n”); tosval: valore del tos \n”); A.3 Codice della libreria di servizio #include #include #include #include #include #include #include #include #include #include #include #include #include #include <arpa/inet.h> <sys/time.h> <sys/types.h> <sys/param.h> <sys/socket.h> <sys/signal.h> <stropts.h> <netinet/in_systm.h> <netinet/in.h> <netinet/ip.h> <unistd.h> <stdio.h> <ctype.h> <errno.h> 180 Configurazione di nodi wireless con supporto della qualità del servizio #include <string.h> #include <malloc.h> /* definizioni comuni per client-server */ #define dimpack 1200 /* dimensione del messaggio */ #define numpack 15000 /* numero di pacchetti inviati */ char ack[]=“ack”; /* buffer per l’invio di ack */ int port_num; /* porto del server */ int nbytes,totalnbytes,num; /* bytes trasmessi e ricevuti */ char pacch[dimpack]; /* puntatore buffer di ricezione */ /* strutture per gli indirizzi */ struct sockaddr_in serv_addr,cli_addr; struct sockaddr *ptrcli_addr; A.4 Il Makefile CFLAGS= -lnsl CC=g++ PROGS= clean client server all:$(PROGS) client: client.c $(CC) -o client client.c $(CFLAGS) server: server.c $(CC) -o server server.c $(CFLAGS) clean: rm -f $(PROGS) *.o core *.core *.bak 181 Configurazione di nodi wireless con supporto della qualità del servizio Appendice B How-to di installazione La macchina sulla quale è stato testato il sistema HostQs ha le seguenti caratteristiche: • Pentium III 650 MHz; • 256 Mbyte Ram; • 3 Gbyte HDD (per la partizione utilizzata); • scheda wireless Compaq WL100; • sistema operativo Linux, versione del kernel 2.4.26, distribuzione Debian. B.1 Installazione del sistema base Il primo passo da eseguire dopo aver installato il sistema operativo di base è caricare una serie di pacchetti necessari al funzionamento dell’Access Point. Per questo motivo aggiornare il file /etc/apt/sources.list e selezionare uno o più mirror attraverso i quali sia possibile scaricare le ultime versioni dei prodotti software desiderati. Di seguito si riportano i mirror della macchina test: deb http://debian.fastweb.it/debian stable main contrib non-free 182 Configurazione di nodi wireless con supporto della qualità del servizio deb http://debian.fastweb.it/debian-non-US stable/non-US main contrib non-free Utilizzare quindi il comando apt-get per installare i seguenti pacchetti: apt-get install wireless-tools apt-get install iptables apt-get install dhcpd B.2 Compilazione del kernel Si è pronti ora per ricompilare un nuovo kernel; si consigli di utilizzare una versione stabile, preferibilmente 2.4.24 o 2.4.26: make mrproper make dep make menuconfig (o make xconfig per la versione grafica) e impostare le seguenti configurazioni: Code maturity level options [*] Prompt for development and/or incomplete code/drivers 183 Configurazione di nodi wireless con supporto della qualità del servizio Processor type and features (Pentium-MMX) Processor family General setup PCMCIA/CardBus support ---> <*> PCMCIA/CardBus support [*] CardBus support Networking options <*> Packet socket [*] Network packet filtering [*] Socket Filtering [*] TCP/IP Networking [*] IP: multicasting [*] IP: advanced router quindi attivare tutte le sotto-opzioni <*> IP: tunneling All’interno di: Netfilter Configuration Attivare tutte le opzioni come modulo <*> 802.1d Ethernet Bridging --> bridge-utils Network device support <*> Universal TUN/TAP device driver support <*> Ethertap network tap (OBSOLETE) (NEW) Ethernet (10 or 100Mbit) attivare l’opzione relativa alla propria scheda ethernet 184 Configurazione di nodi wireless con supporto della qualità del servizio Wireless LAN (non-hamradio) [*] Wireless LAN (non-hamradio) salvare le impostazioni, uscire e continuare: make dep make clean make bzImage make modules make modules_install cp –i /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.26 cp –i /usr/src/linux/System.map /boot/System.map-2.4.26 rm /vmlinuz ln –s /boot/vmlinuz-2.4.20 /vmlinuz quindi editare il file lilo.conf e lanciare: lilo –t e sperando che il tutto sia andato a buon fine, eseguire finalmente: 185 Configurazione di nodi wireless con supporto della qualità del servizio lilo reboot B.3 Installazione di HostAP e HostQs Adesso il sistema è pronto per l’installazione di HostAP file queue_mgr-0.16.7 9 8 e HostQs: scaricare il o se possibile la versione più aggiornata e seguire le istruzioni di installazione consigliate dal file README di cui si riportano brevemente i passi principali: • decompattare la cartella di HostAP: tar -xzf hostap-driver-0.2.0.tar.gz • patchare l’HostAP per farlo funzionare con il supporto della qualità del servizio: patch -p0 <hostap-add-queue_mgr-support.patch 8 9 http://hostap.epitest.fi/ da http://www.inlab.csp.it/tools/wireless/hostqs/ 186 Configurazione di nodi wireless con supporto della qualità del servizio • selezionare la cartella e installare HostAP: cd hostap-driver-0.2.0 make pccard make install_pccard • a questo punto ritornare nella cartella precedente e installare HostQs: cd.. make make install B.4 Configurazione delle interfacce Editare il file /etc/network/interfaces nel seguente modo: auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto wlan0 187 Configurazione di nodi wireless con supporto della qualità del servizio iface wlan0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 Una volta cambiato il file, riavviare i servizi wireless: /etc/init.d/networking restart Adesso si possono controllare le impostazioni con i comandi ifconfig e iwconfig che restituiscono i seguenti output rispettivamente: wifi0 Link encap:UNSPEC HWaddr 00-50-8B-99-B7-FF UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:5 Base address:0x100 wlan0 Link encap:Ethernet HWaddr 00:50:8B:99:B7:FF inet addr:192.168.1.0 Bcast:192.168.1.255 UP BROADCAST RUNNING MULTICAST MTU:1500 Mask:255.255.255.0 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 188 Configurazione di nodi wireless con supporto della qualità del servizio collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:5 Base address:0x100 e wlan0 IEEE 802.11b ESSID:”test” Mode:Master Frequency:2.422GHz Bit Rate:11Mb/s Access Point: 00:50:8B:99:B7:FF Tx-Power:11 dBm Retry min limit:8 RTS thr:off Sensitivity=1/0 Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Rx invalid nwid:0 Noise level:0 Rx invalid crypt:0 Tx excessive retries:0 Rx invalid frag:0 Invalid misc:284 Missed beacon:0 B.5 Impostazione del DHCP Finalmente l’Access Point è perfettamente funzionante ma non permette ancora la condivisione della connessione: tutto ciò che rimane da fare è configurare il DHCP editando il file /etc/dhcpd.conf nel seguente modo: #ddns-update-style none; subnet 192.168.1.0 netmask 255.255.255.0 { # default gateway option routers 192.168.1.1; option subnet-mask 255.255.255.0; 189 Configurazione di nodi wireless con supporto della qualità del servizio option domain-name-servers 217.9.64.220, 217.9.64.3, 217.9.64.71; option domain-name “napoli.consorzio-cini.it”; host hostqs { range 192.168.1.1 192.168.1.254; } E quindi rilanciare il servizio DHCP: /etc/init.d/dhcp restart B.6 Impostazione del NAT Il NAT (Network Address Translation) verrà realizzato utilizzando le iptables: echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE a questo punto dovrebbe essere possibile un ping a un qualunque sito web. Così impostate, le funzioni delle iptables non si conservano e per renderle definitivamente operative si crea uno script nel seguente modo: 190 Configurazione di nodi wireless con supporto della qualità del servizio vi /etc/init.d/iptables-rules e all’interno del relativo file si editano le seguenti linee: #!/bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Quindi per rendere questo script automaticamente eseguibile all’avvio e per dargli tutti i permessi di cui ha bisogno: cp iptables-rules /etc/init.d/ update-rc.d iptables-rules defaults chmod 775 /etc/init.d/ iptables-rules 191 Configurazione di nodi wireless con supporto della qualità del servizio Bibliografia [1] R. Braden, D. Clark, S. Shenker, “Integrated Services in the Internet Atchitecture: an Overview”, RFC1633, Giugno 1994 [2] R. Braden, L. Zhang, S. Berson, S. Herzog, S. Jamin, “Resource Reservation Protocol”. RFC2205, Settembre 1997 [3] S. Shenker, J. Wroclawsky, “General Characterization Parametres for Integrated Service Network Elements” RFC2215, Settembre 1997 [4] D. Hoffman, “Implementation Report on the LBL/UCL/Sun CBQ kernel”, Presentation to the RSVP Working Group of the IETF, Luglio 1994 [5] J. Wroclawski, “Specification of the Controlled-Load Network Element Service”, RFC 2211, Settembre 1997 [6] S. Shenker, C. Partridge and R. Guerin, “Specification of Guaranteed Quality of Service”, RFC2212, Settembre 1997 [7] Y. Bernet, R. Yavaktar, P. Ford, F. Baker, L. Zhang, K. Nichols, M. Speer, “A Framework for use of RSVP with DiffServ Networks”, Internet drafts, IETF, Novembre 1998, draft-ietf-diffserv-rsvp-01.txt [8] S. Shenken, C. Patridge, R. Guerin, “Specification of Garanteed Quality of Service”, Technical Report rfc2212, Settembre 1997 [9] S.P. Romano, J.F. de Rezende, C. Deleuze, S. Fdida, “Integrated QoS Architecture for IP Switching” in proc. of 7th Workshop of High Speed Networks (HSH’97), Stoccarda (D), Ottobre 1997 192 Configurazione di nodi wireless con supporto della qualità del servizio [10] S. Blanke, D. Blanck, M. Clarlson, E. Davies. Z. Wang. W. Weiss, “An Architecture of Differentiated Service”, RFC2475, Dicembre 1998 [11] Y. Bernet, J. BInder, S. Blanke, M. Carlson, S. Keshav, E.Davies, B. Ohlman, D. Verma, W. Weiss, “A Framework for Differentiated Services”, Internet drafts, Differentiated Service, Ottobre 1998, drafts-ietf-diffservframework-01.txt [12] K. Nahrstedt, J. Smith, “A Service Kernel in Multimedia End-Stations”, Distributed System Lab, University of Pennsylvania, 1998 [13] S. Quarterman, M.J. Karels, K. Bostic, M.K. McKusick, “The Design and Implementation of the 4.4BSD Operating System”, Addision-Wesley Publishing Company, Inc., 1996 [14] H. Frank Cervone, “SOLARIS Performance Administration”, McGraw Hill, 1998 [15] K. Wall, M. Watson, M. Whitis, “Linux Programming Unleashed”, Macmillan Computing Publishinh, 1999 [16] S. Mangold, S. Choi, P. May, O. Klein, G. Hiertz, L. Stibor, “IEEE 802.11e Wireless LAN for Quality of Service” [17] S. Park, D. Kim, K. Kim, S. Choi, S. Hong, “ Collaborative QoS Architecture between DiffServ and 802.11e Wireless LAN. In IEEE VTC’03-Spring, 2003” [18] D. Gu, J. Zhang, “QoS Enhancement in IEEE802.11 Wireless Local Area Networks” IEEE Communications Magazine, 2003. [19] Project IST 1999-10469 SUITED, Deliverable D4, “Mobility Management Specification Document” [20] V. Marziale, P. Conforto, G. Lo Squadro, F. Delli Priscoli, “Inter-Segment Handover (ISHO) in a integrated terrestrial-satelite mobile communication sysyem: scenario and proposal” [21] Floyd Wilder, “A guide to the TCP/IP Protocol suite”, Wilder [22] O. Kolesnikov, R. Kurane, “Mobile IP”, Giugno 2000 193 Configurazione di nodi wireless con supporto della qualità del servizio [23] C. Perkins, RFC 2002: IP Mobility Support, Ottobre 1996 [24] Andrew S. Tanenbaum, “Comuter Networks”, Prentice Hall [25] Fumio Teraoka, Yasuhiko Yokote, Mario Tokoro, “A Network Architecture Providing Host Migration Transparency, “ Proc. ACM SIGCOMM’91, pp. 209-220, Settembre 1991 [26] John Ioannidis, Dan Duchamp, Gerald Q. Maguire Jr, “IP-Based Protocols for Mobile Interworking,” Proc ACM SIGCOMM’91, pp. 235-245, Settembre 1991 [27] Charles Perkins, Andrew Myles, David B. Johnson, “IHMP: A Mobile Host Protocol for the Internet,” Computer Networks and ISDN Systems, 27(3), Dicembre 1994 [28] Ramon Caceres, Venkata N. Padmanabhan, “Fast and Scalable Handoffs for Wireless Internetworks,” Proc. ACM Conference on Mobile Computing and Networking (Mobicom’96), pp. 56-66, 1996 [29] Andrew Myles, David Skellern, “Comparing Four IP Based Mobile Host Protocols,” Computer Networks and ISDN Systems, pp. 349-356, Novembre 1993 [30] Pravin Bhagwat, Charles Perkins, Satish Tripathi, “Network Layer Mobility: an Architecture and Survey,” IEEE Personal Communications Magazine, Vol. 3, No. 3, pp. 54-64, Giugno 1996 [31] Charles Perkins, editor, “IP Mobility Support,” Internet RFC 2002, Ottobre 1996 [32] David B. Johnson, Charles Perkins, “Route Optimization in Mobile IP,” Internet Draft, draft-ietf-mobileip-optim-07.txt, Novembre 1998, Work in Progress [33] David B. Johnson, Charles Perkins, “Mobility Support in IPv6,” Internet Draft, draft-ietf-mobileipipv6-07.txt, Novembre 1998, Work in Progress [34] M. Mouly, M-B. Pautet, “The GSM System for Mobile Communications”, ISBN 2-9507190-0-7, 1992 194 Configurazione di nodi wireless con supporto della qualità del servizio [35] IEEE 802.11 WG, Supplemento alla Parte II dedicata al livello Wireless Medium Access Control (MAC) e al livello Fisico (PHY) Specifications: MAC Enhancements for Quality of Service, IEEE 802.11e Draft 5.0, Luglio 2003 [36] G. Bianchi, I. Tinnirello, “Analysis of Priority Mechanisms Based on Differentiated Inter Frame Spacing in CSMA-CA,” IEEE VTC-Fall, Orlando, FL, Ottobre 2003 [37] S. Mangold, S. Choi, G. R. Hiertz, O. Klein, B. Walke, “Analysis of IEEE 802.11e for QoS Support in Wireless LANs,” IEEE Wireless Communications Mag., Dicembre 2003, pp. 40–50. [38] A. Grilo, M. Nunes, “Performance evaluation of IEEE 802.11e,” IEEE PIMRC’02, Lisboa, Portugal, Settembre 2002 [39] S. Choi, J. del Prado, S. Shankar N, S. Mangold, “IEEE 802.11e ContentionBased Channel Access (EDCF) Performance Evaluation,” IEEE ICC 2003, Anchorage, Alaska, Maggio 2003 [40] A. Lindgren, A. Almquist, O. Schel´en, “Quality of Service Schemes for IEEE 802.11 Wireless LANs - An Evaluation,” MONET, Special Issue on Performance Evaluation of Qos Architectures in Mobile Networks, Vol 8, No 3, Giugno 2003, pp. 223–35. [41] http://hostap.epitest.fi/ [42] http://www.inlab.csp.it/tools/wireless/hostqs/ [43] http://streaming.polito.it/fenice.shtml [44] ITU-T Recommendation P.862 195