LPBCast
Présentation générale
Algorithme probabiliste de diffusion de message
Ce module est une implémentation (non complète) de l’algorithme LPBCast (Lightweight Probabilistic broadcast). Cet algorithme permet de diffuser de manière probabiliste des messages entre différents nœuds d’un réseau P2P. Ainsi, il est prouvé que chaque nœud connecté recevra chaque message envoyé en un temps donné.Gestion des voisins
Le composant LPBCast possède une table des voisins de taille fixe (chaque voisin est représenté par l'url de l'application XWoot cliente du composant LPBCast) ; elle représente donc une vue partielle du réseau. Le module intègre, dans chaque message envoyé, la configuration d’un voisin pris aléatoirement dans sa table. Ainsi, chaque nœud recevant ce message met à jour sa table avec ce voisin (ajout si taille maximale non atteinte, remplacement aléatoire sinon).Gestion des messages
Chaque message envoyé contient un attribut « round ». Cet attribut est initialisé lors de la création du nouveau message, par une valeur donnée en configuration. Lorsqu’un message est reçu par un nœud, il est traité, puis diffusé aux voisins de ce nœud. Cependant, avant la diffusion, le nœud décrémente la valeur du « round » ; dès que celle-ci arrive à 0, le message n’est plus envoyé.Différents types de message
Chaque message contient un attribut permettant de connaitre son type. Il existe trois types de messages ; ils peuvent transmettre des patchs, mais aussi correspondre à une demande plus spécifique (Anti-entropie, échange d'état).Le transfert d’état
Le module LPBCast permet aussi de transférer un état d’un nœud à un autre. Lorsqu’un nouveau nœud se connecte au réseau (uniquement au « bootstrap » (i.e. première connexion au réseau : ce qui suppose que le nœud ne contient pas encore de donnée)), il demande à un nœud de sa table de voisin son état ; il récupère alors l’ensemble des données de son voisin. Ce transfert est ensuite complété avec une anti-entropie.Servlets
L'ensemble des communication entre les nœuds (envoi de message, échange d'état) ce fait par appel de Servlet (i.e.http).Diagramme de composant

Entrées (receiver) :
- receive : méthode à implémenter permettant de recevoir un objet en tant que nœud dans le réseau. Tout entité voulant être un nœud dans le réseau, doit implanté l'interface receiver.
Sortie (sender) :
- getNeighbors : permet d’obtenir la liste des voisins du nœud
- sendTo : permet d’envoyer un message à un voisin
- getNewMessage : permet la création d’un objet de type message en fonction d’un type, d’un round et d’en contenu
- gossip : permet d’appliquer et de rediffuser un message
- askState : permet d’envoyer un message à un voisin de la table demandant un transfert d’état.
Diagramme de classe
edit?
Version 1.10 last modified by Julien MAIRE on 21/02/2008 at 17:53
![[img] [img]](/xwiki/skins/albatross/mimetypes/jpg.png)

Comments: 0