Progettazione di un protocollo P2P per la comunicazione basata su predicati
Candidato: Daniele Spaccapeli
Relatore: Michele Loreti
Architettura Reti
Modello Client-Server
Modello Peer-to-Peer
- Relativa semplicità di sviluppo
- Sicurezza
- Flessibilità di aggiornamento
- Riduzione dei costi
- Scalabilità
- Assenza del punto critico
Hash Table Distribuita (DHT)
P2P di seconda generazione
- Ricerca (chiave, valore)
- Hashing consistente
- Lista dei nodi vicini
Esempi: BitTorrent, YaCy, CDN, Chord, Kademlia ...
Framework
Funzionalità generiche che facilitano lo sviluppo software
Framework P2P studiati:
- JXTA
- XNap
- Pastry
Vediamo Pastry in dettaglio ...
Pastry - Introduzione
sviluppato dalla Rice University e Microsoft Research
Caratteristiche:
- identificativi a 128 bit
- routing del messaggio al nodo più vicino alla chiave
- ogni nodo mantiene un leaf set
- ogni nodo mantiene una tabella di routing
Pastry - Routing
- contiene indirizzi IP
- 32 righe e 16 colonne
- gli elementi in riga n condividono le prime n cifre
- ID scelti con probabilità uniforme
O(log_{16}{N})
O(log16N)
Numero di salti per ricezione:
Pastry - Esempio
Framework - Confronto
✗ | Documentazione | Reperibilità | Semplicità |
---|---|---|---|
JXTA | ✓ | ||
XNap | ✓ | ✓ | |
Pastry | ✓ | ✓ | ✓ |
Routing dei messaggi
Tipologie più comuni:
- Unicast
- Broadcast
e Multicast ...
Multicast
- comunicazione indirizzata a un gruppo di nodi
- a livello di applicazione o assistita dalla rete
- usa dei blocchi di indirizzi riservati in IPv4 e IPv6
Comunicazione basata su predicati
gruppo di destinatari è individuato dinamicamente in base alla valutazione di un predicato logico
- astrazione per trattare di complessi sistemi adattivi (CAS)
- i nodi non devono essere coscienti della presenza reciproca
- adatto in contesti altamente dinamici
Protocollo P2P per la comunicazione basata su predicati
Protocollo - Definizioni
Protocollo - Fase Iniziale
Protocollo - Fase Principale
Protocollo - Post Sequenza Principale
Protocollo - API
/**
* Comunica il valore di verità di un attributo (positivo) al padre del
* nodo all’interno dell’albero multicast.
*
* @param attributo l'attributo da modificare
* @param valore_booleano valore - True, False per effettuare un unsubscribe
* @return True se l'operazione ha avuto successo, False altrimenti
*/
Bool set(Attribute attributo, Bool valore_booleano){...};
/**
* Comunica il valore di verità di un attributo (negativo) al padre del
* nodo all’interno dell’albero multicast.
*
* @param attributo l'attributo da modificare
* @param valore_booleano valore - True, False per effettuare un unsubscribe
* @return True se l'operazione ha avuto successo, False altrimenti
*/
Bool unset(Attribute attributo, Bool valore_booleano){...};
/**
* Serve per effettuare lo scambio di messaggi.
*
* @param messaggio messaggio da inviare
* @param formula_logica predicato logico per l'invio
* @return True se l'operazione ha avuto successo, False altrimenti
*/
Bool send(String messaggio, CNF formula_logica){...};
/**
* Utilizzato dall’agente per recuperare i messaggi ricevuti. I messaggi ricevuti potranno
* essere letti in maniera asincrona e verranno tutti memorizzati in una coda.
*
* @return Restituisce una lista di Stringhe, al primo posto il messaggio e al secondo
* la stringa che identifica la federazione da cui il messaggio proviene.
*/
String[] receive(){...};
Conclusione
Miglioramenti
Simulazione
Grazie dell'attenzione
backup tesi 27/9
By mauroch
backup tesi 27/9
- 762