A simulator for peer to peer protocols Gennaro Cordasco

Slides:



Advertisements
Presentazioni simili
Peer To Peer (o quasi) Gennaro Cordasco.
Advertisements

? Peer To Peer (P2P) Kademlia pastry can jxta napster fiorana
Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco Gennaro Cordasco
Lezione 5. Ricapitolando…. Sistemi P2P puri Sistemi UniformiSistemi Non uniformi Abbiamo detto abbastanza KoordeNeighbor of Neighbor routing (NON)
Ancora esercizi!!! Chernoff Bound allora
Sistemi P2P avanzati Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco – –
Ricapitolando…. Sistemi P2P puri Sistemi UniformiSistemi Non uniformi Abbiamo detto abbastanza KoordeNeighbor of Neighbor routing (NON)
Autori: I. Stoica, R. Morris, D. Liben-Nowell, D. R. Karger, M. F
Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT and Berkeley Chord: A Scalable Peer-to-peer Lookup Service for Internet.
Ricapitolando…. Sistemi P2P puri Sistemi UniformiSistemi Non uniformi KoordeNeighbor of Neighbor routing (NON)
Sistemi P2P avanzati Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco – –
Lezione 5 Domande: Laverage path length di Chord con 2^b identificatori e N=2^b nodi è (giustificare la risposta) Laverage path length di Chord con 2^b.
Errata Corrige. DHT Routing (Tapestry) Tabella di routing (base k=4, digit d=4) Consideriamo il nodo x con id (x 1, x 2, x 3, x 4 ): (1+x 1, *, *, *)
Domande Consideriamo un grafo di de bruijn con base k, ed N = k^b nodi, quale delle seguenti affermazioni è vera (giustificare la risposta) Il grado di.
Sistemi P2P avanzati Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco – –
Sistemi P2P avanzati Lezione 4 Consisten Hashing Altri sistemi P2P uniformi F-Chord :-)
Sistemi Peer To Peer (P2P)
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
1 14 marzo 2006 sommaruga andrea Fondazione Ordine Ingegneri di Milano VPN: Reti Private Virtuali VPN: RETI PRIVATE VIRTUALI LE POSSIBILITA' DI ACCESSO.
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
Indici di Posizione Giulio Vidotto Raffaele Cioffi.
Product Quantization for Nearest Neighbor search.
Basi di dati - Fondamenti
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
NAV 2013 – Contabilità Industriale (Cost Accounting Module)
Progettare algoritmi veloci usando strutture dati efficienti
LA MAPPA CONCETTUALE Istruzioni per l’uso
La rappresentazione delle informazioni
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Dal problema al processo risolutivo
Algoritmi di stima con perdita di pacchetti in reti di sensori wireless: modellizzazione a catene di Markov, stima e stima distribuita Chiara Brighenti,
Breve report su corso RedHat Enterprise Virtualization (RH318)
Terza Lezione → Navigare nel file System → parte 2
DISTRIBUZIONI TEORICHE DI PROBABILITA’
a cura di Francesca De Rosa
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
B-alberi e alberi autoaggiustanti
File hash.
Job Application Monitoring (JAM)
Organizzazione fisica
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
analizzatore di protocollo
© 2007 SEI-Società Editrice Internazionale, Apogeo
Sistemi Peer to Peer Gennaro Cordasco
Lezione 5 Domande: L’average path length di Chord con 2^b identificatori e N=2^b nodi è (giustificare la risposta) (b) (b/2) (log(N)) (Nessuna delle precedenti)
K4 è planare? E K3,3 e K5 sono planari? Sì!
[Nome progetto] Relazione finale
Programmare.
Concetti introduttivi
Lezione n°6 Prof.ssa Rossella Petreschi
Scheduling in Linux (Kernel 2.4 e 2.6)
[Nome progetto] Relazione finale
Introduzione agli Algoritmi e alle Strutture Dati
© 2007 SEI-Società Editrice Internazionale, Apogeo
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strapazziamo le immagini…
Algoritmi e Strutture Dati
Sistemi Peer to Peer Gennaro Cordasco
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
Algoritmi e Strutture Dati
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
MergeSort Usa la tecnica del divide et impera:
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Scheduling (Schedulazione)
Transcript della presentazione:

A simulator for peer to peer protocols Gennaro Cordasco P2PSIM A simulator for peer to peer protocols Gennaro Cordasco

P2PSIM: A simulator for peer to peer protocols Sommario Introduzione I Protocolli usati in p2psim Incorporating geography Concetto di geometria Installazione Esecuzione Come valutare i risultati Come creare il proprio protocollo 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols p2psim è un simulatore di eventi, sviluppato per analizzare e comparare protocolli peer to peer (p2p); p2psim è free, multi-thread ed è sviluppato in c++; p2psim supporta diversi protocolli per sistemi peer-to-peer, fornisce un supporto per la sincronizzazione di metodi e permette di evitare i deadlocks. Versione attuale pre-alpha : Una versione al giorno!!; Niente commenti; Niente documentazione. 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols IRIS Project p2psim fa parte del progetto IRIS (MIT): Il progetto IRIS si propone come fine lo sviluppo di una nuova infrastruttura decentralizzata, basata su distributed hash tables (DHTs), Il progetto IRIS comprende tra l’altro: Chord; CFS (Cooperativa File System): è un sistema di memorizzazione basato su Chord; permette la pubblicazione dei propri file e la possibilità di accedere ai file pubblicati da altri (solo lettura); permette di distribuire il carico fra i nodi; permette di creare repliche dei dati, onde evitare la perdita degli stessi a seguito di fallimento dei nodi del sistema. 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati I protocolli supportati finora da p2psim sono: Chord (in tre versioni); Kademlia; Kelips; Koorde; Tapestry; 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati:Chord Chord è stato implementato in queste tre versioni: Chord (usa solo la successor list); ChordFinger (versione di Chord nota); ChordFingerPNS (Chord con Proximity Neighbor Selection); 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati:Chord(2) ID Resp. 8+1=9 14 8+2=11 8+8=16 21 8+16=24 24 8+32=40 42 8+4=12 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Incorporating geography      03/12/2018 P2PSIM: A simulator for peer to peer protocols

Incorporating geography(2) Supponiamo che ogni nodo conosce il RTT con ogni altro nodo (non è fattibile, ma è possibile ottenere delle stime a un costo relativamente basso); Un idea: Supponiamo di avere m macchine sempre attive che svolgono il compito di marcatori. (Non devono necessariamente far parte del sistema); Ogni nodo misura il suo RTT verso ogni marcatore e ordina i marcatori in ordine crescente di RTT; Esistono m! disposizioni diverse dei marcatori; Si partiziona lo spazio delle chiavi in m! zone uguali; Si assegna lo stesso sottospazio ai nodi che calcolano la stessa disposizione dei marcatori; 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Incorporating geography(3) PRS(Proximity routing selection) Durante la ricerca l’algoritmo di routing non sceglie il successivo step basandosi solo sulla distanza fra i nodi nella rete di overlay; considera anche la distanza effettiva fra i nodi (in termini di RTT); PNS(Proximity neighbor selection) La scelta dei vicini non dipende solo dalla distanza fra i nodi sulla rete di overlay ma è influenzata anche dalle distanze reali. 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Incorporating geography(4) In generale la possibità di usare PNS, PRS o entrambi dipende dalla geometria del sistema preso in considerazione: Ring (Chord): Permette PNS e PRS; Tree (PRR) e XOR (Kademlia): PNS ma non PRS; Ipercubo (CAN, Tapestry): PRS ma non PNS; Butterfly (Viceroy) Non permette ne PNS ne PRS (vale in generale per tutti i sistemi a grado dei nodi costante (congettura!!!)); 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Incorporating geography: Chord Chord e PRS: L’algoritmo di routing non va semplicemente al nodo più vicino sulla rete di overlay, ma ad esempio potrebbe considerare i due nodi più vicini e scegliere quello con RTT minore; Le path-lenght si allungano ma rimangono O(log n); In particolare : ad ogni passo la distanza fra il nodo destinazione e il nodo corrente si riduce da  a 3/4  Nel caso peggiore la path lenght è quindi log4/3 n. 000 110 111 001 110 010 101 011 100 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Incorporating geography: Chord Chord e PNS: La finger table viene riempita considerando anche il RTT: l’i-esimo finger del nodo  non è semplicemente il ‘‘responsabile’’ della chiave +2i ma è il nodo più vicino(RTT) fra i nodi ‘‘responsabili’’ delle chiavi nell’intervallo [+2i-1, +2i ]. Anche in questo caso le path-lenght si allungano ma rimangono O(log n) (dimostrazione analoga alla precedente). Anche usando simultaneamente PRS e PNS la lunghezza asintotica delle path non varia; 000 111 001 110 010 101 011 100 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols PRS vs PNS % lookup 2 sec latenza 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati:Koorde Il protocollo koorde usa i de Bruijn graph (di base log n) al fine di ottenere un diametro di O(log n / log log n) con grado dei nodi O(log n) (non è possibile fare meglio!!!); De Bruijn graph (base 2): Il nodo m è connesso con i nodi 2m mod 2b e 2m+1 mod 2 b La geometria usata è il ring; 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati:Koorde(2) Tuttavia questi valori sono solo valori attesi e le costanti nascoste dietro la notazione ‘‘O grande’’ sono abbastanza grandi; La procedura che permette di stabilizzare i nodi è assai complicata e dispendiosa; E’ richiesta una stima di n (in realtà di log n); 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati:Kelips Sistema sviluppato per sistemi p2p di dimensioni medio-piccole; Utile quando l’applicazione richiede operazioni di lookup particolarmente veloci O(1); Il grado dei nodi è ; Si può fare di meglio? Kelips consiste in k gruppi virtuali di circa n/k nodi (distribuzione uniforme); Ogni nodo mantiene una completa visione del proprio gruppo (compresi i file gestiti) e una visione parziale degli altri gruppi; 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati:Kelips(2) In particolare, ogni nodo mantiene: Un link per ogni elemento del proprio gruppo (n/k); Una entry per ogni file gestito dal proprio gruppo (F/k); Un numero costante di link per ogni altro gruppo (c(k-1)); In totale vi sono da mantenere S(k,n) = n/k + c(k-1) + F/k; Il valore di k che minimizza S(k,n) è . (Se supponiamo il numero dei file proporzionale rispetto a n, otteniamo k = ) ; Le entry per ogni nodo vengono memorizzate usando AVL(Adelson-Velskii and Landis)-Tree. 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati: Tapestry Realizzazione dinamica dell’algoritmo di Plaxton et al. (che non si adattava a sistemi dinamici); Supponendo che le chiave è costituita da un intero positivo l’algoritmo di routing corregge a ogni passo un singolo digit alla volta; Per fare ciò un nodo deve avere informazioni sui nodi responsabili dei prefissi della sua chiave; (O(log N) nodi) Il numero di messaggi necessari per fare lookup è O(log N); L’algoritmo in pratica simula un Ipercubo; 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati:Kademlia Ogni nodo è rappresentato da un identificatore di 160 bit; Dati due identificatori x e y la distanza fra x e y (d(x,y)) è definita come x (xor) y; XOR è una metrica: d(x,x)=0; d(x,y)>0 se xy; d(x,y)=d(y,x) (simmetrico); d(x,y)+d(y,z)d(x,z). fissato x e una distanza d esiste un solo y tale che d(x,y)=d; Per ogni 0  i  160, ogni nodo mantiene una lista di k (costante) nodi (detta k-bucket) a distanza compresa fra 2i e 2i+1 da se stesso. 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Protocolli supportati:Kademlia(2) I k-bucket vengono aggiornati e ordinati ad ogni operazione con una politica detta least-recently seen node; Ovviamente a ogni passo l’algoritmo di routing dimezza la distanza fra il nodo che fa la richiesta e la destinazione (O(log n) passi); La dimensione delle tabelle di routing è klog n; Poiché è simmetrico il sistema si stabilizza da solo. In pratica durante le lookup le tabelle di routing vengono aggiornate; 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Requirements p2psim può essere installato su Linux e FreeBSD con GCC 2.95.3 oppure GCC 3.3.2; Utilizza Openssl, libcrypto e libgmp; 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Execution L’applicazione prende in input 3 file di testo, per rappresentare rispettivamente: La topologia della rete; Il protocollo da utilizzare; Gli eventi da generare. Esempio di esecuzione: p2psim/p2psim example/protocol.txt example/topology.txt example/events.txt 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Topology Il primo file di testo permette di definire la topologia della rete: topology Euclidean (si considerano le distanza euclidea fra I nodi) failure_model NullFailureModel (non ci sono fallimenti di nodi) 1 0,0 (id del nodo, ascissa e ordinata) 2 5,5 3 8,8 4 12,6 5 13,8 6 0,0 7 20,34 … La distanza fra nodi non è data dal RTT ma dalla distanza euclidea (il RTT può variare, la distanza euclidea no!!!!). Come si possono simulare le variazioni del RTT? 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Protocollo Il file di testo che rappresenta il protocollo è abbastanza semplice: {PROTOCOL} [KEY=VAL [KEY=VAL [...]]] In pratica viene instanziata la classe PROTOCOL alla quale vengono passati tutti i parametri KEY=VAL; Alcuni esempi: ChordFingerPNS base=2 successors=16 pnstimer=2000000 basictimer=2000000 succlisttimer=2000000 m=1 allfrag=1 recurs=1 maxlookuptime=0 initstate=1 Kademlia k=20 alpha=3 stabilize_timer=32000 refresh_rate=32000 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Protocollo(2) ChordFingerPNS base=2 base usata dal protocollo successors=16 utile se ci sono fallimenti pnstimer=2000000 stabilize per i PNSfinger basictimer=2000000 stabilize per succ./ pred. succlisttimer=2000000 stabilize per i successors m=1 numero di copie allfrag=1 trova una sola occorrenza recurs=1 lookup ricorsiva/iterativa maxlookuptime=0 tempo massimo di attesa per una lookup (0= attesa indefinita) 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Protocollo(3) Kademlia k=20 dimensione del bucket alpha=3 numero di lookup concorrenti stabilize_timer=32000 refresh_rate=32000 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Eventi Gli eventi possono essere generati in due modi: Inserendo un evento per ogni riga del file; node 1 Chord:join wellknown=0 node 2 Chord:join wellknown=1 node 3 Chord:join wellknown=0 … node 3 6 Chord:lookup Utilizzando un generatore di eventi; generator {GENERATOR} [KEY=VAL [KEY=VAL [...]]] generator ChurnEventGenerator proto=Kademlia … 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Come vanno letti i risultati Purtroppo non esiste uno standard per la visualizzazione dei risultati di una simulazione; In realtà i risultati vengono generati dal distruttore della classe che rappresenta il protocollo testato; Nella versione attuale di p2psim, quindi, ogni protocollo si basa su parametri diversi, e questo complica la comparazione dei protocolli. 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Come vanno letti i risultati(1) ChordFingerPNS: Supponiamo di lanciare ChordFingerPNS in questo modo: p2psim protocol.txt topology.txt events.txt dove protocol.txt ChordFingerPNS base=2 successors=16 pnstimer=2000000 basictimer=2000000 succlisttimer=2000000 m=1 allfrag=1 recurs=1 maxlookuptime=0 topology.txt topology Euclidean failure_model NullFailureModel 1 85,71 2 97,47 3 92,43 … 512 1,65 events.txt generator ChurnEventGenerator proto=ChordFingerPNS deathmean=0 lifemean=0 lookupmean=116000 exittime=2000000 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Come vanno letti i risultati(2) ChordFingerPNS: 2253468 1243800 236844 727768 22528 0 22528 0 0 153.763 64.000 148.000 248.000 1.000 1.000 3.886 0.000 0.000 8977 Dove: 2253468 costo totale di comunicazione Dal 2 al sesto valore costi di comunicazione per differenti tipi di pacchetti(lookup, manutenzione, ecc.) 153.763 latenza media lookup 1.000 percentuale di successi 3.886 lunghezza media delle paht 8977 numero totale di lookup 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Come vanno letti i risultati(3) Kademlia: Supponiamo ora di lanciare Kademlia in questo modo: p2psim protocol.txt topology.txt events.txt dove protocol.txt Kademlia k=20 alpha=3 stabilize_timer=32000 refresh_rate=32000 topology.txt topology Euclidean failure_model NullFailureModel 1 0,0 2 5,5 3 8,8 4 12,6 5 13,8 6 0,0 … 256 20,34 events.txt generator ChurnEventGenerator proto=Kademlia ipkeys=1 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Come vanno letti i risultati(4) Kademlia: rpc_bytes 19160548 costo totale di comunicazione 2958 good, 0 ok failures, 0 bad failures, avglat 152.9 latenza media lookup avghops 1.08 lunghezza media path 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Come simulare il proprio protocollo Simulare un protocollo con p2psim è abbastanza semplice: I file sillyprotocol.h e silliprotocol.C contengono una bozza di protocollo non implementato; E’ sufficiente implementare le operazioni di join e lookup; (E’ possibile farsi un’idea del codice da scrivere analizzando il codice sviluppato per gli altri protocolli); 03/12/2018 P2PSIM: A simulator for peer to peer protocols

Come simulare il proprio protocollo(1) Infine bisogna editare i 3 file di testo (protocollo, topologia, generatore di eventi) da passare all’applicazione. E’ possibile inoltre creare il proprio generatore di eventi utilizzando tra l’altro SillyEventGenerator. 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Riferimenti http://www.pdos.lcs.mit.edu/p2psim http://project-iris.net/ http://www.pdos.lcs.mit.edu/chord/ P. Maymounkov and D. Mazières, “Kademlia: A peer to peer information system based on the xor metric”. In Proc. of the First International Workshop on Peer-to-Peer Systems, March 2002. M. Castro, P. Druschel, Y. Hu, and A. Rowstron, “Exploiting network proximity in distributed hash tables”. In International Workshop on Future Directions in Distributed Computing (FuDiCo 2002), 2002. Krishna Gummadi, Ramakrishna Gummadi, Steve Gribble, Sylvia Ratnasamy, Scott Shenker, and Ion Stoica, “The Impact of DHT Routing Geometry on Resilience and Proximity”. Proceedings of ACM SIGCOMM 2003, March, 2003. 03/12/2018 P2PSIM: A simulator for peer to peer protocols

P2PSIM: A simulator for peer to peer protocols Riferimenti(2) Frans Kaashoek and David R. Karger, “Koorde: A simple degree-optimal hash table”. In 2st International Peer To Peer Systems Workshop (IPTPS 2003), Berkeley,CA, USA, February 2003. I. Gupta, K. Birman, P. Linga, A. Demers, and R. van R. , “Kelips: Building an efficient and stable P2P DHT through increased memory and background overhead”. In 2st International Peer To Peer Systems Workshop (IPTPS 2003), Berkeley,CA, USA, February 2003. B. Zhao, J. Kubiatowicz, and A. Joseph, “Tapestry: An infrastructure for fault-tolerant wide-area location and routing”. Technical Report UCB/CSD-01-1141, Computer Science Division, U. C. Berkeley, April 2001. I. Stoica, R. Morris, D. Liben-Nowell, D. R. Karger, M. F. Kaashoek, F. Dabek, H. Balakrishnan, “Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications”. In IEEE/ACM Trans. on Networking, 2003. Buone Feste 03/12/2018 P2PSIM: A simulator for peer to peer protocols