La rete Kademlia
|
Connettersi alla rete
La
sola cosa necessaria per connettersi a questa rete è l'IP e la porta di un
qualsiasi client eMule già connesso. Questa operazione si chiama Boot Strap.
Una volta che il client è sulla rete chiede agli altri client di
determinare se può essere contattato senza problemi. Questo processo è molto
simile alla verifica ID alto/ID basso di un client sui server. Se è possibile
contattare il tuo client senza problemi ti verrà assegnato un ID ( simile all'ID
alto per i server eDonkey2000) e ti verrà dato lo stato open |
Se invece non sei liberamente raggiungibile ti verrà
assegnato lo stato firewalled. Dalla versione 0.44a di eMule in poi, la
rete Kademlia supporta una funzione 'Compagno' per gli utenti firewalled.
Compagni sono altri utenti connessi alla rete Kademlia che hanno lo stato Open e
fungono da tramite per le connessioni che gli utenti firewalled non possono
gestire.
Cercare sulla rete Kademlia
In questa rete non ha importanza che cosa cerchi. Sia che
cerchi per nome file, o per fonti di un download o per utenti, tutto funziona
grossomodo alla stessa maniera modo. Non ci sono server per tenere traccia di
client e dei file che questi condividono quindi le funzioni
che effettuerebbero i server devono essere
espletate da
ogni client partecipante nella rete - in sintesi ogni client è anche un
piccolo server.
Poiché ogni client è identificato da un valore di hash
unico, l'idea di Kademlia è di associare una certa responsabilità a ciascun
client basandosi appunto su questo hash. Ogni client nella rete Kademlia
funziona come un server per alcune parole chiavi o fonti. L'hash del client
determina le parole chiavi o le fonti specifiche. Dunque lo scopo di ogni tipo
di ricerca è trovare quei client che hanno la responsabilità per l'argomento
della ricerca in essere. Questo si realizza attraverso un calcolo molto
complesso della possibile distanza dal client obiettivo cercando attraverso
gli altri client di trovare la strada più breve per raggiungerlo.
Protocollo Kademlia in breve
Kademlia è un protocollo P2P di overlay ( ovvero che si poggia su
protocolli di più basso livello ) progettato per reti decentralizzare peer to
peer. Specifica la struttura della rete, regola la comunicazione tra i nodi e
come deve aver luogo lo scambio di informazioni. I nodi Kademlia comunicano tra
di loro usando il protocollo di trasporto UDP. Viene creata su una rete LAN/WAN
( come Internet ) una rete virtuale nella quale ogni nodo viene identificato da
un numero ("ID di Nodo" 1). Questo numero serve
non solo come identificativo ma viene usato dall'algoritmo Kademlia per altri
scopi.
Un nodo che vuole unirsi alla rete, deve prima superare un processo di avvio (bootstrap)
In questa fase il nodo deve conoscere l'indirizzo IP di un altro nodo (prelevato
dall'utente stesso o da un elenco) che sta già partecipando alla rete Kademlia.
Se il nodo che deve fare il bootstrap non ha mai partecipato alla rete, calcola
un numero identificativo casuale che non sia ancora stato assegnato ad un altro
nodo. Usa questo ID finché non lascia la rete.
L'algoritmo Kademlia si basa sul calcolo delle distanze tra due nodi
(2). La distanza è calcolata usando la metrica dell'or esclusivo
tra gli ID dei due NODI, ottenendo come risultato un numero intero.
Questa "distanza" non ha nulla a che vedere con condizioni geografiche,
ma indica la distanza tra i range di ID. Così può e spesso accade che ad esempio
un nodo Italiano ed uno Australiano siano vicini.
L'informazione sulla rete Kademlia è memorizzata nei così
detti "valori", ad ogni valore viene assegnato una "chiave".
Quando si cerca una chiave, l'algoritmo esplora la rete in passi successivi ed
ad ogni passaggio ci si avvicina sempre più alla chiave cercata finché il nodo
contattato non restituisce il valore oppure non ci sono più nodi da interrogare.
Il numero di nodi contattati durante la ricerca dipende solo marginalmente dalla
dimensione della rete: se il numero dei partecipanti alla rete raddoppia, allora
il nodo di un utente deve interrogare solo un nodo in più
per ogni ricerca, non il doppio di quelli che ha
contattato prima.
Ulteriori vantaggi si trovano in particolare nella struttura decentralizzata che
chiaramente aumenta la resistenza contro attacchi dos. Anche se un intero
insieme di nodi sono presi di mira
si avranno effetti molto limitati sulla rete, che supererà automaticamente il
problema isolando la rete intorno a questo nodi
problematici.
Kademlia oltre che per la rete omonima di eMule è stata usata per altre reti
di file sharing. Facendo ricerche per parole chiavi si possono trovare
informazioni sulla rete di file sharing così da poterle scaricare. Poiché non
c'è un riferimento centrale dove memorizzare un indice
dei file esistenti, e' un compito che viene diviso parimenti tra tutti i clients:
il nodo che possiede un file che vuole condividere, lo analizza e ne calcola un
numero (hash) che identificherà quel file sulla rete di file sharing. Gli hash e
gli ID devono avere la stessa lunghezza. Il client che
avvia la ricerca userà Kademlia per cercare l'ID del
client che ha la distanza minima dal filehash, quindi recupererà l'elenco dei
contatti che sono memorizzati in quel nodo. I contatti memorizzati nella rete
sono in continuo cambiamento poiché i nodi si connettono e si disconnettono.
Grazie ad una intrinseca ridondanza dell'informazione su
Kademlia questi contatti vengono replicati in diversi nodi.