Delay Tolerant Networking Service per SAMOA Nicola Azzini – [email protected] sfruttando informazioni relative all'ambiente in cui si opera. Per contesto si intendono le persone, i luoghi e le cose presenti nell'ambiente fisico circostante. In questo nuovo scenario la rete sociale deve essere estratta utilizzando, oltre alle informazioni personali sugli interessi degli utenti, anche quelle relative al contesto, come la prossimità fisica tra gli utenti ed il luogo in cui avviene la collaborazione. Per fornire servizi di social computing context-aware bisogna risolvere alcune sfide tecniche. Innanzitutto, sono necessari meccanismi e strumenti per rilevare la prossimità fisica tra gli utenti ed indicare il luogo in cui si opera. Inoltre, occorre un linguaggio comune per definire interessi e caratteristiche degli utenti interessati alla collaborazione. A differenza dei servizi di social networking basati sul web, gli ambienti mobili di ubiquitous-computing sono molto più dinamici. E’ quindi necessario un differente approccio alla progettazione. In questi ambienti la topologia della rete non è determinabile a priori: è perciò impossibile fare assunzioni sulle identità e sulle caratteristiche dei membri che ne faranno parte. A causa dell'elevata mobilità, disconnessioni, partizioni e merge della rete sono eventi frequenti che causano transitori nella collaborazione e che rendono difficile la gestione della rete sociale. Socially Aware and MObile Architecture (SAMOA)[1] è un middleware che integra un insieme di facilities per la gestione, la personalizzazione e la propagazione della rete sociale a livello applicativo. Allo stato dell’arte SAMOA consente la comunicazione solamente agli utenti che sono in prossimità fisica. In scenari di emergenza (Emergency Rescue), in cui è possibile che nodi della rete sociale rimangano isolati per un tempo prolungato, è necessario sviluppare un servizio che permetta ad ogni utente di inoltrare messaggi Sommario –Il middleware SAMOA consente di gestire e popolare la rete sociale e propagare a livello applicativo la visibilità dei membri al fine di promuovere e supportare applicazioni collaborative avanzate, ma limita la comunicazione tra le entità direttamente connesse. Nel nostro progetto abbiamo esteso SAMOA, sviluppando un servizio per favorire la comunicazione e lo scambio di file tra entità appartenenti a reti sociali differenti oppure appartenenti alla medesima rete sociale ma non direttamente connesse. Abbiamo tenuto conto di uno scenario in cui possono essere presenti nodi dotati di risorse computazionali e di memoria limitate e in cui possano verificarsi situazioni di emergenza, cioè dove uno o più nodi della rete sociale globale rimangono isolati per un tempo prolungato. Deve pertanto essere possibile per questi nodi poter inoltrare messaggi alla prima entità, dotata di sufficienti risorse, con cui entrano in prossimità fisica. Il servizio sviluppato opera tra SAMOA[1] e il livello applicativo, e fornisce funzionalità per l’invio, il forwarding, la memorizzazione e la ritrasmissione di messaggi Delay Tolerant. Keywords: Social Computing, Emergency Rescue, Delay Tolerant Network I – Introduzione Si definisce rete sociale l'insieme dei legami che uniscono gli individui che condividono gli stessi interessi e le stesse attività. Il continuo miglioramento delle tecnologie wireless e l'enorme disponibilità di dispositivi portabili che le supportano, hanno condotto allo studio di nuovi modelli di comunicazione che tengono conto del contesto in cui si opera. Il context-aware computing adatta il funzionamento del sistema di comunicazione -1- alla prima entità, con sufficienti risorse computazionali e di memoria, con cui entra in prossimità fisica. Al fine di permettere l’utilizzo di SAMOA in scenari di Emergency Rescue, è pertanto necessario sviluppare un servizio che renda possibile la comunicazione a entità non direttamente connesse, prevedendo strutture dati per la memorizzazione locale di messaggi, meccanismi di forwarding tra entità che entrano in prossimità fisica e meccanismi di ritrasmissione per i messaggi che vengono persi a causa di disconnessioni temporanee. Per realizzare questo servizio abbiamo preso spunto dalla Delay Tolerant Network Architecture [2] . Questa architettura è stata sviluppata per operare in reti di interconnessione caratterizzate da frequenti partizioni e disconnessioni, dove è possibile la presenza di nodi con risorse computazionali e di memoria limitate. La DTN Architecture opera sopra i livelli di rete e trasporto delle reti che interconnette e fornisce servizi chiave come la memorizzazione, la ritrasmissione e il forwarding di messaggi asincroni al fine di fornire affidabilità alla comunicazione del sistema distribuito in cui viene integrata. Per comprendere il funzionamento della DTN Architecture bisogna considerare i concetti di regione e di DTN gateway. Una regione è una parte della rete globale che comprende uno o più nodi. Un DTN gateway è un nodo della rete, con consistenti risorse computazionali e di memoria, che è responsabile della memorizzazione dei messaggi Delay Tolerant, che riceve dagli altri nodi della rete, e del forwarding dei messaggi memorizzati ai nodi con cui entra in prossimità fisica. I DTN gateway, pertanto, ricoprono il ruolo fondamentale per il funzionamento della DTN Architecture. La rete sociale è centrata sull'utente e utilizza due tipologie di visibilità di contesto: la visibilità del luogo in cui l’utente si trova, chiamata place visibility; la visibilità delle richieste e delle caratteristiche del luogo e dell’utente, detta profile visibility. Utilizzando la prima informazione di contesto si restringe lo spazio per l'estrazione della rete sociale alle sole entità presenti nello stesso luogo fisico; mentre, le informazioni contenute nel profilo permettono di raffinare ulteriormente la rete sociale includendo in essa solo i luoghi e gli utenti che corrispondono realmente alle necessità e alle richieste dell'utente. SAMOA modella e rappresenta queste informazioni di contesto attraverso metadati e utilizza algoritmi di matching semantico per analizzare i profili e inferire eventuali compatibilità semantiche. Figura 1. Un esempio di rete sociale estratta da SAMOA da una mobile ad-hoc network La rete sociale di SAMOA viene modellata tenendo conto di tre possibili ruoli assegnabili ad un' entità. Il ruolo di Manager viene assunto dagli utenti che sono interessati a creare una propria rete sociale. Essi hanno la responsabilità di definire i confini della località e i criteri che guideranno l'estrazione dei collaboratori. Tutti gli utenti che sono presenti all'interno dei confini stabiliti dal Manager sono detti Client sono i candidati a diventare i membri della rete sociale. Quando II – Stato dell’arte: il framework SAMOA SAMOA supporta la creazione di reti sociali semantiche context-aware tra utenti fisicamente vicini, con stesse attitudini e interessi. 2 essi entrano a far parte di una rete sociale assumono il ruolo di Member. Ogni entità può assumere tutti i ruoli anche contemporaneamente. In SAMOA, la gestione della rete sociale è basata sul concetto di Place. Ogni Manager ne definisce uno e ne rappresenta il centro. Il Place è l'insieme dei Client che sono fisicamente vicini al Manager. Il concetto di vicinanza varia in base all'ambiente di lavoro. In una rete infrastrutturata si definiscono vicini tutti i dispositivi collegati alla stessa cella. Mentre, in una MANET sono definiti vicini tutti i dispositivi connessi al Manager da un percorso di routing di lunghezza massima di h network hop. Il numero h di hop è detto place radius. Utilizzando questa definizione di vicinanza, il numero di partecipanti alla rete sociale non può essere determinato a priori: esso varia dinamicamente con il movimento degli utenti. I Place si possono sovrapporre e, quindi, gli utenti possono partecipare a più reti sociali contemporaneamente. Ogni entità SAMOA ha un identificativo univoco (UUID) associato ad un profilo che descrive le sue caratteristiche. Il Manager ha un Place Profile che lo identifica, lo descrive ed elenca le attività di suo interesse. Ad esempio, una biblioteca potrebbe avere come attività lo studio, la lettura, la consultazione di cataloghi e il prestito. Ogni utente SAMOA, sia esso Manager, Client o Member, ha un User Profile che lo descrive e ne definisce le attività e le preferenze. Ad esempio, uno studente potrebbe essere interessato all'attività di prestito di libri esprimendo la preferenza sull'argomento. Ogni Manager è provvisto anche di un Discovery Profile che impone dei vincoli sulle preferenze che i Client devono avere per essere accettati nella sua rete sociale. Nel seguito verranno descritti i servizi chiave necessari alla comunicazione context-aware e alla realizzazione di reti sociali. Figura 2. L’architettura di SAMOA Il Basic Services Layer fornisce un servizio di nomi, un meccanismo per la rilevazione di entità presenti nella medesima località e dei metodi per supportare la comunicazione sia essa di tipo uno a molti o uno a uno. Il Message Transport Manager (MTM) realizza e mette a disposizione dei metodi per la comunicazione punto-punto e puntomultipunto. Attualmente la comunicazione è realizzata attraverso un modulo basato sul protocollo UDP ma esso può essere sostituito a boot time con un modulo che realizzi, ad esempio, una comunicazione basata su bluetooth (che è stato sviluppato ultimamente). La comunicazione punto-punto permette di inviare messaggi ad un'altra entità SAMOA identificata da un indirizzo (IP nel caso si utilizzi UDP) mentre la comunicazione punto-multipunto permette di inviare messaggi in broadcast a tutte le entità che si trovano nella medesima località. Il Location/Proximity Manager (L/PM) ha il compito di generare nomi unici. Tali nomi sono statisticamente univoci e sono conformi allo standard UUID. Questo servizio permette ad un'entità di segnalare la propria presenza on-line attraverso l'invio, ad intervalli regolari, di un messaggio broadcast di presenza contenete il proprio UUID. Esso, inoltre, riceve tutti i messaggi di presenza inviati. Ogni messaggio ricevuto viene inserito in una tabella ed etichettato con un time-stamp: se non viene ricevuto un nuovo messaggio di presenza entro una certa soglia, si considera quell'utente disconnesso. III – L’architettura I servizi che compongono SAMOA sono organizzati in tre layer logici, realizzati al di sopra della Java Virtual Machine (Fig. 2). 3 Il Social Network Management Layer fornisce meccanismi per l'estrazione della rete sociale e per la sua gestione. Il Profile Manager (PM) permette di gestire i profili e la loro distribuzione. Un'entità SAMOA che funge da Manager distribuisce attraverso il PM il Place Profile (PP) a tutte le entità presenti nella località (individuate grazie all' L/PM). Quando il PM di un'entità riceve un PP si coordina con il Semantic Match Engine (SME) per controllare se e quale attributo contenuto nel suo profilo utente (UP) è compatibile con le attività dichiarate dal PP. A questo punto l'utente invia solo le attività compatibili al Manager il quale, sempre attraverso l'ausilio del SME, deciderà se inserire o meno l'utente nella sua rete sociale. Per fare ciò utilizza un Discovery Profile (DP) in cui sono contenuti i vincoli a cui un UP deve sottostare per essere accettato nella sua rete sociale. L’SME supporta il PM nello screening dei profili e prevede due algoritmi semantici differenti. Il primo, eseguito sul client, prende in input il PP del Manager e l'UP del Client restituendo le sole attività compatibili fra i due. Il secondo algoritmo, eseguito sul Manager, prende in input il risultato del primo e il DP: se i vincoli sono soddisfatti il Client diventa Member della rete sociale. Il Place-dependent Social Network Manager (PSNM) si occupa di gestire una vista aggiornata dei membri della rete sociale connessi. Questo servizio si coordina con il L/PM per sapere quando un utente si connette o si disconnette ed ottiene dal PM gli UP e gli UUID delle entità compatibili. Memorizza questi dati in una tabella rendendoli disponibili alle applicazioni e notificando ad esse quando un'entità cambia di stato (si connette o si disconnette). Il Global Social Network Manager (GSNM) mantiene in memoria permanente tutte le reti sociali place-dependent, memorizzando gli UUID delle entità e i loro profili. Per ogni Member viene inoltre memorizzato il PP e il DP che hanno guidato la sua selezione. Il Delay Tolerant Network Manager (DTNM) fornisce il servizio per la gestione di messaggi Delay Tolerant, inviati a entità SAMOA non necessariamente connesse in modo diretto. Il DTNM si interfaccia con tutti i moduli sottostanti. Ogni entità è dotata di una cache, con gestore della persistenza, per la memorizzazione di messaggi Delay Tolerant e di un gestore dello stato. IV – Lavoro svolto Il servizio di Delay Tolerant Networking per SAMOA si occupa dell’invio/ricezione di messaggi DT, della loro memorizzazione, del forwarding e inoltre della ritrasmissione di messaggi che vengono persi a causa di disconnessioni temporanee. Il modello del servizio integra il modello di SAMOA con il modello della DTN Architecture. Difatti abbiamo comparato il concetto di regione della DTN Architecture con il concetto di Place-dependent Social Network di SAMOA. Inoltre, al fine di bilanciare in modo opportuno le responsabilità tra le entità della rete globale, il gateway della DTN Architecture è stato assimilato dal manager di SAMOA. Siccome il Delay Tolerant Networking Service estende SAMOA, le entità possono assumere i ruoli di manager oppure di client. Sia i client che i manager possono essere sender e/o receiver di messaggi DT. I manager sono entità dotate di buone risorse, sia computazionali che di memoria, e svolgono anche la funzione di forwarder. I client, invece, sono entità con scarse risorse computazionali e/o di memoria e possono inviare/ricevere messaggi DT solamente tramite entità manager. Un messaggio Delay Tolerant è inviato da un entità SAMOA identificata mediante UUID. Alla creazione di un nuovo messaggio DT viene specificato il suo TimeToLive (in millisecondi), alla scadenza del quale il messaggio viene considerato “scaduto” (expired). Inoltre in un messaggio DT possono essere specificati: un campo di testo un place profile target uno user profile target un file allegato. Il messaggio verrà consegnato solamente alle entità SAMOA presenti in una rete sociale il 4 cui place contiene attività o interessi specificati nel place profile target, e che hanno uno user profile che contiene attività o interessi specificati nello user profile target. Il servizio è composto da: il protocollo DTN per SAMOA e le primitive di invio/ricezione; due pool di threads con rispettive code di tipo FIFO, uno lato ricezione e uno lato invio, per la gestione dei messaggi ricevuti/da inviare; la cache, dotata del gestore della persistenza e del gestore per il controllo e l’aggiornamento del TTL dei messaggi memorizzati; il gestore dello stato, che si occupa di mantenere e controllare lo stato dei messaggi DT inviati alle entità che sono in prossimità fisica. Inoltre si occupa di memorizzare lo stato di ricezione dei files allegati ai messaggi. Il servizio DTN si interfaccia con: il L/PM, per verificare la connessione/disconnessione di entità SAMOA; con il MTM, per inviare e ricevere messaggi secondo il protocollo DTN; con il PM, il PSNM e il GSNM, solo lato manager, per verificare quali entità fanno parte della rete sociale del manager e per recuperare gli User Profile dei client che entrano in prossimità fisica con il manager; con l’SME, solo lato manager, per effettuare i confronti tra profili di Place e di User (N.B. gli algoritmi devono ancora essere implementati, al momento eseguono un matching che risulta sempre verificato). I messaggi Delay Tolerant vengono propagati in base a interessi e attività specificate, affinché siano inoltrati e consegnati solo ad utenti che possano collaborare con l’entità che ha inizialmente inviato il messaggio. E’ sempre possibile inviare messaggi DT ad entità manager che sono in prossimità fisica. Quando un client entra in prossimità fisica con un manager gli invia tutti i messaggi DT che ha memorizzati in cache. Invece il manager controlla per ogni messaggio DT memorizzato in cache, se i profili di place e di user associati al messaggio, matchano rispettivamente con il proprio profilo di place e con il profilo di user del client (profilo che viene ricevuto mediante il servizio di PM). Se entrambi i profili matchano allora il manager invia al client il messaggio DT. Quando due manager entrano in prossimità fisica si inviano reciprocamente i messaggi DT che hanno memorizzati in cache. Quando due client entrano in prossimità fisica non avviene nessuno scambio di messaggi DT. Due client non possono inviarsi messaggi DT in modo diretto, necessitano sempre dell’intermediazione di un manager. Quando un manager riceve un messaggio DT verifica il match dei profili ed eventualmente inoltra il messaggio al livello applicativo. Poi invia il messaggio agli altri manager che sono in prossimità fisica. Infine verifica il match con i profili dei client presenti nella sua rete sociale (PSN) ed eventualmente provvede alla consegna ai client del messaggio appena ricevuto. Quando un client riceve un messaggio DT inoltra sempre il messaggio al livello applicativo, perché il match dei profili è già stato eseguito dal manager che gli ha inviato il messaggio. E’ possibile allegare un file ad un messaggio DT. Siccome nelle reti MANET l’evento di ricezione di pacchetti corrotti è frequente, un file allegato ad un messaggio DT viene suddiviso in più parti al fine di non compromettere l’intera ricezione. Un apposito handler viene attivato alla ricezione di un messaggio DT contenente un file allegato. Successivamente l’handler verifica la corretta ricezione delle parti del file, richiedendo il reinvio delle parti non ricevute oppure di quelle parti ricevute che risultano corrotte in seguito al controllo di ridondanza (CRC). L’invio e la ricezione delle parti di un file è gestito mediante una finestra di dimensione prefissata. La finestra “scorre” solo se la prima parte del file compresa nella finestra viene ricevuta in modo corretto. Quando il file viene completamente ricevuto oppure se il messaggio DT scade, l’handler termina la sua esecuzione garantendo la consistenza dello stato. 5 V – Il protocollo DTN Il protocollo per l’invio di messaggi DT è composto dai seguenti sette tipi di messaggi: DTDiscoveryMessage, inviato dal DelayTolerantNetworkManagerConfi gurationService (descritto in un'altra relazione) non appena due entità SAMOA entrano in prossimità fisica. Contiene un booleano che indica se l’entità che ha inviato il messaggio è un manager oppure un client; DTRequest, ovvero la richiesta che precede l’eventuale invio del messaggio DT. Viene inviata lato sender e contiene la stringa dell’hash del messaggio DT che si vuole inviare, calcolato mediante l’algoritmo MD5; DTRequestAcknowledge, ovvero l’acknowledge corrispondente ad una DTRequest. Viene inviato lato receiver e contiene sia l’hash del messaggio DT, per il quale era stata ricevuta la DTRequest, sia un booleano che indica al sender se inviare o meno il messaggio (a seconda che il messaggio sia già stato ricevuto in precedenza e/o sia già presente nella cache); DTMessage, v. figura 3, ovvero il messaggio DT vero e proprio. Contiene il testo del messaggio, il place profile target, lo user profile target, il TTL (TimeToLive) espresso in ms, l’hash del messaggio ed eventualmente il nome e il path locale di un file; DTMessageAcknowledge, ovvero l’acknowledge inviato lato receiver in seguito alla ricezione di un DTMessage; DTPartOfFile, v. figura 4, ovvero una parte del file allegato ad un messaggio DT; DTPartsOfFileRequest, ovvero la richiesta, inviata dal receiver al sender, dell’invio di alcune parti mancanti di un file. Figura 3. Un messaggio DT Figura 4. Una parte di un file La sequenza dei messaggi, se DTRequestAcknowledge ha il flag send=true, è osservabile nella figura 5. Figura 5. La sequenza acknowledge=true dei messaggi, La sequenza dei messaggi, se DTRequestAcknowledge ha il flag send=false, è osservabile nella figura 6. Figura 6. La sequenza acknowledge=false dei messaggi, il di con il di con Siccome i messaggi sono inviati mediante primitive asincrone non reliable, è presente un oggetto che svolge la funzione di 6 controller dello stato ed effettua il re-invio dei messaggi che non arrivano a destinazione al fine di garantire la reliability. La ricezione di messaggi del protocollo DTN avviene mediante una InputPort messa a disposizione dal MTM. Alla ricezione di un messaggio DT, quest’ultimo viene inserito nella coda FIFO dei messaggi ricevuti. In questo modo il servizio non viene bloccato ed è pronto per ricevere un nuovo messaggio. Uno dei threads del pool di ricezione andrà poi a prelevare il messaggio inserito e ad eseguire il codice necessario. Se il messaggio è un DTMessage e i match dei profili sono stati positivi, allora il livello applicativo viene notificato della ricezione del messaggio. L’invio di messaggi secondo il protocollo DTN avviene mediante una OutputPort messa a disposizione dal MTM. Un messaggio da inviare viene inserito in una coda FIFO e viene poi prelevato da uno dei threads del pool di invio. Il thread gestirà l’invio del messaggio all’entità SAMOA destinataria. VI – Le primitive di comunicazione La comunicazione tra i servizi DTN di due entità SAMOA avviene sempre mediante la modalità punto-a-punto. Le primitive di comunicazione del DTN Service sono di tipo asincrono, asimmetrico, non bloccante, non reliable. L’invio e la ricezione di messaggi secondo il protocollo DTN sono delegati a due pool di threads, uno per l’invio e l’altro per la ricezione, i cui threads sono allocati staticamente. E’ stata fatta questa scelta per limitare l’utilizzo della memoria da parte della JVM, che, nel caso di numerosi messaggi da inviare/ricevere, crescerebbe senza controllo, occupando la memoria fisica disponibile. Grazie al meccanismo della delega per l’invio e la ricezione dei messaggi, il servizio DTN è libero di eseguire le funzionalità di controllo e gestione senza venire interrotto. Le primitive di invio messe a disposizione dal servizio DTN per SAMOA sono le seguenti: VII – Casi di studio Il servizio di DTN per SAMOA è stato testato in una rete locale. Abbiamo impiegato quattro PC, due che hanno ricoperto il ruolo di manager e gli altri due che hanno ricoperto il ruolo di client. I profili delle entità sono stati scelti in modo che ogni client ha un profilo compatibile solamente con uno dei due manager. Lo scopo del primo caso di studio è stato quello di verificare che un messaggio DT inviato da un client viene consegnato all’altro client mediante il forwarding eseguito dai manager. Si sono inizialmente considerate le entità disconnesse, quindi non in prossimità fisica. Il client “sender” verifica la presenza di eventuali manager in prossimità fisica, ma essendo isolato memorizza nella cache il messaggio DT, con un file allegato, che intende inviare. Quando un manager viene connesso alla LAN, il client gli invia il messaggio DT. Una volta che anche l’altro manager si connette, riceve il messaggio DT o dall’altro manager mediante forwarding oppure dal client che ha inizialmente inviato il public void sendDTMessage (DTMessage message,UUID toID,boolean deleteAfterSend): questa primitiva copia in cache il messaggio DT passato come argomento e invia al destinatario toID la DTRequest corrispondente al message. Il messaggio viene eventualmente cancellato dalla cache a seconda del flag deleteAfterSend; public void sendDTMessage (DTMessage message,UUID toID): questa primitiva copia in cache il messaggio DT passato come argomento e invia al destinatario toID la DTRequest corrispondente al message. La cancellazione del messaggio dalla cache dopo l’invio è gestita dalla politica di default specificata nel file di configurazione SamoaOptions. 7 messaggio. Infine una volta che anche l’altro client si connette alla rete, dopo che entra a far parte della Social Network del manager con cui ha il profilo compatibile, riceve dal manager il messaggio inizialmente inviato dall’altro client. Abbiamo simulato disconnessioni temporanee tra le entità e abbiamo verificato che, grazie al gestore dello stato, la comunicazione riprende correttamente se la disconnessione è avvenuta entro i timeout impostati. Se scade il timeout relativo alla sequenza di figura 5, la comunicazione ricomincia dall’inizio. Anche se scade il timeout dell’handler del file, il file temporaneo e il messaggio DT vengono cancellati e l’interazione comincia nuovamente. In un caso o nell’altro la consistenza dello stato del sistema è comunque garantita. La velocità di trasmissione nell’invio di un file allegato è di circa 40 KB/s e abbiamo notato che è notevolmente influenzata dalla ricezione di numerose parti che risultano corrotte, probabilmente a causa di un malfunzionamento del Message Transport Manager. Abbiamo poi testato il DTN Service per SAMOA “a regime”, ovvero con tutte le quattro entità connesse contemporaneamente. Abbiamo visto che il sistema ha supportato discretamente il carico di messaggi DT inviato. Nel momento in cui due o più entità entrano in prossimità fisica, ovvero vengono connesse, e effettuano allo stesso tempo le operazioni e le comunicazioni per la gestione del contesto e quelle per il forwarding di messaggi DT, si verifica che alcuni messaggi non arrivano a destinazione oppure subiscono ritardi. Abbiamo infine effettuato un controllo sulle prestazioni, verificando che circa 40-45 threads sono sempre attivi durante l’esecuzione in ogni entità. La memoria nonheap occupata è costante ed è di circa 15 MB. Invece la memoria heap che viene utilizzata varia a seconda del carico di lavoro, fino a picchi di 70-80 MB nei momenti di maggior carico. Ciò può rappresentare un problema per dispositivi portatili con scarse risorse computazionali e/o di memoria, che evidentemente non possono ricoprire il ruolo di manager. VIII – Conclusioni e sviluppi futuri Grazie allo sviluppo del servizio di Delay Tolerant Networking, il middleware SAMOA mette ora a disposizione ulteriori funzionalità per operare in scenari dove le entità possono comunicare anche se non sono connesse in modo diretto. Ciò ha permesso a SAMOA di acquisire una maggiore flessibilità e dinamicità con la possibilità di favorire il suo utilizzo nello sviluppo di servizi collaborativi basati sul contesto e sul matching semantico. Il supporto può essere utilizzato per risolvere problemi diversi, lasciando così liberi gli sviluppatori di concentrarsi sulla logica applicativa. SAMOA è però un software platformdependent per cui in futuro potrebbero essere sviluppati meccanismi per l’integrazione con altri linguaggi di programmazione. E’ inoltre necessario sviluppare opportuni algoritmi di matching per poter confrontare i profili specificati in un messaggio DT con i profili di manager e client, al fine di sfruttare pienamente le funzionalità del DTN Service. Bibliografia [1] Dario Bottazzi, Rebecca Montanari, Alessandra Toninelli, A Semantic Contextaware Middleware-level Solution to Support Anytime and Anywhere Social Networks, IEEE Intelligent Systems - Special issue on Social Computing, IEEE, September-October – 2007 [2] Kevin Fall, A Delay-Tolerant Network Architecture for Challenged Internets 8