PERMESSO
PERsistent MESSaging in ad hOc networks
Presentazione di Valentina Bonsi
Corso di Reti di Calcolatori L-S AA 2005-2006
Progetto di Giuseppe Vitalone, Melli Michele, Roberto
Gamboni e Valentina Bonsi
Prof. Antonio Corradi
Tutor Eugenio Magistretti
Agenda
 Introduzione
Scenario applicativo
Scelte progettuali
Struttura complessiva
 Servizio di chat sincrona
Struttura e Comportamento
Interazione
 Reliability dei messaggi
Considerazioni generali
Implementazione
Scenario applicativo: MANET
Mancanza di infrastruttura predefinita e di
nodi coordinatori
Scarsa
affidabilità
del
mezzo
di
comunicazione
Dispositivi eterogenei anche con ridotte
capacità (smart-phone, PDA, laptop)
D
X
A
C
B
Scelte progettuali
Realizzazione dei servizi in modo
distribuito e dinamico
Realizzazione di servizi affidabili su mezzo
inaffidabile (Datagram UDP)
Utilizzo di J2ME, macchina virtuale Java
ridotta e realizzazione delle funzionalità
mancanti
Struttura complessiva
Instant messaging fra
utenti presenti nella
MANET con scambio
reliable di messaggi
Messaggistica persistente
per utenti non presenti
contemporaneamente
nella MANET
Chat Sincrona
Chat Asincrona
Discovery & Presence Awareness
Gestione dell’entrata, dell’uscita e della caduta dei nodi
nella rete organizzata in modo distribuito, con il ruolo
del coordinatore che ruota fra i presenti.
Chat Sincrona: Struttura e
Comportamento
creaForm(4)
ChatMidlet
ChatFormFactory
• Giuseppe
• Michele
• Roberto
• Valentina
ChatForm 4 ?
ChatForm 1
ChatForm 2
ChatForm 4
chatFormList
Chat Sincrona: Struttura e
Comportamento
ChatForm 4
crea
CheckSlidingWindowThread
SINC_MESS
SINC_MESS
crea
ReliabilityThread
MESS_ACK
stop
SINC_CLOSE
stop
Chat Sincrona: Interazione
Fase di Open: protocollo di hand-shake
ChatMidlet 1
ChatMidlet 2
Port A
Port A
SINC_START (Port B)
creaForm
SINC_ACK (Port C, Port B)
creaForm
Terminato l’hand-shake, la comunicazione fra i due utenti prosegue sulle
porte concordate C e B, gestita dai rispettivi thread dedicati.
Chat Sincrona: Interazione
Fase di Close
ChatForm 1
ChatForm 2
SINC_CLOSE
Connection.close()
freePort (B)
Connection.close()
freePort (C)
send (message)
Hand-shake
SINC_MESS (message)
Se uno dei due partecipanti, dopo la chiusura della chat, invia un nuovo messaggio
e l’altro utente è ancora online, la comunicazione riprende dopo una nuova fase di
hand-shake.
Reliability: Considerazioni generali
Implementato ma
comporta troppo
overhead se la
comunicazione è
“densa”
Alternative considerate:
Single ack: conferma inviata ad ogni
messaggio ordinato ricevuto
Implementato
Cumulative ack: conferma
inviata dopo la
e considerato
la scelta
corretta ricezione di N ottimale
messaggi ordinati
Negative ack: richiesta di rinvio di un
Scartato perché la
messaggio perso da parte
del
ricevente
perdita
del primo
o
dell’ultimo
messaggio non
viene rilevata
Reliability: Considerazioni
sull’ordinamento dei messaggi
Sender
Receiver
Message
Per ristabilire un ordine totale dei
messaggi:
Non realizzabili per applicazione interattiva
•Timestamp fisici
•Timestamp logici
Message
Type
ID
L’identificativo è creato
indipendentemente
da
ogni nodo e permette
dunque di stabilire un
ordinamento FIFO dei
messaggi
Reliability: single ack
Invio
SINC_MESS
Ricezione
send
SINC_MESS
store
MESS_ACK
send
MESS_ACK
delete
WaitingMessages
check
ReliabilityThread
resend
SINC_MESS
Reliability: cumulative ack
Invio
ReliabilityThread
CheckSlidingWindowThread
Avviato ad
ogni invio in
cui la finestra
risulta piena
Avviato
all’avvio della
ChatForm
WaitingMessages
Reliability: cumulative ack
Ricezione
Controllo dei messaggi in arrivo
ed eventuale invio dell’ack
effettuato direttamente nella
ChatForm
Unconfirmed
Messages
Sviluppi futuri
Conferenze: chat sincrone fra più utenti
contemporaneamente
Invio di file in aggiunta allo scambio di
messaggi
Sviluppo all’interno di una MANET multihop e conseguente protocollo di routing
per la consegna ad utenti non connessi
direttamente
Scarica

PERMESSO PERsistent MESSaging in ad hOc networks