31.05.2013 Views

progettazione e realizzazione in java di una rete peer to peer ...

progettazione e realizzazione in java di una rete peer to peer ...

progettazione e realizzazione in java di una rete peer to peer ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.2 KADEMLIA<br />

<strong>in</strong>terroga un suo pari, prima <strong>di</strong> riprendere la ricerca deve aspettare la risposta.<br />

Petar Maymounkov e David Mazi‘eres suggeriscono comunque <strong>di</strong> non aspettare<br />

l’arrivo <strong>di</strong> tutte le risposte ma <strong>di</strong> <strong>in</strong>iziare subi<strong>to</strong> a sondare i nuovi no<strong>di</strong> per rispar-<br />

miare tempo. Tuttavia, è nostra <strong>in</strong>tenzione, usare Kademlia anche per fornire<br />

serivizi <strong>in</strong> cui è <strong>in</strong><strong>di</strong>spensabile <strong>una</strong> latenza mol<strong>to</strong> bassa. Per ottenere prestazioni<br />

ancora migliori abbiamo, allora, pensa<strong>to</strong> <strong>di</strong> <strong>in</strong>trodurre <strong>una</strong> nuova funzionalità. Il<br />

primo nodo, <strong>in</strong>fatti, che chiameremo orig<strong>in</strong>e, oltre a comportarsi come descrit<strong>to</strong><br />

<strong>in</strong> [1], sceglie, tra i no<strong>di</strong> che deve contattare, un pre<strong>di</strong>let<strong>to</strong>. Ques<strong>to</strong> pre<strong>di</strong>let<strong>to</strong><br />

<strong>in</strong>oltrerà <strong>di</strong>rettamente la richiesta <strong>di</strong> ricerca a uno dei no<strong>di</strong> che sta per trasmet-<br />

tere come risposta all’orig<strong>in</strong>e. Ques<strong>to</strong> avviene iterativamente ad ogni sal<strong>to</strong> della<br />

ricerca: il pre<strong>di</strong>let<strong>to</strong> <strong>di</strong> prima generazione sceglie un pre<strong>di</strong>let<strong>to</strong> tra i suoi no<strong>di</strong>,<br />

mentre trasmette la propria risposta <strong>di</strong>rettamente all’orig<strong>in</strong>e. In ques<strong>to</strong> modo,<br />

nel caso la catena <strong>di</strong> pre<strong>di</strong>letti non si <strong>in</strong>terrompa, si arriva quasi a <strong>di</strong>mezzare il<br />

tempo <strong>di</strong> ricerca (ve<strong>di</strong> 2.3).<br />

Supponiamo, <strong>in</strong>fatti, che tra l’orig<strong>in</strong>e e il nodo cerca<strong>to</strong> ci siano 7 salti da<br />

fare. Col me<strong>to</strong>do standard sarebbero necessari 12 comunicazioni per permettere<br />

all’orig<strong>in</strong>e <strong>di</strong> conoscere l’<strong>in</strong><strong>di</strong>rizzo del nodo cerca<strong>to</strong>.<br />

comunicazioni = (<strong>di</strong>stanza − 1) · 2<br />

Invece, col nuovo sistema, <strong>in</strong> caso <strong>di</strong> successo, bastano 6 comunicazioni.<br />

comunicazioni = <strong>di</strong>stanza − 1<br />

Assumendo che tutte le comunicazioni abbiano uguale durata, si avrebbe un<br />

risparmio del 50% <strong>in</strong> term<strong>in</strong>i <strong>di</strong> tempo. In caso <strong>di</strong> <strong>in</strong>successo, d’altra parte, le pre-<br />

stazioni non verrebbero assolutamente variate da<strong>to</strong> che la ricerca cont<strong>in</strong>uerebbe<br />

<strong>in</strong> parallelo seguendo il me<strong>to</strong>do standard.<br />

Come scegliere il pre<strong>di</strong>let<strong>to</strong>? La risposta più imme<strong>di</strong>ata potrebbe essere sce-<br />

gliere un nodo a caso, ma ques<strong>to</strong> non porterebbe a nessun risulta<strong>to</strong> preve<strong>di</strong>bile.<br />

Da<strong>to</strong> che ques<strong>to</strong> miglioramen<strong>to</strong> è sta<strong>to</strong> concepi<strong>to</strong> per accelerare la ricerca, abbia-<br />

mo scel<strong>to</strong> <strong>di</strong> eleggere come pre<strong>di</strong>let<strong>to</strong> il nodo il cui ID è più vic<strong>in</strong>o all’ID del nodo<br />

cerca<strong>to</strong>. Un altro approccio potrebbe <strong>in</strong>vece cercare <strong>di</strong> privilegiare il buon esi<strong>to</strong><br />

della ricerca piut<strong>to</strong>s<strong>to</strong> che puramente la velocità. Petar Maymounkov e David<br />

Mazi‘eres, stu<strong>di</strong>ando la <strong>rete</strong> Gnutella 3 , hanno scoper<strong>to</strong> che statisticamente i no<strong>di</strong><br />

che rimangono on-l<strong>in</strong>e a lungo hanno molte probabilità <strong>di</strong> rimanere attivi ancora<br />

mol<strong>to</strong> tempo. Sulla scorta <strong>di</strong> ques<strong>to</strong> risulta<strong>to</strong> si potrebbe scegliere come elet<strong>to</strong> il<br />

nodo che è attivo da più tempo.<br />

3 Cfr. [9]<br />

25

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!