P-Grid: A Self-Organizing Access Structure for P2P Information Systems Karl Aberer Presentazione et codice: Antonio Gaetani Marco Montali Marco Tamburini Agenda Stato dell’arte e motivazioni: strutture per l’accesso ai dati nei sistemi P2P Definizione e proprietà di P-Grid Algoritmo di ricerca all’interno di una P-Grid Costruzione di una P-Grid Considerazioni sull’efficienza, problematiche e DEMO! Stato dell’arte Tipiche infrastrutture P2P per il file sharing (Gnutella): Nessun meccanismo di indicizzazione Richieste mandate in broadcast RICERCA INEFFICIENTE Obiettivo Lo scopo è quindi quello di costruire una struttura distribuita per l’accesso ai dati che sia totalmente decentralizzata scalabile affidabile L’idea di base Mediante meeting randomici tra i peer, essi: Si partizionano lo spazio di ricerca Acquisiscono informazioni per interagire con altri peer durante successive richieste di ricerca Il risultato è la struttura distribuita chiamata P-Grid di accesso Ricerca con Gnutella (Intuitivamente) No! Mi dispiace Commedia Jeff Kanew La rivincita dei nerdz Sì! Te lo mando No! Mi dispiace Ricerca con P-Grid (Intuitivamente) Papà: Gestisco Commedia commedie di Jeff Kanew Commedia Jeff Kanew, ma La rivincita dei nerdz per i nerds Jeff Kanew devo chiedere La rivincita dei nerdz a Papà Gùgù: Papà: Papà Papà Papà Tambu: Gestisco Commedia commedie, ma Jeff Kanew per Jeff Kanew La rivincita dei nerdz devo chiedere a Tambu Ce l’ho! La P-Grid Una P-Grid è unaProprietà struttura di con accesso Un peer path 10 ai dati distribuita: r può apparteneregestisce all’insieme tutte ledei chiavi I datiriferimenti sono rappresentati da chiavi di a=p a binarie livello i se che per 1…p k cominciano I peer si ripartiscono lo spazio delle chiavi effettuando 10! degli incontri prefix(i,r)=[prefix(i-1,a),pi] Ogni peer possiede un path (determinato dagli incontri fatti) che rappresenta il prefisso del sottospazio delle chiavi che gestisce Ogni peer possiede una griglia di riferimenti ad altri peer I peer riferiti da a a livello i hanno la proprietà che completano lo spazio delle chiavi di a rispetto all’i-mo bit del path La determinazione di tali riferimenti viene effettuata secondo algoritmi probabilistici Un peer nella P-Grid P1 0 PX Py Livello 1 0 1 1 Pz 1 chiave owner doc 011… Pa 011… Pb 011… Pc 011… Pd 1 Pw Livello 2 Livello 3 A regime conterrà tutti i documenti nella rete con chiave che inizia per 011! Algoritmo di ricerca (peer1, 1000, p,livello 1) { query(peer a,query l) { found= false; remanent_path = sub_path(path(a), l, k); 1000; Lunghezza Della query path(peer1)=1000 iniziale 1000; common_path = common_prefix_of(p, rempath); peer1 responsabile IF length(common_path) 4 = 4 IF = length(p) THEN result = peer1 a per 1000 ELSE IF length(path(a)) > l + length(compath) THEN querypath = sub_path(p, length(compath) + 1,length(p)); refs = refs(l + length(compath) + 1, a); WHILE |refs| 1 AND NOT found r = random_select(refs); IF online(peer(r)) found = query(peer(r), querypath, l+length(compath)); RETURN found; } Algoritmo di ricerca (altro esempio) query(peer a,query l) peer1, 1000, p,livello 1 ) { { found= false; path(peer1)=1011 query(peer a,query { remanent_path =00, sub_path(path(a), l, k); peer3, 3 p,livello l) 1011 found= =false; common_path common_prefix_of(p, rempath); 10 00 remanent_path = sub_path(path(a), l, k); Prende la parte 2 = length(p) 4 NO IF length(common_path) Estrae i riferimenti common_path = common_prefix_of(p, rempath); 00 di query che THEN result = a al livello 3, quindi IF length(common_path) = length(p)rimane togliendo a peer che ELSE IF length(path(a)) + length(compath) 4 > =l a 2 THEN result peer3 il prefisso gestiscono path THEN ELSE comune del tipo 100… . . . querypath = sub_path(p, length(compath) + 1,length(p)); 00 peer 3è refs = refs(l + length(compath) + 1, a);path(peer3)=1000… Esempio: responsabile peer3 (ON) WHILE |refs| 1 AND NOT found per la chiave 1000 peer5 (OFF) r = peer3 random_select(refs); peer6 (ON) IF online(peer(r)) query(peer3, 00, 3); found = peer3 query(peer(r), querypath, l+length(compath)); peer3 RETURN found; } Algoritmo di ricerca Si noti come il peer risultante dalla query non sia l’effettivo owner del documento ma colui che se interrogato è in grado di restituire il peer che è il reale possessore del dato Per acquisire l’item il PASKER non dovrà fare altro che interrogare successivamente il risultante della query e colui che gli sarà segnalato come owner del documento P-Grid (già inizializzata) P1 0 1 1 P2 P6 1 0 1 1 1 P3 P5 0 0 0 1 0 P4 1 1 0 Esempio di query (1°) P1 0 1 1 0 1 1 Esempio di query (2°) P1 0 1 1 0 1 0 P5 0 1 0 X X 0 Esempio di query (3°) P1 P4 0 1 1 1 1 0 1 1 0 X 1 0 P2 1 0 1 1 0 Esempio di query (4°) P6 P1 1 1 1 0 1 1 1 1 1 1 1 0 P2 PEER OFF-LINE Costruzione della P-Grid Il processo di costruzione della P-Grid si basa sul concetto di meeting Un meeting è un incontro di due peer durante il quale viene effettuata la procedura di exchange Tramite la procedura di exchange la coppia cerca di Raffinare il proprio path Aggiornare i propri riferimenti Due peer si possono incontrare: Randomicamente Durante altre operazioni Quando si trovano in relazione mentre eseguono una query Procedura di exchange exchange(a1, a2, r) refmax { è un parametro che commonpath = common_prefix_of(path(a1), indica path(a2)); il numero lc = length(commonpath); massimo di IF lc > 0 riferimenti per livello { commonrefs = union(refs(lc, a1), refs(lc, a2)); refs(lc, a1) = random_select(refmax, commonrefs); refs(lc, a2) = random_select(refmax, commonrefs); . . . PA PB lc=2 refmax=3 0 1 0 PW PY PX 0 1 1 PX PW PY PX PZ PW PY PZ Procedura di exchange l1 = length(sub_path(path(a1), lc + 1, length(path(a1))); l2 = length(sub_path(path(a2), lc + 1, length(path(a2))); Caso 1: se i path dei peer sono uguali si introduce un nuovo livello CASE l1 = 0 AND l2 = 0 AND length(commonpath) < maxlength path(a1) = append(path(a1), 0); path(a2) = append(path(a2), 1); refs(lc + 1, a1) = {a2}; maxlength refs(lc + 1, a2) = {a1}; è un parametro che indica la dimensione massima dei path Esempio di exchange (1°) PB PA 0 1 0 0 1 1 PB PA Procedura di exchange Caso 2: se il path di un peer è prefisso dell’altro e non si è raggiunta ancora la maxlength splittiamo lo spazio del primo peer con il valore (lc+1)-esimo complementato del secondo e aggiorniamo i riferimenti CASE l1 = 0 AND l2 > 0 AND length(commonpath) < maxlength path(a1) = append(path(a1), value(lc+1, path(a2)^-); refs(lc + 1,a1)={a2}; refs(lc + 1,a2)=random_select(refmax,union({a1},refs(lc+1,a2)); Banalmente se l1>0 e l2=0 vale una procedura speculare alla precedente Esempio di exchange (2°) PB PA 0 1 0 0 1 1 refmax=2 PB PY PX PA PX PA Y Procedura di exchange Caso 3: se i path dei due peer sono differenti si considera il livello corrispondente al primo bit differente (che è l’ lc+1mo). I riferimenti di quel livello di ciascuno dei due peer saranno oggetto di exchange con l’altro. recmax è un parametro che indica il massimo grado di ricorsione della procedura di exchange CASE l1 > 0 AND l2 > 0 AND r < recmax, refs1 = refs(lc+1, a1) \ {a2}; refs2 = refs(lc+1, a2) \ {a1}; FOR r1 IN refs1 DO IF online(peer(r1)) THEN exchange(a2, peer(r1), r+1); FOR r2 IN refs2 DO IF online(peer(r2)) THEN exchange(a1, peer(r2), r+1); Esempio di exchange (3°) PB PA 0 1 1 0 PD PC PB PE 0 1 0 0 PG PF PH PA Attenzione CASE l1 > 0 AND l2 > 0 AND r < recmax, r parametro di input della procedura recmax valore di sistema PB PA (numero massimo di ricorsioni successive) 0 1 1 0 0 1 0 0 Sperimentalmente: recmax ottimo =2 PD PC PE PK Non siete convinti? Intuitivamente può capitare che uno dei peer sul percorso sia offline… e allora addio al file desiderato!!! Vi dimostreremo che sarà possibile: con solo il 30% di nodi online 99% di possibilità di reperire il documento Considerazioni Definiamo: refmax # riferimenti memorizzati dal singolo peer per ogni livello k lunghezza della chiave p probabilità che un peer sia on-line Nel nostro esempio ci riferiamo a valori di refmax=20, k=10, p=30% Consideriamo il caso peggiore ad ogni livello un nuovo peer deve essere contattato Dimostrazione 1-(1-p)refmax probabilità di raggiungere un peer al livello successivo valore relativo: 99,9% probabilità effettuare una ricerca con successo (1-(1-p)refmax)k valore relativo: 99,2% Inizializzazione Come la P-Grid debba essere start-up è un problema che dagli algoritmi precedenti Sarà tra poco pubblicato un queste tematiche. In breve ad costruita in fase di non viene trattato lavoro riguardante ogni meeting: Ciascun peer arricchisce la propria conoscenza sui documenti presenti nella rete esplorando quelli dell’altro (aggiungendo item a livello foglia) Fa una update sui documenti da lui gestiti in caso di modifica del proprio path (eliminazione di documenti non più gestiti) Per maggiori informazioni, le tecniche esposte sono state implementate nella nostra applicazione Update All’aggiunta di un nuovo documento in uno dei peers facenti parte della P-Grid è necessario eseguire una procedura di update su ciascun peer che a livello foglia dovrebbe gestire la chiave Sperimentalmente è della nuova entry risultata la miglior Varie tecniche sono possibili: soluzione Facendo ripetutamente ricerche randomiche depth-first nella speranza di fare tutte le update necessarie Facendo un’unica ricerca breadth-first e conseguenti update Mantenendo una lista dei peers che sono responsabili della stessa chiave e facendo una solo ricerca depth-first N-GRID E’ un simulatore di una rete P2P basata su P-Grid le cui parti costituenti sono: Un peerPooler, che gestisce i meeting tra i peer N peer, ciascuno dei quali rappresenta un nodo fisico: È in realtà un thread che esegue in modo indipendente dagli altri peer È l’owner di una serie di documenti le cui chiavi sono generate a caso Risponde a query per un documento Manifesta (su richiesta) i suoi riferimenti ai vari livelli Un’astrazione di rete, che ci ha permesso di implementare gli algoritmi come se ci trovassimo effettivamente in un ambiente distribuito Riferimenti [1] Karl Aberer, Magdalena Punceva, Manfred Hauswirth, Roman Schmidt: “Improving Data Access in P2P Systems” [2] Karl Aberer, Philippe Cudré-Mauroux, Anwitaman Datta, Zoran Despotovic, Manfred Hauswirth, Magdalena Punceva, Roman Schmidt: “P-Grid: A Self-organizing Structured P2P System” [3] Karl Aberer, Philippe Cudré-Mauroux, Anwitaman Datta, Zoran Despotovic, Manfred Hauswirth, Magdalena Punceva, Roman Schmidt, Jie Wu :”Advanced Peer-to-Peer Networking: The P-Grid System and its Applications” [4] Roman Schmidt: “Gridella: an open and efficient Gnutellacompatible Peer-to-Peer System based on the P-Grid approach” [5] Karl Aberer, Anwitaman Datta, Manfred Hauswirth, Roman Schmidt: “Indexing data-oriented overlay networks” (NON ANCORA PUBBLICATO)