Overlay network strutturate per applicazioni peer to peer Lorenzo Castelli
Overlay network Overlay network in un’applicazione peer to peer: la rete virtuale formata dai nodi dell’applicazione e dai loro riferimenti verso gli altri nodi. Organizzazioni classiche Centralizzata Non strutturata Meccanismi di ricerca classici Client-Server Broadcast (limitato)
Overlay network strutturate Reti decentralizzate ma strutturate, che forniscono garanzie sulla complessità della ricerca (generalmente O(logN)). Realizzano il key based routing: dato un’indirizzo, effettuare il routing verso il nodo attivo con indirizzo più vicino a tale indirizzo. Forniscono la base su cui costruire servizi distribuiti ad alto livello: Distributed hash table (DHT) Decentralized object location and routing (DOLR) Multicast
Architettura di un nodo
Servizi di rete Servizi Canali di comunicazione Monitoring della rete Tecniche Frammentazione e deframmentazione dei messaggi Conferma di ricezione, time-out, sliding window e protocollo di connessione per comunicazioni affidabili Stima round-trip time e loss rate Tecniche anti-congestione Standard UDP TCP SCTP
Elementi overlay network Spazio degli indirizzi Ampio (es. 160 bit) Sufficiente per hash crittografici Generazione indirizzi univoci Universally unique identifier A partire da indirizzo IP Assegnati da un’organismo centrale Funzione di distanza XOR Sottrazione Definizioni complesse Topologia della rete Anello Albero
Routing Condizione da garantire Dato un’indirizzo di destinazione D, qualunque nodo di indirizzo A è collegato ad almeno un nodo di indirizzo B tale che d(B,D) < d(A,D), oppure d(A,D) è minima. Key based routing Seguire i nodi via via più vicini fino alla destinazione. Complessità O(N) O(logN) … Protocollo Ricorsivo Iterativo
DHT Dizionario distribuito ispirato alle tabelle hash classiche. Put Calcolo di un’indirizzo univoco I a partire dalla chiave (funzione hash crittografica) Inserimento della coppia chiave-valore nel nodo con indirizzo più vicino a I Get Calcolo dell’indirizzo I a partire dalla chiave Recupero del valore dal nodo con indirizzo più vicino a I Manutenzione Scambio dei dati al join/leave dei nodi Ridondanza per resistenza ai failure
DOLR Sistema di pubblicazione-localizzazione di risorse, in grado di fornire alte probabilità di ottimalità. Pubblicazione Calcolo dell’indirizzo I della risorsa Per ogni nodo presente sul percorso fra il publisher e la radice: –Inserimento di un puntatore al publisher associato alla risorsa Routing Calcolo dell’indirizzo I della risorsa Invio del messaggio verso la radice Deviazione del messaggio non appena si incontra un nodo che contiene il puntatore al publisher
Multicast Organizzazione di canali di distribuzione di messaggi. Join-leave Calcolo della radice del canale Invio di un messaggio apposito alla radice Nei nodi intermedi fra il mittente e la radice, gestione di una lista di “figli” in modo tale da creare-distruggere un ramo fra radice e mittente Invio in multicast Calcolo della radice del canale Invio del messaggio alla radice Propagazione del messaggio dalla radice ai figli in modo ricorsivo, in modo da percorrere tutto l’albero
Progetto Realizzazione di una tabella hash distribuita. Chimera Overlay network basata sugli algoritmi di Tapestry-Pastry. Ottima (e al momento unica?) implementazione centrata sull’estensibilità e la flessibilità Ancora estremamente prototipale! DHT realizzata Fornisce un dizionario distribuito che associa stringhe a stringhe Funzioni di Put, Get, e manutenzione del dizionario Nessuna ridondanza (può essere costruita in uno strato superiore)