p-grid: a self-organizing access structure for p2p information systems karl aberer presentazione et...
TRANSCRIPT
P-Grid: A Self-Organizing Access Structure for P2P
Information Systems
Karl Aberer
Presentazione et codice:Antonio Gaetani
Marco MontaliMarco 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!
RICERCA INEFFICIENTE
Stato dell’arte Tipiche infrastrutture P2P per il file sharing
(Gnutella): Nessun meccanismo di indicizzazione Richieste mandate in broadcast
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 di accesso distribuita chiamata P-Grid
Ricerca con Gnutella (Intuitivamente)
CommediaJeff Kanew
La rivincita dei nerdz
No!Mi dispiace
No!Mi dispiace
Sì!Te lo mando
Ricerca con P-Grid (Intuitivamente)
Ce l’ho!
CommediaJeff Kanew
La rivincita dei nerdz
Gùgù:
Gestisco commedie, ma per Jeff Kanew devo chiedere
a Tambu
CommediaJeff Kanew
La rivincita dei nerdz
Tambu:
Gestisco commedie di
Jeff Kanew, ma per i nerds
devo chiedere a Papà
CommediaJeff Kanew
La rivincita dei nerdz
Papà:
Papà
PapàPapà
CommediaJeff Kanew
La rivincita dei nerdz
Papà:
La P-Grid Una P-Grid è una struttura di accesso ai dati
distribuita: I dati sono rappresentati da chiavi binarie I peer si ripartiscono lo spazio delle chiavi effettuando
degli incontri 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 con path 10 gestisce tutte le chiavi
che cominciano per 10!
Proprietàr può appartenere all’insieme dei
riferimenti di a=p1…pk a livello i se
prefix(i,r)=[prefix(i-1,a),pi]
Un peer nella P-Grid
P1
0 1 1
chiave doc
owner
011… Pa
011… Pb
011… Pc
011… Pd
PX
Pz
Pw
1 … …
0 0 …
A regime conterrà tutti idocumenti nella rete
con chiave che inizia per 011!
Py
1 … …
0 1 0 …
0
1
1
Livello 1
Livello 2
Livello 3
Algoritmo di ricercaquery(peer a,query p,livello l) {
found= false;
remanent_path = sub_path(path(a), l, k);
common_path = common_prefix_of(p, rempath);
IF length(common_path) = length(p)
THEN result = a
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;
}
(peer1, 1000, 1) {
1000;1000;
LunghezzaDella query
iniziale
IF 4 = 4
peer1
peer1 responsabile
per 1000
path(peer1)=1000
Algoritmo di ricerca (altro esempio)query(peer a,query p,livello l) {
found= false;
remanent_path = sub_path(path(a), l, k);
common_path = common_prefix_of(p, rempath);
IF length(common_path) = length(p)
THEN result = a
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;
}
peer1, 1000, 1 ) {
1011
102 4
path(peer1)=1011
NO
4 2
00Esempio:peer3 (ON)peer5 (OFF) peer6 (ON)
peer3
query(peer3, 00, 3);
peer3
peer3 peer3
query(peer a,query p,livello l) {found= false;remanent_path = sub_path(path(a), l, k);common_path = common_prefix_of(p, rempath);IF length(common_path) = length(p)
THEN result = aELSE. . .
Prende la parte di query che
rimane togliendo il prefisso comune
Estrae i riferimenti al livello 3, quindi
a peer che gestiscono path del tipo 100…
path(peer3)=1000…
peer3, 00, 3
00
00
peer 3 è responsabile
per la chiave 1000
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
P2
P5
P6
P4
P3
0 1 1
1 0
0 0
1 1 0
1 1 1
0 1 0
Esempio di query (1°)
P1
0 1 1
0 1 1
ask(011)
MATCH
Esempio di query (2°)
P1
0 1 1
0 1 0
ask(010)
ask(010,level(3))
P5
0 1 0
X X 0
response(P5 )
MATCH
Esempio di query (3°)
P1
0 1 1
1 1 0
ask(110)
ask(110,level(1)) P2
1 0
1 1 0
response(P4)
P4
ask(1
10,leve
l(2))
resp
onse(P 4
) 1 1 0
X 1 0MATCH
P2
Esempio di query (4°)
P1
0 1 1
1 1 0
ask(111)
ask(111,level(1))
P6
ask(111,level(1))
response(P4)
1 1 1
1 1 1
PEER OFF-LINE
MATCH
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 exchangeexchange(a1, a2, r){commonpath = common_prefix_of(path(a1), path(a2));lc = length(commonpath);IF lc > 0
{commonrefs = union(refs(lc, a1), refs(lc, a2));refs(lc, a1) = random_select(refmax, commonrefs);refs(lc, a2) = random_select(refmax, commonrefs);... PA PB
PY
0 1 1
PX
PZ
0 1 0
PY
PWPYPX
PZ
PW
lc=2
PX
PW
refmax=3
refmaxè un parametro che
indica il numero massimo di
riferimenti per livello
Procedura di exchangel1 = length(sub_path(path(a1), lc + 1, length(path(a1)));l2 = length(sub_path(path(a2), lc + 1, length(path(a2)));
CASE l1 = 0 AND l2 = 0 AND length(commonpath) < maxlengthpath(a1) = append(path(a1), 0);path(a2) = append(path(a2), 1);refs(lc + 1, a1) = {a2};refs(lc + 1, a2) = {a1};
Caso 1: se i path dei peer sono uguali si introduce un nuovo livello
maxlengthè un parametro che indica
la dimensione massima dei path
Esempio di exchange (1°)
PA
0 1 1
PB
0 1 0
PB PA
Procedura di exchange
CASE l1 = 0 AND l2 > 0 AND length(commonpath) < maxlengthpath(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));
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
Banalmente se l1>0 e l2=0 vale una procedura specularealla precedente
Esempio di exchange (2°)
PA
0 1 1
PB
PB
PY
0 1 0
PX PA
PYPX
refmax=2
PA
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 DOIF online(peer(r2))
THEN exchange(a1, peer(r2), r+1);
Caso 3: se i path dei due peer sono differenti si considera il livello corrispondente al primo bit differente (che è l’ lc+1-mo). 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
Esempio di exchange (3°)
PA PB
PG
PF
0 1 1 0 0 1 0 0
PDPC
PE PH
0 1 0 0
0 1 0 1
0 1 1
0 1 1 1
0 1 1 0
0 1 0
PB
PA
AttenzioneCASE l1 > 0 AND l2 > 0 AND r < recmax,
r parametro di input della procedurarecmax valore di sistema (numero massimo di ricorsioni successive)
Sperimentalmente:recmax ottimo =2
PA PB
0 1 1 0 0 1 0 0
PDPC
PE
0 1 0 0
0 1 0 1
0 1 0
PK
0 1 0 0
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
(1-(1-p)refmax)k
probabilità di raggiungereun peer al livello successivo
probabilità effettuare unaricerca con successo
valore relativo:99,9%
valore relativo:99,2%
consideriamok livelli
Inizializzazione Come la P-Grid debba essere costruita in fase di
start-up è un problema che non viene trattato dagli algoritmi precedenti
Sarà tra poco pubblicato un lavoro riguardante queste tematiche. In breve ad 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 della nuova entry
Varie tecniche sono possibili: 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
Sperimentalmente èrisultata la miglior
soluzione
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 Gnutella-compatible 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)