SARAH Shop Assistant in Reti Ad-Hoc Presence Awareness, modalità disconnessa e dinamiche di update Antonio Gaetani
Mobile Ad-hoc NETwork (MANET) Nodi mobili che collaborano per fornirsi serviziNodi mobili che collaborano per fornirsi servizi Topologia dinamicaTopologia dinamica Problemi: mobilità dei nodi, perdita di pacchetti, dispositiviProblemi: mobilità dei nodi, perdita di pacchetti, dispositivi diversi diversi
Perché un servizio di presenza in SARAH? Funzione centrale del disabile Funzione centrale del disabile Alta probabilità di disconnessioni e partizionamenti di rete Alta probabilità di disconnessioni e partizionamenti di rete Necessità di sapere chi ci sta intorno Necessità di sapere chi ci sta intorno Soprattutto se cè lentità centrale o meno Soprattutto se cè lentità centrale o meno Comportamento diversificato in relazione ai vicini Comportamento diversificato in relazione ai vicini Modalità di riallineamento dei dati in caso di ricongiungimenti fra reti Modalità di riallineamento dei dati in caso di ricongiungimenti fra reti
Presence Awareness idea di base Ogni nodo riceve le informazioni su coloro che appartengonoOgni nodo riceve le informazioni su coloro che appartengono alla sua rete alla sua rete Le informazioni sono incapsulate nel concetto di profiloLe informazioni sono incapsulate nel concetto di profilo Tramite un servizio che lavora ad intervalli regolari è possibileTramite un servizio che lavora ad intervalli regolari è possibile sapere non solo chi ci sia ma anche ci sia arrivato o se ne sapere non solo chi ci sia ma anche ci sia arrivato o se ne sia andato sia andato
Presence Awareness obiettivi Conoscere chi ci sta intorno Conoscere chi ci sta intorno Sapere chi arriva e chi va via dalla propria rete Sapere chi arriva e chi va via dalla propria rete Poter verificare oltre al cosa sia stato preso, anche il da chi lo sia stato fatto Poter verificare oltre al cosa sia stato preso, anche il da chi lo sia stato fatto Comprendere se lanziano è o meno nella rete cui si appartiene, e di conseguenza: Comprendere se lanziano è o meno nella rete cui si appartiene, e di conseguenza: Prevedere un modalità di comportamento delle entità che sopperisca a tale assenza Prevedere un modalità di comportamento delle entità che sopperisca a tale assenza Prevedere un protocollo che al ritorno del disabile permetta il riallineamento delle liste Prevedere un protocollo che al ritorno del disabile permetta il riallineamento delle liste
Utilizzo di AGAPE AGAPE non è stato utilizzato unicamente per risolvere problemi di comunicazione (routing, gestione dei gruppi, etc.) AGAPE non è stato utilizzato unicamente per risolvere problemi di comunicazione (routing, gestione dei gruppi, etc.) Fornisce il concetto di vista come Fornisce il concetto di vista come Collezione di dati relativi ai membri di un gruppo Collezione di dati relativi ai membri di un gruppo Recapitata ad intervalli regolari a tutti i partecipanti al gruppo dagli LME (Locality Manager Entity, entità che supportano le operazioni di group management) Recapitata ad intervalli regolari a tutti i partecipanti al gruppo dagli LME (Locality Manager Entity, entità che supportano le operazioni di group management) Rende disponibile il View Manager Service (VMS), che si occupa della gestione delle viste, interrogabile per ottenere le viste di interesse. Rende disponibile il View Manager Service (VMS), che si occupa della gestione delle viste, interrogabile per ottenere le viste di interesse.
Architettura PresenceService Pooler PresenceService GID Il PresenceServicePooler è un singleton che ha come responsabilitàIl PresenceServicePooler è un singleton che ha come responsabilità gestire i vari servizi di presenza, uno per ciascun gruppo al il quale lutente gestire i vari servizi di presenza, uno per ciascun gruppo al il quale lutente si è aggregato si è aggregato Il PresenceService è un Thread che ciclicamente interroga il ViewIl PresenceService è un Thread che ciclicamente interroga il View Manager Service per ottenere e processare la vista relativa al gruppo per Manager Service per ottenere e processare la vista relativa al gruppo per cui il servizio è responsabile cui il servizio è responsabile
PresenceService VMSPresenceService UtenteAUtenteB UtenteC GI D PresenceService
Il PresenceService Il PresenceService ha una temporizzazione simile a quella del VMS in modo da evitare overhead ha una temporizzazione simile a quella del VMS in modo da evitare overhead Attiva il protocollo di update in caso di ricongiungimento con il disabile Attiva il protocollo di update in caso di ricongiungimento con il disabile Il suo stato influenza il comportamento in caso di presa di un prodotto Il suo stato influenza il comportamento in caso di presa di un prodotto È un observable, per rendere la sua lista di entità disponibile ( ad esempio, in modo da poter effettuare i match PID Utente) È un observable, per rendere la sua lista di entità disponibile ( ad esempio, in modo da poter effettuare i match PID Utente) Il PresenceServicePooler Il PresenceServicePooler Si occupa della creazione e della gestione dei servizi di presenza Si occupa della creazione e della gestione dei servizi di presenza Permette di accedere ai vari PresenceService in relazione al GID Permette di accedere ai vari PresenceService in relazione al GID Servizio di presenza considerazoni
Modalità disconnessa Inizialmente consideriamo il disabile come entità centralizzanteInizialmente consideriamo il disabile come entità centralizzante Se ci troviamo con una sottorete che non vede più lente centraleSe ci troviamo con una sottorete che non vede più lente centrale passiamo in una modalità di esecuzione in cui se prima si mandava passiamo in una modalità di esecuzione in cui se prima si mandava un singolo messaggio al disabile ora se ne mandano n ai propri n vicini un singolo messaggio al disabile ora se ne mandano n ai propri n vicini
Modalità disconnessa considerazoni Si risparmia un messaggio per ogni singola operazione (n+1 n) Si risparmia un messaggio per ogni singola operazione (n+1 n) Non ci si riferisce più ad unentità centralizzante carico meglio distribuito ma possibilità di disallineamenti della lista Non ci si riferisce più ad unentità centralizzante carico meglio distribuito ma possibilità di disallineamenti della lista Nessuna risoluzione di eventuali conflitti: Nessuna risoluzione di eventuali conflitti: Due benefattori che notificano in contemporanea di voler prendere un certo prodotto Due benefattori che notificano in contemporanea di voler prendere un certo prodotto Problemi gestiti con politica conservativa: Problemi gestiti con politica conservativa: Preferisco che due benefattori prendano il prodotto A piuttosto che non lo faccia nessuno Preferisco che due benefattori prendano il prodotto A piuttosto che non lo faccia nessuno
Dinamiche di update Modifiche Update Lanziano è colui che si fa carico di dirimere i conflitti eventualmenteLanziano è colui che si fa carico di dirimere i conflitti eventualmente venutisi a creare venutisi a creare Il benefattore non appena si incontra nuovamente con il disabile gli inviaIl benefattore non appena si incontra nuovamente con il disabile gli invia le modifiche che ha effettuato da quando ha perso contatto le modifiche che ha effettuato da quando ha perso contatto Lanziano ridistribuisce a tutti i benefattori gli item della lista aggiornatiLanziano ridistribuisce a tutti i benefattori gli item della lista aggiornati Tutti i componenti della rete dispongono finalmente di liste sincronizzateTutti i componenti della rete dispongono finalmente di liste sincronizzate Update
Fase costosa in quanto Fase costosa in quanto Il messaggio contenente le modifiche effettuate potrebbe essere piuttosto grande (costi di frammentazione lato benefattore) Il messaggio contenente le modifiche effettuate potrebbe essere piuttosto grande (costi di frammentazione lato benefattore) Devono essere inoltrati nuovamente da parte dellanziano tutti gli item a tutti i membri del gruppo (grosso carico sulla rete) Devono essere inoltrati nuovamente da parte dellanziano tutti gli item a tutti i membri del gruppo (grosso carico sulla rete) Grosso carico computazionale a carico dellanziano per il risoluzione dei conflitti Grosso carico computazionale a carico dellanziano per il risoluzione dei conflitti Ottimizzazione per evitare il reinvio di messaggi uguali inutili Ottimizzazione per evitare il reinvio di messaggi uguali inutili Dinamiche di update considerazoni
Sviluppi futuri Creazione di una piccola chat che permetta ai membri di un gruppo di supporto di comunicare Creazione di una piccola chat che permetta ai membri di un gruppo di supporto di comunicare Aggiunta di ulteriori dati ai profili per la visualizzazione di nuove informazioni (ad esempio una foto) Aggiunta di ulteriori dati ai profili per la visualizzazione di nuove informazioni (ad esempio una foto) Nuovo profile-matcher Nuovo profile-matcher Riservatezza e sicurezza Riservatezza e sicurezza Cambiamento del target dellapplicazione (coordinamento in situazioni di emergenza, etc.) Cambiamento del target dellapplicazione (coordinamento in situazioni di emergenza, etc.) Aspettando il multicast su AGAPE … Aspettando il multicast su AGAPE …