Supporto al routing inter-MANET in ambiente impromptu basato su AGAPE - Giacomo Tartari – 1. Scenario applicativo 1.1 Reti ad hoc La grande diffusione delle reti radiomobili cellulari per fornire connettività a livello geografico e la crescente diffusione delle reti basate sullo standard Wi-Fi per fornire connettività a livello locale stanno rendendo sempre più indispensabile, e in qualche modo scontata, la percezione degli utenti di poter essere sempre collegati a sorgenti di informazioni, o a servizi disponibili all'interno di uffici o di aree pubbliche. Le infrastrutture di comunicazione usate per questi scopi si fondano su uno schema gerarchico, in cui sono presenti punti d'accesso centralizzati che fanno da “collettore” per l'accesso degli utenti. La comunità scientifica sta però studiando soluzioni che vadano oltre la necessità di una infrastruttura fissa e predeterminata: si tratta delle cosiddette reti ad hoc, e in particolare delle reti mobili ad hoc (MANET - Mobile Ad hoc NETworks). Una rete ad-hoc mobile (Mobile Ad-hoc NETwork) è definita come un sistema autonomo di router (detti anche nodi) mobili connessi mediante collegamenti wireless. Tutti i nodi del sistema collaborano al fine di instradare i pacchetti nel modo corretto. A causa della mobilità impredicibile dei nodi, la topologia di rete può cambiare costantemente. Le reti AdHoc vengono costruite all'occorrenza ed utilizzate in ambienti estremamente dinamici, non necessariamente con l'aiuto di una infrastuttura già esistente. Questo modo destrutturato di interconnettere sistemi può permettere di utilizzare servizi distribuiti anche quando le infrastrutture fisse siano danneggiate (pensiamo ad applicazioni per la protezione civile), inaccessibili, sovraccariche, inesistenti (in questo caso, potrebbero essere interessanti ambiti applicativi quali il monitoraggio del territorio o la classificazione di beni culturali) o semplicemente costose. Le reti ad hoc hanno una loro naturale applicazione in contesti di comunicazione “spontanea”, quando gruppi di persone, dotate di terminali come PC portatili, PDA, smartphone, si trovano fisicamente nello stesso luogo e hanno l'esigenza di comunicare tra loro, senza doversi necessariamente appoggiare su un'infrastruttura di rete esistente fornita da terzi. Lo scenario si complica nel caso in cui la comunicazione debba avvenire tra le diverse MANET o nel caso in cui una MANET venga scissa in più parti, generando cosi altre reti (context awareness). Un problema tuttora in discussione è infatti quello del routing di messaggi tra MANET separate non essendoci la possibilità di collegare fisicamente gli endpoint. Per esempio in un ambito metropolitano e in assenza di infrastrutture fisse di accesso alla Rete che permetterebbero la comunicazione. A questi problemi si aggiunge la possibilità di una non contemporanea connessione degli utenti che desiderano comunicare data da possibili interferenze o da disconnessione volontaria degli stessi, queste disconnessioni possono essere di breve durata (qualche minuto) o prolungate (giorni o settimane). In entrambi i casi è auspicabile che l’utente alla riconnessione possa ricevere i messaggi pendenti. In questo scenario si inserisce il nostro progetto il quale si prefigge come obbiettivo il routing dei messaggi tra MANET separate sfruttando la mobilità e le abitudini degli utenti, e la gestione delle disconnessioni degli stessi. 2. Modello Le persone frequentano abitualmente diversi punti di aggregazione (quali bar, palestre, università...) e spesso ad orari e giorni fissi per diverse settimane (lezioni universitarie, abbonamenti in palestra,...). Nell’ipotesi di una diffusione capillare di dispositivi portatili dotati di connessioni senza fili, in questi luoghi di aggregazione è possibile e auspicabile che si possano formare delle MANET. In questo scenario si deve inserire un middleware il quale fornirà il supporto alle funzionalità di base per la realizzazione di applicativi operanti in tali reti. Tenendo traccia delle abitudini degli utenti è possibile costruire un modello predittivo in grado di localizzare con una certa approssimazione gli utenti in modo tale da collegare le diverse MANET sfruttando la mobilità degli utenti stessi. C’è la necessità quindi di individuare utenti con una particolare mobilità attraverso le diverse reti, che facciano da canale di comunicazione mobile e da supporto alla memorizzazione favorendo la persistenza dei dati. Sfruttando questo modello è possibile progettare un protocollo di routing basato sugli spostamenti e sulle presenze contemporanee degli utenti nelle MANET. Con questo protocollo è quindi possibile risolvere sia il problema della comunicazione tra MANET sconnesse, in quanto utenti che frequentano reti diverse possono scambiarsi messaggi trasportati da altri utenti che frequentano entrambe, sia il problema delle disconnessioni degli utenti, potendo i messaggi diretti a utenti offline essere recapitati in differita in altre località. Per rendere l’idea si può pensare a e ad un sistema di flotte in movimento (Figura 1. Le flotte rappresentano le singole MANET e le navi rappresentano gli utenti che vogliono comunicare. All’interno della stessa flotta le navi posso comunicare tra loro ma le comunicazioni tra flotte devono avvalersi della mobilità delle singole navi che si spostano tra una flotta e l’altra. Figura 1. Ipotizziamo che l’utente A voglia comunicare con l’utente B e che i due utenti si trovino in flotte diverse (Figura 2.). Figura 2. Al momento dell’invio verrà eletto un utente C che fungerà da corriere con il compito di trasportare il messaggio alla destinazione (Figura 3). Figura 3. L’utente C una vota arrivato nella nuova MANET recapitera il messaggio all’utente B (Figura 4). Figura 4. Utilizzando quindi questo nuovo paradigma di comunicazione è possibile creare un canale di comunicazione dinamico che connette diverse reti, inoltre il messaggio può essere trasferito da corriere a corriere, in una sorta di passa-mano, inseguendo letteralmente il destinatario di MANET in MANET. 3. Soluzione del problema e prima progettazione 3.1 Scelta del middleware: AGAPE Le problematiche derivanti dalla dinamicità del contesto di una MANET sono numerose e complesse. Basti citare il problema del routing in reti di questo tipo, nelle quali spesso avvengono partizioni, connessioni e disconnessioni dei nodi. Per poter lavorare ad un livello più elevato risulta molto utile l’utilizzo di un middleware che fornisca una serie di funzionalità sulle quali ci si possa appoggiare per la realizzazione dei propri obiettivi. Sono disponibili numerosi sistemi che lavorano su reti ad hoc, ciascuno dei quali è caratterizzato da alcune caratteristice peculiari. È responsabilità del progettista scegliere quello più adatto e che meglio corrisponda ai propri bisogni. Tra le varie opportunità disponibili la nostra scelta è caduta su AGAPE (Allocation and Group Aware Pervasive Environment), un sistema sviluppato presso il DEIS, che sebbene non sia ancora in versione definitiva fornisce un insieme di servizi fondamentali necessari per lo sviluppo di applicazioni in ambienti MANET. AGAPE è infatti un middleware nato per supportare lo sviluppo di applicazioni collaborative in ambienti MANET. La collaborazione in AGAPE è basata sulla metafora del gruppo; ogni gruppo è rappresentato mediate un Group Identifier (GID) e un profilo che ne specifica interessi e obiettivi che si assume siano condivisi dagli utenti che ne fanno parte. I membri di un gruppo sono caratterizzati da un Personal Identifier (PID) e da un profilo che rappresenta le caratteristiche dell’utente e del dispositivo che esso utilizza. I membri che faranno parte del gruppo non possono essere determinati a priori in quanto essi posso unirsi o lasciare il gruppo dinamicamente in base alle esigenze specifiche dell’applicazione. La mobilità degli utenti potrebbe creare partizioni e fusioni dei gruppi stessi e della rete, che causano fasi transitorie nella collaborazione fra utenti nuovi e precedentemente sconosciuti. Un’altra caratteristica molto importante e cruciale è che il middleware permette ad ogni utente di poter consultare una vista dei membri co-locati, cioè una sorta di tabella riassuntiva di coloro che sono nella sua prossimità, che viene inviata a tutti i coloro che sono stati riconosciuti come membri della rete con attiva una istanza di AGAPE. Il processo di creazione e distribuzione delle liste è gestita da entità centrali definite come LME (Località Manager Entity), che consistono semplicemente in nodi della rete ad hoc con capacità computazionali maggiori che, oltre a collaborare, metto a disposizione servizi per il supporto alle operazioni necessarie per la gestione del gruppo stesso. Gli ME, Managed Entity, rappresentano invece quei membri del gruppo che utilizzano i servizi messi a disposizione dal supporto per collaborare. Quindi utilizzando questo middleware abbiamo già a disposizione uno strumento per la creazione e la gestione di gruppi a cui tutti coloro che appartengono alla MANET possono effettuare operazioni di join/leave. Inoltre essendo gli LME nodi con capacità computazionali maggiori, questi sembrano particolarmente adatti a ricoprire il ruolo di gestore della MANET. Per quanto riguarda poi la comunicazione AGAPE, oltre a risolvere il problema del routing in reti ad elevata dinamicità, mette a disposizione delle entità differenti pattern di comunicazione tra cui quello context-based any-cast. Tale pattern permette la comunicazione asincrona inaffidabile point-to-point tra due utenti: quando un membro del gruppo ha bisogno di comunicare, uno e un solo membro della località viene selezionato in base al profilo di ricerca richiesto. 3.2 MSA In questo modello di interazione si inserisce quindi un servizio di messaggistica che consenta la comunicazione tra utenti disconnessi. L’idea principale su cui si basa l’applicativo è quella di utilizzare particolari utenti, scelti in base alla disponibilità di memoria o mobilità, che si occupino di trasportare, come corrieri, i messaggi tra le varie località. Utilizzando i protocolli di comunicazione di AGAPE possiamo creare, grazie alle entità LME, delle piccole reti ad-hoc. Si è deciso, per facilitare la localizzazione degli utenti, di utilizzare un’AGENDA personale in cui registrare informazioni relative all’accesso alla località ogni volta che un ME entri in una certa località. In questo modo possiamo sapere nell’arco di una giornata o di una settimana (a seconda della necessità) quali località abbia visitato un utente. Risolto il primo problema di tracciamento degli utenti veniamo ora alla scelta del destinatario del messaggio. Tenendo conto degli utenti precedentemente incontrati, verrà creata una lista (Buddylist) di contatti contenente, oltre ai relativi profili, anche le rispettive agende. Dovendo instradare i messaggi attraverso il middleware AGAPE si è reso necessario implementare un servizio adeguato che si occupi di invio, ricezione e gestione dei messaggi da e verso AGAPE. Ogni messaggio sarà corredato di informazioni racchiuse in un header il quale conterrà oltre alla data di invio i profili e le agende dei due interlocutori. La presenza delle agende nell’header del messaggio è fondamentale : l’agenda del destinatario, contenendo le informazioni utili per rintracciarlo nelle varie località, servirà per l’instradamento del messaggio, mentre quella del mittente sarà utile per avere dati aggiornati e quindi per una maggiore probabilità che un eventuale messaggio di risposta arrivi a destinazione. L’ultimo problema che ci troviamo ad affrontare è quello dell’instradamento dei messaggi creati precedentemente. In questo ci aiuta l’algoritmo NHC (Next Hop Choice) che si occupa del routing e della ricerca del miglior corriere a cui recapitare il messaggio. L’idea di base di questo algoritmo è quella di cercare il match migliore tra l’agenda del destinatario e l’agenda dei corrieri disponibili che si trovano nella località del mittente al momento dell’invio. Basandosi quindi sulla localizzazione e sull’orario di invio è possibile trovare i corrieri con la più alta probabilità di incontrare il destinatario del messaggio o di trovarsi nella stessa località prima dell’ arrivo del destinatario e poter consegnare il messaggio all’LME che, in un secondo momento, si occuperà di recapitarlo non appena il ricevente entra nella località. Con questo particolare algoritmo è inoltre possibile ‘inseguire’ il destinatario tramite il passaggio del messaggio tra corrieri, di volta in volta scelti come più adatti alla consegna dato che l’ambiente è mobile. Alla luce di quanto spiegato precedentemente possiamo quindi suddividere in tre categorie gli utenti che interagiscono nel nostro ambiente: -utente normale: tiene traccia delle località da lui più frequentate, assieme ad una fascia oraria in cui è più probabile che si trovi in quella zona(->AGENDA), ed una lista di utenti (Buddylist) co relative agende. Possiede le funzionalità di base per l’invio e la ricezione dei messaggi. -corrieri: oltre alle funzionalità dell’utente normale possiede particolari caratteristiche hardware che gli permettono di memorizzare i messaggi da consegnare ad altri utenti. -gestore di località: si occupa di consegnare i messaggi al corriere che ha la più alta probabilità di incontrare il destinatario e, essendo anch’esso corriere, di memorizzare temporaneamente in alcuni casi i messaggi in attesa del destinatario. 3.3 Descrizione dell’architettura Vediamo nella figura com’è strutturate l’applicazione. La parte applicativa (MSA) si occupa di fornire un interfaccia grafica (GUI) per la comunicazione e gestire l’avvio dei vari servizi. La parte centrale “services” si occupa della comunicazione con il middleware AGAPE, fornisce le funzioni per poter interagire col repository e si occupa della creazione dell’invio e dell’instradamento dei messaggi. 3.4 Servizi Analizziamo ora più dettagliatamente la struttura dei servizi e la loro interazione: -Agenda Service(AS) : Si occupa della creazione dell'agenda di un utente. Ogni volta che un utente passa per una località, l’Agenda Service si occuperà di salvare il nome della località, la data, il giorno della settimana, e la fascia oraria (esempio:15-16). Il servizio di agenda si occuperà inoltre dell'aggiornamento delle statistiche relative alla frequenza di passaggio nelle località. -Buddy List Service (BLS) : Si occupa del salvataggio dei profili degli utenti a cui si ipotizza di voler mandare messaggi (all’interno del profilo utente è racchiusa anche l’agenda). -Repository Service (RS) : Servizio di interfaccia per la memorizzazione dei messaggi. -Next Hop Choice Service (NHCS) : Si occupa della scelta del percorso di routing dei messaggi. Incapsula l’algoritmo NHC per la ricerca del prossimo hop. -Message Service (MS) : Provvede all'invio/ricezione dei messaggi. In fase di creazione comunica con il BLS per la creazione del messaggio. Se in fase di invio l’utente non è presente in località, comunica con l'NHCS per la ricerca del miglior corriere. Nella figura seguente vediamo quali sono i servizi creati che si occupano dell’interazione col middleware AGAPE 4. Messaging Il Messaging di MSA prevede di poter instradare messaggi tra località di AGAPE diverse sfruttando la mobilità e le abitudini degli utenti, questa modalità di invio viene sfruttata solo per utenti non presenti nella stessa località, altrimenti i messaggi vengono semplicemente inviati attraverso il middleware AGAPE. Il Message Service è il servizio che si occupa della gestione dei messaggi intesa come la ricezione e l’invio di messaggi da e verso il middleware AGAPE e della loro interpretazione. Data la presenza all’interno di MSA di messaggi non solo di contenuti per gli utenti1 ma anche di protocollo (per coordinazione, routing, e scambio di profili) per garantire semplicità di gestione ed estendibilità futura il servizio implementa il pattern visitor, risulta quindi semplice aggiungere nuovi messaggi per scambio di contenuti differenti o nuovi protocolli. Il MS inoltre comunica con altri servizi di MSA per ottenere la persistenza dei messaggi pendenti, ottenere profili e destinatari. In particolar modo si occupa di inserire i messaggi nel 1 All’attuale stato del prototipo sono previsti solo messaggi di testo. repository qualora questi siano da trasportare attraverso diverse località secondo le politiche di routing precedentemente esplicitate. Non ha invece un ruolo attivo nella scelta dei corrieri, scelta che è appannaggio del NHCS ed è effettuata con l’algoritmo NHC, al termine della scelta il MS invia il messaggio al corriere scelto. Passiamo ora a elencare i messaggi fino ad ora riconosciuti dal MS seguiti da una breve descrizione. Message: il messaggio vuoto, contiene solamente mittente e destinatario, con relativi profilo e agenda, e data di invio. Questo messaggio è la “superclasse” concettuale e reale per gli altri messaggi. Non ha un reale utilizzo nell’applicazione. Agendarequestmessage: questo messaggio viene inviato a qualcuno in località per ottenere a sua agenda aggiornata, e in caso non sia ancora presente, il suo profilo verrà aggiunto alla buddylist. Il MS invia questo messaggio su richiesta dell’utente, in ricezione invece il MS crea un Agendaresponsemessage e lo invia immediatamente al mittente del primo messaggio. Agendaresponsemessage: con questo messaggio il MS risponde a un Agendarequestmessage, quando viene ricevuto il MS passa i dati del mittente, profilo e agenda, al Repository Service per gli eventuali aggiornamenti. Agende aggiornate portano a maggiori probabilità di successo nelle consegna di messaggi da parte di corrieri. Courierrequestmessage: con questo messaggio il Next Hop Choice Service richiede la lista dei corrieri presenti in località all’LME che dispone delle viste di AGAPE più aggiornate e affidabili. Alla rica Ezione di questo messaggio segua l’invio del relativo Courierresponsemessage. Courierresponsemessage: questo messaggio è parte del protocollo di routing context aware tra località, e contiene la lista dei possibili corrieri presenti nella località stessa. Alla ricezione questa lista viene estratta e consegnata al Next Hop Choice Service, sua priorità sarà trovare un corriere adeguato per la consegna del messaggio. Containermessage: quando un utente invia un messaggio a un altro utente disconnesso il messaggio viene incapsulato in un Containermessage e consegnato al corriere, in ricezione quindi il messaggio viene consegnato al Repository Service che provvedera alla persistenza dello stesso fino al momento della consegna. Textmessage: il primo messaggio per lo scambio di contenuti tra utenti, in questo caso solo testo, alla ricezione il MS estrae il testo e lo visualizza nella console. Allo stato attuale del prototipo solo messaggi di testo sono utilizzabili, ma nelle future versioni saranno resi disponibili altri tipi di messaggi. Da questa breve descrizione dei messaggi si evince come i protocolli di MSA prevedono l’instradamento attraverso diverse località. Perché questo sia possibile è necessario che il mittente si coordini, in maniera del tutto trasparente all’utente, con i corrieri presenti in località e che consegni a uno di loro il messaggio da recapitare. Quale corriere sarà eletto per la consegna del messaggio è deciso dal Next Hop Choice Service. 5. Prototipo All’avvio l’LME attiva i servizi di AGAPE e i servizi descritti nei capitoli precedenti. Successivamente viene creato il gruppo a cui gli ME si collegheranno. Si notano, a lato, le due liste rappresentanti una gli utenti ondine e l’altra gli utenti in buddylist. Dal canto suo l’ME, dopo aver attivato i servizi ed effettuato il discovery del gruppo in località, effettuerà una join presso l’LME locale. Se l’utente che si collega è un corriere, la sua agenda verrà inviata automaticamente all’LME il quale tiene una lista aggiornata di tutti i corrieri che incontra. In figura vediamo la ricezione dell’agenda da parte dell’LME: Nella prossima figura vediamo un esempio di invio e ricezione di messaggi da parte di utenti che si trovano nella stessa località: Nel caso in cui un utente debba inviare un messaggio ad un altro ME che non si trova nella località, verrà attivato il protocollo di routing. In figura vediamo la richiesta e il successivo invio da parte dell’LME, della lista dei corrieri che si trovano in località: Di seguito notiamo, lato ME, il feedback di esecuzione dell’algoritmo NHC. 6. Conclusioni e sviluppi futuri Per concludere, abbiamo quindi visto come sia possibile effettuare il delivery dei messaggi in ambienti disconnessi ed impromptu, sfruttando la mobilità e la molteplicità degli utenti per dare un’astrazione di connessione tra MANET. Connessione che deve ovviamente tener conto dei limiti del modello: elevati ritardi, non affidabilità della consegna dei messaggi. Il prototipo progettato è aperto a implementazioni future nella gestione di diversi tipi di messaggi, non solamente di testo ma anche messaggi multimediali.