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

LPBCastComponent.jpg

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?

LPBCast_class2.jpg
Version 1.10 last modified by Julien MAIRE on 21/02/2008 at 17:53

Comments 0

No comments for this document

Attachments 2

[img]
LPBCastComponent.jpg 1.1
PostedBy: Julien MAIRE on 21/02/2008 (46kb )
[img]
LPBCast_class2.jpg 1.1
PostedBy: Julien MAIRE on 21/02/2008 (459kb )
Partenaires


Creator: Julien MAIRE on 20/02/2008 at 09:49
Copyright INRIA, ENST, EISTI, Mandriva, XPertNet
1.1-milestone-2.3619