Université de Nantes CHORD Vincent Trève
Introduction ● Problématique – Comment accéder efficacement aux données réparties sur un système pair à pair? – Comment trouver un bon compromis entre réplication, performance et fiabilité ? – Comment évider l'effondrement des performances lors du passage à l'échelle ?
Introduction ● Chord est un protocole de recherche distribuée, ● Il est basé sur l'utilisation d'une table de hachage distribuée, ● Il répond à une seule fonction : Faire correspondre une clef à un nœud Faire correspondre une clef à un nœud
Plan ● Un peu d'histoire ● Principes de base ● Caractéristiques ● Détails du protocole ● Utilisations et implémentations ● Bibliographie
Histoire ● Ion Stoica ● Robert Morris ● David Karger ● M. Frans Kaashoek ● Hari Balakrishnan Projet développé en 2001 au MIT
Principes de base ● Une clef est stockée sur son successeur. ● Chaque nœud gère une table d'index des nœuds suivants ● Lors d'une requête, si un nœud n'a pas la réponse, il fait suivre la requête au nœud le mieux placé pour répondre.
Caractéristiques ● Coût d'une recherche : – O(log(n)) messages envoyés ● Coût de rentrée ou de sortie de l'anneau : – O(log²(n)) messages envoyés
Détails du protocole ● La table d'index : – un nœud stocke log(n) entré dans sa table. – la table est composée de : ● une clef ● le successeur de la clef ● L'intervalle de clefs
Détails du protocole ● Le protocole de recherche d'un nœud responsable d'une clef
Détails du protocole ● Arrivé d'un nouveau nœud n – 2 invariants doivent toujours être vrais pour que la recherche soit correcte.: ● le successeur d'un nœud est toujours maintenu ● pour toute clef k, le successeur de k est le nœud responsable de k. – 3 taches a exécuter : ● Mettre a jour le prédécesseur de et la table d'index de n ● Répercuter les changements sur les autres nœuds ● Annoncé que le nœud est prêt
Détails du protocole ● Arrivé d'un nouveau nœud n – n initialise son prédécesseur et sa table d'index ● optimisation : récupérer ces informations de son propre successeur. – demande aux autre nœuds de se mettre à jour ● pas tous les nœuds, seulement ceux qui doivent référencer n, cf algorithme – Transférer les clefs dont il vient d'obtenir la responsabilité.
Détails du protocole
● Départ ou perte d'un pair – Un nœud stocke plusieurs successeur, pour résister au pannes – Chaque nœud alerte régulièrement son successeur, cela permet : ● au nœud de vérifier que son successeur fonctionne ● au successeur, de savoir qui est son prédécesseur – Les donnes sont répliquer sur tout les successeurs ● recherche n'est pas biaisée ● la redistribution des clef est facilité.
Inconvénients ● Sécurité :un ensemble de participants mal intentionnés ou buggés peut offrit une vue incorrecte de l'anneau. ● mal adapté au réseau sous-jasent : 2 pairs voisins sur l'anneau peuvent être de part et d'autre du globe.
Avantages ● Équilibrage de charge : équilibrage de charge naturel, hérité de la fonction de hachage [sha- 1]. ● Disponibilité : On peut toujours trouver le nœud responsable d'une clef, même lorsque que le système est instable. ● Aucune contrainte sur le nom des clefs.
Avantages ● Décentralisé: Chord est complètement décentralisé: tous les nœuds sont au même niveau. Ce qui le rend robuste et adapté aux applications P2P peu organisés. ● Passage à l'échelle : le coût d'une recherche est fonction du logarithme du nombre de nœuds. ● Protocole prouvé : – stabilité, coût d'une recherche, coût d'une insertion.
Implémentation ● 2 implémentations références : – the Chord Project en C – Open Chord en Java
Utilisations ● Index distribué, pour retrouver un fichier, la clef est le nom du fichier, la valeur est l'endroit ou trouver le fichier. ● Calcul distribué, chaque clef est un fragment du calcul, le nœud exécute le calcul associé a ses clefs ●...
Bibliographie - Webographie ● ● ● ●