Table de hachage distribuée

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir DHT.
Distributed hash tables

Une table de hachage distribuée (ou DHT pour Distributed Hash Table), est une technologie permettant l'identification et l'obtention, dans un système réparti - comme certains réseaux P2P - d'une information. L'ensemble de la table de hachage est constituée virtuellement par tous ses constituants répartis sur tous les éléments du réseau, qui en possèdent chacun une partie.

Les tables de hachage distribuées sont utilisées notamment dans les protocoles Chord, P2P CAN, Tapestry, Kademlia (utilisé par eMule), Ares Galaxy, le moteur de recherche distribué YaCy, mais aussi dans de nombreux clients récents pour le protocole BitTorrent comme Azureus, Bitcomet, Deluge, KTorrent, Transmission ou encore µTorrent. Le premier client BitTorrent à utiliser une DHT était Azureus, suivi du client officiel BitTorrent qui créa une version différente. La version du client officiel fut alors appelée Mainline DHT. Dorénavant la plupart des clients supportent la version Mainline DHT.

Principe[modifier | modifier le code]

Supposons qu'un grand nombre d'utilisateurs (5 millions) aient lancé leur logiciel de partage de fichiers en pair à pair (Peer-to-Peer, P2P) sur leur ordinateur. Chacun partage ces fichiers (audio, images, vidéo, multimédia, etc.). Un utilisateur (Luc) possède, par exemple, l'album (fictif) « 42 mon amour ».

Supposons qu'un autre utilisateur (Pierre) souhaite télécharger cet album. Comment son logiciel de P2P peut-il trouver l'ordinateur de Luc ? Le logiciel de Pierre pourrait éventuellement demander aux 5 millions d'ordinateurs si par hasard ils possèdent cet album. Le logiciel de Luc répondrait alors : « Je le possède et je peux commencer à le transférer. » Il serait cependant très long et très lourd en consommation de ressources de demander aux 5 millions d'ordinateurs s'ils ont cet album, car il y aurait en permanence des millions de questions du type « Je cherche tel album, l'as-tu ? », entraînant des millions de réponses : « Non, désolé ! ».

Un grand annuaire archivant les noms des fichiers partagés par tous les utilisateurs résoudrait la question : Il suffirait de demander à ce « grand annuaire » (la table de hachage) l'album de musique 42 mon amour pour obtenir la réponse : « Il est disponible sur l'ordinateur de Luc. (et celui de Mathieu, de Paul, etc.) ». C'est ainsi que fonctionnait la première génération de réseaux P2P. Il y avait un serveur central qui servait de « grand annuaire. » (exemples : Napster, Audiogalaxy, Edonkey, Kazaa). Cette solution est de moins en moins utilisée en raison de sa fragilité ; en effet si le serveur central n'est plus disponible, on ne peut plus faire aucune recherche sur les fichiers partagés du réseau.

La table de hachage distribuée apporte donc, par rapports aux technologies précédentes l'indépendance au serveur central en le distribuant sur les différents nœuds.

Par exemple, l'utilisateur Jean-Claude va être responsable de tous les fichiers qui commencent par A, Toto va être responsable de tous les fichiers qui commencent par B, etc... Lorsqu'un nouvel utilisateur se connecte au réseau, la première chose que le logiciel va faire est de dire quels fichiers il peut partager. S'il possède par exemple le film Big Buck Bunny, il va dire à l'utilisateur Toto (qui est responsable des fichiers qui commencent par B) : « J'ai le film Big Buck Bunny. Si des gens le veulent, il est disponible chez moi. » Les recherches deviennent donc très rapides. Si on cherche Big Buck Bunny, on va directement demander à la personne responsable de la lettre « B ».

La réalité est un peu plus complexe : il ne faut pas qu'une seule personne soit responsable des mots qui commencent par "B", car si elle éteint son ordinateur on perd une partie de l'annuaire. Il faut donc introduire une certaine redondance dans l'annuaire, et donc plusieurs ordinateurs sont simultanément responsables des mêmes listes. De plus, vu qu’il y a des centaines de millions de fichiers partagés, le principe de division de l'annuaire n'est pas basé sur les lettres de l'alphabet mais sur une table de hachage des mots des titres des fichiers.

Enfin, chaque ordinateur n'a pas besoin de connaître tous les ordinateurs qui archivent des mots. Il connaîtra typiquement une centaine d'ordinateurs. Si l'utilisateur fait une recherche sur Big Buck Bunny et ne connaît pas l'ordinateur qui archive les fichiers commençant par B, alors :

  • il demandera à l'ordinateur le plus proche (par exemple l'ordinateur qui archive les fichiers commençant par C) : « Connais-tu l'ordinateur s'occupant des mots commençant par B ? »
  • celui-ci répondra « Parmi mes voisins, je connais les ordinateurs qui s'occupent des B, et même je connais des ordinateurs qui s'occupent des fichiers commençant par BA, BI, BO, BU, donc tu ferais bien de demander à celui qui connaît les fichiers commençant par BI s'il a par hasard le fichier que tu cherches. »
  • on interroge le responsable des « BI » et il dira : « Oui, je connais les ordinateurs qui ont le film que tu veux » ou alors, s'il ne les connaît pas, il répondra « Je ne connais pas ton fichier, par contre je connais un ordinateur qui s'occupe des fichiers commençant par BIG, donc demande-lui. »

Notes et références[modifier | modifier le code]

Annexes[modifier | modifier le code]

Voir aussi[modifier | modifier le code]