Copy Link
Add to Bookmark
Report

eMule: Guida a Kademlia

emule's profile picture
Published in 
emule ita
 · 16 Jun 2019

GUIDA A KADEMLIA

Le versioni di eMule a partire dalla 0.40 hanno aggiunto la possibilità di collegarsi anche alla rete “kademlia” oltre che ai classici server.
Regna molta confusione sull’argomento, perciò facciamo un passo indietro.
Il funzionamento di eMule può essere diviso in due parti: ricerca della fonti e scambio effettivo dei file tra i client.
La ricerca della fonti avviene cercando sui server presenti nella lista server del vostro client e attraverso lo scambio fonti (source exchange) con il quale in pratica si saltano i server e si ottiene una maggiore velocità di ricerca: basta che un server vi dia almeno un client valido ed ecco che chiedendo a lui la lista delle fonti conosciute le trovate tutte in un colpo solo o quasi (vedi Source Exchange).
In seguito quando avete ottenuto dal server l’elenco dei client che vi interessano, la richiesta di entrare nella loro coda di upload viene fatta dal vostro eMule direttamente, così come il trasferimento dei file avviene direttamente dal vostro pc al loro senza più disturbare i server, che vengono usati solo come un elenco telefonico, in cui non si cerca per nome e cognome ma per hash del file che dovete scaricare.

Kademlia a cosa serve?
Kademlia cerca le fonti senza passare attraverso i server, ma utilizzando solo una rete costituita dagli stessi client eMule di altri utenti.
Ecco perciò che si parla di rete serverless, cioè senza server: gli hash dei file non devono più essere depositati sui server ogni volta che fate partire eMule, ma circolano tra i vari client secondo certi criteri matematico/statistici che ne ottimizzano il funzionamento.
Il nome Kademlia è quello dato a questo insieme di algoritmi dai suoi inventori Petar Maymounkov e David Maziéres dell'università di New York.

Detto questo si capisce come mai Kademlia NON fa scaricare più velocemente e di solito NON trova più fonti rispetto al collegamento ai soli server, questo perché le code restano le stesse di sempre (e di conseguenza anche i tempi di attesa), e lo scambio fonti rende quasi invisibile la differenza fra le due reti una volta che avete ottenuto almeno qualche client valido, perché lo scambio diretto salta sia i server che Kademlia. Al massimo Kademlia vi fa trovare un po’ prima tutte le fonti per quel file, ma lo scopo di questo sistema non è accelerare la rete, bensì irrobustire la rete contro il suo unico punto debole: i server.
Già in passato più volte il network è andato in crisi per l’eccessivo numero di utenti o qualche difetto software e si sono trovate soluzioni sempre nuove per alleggerire il carico dei server (tra cui fondamentale l’evoluzione di eMule e dei server modificati da Lugdunum, ora anche per windows, che riescono a reggere 300 mila utenti invece dei 10 mila della versione originale).
Oggi ancor più rischiosa diventa la posizione dei server con la spada di Damocle di eventuali procedimenti legali dovuti alle nuove leggi sui copyright in circolazione in vari Paesi del mondo.
I 30 server più grossi contengono oltre il 90% degli utenti, senza di essi si ferma tutto.

Kademlia vuole sostituire i server, svolgendone le stesse funzioni ma distribuendo lo “sforzo” su tutta la rete.

Perché attivare Kademlia?
Il nuovo Network per funzionare ha bisogno di client che facciano da “ponte” fra la rete con i server e la nuova rete, in modo che coloro che si collegano anche solo a kademlia possano trovare almeno una fonte per ogni file esistente per iniziare a scaricarlo (e trovare tutte le altre grazie allo scambio fonti). Ogni client collegato ad entrambe le reti infatti tiene conto di quanti sono in coda per i vari file che si stanno condividendo e contribuisce al numero di risposte per le ricerche effettuate su kademlia, popolando di risultati la neonata rete.
Sembra proprio che almeno per questa volta non dobbiate domandarvi cosa può fare la rete per voi, ma cosa potete fare voi per la rete.

Quali sono gli svantaggi di collegarsi anche a kademlia?
In pratica nessuno. Una piccola quantità di banda viene usata per comunicare con gli altri client ma non c’è nessun incremento visibile rispetto al vecchio eMule (la banda persa è misurata nel margine inferiore della finestra, tra parentesi tonde, dove c’è scritto up e down; se non vedete le parentesi dovete attivare Preferenze --> Connessione --> mostra overhead).


Procedura di configurazione e prima connessione a kademlia (da farsi una volta sola)

Prima di tutto controllate che in Preferenze --> Connessione --> “Network” ci sia il segno di spunta sia su Kad che Ed2k.

Sempre in Preferenze --> Connessione c’è la possibilità di cambiare la porta UDP di kademlia, di default 4673, che dovete aprire sul router o sul firewall insieme alle altre 2 per non essere Firewalled (equivalente ad ID Basso con i server).

Come prima volta dovete procurarvi un indirizzo valido di un client già collegato a kademlia per poter fare un "node lookup”, cioè una ricerca nodi e recuperare la lista di contatti che vi compariranno nella finestra Kademlia.

Procedura di bootstrap, primo metodo:
deve essere eseguita mentre state già scaricando e siete collegati ad un server, quindi se è la vostra prima installazione di emule seguite la procedura di configurazione, cercate un file a caso molto diffuso e iniziate a scaricarlo, aspettando 5 minuti perché tutte le fonti vengano contattate.

eMule: Guida a Kademlia
Pin it

Il metodo più semplice consiste nel premere su Bootstrap nella finestra Kademlia, lasciando evidenziata la seconda opzione ("from known clients"o "dai client conosciuti"). In questo modo Emule cercherà in automatico un client valido fra tutti i client a cui si è collegati da cui iniziare il collegamento.

eMule: Guida a Kademlia
Pin it

Se avete Emule vecchiofino alla versione 0.41a10 (sconsigliata con win98/ME per una serie di bug) andate sulla finestra Kademlia e premete Connetti, non succederà nulla apparentemente ma in realtà avete abilitato una nuova voce di menù.
Andate sulla finestra Trasferimenti e fate doppio click col mouse su un file qualsiasi tra quelli che state scaricando (prendete per esempio quello con più fonti, non serve che stia trasferendo byte): si aprirà la lista fonti per quel file. Cercate nella colonna “Fonti” un client con versione 40f o superiore, fate tasto destro su quella riga e premete sulla voce bootstrap, vedrete che un po’ alla volta si riempirà la lista contatti di kademlia.
Se non succede nulla provate di nuovo con un client diverso.

Procedura di bootstrap, secondo metodo:
inserite nella finestrella Bootstrap IP e Porta di un qualunque client già collegato a kademlia (un metodo per recuperarne uno è raggiungerci in chat e scrivere !bootstrap, vi risponderà in automatico un computer con ip+porta validi) e poi premete il pulsante Bootstrap.

Kademlia salva la lista dei contatti nel file nodes.dat quindi non dovrete preoccuparvi perché al riavvio vi collegherete rapidamente.

Come faccio a sapere che Kademlia funziona veramente?
Per verificare che tutto funzionicorrettamente controllare le seguenti cose:
1) nella barra di stato all’estremo inferiore di eMule vedrete scritto ED2K:Connesso|KAD:Connesso, se così non è riprovate a fare il bootstrap da un altro client.
2)Nella finestra Kademlia vedete un certo numero di contatti con il pallino verde a fianco, se non vedete alcun contatto riprovate la procedura di bootstrap.
3) Nella finestra server --> Le mie informazioni alla voce KAD Rete dovete vedere scritto OPEN e NON "Firewalled", se così non è tornate alla finestra Kademlia e premete “Retest Firewall”. Se il Firewalled permane dovete riconfigurare il vostro router o firewall aprendo la 4673 UDP . Sempre in "Le mie informazioni" controllate alla voce ED2K Rete di avere ID Alto (altrimenti eMule scaricherà male, vedi ID basso).
Kademlia ufficialmente non supporta ancora i Firewalled ma di fatto sembra funzionare ugualmente con un semplice accorgimento: quando aprite eMule prima collegatevi a mano ad un server e solo quando avete ottenuto dal server un ID collegatevi a kademlia premendo l’apposito pulsante connetti nella sua finestra.
4) Se fin qui è tutto ok testate la ricerca su kademlia andando nella pagina “cerca” e selezionando in “tipo di ricerca” (method in inglese), Kademlia invece di Server. Mettete una parola chiave qualsiasi, per esempio di uno dei file che state scaricando e avviate la ricerca: in al massimo 15-20 secondi dovreste avere almeno 1 risultato (se il file non è troppo raro, ecco perché bisogna collegarsi a tutte e 2 le reti, migliorando di fatto anche kademlia).
Se la ricerca non funziona cambiate parola chiave oppure ricontrollate i punti dall’uno al tre. Dovete essere "Open" per non avere problemi.

Ricordate che i contatti memorizzati da eMule sono altri client connessi a Kademlia in giro per la rete, quindi se non usate la rete kademlia per diverso tempo è possibile che nessuno di quei client quando fate ripartire il mulo sia ancora attivo: dovete ripetere la procedura di bootstrap.


Procedura di connessione abituale

Per collegarvi simultaneamente sia alla rete serve che a Kademlia all’avvio di eMule premete il solito pulsante colorato “Connetti” in alto a sinistra.
In Preferenze -- > Connessione potete anche settare l’opzione “Connettiti automaticamente all’avvio” così ogni volta che parte il mulo si collega da solo. (Se dovesse faticare ad entrare sui server potete sempre fare doppio click a mano nella lista server)

Se siete collegati ad entrambe le reti eMule userà sia i server che kademlia per ottenere sempre le massime prestazioni, non dovrete preoccuparvi di altro.

Per usare correttamente Kademlia potete fermarvi a leggere qui.
Ciò che segue entra nel dettaglio tecnico e risponde a qualche curiosità che spesso viene chiesta sul canale #emule-italian (vedi Esperti Online)

Quali altre differenze ci sono nelle nuove versioni con Kademlia?
Oltre alle differenze già viste se andate alla estrema destra della finestra file condivisi (trascinando la barra di scorrimento orizzontale verso destra) noterete una nuova colonna “Files ed2k|kad” che contiene di solito Si|Si oppure Si|No.
La spiegazione è semplice: il primo Sì dice che avete dato al server la lista dei vostri file condivisi quando vi siete collegati (può essere No solo se non usate i server ma solo Kademlia), il secondo Si dice che il file che state condividendo viene visto anche dagli utenti Kademlia.
La condivisione dei file sulla nuova rete infatti adesso si chiama Publishing (pubblicazione) e non è istantanea come con i server (per evitare di sovraccaricare gli altri client e la vostra linea), e deve essere ripetuta ogni 5 ore per tutti i vostri file.
I file vengono pubblicati progressivamente comunicando il loro hash ad altri client presenti nella vostra lista contatti. La scelta non è casuale, voi pubblicate un file presso quegli eMule che hanno hash “vicino” a quello del file, così chi cerca quel file manderà la richiesta solo a quella precisa categoria di client il cui hash è “vicino” a quello del file.
L’hash di un file o del vostro client (generato in modo casuale alla prima apertura di eMule) viene infatti utilizzato per calcolare delle “distanze” virtuali.
Queste distanze sono calcolate con lo XOR (OR esclusivo) dei bit degli hash che dovete confrontare es: 101101 XOR 110111 = 011010 cioè il risultato è 1 solo se uno dei due bit è 1, non entrambi; per questo l’algoritmo Kademlia è stato definito dagli autori “A peer-to-peer Information System Based on The Xor Metric”. Questa distanza tra voi e gli altri è quella che vedete nella finestra Kademlia con una sfilza di 0 e 1 a fianco di ogni riga.
Se ordinate questa colonna “Distanza” vedrete che gli 0 a sinistra generano una scaletta man mano che scorrete la lista verso il basso: la cosa non è casuale.
Il vostro eMule cerca di collegarsi a client (massimo 450) che abbiano hash distribuiti in modo da coprire le distanze che gli servono in modo uniforme, così da consentire una più rapida ricerca dei risultati e una maggiore efficienza (il vostro client deve avere almeno un contatto per ogni gruppo di sottoalberi diversi dal proprio se pensate ai client come allocati in un virtuale albero binario di ricerca… ma non spacchiamo il capello in 4, per i curiosi Kademlia Description pagina 3) .

Nella finestra Kademlia la colonna “Tipo” sta ad indicare il numero di mancate risposte di quel client ai nostri collegamenti (analogo a “fallimenti” della finestra Server), dopo 2 fallimenti il contatto viene cancellato, Tipo 0 significa che quel client ci ha risposto sempre.
La colonna “Contatti” indica se l’ultima volta quel client ci ha risposto o meno (infatti Contatto = No ha sempre almeno Tipo = 1).

Un’altra differenza che potete apprezzare nella finestra trasferimenti è la presenza nella colonna “Dimensione” dell’origine delle varie fonti ricevute (dovete espandere la lista fonti con il doppio click sul file). Può comparire Ed2k Server (la fonte vi è arrivata in seguito ad una richiesta ai server), Source Exchange (la fonte vi è arrivata tramite richiesta diretta di scambio fonti con altri client), Passive (la fonte aveva chiesto di entrare in coda da voi per scaricare, voi non la conoscevate ed emule l’ha aggiunta automaticamente alla lista come fonte per quel file), kad (la fonte vi è arrivata tramite la ricerca di kademlia sulla nuova rete).
E’ un modo per analizzare l’efficienza del sistema.

Buon Download ;)

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT