• Aucun résultat trouvé

R´eseaux de pair `a pair

Dans le document Autour des graphes et du routage (Page 27-34)

La principale application des r´eseaux de pair `a pair consiste `a partager des fichiers : un utilisateur met en acc`es `a la communaut´e ses propres fichiers, recherche par des mots cl´es d’autres fichiers, contacte ceux qui les poss`edent pour les r´ecup´erer directement de pair `a pair. On peut inclure cela dans la

probl´ematique du routage puisqu’il s’agit pour un nœud de contacter le nœud qui poss`ede tel ou tel fichier.

Les r´eseaux de pair `a pair (« peer to peer » en anglais) reposent g´en´era-lement sur l’´elaboration d’un r´eseau virtuel (« overlay network ») au-dessus d’Internet. Tout nœud pouvant se connecter `a tout autre, il n’y a pas a priori de contrainte sur le graphe de connexion du r´eseau virtuel. Les restrictions viennent de la taille et du dynamisme du r´eseau. En effet, on imagine ais´ement plusieurs millions de nœuds former un r´eseau de pair `a pair avec sans cesse l’arriv´ee de nouveaux nœuds et le d´epart d’autres. Il devient donc impensable que chaque nœud connaisse tous les autres. Les pairs doivent s’organiser pour former une structure dynamique efficace les connectant entre eux. Il existe en gros deux approches pour cela : construire un graphe al´eatoire et reposer sur des explorations al´eatoires du r´eseau, ou bien construire un graphe structur´e dans lequel on sait router efficacement.

Graphes al´eatoires

L’utilisation de graphes al´eatoires permet de g´erer efficacement le pro-bl`eme de la volatilit´e des nœuds et sont souvent adapt´es `a la diffusion de messages ou de donn´ees.

Le r´eseau Gnutella construit le r´eseau selon un processus d’exploration al´eatoire du r´eseau : un nouvel arrivant parcours le r´eseau jusqu’`a trouver des pairs qui acceptent de se connecter avec lui. Le protocole distingue deux niveaux de pairs : les « super-pairs » se connectent entre eux et assurent la connectivit´e du r´eseau, les « simples-pairs » doivent trouver un super-pair qui accepte de les prendre en charge. Les super-pairs sont en charge de la diffusion des requˆetes dans le r´eseau. (Certaines techniques de Gnutella, d´ecrites au paragraphe 5.3, donnent plus de d´etails sur ce r´eseau.) Les figures 2.9, 2.10, 2.11, 2.12, 2.13 et 2.14 issues du r´eseau Gnutella illustrent cette topologie `a deux niveaux.

Ces figures sont r´ealis´ees `a partir d’un crawl du r´eseau Gnutella v0.6 da-tant de fin 2003 [9] . Le crawl a dur´e une semaine pendant laquelle un robot a pu se connecter `a 20 000 clients du r´eseau Gnutella v0.6. Chaque client fournissant la liste des pairs auxquels il est connect´e, le crawl se pr´esente sous la forme d’un graphe d’environ 100 000 sommets. Les images ci-dessous sont g´en´er´ees en effectuant une marche al´eatoire sur un nombre variable de sommets du crawl et en int´egrant le voisinage des sommets visit´es. Ce proces-sus reproduit ainsi une exploration restreinte du r´eseau tel que photographi´e

24 CHAPITRE 2. MOD ´ELISATION

Fig. 2.9 – Une exploration de 30 nœuds du r´eseau Gnutella

dans notre crawl. Les dessins sont r´ealis´es avec Graphviz. En augmentant peu `a peu le nombre de sommets explor´es (30, 40, 50, 100, 250, 400) on peut ima-giner `a quoi pourrait ressembler un dessin de la totalit´e du crawl (Graphviz devient inutilisable pour une exploration de plus de 1000 sommets).

Le protocole BitTorrent utilise un « tracker » pour mettre en relation les pairs int´eress´es par le t´el´echargement d’un fichier. Celui-ci fournit r´eguli`ere-ment `a chaque pair une liste plus ou moins al´eatoire de quelques dizaines de pairs. Le graphe construit sert alors `a diffuser le fichier. Le protocole BitTor-rent est d´ecrit plus en d´etails au paragraphe 3.4.

Graphes structur´es

Un domaine tr`es actif ces derni`eres ann´ees concerne les tables de hachages distribu´ees. L’id´ee est de relier les pairs selon un r´eseau logique structur´e, comme un hypercube ou un graphe de Bruijn par exemple, de mani`ere `a pouvoir utiliser des techniques de routage efficaces plutˆot que des diffusions. Toute la difficult´e consiste alors `a maintenir un graphe proche d’une structure tr`es irr´eguli`ere id´eale malgr´e la volatilit´e des nœuds.

Fig. 2.10 – Une exploration de 40 nœuds du r´eseau Gnutella

26 CHAPITRE 2. MOD ´ELISATION

Fig. 2.12 – Une exploration de 100 nœuds du r´eseau Gnutella

Fig. 2.14 – Une exploration de 400 nœuds du r´eseau Gnutella

Les tables de hachage distribu´ees se concentrent sur le probl`eme de trou-ver un fichier lorsqu’on connaˆıt son identifiant. L’id´ee est de construire une table distribu´ee dont les cl´es sont `a la fois des identifiants de fichiers ou de nœuds. (En plus de son adresse IP, chaque nœud poss`ede un identifiant.) Pour ´eviter les collisions, les cl´es sont g´en´eralement assez longues (128 ou 160 bits). Ainsi pour permettre de retrouver un fichier, le nœud qui le pos-s`ede stocke dans la table une association de cl´e l’identifiant du fichier et de valeur sa propre adresse IP. Ainsi un nœud qui recherche le fichier retrouve cette association (connaissant l’identifiant du fichier) pour obtenir l’adresse IP d’un nœud qui a le fichier. Toute la difficult´e consiste `a r´epartir ´equita-blement les associations sur tous les nœuds de sorte qu’il soit possible de retrouver le ou les nœuds qui sont en charge d’une cl´e donn´ee.

Les solutions existantes consistent `a stocker une association sur le ou les nœuds dont l’identifiant est le plus proche de la cl´e pour une certaine m´e-trique. D’autre part, les nœuds s’organisent en un r´eseau logique de sorte qu’il soit facile et rapide de trouver de proche en proche le nœud dont l’iden-tifiant est le plus proche d’une cl´e donn´ee. Le probl`eme ressemble alors `a celui des machines parall`eles dans lesquelles il faut relier entre eux des

pro-28 CHAPITRE 2. MOD ´ELISATION

Fig.2.15 – La couleur des nœuds dans les figures pr´ec´edentes repr´esente leur

adresse IP selon la table ci-dessus. Le rond en colonne a et en ligne b indique la couleur des adresses dont le premier octet est entre 10a et 10a + 9 et le deuxi`eme entre 10b et 10b + 9. La taille des ronds indique le logarithme du nombre de nœuds rencontr´es dans le crawl dont l’adresse IP tombe dans la plage correspondante.

cesseurs avec un nombre de cˆables limit´e et un diam`etre en nombre de sauts11

faible. De plus, le pair `a pair n´ecessite de s’adapter `a une nature fortement

dynamique o`u des nœuds partent et d’autres arrivent sans cesse. Ainsi tous

les travaux qui ont ´et´e faits autour des machines parall`eles ont ´et´es revisit´es

11

Le nombre de sauts en r´eseau d´esigne la longueur d’une route, en nombre de liens

g´en´eralement. (Dans le paquet achemin´e jusqu’`a la destination, un champs incr´ement´e

dans ce cadre en adaptant les topologies classiques du tore, de l’hypercube, du papillon ou encore du graphe de Brujin `a ce contexte dynamique. Le paragraphe 5.4 fournit quelques algorithmes de routage dans ce contexte.

Dans le document Autour des graphes et du routage (Page 27-34)