• Non ci sono risultati.

L'obiettivodiquestatesièquellodides rivereindettaglioilfunzionamentodella struttura dati he sta alla base della rete Kad

N/A
N/A
Protected

Academic year: 2021

Condividi "L'obiettivodiquestatesièquellodides rivereindettaglioilfunzionamentodella struttura dati he sta alla base della rete Kad"

Copied!
37
0
0

Testo completo

(1)

DIPARTIMENTODIINGEGNERIADELL'INFORMAZIONE

CORSO DILAUREATRIENNALE ININGEGNERIADELL'INFORMAZIONE

TESI DI LAUREA

PARIKAD: KAD ROUTING TABLE

RELATORE: Ch.mo Prof. Eno h Peseri o Ste hini Negri De Salvi

CORRELATORE: Ing. Paolo Bertasi

LAUREANDO: Christian Pi olo

Anno A ademi o 2009-2010

(2)
(3)

per le matite e i olori.

(4)
(5)

Kad è indubbiamente una delle po he DHT he si è estesa su una osì ampia

s ala, an he grazie alla sua integrazione in programmi di le sharing di grande

su esso quali eMule/aMule eMLDonkey: ogni giorno Kad hapiù di1,5 milioni

diutenti onnessi simultaneamente.

L'obiettivodiquestatesièquellodides rivereindettaglioilfunzionamentodella

struttura dati he sta alla base della rete Kad; si farà in parti olare riferimento

alprogetto PariKad, ilquale implementainJava una rete Kad sviluppata peril

progetto PariMulo diPariPari[1℄. La strutturadati allabase diPariKad sibasa

fedelmente sull'implementazionediKad in eMule 0.49 [2℄.

(6)
(7)

Sommario v

1 Introduzione: il progetto PariPari 1

2 Ar hitettura Kad 3

2.1 Network Proto ol . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 Spazioa 128-bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Routing Table 8 3.1 Int128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2 KadConta t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2.1 GeoLo ator . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3 RoutingBin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.4 RoutingZone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.4.1 Struttura della RoutingTable . . . . . . . . . . . . . . . . 15

3.5 Taskdi Mantenimento . . . . . . . . . . . . . . . . . . . . . . . . 19

3.5.1 OnSmallTimer . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5.2 OnBigTimer . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5.3 Consolidate . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4 PariKad 22 4.1 Thread prin ipale . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.2 Sviluppi futuri. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.2.1 Vulnerabilità della rete Kad . . . . . . . . . . . . . . . . . 23

5 Con lusioni 25

A Relazione PariKad - eMule 26

(8)

Bibliograa 27

Elen o delle gure 28

Elen o delle tabelle 29

(9)

Introduzione: il progetto PariPari

PariPari è un progetto ambizioso, portato avanti dagli studenti dell'Università

di Padova, il quale ha ome obiettivo la reazione di un software libero s ritto

in Java, he raggruppi al suo interno appli azioni di le-sharing, messaggisti a,

video onferenza e permettaall'utentedi usufruire di interessanti servizi tra ui

quellidi WebServer, DBMS 1

eDHT 2

.

L'idea innovativadiquesto progetto èquelladifar gestiredaun'appli azione

uni a molti programmi he utilizzano Internet e he, no adora, hanno sempre

lavoratoinmodoindipendentel'unodall'altro. Ilneèquellodiutilizzarelarete

nelmodo più e iente: l'utente nale potrà, adesempio, parlareuidamente in

video onferenza,s ari aremoltiledallareteeDonkeye hattare onsuoiami i,

senzadovere perforzainterrompereunadiqueste treattività, omespessoinve e

a ade on le appli azioni attuali.

PariPari è suddiviso in diversi plugin ognuno dei quali ri opre un ompito

pre iso e permette il funzionamento di altri plugin o estende nuove funzionalità

al programma. Il plugin PariMulo, in parti olare, si o upa di riprodurre un

lient eMule permettendo di eseguire ri er he nella rete eDonkey per s ari are e

ondividere le.

In questo ontesto siinseris eil nostrolavoro; PariMulo,infatti,non suppor-

tava no adora l'utilizzo della rete Kad per la ri er a e la pubbli azionedi le.

Ladierenzasostanzialetralarete eDonkeyelarete Kadstanelfatto he, men-

tre la primaè una rete entralizzata, la se onda èuna rete de entralizzata. Kad

1

DatabaseManagementSystem

2

DistribuitedHashTable

(10)

sfrutta la potenza di tutti gli utenti onnessi a questa rete per ondividere le e

funzionareininterrottamente, senza doverdipendere daun uni o server entrale.

L'integrazione della rete Kad nel plugin di PariMulo ha portato alla nas ita

di PariKad. PariKad si può sostanzialmente dividere in due grossi blo hi:

una prima parte legata allo s ambio di messaggi tra utenti, ne essario per il

funzionamento globale di Kad, e una se onda parte he si o upa di gestire la

struttura dati, tenendo organizzati i ontatti della rete. Questa tesi si pregge

ome obiettivoquellodi des rivere inmodoesauriente quest'ultimo punto.

(11)

Ar hitettura Kad

L'obiettivodiquesto apitoloèquellodispiegarei on etti hestannoallabasedi

ogniDHT(DistributedHash Table)tra uiKad, unaDHTusataperretipeer-to-

peer eideatadaPetar Maymounkov eDavidMazièresdellaNew YorkUniversity

[4℄. É ne essario introdurre al unitermini fondamentali:

peer: un punto di onnessionenella rete Kad.

lient: un'appli azione (peresempio ome eMule/aMule) in gradodi on- nettersialla rete Kad; il omputer su uiviene eseguitaquest'appli azione

risulteràessere un peer.

hash ID:si intende un valore a128 bit(16 byte) he identi a inmaniera

quasi univo a qualsiasi oggetto nella rete Kad, siaesso un oggettopassivo

(keyword, le, et .) o un peer. Per i peer, l'hash ID è reato in maniera

pseudorandom all'avvio del lient, mentre per gli oggetti passivi si ottiene

attraverso il al olodel MD4 suparti olari aratteristi he dell'oggetto.

nodo: si intendeuna parti olare zona nellarete Kad in ui tuttigliogget- ti/peerpresentihanno lostessohash ID; inogninodo ipossono esserepiù

peer e oggettipassivi he possiedono lostesso hash ID.

onta t: un peer onos iuto he viene tenuto in memoriaegestito per usi

futuri.

Quindi un utente, he avvia il proprio lient eMule, fa he il suo omputer

diventi un peer della rete Kad. Appena questo peer si mette in ontatto on

(12)

altripeer della rete e viene a ettato, i suoi dati vengonoimmagazzinati ed esso

diventa un onta t per l'utente he ne hasalvato i dati.

Figura 2.1: rete entralizzata Figura2.2: rete de entralizzata

Ipuntidiforzadiuna DHTsonolade entralizzazione, ioèlapossibilitàdi

permetterelos ambioinformazionitravariutentisenzal'usodiunserver entrale

di oordinamento(gura2.1e 2.2), las alabilità,la qualepermetteallarete di

funzionare e ientemente on entinaia o milioni di nodi, e lastabilità, poi hé

la ontinua onnessione di nuovi peer, la loro dis onnessione dalla rete e i loro

problemidi omuni azionenon in ianoil funzionamentoglobale dellaDHT. Ne

onsegue he unabuonaDHTdevefornireunottimometodoperfare omuni are

ivari lienttradiloroeun'e ientestruttura dati he permettadimemorizzare

i ontattied eseguire velo emente azioni ome lari er adi le, keyword, et .

Questatesi nonhalos opodispiegareilme anismodi omuni azioneusato

tra i vari peer nella rete Kad, tuttavia si è s elto di riportare, per ompletezza,

una breve e sempli espiegazione ariguardo.

2.1 Network Proto ol

Kad usa il proto ollo UDP per gestire le omuni azioni tra i vari peer. Il pro-

to ollo UDP permette di s ambiare messaggi in maniera molto velo e, on un

minimo overhead e senza la ne essità di eseguire un handshake prima dell'inizio

della omuni azione. Se un lient A vuole inviare un messaggio ad un suo on-

(13)

tatto B, è su iente he A invii il pa hetto all'indirizzo IP di B alla porta in

ui B è in as olto per i pa hetti UDP. Se B è attivo, allora legge il messaggio

e se opportuno risponde, altrimenti A, non ottenendo repli he, può de idere di

mandare il suo messaggio adaltri lient, he forse sono in grado disoddisfare la

sua ri hiesta.

Risulta evidente he uno dei primi problemi he Kad deve gestire è ome

permettere ai vari lient di rendersi onto he un loro ontatto si è dis onnesso

dalla rete. La soluzione sempli e ed e a e è quella di usare un timer, il quale

va a veri are dopo ogni intervallo di tempo prestabilito se il ontatto è an ora

attivoattraverso uno s ambiodi pa hetti UDP ditipoPING/PONG(se arriva

unpa hettoPINGbisognarispondere onunpa hettoPONG).Sedopoal une

volte hesiè er atodi omuni are on il ontattoesso ontinuaanonrispondere

sipro ede allasua eliminazionedallanostra RoutingTable, lastruttura dati he

sio upadi gestire inostri ontatti.

Ogni pa hetto UDP inviato nella rete Kad è ontraddistinto dal primo by-

te hiamato ID. eMule/aMule osì ome PariKad utilizzano il byte 0xE4 per

pa hetti standard e 0xE5 per pa hetti ompressi. Il byte su essivo denis e

inve e la funzione he ha quel pa hetto, ioè se è un pa hetto per ri hiedere

le, per omuni arequal osa, o altro. I byte he seguono dipendonoovviamente

dapa hetto apa hetto.

Per ompletezza è importante ri ordare he negli ultimi anni eMule ha svi-

luppatouna te ni a hiamataProto ol Obfus ation he ha l'obiettivodi riptare

ipa hettiinus ita (ede riptarequelliinentrata) osi hé gliISP 1

nonsiano in

grado di blo are i pa hetti della rete Kad 2

. Di onseguenza, ilpa hetto rip-

tato non inizia più on i byte 0xE4 o 0xE5, ma sembra una sequenza asuale di

byte. Tuttaviaquestopa hetto,unavoltade riptato,tornaadaverelastruttura

lassi asopra des ritta.

Un lient della rete Kad è quindi aratterizzato da due porte utilizzate per

funzioni diverse. Una porta UDP he è utilizzata per s ambiare messaggi re-

lativi a operazioni standard (ri er a, pubbli azione le, ...) e di mantenimento

(ping/pong, pa hetti dihello, ...) e una porta per pa hetti TCP utilizzataper

1

InternetServi eProvider.

2

Il tra o generato da programmi peer-to-peer viene infatti spesso blo ato per evitare

rallentamentisullareteInternetglobale.

(14)

s ari are e ondividere i propri les on si urezza. eMule usa ome standard la

porta UDP 4672e TCP 4662, maquesto valore può essere ambiato dall'utente.

2.2 Spazio a 128-bit

Ogni hash ID in Kad è di 128 bit, per questo si aerma he il proto ollo Kad

è aratterizzato da uno spazio a 128 bit, infatti omporta he è possibile

ollo are in maniera univo a no a 2128 ≃ 3.40 ∗ 1038 oggetti dierenti un

numeromolto grandesesitienepresente he l'universoosservabile ontiene ir a

7 ∗ 1022 stelle). Ogni utente he vuoleparte ipare allarete deve rearsiun valore random a 128 bit he in seguito rappresenterà il suo lient ID; an he ogni le

o keyword presente in Kad deve ottenere un ID a 128 bit, in modo he possa

ollo arsi in un punto pre iso della rete. In aggiunta a iò, tutti gli oggetti

passivi devono an he trovare un hostpeer nelle vi inanze he sio upidigestirli.

Éimportante omprenderen dasubito he lientvi inigeogra amentepos-

sono non esserlo nella rete Kad evi eversa. Dal momento he il lient IDsi può

interpretare omel'indirizzo he un lients egliediavere nella propriareteKad,

può a adere he due lient diversi generino due valori random a 128 bit molto

vi ini tra loro e he, quindi, la loro distanza possa risultare molto pi ola. In

metafora possiamo dire he questi due lient si ritroveranno ad essere vi ini di

asa nel mondo virtuale diKad.

A questo punto è ne essario spiegare in he modo al oliamola distanza tra

peere/ooggetti,omeglio, ome al oliamoladistanzatradueIDa128bit,siano

essi asso iati a un peer o adun oggetto passivo. Per far Kad si avvale della

metri aXOR(simbolo). Siriporta latabelladiveritàdella metri aXOReun

esempiopermeglio omprenderne il funzionamento.

A B AB

0 0 0

0 1 1

1 0 1

1 1 0

Tabella 2.1: tabella diverità XOR

110100110 HASHID A

010101001 HASHID B

100001111 AB

Tabella 2.2: distanza al olata tra due hash

ID se ondolametri a XOR

(15)

Come verranno gestiti i ontatti on i loro ID è oggetto di dis ussione nel

prossimo apitolo, il qualespiegherà indettaglio le aratteristi he della Routing

Table diKad.

(16)

Routing Table

LaRoutingTablerappresentail uoredellareteKadpoi héessatieneinmemoria

tutte leinformazioniriguardantii ontatti epermettedieseguire rapideri er he

sudiessi,trovandoquelli he piùadattisu uieseguiredeterminati ompiti,quali

lari er a diun le, di una keyword o dialtri ontatti.

Perdes rivere ilfunzionamentodellaRoutingTablesiutilizzeràun appro io

buttom-up; verranno ioè introdotte per prime le lassi più sempli i he stan-

no alla base e si andrà via via ostruendo la struttura dati on lassi sempre

più omplesse. Le spiegazioni faranno spesso riferimentoalle lassi, ai metodi e

alle variabili Java usate in PariKad, ma non limiteràin al un modola om-

prensione del funzionamento della Routing Table an he a hi non padroneggia

Java.

Le informazioni he verranno di seguito spiegate sono state ri avate in gran

parte dalla lettura del odi e sorgente di eMule 0.49 , he rappresenta l'uni a

fonte seria e adabile per poter omprendere appieno il funzionamento della

rete Kad ed inparti olare della sua struttura dati. I numerosido umenti he si

trovano in Internet sono inve e risultati spesso approssimativi o impre isi.

3.1 Int128

La lasseInt128.java, lapiùsempli eefondamentale dituttalastrutturadati,

è usata per rappresentare gli hash ID 1

dei peer, deile e delle keyword. Questa

1

Nelseguitodellaspiegazionesi utilizzerannoin manierainter ambiabileleparole hashID

oInt128.

(17)

lasse he rappresentaun valore a128bit(16 byte)viene usataperrappresentare

moltevariabilied èquindi ne essario he sia e ientenel onsumo dimemoria.

Per implementare questa lasse si è sfruttata la lasse BitSet di Java, he

fornis elapossibilitàdi reareunarraydibitbooleani(trueofalse)didimensioni

apia ere ed è provvista diun metodoperfare loXORtra due BitSet.

tipo nome variabile des rizione

BitSet bitSet lasseJavausataperrappresentareunInt128

Tabella 3.1: variabili diInt128

La lasse Int128.java è stata quindi provvista di metodi he mappassero i

valori booleani true e false nei orrispettivi 1 e 0 2

(vedi tabella 3.2), oltre ad

al uni metodi he permettessero la sua rappresentazione in stringa binaria ed

esade imale,lo shiftdi un Int128 ealtre funzioni he tornavano utili.

indi e 0M SB 1 2 3 4 · · · 124 125 126 127LSB

Int128 1 0 0 1 1 · · · 1 0 1 0

BitSet true false false true true · · · true false true false

Tabella 3.2: relazione Int128 eBitSet

3.2 KadConta t

Ognipeerhaunalistadipeer onos iuti hiamati ontatti,iqualivengonoinseriti

nella RoutingTable.

La lasse KadConta t.java si o upa di gestire tutte le informazioni di un

ontatto. Essa è ompostaprin ipalmentedametodisetter/getter he permetto-

nodisettareoottenere ilvaloredelle sue variabili. Siriporta intabella3.3tutte

levariabilidi questa lasse on una lorobreve des rizione.

IlnostroInt128,usatoperottenerelavariabile onta tDistan e,viene reato

randomduranteil primo avvio di PariKad e salvato in un le, all'us ita dell'ap-

pli azione. Al su essivo avvio, si riutilizza il valore dell'Int128 re uperato dal

2

Adierenzadialtrilinguaggidi programmazionequaliC/C++,Javanonpermetteil ast

impli itodiunbyte/intinunbooleanoilvi eversa

(18)

tipo nomevariabile des rizione

Int128 id hashID heidenti ail ontatto

Int128 distan e distanza tra il nostro Int128 e quello del

ontatto(distan e=nostroIDXORsuoID)

InetAddress ip indirizzoIP

byte type identi alabontàdel ontatto: range[0,4℄

byte kadVersion versionedelproto olloKad

int TCPPort portaTCP

int UDPPort portaUDP

long reationTime_millis quandoèstato reatoil ontatto

long expirationTime_millis indi anoaquandosipuò onsiderarevalido

ilvaloretypeimpostato

long lastTypeSetTime_millis quandoèstatoaggiornatoperl'ultimavoltail

typedel ontatto

KadUDPKey kadUDPKey hiaveutilizzataperinviarepa hettious ati

al ontatto

boolean IPVerified indi a sel'IPdel ontatto èstato ontrollato

erisultavalido

boolean re eivedHelloPa ket true se è giunto un pa hetto di HELLO da

questo ontatto,falsealtrimenti

boolean he kKad2 segnala se è già stato fatto un ontrollo per

veri areseil ontattosupportaipa hettidi

tipoKad2

Tabella 3.3: variabili diKadConta t

le;questo omportamento oerente onquellodieMuledovrebbeportareaduna

maggiorstabilità allarete Kad.

Delle variabili sopra riportate desidero spiegare in dettaglio la funzione di

kadVersion e type.

Il byte kadVersion identi a quale versione del proto ollo Kad utilizza il

ontatto. Il valore 0 signi a he il KadConta t utilizza la versione 1 di Kad,

mentreognialtrovaloremaggioredi0impli a heil ontattoutilizzalaversione2

diKad. Questadierenzaèmoltoimportantepoi hé laversionediKadutilizzata

determina quale tipo di pa hetti possono essere spediti, quali aratteristi he il

ontatto supporta, et .

Ilbytetype,inve e, permettedivalutarel'adabilitàdiun ontatto. Appena

un ontatto è aggiunto gli viene assegnato il valore type=3. Periodi amente il

(19)

lient ontrollasequesto ontattoèan oraattivoelopromuoveodegradase ondo

laregola in tabella3.4.

type des rizione

4 il ontattodeveessere an ellato(ingenerepoi hénonèraggiungibile)

3 questoèilvaloreassegnatodidefaultai ontatti hesonoappenastatiaggiunti

allaRoutingTable

2 ontatti onos iutidamenodi1ora,ma hehannodimostratodiessereattivi

1 ontatti onos iutidamenodi2oremadapiùdi1orae hehannodimostrato

diessereattivi

0 ontatti onos iutidapiùdi2oree hehannodimostratodiessereattivi

Tabella 3.4: des rizionevariabile typediKadConta t

Il typedi un ontatto viene memorizzatoinun lealla hiusura dell'appli a-

zione, an hé al su essivo avvio il nostro lient sappia n dasubito quali sono

i ontatti migliori he stanno onnessi allarete Kad dapiù tempo.

3.2.1 GeoLo ator

IlGeoLo atorèunafunzionalità heèstataaggiuntoalla lasseKadConta t.java

perpermetterle diri onos erea he nazioneappartengono isuoi ontatti. Cisiè

appoggiatiallalibreria javaInetAddressLo ator [8℄.

tipo nomevariabile

des rizione

HashMap<String,Integer> onta tsGeoLo ation

asso ia ad ogniNazione X il

numerodi ontatti heèinX

Tabella 3.5: variabile stati a diKadConta t

In teoria, eseguendoil GeoLo ator sumolti ontatti, sidovrebbe trovare una

distribuzione molto simile a quellapresente nell'arti olo [6℄. Si riporta in gura

3.1l'istogrammapresenteinquellapubbli azione, he èstatoottenuto attraverso

un'analisidiquasi tutti i ontatti presenti nella rete Kad il 30/08/2006.

(20)

0 0.05 0.1 0.15 0.2 0.25

GB PT AR KR TW US BR IL PL DE IT FR ES CN

DF

countries zone 0x91

zone 0xf4 full crawl

Figura 3.1: distribuzione geogra a deipeersdell'intero spazio Kadal30/08/2006

3.3 RoutingBin

I KadConta t vengono a lorovoltainseriti indelle liste dimassimo 10KadCon-

ta t ias una (perquesto vengonodenite spesso 10-Bu ket), gestite dalla lasse

RoutingBin.java, la quale si o upa di tenerli ordinati se ondo un riterio di

tempo.

tipo nomevariabile des rizione

List<KadConta t> m_listEntries ontienealmassimo10KadConta t

Tabella 3.6: variabile diRoutingBin

Appena un ontattosidimostraattivo(harispostoaunadellenostreri hieste

o iha hiestoqual osa),vienespintoinfondoallalista. Inquestomodoi ontatti

più ve hi, in relazione alla nostra ultima omuni azione on loro, vengono a

trovarsi in ima alla lista, mentre quelli più nuovi in fondo (si veda a proposito

la tabella 3.7). Questo modo di gestire i ontatti permette di ottenere una rete

Kad più stabile, poi hé i KadConta t in ima alla listavengono periodi amente

ontattati per vedere se sono an ora attivi e dopo un determinato numero di

fallimenti vengono rimossi dalla nostra Routing Table (questo omportamento

verrà des ritto bene nella sezionerelativaai taskdi mantenimento 3.5).

Riferimenti

Documenti correlati

Ricerca e ordinamento, Paolo Bison, FI08, 2008-09-29 – p.29. Merge sort: codice

• prendendo un dato alla volta dalla sotto-sequenza il cui primo dato è

• prendendo un dato alla volta dalla sotto-sequenza il cui primo dato è il minore. Ricerca e ordinamento, Paolo

 SETTORIALITA’: grado in cui la rete si dimostra SETTORIALITA’: grado in cui la rete si dimostra suddivisibile in grappoli di legami distinti.. suddivisibile in grappoli di

19 - Modalità di svolgimento del procedimento di verifica di assoggettabilità a VIA (articolo così sostituito dall'art. Il proponente trasmette all’autorità competente lo

ü  A differenza della luce e dell'elettricità, le onde radio non hanno bisogno di essere trasmesse all'interno di cavi, poiché possono viaggiare per lunghe distanze attraverso

La Provincia di Torino in questi ultimi anni sta provvedendo alla formazione di una nuova carta numerica CTP – Carta Tecnica Provinciale, alla scala 1:5.000, di tutto

Il sistema descritto è parte di una strategia complessiva di condivisione dei dati territoriali nell’ambito della rete SINAnet attraverso il Modulo di Accesso alle