Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoMarie-Dominique Olivier Modificato 6 anni fa
1
A simulator for peer to peer protocols Gennaro Cordasco
P2PSIM A simulator for peer to peer protocols Gennaro Cordasco
2
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
3
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
4
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
5
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
6
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
7
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
8
Incorporating geography
03/12/2018 P2PSIM: A simulator for peer to peer protocols
9
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
10
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
11
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
12
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
13
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
14
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
15
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
16
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
17
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
18
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
19
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
20
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 xy; 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
21
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
22
P2PSIM: A simulator for peer to peer protocols
Requirements p2psim può essere installato su Linux e FreeBSD con GCC oppure GCC 3.3.2; Utilizza Openssl, libcrypto e libgmp; 03/12/2018 P2PSIM: A simulator for peer to peer protocols
23
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
24
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, (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
25
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= basictimer= succlisttimer= 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
26
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= stabilize per i PNSfinger basictimer= stabilize per succ./ pred. succlisttimer= 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
27
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
28
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
29
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
30
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= basictimer= succlisttimer= 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= exittime= 03/12/2018 P2PSIM: A simulator for peer to peer protocols
31
Come vanno letti i risultati(2)
ChordFingerPNS: Dove: costo totale di comunicazione Dal 2 al sesto valore costi di comunicazione per differenti tipi di pacchetti(lookup, manutenzione, ecc.) latenza media lookup percentuale di successi lunghezza media delle paht 8977 numero totale di lookup 03/12/2018 P2PSIM: A simulator for peer to peer protocols
32
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
33
Come vanno letti i risultati(4)
Kademlia: rpc_bytes costo totale di comunicazione 2958 good, 0 ok failures, 0 bad failures, avglat latenza media lookup avghops lunghezza media path 03/12/2018 P2PSIM: A simulator for peer to peer protocols
34
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
35
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
36
P2PSIM: A simulator for peer to peer protocols
Riferimenti 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
37
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 , 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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.