Kademlia
Kademlia (kad) est un réseau de recouvrement de type table de hachage distribuée pour les réseaux pair à pair (P2P). Il a été conçu par Petar Maymounkov et David Mazières en 2002[1].
Pour les articles homonymes, voir Kad.
Développé par | Petar Maymounkov et David Mazières |
---|---|
Première version | |
Environnement | Indépendant |
Type | Table de hachage |
Description
Le protocole précise la structure du réseau Kademlia, les communications entre les nœuds et l'échange d'information. Les nœuds communiquent grâce à UDP (cf le modèle OSI).
À l'intérieur d'un réseau existant (Internet), Kademlia crée un nouveau réseau, à l'intérieur duquel chaque nœud est identifié par un numéro d'identification, un ID (nombre binaire à 160 bits).
Passée une phase d'amorçage consistant à contacter un nœud du réseau puis à obtenir un ID, un opérateur mathématique calcule la «distance» entre deux nœuds, et interroge plusieurs nœuds suivant cette «distance» afin de trouver l'information recherchée. Cet opérateur, qui est le OU exclusif, aussi appelée XOR, permet d'utiliser une notion de distance entre deux nœuds délivrant un résultat sous forme de nombre entier : la «distance». Cette dernière n'a rien à voir avec la situation géographique des participants, mais modélise la distance à l'intérieur de la chaîne des ID. Il peut donc arriver qu'un nœud en Allemagne et un nœud en Australie soient «voisins».
Une information dans Kademlia est conservée dans des «valeurs», chaque valeur étant jointe à une «clé». On dit de Kademlia qu'il est un réseau <valeur, clé>.
L'ensemble des clés gérées par un nœud est en rapport avec l'adresse de ce nœud ; ainsi, connaissant une clé, l'algorithme peut déterminer la distance approximative qui le sépare du nœud possédant la valeur associée à cette clé. Pour rechercher une clé située sur un nœud N, un nœud A va chercher un voisin B avec Distance (B, N) <Distance (A, N), et lui demander l'information ; si ce dernier ne l'a pas, il contactera un voisin plus proche de la clé, et ainsi de suite jusqu'à obtenir la valeur de la clé (ou jusqu'à ce qu'on soit sûr que cette clé n'existe pas). La taille du réseau n'influe pas énormément sur le nombre de nœuds contactés durant la recherche ; si le nombre de participants du réseau double, alors le nœud de l'utilisateur doit demander l'information à un seul nœud de plus.
D'autres avantages sont inhérents à une structure décentralisée, augmentant par exemple la résistance à une attaque de déni de service. Même si toute une rangée de nœuds est submergée, cela n'aura que des effets limités sur la disponibilité du réseau, qui «recoudra» le réseau autour de ces trous.
Utilisation effective
Échanges de fichiers
Le protocole Kademlia est utilisé par plusieurs clients poste-à-poste (les réseaux sont incompatibles les uns avec les autres) :
- réseau Kad : eMule (depuis la version 0.40), mlDonkey (depuis la version 2.5-28), aMule (depuis la version 2.1.0), Lphant depuis la version 3.50[2], NeoLoader[3]
- réseau Overnet (abandonné) : Overnet, eDonkeyHybrid, mlDonkey et KadC
- Imule
- VarVar (premier client Kademlia. Abandonné)
Certains programmes utilisent de manière isolée un protocole Kademlia :
Voir aussi
- Table de hachage distribuée
- DNS en DHT
Notes et références
- (en) Petar Maymounkov et David Mazières, Kademlia: A Peer-to-Peer Information System Based on the XOR Metric, Springer Berlin Heidelberg, coll. « Lecture Notes in Computer Science », (ISBN 9783540441793 et 9783540457480, DOI 10.1007/3-540-45748-8_5, lire en ligne), p. 53–65
- http://neoloader.com/features.html
- http://sourceforge.net/projects/kadnode/files/
Liens externes
- « Kademlia: A Design Specification » : Spécifications et commentaires d'implémentation
- « Kademlia: A Peer to peer information system Based on the XOR Metric »
- en:Comparison of eDonkey software (inclut les logiciels compatibles Kad)
- Portail des télécommunications