Realizzazione di un sistema di coordinazione basato su GVDS in ambiente MANET Marco Pivi Reti di Calcolatori LS AA 2005 2006
Modelli di Coordinazione Modello di programmazione composto da 2 parti: Modello di computazione Modello di coordinazione Fornire un supporto per la programmazione di applicazioni nascondendo l'ambiente distribuito Prevede operazioni per: La creazione di nuove attività Permettere la comunicazione tra le entità presenti 2
Linda (Gelernter 1985) Linguaggio di Coordinazione Spazi di tuple insieme strutturato di relazioni, intese come attributi e valori Letture e scritture concorrenti, senza interferenze out(t), in(p), rd(p) inp(p), rdp(p) ing(p), rdg(p) Modello disaccoppiato Spazialmente tuple space accessibile globalmente Temporalmente tuple space persistente 3
Linda in una MANET MANET Sistemi fortemente dinamici Disconnessioni frequenti Probabili partizionamenti della rete Comunicazione best effort Difficilmente ottenibile un'informazione globale Necessario adattare il modello, rilassandone alcune proprietà 4
Global Virtual Data Structures Modello di coordinazione basato sull'accesso ad una struttura dati condivisa tra più entità Distribuita ciascuna entità è responsabile di una porzione della struttura dati Costruttiva percezione della GVDS data dalla combinazioni delle porzioni fornite dalle entità raggiungibili Uniformemente accessibile ciascuna entità accede alla GVDS tramite lo stesso set di istruzioni Allocazione trasparente nascosto l'effetto globale delle operazioni 5
AGAPE Allocation and Group Aware Pervasive Environment Middleware di supporto per lo sviluppo di applicazioni collaborative in ambiente MANET, sfruttando il concetto di gruppo Comunicazione non affidabile, asincrona, basata sui profili Entità distinte in due categorie Managed Entity Local Manager Entity 6
TUPLALIBRE Realizzazione della GVDS Partizionamento dello Spazio di Tuple fra i vari componenti del gruppo A ciascuna entità vengono associate le tuple di cui è effettivamente responsabile dell'inserimento e rimozione Gli altri componenti del sistema possono solo presentare delle richieste per rimuovere o leggere le tuple stesse Inserimento di campi MITTENTE e DESTINATARIO nelle tuple limitata la trasparenza propria dei sistemi basati su spazi di tuple + riduzione del numero di messaggi scambiati 7
TUPLALIBRE Primitive di accesso alla GVDS Fornite le tipiche operazione proprie dei sistemi basati su spazi di tuple OUT inserimento della tupla nello spazio di tuple locale IN, RD, INP e RDP rimozione e lettura di una tupla appartenente ad uno dei dispositivi identificati tramite profiles matching (eventualmente anche controllo locale) Necessario realizzare un protocollo per limitare possibili inconsistenze all'interno della GVDS (critiche operazioni di IN e INP) Linee guida nella realizzazione del protocollo: Limitazione del numero di messaggi scambiati In casi di inconsistenze, replicare l'informazione piuttosto che perderla 8
TUPLALIBRE protocollo di scambio informazioni Transaction IDentifier (TID) inserito nella tupla per identificare la richiesta da parte di un componente Previsti 3 tipi di messaggi: Request si invia il template a tutti i dispositivi individuati tramite profiles matching Response si fornisce la tupla richiesta Commit si segnala la terminazione del protocollo, comportamento diverso in base alla semantica dell'operazione Utilizzo di timeout e ritrasmissioni per ovviare ad eventuali perdite dei messaggi 9
TUPLALIBRE Spazi di tuple di servizio Nel caso di IN e RD, utilizzati per segnare eventuali richieste pendenti a cui non si è in grado di rispondere Viene inserito il pattern ricevuto, dopodichè prima di effettuare nuovi inserimenti (out), si effettua un controllo: Sullo spazio di servizio relativo alle rd pendenti, cercando di soddisfare tutte le richieste possibili Sullo spazio di servizio relativo alle in pendenti, nel caso di più pattern che combaciano con la tupla che si vuole inserire, se ne sceglie una in modo non deterministico Alla ricezione del Commit si elimina il pattern pendente, nel caso di rd si inserisce la tupla nello spazio di tuple locale, nel caso di in la tupla viene eventualmente scartata 10
TUPLALIBRE Esempio di transazione p out(t2) t2 p A commit(b) in(p) commit(b) in(p) response(t2) D B response(t1) commit(b) in(p) p out(t1) in(p) commit(b) C p 11
TUPLALIBRE Discovery Service Supporto ai protocolli realizzati Offre una maggiore garanzia che i componenti del gruppo, selezionati tramite profiles matching, siano informati di eventuali richieste 2 funzionalità principali: Refresh delle richieste periodicamente vengono ritrasmesse le richieste Controllo della topologia del gruppo per rilevare eventuali nuovi entrati e inviargli la richiesta 12
Test Applicazione di test sviluppata sulla base di un prototipo di chat Controllo esplicito sulle azioni di ricezione ed invio dei messaggi (azioni disponibili di in, rd, out) Visibilità del contenuto del tuplespace locale e di quelli di servizio Test effettuati su rete LAN, su un insieme massimo di 10 macchine (sia Windows che Linux) 13
Conclusioni e Sviluppi futuri Test con risultati soddisfacenti, ma non completi.. Completamento della fase di test Su MANET Con applicazioni più complesse Possibili estensioni, prevedendo nuove operazioni ing(p), rdg(p) 14