Salvatori 2006-07
Transcript
Salvatori 2006-07
Università degli studi di Roma “La Sapienza” Facoltà di Ingegneria Corso di laurea in Ingegneria delle Telecomunicazioni Tesi di laurea Universal Plug & Play Relatore: Prof. Roberto Cusani Laureando: Riccardo Salvatori Co-relatore: Ing. Tiziano Inzerilli Anno Accademico 2006-2007 Indice Indice...................................................................................................................................................... 2 Capitolo 1................................................................................................................................................... 4 Service discovery: stato dell’arte ........................................................................................................... 4 1.1 Introduzione ........................................................................................................................ 4 1.2 Service Discovery ............................................................................................................... 6 1.2.1 L’evoluzione del service discovery ................................................................................ 6 1.2.2 Gli elementi fondamentali del service discovery............................................................ 7 1.2.3 Requisiti del service discovery per il nomadic computing ........................................... 12 1.3 Caratteristiche generali di UPnP™ ................................................................................... 14 1.4 UPnP Forum...................................................................................................................... 16 1.5 Componenti di una rete UPnP........................................................................................... 16 1.5.1 Periferiche .................................................................................................................... 17 1.5.2 Servizi .......................................................................................................................... 17 1.5.3 Punti di controllo.......................................................................................................... 19 1.6 Panoramica sui protocolli UPnP ....................................................................................... 19 1.7 Protocolli specifici di UPnP .............................................................................................. 21 1.7.1 TCP/IP.......................................................................................................................... 21 1.7.2 HTTP............................................................................................................................ 21 1.7.3 SDDP............................................................................................................................ 22 1.7.4 GENA........................................................................................................................... 23 1.7.5 SOAP............................................................................................................................ 24 1.7.6 XML............................................................................................................................. 24 1.8 Stack protocollare di UPnP ............................................................................................... 25 1.9 Fasi della connettività di UPnP ......................................................................................... 26 1.9.1 Indirizzamento.............................................................................................................. 27 1.9.2 Rilevazione................................................................................................................... 27 1.9.3 Descrizione................................................................................................................... 30 1.9.4 Controllo ...................................................................................................................... 31 1.9.5 Gestione degli eventi .................................................................................................... 33 1.9.6 Presentazione................................................................................................................ 34 1.10 Analisi dello standard UPnP ............................................................................................. 35 1.10.1 Requisiti di UPnP per il service discovery ................................................................... 36 1.10.2 Vantaggi di UPnP......................................................................................................... 36 1.10.3 Svantaggi di UPnP ....................................................................................................... 38 Capitolo 2................................................................................................................................................. 41 Descrizione del contesto applicativo.................................................................................................... 41 2.1 Introduzione ...................................................................................................................... 41 2.2 Contesto di gestione dell’ambiente domestico.................................................................. 43 2.3 Requisiti di una rete domestica ......................................................................................... 45 2.4 Modello di rete domestica UPnP....................................................................................... 46 2.5 UPnP Script di una rete domestica.................................................................................... 47 2.6 Sequence diagram dell’UPnP script.................................................................................. 60 2.7 Come creare una rete domestica UPnP: il software Intel® ............................................... 62 2.8 Il software Intel® per la tecnologia UPnP™..................................................................... 63 2.9 Esempio di costruzione di un device: Micro Light Bulb................................................... 66 2.9.1 Descrizione del dispositivo Micro Light Bulb.............................................................. 67 2.9.2 Descrizione dei servizi Micro Light Bulb: SwitchPower ............................................. 68 2 2.9.3 Descrizione dei servizi Micro Light Bulb: DimmingService ....................................... 68 2.9.4 Progettazione dei servizi di Micro Light Bulb ............................................................. 69 2.9.5 Generazione dello stack UPnP di Micro Light Bulb .................................................... 71 2.9.6 Codice sorgente generato ............................................................................................. 77 2.10 Simulazione connettività UPnP: scenario 1 ...................................................................... 77 2.11 Simulazione connettività UPnP: scenario 2 ...................................................................... 83 Capitolo 3................................................................................................................................................. 86 Analisi e sviluppo del progetto............................................................................................................. 86 3.1 Introduzione ...................................................................................................................... 86 3.2 Scenario di riferimento...................................................................................................... 87 3.3 Problema aperto: contese d’accesso .................................................................................. 89 3.4 Architettura AV UPnP: descrizione generale.................................................................... 90 3.5 Descrizione del dispositivo AV Media Server .................................................................. 91 3.5.1 Descrizione servizi AV Media server: Content Directory............................................ 92 3.5.2 Descrizione servizi AV Media server: Connection Manager ....................................... 92 3.5.3 Descrizione servizi AV Media server: AV Transport .................................................. 93 3.6 Descrizione del dispositivo AV Media Renderer.............................................................. 94 3.6.1 Descrizione servizi AV Media renderer: Rendering Control ....................................... 95 3.7 Architettura QoS UPnP: descrizione generale .................................................................. 95 3.7.1 Descrizione servizi architettura QoS: QoS Policy Holder............................................ 97 3.7.2 Descrizione servizi architettura QoS: QoS Manager.................................................... 98 3.7.3 Descrizione servizi architettura QoS: QoS Device Service.......................................... 98 3.8 Architettura AV/QoS UPnP: descrizione generale............................................................ 99 3.9 Architettura AV/QoS UPnP: sequence diagram generale ............................................... 100 3.6.1 Fase 1: Scoperta dei device ........................................................................................ 101 3.6.2 Fase 2: Visualizzazione dei contenuti AV.................................................................. 101 3.6.3 Fase 3: Visualizzazione protocolli/formato dati supportati ........................................ 102 3.6.4 Fase 4: Matching protocolli/formato dati supportati .................................................. 103 3.6.5 Fase 5: Configurazione dispositivi AV ...................................................................... 104 3.6.6 Fase 6: Selezione contenuti AV ................................................................................. 105 3.6.7 Fase 7: Rendering control........................................................................................... 106 3.6.8 Fase 8: Inizio contese ................................................................................................. 107 3.6.9 Fase 9: Inizio contese ................................................................................................. 108 Fase : Chiusura della connessione ............................................................................................ 110 Bibliografia ........................................................................................................................................ 115 Documenti .......................................................................................................................................... 117 Link .................................................................................................................................................... 117 3 Capitolo 1 Service discovery: stato dell’arte 1.1 Introduzione Lo sviluppo delle tecnologie di comunicazione wireless ha portato in questi ultimi anni a risultati fino a poco tempo fa insperati e ha contemporaneamente dato nuova linfa ai processi di sviluppo e ricerca relativi alla comunicazione tra dispositivi fisici, aprendo di fatto una nuova era per la progettazione in ambito informatico. La diffusione e il crescente successo di device mobili come laptop computer, PDA (Personal Digital Assistant) e telefoni cellulari ha contribuito all’accelerazione dell’utilizzo della tecnologia wireless e alla sua rapida evoluzione nel campo della comunicazione multimediale. Oggi la tecnologia wireless si è imposta con vigore sul mercato come valida alternativa ai sistemi wired e ha permesso lo sviluppo di nuovi sistemi per l’iterazione tra componenti fisici, soprattutto in ambiente mobile, grazie alla creazione di apposite reti per l’interscambio di informazioni applicative. Le mobile ad-hoc network (Manet) permettono una distribuzione nello spazio in modo dinamico, in quanto i loro nodi sono costituiti essenzialmente da device portatili, come palmari e cellulari. Si capisce come una rete di questo tipo non possa fare affidamento sulle comuni tecniche di distribuzione dei dati, in quanto si dovrà tenere conto di molti aspetti, come la continua trasformazione della rete e la limitatezza delle risorse messe a disposizione, che esulano dai tipici aspetti legati alle infrastrutture wired. I recenti progressi nelle tecnologie di comunicazione e nei modelli dell’ingegneria del software, conducono verso nuovi scenari applicativi nell’ambito dell’elaborazione distribuita. Le 4 nuove tecnologie di connessione senza filo permettono l’evoluzione dei sistemi distribuiti tradizionali verso i sistemi di nomadic computing, caratterizzati dalla presenza di un’infrastruttura di rete fissa alla quale possono connettersi diverse infrastrutture di rete mobili. Gli utenti di questi nuovi sistemi portano con sé le proprie apparecchiature mobili (PDA, laptop, mobile phone di ultima generazione e così via) tramite le quali interagiscono con l’ambiente che li circonda, usufruendo dei servizi da esso offerti. La figura 1 mostra un possibile scenario di nomadic computing. Figura 1: Esempio di Nomadic Computing. Un aspetto molto importante in questo senso è la procedura di service discovery che permette la scoperta, da parte di un determinato dispositivo, dei device fisici ad esso più vicini e dei sevizi che quest’ultimi mettono a disposizione dei componenti della rete wireless a cui appartengono. Attualmente sono presenti sul mercato diversi standard in grado di effettuare service discovery, tra i quali citiamo: 5 Service Location Protocol (SLP), sviluppato da IETF, Jini, Salutation, Universal Plug and Play (UPnP), sviluppato da Microsoft®, Bluetooth Service Discovery Protocol (SDP). Questo capitolo offrirà una descrizione generale del service discovery ed in particolare del protocollo UPnP, il più recente tra questi, analizzando tutti i vantaggi che questa soluzione offre. Inoltre verranno evidenziate le limitazioni di cui l’attuale versione soffre e che potrebbero condizionare l’evoluzione futura. 1.2 Service Discovery Service discovery è un termine usato per descrivere i protocolli e i meccanismi attraverso cui un dispositivo o componente software diviene consapevole della rete a cui è connesso e scopre quali servizi sono disponibili. Le tecnologie di service discovery sono state sviluppate per semplificare l’uso di dispositivi mobili in una rete permettendo loro di essere scoperti, configurati ed usati da altri dispositivi con uno sforzo minimo da parte dell’utente. La fase di service discovery termina con l’indicazione della disponibilità di uno o più servizi corrispondenti a quelli richiesti. Al service discovery, segue poi una fase di service delivery composta principalmente da due parti: il modo in cui accedere al servizio ed il suo vero e proprio utilizzo. 1.2.1 L’evoluzione del service discovery Il recente progresso nei sistemi distribuiti ha condotto anche all’evoluzione delle tecniche di service discovery. Per sistemi relativamente statici, come i sistemi distribuiti 6 tradizionali, il service discovery può essere ottenuto attraverso tool di configurazione manuali o semiautomatici: la configurazione può essere fatta una volta durante l’installazione del sistema e mantenuta manualmente da un amministratore. Con l’avvento dei dispositivi mobili, i servizi e le applicazioni possono agganciarsi e lasciare la rete abbastanza frequentemente, rendendo questo approccio senz’altro poco scalabile. Inoltre, l’evoluzione tecnologica degli ultimi tempi sta diffondendo tutta una serie di nuovi dispositivi (PDA, smart phone, ecc …) che grazie alle nuove connettività di rete di tipo wireless dovrebbero poter comunicare tra di loro in maniera spontanea e con uno sforzo di configurazione minimo. Per far sì che questi dispositivi diventino sempre più diffusi nel vivere quotidiano, è indispensabile che essi abbiano caratteristiche di semplicità, versatilità e usabilità e che siano in grado di configurarsi da soli. Tutte queste caratteristiche devono essere offerte dal software in esecuzione su tali dispositivi e tale software deve essere progettato accettando l’ipotesi che non ci sia necessariamente una persona in grado di effettuare configurazioni manuali dei servizi di rete. A sostegno dello sviluppo di questo nuovo tipo di applicazioni non possono quindi mancare tecniche di service discovery completamente automatiche, quale semplice mezzo per scoprire i servizi dell’ambiente circostante senza averne conoscenza a priori. 1.2.2 Gli elementi fondamentali del service discovery Un protocollo di discovery è caratterizzato in generale da diverse entità: i servizi, un’entità che richiede servizi (client agent), un’entità che li offre (service agent) ed un’entità che cataloga tutti i servizi disponibili nell’ambiente (registry). In particolare, gli elementi citati possono essere definiti come segue: Service; è un entità logica, definita da un interfaccia pubblica o descrittore; Client agent; è il componente software o dispositivo che cerca i servizi di cui ha bisogno. Nella letteratura delle SOA (Service Oriented Architetture) , tale componente prende il nome di service requestor. Service agent; è il componente software che implementa un servizio coerentemente al suo descrittore e lo mette a disposizione dei client agent. Relativamente alla definizione 7 data nelle SOA, tale componente è anche denominato service provider. Si osservi che un service agent può anche comportarsi come client agent se necessita di ricercare altri servizi per portare a termine le proprie elaborazioni. Registry; il registry, o service locator nel gergo delle SOA, rappresenta il luogo dove le informazioni sui servizi disponibili nell’ambito di rete vengono memorizzate e risponde alle richieste di pubblicazione e ricerca dei servizi. Tipicamente il registry contiene una entry per ogni servizio pubblicato da un service agent e organizza le varie entry in una struttura logica diversa a seconda della particolare soluzione (albero, grafo, lista, database relazionale o ad oggetti e così via). Ogni entry consiste nel descrittore del servizio. In particolare è possibile definire due tipi di organizzazione dei registry: flat oppure gerarchica. Nel primo caso client e service compongono una rete di tipo peerto-peer, scambiandosi informazioni tra di loro. Nel secondo caso i servizi a cui si può accedere sono ordinati con struttura gerarchica. DNS (Domain Name System) è un esempio di questo tipo. Il registry può essere implementato sia localmente ai dispositivi che offrono servizi che esternamente ad essi. Nello standard UPnP, per esempio, il registry è interno ai dispositivi che offrono i servizi alla rete. Nel caso di registry esterno, esso può essere sia centralizzato che distribuito. In uno schema centralizzato tutte le informazioni sui servizi sono contenute all’interno di un’unica locazione di memoria, con pesanti ripercussioni sulla robustezza del sistema. Infatti, in questo caso, l’intero sistema avrà nel registry un bottleneck e un single point of failure contemporaneamente. La soluzione che adotta un registry distribuito sembra essere invece la migliore, in quanto il guasto di alcune locazioni di memoria danneggerebbe soltanto una porzione del sistema. Inoltre potendo disporre di minore informazione su ciascuna locazione, si avrebbe maggiore efficienza. E’ bene osservare che l’esito della fase di discovery può condurre alla localizzazione di servizi anche fisicamente distanti dal dispositivo che ospita il client agent che ne ha fatto richiesta, impedendo talvolta l’utilizzo del servizio (si pensi ad esempio ad un servizio di stampa). Per i sistemi di nomadic computing risulta dunque essenziale introdurre il principio di boundary, secondo cui i sistemi vanno progettati in maniera da dividere l’ambiente di ricerca in zone con confini ben delineati; in questo modo la 8 richiesta di service discovery può fare esplicito riferimento a servizi all’interno di un preciso boundary o all’esterno di esso. Al fine di ricercare un servizio, o una risorsa, è necessario definire un meccanismo unico di identificazione, ovvero un name space (insieme di identificatori utilizzati per caratterizzare una entità precisa tra un insieme di oggetti). Infatti ogni servizio ha un nome e tramite questo viene ricercato, invocato ed infine utilizzato dal client agent che ne fa richiesta. In aggiunta è possibile fare uso di un name space descrittivo, cioè caratterizzato dalla presenza di attributi, i cosiddetti service attributes, con i quali fornire dettagli circa l’entità rappresentata permettendo anche una ricerca più precisa del servizio di cui si ha necessità. Di fatto un name space del genere permette di non dover conoscere a priori nemmeno il nome logico della risorsa cercata. Questo approccio di ricerca è caratterizzato dal fatto che è il client a cercare il servizio che desidera (user selection), aumentando l’interoperabilità tra le risorse, in quanto la semantica degli attributi consente di accrescere la flessibilità della ricerca dei servizi. Il protocollo di discovery ritornerà la lista dei servizi che rispondono ai service attributes selezionati dal client (service matching) oppure una selezione dei migliori tra questi. Viveversa esistono alcuni protocolli di service discovery che decidono di quali servizi il client ha bisogno oppure offrono una lista di servizi disponibili rendendo meno complessi i programmi del client e riducendo il costo computazionale della ricerca (protocol selection). Relativamente al caso di user selection, è necessario definire un linguaggio con il quale descrivere servizi o dispositivi, ovvero un lessico ed una sintassi attraverso cui mostrare il loro identificativo, il loro nome, i loro attributi, e tutto ciò che li distingue dagli altri servizi. Ad ogni servizio sarà così associato un descrittore che lo caratterizza e ne consente la ricerca in base alle sue peculiarità. In particolare, un descrittore può visto come un record di n campi (service attributes) del tipo: [service_ID, service_type, service_name, manufacturer_ID, version, property_1,…, property_m, comment, ecc…] Il linguaggio adottato dal protocollo di service discovery serve a stabilire il formato di questo record. Nel seguito indicheremo il descrittore di servizio con il termine Service Description Record o più brevemente SDR. Per ogni servizio, l’informazione che lo 9 riassume o meglio l’SDR, può essere disponibile in singola copia, in copie multiple oppure replicato in ogni locazione di memoria, se il sistema dispone di registry distribuito. Un protocollo di discovery definisce l’insieme delle regole che client e service agent devono rispettare per interagire. Per rendere noto un nuovo servizio nell’ambiente oppure semplicemente per notificare un certo cambiamento di stato, un service agent deve pubblicare la sua disponibilità, ricorrendo al meccanismo di service advertisement. L’operazione di pubblicazione può avvenire in diversi modi, a seconda della presenza del registry esterno ai dispositivi che offrono i servizi o assenza di quest’ultimo: nel primo caso, il service agent deve dapprima individuare il registry per poi inviargli l’SDR che descrive il servizio messo a disposizione; nel secondo caso l’SDR è memorizzato nel repository locale al service provider, che si cura di notificare la disponibilità di un nuovo servizio a tutti i potenziali client agent dell’ambiente (come avviene nell’UPnP). La rimozione del servizio dall’ambiente può essere effettuata esplicitamente dal service agent (meccanismo hard state) oppure ottenuta tramite meccanismi soft state, nei quali la validità dei servizi offerti è limitata nel tempo. In questo caso l’aggiornamento delle informazioni sui servizi viene ottenuta tramite il meccanismo di leasing, nel caso di presenza di registry esterno, o tramite advertisement periodico, il caso di sua assenza. Il leasing consente di rimuovere dal registry i servizi il cui periodo di “affitto” nel registro è scaduto senza essere rinnovato. L’advertisement periodico, invece, consente ai client agent di non fare più riferimento a servizi che non vengono più “avvisati” dai rispettivi service provider che probabilmente hanno abbandonato l’ambiente. Il meccanismo di service advertisement, basato sull’invio periodico di notifiche ai client agent, è considerato una valida alternativa al meccanismo di query, il quale si caratterizza dal fatto che è il client agent che interroga i registry o i service agent allo scopo di ottenere le informazioni necessarie sullo stato della rete. Per ricercare un servizio nell’ambiente, un client agent ricorre al meccanismo del service discovery. Un client che esplicita una richiesta di service discovery dovrà dapprima localizzare l’infrastruttura di discovery a cui rivolgere la query di ricerca (il registry o direttamente i singoli service provider) e successivamente inoltrarla per 10 ottenerne l’esito. La query consiste di un SDR, più o meno compilato nei suoi campi, che viene inoltrato al registry o direttamente ai service provider. L’esito della query si ottiene effettuando il matching del record sottoposto con tutti quelli memorizzati nel registry o nei repository locali ai service provider. Si evince, dunque, che sono possibili diverse modalità di service discovery, in base a come viene dettagliato l’SDR nella query: Ricerca di uno specifico servizio; tale service discovery si ottiene sottoponendo un SDR specificato in tutti i suoi campi o in un insieme di attributi tali da individuare univocamente il servizio. L’esito della query consiste nel restituire la disponibilità di al più un servizio. Ricerca per classe di servizi; tale service discovery si ottiene sottoponendo un SDR specificato in uno o più campi tali da individuare una specifica classe di servizi (ad esempio, stampanti a colori, traduttori inglese-italiano, …). La query in questo caso viene soddisfatta assumendo che i campi nulli siano jolly e permette di partizionare l’insieme dei servizi disponibili in classi di servizio. L’esito della query consiste nel restituire la disponibilità di 0/n servizi. Browsing dei servizi; tale service discovery si adotta quando non si conosce alcun attributo del servizio ed in realtà consiste più in un’esplorazione dell’ambiente circostante che in una vera e propria richiesta di service discovery. Formalmente può essere rappresentata da un SDR in cui tutti i campi sono nulli e tale da indicare che il client agent è interessato ad ottenere la descrizione di tutti i servizi o dispositivi disponibili. L’esito della query consiste nel restituire la disponibilità di tutti i servizi presenti. E’ importante che le modalità di discovery siano implementate nel rispetto del principio di boundary. In questo modo le modalità di ricerca descritte possono essere confinate all’interno di una certa area di ricerca o estese al suo esterno. Tra le caratteristiche che un service discovery dovrebbe avere occorre aggiungere, inoltre, quella di scopeawareness, ovvero il principio secondo cui i servizi fisicamente vicini dovrebbero essere raggruppati allo scopo di facilitare i meccanismi di ricerca e fruizione del servizio. Infine il protocollo di service discovery dovrà garantire QoS-awareness, 11 ovvero restituire i servizi disponibili trovati rispettando alcuni criteri relativi alla qualità del servizio, come il carico massimo o il prezzo di servizio. La figura 2 riassume gli elementi fondamentali del service discovery descritti in questo paragrafo, con riferimento all’uso di un registry centralizzato esterno ai dispositivi che offrono servizi. Figura 2: Gli elementi fondamentali del service discovery. 1.2.3 Requisiti del service discovery per il nomadic computing Di seguito verranno tracciati i requisiti funzionali che deve possedere un’infrastruttura di service discovery affinchè sia possibile gestire con successo i sistemi di nomadic computing. Questi sono: Supporto alla mobilità; la mobilità consiste nel movimento dei dispositivi tra aree diverse e le loro connessioni/disconnessioni da quest’ultime. Le tecniche di discovery devono consentire la scoperta dei servizi a prescindere dalla posizione corrente del dispositivo e dal suo stato (connesso o meno all’infrastruttura dell’ambiente di nomadic computing). Supporto alla dinamicità; Il supporto alla dinamicità può essere affrontato a partire da due punti di vista: 12 Gestione della disponibilità dei servizi; la mobilità dei dispositivi e l’inaffidabilità delle connessioni possono influenzare la disponibilità di un servizio. E’ importante che nella fase di service discovery vengano scoperti solo i servizi effettivamente disponibili. Supporto alle variazioni di contesto; in un ambiente di nomadic computing il contesto di esecuzione è fortemente dinamico e influenzato da numerosi fattori. Il protocollo di service discovery deve fornire descrizioni di servizio che rappresentino anche il contesto elaborativo circostante, nonché consentire ricerche basate sulle informazioni di contesto. In altri termini, è necessario conferire caratteristiche di context-awareness all’infrastruttura di discovery. Completezza del meccanismo di ricerca; è importante che un protocollo di discovery fornisca un insieme completo di modalità di ricerca (per specifico servizio, per classe di servizi e browsing). Definizione del confine di ricerca; il principio di boundary permette al client agent di delimitare il confine della ricerca, traendo di conseguenza anche un vantaggio dal punto di vista delle prestazioni (un confine più ampio comporta una ricerca più vasta). L’introduzione dei requisiti funzionali descritti conduce alla definizione di una metrica funzionale per la caratterizzazione dei protocolli di service discovery: un protocollo di service discovery può essere classificato in base alla presenza o meno di una parte o di tutte le modalità di ricerca definite (per specifico servizio, per classe di servizio, browsing), in base al supporto offerto alla mobilità e dinamicità e in base all’implementazione o meno di meccanismi che consentano di rispettare il principio di boundary. La definizione dell’infrastruttura di discovery deve poi tenere presenti anche i seguenti requisiti non funzionali: Scalabilità del meccanismo di discovery; un protocollo di service discovery deve adottare scelte che consentano facilmente di aumentare il fattore di scala per gli ambienti per i quali esso è progettato. In altre parole è indispensabile che esso non introduca un carico (in termini di traffico generato e overhead computazionale) eccessivo al crescere delle dimensioni del sistema. 13 Semplicità del meccanismo di discovery; negli ambienti di nomadic computing possono essere presenti dei dispositivi mobili con scarse capacità elaborative. E’ necessario che il software a supporto del service discovery non introduca un carico computazionale e di memoria pesante nei dispositivi nomadi. Eterogeneità; data la diversità dei dispositivi e dei servizi che questi offrono, il protocollo di discovery deve definire un formato per la descrizione dei servizi quanto più generale possibile. Affidabilità; l’infrastruttura di discovery svolge un ruolo fondamentale nel processo di fruizione di un servizio: un malfunzionamento in tale infrastruttura si ripercuote anche sul successivo processo di delivery. E’ pertanto essenziale conferire caratteristiche di affidabilità a tale infrastruttura. Trasparenza; il meccanismo di discovery deve garantire trasparenza all’interazione, cioè essere in grado di offrire un’interfaccia che elimini le barriere tra utente e funzionamento del sistema. Sicurezza; utenti maliziosi non dovrebbero avere accesso ai servizi “sicuri”. Bisogna prevedere nella definizione del protocollo meccanismi per la garanzia della sicurezza in termini di autenticazione, integrità e confidenzialità. I requisiti non funzionali elencati sono sicuramente utili a stabilire la qualità di un protocollo di discovery. Più un protocollo di discovery risponde a tali requisiti, maggiore può essere considerata la sua qualità. 1.3 Caratteristiche generali di UPnP™ Universal Plug and Play (UPnP) è un’architettura per reti peer-to-peer costituite da dispositivi intelligenti, dispositivi wireless e PC di ogni tipo. L’inserimento delle funzionalità Plug and Play nel sistema operativo dei vari dispositivi che popolano la rete, permette di installare, configurare e aggiungere periferiche ai PC in maniera semplice e automatica. Universal Plug and Play porta questa semplicità all’intera rete, 14 consentendo di individuare e controllare dispositivi, periferiche e servizi di rete, quali stampanti in rete, gateway Internet e apparecchiature elettroniche. Sebbene fu introdotta come un’estensione del modello Plug and Play per le periferiche, la tecnologia UPnP è più di una semplice estensione del modello Plug and Play. Questa tecnologia è stata sviluppata per supportare le reti a “configurazione nulla” e il rilevamento automatico di un’ampia gamma di categorie di dispositivi e periferiche di numerosissimi produttori. Con Universal Plug and Play un dispositivo può entrare in rete in modo dinamico, ottenere un indirizzo IP, mettere a disposizione le sue funzionalità e rilevare la presenza e le funzionalità di altri dispositivi, il tutto automaticamente e praticamente senza alcun intervento di configurazione da parte degli utenti o degli amministratori. L’universalità di UPnP è data, infatti, dalla mancanza di driver specifici e per l’uso di protocolli comuni largamente diffusi. I dispositivi e le periferiche possono, quindi, comunicare direttamente fra loro, dando vita a reti peer-to-peer. Universal Plug and Play trova già impiego in molti settori, ma soprattutto potrà contribuire alla realizzazione di nuovi sistemi, ad esempio nei settori dell’automazione delle abitazioni, della stampa e della realizzazione di immagini, dell’intrattenimento audio e video, degli elettrodomestici, delle reti per autovetture e così via. UPnP utilizza i protocolli TCP/IP e Internet standard, che permettono un’integrazione perfetta nelle reti esistenti. Grazie all’impiego di questi protocolli standardizzati, UPnP è in grado di sfruttare moltissime soluzioni e tecnologie, a vantaggio di un’interoperabilità sempre più completa. UPnP è un’architettura di rete aperta e distribuita, definita dai protocolli utilizzati, indipendente dal sistema operativo, dal linguaggio di programmazione o dal supporto fisico (ad esempio Internet). 15 1.4 UPnP Forum Allo Universal Plug and Play Forum spetta il compito di definire le cosiddette "UPnP Device and Service Descriptions" (originariamente dette Device Control Protocols o DCP) sulla base di un'architettura comune realizzata con il contributo di Microsoft®. Universal Plug and Play Forum è un gruppo intersettoriale composto da imprese e singoli individui, che ha la responsabilità di definire le specifiche per le periferiche e i servizi UPnP. Costituito il 18 ottobre 1999, raggruppa oltre 340 produttori leader nei settori dell'elettronica, dei sistemi informatici, dell’automazione e della sicurezza domestica, degli apparecchi elettrodomestici, delle reti di computer e dei dispositivi portatili. L'obiettivo del Forum è quello di facilitare l'interconnessione in rete dei dispositivi e di semplificare l'implementazione di reti domestiche e aziendali. Per realizzare questi obiettivi, il Forum definisce e pubblica descrizioni di periferiche, dispositivi e servizi UPnP utilizzando standard aperti di comunicazione basati su Internet. Nel sito Web del Forum, all'indirizzo http://upnp.org/, vengono raccolti gli schemi sviluppati e standardizzati dal Forum. Il sito contiene inoltre il documento relativo all'architettura delle periferiche e dei dispositivi, modelli per la descrizione di dispositivi, periferiche e servizi e linee guida per la realizzazione di descrizioni di periferiche, dispositivi e servizi. 1.5 Componenti di una rete UPnP I componenti principali di una rete UPnP sono periferiche, servizi e punti di controllo. Tali componenti sono descritti in dettaglio in questo paragrafo. 16 1.5.1 Periferiche Una periferica o dispositivo (device) UPnP è un contenitore di servizi e di periferiche nidificate. Una periferica videoregistratore potrebbe essere costituita, ad esempio, da un servizio trascinamento nastro, un servizio sintonizzatore e un servizio orologio. Una periferica TV con videoregistratore incorporato non sarebbe costituita solo da servizi ma anche da una periferica nidificata. Alle varie categorie di periferiche UPnP saranno associati gruppi di servizi e periferiche incorporate diversi. I servizi di un videoregistratore saranno, ad esempio, diversi da quelli di una stampante. I vari comitati di lavoro dell'UPnP Forum hanno il compito di definire gli standard dell'insieme di servizi forniti da un particolare tipo di periferica e di raccogliere tutte queste informazioni in un documento XML (eXtensible Markup Language) di descrizione della periferica che accompagna la periferica stessa. Oltre all'insieme di servizi, nella descrizione della periferica sono elencate le proprietà associate a tale periferica, ad esempio il nome della periferica e le icone. 1.5.2 Servizi L'unità di controllo più piccola di una rete UPnP è il servizio. Un servizio mette a disposizione azioni e modella il suo funzionamento tramite variabili di stato. È possibile creare, ad esempio, un servizio orologio che ha una variabile di stato, ora_corrente, che definisce lo stato dell'orologio, e due azioni, imposta_ora e ottieni_ora, che consentono di controllare il servizio. Come avviene per le periferiche, queste informazioni sono incluse in una descrizione XML del servizio standardizzata dall'UPnP Forum. Nelle descrizioni dei servizi è incluso un URL (Uniform Resource Locator) che punta al documento di descrizione della periferica. Le periferiche possono contenere più servizi. Il servizio di una periferica UPnP è costituito da una tabella di stato, da un server di controllo e da un server degli eventi. La tabella di stato definisce lo stato del servizio attraverso variabili di stato, che vengono aggiornate quando lo stato cambia. Il server di 17 controllo riceve le richieste di azione, ad esempio imposta_ora, le esegue, aggiorna la tabella di stato e restituisce risposte. Ogni volta che lo stato del servizio cambia, il server degli eventi invia eventi ai punti di controllo interessati. Un ipotetico servizio allarme antincendio invierebbe, ad esempio, un evento ai punti di controllo interessati quando il suo stato diventa "allarme attivo". Figura 3: Periferiche, servizi e punti di controllo UPnP. 18 1.5.3 Punti di controllo Il punto di controllo (control point) o più brevemente PoC (Point of Control) di una rete UPnP è un controller in grado di rilevare e controllare altre periferiche. Dopo il rilevamento, il punto di controllo può eseguire un certo numero di istruzioni descritte nel seguito: a) Recuperare la descrizione della periferica e ottenere l'elenco dei servizi associati. b) Recuperare le descrizioni dei servizi allo scopo di ricercare i servizi che lo interessano. c) Richiamare azioni per controllare il servizio. d) Registrarsi presso il sistema di rilevazione degli eventi del servizio. Ogni volta che lo stato del servizio cambia, il server degli eventi invierà un evento al punto di controllo. Si prevede che le periferiche includeranno la funzionalità di punto di controllo (e viceversa) per la realizzazione di reti peer-to-peer vere e proprie. 1.6 Panoramica sui protocolli UPnP La tecnologia UPnP si basa su una serie di protocolli IP standard che le consentono di rimanere del tutto indipendente dal tipo di supporto di rete utilizzato. Per interconnettere periferiche in una rete UPnP è possibile utilizzare qualsiasi mezzo di comunicazione, incluse connessioni a radiofrequenza (RF, senza fili), linee telefoniche, linee elettriche, connessioni a infrarossi (IrDA), porte Ethernet e IEEE 1394. La tecnologia UPnP si basa su protocolli standard aperti, quali TCP/IP, HTTP e XML. In futuro non è escluso che si possano utilizzare altre tecnologie di connessione di rete e questo per molteplici ragioni, inclusi motivi di costo, esigenze tecnologiche o per il supporto delle periferiche meno recenti. Queste tecnologie di connettività, che 19 includono soluzioni HAVi, CeBus, LonWorks, EIB e X10, potranno partecipare a una rete UPnP mediante un bridge o un proxy UPnP. Una rete UPnP che contiene periferiche connesse con bridging potrebbe essere analoga a quella illustrata nella figura 4. Figura 4: Rete UPnP con bridging. La tecnologia UPnP si basa su numerosi protocolli standard. L'utilizzo di protocolli standardizzati assicura l'interoperabilità tra le implementazioni dei diversi produttori. I protocolli utilizzati per implementare la tecnologia UPnP trovano vasto impiego in Internet e nelle LAN e questa diffusione garantisce la disponibilità di molte persone in grado di implementare e distribuire soluzioni basate su questi protocolli. Poiché questi stessi protocolli sono già largamente utilizzati, resterebbe poco da fare per integrare le periferiche UPnP negli attuali ambienti di rete. 20 1.7 Protocolli specifici di UPnP I produttori di periferiche e dispositivi UPnP, i comitati di lavoro dell'UPnP Forum e il documento UPnP Device Architecture definiscono i protocolli di livello più alto utilizzati per l'implementazione della tecnologia UPnP. Sulla base dell'architettura delle periferiche, i comitati di lavoro definiscono le specifiche relative a ogni singolo tipo di periferica, ad esempio videoregistratori, sistemi di riscaldamento e condizionamento, televisori e altre apparecchiature. Successivamente i produttori di periferiche UPnP aggiungono i dati specifici delle proprie periferiche, ad esempio nome del modello, URL, e così via. 1.7.1 TCP/IP Lo stack di protocolli di rete TCP/IP (Transimission Control Protocol/Internet Protocol) è quello su cui si fondano tutti gli altri protocolli UPnP. Grazie all’impiego della famiglia di protocolli standard TCP/IP, di vasta diffusione, la tecnologia UPnP è in grado di riconoscere supporti fisici diversi e di garantire l'interoperabilità tra le soluzioni di vari produttori. Le periferiche UPnP possono utilizzare molti dei protocolli dello stack TCP/IP, inclusi i protocolli TCP, UDP, IGMP, ARP e IP, nonché servizi TCP/IP, quali DHCP e DNS. 1.7.2 HTTP TCP/IP è lo stack di protocolli di base per la connettività di rete tra periferiche UPnP. Il protocollo HTTP, a cui si deve gran parte del successo di Internet, è anch'esso un componente importante della tecnologia UPnP. Tutti i vari aspetti della tecnologia UPnP sono uno sviluppo del protocollo HTTP o delle sue varianti. 21 HTTPU (HTTP Unicast over UDP) e HTTPMU (HTTP Multicast over UDP) sono varianti del protocollo HTTP, definite per il recapito di messaggi via UDP/IP anziché TCP/IP. Questi protocolli sono utilizzati dal protocollo SSDP, descritto qui di seguito. Il formato di base dei messaggi utilizzato da questi protocolli è conforme al formato HTTP ed è richiesto per la comunicazione multicast. 1.7.3 SDDP Il protocollo SSDP (Simple Service Discovery Protocol) definisce le modalità di rilevazione dei servizi di una rete. Il protocollo SSDP si basa sui protocolli HTTPU e HTTPMU e definisce i metodi che consentono sia a un punto di controllo di individuare le risorse di interesse nella rete, sia alle periferiche di comunicare la loro disponibilità nella rete. Definendo l’utilizzo contestuale sia del meccanismo di ricerca, sia del meccanismo di comunicazione di presenza nella rete, SSDP elimina il carico di lavoro aggiuntivo che si determinerebbe qualora venisse utilizzato uno solo dei meccanismi di cui sopra. Ne risulta che ogni punto di controllo della rete dispone di informazioni complete sullo stato della rete, mentre il traffico delle rete viene mantenuto basso. Sia i punti di controllo sia le periferiche utilizzano il protocollo SSDP. Dopo l'avvio, un punto di controllo UPnP può inviare una richiesta di ricerca SSDP (su HTTPMU) per rilevare le periferiche e i servizi disponibili nella rete. Tale richiesta è contenuta in un messaggio multicast di discovery (ssdp:discover). Il punto di controllo può impostare criteri di ricerca più restrittivi, in modo da trovare solo periferiche di un certo tipo, ad esempio videoregistratori, determinati servizi, ad esempio periferiche con servizi orologio, o persino periferiche specifiche. Le periferiche UPnP “ascoltano” la porta multicast. Dopo aver ricevuto una richiesta di ricerca, la periferica esamina i criteri di ricerca per stabilire se soddisfa tali criteri. In caso affermativo, al punto di controllo viene inviata una risposta SSDP unicast (tramite HTTPU) all’interno di un messaggio unicast contenente un URL che rimanda ad un file XML, descrittore del dispositivo stesso e delle sue capacità. Analogamente, quando una periferica viene collegata in rete, invia una serie di annunci di presenza SSDP che 22 rendono noti i servizi offerti (meccanismo di service advertisement). Questi annunci sono contenuti all’interno di messaggi multicast di advertisement (ssdp:alive). Sia gli annunci di presenza sia i messaggi di risposta unicast delle periferiche contengono un puntatore alla posizione del documento di descrizione della periferica, che contiene le informazioni sull'insieme di proprietà e servizi supportati dalla periferica (SDR). Oltre a fornire le suddette capacità di rilevamento, il protocollo SSDP consente inoltre a una periferica e ai servizi ad essa associati di disconnettersi in modo corretto dalla rete (notifica bye-bye) e prevede una gestione di timeout della cache per l'eliminazione di informazioni obsolete per l’"automanutenzione". 1.7.4 GENA L'architettura GENA (Generic Event Notification Architecture) è stata realizzata per consentire l'invio e la ricezione di notifiche utilizzando il protocollo HTTP su TCP/IP e UDP multicast. L'architettura GENA definisce inoltre i concetti di sottoscrittori (subscriber) e autori (publisher) di notifiche per la generazione di eventi. I formati GENA sono utilizzati nella tecnologia UPnP per creare gli annunci di presenza da inviare tramite il protocollo SSDP e per consentire di segnalare le variazioni dello stato di un servizio per la generazione di eventi UPnP. Un punto di controllo interessato a ricevere notifiche di eventi si registrerà presso un sistema che origina i vari eventi inviando una richiesta che includa il servizio a cui è interessato, la posizione in cui inviare gli eventi e il periodo di sottoscrizione per la notifica degli eventi. Per continuare a ricevere le notifiche, la sottoscrizione dovrà essere rinnovata periodicamente. La sottoscrizione potrà essere annullata mediante GENA. 23 1.7.5 SOAP Il protocollo SOAP (Simple Object Access Protocol) definisce l'utilizzo degli standard XML (Extensible Markup Language) e HTTP per l'esecuzione di chiamate a procedure remote (RPC, Remote Procedure Call). Il protocollo SOAP sta diventando lo standard per le comunicazioni basate su RPC in Internet. Sfruttando l'infrastruttura esistente di Internet, questo protocollo è in grado di funzionare in modo efficace con firewall e proxy. Il protocollo SOAP può inoltre utilizzare la protezione SSL (Secure Sockets Layer) e le funzionalità di gestione delle connessioni del protocollo HTTP, rendendo in tal modo la comunicazione distribuita in Internet un'operazione semplice quanto l'accesso alle pagine Web. Analogamente a una chiamata a una procedura remota, la tecnologia UPnP utilizza il protocollo SOAP per recapitare messaggi di controllo alle periferiche e restituire risultati o errori ai punti di controllo. Ogni richiesta di controllo UPnP è un messaggio SOAP contenente l'azione da richiamare più un insieme di parametri. Anche la risposta è un messaggio SOAP, che contiene lo stato, il valore restituito ed eventuali parametri restituiti. 1.7.6 XML Lo standard XML (eXtensible Markup Language) è, nella definizione del W3C, il formato universale per dati strutturati sul Web. In altre parole, lo standard XML è un modo per inserire praticamente qualsiasi tipo di dati strutturati in un file di testo. Lo standard XML è simile all'HTML in quanto utilizza tag e attributi, ma differisce da questo poiché il significato di tag e attributi non è definito globalmente, ma è interpretato a seconda del contesto in cui vengono utilizzati. Queste caratteristiche rendono lo standard XML particolarmente adatto allo sviluppo di schemi per vari tipi di documenti. L'utilizzo dello standard XML come linguaggio per schemi è definito dal W3C. 24 Lo standard XML è un componente principale della tecnologia UPnP, utilizzato nelle descrizioni di periferiche e servizi, nei messaggi di controllo e nella generazione di eventi. 1.8 Stack protocollare di UPnP In questo paragrafo viene descritto come i protocolli illustrati in precedenza vengono utilizzati all’interno dello standard UPnP. La figura 5 mostra come questi protocolli sono organizzati all’interno dello stack protocollare di UPnP. Figura 5: Lo stack dei protocolli UPnP. 25 Il documento "UPnP Device Architecture" definisce uno schema o modello per la creazione di descrizioni per qualsiasi tipo di periferica o servizio. I singoli comitati di lavoro dell'UPnP Forum definiscono successivamente gli standard dei vari tipi di periferiche e servizi e creano un modello per ogni singolo tipo di periferica o servizio. Il produttore completa infine questo modello con informazioni specifiche della periferica o del servizio, ad esempio il nome della periferica, il numero di modello, il nome del produttore e l'URL che punta alla descrizione del servizio. Questi dati vengono quindi incapsulati nei protocolli specifici UPnP definiti nel documento "UPnP Device Architecture" (ad esempio il modello di descrizione delle periferiche XML). Le informazioni specifiche UPnP necessarie vengono inserite in tutti i messaggi prima che questi vengano formattati mediante i protocolli SSDP, GENA e SOAP e recapitati via HTTP, HTTPU o HTTPMU. Lo stack protocollare UPnP ricalca evidentemente il modello OSI dove troviamo per ogni livello i seguenti protocolli: Livello 7; protocolli UPnP definiti dal produttore. Livello 6; protocolli UPnP definiti dai comitati di lavoro dell'UPnP Forum. Livello 5; protocolli UPnP definiti dal documento “UPnP Device Architecture”. Livello 3-4; HTTP (Unicast e Multicast) SOAP, GENA, SSDP. Livello 2; TCP/UDP. Livello 1; IP. 1.9 Fasi della connettività di UPnP Il processo attraverso il quale qualunque dispositivo si collega alla rete è costituito da diversi passi. L’esecuzione di questi passi permette al dispositivo di configurarsi in modo automatico con la rete e con agli altri dispositivi presenti in quel momento. 26 1.9.1 Indirizzamento L'elemento fondamentale su cui si basa la connettività in rete UPnP è la famiglia di protocolli TCP/IP e la chiave per accedere a questi protocolli è l'indirizzamento. Ogni periferica deve avere un client DHCP (Dynamic Host Configuration Protocol) e cercare un server DHCP quando viene connessa per la prima volta alla rete. Se è disponibile un server DHCP, la periferica deve utilizzare l'indirizzo IP che le viene assegnato. In caso contrario, la periferica deve utilizzare il protocollo Auto IP per attribuirsi automaticamente un indirizzo. In breve, il protocollo Auto IP definisce il modo in cui una periferica sceglie intelligentemente un indirizzo IP da un insieme di indirizzi privati riservati ed è in grado di muoversi agevolmente tra reti gestite e reti non gestite. È possibile che una periferica implementi protocolli di livello superiore al di fuori della tecnologia UPnP, che utilizzano nomi descrittivi per le periferiche. In questi casi diventa necessario risolvere i nomi host (di periferica) descrittivi, nel corrispondente indirizzo IP. A questo scopo vengono generalmente utilizzati i servizi DNS (Domain Name Services). Una periferica che richiede o utilizza questa funzionalità può includere un client DNS e supportare la registrazione DNS dinamica per l’associazione del proprio nome al rispettivo indirizzo. 1.9.2 Rilevazione Dopo che le periferiche sono state connesse alla rete ed è stato assegnato loro un indirizzo appropriato, può aver luogo la rilevazione. La rilevazione è gestita dal protocollo SSDP discusso in precedenza. Quando si aggiunge una periferica alla rete, il protocollo SSDP consente a tale periferica di rendere pubblici i propri servizi ai punti di controllo della rete. Quando si aggiunge un punto di controllo alla rete, il protocollo SSDP consente al punto di controllo di cercare nella rete le periferiche di interesse. 27 Lo scambio fondamentale, in entrambi i casi, consiste in un messaggio di rilevazione che contiene poche specifiche essenziali relative alla periferica o al servizio, ad esempio il tipo, l'ID e un puntatore al documento di descrizione della periferica XML. I singoli passi della fase di rilevazione sono: Annuncio (Advertising); Questo step consiste nell’inviare una serie di messaggi di rilevazione multicast, che rendono note le periferiche e i servizi incorporati. Questi messaggi sono incapsulati a livello 3 e 4 nei protocolli HTTPMU, SSDP, GENA e inoltrati successivamente via UDP/IP. Un punto di controllo interessato può rimanere in stato di ascolto sull'indirizzo multicast standard in attesa di messaggi di notifica che segnalano la disponibilità di nuovi servizi. Nella figura 6 viene mostrato la stack di protocolli utilizzato per i messaggi di annuncio. Figura 6: Stack di protocolli utilizzato per i messaggi di annuncio. 28 Ricerca (Discovery); Lo stack utilizzato per la ricerca è molto simile a quello utilizzato per l’annuncio con l’unica differenza che i messaggi sono inviati soltanto attraverso il protocollo SSDP e inoltrati successivamente tramite UDP/IP, come mostrato in figura 7. Per evitare fenomeni quali la congestione del traffico sulla rete, viene settato ad un valore preconfigurato il TTL (Time To Live) relativo ad ogni pacchetto IP multicast inviato. Figura 7: Stack di protocolli utilizzato per i messaggi di ricerca. 29 1.9.3 Descrizione La fase successiva nella connettività di rete UPnP è rappresentata dalla descrizione. Dopo aver rilevato una periferica, un punto di controllo dispone ancora di poche informazioni su si essa. Per ottenere ulteriori informazioni sulla periferica e sulle sue capacità o per interagire con la periferica, il punto di controllo deve richiamare la relativa descrizione dall'URL fornito dalla periferica nel messaggio di rilevazione. Le periferiche possono contenere altre periferiche logiche e altri servizi. La descrizione UPnP di una periferica è in formato XML e include informazioni specifiche del produttore, quali il nome e il numero del modello, il numero di serie, il nome del produttore, URL a siti Web specifici del produttore e così via. Nella descrizione è inoltre incluso l'elenco di eventuali periferiche o servizi incorporati, nonché URL per il controllo, la generazione di eventi e la presentazione. La figura 8 mostra lo stack protocollare relativo ai messaggi di descrizione. 30 Figura 8: Stack di protocolli utilizzato per la descrizione. 1.9.4 Controllo Dopo aver richiamato la descrizione della periferica, un punto di controllo dispone di tutte le informazioni necessarie per controllarla. Per ottenere ulteriori informazioni su un servizio, un punto di controllo deve richiamare una descrizione UPnP dettagliata di ciascun servizio. Anche la descrizione di un servizio è in formato XML e include l'elenco dei comandi o delle azioni ai quali il servizio risponde e dei parametri o argomenti per ogni azione. Nella descrizione di un servizio è inoltre incluso un elenco di variabili che modellano lo stato del servizio in fase di esecuzione e che sono descritte in termini di tipo di dati, intervallo e caratteristiche dell'evento. 31 Per controllare una periferica, un punto di controllo invia una richiesta di azione a un servizio della periferica. A tal scopo, il punto di controllo invia un messaggio di controllo adeguato all'URL di controllo del servizio, fornito nella descrizione della periferica. I messaggi di controllo sono anch'essi espressi in formato XML utilizzando il protocollo SOAP. In risposta al messaggio di controllo il servizio restituisce valori specifici dell'azione o codici di errore. In questa fase della connettività UPnP i messaggi sono formattati attraverso il protocollo SOAP e distribuiti via HTTP mediante il protocollo TCP/IP, come indicato nella figura 9. Figura 9: Stack di protocolli utilizzato per il controllo. 32 1.9.5 Gestione degli eventi Nella descrizione UPnP di un servizio è incluso l'elenco delle azioni alle quali il servizio risponde e l'elenco delle variabili che modellano lo stato del servizio in fase di esecuzione. Quando il valore di queste variabili cambia, il servizio pubblica degli aggiornamenti; un punto di controllo può sottoscrivere la ricezione di queste informazioni. Il servizio pubblica gli aggiornamenti inviando messaggi di notifica degli eventi che contengono i nomi di una o più variabili di stato e il valore corrente di tali variabili. Anche questi messaggi sono espressi in XML e formattati utilizzando GENA. Quando un punto di controllo sottoscrive per la prima volta la ricezione di messaggi di notifica degli eventi, viene inviato uno speciale messaggio iniziale che contiene i nomi e i valori di tutte le variabili associate a eventi e consente al sottoscrittore di inizializzare il proprio modello dello stato del servizio. Per supportare più punti di controllo, a tutti i sottoscrittori vengono inviati tutti i messaggi di notifica degli eventi, i sottoscrittori ricevono messaggi di notifica degli eventi per tutte le variabili associate a eventi e i messaggi di notifica degli eventi vengono inviati indipendentemente dalla causa del cambiamento della variabile di stato (ovvero se il cambiamento è avvenuto in risposta a una richiesta di azione o a seguito di una variazione dello stato). La figura 10 mostra lo stack dei protocolli utilizzato nella fase di notifica. 33 Figura 10: Stack di protocolli utilizzato per la gestione degli eventi. 1.9.6 Presentazione Se una periferica dispone di un URL per la presentazione, il punto di controllo può richiamare una pagina da tale URL, caricarla in un browser e, in base alle capacità della pagina, consentire a un utente di controllare la periferica e/o di visualizzarne lo stato. La misura in cui questo è consentito dipende dalle capacità specifiche della pagina di presentazione e della periferica. Raggiungere la pagina necessita di una semplice richiesta HTTP che usa un sottoinsieme dello stack protocollare visto in precedenza e che la figura 11 riassume di seguito. 34 Figura 11: Stack di protocolli utilizzato per la presentazione. 1.10 Analisi dello standard UPnP In questo paragrafo verrà presentata un’analisi critica sugli aspetti più rilevanti di UPnP, al fine di cercare le soluzioni adatte a migliorare questo standard. In particolare verranno affrontati i pro e i contro di cui questa tecnologia dispone. Di seguito sono riassunte le caratteristiche principali di un service discovery relative a UPnP. Si noti come per UPnP non sono state previste particolari soluzioni in tutti i campi che caratterizzano un service discovery e come questo renda UPnP uno standard ancora oggi aperto a nuove soluzioni implementative. UPnP è infatti un'iniziativa aperta, che ha l'obiettivo di rielaborare standard, tecnologie e conoscenze esistenti per adattarli alle opportunità e alla promesse del futuro mondo globale. 35 1.10.1 Requisiti di UPnP per il service discovery Per quanto riguarda l’architettura di sistema, ovvero la struttura dei registry, UPnP non definisce in alcun modo se dovrà essere di tipo flat oppure di tipo gerarchico, né se dovrà essere centralizzato o distribuito. Non specifica inoltre se dovrà esserci un certo numero di copie di informazioni di servizio oppure se il meccanismo di aggiornamento delle informazioni presso i registry dovrà essere di tipo soft oppure hard. Come già detto in precedenza, UPnP prevede per lo scambio di messaggi entrambe le modalità unicast e multicast, non necessita di un Directory Agent (come invece avviene per il Service Location Protocol) e può notificare eventi e cambiamenti di stato sia attraverso meccanismi di advertisement (annuncio), sia attraverso richiesta esplicita da parte del punto di controllo (query). UPnP prevede la selezione dei servizi da parte degli utenti (user selection) ma non prevede meccanismi di ricerca basati sul service matching, né si preoccupa di fornire una selezione dei migliori servizi trovati disponibili. Infine UPnP non indica nessuna restrizione in termini di Context-aware, Scope-aware o QoS-aware. 1.10.2 Vantaggi di UPnP I vantaggi introdotti da questo standard sono innumerevoli, i più importanti sono: Standard aperto; ha protocolli relativamente semplici e standard simili a quelli definiti dalla IETF (Internet Engeneering Task Force). Il TCP/IP su cui si basa, permette la comunicazione tra molti tipi di piattaforme esistenti e da la possibilità di essere compatibile con una vastità di dispositivi, siano essi PC o elettrodomestici intelligenti. Scalabilità; normalmente è adatto per lavorare con reti piccole ma nulla vieta di poter utilizzare questo standard su reti di dimensioni maggiori, nel rispetto del principio di boundary. Plug and Play; la tecnologia UPnP offre un ambiente di comunicazione basato su standard che consente ai dispositivi collegati in rete di configurarsi in 36 maniera automatica, dinamica e in perfetta compatibilità. L'interoperabilità è garantita anche dal fatto che la tecnologia UPnP si adatta a qualunque tipologia di supporto fisico (cablato o wireless), all'Internet Protocol (IP) e ad ogni genere di device collegabili in rete, tra cui PC, sistemi di home entertainment, dispositivi intelligenti di nuova concezione, sistemi di home automation, periferiche di rete e servizi Web. L’XML descrive inoltre i servizi con grande dettaglio. Scarse Risorse; le risorse richieste al sistema sono di fatto ridottissime. Questo permette a UPnP di poter lavorare sia su PC che su dispositivi dotati di limitate capacità di calcolo e scarse risorse hardware. Ambienti multipiattaforma; lo standard UPnP è stato concepito per permettere l’interazione e lo scambio di informazioni tra diverse tipologie di applicazione. Indipendente dal Sistema Operativo; UPnP nasce come protocollo operante sotto Windows XP (Microsoft®), ma di fatto può girare sotto qualsiasi sistema operativo. Integrazione con applicazioni già esistenti e non basate su IP; la tecnologia UPnP si basa su una serie di protocolli IP standard che le consentono di rimanere del tutto indipendente dal tipo di supporto di rete utilizzato. La scelta del protocollo IP tuttavia non impedisce a UPnP di integrarsi con quelle tecnologie che non ne fanno uso. Per interconnettere periferiche in una rete UPnP è possibile, infatti, utilizzare qualsiasi mezzo di comunicazione, incluse connessioni a radiofrequenza (RF, senza fili), linee telefoniche, linee elettriche, connessioni a infrarossi (IrDA), porte Ethernet e IEEE 1394. In altre parole, è possibile utilizzare qualsiasi tecnologia di rete esistente, ma anche quelle emergenti. L'unico requisito da rispettare è che il supporto di rete prescelto supporti la larghezza di banda necessaria per l'utilizzo previsto. Open source; UPnP è un’architettura di rete aperta e distribuita, definita dai protocolli utilizzati, ed indipendente dal linguaggio di programmazione o dal supporto fisico (ad esempio Internet). UPnP non specifica le API (Application Program Interface) che verranno utilizzate dalle applicazioni e ciò consente ai 37 produttori di sistemi operativi di creare API in base alle specifiche esigenze dei loro clienti. Architettura non incentrata su PC; la configurazione di base di una rete UPnP può essere basata su un’architettura peer-to-peer, il che vuol dire che una rete di piccole dimensioni come una rete domestica può lavorare senza PC. Non necessita di un Directory Agent; questa soluzione lo rende sicuramente più robusto verso l’eventulità che il punto d’accesso centralizzato (ad esempio Directory Agent di SLP) faccia crash. Molto adatto a contesti distribuiti (asincroni). Con Universal Plug and Play un dispositivo può entrare in rete in modo dinamico e ottenere un indirizzo IP senza il controllo di un Directory Agent. I dispositivi e le periferiche possono, quindi, comunicare direttamente fra loro, dando vita a reti peer-to-peer. Larga Diffusione; un grande numero di aziende ne promuove lo sviluppo. Tra queste citiamo: Microsoft, Intel, NEC, AT&T, Texas Instruments, Mitsubishi, Canon, Motorola, Sony, ecc. 1.10.3 Svantaggi di UPnP Purtroppo UPnP soffre di varie limitazioni che ne condizionano lo sviluppo futuro. Queste limitazioni sono: Assenza di service attributes; un servizio è descritto usualmente da diversi attributi. La ricerca di servizio per un utente viene condotta attraverso il confronto degli attributi di servizio che l’utente specifica nella richiesta. Nell’UPnP, invece, sono le periferiche che offrono i servizi a notificare all’utente la loro presenza e a fornirgli la relativa descrizione degli attributi di servizio dei quali dispongono, limitando di fatto le modalità di ricerca dei servizi stessi. Assenza di un Directory Agent; l’eventuale assenza di un Directory Agent renderebbe il sistema poco scalabile. Può però avere un UPnP Internet gateway. Gli UPnP Internet gateway e il supporto UPnP di Windows XP permetteranno a 38 più PC e dispositivi collegati a una rete di piccole dimensioni di condividere un unico indirizzo IP pubblico senza incorrere nei problemi di configurazione dei dispositivi che oggi devono affrontare gli utenti Microsoft® e le aziende. La maggior parte dei provider di connessioni in banda larga per privati e piccole aziende fornisce un unico indirizzo IP che viene condiviso tramite un gateway basato su tecnologia NAT (Network Address Translation). Lo standard UPnP mette a disposizione automaticamente le singole applicazioni all'interno del gateway. Basso livello di sicurezza; il problema riguardava una falla di sicurezza di Universal Plug & Play di Microsoft®, una funzionalità presente in varie edizioni di Windows. Da un lato è un problema serio: questa vulnerabilità può permettere a chiunque di prendere il controllo di un qualsiasi computer. Dall'altro si tratta di una delle tante vulnerabilità che capitano in qualunque software e per la quale non c'è un exploit in rapida diffusione. Elevato costo computazionale; l’Universal Plug & Play è un set complesso di protocolli per supportare un networking peer-to-peer ad hoc. Anche se nessuno lo utilizza, esso viene installato in parecchi sistemi operativi Microsoft®. Anche se a nessuno serve che sia attivo, a volte esso è attivo per default. Nessuna specifica sul numero di copie con informazioni di servizio; ogni servizio offerto è rappresentato dall’informazione di servizio che lo descrive (service attributes). Questa informazione può essere disponibile in singola copia oppure in copie multiple. Nei sistemi centralizzati questa informazione è contenuta nel Directory Agent mentre in quelli distribuiti viene condivisa tra più soggetti, rendendo il sistema sicuramente più robusto verso i guasti. Architettura non gerarchica: L’UPnP non ha una struttura gerarchica, ma di tipo flat, ovvero le varie periferiche che entrano nel sistema hanno tra loro relazioni peer-to-peer. I registry relativi alle periferiche non formano una struttura gerarchica dei servizi, rendendo la fase di discovery senza dubbio meno performante. Nessuna garanzia di delivery; come già detto, molte periferiche e punti di controllo si basano sui protocolli di comunicazione TCP/IP oppure UDP/IP. 39 Entrambi i protocolli permettono di verificare l’integrità dei messaggi che vengono recapitati ma non offrono alcuna garanzia sulla consegna del messaggio inviato al destinatario. A causa di questa limitazione nessun utente, all’interno di una rete basata su UPnP, può essere sicuro che il proprio messaggio (di controllo, di notifica eventi, ecc…) sia stato consegnato dalla rete al suo destinatario con evidenti ripercussioni sulle prestazioni complessive dell’intero ambiente di comunicazione. Non supporta context-aware; le reti wireless sono contraddistinte dalla loro mobilità e dalla grande dinamicità con la quale cambiano gli utenti di una rete o la tipologia della stessa. Tutta questa dinamicità può essere gestita solamente dando alle applicazioni la capacità di ottenere e capire le informazioni di contesto nel quale operano. Le applicazioni che hanno questa caratteristica vengono definite applicazioni context-aware. L’efficienza e soprattutto la qualità di un’applicazione aumenta notevolmente potendo individuare il contesto nel quale opera e potendo adattare il suo funzionamento in conformità di tali informazioni. 40 Capitolo 2 Descrizione del contesto applicativo 2.1 Introduzione Con il termine home assett management ci si riferisce ad uno scenario in cui l’utente può gestire le risorse disponibili in casa, siano esse dispositivi (computer, centraline, stampanti, ecc…) oppure contenuti multimediali. In casa un utente si dedica prevalentemente a servizi di entertainment, come filmati, foto e videogiochi e ad attività di gestione dell’ambiente domestico, come il sistema di riscaldamento e telecamere per la videosorveglianza. La disciplina che si occupa dell'integrazione delle tecnologie che consentono di automatizzare questa serie di attività all’interno della casa prende il nome di domotica. Tali attività possono essere eseguite anche da remoto. Ad esempio, è possibile dall’ufficio connettersi a casa per utilizzare media disponibili nell’ambiente domestico o per controllare il proprio ambiente domestico. Questo è possibile se l’ambiente domestico è interconnesso alla rete pubblica tramite dispositivi sicuri quali ad esempio i residential gateway. Essi funzionano da piattaforma per tutti i servizi basati sulla comunicazione multimediale. Il residential gateway permette la gestione di audio, video, dati Internet e multimediali provenienti dalla rete domestica o ad essa destinati. Può inoltre funzionare come un application server per una vasta serie di servizi ad alto livello come la gestione dell’energia, della sicurezza, della manutenzione, del commercio elettronico ecc. Durante il soggiorno in casa o in ufficio l’utente si può trovare a dover gestire una molteplicità di risorse ed è in grado di accedere a servizi anche con elevata interattività. 41 L’ambiente di casa è caratterizzato da una molteplicità di dispositivi che permettono all’utente di interagire in modo intelligente ed efficiente con il contesto (ambiente indoor). Può anche usufruire facilmente di connessione a larga banda tra dispositivi locali e l’esterno attraverso Internet. In questo scenario si possono distinguere terminali di uso comune quali DVR (Digital Video Recorder), TV/schermi ad alta definizione, PC (Personal Computer), ai quali si aggiungono terminali portatili di tipo laptop, telefonini e palmari interconnessi in un’unica rete domestica di dispositivi. La rete è accessibile internamente tramite interfacce LAN (Local Area Network) e WLAN (Wireless LAN) ed esternamente tramite rete UMTS (Universal Mobile Telecommunications System) o tramite accesso a larga banda fisso di tipo xDSL (ADLS/HDSL/VDSL), cavo o fibra. La casa è quindi il luogo dove l’utente si trova nel contesto più favorevole per usufruire dei media, sia per la disponibilità di risorse vicine che per il tempo a disposizione. Quando l’utente è fuori casa (ambiente outdoor), può ugualmente usufruire di molte risorse se interconnesso al proprio ambiente domestico in modo opportuno (ad esempio con residential gateway) sfruttando sensori di vario tipo, quali telecamere, sensori di temperatura/umidità/gas/illuminazione per il monitoraggio e la gestione dell’ambiente domestico. In questo capitolo verranno mostrati alcuni possibili scenari nei quali si rende utile l’uso di soluzioni tecnologiche come UPnP per la gestione dei servizi in ambiente indoor e per l’accesso a tali servizi anche da posizione remota. Verrà presentato inoltre un semplice tool per sviluppare e gestire applicazioni UPnP e per creare un semplice esempio di rete UPnP, al fine di gestire in maniera automatica tutti i servizi disponibili nel proprio ambiente domestico. 42 2.2 Contesto di gestione dell’ambiente domestico Lo scenario è quello di un edificio in cui tutti gli impianti siano integrati e controllati tramite un software personalizzabile, ad esempio UPnP. I dispositivi presenti nell’ambiente vengono controllati tramite un unico punto d’accesso al sistema, per esempio tramite PC, palmare, telefono cellulare ecc. Il controllo delle attività presenti in casa è possibile, come già detto, anche da posizione remota. Le aree di automazione che maggiormente interessano la domotica riguardano principalmente: Gestione dell’ambiente, Comunicazione e informazione. Nella figura 12 viene mostrato un esempio di architettura UPnP riferita allo scenario in esame. Figura 12: Esempio di architettura UPnP. 43 I servizi di domotica relativi alla prima area sono: Illuminotecnica; il sistema controlla contemporaneamente diverse fonti luminose e rende consultabili i parametri relativi all’intensità luminosa in ogni stanza (luci automatiche, temporizzate, a spegnimento ritardato, ecc). Climatizzazione; il sistema è in grado di gestire temperature differenziate per ogni singolo ambiente e per fascia oraria, modificabili attraverso interfacce interattive dall’utente. Ogni ambiente ha la temperatura ideale in base al profilo utente. Automatismi; il sistema attiva alcune funzioni, quali la chiusura di tutti gli infissi quando si esce di casa o delle persiane in caso di pioggia. Audio-Video e home-theatre; il servizio si basa su controllo audio e video a distanza, ascolto di brani preferiti in diversi ambienti e con un unico impianto multi-room; visione di video su multi-dispositivi (televisore, notebook, laptop, ecc). Inoltre, ascolto di brani musicali all’esterno (in giardino ad esempio), con la gestione di diverse fonti sonore. Giardino intelligente; ovvero sistema di controllo irrigazione, piscine e giochi d’acqua. Il sistema memorizza i dati e, sulla base delle condizioni micro-climatiche, gestisce orari e tempi, per una perfetta irrigazione. Domotica olfattiva; Il sistema attiva il termoconvettore, per creare in pochi minuti la temperatura ideale e permette di percepire un odore sulla base dell’ambiente o del profilo utente (ad esempio, l’odore della salsedine nella piscina coperta). Tramite l’accesso della rete domestica a larga banda all’esterno l’utente potrà controllare le risorse domestiche anche dall’ufficio. In particolare, sarà possibile: videosorvegliare la casa da remoto; controllare il sistema di riscaldamento, ad esempio per impostare un orario di accensione anticipato nel caso in cui si preveda di tornare a casa prima del solito; scaricare contenuti multimediali da casa necessari per lavorare in ufficio e caricare nel PC di casa alcuni file, dei quali si avrà bisogno nel fine settimana. Per quanto riguarda la seconda area di automazione, possiamo dire che in questo scenario un utente potrebbe essere interessato alla possibilità di gestire la migrazione di una serie di servizi dal proprio PC, laptop, telefonino verso alcuni dispositivi presenti 44 nel proprio ambiente domestico. Ad esempio, mentre è in corso una videochiamata sul proprio telefonino UMTS, un utente potrebbe desiderare di trasferire il contenuto video della comunicazione verso lo schermo LCD presente nel soggiorno e quindi di godere di una maggiore risoluzione video. Più semplicemente, l’utente potrebbe avere il bisogno di stampare dei documenti dal proprio portatile su la stampante di casa, inviando il file tramite un messaggio. L’operazione avrebbe luogo senza necessariamente collegarsi alla stampante, ma comodamente seduti sul proprio divano. 2.3 Requisiti di una rete domestica Le soluzioni tecnologiche che possono essere adottate per la realizzazione di un sistema domotico sono caratterizzate da requisiti legati all’uso di dispositivi casalinghi. Questi requisiti sono: Semplicità; il sistema domotico è diretto ad un pubblico vasto e non professionale, per questo deve essere semplice da usare mediante applicazioni software caratterizzate da interfacce “user friendly”. Deve inoltre essere sicuro e non deve presentare pericoli per chi non ne conosce o comprende le potenzialità. Continuità di funzionamento; il sistema deve essere costruito pensando al fatto che dovrà offrire un servizio continuativo e per questo praticamente immune da guasti o semplice da riparare anche per personale non esperto o, nel caso, necessitare di tempi brevi per la rimessa in funzione. Affidabilità; il sistema funziona sempre, senza richiedere particolari attenzioni; anche in caso di guasti esso deve essere in grado di fornire il servizio per il quale è stato progettato o uno simile in caso di funzionamento ridotto. Deve essere inoltre in grado di segnalarne il mancato funzionamento e di generare un report delle eventuali anomalie. Basso costo; affinché un sistema domotico sia alla portata di tutti deve avere un costo contenuto, inteso come economicità delle periferiche e della rete di interconnessione tra i diversi moduli funzionali. 45 In base a queste considerazioni sui requisiti che dovrà possedere un sistema domotico, risulta evidente che l’uso dei protocolli UPnP e in particolare di una rete UPnP può senz’altro offrirci dei vantaggi significativi, soprattutto per quanto riguarda la semplicità, l’affidabilità e il contenimento dei costi. 2.4 Modello di rete domestica UPnP Per comprendere meglio lo scenario prospettato e per capire a fondo come e quando hanno luogo le varie fasi della connettività in una rete UPnP, può essere utile definire un semplice modello di rete domestica. Questa rete poggerà su una LAN e conterrà solo alcune periferiche UPnP. Nella figura 13 riportata di seguito viene mostrata una rete contenente le seguenti periferiche UPnP: Un Access Point; Potrebbe trattarsi di una periferica gateway autonoma oppure di un PC che funge da gateway. Questa periferica potrebbe essere un punto di controllo (ma ciò non è necessario) e i servizi forniti potrebbero includere l'accesso a Internet, un server DHCP (Dynamic Host Configuration Protocol), un proxy DNS e un servizio di archiviazione. Il gateway sarà inoltre connesso a vari supporti di una LAN domestica e fungerà da bridge per questi supporti. I supporti utilizzati includono connessioni IEEE 802.11 senza fili, una rete sui cavi di alimentazione elettrica, una rete telefonica e connessioni IEEE 1394. Alcuni devices; La rete conterrà vari dispositivi abilitati per UPnP, fra cui un lettore CD e un lettore DVD collegato ad un televisore. La rete includerà inoltre una stampante UPnP connessa alla LAN domestica. Alcuni PoC; Tra questi troviamo un pocket PC i-mate™ jasjar con piattaforma Microsoft® Windows Mobile™ 5.0 Phone Edition, un laptop computer e un telefonino UMTS. 46 Figura 13: Modello di rete UPnP. 2.5 UPnP Script di una rete domestica Nello scenario iniziale di figura 13, ammettiamo per ipotesi che tutti i componenti della rete siano in funzione e si siano rilevati vicendevolmente attraverso i protocolli UPnP, ad eccezione del palmare e della stampante. Nel nostro esempio immaginiamo che entrambi siano spenti. A questo punto decidiamo di accendere la stampante connessa alla LAN. Le fasi che avranno luogo d’ora innanzi descrivono brevemente tutte le fasi della connettività di una rete UPnP: 47 Indirizzamento; la prima operazione che la stampante ha dovuto effettuare è stata quella di ottenere un indirizzo per partecipare alla rete. Ogni periferica deve essere dotata di un client DHCP e cercare un server DHCP quando viene connessa per la prima volta alla rete. Questa operazione avviene tramite l’invio di messaggi DHCP Discover. Se il client DHCP della stampante non ottiene un messaggio di risposta DHCP Offer da un server dopo un breve periodo di tempo, avvia una nuova ricerca per dare a un altro server la possibilità di rispondere. Se nella rete non è presente un server DHCP in esecuzione, la stampante si attribuirà automaticamente un indirizzo IP utilizzando il protocollo Auto-IP. Supponiamo che attraverso il protocollo Auto-IP la periferica abbia scelto un indirizzo IP nell'intervallo 169.254/16. Il primo e gli ultimi 256 indirizzi di questo intervallo sono riservati e non devono essere utilizzati. L’indirizzo selezionato deve essere testato, per verificare che non sia già in uso. Se l'indirizzo è utilizzato da un'altra periferica, è necessario scegliere e testare un altro indirizzo, per un numero massimo di tentativi che dipende dall'implementazione. Se nella rete è presente un server DHCP, l'intero processo potrebbe richiedere meno di un secondo. Se nella rete non è disponibile un server DHCP e la periferica deve ricorrere al protocollo Auto-IP, il processo è leggermente più lungo. Se l'indirizzo viene assegnato automaticamente tramite il protocollo Auto-IP, la stampante verificherà periodicamente l'eventuale disponibilità di un server DHCP nella rete per assicurarsi che venga mantenuta la connettività tra le periferiche. A questo punto la stampante o dispone di un indirizzo assegnatogli dal server DHCP, e tutte le altre periferiche della rete hanno un indirizzo nella stessa subnet, oppure la stampante ha un indirizzo Auto-IP. In entrambi i casi, la stampante può comunicare con le altre periferiche della rete via TCP/IP. Dopo che alla stampante è stato attribuito un indirizzo IP valido, è possibile individuarlo e farvi riferimento nella rete attraverso tale indirizzo. Potrebbero verificarsi situazioni in cui l’utente abbia la necessità di individuare e identificare una periferica. In questi casi, sarebbe preferibile l'utilizzo di un nome descrittivo per la periferica anziché del corrispondente indirizzo IP, ma l'utilizzo del servizio DNS per il mapping dei nomi agli indirizzi esula dall'ambito della tecnologia UPnP. 48 Rilevazione - Annuncio; ora che la periferica ha acquisito un indirizzo e può comunicare in rete, deve rendere pubblica la sua disponibilità ai punti di controllo UPnP già operanti in rete. Questo è il primo tipo di rilevazione che ha luogo nelle reti UPnP. Quando si aggiunge una periferica a una rete, il protocollo di rilevazione UPnP consente a tale periferica di rendere noti i servizi offerti ai punti di controllo della rete. Ciò viene fatto inviando una serie di messaggi di rilevazione multicast chiamati SSDP:alive, che rendono note le periferiche e i servizi incorporati e che sono creati con il metodo NOTIFY, definito nel protocollo GENA, nel seguente formato: NOTIFY * HTTP/1.1 HOST: 239.255.255.250:1900 CACHE-CONTROL: max-age = seconds until advertisement expires LOCATION: URL for UPnP description for root device NT: search target NTS: ssdp:alive SERVER: OS/version UPnP/1.0 product/version USN: advertisement UUID Un punto di controllo interessato può rimanere in stato di ascolto sull'indirizzo multicast standard in attesa di messaggi di notifica che segnalano la disponibilità di nuovi servizi, come mostrato in figura 14. Nei messaggi di rilevazione inviati dalla stampante dell’esempio è incluso un timestamp (CACHE-CONTROL) che indica per quanto tempo è valido l'annuncio (valore di default pari a 1800 secondi). Prima che sia trascorso questo tempo, la stampante deve ripetere l’invio del suo annuncio. In caso contrario i punti di controllo potrebbero presupporre che la periferica non sia più disponibile. Inoltre, prima di passare alla modalità non in linea, la stampante deve inviare il messaggio SSDP:byebye per comunicare esplicitamente alla rete che non sarà disponibile. Tale messaggio assume il seguente formato: 49 NOTIFY * HTTP/1.1 HOST: 239.255.255.250:1900 NT: search target NTS: ssdp:byebye USN: advertisement UUID La stampante, dopo essere stata collegata alla rete, invierà annunci GENA per ogni periferica e servizio offerto, rendendo pubblica la sua presenza. Poiché i messaggi vengono recapitati via UDP, un trasporto non affidabile, è possibile che vengano inviati più volte, in modo da garantirne la ricezione da parte di tutti i punti di controllo interessati. Figura 14: Schema della fase di discovery (annuncio e ricerca). 50 Rilevazione - Ricerca; dopo aver collegato la stampante, immaginiamo che venga per la prima volta acceso il palmare. Anche il palmare utilizza la tecnologia UPnP. La fase di indirizzamento e annuncio vengono pertanto eseguite come per la stampante. Adesso anche il palmare è “visibile” all’interno della rete UPnP, connettendosi alla rete domestica senza la necessità di alcuna configurazione aggiuntiva. L’utente può a questo punto usufruire dei servizi messi a disposizione della rete e in particolare della nuova periferica stampante. Se infatti volesse stampare dei documenti senza dover per forza accendere il computer collegato alla stampante ma comodamente seduto sul proprio divano, non dovrà far altro che utilizzare un'applicazione per il controllo della stampante sul proprio palmare. Avviando questa applicazione, nella rete si attiva un nuovo punto di controllo. Sul palmare vengono visualizzate tutte le periferiche stampanti disponibili in rete. A questo punto l’utente selezionerà la stampante desiderata e invierà la richiesta di stampa. Nel frattempo, nella rete UPnP si sono concluse altre fasi. Per la prima volta è stato attivato nella rete un nuovo punto di controllo. Quando un nuovo punto di controllo viene aggiunto alla rete, vengono inviati messaggi di rilevazione multicast SSDP:discover, alla ricerca di periferiche e servizi disponibili, come mostrato in figura 14. Di seguito è illustrato il formato del messaggio SSDP:discover. M-SEARCH * HTTP/1.1 HOST: 239.255.255.250:1900 MAN: "ssdp:discover" MX: seconds to delay response ST: search target Tutte le periferiche della rete devono rimanere in stato di ascolto sull'indirizzo multicast standard in attesa di ricevere questi messaggi, a cui devono rispondere se le periferiche e i servizi offerti corrispondono ai criteri di ricerca contenuti nel messaggio di rilevazione. Nel nostro esempio, l'applicazione di controllo stampa avviata dall’utente sta cercando in modo specifico tutte le periferiche per la stampa. 51 I messaggi di ricerca contengono informazioni specifiche del produttore, ad esempio il tipo di periferica o servizio, e vari identificatori. A queste informazioni vengono quindi aggiunti i tipi di periferica o servizi definiti da uno dei comitati di lavoro dell'UPnP Forum per questi tipi di periferiche, in questo caso stampanti. I dati vengono infine incapsulati in una richiesta SSDP inviata via HTTPMU. Le risposte a questi messaggi di ricerca vengono inviate tramite messaggi UDP unicast con intestazioni SSDP. Tali messaggi vengono chiamati Search:response e assumono il seguente formato: HTTP/1.1 200 OK CACHE-CONTROL: max-age = seconds until advertisement expires DATE: when response was generated EXT: LOCATION: URL for UPnP description for root device SERVER: OS/version UPnP/1.0 product/version ST: search target USN: advertisement UUID Le risposte ai messaggi di ricerca contengono le stesse informazioni contenute nei messaggi di annuncio, con l'unica differenza che vengono inviate solo all'indirizzo IP del punto di controllo che ha avviato la ricerca, in questo caso il palmare dell’utente. Descrizione; il nuovo punto di controllo in esecuzione sul palmare ora è a conoscenza di tutte le periferiche disponibili in rete. Per la prima volta in questo scenario un punto di controllo ha bisogno di maggiori informazioni su una periferica. In altre parole, siamo alla fase della descrizione. Nelle risposte ai messaggi di ricerca è contenuto l'URL che punta alle descrizioni della periferica. Per richiamare la descrizione di una periferica UPnP, il punto di controllo indirizza una richiesta HTTP GET all'URL specificato nel messaggio di risposta e la periferica restituisce la relativa descrizione, come si vede dalla figura 15. Gli URL che consentono di richiamare le descrizioni dei servizi sono inclusi nella descrizione della periferica, quindi le descrizioni dei servizi possono essere richiamate in modo analogo. 52 La descrizione UPnP di una periferica è un documento XML che contiene numerose informazioni specifiche del produttore, le definizioni di tutte le periferiche incorporate, gli URL per la presentazione della periferica e un'enumerazione di tutti i servizi, inclusi gli URL per le fasi di controllo e generazione degli eventi. Nel nostro caso la descrizione XML della periferica sarà identificata attraverso il nome: “urn:schemasupnp-org:device:printer:1”. I produttori di periferiche UPnP possono ampliare la descrizione standard di periferiche e servizi includendovi variabili di stato, azioni e persino interi servizi. In pratica, all’interno di questo documento, sono specificate tutte le variabili e le azioni che controllano il dispositivo di stampa. In questo modo la tecnologia UPnP consente la massima flessibilità, pur aderendo a standard di base. Esempi di descrizioni di periferiche e servizi sono contenuti nel documento UPnP Device Architecture. Figura 15: Schema della fase di descrizione. Gestione degli eventi; è possibile associare eventi alle variabili di stato contenute nella descrizione di un servizio. Quando il valore di queste variabili cambia, il servizio pubblica degli aggiornamenti. Un punto di controllo può sottoscrivere la ricezione di queste informazioni inviando un messaggio di sottoscrizione Subscription request. 53 Questo messaggio è generato con il metodo SUBSCRIBE definito nel protocollo GENA, ed assume il seguente formato: SUBSCRIBE publisher path HTTP/1.1 HOST: publisher host:publisher port CALLBACK: <delivery URL> NT: upnp:event TIMEOUT: Second-requested subscription duration Il servizio che notifica l'evento (publisher) può accettare la sottoscrizione e rispondere entro 30 secondi attraverso un messaggio di conferma, il cui formato è: HTTP/1.1 200 OK DATE: when response was generated SERVER: OS/version UPnP/1.0 product/version SID: uuid:subscription-UUID TIMEOUT: Second-actual subscription duration In questo messaggio viene comunicata la durata della sottoscrizione. Il sottoscrittore può rinnovare la sottoscrizione oppure annullarla se non è più interessato. Nella figura 16 è mostrato lo schema di gestione degli eventi. 54 Figura 16: Schema della fase di gestione degli eventi. Qualora il sottoscrittore volesse annullare il servizio di notifica eventi, dovrà inviare esplicitamente il seguente messaggio di cancellazione di sottoscrizione: UNSUBSCRIBE publisher path HTTP/1.1 HOST: publisher host:publisher port SID: uuid:subscription UUID In caso contrario riceverà periodicamente i seguenti messaggi di notifica eventi: NOTIFY delivery path HTTP/1.1 HOST: delivery host:delivery port 55 CONTENT-TYPE: text/xml CONTENT-LENGTH: Bytes in body NT: upnp:event NTS: upnp:propchange SID: uuid:subscription-UUID SEQ: event key <e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0"> <e:property> <variableName>new value</variableName> </e:property> Other variable names and values (if any) go here. </e:propertyset> Presentazione; l'applicazione in esecuzione sul palmare può stabilire quali periferiche e servizi presentare e come presentarli. In alternativa, se la stampante dispone di una pagina Web di presentazione, tale pagina HTML potrebbe essere scaricata e utilizzata per controllare la periferica. L'URL che punta alla pagina di presentazione è contenuto nella descrizione della periferica. Per richiamare questa pagina, il punto di controllo dovrà indirizzare una richiesta HTTP GET all'URL di presentazione, e la periferica risponderà restituendo la pagina di presentazione. Lo schema viene mostrato nella figura 17. 56 Figura 17: Schema della fase di presentazione. Controllo; dopo che il punto di controllo ha ottenuto tutte le informazioni necessarie su una periferica e i relativi servizi, può richiamare azioni da tali servizi, a cui i servizi rispondono restituendo valori. Per invocare un’azione relativa ad un servizio presso una periferica, il punto di controllo dovrà inviare il seguente messaggio chiamato Control:Action:Invoke, generato tramite il metodo POST, definito nel protocollo HTTP. POST path of control URL HTTP/1.1 HOST: host of control URL:port of control URL CONTENT-LENGTH: bytes in body CONTENT-TYPE: text/xml; charset="utf-8" SOAPACTION: "urn:schemas-upnp-org:service:serviceType:v#actionName" <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 57 <s:Body> <u:actionName xmlns:u="urn:schemas-upnp-org:service:serviceType:v"> <argumentName>in arg value</argumentName> other in args and their values go here, if any </u:actionName> </s:Body> </s:Envelope> La periferica interessata dovrà rispondere entro un certo intervallo di tempo tramite un messaggio che include il valore ritornato dell’azione. Nel nostro esempio il servizio di stampa restituisce i risultati dell'esecuzione dell'azione o eventuali errori nel messaggio Control:Action:Response, mostrato di seguito: HTTP/1.1 200 OK CONTENT-LENGTH: bytes in body CONTENT-TYPE: text/xml; charset="utf-8" DATE: when response was generated EXT: SERVER: OS/version UPnP/1.0 product/version <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:actionNameResponse xmlns:u="urn:schemas-upnp-org:service:serviceType:v"> <argumentName>out arg value</argumentName> other out args and their values go here, if any </u:actionNameResponse> </s:Body> </s:Envelope> 58 Un punto di controllo può inoltre interrogare tali servizi sul valore delle relative variabili di stato allo scopo di monitorare gli effetti dell'azione, attraverso i cambiamenti delle variabili di stato del servizio. L’interrogazione avviene tramite l’invio del messaggio Control:Query:Invoke. POST path of control URL HTTP/1.1 HOST: host of control URL:port of control URL CONTENT-LENGTH: bytes in body CONTENT-TYPE: text/xml; charset="utf-8" SOAPACTION: "urn:schemas-upnp-org:control-1-0#QueryStateVariable" <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:QueryStateVariable xmlns:u="urn:schemas-upnp-org:control-1-0"> <u:varName>variableName</u:varName> </u:QueryStateVariable> </s:Body> </s:Envelope> Lo scambio dei messaggi viene mostrato nella figura 18. Sebbene i cambiamenti delle variabili di stato vengano notificati a tutti i punti di controllo interessati tramite il meccanismo di controllo degli eventi, è comunque possibile interrogare esplicitamente una variabile per verificarne lo stato. L'interrogazione di una variabile è una variante della richiesta di controllo. La periferica deve rispondere all’interrogazione entro 30 secondi. 59 Figura 18: Schema della fase di controllo. 2.6 Sequence diagram dell’UPnP script In questo paragrafo verrà mostrata una breve sintesi del nostro esempio nella notazione UML (Unifield Modeling Language) sotto forma di sequence diagram, allo scopo di rendere chiaro il succedersi delle diverse fasi della connettività UPnP. Nella figura 19 viene presentata l’evoluzione nel tempo dello scenario descritto nel paragrafo precedente. Occorre notare che, per semplicità, nella figura riportata di seguito le varie fasi della connettività UPnP iniziano e terminano in modo da non sovrapporsi. 60 Control Point Internet Gateway Printer DHCP Discover DHCP Offer Indirizzamento DHCP Discover DHCP Offer SSDP:alive Time out Annuncio Time out Time out Rilevazione SSDP:discover Ricerca Search:response HTTP GET Descrizione urn:schemas-upnp-org:device:printer:1 Subscription request Subscription Gestione degli Eventi Event message Presentation request Presentazione Presentation page Control:Action:Invoke Controllo Control:Action:Response Time Time Figura 19: Sequence diagram dello script. 61 Time Questo, in realtà, non accade di solito a causa del fatto che la rete UPnP è di fatto un sistema asincrono. Per un sistema asincrono, infatti, valgono le seguenti assunzioni: 1. nessun limite temporale imposto ad un processo (periferica o punto di controllo) per eseguire un passo elementare, 2. nessun limite temporale imposto sulla consegna di un messaggio da sorgente a destinazione, 3. nessuna assunzione sulla sincronizzazione fisica dei clock dei vari dispositivi presenti sulla rete. Quindi a partire dall’istante in cui entrambi i dispositivi, palmare e stampante, ottengono un indirizzo IP, può accadere che le fasi possano sovrapporsi. 2.7 Come creare una rete domestica UPnP: il software Intel® A questo punto siamo interessati a costruire di fatto una vera e propria rete UPnP. Per far ciò sarà necessario avere a disposizione degli strumenti in grado di implementare tutte le funzionalità che UPnP offre. L’implementazione delle funzioni UPnP all’interno di dispositivi di rete come quelli mostrati per descrivere lo scenario, prevede l’esecuzione di tre passi fondamentali: 1. la progettazione dell’interfaccia del control point o del dispositivo, 2. l’implementazione di uno stack UPnP che soddisfi questa interfaccia, 3. la validazione dello stack per la compilazione e l’interazione. Questi step sono tutti supportati e resi possibili da tools di sviluppo ideati e distribuiti gratuitamente da Intel®. Intel è una delle società fondatrici dell’UPnP Forum ed ha una partecipazione attiva nello studio e nella realizzazione di nuove soluzioni software per 62 la creazione di device e control point basati sullo stack UPnP. All’indirizzo www.intel.com vengono forniti liberamente i seguenti tre pacchetti: Intel Authoring Tools for UPnP Technologies, Intel Remote I/O for UPnP Technologies, Intel Tools for UPnP Technologies. Con questi tools possono essere progettati dispositivi di qualunque tipo basati sul nucleo UPnP. Gli stack generati da questo software risultano essere molto meno ingombranti e maggiormente specifici rispetto a quelli prodotti da altri software disponibili sul mercato. L’elevato grado di specializzazione degli stack permette di ottenere inoltre maggiori prestazioni e minori complicazioni sia in fase di sviluppo che in fase di utilizzo. Il codice generato da questi tools è infine esportabile su qualsiasi tipo di piattaforma, rendendo questo software altamente compatibile con le specifiche progettuali di UPnP che, come già detto, è un protocollo multipiattaforma. L’ambiente di sviluppo garantisce inoltre la più completa interoperabilità tra il dispositivo creato e gli altri device basati su UPnP. Un altro vantaggio di questa soluzione risiede nel notevole risparmio di memoria introdotto. Infatti le dimensioni del codice generato dai tools della Intel si aggirano tipicamente attorno ai 500K. Infine, per quanto riguarda la gestione della sicurezza, attualmente è stata implementata soltanto all’interno dei dispositivi e non nei control point. 2.8 Il software Intel® per la tecnologia UPnP™ In questo paragrafo verranno descritti brevemente i tre pacchetti forniti dalla Intel per progettare device e control point basati su UPnP. 63 Intel Authoring Tools for UPnP Technologies; si tratta di un kit di strumenti, tra i quali troviamo: Intel Device Builder; Questo tool è la chiave di volta per creare le soluzioni di UPnP. E’ in grado di generare, a partire da un set di descrizioni XML dei servizi, lo stack scritto in qualsiasi linguaggio (C, C++, Java, …) di control point e device. Il ruolo di Intel Device Builder è quello di aggregare automaticamente dei Service Control Point Document (SCPD) per poi generare il codice delle applicazioni. I SCDP sono file XML che descrivono il servizio e che contengono informazioni come azioni, variabili di stato ed eventi disponibili relativi al servizio. Microstack; è il nome dato ai moduli generati in prima istanza dal Device Builder. Al momento della generazione il Device Builder produce un’applicazione di esempio completa nel linguaggio desiderato. AV Microstack; è un insieme di stack Audio/Video generati dal Device Builder, i quali rappresentano un buon punto di partenza per creare delle applicazioni personalizzate. Sample Applications; include una serie di esempi di applicazioni C/C++ per varie piattaforme. Intel Remote I/O for UPnP Technologies; insieme di strumenti che permette allo sviluppatore di constatare come sia resa possibile la comunicazione tra i dispositivi che compongono la rete UPnP. Basato sul framework .NET della Microsoft®, dimostra in che modo la tecnologioa UPnP consente ad un computer, tramite un’interfaccia utente in remoto, di interagire con un altro dispositivo presente in rete. Al suo interno troviamo: Remote I/O Server; questa applicazione rileva nella rete la presenza di dispositivi Remote I/O Client. Remote I/O Client; incluso solo per piattaforme Microsoft Windows e Microsoft PocketPC, scritto in linguaggio C. Remote I/O Control; cataloga tutti i Remote I/O Client di una rete. 64 Sample User Interfaces; fornisce degli esempi di interfaccia utente per la TV (640x480) e dispositivi palmari (240x320) in linguaggio C. Intel Tools for UPnP Technologies; basato anch’esso sul framework .NET della Microsoft® , questi tools consentono di velocizzare i tempi sia in fase di realizzazione, sia in fase di testing e di apprendimento delle caratteristiche dei dispositivi, con particolare attenzione verso i dispositivi audio/video (A/V). In questo pacchetto sono inclusi: Device Spy; rappresenta il punto di controllo universale, progettato con un’interfaccia semplice e intuitiva. Permette di riconoscere i device UPnP, visualizzandone le informazioni e di invocare azioni sui servizi messi a disposizione. Esegue il monitor degli eventi e gestisce gli errori. Service Author; consente la creazione dei documenti SCDP in XML che descrivono i device attraverso le variabili di stato e le azioni. Network Light; semplice applicazione a forma di lampadina che attraverso alcuni comandi si accende e incrementa la luminosità. Usata per dimostrare le potenzialità di Device Spy e Service Author. Device Sniffer; consente di monitorare il traffico broadcast sulla rete. Device Validator; è un tool ideato per testare i dispositivi UPnP creati. Device Relay; replica i dispositivi UPnP di una rete all’interno di un’altra. Device Scriptor; è un’applicazione di scripting che consente agli sviluppatori di ideare script di scenario e di eseguirli sui dispositivi UPnP. 65 AV Media Server; è un AV UPnP Content Directory, che consente agli utenti di fare il drag&drop delle cartelle e del loro contenuto al fine di rendere più facile lo scambio di materiale multimediale. AV Media Renderer; è un AV UPnP renderer il quale supporta l’esecuzione contemporanea di play list, ricerca di traccie audio, ecc. AV Media Controller; è un AV UPnP control point completo in ogni suo aspetto, l’equivalente del Device Spy per gli AV. Controlla di fatto il contenuto delle directory dei dispositivi di rete, visualizzandone il contenuto multimediale e favorendone la ricerca. AV Wizard; é un AV UPnP contol point che permette l’esecuzione dei contenuti multimediali immagazzinati sul file system locale mediante riproduttori disponibili. E’ un’applicazione integrata su Windows XP. All’interno di Intel Tools for UPnP Technologies troviamo anche Intel Micro Tools for UPnP Technologies. Questi tools sono inclusi sotto forma di codice sorgente generato interamente con il Device Builder. Sono dei piccoli esempi di applicazione compilati per PocketPC e per Windows. 2.9 Esempio di costruzione di un device: Micro Light Bulb La progettazione e costruzione di device e servizi è resa piuttosto semplice grazie alla presenza, nel pacchetto offerto dalla Intel, di tutto il software necessario alla realizzazione passo passo di qualunque tipologia di dispositivo. In questo paragrafo verrà offerto un esempio pratico di progettazione di un dispositivo luci chiamato Micro Light Bulb (Micro lampadina) attraverso le specifiche contenute 66 nel documento “Lighting Controls V1.0” disponibile presso il sito www.upnp.org. L’esempio segue le linee guida fornite direttamente dall’UPnP Forum. L’identificatore del tipo di periferica che verrà utilizzata è: “urn:schemas-upnporg:device:BinaryLight:1” e dispone principalmente di due servizi: SwitchPower e DimmingService. 2.9.1 Descrizione del dispositivo Micro Light Bulb Si tratta di un semplice dispositivo luce UPnP, che può essere gestito attraverso un qualsiasi control point. I servizi offerti da questo dispositivo includono, come già accennato, SwitchPower e DimmingService. Il primo consente di accendere e spegnere tramite controllo a distanza il dispositivo luci, mentre il secondo, sostanzialmente, permette di regolare l’intensità luminosa emessa dal Micro Light Bulb. Entrambi i servizi sono descritti attraverso le variabili di stato e le azioni di controllo che danno la possibilità, ad un punto di controllo qualsiasi (PC, palmare, ecc), di gestire a distanza il meccanismo di illuminazione della propria abitazione. Nella figura 20 in basso viene mostrata la descrizione schematica del dispositivo, mentre la descrizione XML completa del dispositivo può essere consultata all’interno del documento “Lighting Controls V1.0”, identificata dal nome “urn:schemas-upnp-org:device:BinaryLight:1”. Figura 20: Schema del dispositivo BinaryLight1. 67 2.9.2 Descrizione dei servizi Micro Light Bulb: SwitchPower Per quanto riguarda il servizio SwitchPower, l’identificatore è: “urn:schemas-upnporg:service:SwitchPower:1”. Questo servizio utilizza due variabili di stato e due comandi, che verranno descritti nel seguito. Le variabili sono: Status; riflette lo stato attuale del dispositivo. E’ una variabile di tipo boolean e vale 0 se il dispositivo è spento e 1 se è acceso (valore di default pari a 0). Target; nel nostro esempio assume lo stesso valore di Status. Mentre i comandi per controllare il servizio sono: GetStatus; l’invocazione di questo comando restituisce lo stato attuale del servizio (0 spento, 1 acceso). SetTarget; configura lo stato del servizio. In pratica accende e spegne il dispositivo. 2.9.3 Descrizione dei servizi Micro Light Bulb: DimmingService Tra le variabili di stato relative al servizio DimmingService, citiamo: LoadLevelStatus; rappresenta il livello attuale di intensità luminosa del dispositivo. Assume valori compresi tra 0 e 100. LoadLevelTarget; è il livello di intensità luminosità desiderata. Tra i comandi citiamo, per brevità, soltanto i seguenti: GetLoadLevelStatus; l’invocazione di questa azione restituisce nella variabile retLoadLevelStatus, il valore LoadLevelStatus, ovvero il livello attuale di intensità luminosità. 68 GetMinLevel; restituisce il livello minimo di intensità luminosa. SetLoadLevelTarget; setta il valore LoadLevelTarget nel nuovo valore new LoadLevelTarget. 2.9.4 Progettazione dei servizi di Micro Light Bulb Innanzitutto verranno create le variabili di stato e le azioni che caratterizzano il dispositivo, ovvero i servizi di cui dispone, attraverso il tool Service Author. Compito del Service Author è quello appunto di creare dei documenti SCDP che definiscano i servizi inclusi nel dispositivo. Sia le variabili di stato che le azioni del dispositivo sono definite nel documento “Lighting Controls V1.0” relativo al dispositivo luci. Una volta aperto Service Author possono essere inserite, rimosse o modificate le variabili e le azioni cliccando con il tasto destro del mouse sull’interfaccia del tool oppure importando direttamente la descrizione dei servizi dai documenti forniti dalla Intel. Le figure 21 e 22 mostrano l’interfaccia del tool relativo alle variabili che descrivono i servizi SwitchPower e DimmingService rispettivamente. Figura 21: Interfaccia del tool Service Author riferito alle variabili di SwitchPower. 69 Figura 22: Interfaccia del tool Service Author riferito alle variabili di DimmingService. Le figure 23 e 24 mostrano, invece, l’interfaccia del tool relativo alle azioni che descrivono i servizi SwitchPower e DimmingService rispettivamente. Figura 23: Interfaccia del tool Service Author riferito alle azioni di SwitchPower. 70 Figura 24: Interfaccia del tool Service Author riferito alle azioni di DimmingService. Al termine dell’operazione il salvataggio avrà come output lo schema XML della descrizione del servizio offerto dal device. Questo documento XML verrà inserito dal tool Device Builder all’interno del dispositivo che si vuole progettare. La descrizione XML può essere consultata nel documento “Lighting Controls V1.0” disponibile presso il sito www.upnp.org. 2.9.5 Generazione dello stack UPnP di Micro Light Bulb Il tool Device Builder offre la possibilità di importare device da file oppure dalla rete. L’aggiunta, la rimozione e la possibilità di importare nuovi servizi o device è supportata da operazioni richiamabili dal menu presente sull’interfaccia, come mostrato nella figura 25 in basso. 71 Figura 25: Interfaccia Device Builder, richiamo dei device presenti sulla rete. Una volta richiamato il device è possibile aggiungere device nidificati alla radice (root) oppure servizi semplicemente cliccando con il tasto destro sul device o sui servizi rispettivamente. Nella figura 26 viene mostrata la schermata dell’interfaccia Device Builder relativa al device Micro Light Bulb. Come si può notare è presente sulla sinistra lo schema con il device root e i suoi servizi, mentre sulla destra viene mostrata la descrizione del dispositivo. 72 Figura 26: Interfaccia Device Builder, visualizzazione del dispositivo luci. Con questo tool i device possono essere salvati e riutilizzati in un secondo momento per apportare modifiche o essere utilizzati all’interno di altri device. Le informazioni relative al dispositivo includono un Friendly Name, attraverso il quale il dispositivo viene intuitivamente riconosciuto dall’utente e il Root Device Type, che permette ai control point di selezionare e riconoscere le specifiche funzioni di un dispositivo. Infatti ogni device viene implementato secondo le specifiche progettuali dettate dall’UPnP Forum e accessibili attraverso documenti identificati dal Root Device Type, che in questo caso è urn:schemas-upnp-org:device:BinaryLight:1. Questo documento è presente ovviamente nella directory “Lighting Controls V1.0”. Una volta terminata la progettazione è possibile esportare lo stack del dispositivo o del control point mediante la voce Export Device Stack o Export Control Point rispettivamente, come mostrato in figura 27. 73 Figura 27: Interfaccia Device Builder, esportazione device stack. L’operazione permetterà di visualizzare il Device Stack Code Generation o il Control Point Stack Code Generation. Questa interfaccia, mostrata in figura 28 consente di generare l’UPnP device stack e l’UPnP control point stack rispettivamente, cliccando sul tasto che si trova nella parte inferiore dalla schermata. 74 Figura 28: Interfaccia Device Stack Code Generation. Nel pannello General sono presenti tutti i principali settaggi, tra cui: Target Platform; offre la possibilità di scegliere la piattaforma per la quale si vuole progettare il dispositivo. Questa opzione rende ovviamente il software della Intel altamente compatibile con i requisiti proposti da UPnP. Tra le piattaforme supportate troviamo: a) Intel C Stack per Microsoft® con Windows 98, Windows NT, Windows XP nelle due versioni WinSock1 e WinSock2, e Windows 95 nella sola versione WinSock1. L’esportazione per questa piattaforma genera un codice in linguaggio C/C++ compatibile con il software Microsoft Visual Studio 7 (2005). b) Intel C Stack per POSIX (Portable Operating System Interface for uniX) e Linux standard sockets. 75 c) Intel C Stack per PocketPC 2002 (WinSock1); il codice generato per questa piattaforma viene impiegato utilizzando come ambiente di sviluppo Microsoft Embedded Visual Studio 3. Il codice generato è di dimensioni molto ridotte ed è ottimizzato in modo da fare un uso moderato delle risorse disponibili su un PocketPC quale potrebbe essere ad esempio il nostro imate jasjar. d) Intel Java 1.3 Stack Output Path; consente di selezionare la directory nella quale salvare il codice generato. Nel pannello Features troviamo invece la possibilità di impostare alcuni aspetti relativi al protocollo di trasmissione, come ad esempio l’intervallo di tempo entro il quale inviare di nuovo il messaggio di annuncio SSDP:alive (valore di default pari a 1800 secondi) e la dimensione degli header dei pacchetti trasmessi, come mostra la figura 29. Figura 29: Interfaccia Device Stack Code Generation, Features. 76 Infine, nel pannello Advanced si possono settare alcuni parametri relativi alla gestione degli errori e delle chiamate dirette a funzioni disponibili su device esterni. 2.9.6 Codice sorgente generato Al termine dell’importazione dell’UPnP device stack e dell’UPnP control point stack mediante il Device Builder vengono generati e salvati nella directory specificata nell’OutputPath un certo numero di file. Tra questi troviamo “UPnPSample.vcproj”, il quale rappresenta il file di progetto per il Microsoft Visual Studio 7 e il “Main.c”. dove sono definite tutte le funzioni che agiscono sulle variabili di stato del dispositivo. Il Main del progetto è di fatto un piccolo esempio di codice in linguaggio C/C++, all’interno del quale vengono invocate una breve lista di azioni a cui il dispositivo risponde. Occorre notare che verranno prodotti questi file se è stato opportunamente selezionato Intel C Stack alla voce Target Platform. Visual rappresenta l’ambiente di sviluppo all’interno del quale è possibile aprire i file di progetto relativi al control point e ai device. Una volta aperti basterà avviare il debug per osservare, nella finestra di output, lo scambio di messaggi, relativi alle diverse fasi della connettività, tra control point e device. 2.10 Simulazione connettività UPnP: scenario 1 Alla luce delle conoscenze maturate fino a questo punto, siamo ora in grado di fornire un piccolo esempio relativo alla costruzione di una rete LAN con caratteristiche UPnP, attraverso il software della Intel. L’esempio pratico ricalca sostanzialmente il modello di rete domestica UPnP prospettato nel paragrafo 2.4, salvo alcune eccezioni. La figura 30 mostra lo scenario reale che è stato creato al fine di produrre una simulazione reale 77 di connettività di una rete UPnP. La rete poggia su una LAN ed è costituita dai seguenti dispositivi: PoC (Point of Control); ovvero il punto di controllo della rete UPnP. E’ un laptop computer fornito del pacchetto Intel Tools for UPnP Technologies. In pratica il PoC possiede tutti gli strumenti per scoprire i dispositivi presenti sulla rete e per accedere ai servizi che quest’ultimi mettono a disposizione. Al suo interno è presente l’AV Media Renderer, ovvero un player in grado di riprodurre i contenuti multimediali presenti sull’AV Media Server. Access Point; dispositivo gateway capace di consentire la comunicazione tra i vari dispositivi di rete. I servizi forniti da questo device includono l’accesso a Internet, un server DHCP, ecc… TwonkyVision; si tratta di un AV Media Server con funzionalità UPnP, istallato su un laptop computer, contenente numerosi file multimediali come video, foto, musica, ecc. Viene controllato dal PoC ed è in grado di inviare i file da riprodurre verso l’AV Media Renderer. Il trasferimento dei file avviene al di fuori del protocollo UPnP (fuori banda). I servizi disponibili inclusi in questo dispositivo sono: Content Directory; consente al PoC di visualizzare tutti i contenuti multimediali dell’AV Media Server. Connection Manager; questo servizio è utilizzato per gestire le connessioni tra PoC e device. 78 Figura 30: Scenario 1 creato per la simulazione. L’accesso alla rete e ai servizi da parte del PoC può verificarsi secondo entrambe le modalità di connessione: wired e wireless. Nel nostro esempio, la condivisione dei contenuti dell’AV Media Server, avviene in modalità wireless tramite l’access point secondo lo standard 802.11g. Di seguito verranno illustrati i passi che descrivono come sia stata realizzata la simulazione di connettività UPnP relativa allo scenario 1. Per prima cosa, viene aperta sul PoC l’applicazione Device Spy. Questa operazione simula di fatto l’accensione del PoC. A partire da questo istante viene aggiunto nella rete un nuovo punto di controllo. Il Device Spy consente la ricerca dei devices presenti nella rete e l’accesso ai servizi che essi mettono a disposizione. La figura 31 mostra l’interfaccia del Device Spy attraverso la quale un utente è in grado sia di visualizzare i servizi presenti nella rete, sia di invocare azioni su tali servizi. 79 Figura 31: Interfaccia Device Spy. L’applicazione permette di visualizzare tutti i dispositivi attualmente presenti. Nel nostro esempio è stato visualizzato il Media Server. E’ anche possibile monitorare il traffico di pacchetti scambiati dai dispositivi attraverso il Device Sniffer. Infatti, una volta acquisito un indirizzo di rete valido, ciascuna periferica tenta di rendere pubblica la propria presenza ai PoC attraverso messaggi di notifica SSDP:alive. Viceversa il PoC, appena acquisito un indirizzo di rete valido, tenta di scoprire i devices disponibili nell’ambiente inviando messaggi di ricerca multicast ssdp:all verso tutti. 80 Figura 32: Interfaccia Device Sniffer. Una volta visualizzato il device, si seleziona il servizio al quale si è interessati. In questo caso siamo interessati ad accedere ai contenuti multimediali presenti sul Media Server “TwonkyVision”. Per accedere a questo tipo di servizi risulta conveniente aprire l’AV Media Controller. Come già accennato si tratta di un AV UPnP PoC completo in ogni suo aspetto, l’equivalente del Device Spy per gli AV. Controlla il contenuto delle directory del Media Server, visualizzandone il contenuto multimediale. Per usufruire dei file multimediali occorre però disporre di un Media Player, verso il quale inviare il contenuto del Media Server. Intel fornisce, come già indicato nei paragrafi precedenti, un’applicazione in grado di venirci incontro: l’AV Media Renderer. Si tratta di un AV UPnP renderer capace di supportare l’esecuzione di immagini e di tracce audio/video. 81 Figura 33: Interfaccia dell’AV Media Controller. A questo punto basta inviare il file desiderato verso l’AV Media Renderer cliccando con il tasto destro del mouse sul brano e eseguire il play sul proprio PoC. Si noti che il trasferimento dei contenuti AV verso il Media Renderer avviene in modalità streaming. Col termine streaming si identifica la modalità operativa di un’applicazione che presenta dati multimediali, mentre il trasferimento di tali dati è ancora in corso. Prima di terminare il capitolo, però, si rende necessario introdurre due precisazioni. La prima delle quali è che la qualità della riproduzione è condizionata dalle capacità render del proprio portatile ma ciò esula, ovviamente, dagli obiettivi di questa simulazione. La seconda è che, affinché l’AV Media Controller veda l’AV Media Renderer, quest’ultimo deve necessariamente essere aperto prima che avvenga il trasferimento dei dati. 82 Figura 34: Interfaccia dell’AV Media Renderer. 2.11 Simulazione connettività UPnP: scenario 2 In questo paragrafo verrà mostrato uno scenario di rete molto simile a quello precedente, caratterizzato dalla presenza del dispositivo jasjar al posto del portatile. Il nuovo scenario prevede la presenza dei seguenti dispositivi: PoC (Point of Control); si tratta, come già detto, dell’i-mate™ jasjar con piattaforma Microsoft® Windows Mobile™ 5.0 Phone Edition, sul quale è stato istallato l’applicativo “Rudeo Play & Control”. Questo software è allo stesso tempo un controller e un player per Windows Mobile 5.0 equivalente all’AV MediaController e all’AV MediaRenderer della Intel per Windows XP. E’ disponibile una versione di prova gratuita presso il sito www.rudeo.com ma sfortunatamente è in grado di eseguire solo tracce audio. 83 Access Point; TwonkyVision; La figura 31 mostra lo scenario 2 creato per la nuova simulazione. Questo esempio ha l’obiettivo di mostrare come le funzionalità UPnP possano essere portate anche al di fuori dei dispositivi portatili i quali, come risulta evidente, rappresentano un vincolo molto forte per quanto riguarda la praticità e la comodità d’uso. Figura 31: Scenario 2 creato per la simulazione. All’interno del PoC è sufficiente aprire il programma “Rudeo Play & Control” per visualizzare i dispositivi AV presenti in rete e per accedere ai loro contenuti multimediali. Anche in questo esempio, la condivisione dei contenuti dell’AV Media Server avviene in modalità wireless tramite l’access point, secondo il protocollo 802.11g. La figura 32 mostra l’interfaccia del Rudeo attraverso la quale è possibile accedere ai contenuti multimediali del TwonkyVision. 84 Figura 32: Interfaccia del Rudeo Play & Control. 85 Capitolo 3 Analisi e sviluppo del progetto 3.1 Introduzione Nei capitoli precedenti è stata offerta una breve panoramica sul service discovery e in particolare sul protocollo Universal Plug and Play. Inoltre sono stati mostrati alcuni semplici scenari applicativi all’interno dei quali è risultato conveniente introdurre questo standard, al fine di creare una piccola rete domestica. Il software della Intel è stato, ovviamente, preziosissimo a tal riguardo, in quanto ci ha permesso di realizzare un modesto ma significativo esempio di connettività UPnP. L’esempio, lo ricordiamo, consisteva nel simulare un possibile scenario di rete domestica, caratterizzato dalla presenza di un Media Server (TwonkyVision) e di un PoC (laptop e palmare). In questo capitolo verrà mostrato un nuovo scenario applicativo che richiederà l’introduzione di una nuova proposta di architettura Audio/Video. Analogamente agli esempi portati nel capitolo precedente, anche questa architettura si basa sulla presenza di AV Media Server e PoC. L’idea nasce, naturalmente, dagli standard proposti dall’UPnP Forum. L’architettura di riferimento è consultabile presso il sito www.upnp.org ed in particolare all’interno dei documenti “MediaServer V1.0 and MediaRenderer V1.0” e “Quality of Service V1.0”, dove è possibile esaminare le versioni originarie presentate dall’UPnP Forum sotto l’identificativo “UPnP AV Architecture:0.83” e “UPnP QoS Architecture:1.0” rispettivamente. La proposta di architettura UPnP che verrà mostrata 86 in questo capitolo integra quelle proposte dall’UPnP Forum allo scopo di offrire, ad un potenziale utente UPnP, maggiori servizi e funzionalità. 3.2 Scenario di riferimento Supponiamo che un ipotetico utente (che chiameremo utente 1), dotato di un qualche dispositivo portatile, stia cercando di visualizzare l’insieme dei servizi presenti su una qualche rete, ad esempio quella mostrata negli scenari 1 e 2 del capitolo precedente. Nel caso egli disponga della tecnologia UPnP per effettuare il service discovery troverà, dopo un breve intervallo di tempo, un certo numero di dispositivi presenti, in grado di offrire alcuni servizi. Immaginiamo ancora che l’utente sia interessato ad accedere ai sevizi messi a disposizione da un AV Media Server, ovvero un dispositivo che include al proprio interno diversi contenuti multimediali come foto, video, musica, ecc. La condivisione dei contenuti presenti sull’AV Media Server avviene inviando questi sull’AV Media Renderer, ovvero un dispositivo player (spesso presente all’interno del terminale dell’utente, ma ciò non è necessario) capace di riprodurre i contenuti multimediali dell’AV Media Server. Si ricorda che il trasferimento dei dati tra i due dispositivi AV avviene in modalità streaming utilizzando la modalità trasmissiva wireless 802.11g. Dopo che l’utente 1 ha rilevato la presenza dell’AV Media Server, immaginiamo ancora che egli desideri riprodurre un determinato contenuto video sull’AV Media Renderer selezionato, che chiameremo MediaPlayer1. Mentre sta avendo luogo il trasferimento dei dati dall’AV Media Server verso il MediaPlayer1, si supponga che un altro utente (chiamato utente 2), dotato anch’egli di dispositivo portatile con incluso un AV Media Renderer (che chiameremo MediaPlayer2) abbia già concluso la fase di rilevazione dei dispositivi. A questo punto l’utente 2 decide di selezionare un video sull’AV Media Server e di trasferire il suo contenuto verso il proprio AV Media Renderer (MediaPlayer2), mentre la fase di trasferimento verso il 87 MediaPlayer1 dell’altro utente sta ancora avendo luogo. La figura 33 mostra lo scenario di riferimento. Gli attori in gioco sono: Access Point; dispositivo router che consente la comunicazione tra i vari devices presenti nella rete in modalità wireless, secondo lo standard 802.11g. AV Media Server; dispositivo UPnP contenente video, foto, musica, ecc. PoC utente 1; dispositivo portatile che include un AV Media Renderer chiamato MediaPlayer1. PoC utente 2; dispositivo portatile che include un AV Media Renderer chiamato MediaPlayer2. Figura 33: Scenario di riferimento. 88 3.3 Problema aperto: contese d’accesso In base alle ipotesi illustrate nel paragrafo predente, siamo ora in grado di mostrare il problema che questo nuovo scenario ha aperto: le contese d’accesso. Di seguito verrà offerta una breve descrizione sull’argomento in questione. La concorrenza delle richieste di servizio presentate da diversi PoC può determinare condizioni di contesa. Queste si verificano quando tutte le risorse disponibili sono occupate a favore di una certa attività di utilizzazione (come può essere, ad esempio, la riproduzione AV di un Media Renderer) e vengono presentate nuove richieste di sevizio. Le condizioni di contesa devono essere risolte adottando determinate tecniche di scheduling. Lo scheduling è una disciplina in grado di decidere l’ordine di esecuzione delle richieste di servizio che si presentano al fine di condividere una qualche risorsa. Nel nostro caso, la risorsa condivisa è il mezzo radio messo a disposizione dall’access point e le attività che entrano in conflitto a causa della contesa del mezzo radio sono i due AV Media Renderer. Queste applicazioni necessitano di scheduling allo scopo di ottenere determinati livelli di qualità di riproduzione. Come già più volte ricordato, i dati trasferiti e poi riprodotti sugli AV Media Renderer sono trasmessi in modalità streaming, ovvero vengono trasportati come flusso dati e non necessitano di essere salvati interamente prima di poter essere riprodotti. I dati in arrivo vengono messi in sequenza in un buffer dal quale il ricevente preleverà i dati da visualizzare, consumando così i dati del buffer. Questo fa intuire che per usufruire di servizi multimediali streaming (video, audio, ecc…) c’è bisogno di una determinata qualità e continuità della comunicazione per evitare ritardi nella trasmissione, i quali riducono di molto la qualità del servizio. La discontinuità porta facilmente a un ritardo o nel caso peggiore al blocco dell’erogazione del servizio. Se, dunque, l’utente 1 non intende percepire una qualità della riproduzione video inferiore alle proprie aspettative a causa della concorrenza sul mezzo radio dell’attività dell’utente 2, deve necessariamente richiedere una priorità più alta per i dati che intende trasferire verso il proprio MediaPlayer. Da quanto esposto fino ad ora, risulta evidente che la nuova 89 architettura di servizio dovrà consentire agli utenti di gestire l’allocazione delle risorse disponibili attraverso la classificazione dei flussi dati mediante QoS (Quality of Service) differenziate. Ad ogni livello di QoS sarà associato, chiaramente, un determinato livello di priorità. 3.4 Architettura AV UPnP: descrizione generale Siamo dunque interessati a creare un’architettura in grado di offrire nuove soluzioni, attraverso le quali superare le nascenti difficoltà incontrante in termini di contese d’accesso. Questa nuova architettura integrerà i servizi messi a disposizione da due distinte architetture di servizio: l’architettura AV UPnP e l’architettura QoS UPnP, al fine di fornire ai diversi flussi dati, QoS differenziate e prestabilite. Nei paragrafi seguenti verranno mostrati tutti i dettagli implementativi dell’architettura UPnP AV, i quali definiscono in maniera completa le interazioni tra PoC e AV devices. Lo schema grafico di questa architettura è rappresentato nella figura 34 e mostra tutti gli attori coinvolti: AV Control Point o PoC; dispositivo fisso o portatile in grado di scoprire gli AV devices presenti nell’ambiente e interagire con essi. AV Media Server; dispositivo che include al proprio interno diversi contenuti multimediali come foto, video, musica, ecc. Viene controllato dal PoC ed è in grado di inviare i file da riprodurre verso l’AV Media Renderer. AV Media Renderer; dispositivo indipendente o integrato nel PoC, capace di riprodurre i contenuti multimediali dell’AV Media Server. 90 Figura 34: Architettura AV UPnP. 3.5 Descrizione del dispositivo AV Media Server L’AV Media Server è utilizzato per archiviare l’insieme dei contenuti multimediali disponibili nella rete domestica. Questo dispositivo può includere altri devices come, ad esempio, DVD, MP3 player, TV, radio, PC ed altro ancora. L’identificativo del dispositivo è “urn:schemas-upnp-org:device:MediaServer:1” ed è caratterizzato dai seguenti servizi descritti più avanti: Content Directory, ConnectionManager e AV Transport (opzionale). Compito dell’AV Media Server è quello di condividere con i PoC presenti nell’ambiente i propri file e di trasferirli verso un AV Media Renderer fuori banda, ovvero al di fuori del protocollo UPnP. La figura 35 mostra lo schema dell’AV Media Server. 91 Figura 35: Schema del dispositivo AV Media Server. 3.5.1 Descrizione servizi AV Media server: Content Directory Il servizio Content Directory, il cui identificativo è “urn:schemas-upnp- org:service:ContentDirectory:1”, comprende un set di azioni che consentono al PoC di visualizzare tutti i contenuti multimediali dell’AV Media Server. L’azione principale di questo servizio è: Browse(); permette al PoC di ottenere dettagliate informazioni circa i contenuti del Media Server, come ad esempio il nome, l’artista, la data e la dimensione del file multimediale che si vuole condividere. Inoltre include il Tspec (Traffic Specification) del flusso dati relativo al trasferimento di ciascun contenuto. Il Tspec definisce le caratteristiche statistiche di questo flusso dati. 3.5.2 Descrizione servizi AV Media server: Connection Manager Questo servizio è utilizzato per gestire le connessioni associate ad un particolare device. L’identificativo a cui fa riferimento è “urn:schemas-upnp-org:ConnectionManager:1” e 92 dispone di alcune azioni di controllo che consentono all’AV Media Server di prepararsi per il trasferimento dei contenuti multimediali. Le azioni principali relative a questo servizio sono: GetProtocolInfo(); questa azione consente al PoC di visualizzare la lista completa dei protocolli e del formato dati supportato dall’AV Media Renderer per il trasferimento dati dall’AV Media Server. PrepareForConnection(); l’uso di questa azione permette al device di prepararsi alla connessione sulla rete al fine di inviare o ricevere i contenuti AV. ConnectionComplete(); L’utilizzo di questa azione consente al PoC di terminare la connessione instaurata tra AV Media Server e AV Media Renderer. 3.5.3 Descrizione servizi AV Media server: AV Transport Il servizio opzionale AV Transport consente al PoC di controllare il cosiddetto “playback” dei contenuti multimediali presenti nell’AV Media Server. Il suo identificativo è “urn:schemas-upnp-org:service:AVTransport:1” e include tra i propri comandi le azioni che controllano direttamente il flusso dei contenuti riprodotti dall’AV Media Renderer, come Play, Stop, Pause, Seek, ecc. I principali comandi sono: SetAVTransportURI(); questa azione consente al PoC di indicare l’URI relativo al contenuto multimediale da trasferire verso i Media Renderer. Play(); L’invocazione di questa azione permette, ovviamente, al PoC di riprodurre il contenuto dell’AV Media Server sull’AV Media Renderer. 93 3.6 Descrizione del dispositivo AV Media Renderer L’AV Media Renderer viene utilizzato per riprodurre i contenuti multimediali visualizzati sull’AV Media Server dal PoC. Questo dispositivo, identificato come “urn:schemas-upnp-org:device:MediaRenderer:1”, può essere visto come un device fisicamente distinto oppure incluso direttamente nel PoC, come risulta evidente dagli esempi creati nel capitolo precedente. Anche l’AV Media Renderer, come l’AV Media Server, può includere una serie di altri devices al proprio interno, come monitor TV, impianti stereo, MP3 player, ecc. I servizi compresi in questo dispositivo sono: RenderingControl, ConnectionManager, AVTransport (opzionale). Per quanto riguarda ConnectionManager e AVTransport, valgono le stesse considerazioni fatte per l’AV Media Server. Ci limiteremo a descrivere di seguito, quindi, soltanto il servizio di RenderingControl. La figura 36 mostra lo schema dell’AV Media Renderer. Figura 36: Schema del dispositivo AV Media Renderer. 94 3.6.1 Descrizione servizi AV Media renderer: Rendering Control Il servizio, identificato come “urn:schemas-upnp-org:service:RenderingControl:1”, prevede un set di istruzioni che consentono al PoC di controllare e gestire la riproduzione dei contenuti multimediali presenti nell’AV Media Server. Queste istruzioni includono la regolazione di alcuni aspetti relativi alla percezione visiva dei video come la luminosità, il contrasto, la temperatura di colore, ecc. Le azioni principali che caratterizzano questo servizio sono: SetVolume(); l’azione consente al PoC di regolare il livello del volume sull’AV Media Renderer. SetBrightness(); l’azione consente al PoC di regolare il livello di luminosità relativo al contenuto AV riprodotto sull’AV Media Renderer. 3.7 Architettura QoS UPnP: descrizione generale L’architettura QoS UPnP proposta dall’UPnP Forum rappresenterà l’elemento caratterizzante della nuova architettura integrata, in quanto consentirà ai futuri utenti UPnP di assegnare diverse QoS ai contenuti multimediali che intendono trasferire verso i propri Media Renderer. Questa architettura consiste di tre elementi (servizi) rappresentati nella figura in basso: QoS Policy Holder, QoS Manager e QoS Device Service. 95 Figura 37: Architettura QoS UPnP. L’utente, attraverso il servizio QoS Manager, controlla l’assegnazione dei livelli di QoS relativi ai diversi flussi dati, mediante l’azione Request QoS (1). Il servizio QoS Manager, richiama il livello di QoS relativo ad un determinato flusso indicato con Traffic Descriptor attraverso il servizio QoS Policy Holder (2). Il servizio restituisce questo livello in Traffic Policy (3). Infine il servizio QoS Manager setta il valore di QoS da assegnare al flusso dati definito in Traffic descriptor (4). 96 3.7.1 Descrizione servizi architettura QoS: QoS Policy Holder Il servizio QoS Policy Holder permette al PoC di ottenere informazioni circa la QoS assegnata a ciascun flusso dati che viene trasferito tra i dispositivi presenti nella rete (AV devices). Questo servizio, identificato come “urn:schemas-upnp- org:service:QosPolicyHolder:1”, è gestito e controllato dall’utente tramite le variabili di stato: A_ARG_TYPE_TrafficDescriptor; include informazioni relative ad un determinato flusso dati, come il Tspec. A_ARG_TYPE_TrafficPolicy; questa variabile rappresenta il livello di QoS assegnato ad un particolare flusso ed è caratterizzata dalle seguenti informazioni: AdmissionPolicy; varibile booleana, indica se la gestione della QoS è abilitata oppure no. TrafficImportanceNumber; valore compreso tra 0 e 7 ed indica il livello di priorità assegnato. Questo valore segue lo schema delle classi di traffico definito in 802.1D Annex G [IEEE]. UserImportanceNumber; se AdmissionPolicy è abilitato, questo intero compreso tra 0 e 255 indica il livello di priorità assegnato dall’utente. e l’azione: GetTrafficPolicy(); permette al PoC di conoscere il livello di QoS assegnato ad un determinato flusso identificato tramite la variabile A_ARG_TYPE_TrafficDescriptor. L’invocazione di questa azione ritorna la varibile A_ARG_TYPE_TrafficPolicy. 97 3.7.2 Descrizione servizi architettura QoS: QoS Manager Questo servizio consente al PoC di configurare i vari flussi dati secondo differenti livelli di QoS. L’identificativo di questo servizio è “urn:schemas-upnp- org:service:QosManager:1” ed è rappresentato dalle seguenti variabili: A_ARG_TYPE_TrafficDescriptor; questa variabile contiene informazioni riguardanti il flusso dati, ad esempio il Tspec. e dall’azione: RequestTrafficQos(); l’invocazione di questa azione consente al PoC di settare un determinato livello di QoS per un certo flusso dati, descritto mediante la variabile A_ARG_TYPE_TrafficDescriptor. 3.7.3 Descrizione servizi architettura QoS: QoS Device Service Questo servizio viene incluso in tutti i dispositivi che entreranno in gioco nel trasferimento dei flussi dati, come l’AV Media Server e l’AV media Renderer. Il suo identificativo è “urn:schemas-upnp-org:service:QosDevice:1” e ha il compito di riservare le risorse necessarie per un determinato flusso dati, secondo la richiesta del servizio QoS Manager. Le variabili utilizzate sono: PathInformation; fornisce informazioni riguardanti indirizzi MAC dei dispositivi. QosDeviceInfo; include informazioni circa il numero di porta e il protocollo utilizzato per uno specifico flusso. QosDeviceState; indica il livello attuale di QoS relativo al device. Mentre le azioni sono: 98 GetPathInformation(); ritorna la variabile PathInformation. GetQosDeviceInfo(); ritorna la variabile QosDeviceInfo. GetQosDeviceState(); ritorna la variabile QosDeviceState. SetupTrafficQos(); questa azione consente all’utente di configurare il livello di QoS desiderato per il flusso dati specificato nella variabile A_ARG_TYPE_TrafficDescriptor. 3.8 Architettura AV/QoS UPnP: descrizione generale Adesso che sono state descritte le due architetture, siamo in grado di fornire una prima descrizione generale della nuova architettura integrata. Si tratta di un sistema di distribuzione media basato su UPnP capace di supportare QoS all’interno di una rete domestica. La nuova soluzione è caratterizzata dall’integrazione dei servizi messi a disposizione dalle due architetture mostrate precedentemente: l’architettura AV UPnP e l’architettura QoS UPnP. Di seguito viene mostrato lo schema rappresentativo di questa soluzione integrata. 99 Figura 38: Architettura integrata AV/QoS UPnP. 3.9 Architettura AV/QoS UPnP: sequence diagram generale Per descrivere il funzionamento dell’architettura AV/QoS UPnP, verrà mostrato un semplice sequence diagram relativo alle varie fasi che caratterizzano la connettività UPnP di questa nuova soluzione. L’esempio fa riferimento allo scenario introdotto all’inizio di questo capitolo, che ricordiamo prevedeva: Access Point; dispositivo router che consente la comunicazione tra i vari devices presenti nella rete in modalità wireless, secondo lo standard 802.11g. AV Media Server; dispositivo UPnP contenente video, foto, musica, ecc. PoC utente 1; dispositivo portatile che include un AV Media Renderer chiamato MediaPlayer1. PoC utente 2; dispositivo portatile che include un AV Media Renderer chiamato MediaPlayer2. 100 Lo scenario prevedeva l’instaurazione di una nuova connessione tra l’AV Media Server e il MediaPlayer2 dell’utente 2, mentre il trasferimento del flusso dati dall’AV Media Server verso il MediaPlayer1 non era ancora stato terminato. Per semplicità mostreremo soltanto il dispositivo relativo all’utente 1, chiamandolo semplicemente PoC, mentre supporremo che i due AV Media Renderer (MediaPlayer1 e MediaPlayer2) siano fisicamente distinti dal PoC. 3.6.1 Fase 1: Scoperta dei device Usando i meccanismi di ricerca UPnP, il PoC scopre gli AV device presenti nella rete e visualizza i servizi che quest’ultimi offrono. Nel nostro esempio individua l’AV Media Server e i due AV Media Renderer. 3.6.2 Fase 2: Visualizzazione dei contenuti AV Attraverso l’invocazione dell’azione Browse() relativa al servizio Content Directory (CD), il PoC è in grado di visualizzare tutti i contenuti multimediali desiderati presenti sugli AV Media Server. Le variabili ritornate dall’azione Browse() includono: informazioni dettagliate su ciascun contenuto AV (ad esempio il titolo, l’artista, la durata, il tipo di file, la dimensione, il Tspec, ecc…), il tipo di protocollo utilizzato e il formato dati supportato dall’AV Media Server per il trasferimento verso l’AV Media Renderer. La figura 37 mostra la sequenza di messaggi scambiati all’interno di questa fase. 101 AV Media Server AV Media Renderer 1 PoC AV Media Renderer 2 CD: Browse() Contenuti AV Ora il PoC possiede tutte le informazioni circa i contenuti AV, la lista dei protocolli/formato dati supportati dal Server e il Tspec relativo al flusso dati Figura 39: Fase 2-Visualizzazione dei contenuti AV. 3.6.3 Fase 3: Visualizzazione protocolli/formato dati supportati Attraverso l’uso dell’azione GetProtocolInfo() relativa al servizio Connection Manager (CM), il PoC visualizza la lista completa dei protocolli e del formato dati supportato dall’AV Media Renderer per il trasferimento dei dati dall’AV Media Server. 102 AV Media Server AV Media Renderer 1 PoC AV Media Renderer 2 CM: GetProtocolInfo() CM: GetProtocolInfo() return Ora il PoC possiede la lista dei protocolli/formato dati supportati dai Renderer return Figura 40: Fase 3-Visualizzazione protocolli/formato dati supportati. 3.6.4 Fase 4: Matching protocolli/formato dati supportati La lista dei protocolli/formato dati supportati dall’AV Media Server viene confrontata con la lista dei protocolli/formato supportati dall’AV Media Renderer. Mediante questo algoritmo il PoC seleziona la coppia protocollo/formato dati supportati da entrambi i dispositivi (AV Media Server e AV Media Renderer). L’algoritmo di matching coinvolge, ovviamente, entrambi gli AV Media Renderer. Al termine della fase 4 il PoC ha selezionato una coppia protocollo/formato dati valida per la connessione tra AV Media Server e AV Media Renderer 1 e un’altra coppia protocollo/formato dati valida per la connessione tra AV Media Server e AV Media Renderer 2. 103 AV Media Server AV Media Renderer 1 PoC Algoritmo di matching protocolli /formato dati supportati AV Media Renderer 2 Selezione protocolli/formato dati supportati dai dispositivi Figura 41: Fase 4-Matching protocolli/formato dati supportati. 3.6.5 Fase 5: Configurazione dispositivi AV L’azione PrepareForConnection() del servizio Connection Manager (CM) informa l’AV Media Server e gli AV Media Renderer che sta avendo luogo una connessione tra loro, secondo il protocollo e il formato dati precedentemente selezionato dal PoC. In funzione del protocollo selezionato, i dispositivi AV ritorneranno la variabile InstanceID relativa al servizio AV Transport (AVT). Questa InstanceID viene usata in unione al servizio AVT per controllare il flusso dei dati (ad esempio per il Play, Stop, Pause, ecc…). In aggiunta, gli AV Media Renderer possono ritornare una InstanceID relativa al servizio Rendering Control (RC) per consentire al PoC di gestire alcune variabili come la luminosità, il contrasto, la temperatura di colore, ecc. 104 AV Media Server AV Media Renderer 1 PoC AV Media Renderer 2 CM: PrepareForConnection() AVT: InstanceID1 AVT: InstanceID1 Instaurazione connessione tra AV Media Server e AV Media Renderer1 CM: PrepareForConnection() AVT: InstanceID2 AVT: InstanceID2 Instaurazione connessione tra AV Media Server e AV Media Renderer2 Figura 42: Fase 5-Configurazione dispositivi AV. 3.6.6 Fase 6: Selezione contenuti AV Attraverso l’azione SetAVTransportURI() inclusa nel servizio AV Transport (AVT), il PoC indica ai dispositivi l’URI relativo al contenuto multimediale da trasferire verso gli AV Media Renderer. A questo punto, sia l’AV Media Server che gli AV Media Renderer conoscono i contenuti AV che verranno trasferiti durante la fase di rendering. 105 AV Media Server AV Media Renderer 1 PoC AV Media Renderer 2 AVT: SetAVTransportURI() Selezione dei contenuti AV da trasferire return return AVT: SetAVTransportURI() return Figura 42: Fase 6-Selezione dei contenuti AV. 3.6.7 Fase 7: Rendering control Supponiamo che il PoC abbia scelto di riprodurre il file desiderato sull’AV Media Renderer 1. Allora, attraverso il servizio AV Transport (AVT) e Rendering Control (RC), il PoC può invocare una alla volta tutte azioni che consentono il controllo della riproduzione del contenuto multimediale presso l’AV Media Renderer selezionato (come ad esempio Play, Stop, Pause, ecc…). 106 AV Media Server AV Media Renderer 1 PoC AVT: Play() return AV Media Renderer 2 AVT: Play() return Flusso dati 1 (stream) RCS: SetVolume() Riproduzione dei contenuti AV trasferiti return Figura 43: Fase 7-Rendering control. 3.6.8 Fase 8: Inizio contese Immaginiamo che ad un certo punto della fase di rendering control avviata dal PoC sull’AV Media renderer 1, avvenga una significativa e crescente degradazione della qualità percepita dall’utente. Il flusso dati 1 relativo alla connessione tra AV Media Server e AV Media renderer 1 subisce enormi ritardi di trasferimento a causa della improvvisa comparsa di una nuova connessione (flusso dati 2) avviata dall’utente 2 tra l’AV Media Server e l’AV Media Renderer 2, come mostrato in figura. Questa fase termina con l’abbattimento della connessione relativa al flusso dati 1, dovuta ai forti ritardi di trasferimento. 107 AV Media Server AV Media Renderer 1 PoC AVT: Play() AV Media Renderer 2 AVT: Play() return return Degradazione qualità percepita sul flusso dati 1 Flusso dati 1 (stream) Flusso dati 2 (stream) Chiusura della connessione Figura 44: Fase 8-Inizio contese. 3.6.9 Fase 9: Richiesta QoS In base alle nuove capacità offerte dalla nuova architettura integrata, l’utente decide di conferire un livello di priorità maggiore al flusso dati relativo alla propria connessione (flusso dati 1). Per far ciò invoca l’azione RequestTrafficQoS() relativa al servizio QoS Manager (QM) per il flusso dati specificato nella variabile A_ARG_TYPE_TrafficDescriptor. A sua volta, il servizio QoS Manager invoca l’azione GetTrafficPolicy() del servizio QoS Policy Holder (QPH) per conoscere il 108 livello di QoS relativo al flusso dati specificato. Il valore attuale del livello di QoS è contenuto nella variabile A_ARG_TYPE_TrafficPolicy. PoC QoS Manager QoS Policy Holder QM: RequestTrafficQoS() QPH: GetTrafficPolicy() A ARG TYPE TrafficPolicy QD: GetPathInformation() PathInformation QD: GetQoSDeviceInfo() DeviceInfo QD: GetQoSState() QoSDeviceState QD: SetupTrafficQoS() return return 109 AV Media Renderer 1 Figura 45: Fase 9-Richiesta QoS. Fase : Chiusura della connessione Quando la sessione è terminata e i dispositivi non sono più necessari, viene invocata l’azione ConnectionComplete() relativa al servizio Connection Manager sull’AV Media Server e sull’AV Media Renderer rispettivamente. AV Media Server AV Media Renderer 1 PoC CM: TransferComplete() return CM: TransferComplete() return Chiusura della connessione Figura 45: Fase 10-Chiusura della connessione. 110 AV Media Renderer 2 111 112 113 114 Bibliografia “System software for Ubiquitous Computing” Kindberg and Fox IEEE computer society press 2002. “Overview of Service Discovery Protocols” Antti Huopaniemi Dept. of Computer Science University of Helsinki, Finland. “QoS awareness support in Web-Service semantics” Dimitrios T. Tsesmetzis, Ioanna G. Roussaki, Ioannis V. Papaioannou, Miltiades E. Anagnostou School of Electrical and Computer Engineering, National Technical University of Athens, Greece. “Discovering device in Home Networks” IBM Corporation 1999. “Service Discovery for M-Commerce Applications” Chakraborty, Perich, Avancha, Joshi Department of Computer Science and Electrical Engineering, University of Maryland 2001. “Service Discovery in Pervasive Computing Environments” Feng Zhu and Matt W. Mutka Michigan State University Lionel M. Ni Hong Kong University of Science and Technology. “Classification of Service Discovery in Pervasive Computing Environments” Feng Zhu, Matt Mutka, and Lionel Ni, Lansing. 115 Michigan State University, East “ICrafter: A Service Framework for Ubiquitous Computing Environments” Shankar R. Ponnekanti, Brian Lee, Armando Fox, Pat Hanrahan, and Terry Winograd, Stanford University. “Toward Distributed Service Discovery in Pervasive Computing Environments” Dipanjan Chakraborty, Anupam Joshi, Yelena Yesha, and Tim Finin Senior Member IEEE. “A taxonomy for resource discovery” Koen Vanthournout, Geert Deconinck and Ronnie Belmans. “A Service Discovery Model for Wireless and Mobile Terminals in IPv6” Bilhanan Silverajan, Jaakko Kalliosalo, Jarmo Harju Dept. of Information Technology, Tampere University of Technology. “A comparison of Service Discovery Protocols and implementation of the Service Location Protocol” Christian Bettstetter, Christoph Renner Technische Universität München (TUM), Institute of Communication Networks. “Standards for Service Discovery and Delivery” Sumi Helal University of Florida, USA. “What is Service-Oriented Architecture?” Hao He 2003. “UPnP™ Device Architecture Version 1.0” 08 Jun 2000 © 1999- 2000 Contributing Members of the UPnP™ Forum. “Universal Plug and Play Machine Models” U.Glässer, Y.Gurevich, M.Veanes. “Home Networking with Universal Plug and Play” Brent A. Miller, Toby Nixon, Charlie Tai, Mark D. Wood. 116 “UPNP Service Discovery for heterogeneous network” José M. Sanchez Santana, Marina Petrova, Petri Mähönen RWTH Aachen University, Department of Wireless Networks. “Understanding Universal Plug and Play: a white paper” Microsoft® Corporation http://www.upnp.org. Documenti “TLAB CCC-arch-24-10-2006” Telecom Italia Group. “TLAB CCC-prototyping-24-10-2006” Telecom Italia Group. “Nuove tecnologie per l’accesso a edifici intelligenti” Iacopo Iacopini Tesi di Laurea 2003. Link www.upnp.org www.ieee.org www.dlna.org www.umatoday.com www.wikipedia.org 117 www.intel.com www.twonkyvision.de www.microsoft.com www.rudeo.com 118