À propos des tables de routage distribué
Une table de routage distribuée (DRT) existe en tant que maillage de nœuds coopérants, où chaque nœud est un instance d’une application utilisant l’API DRT. Les nœuds qui publient des clés sont chargés d’aider les autres nœuds à publier et à résoudre les clés. Les nœuds peuvent également participer de manière « résoudre uniquement », ce qui ne les oblige pas à aider leurs homologues. Le protocole DRT s’exécute sur un transport UDP/IPv6.
Un nœud qui publie une clé génère et gère une table de routage locale d’autres nœuds dans le maillage. Cette table de routage est optimisée afin que le nœud puisse rapidement localiser une clé spécifique dans le maillage en recherchant la clé directement dans la table de routage locale ou en demandant à d’autres nœuds de publier des clés numériquement proches de la cible. Cette action est répétée jusqu’à ce que la clé requise soit trouvée ou que le nœud détermine qu’aucune clé de ce type n’existe.
Les clés DRT sont des entiers non signés 256 bits. La proximité entre les clés est définie par la différence numérique entre elles. L’espace de clés DRT est considéré comme circulaire. Par exemple, la première valeur de clé possible et la dernière valeur de clé possible sont considérées comme des voisins.
Dans une DRT sécurisée, les nœuds sont requis pour authentifier les clés qu’ils publient. Mécanisme par lequel les nœuds authentifient les clés doivent être définies à l’aide de l’API DRT lorsque la DRT est initialisée. Pour ce faire, choisissez un fournisseur de sécurité pour la DRT. Un fournisseur de sécurité est un module qui peut produire des jetons utilisés pour authentifier des clés et vérifier les jetons produits par d’autres nœuds. Il doit implémenter l’interface du fournisseur de sécurité définie dans cette documentation. La DRT Windows 7 est fournie avec deux fournisseurs de sécurité entièrement implémentés qui peuvent être utilisés pour créer des applications Windows.
Pendant l’initialisation, une application doit également fournir la DRT avec un fournisseur d’amorçage. Le fournisseur d’amorçage est un module qui peut récupérer les points de terminaison réseau des nœuds déjà présents dans le maillage DRT, et qui est appelé par le DRT lorsqu’un nouveau nœud est établi. À l’instar du module fournisseur de sécurité, le fournisseur de démarrage doit implémenter une interface bien définie. La DRT Windows 7 est fournie avec deux fournisseurs d’amorçage entièrement implémentés.
La DRT considère les voisins immédiats d’une clé spéciale. Les cinq clés les plus proches numériquement plus petites et les cinq clés les plus proches numériquement plus grandes qu’une clé publiée forment ce que l’on appelle un jeu de feuilles. La DRT signale les modifications apportées au jeu de feuilles d’une clé via l’API DRT.
Transitions de cycle de vie et d’état DRT
Une application peut initialiser une instance DRT locale à l’aide de la fonction DrtOpen. Cette fonction déclenche le processus de démarrage, où l’API DRT appelle le fournisseur d’amorçage pour apprendre les clés et les points de terminaison réseau d’autres nœuds qui participent déjà à la DRT. Si le fournisseur d’amorçage localise au moins un autre nœud, le DRT passe à l’état DRT_ACTIVE. Dans cet état, l’application peut rechercher des clés publiées par d’autres nœuds et publier des clés qui peuvent être résolues. Si le fournisseur d’amorçage ne parvient pas à localiser d’autres nœuds, la DRT passe à l’état DRT_ALONE. La DRT reste dans l’état DRT_ALONE et tente de démarrer régulièrement afin de localiser des homologues et de passer à l’état DRT_ACTIVE.
Un nœud peut passer à ces états à partir de DRT_ACTIVE.
État du cycle de vie | Conditions |
---|---|
DRT_ALONE | Le nœud local n’a pas découvert d’autres nœuds dans la DRT. Dans cet état, le nœud continue d’écouter d’autres nœuds dans la DRT. Si un autre nœud joint la DRT, le nœud local passe à l’état DRT_ACTIVE. Si le réseau est en panne, il passe à DRT_NO_NETWORK. En cas d’erreur grave avec le DRT, le nœud passe à l’état DRT_FAULTED. |
DRT_NO_NETWORK | Lorsqu’un nœud perd la connectivité réseau, il passe à l’état DRT_NO_NETWORK. À ce stade, l’application peut attendre que la connectivité réseau soit restaurée et peut fermer la DRT. |
DRT_FAULTED | Une erreur grave s’est produite dans le nœud local. Par exemple, si l’ordinateur local manque de mémoire physique. Pendant qu’un nœud entre dans cet état, l’application doit appeler l’API DrtClose , corriger le problème et réinitialiser la DRT avec DrtOpen. |