Lezione n.3 Gnutella 0.4 e 0.6 Kazaa Laura Ricci 27/2/2007

Università degli Studi di Pisa
Dipartimento di Informatica
Lezione n.5
Bloom Filters
Materiale didattico
Tutorial sulla pagina del corso
Laura Ricci
7/3/2012
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
1
SET MEMBERSHIP PROBLEM
Consideriamo l'insieme S={s1,s2,...,sn} di n elementi scelti da un universo U molto
grande, si vuole rispondere a query del tipo “K è un elemento di S?”
Implementare la funzione f che restituisce vero o falso a seconda della
presenza o meno di k nell’insieme dato
• ridurre tempo di risposta/spazio per la rappresentazione degli elementi
• approssimazioni del problema
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
2
CHAIN HASHING


tecniche di hashing diverse a seconda che si voglia ottimizzare lo spazio/il
tempo/l'accuratezza della soluzione

soluzioni basata su modello balls e bins: tirare m palle in n recipienti, ogni
tiro indipedente dagli altri
chain hashing:

considero una struttura di m posizioni (bins) e utilizzo una funzione hash
per inserire gli n elementi (balls) dell'insieme S in una delle posizioni

random hash function; locazione di ogni elemento scelta in modo
indipendente ed identicamente distribuito

look-up non approssimato

tutti gli elementi associati allo stesso bin collegati a lista

tempo atteso di ricerca proporzionale al numero di elementi per bin

problema: rappresentazione compatta dei bins (molti vuoti)

trade off: numero di bins/tempo di ricerca maggiore
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
3
FINGERPRINT HASHING

Obiettivo: ottimizzazione dello spazio

Utilizzare la funzione di hash per calcolare un fingerprint di ogni elemento

risparmio di spazio: un fingerprint di 32 bits per un elemento di 64
bits

Look-up: ricerca nella lista dei fingerprints

approximate set membership problem

falsi positivi dovuti a fingerprint uguali per elementi diversi

probabilità di falsi positivi dipende dal numero di bit usati per il
fingerprint

necessari almeno log n bits, per garantire bassa probabilità
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
4
APPROXIMATE SET MEMBERSHIP PROBLEM




consideriamo l'insieme S={s1,s2,...,sn} di n elementi scelti da un universo U
molto grande,
si vuole rispondere a query del tipo “x è un elemento di S?”
problema: scegliere una rappresentazione degli elementi di S in modo da

mantenere contenuto il tempo di risposta delle query

ottimizzare lo spazio per la rappresentazione degli elementi

per risparmiare spazio si è disposti anche a rinunciare alla
correttezza completa del risultato

ammessi falsi positivi
S può essere

un insieme di parole chiave che descrivono files condivisi da un peer,
prese dall'universo di tutte le parole chiave (Gnutella 0.6)

l'insieme dei pezzi di un file posseduti da un peer (Bittorrent)

l'insieme delle 'crackable password', scopo: indicare all'utente quali psw
sono da evitare
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
5
APPROXIMATE SET MEMBERSHIP PROBLEM
Se si è disposti a rinunciare ad un certo grado di accuratezza nelle operazioni
di look up, a favore dell’efficienza in occupazione di memoria della
rappresentazione dell’insieme
Proposte diverse strutture dati a seconda del trade off tra
• lo spazio richiesto
• la probabilità di falsi negativi
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
6
BLOOM FILTERS: COSTRUZIONE
Dati
●
un insieme di S={s1,s2,...,sn} di n elementi (qualsiasi)
●
un vettore B di m (n<<m) bits, bi ∈ {0,1}
●
k funzioni hash indipendenti h1, …, hk, ogni hi: S ⊆ U →[1..m], che producono
un valore distribuito uniformemente nel range [1..m].
Bloom Filter B[1..m], costruzione
●
per ogni x∈ S, B[hj(x)]=1, ∀ j = 1,2,...k
●
un bit in B può essere settato ad 1 più di una volta
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
7
BLOOM FILTERS: LOOK UP
Per verificare se y appartiene all’insieme S mappato sul Bloom Filter, applicare
le k funzioni hash ad y

y∈S se bhi(y)=1, ∀ i=1,..k , tutti i bit uguali ad 1 l'elemento appartiene

all'insieme
se almeno un bit = 0, l'elemento non appartiene all'insieme
Possibilità falsi positivi
le funzioni hash calcolate su valori diversi
possono portare allo stesso risultato
Nella fase di look up di un elemento
non appartenente all'insieme, una funzione
può restituire l’indice di una posizione
impostata a 1 per un vero positivo
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
8
PROBABILITA' FALSI POSITIVI




consideriamo un insieme di n elementi mappato su un vettore di m bits
mediante k funzioni hash
assunzione base: funzioni hash random ed indipendenti

paradigma balls e bins: come lanciare k×n palle in m recipeinti
obiettivo: calcolare la probabilità di falsi positivi
calcoliamo prima la probabilità che, dopo che tutti gli elementi sono stati
mappati sul vettore, uno specifico bit del filtro sia ancora uguale a 0
Approssimazione derivata dalla definizione di e
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
9
PROBABILITA' FALSI POSITIVI





assumiamo ora di aver costruito un bloom filter e, per semplificare
l'analisi, consideriamo che una frazione di
bits sia 0.
Ricerchiamo un elemento:se non appartiene all'insieme, applicando le k
funzioni ottengo un falso positivo se per k volte individuo un bit a 1
Probabilità di falsi positivi
la probabilità dipende da due fattori

m/n: numero di bit utilizzati per ogni elemento dell'insieme

k: il numero di funzioni hash utilizzate
Fissato m/n, due fattori in competizione per la determinazione di k

diminuendo k aumenta il numero di 0 e quindi la probabilità di
individuare un falso positivo, ma....

Aumentando k aumenta la probabilità di trovare un elemento uguale a 0
per un falso positivo
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
10
PROBABILTA' FALSI POSITIVI

Fissato il rapporto m/n, probabilità di falsi negativi prima decresce, poi
aumenta

es: m/n=2, pochi bits per elemento, non posso usare 'troppe funzioni
hash', perchè riempirebbero il filtro di 1

es: m/n=5, minima probabilità di falsi negativi con più funzioni hash
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
11
PROBABILITA' FALSI POSITIVI


Fissato k, il numero di funzioni hash, la probabilità di falsi positivi decresce
esponenzialmente all'aumentare di m, numero di bits nel filtro
Per valori di m/n bassi (pochi bit per elemento), la probabilità è più alta per
valori di k alti
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
12
PROBABILITA' FALSI POSITIVI
Un Bloom filter diventa efficace quando m= c × n, con c costante di
valore basso, ad esempio c = 8
in questo caso con 5-6 funzioni hash si ottiene una bassa bassa di
falsi positivi
Buone prestazioni con un numero ragionevole di bit
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
13
PROBABILITA' FALSI POSITIVI



Trade-off
tra
spazio
occupato/numero
di
funzioni
hash
utilizzate/probabilità di falsi positivi
n è dato, fissato m si fissa il arpporto m/n che indica il numero di bits
impiegati per ogni elemento dell'insieme.
fissato n ed m

si vuole determinare quale è il valore di k che minimizza la probabilità
di falsi positivi

si calcola la derivata della funzione nel lucido precedente rispetto a k e
si ottiene il minimo (ln2 ≈ 0.7)
A questo valore corrisponde un valore della probabilità uguale dei falsi positivi
uguale a
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
14
PROBABILITA' FALSI POSITIVI



Probabilità al variare degli elementi dell'insieme, con k ottimo e m variabile al
variare di n
Scala logaritimica
Se il numero di bit del filtro non è sufficiente la probabilità cresce
esponenzialmente
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
15
PROBABILITA' FALSI POSITIVI
Con i valori ottimali calcolati in precedenza, la probabilità che uno dei bit sia
rimasto a 0 dopo l'applicazione delle k funzioni è
i valori ottimi si ottengono quando la probabilità che un bit sia rimasto a
0 dopo l'applicazione delle k funzioni agli n elementi è ½
un bloom filter 'ottimale' si presenta come una 'random bitstring '
in cui
una metà dei bit, scelti in modo casuale uniforme, sono a 0
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
16
BLOOM FILTERS: OPERAZIONI


Dati due Bloom Filters, B1 e B2 che rappresentano, rispettivamente gli insiemi
S1 ed S2 mediante lo stesso numero di bits e lo stesso numero di funzioni hash,
il Bloom filter che rappresenta S1 ∪ S2 è ottenuto calcolando l'OR bit a bit di
B1 e B2
Eliminazione degli elementi dall'insieme: non è corretto azzerare tutti i bit
corrispondenti all'applicazione delle k funzioni hash all'elemento eliminato

Counting Bloom Filters: per ogni entrata del Bloom Filter un contatore,
invece di un singolo bit.

utilizzati per agevolare la rimozione di elementi da un Bloom Filter

al momento dell'inserzione, aumento il contatore

al momento dell'eliminazione, decremento il contatore
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
17
BLOOM FILTERS: OPERAZIONI

Dati due Bloom Filters, B1 e B2 che rappresentano, rispettivamente gli
insiemi S1 ed S2 mediante lo stesso numero di bits e lo stesso numero di
funzioni hash

il Bloom filter che rappresenta S1 ∩ S2 è approssimato dal Bloom
Filter ottenuto calcolando l'and bit a bit dei due Bloom Filters

Infatti se un bit assume valore uguale ad 1 in entrambe i Bloom filters,
questo può accadere perchè

quel bit corrisponde ad un elemento ∈ S1 ∩ S2 e quindi viene
settato ad 1 in entrambe i filtri

quel bit corrisponde sia ad un elemento ∈ S1 - (S1 ∩ S2) che ad un
elemento ∈ S2 - (S1 ∩ S2) e quindi non corrisponde ad un elemento
nell'intersezione
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
18
BLOOM FILTER: APPLICAZIONI



Approximate Set Reconcilation (BitTorrent)
Bloom Filter Based Routing, implementato in Gnutella 0.6
diverse altre applicazioni....
Bloom Filter routing
in Gnutella
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
19
BLOOM FILTER ROUTING

Bloom Filters based routing delle query

semplice implementazione in Gnutella 0.6

implementazione più sofisticata: Attenuated Bloom Filters

un nodo

possiede un vettore di bloom filter per ogni connessione c dell'overlay

il primo filtro nel vettore sintetizza le risorse pubblicate dal vicino n
raggiungibile tramite c

l'i-esimo filtro è ottenuto dalla fusione dei filtri di tutti i nodi a
distanza i (= numero di hops) raggiungibilii tramite n

utilizzati per guidare il routing

attenuated: ai diversi livelli di filtering si attribuiscono pesi
decrescenti esponenzialmente
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
20
ATTENUATED BLOOM FILTERS
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
21
ATTENUATED BLOOM FILTERS

Valutazione di una query rispetto ad un Attenuated Bloom Filter

esempio: nell'attenuated Bloom Filter FAB “Uncle Jhon's Band” vale
1 /4 +1/8 = 3/8 poichè è probabile che la query venga risolta
attraverso il nodo B in 2 o in 3 passi

Query Routing Protocol:


depth first search guidata
attenuated bloom filters
dalle
valutazioni
restituite
dagli
Update Protocol:

Flooding del filtro modificato con TTL=d

Ottimizzazioni per diminuire il numero di messaggi

Mantenere i filtri dei nodi vicini ed inviare solo i bits modificati.
Procedura ripetuta ricorsivamente dai nodi vicini
Dipartimento di Informatica
Università degli Studi di Pisa
Gnutella 0.6, Kazaa
Laura Ricci
22