$rubrique = 17 ; $meta_description = " Etude et utilisation des technologies des P2P "; $meta_keywords = " P2P, definition p2p, cours p2p, aide p2p, emule, freenet, gnutella, kazaa, napster, p2p semantique, Routing Indices, Semantic Overlay Network, calculs P2P, developpez, developpez.com, www.developpez.com, cours "; $titre_page = "Etude et utilisation des technologies des P2P"; $urlCss = "./article.css"; $Auteur="F. Schuler"; $Licence="1"; $Annee="2005"; include("$DOCUMENT_ROOT/template/entete.php"); ?>
Etude et utilisation des technologies des P2PDate de publication : 28/02/2005 , Date de mise a jour : 28/02/2005
Par
Fabrice Schuler (homepage) Cet article aborde les différentes technologies actuellement employées du P2P, ainsi que des axes de recherches, comme le P2P sémantique. Les utilisations possibles du P2P sont aussi abordées. 1. Introduction 2. Qu'est-ce qu'un P2P 2.1. Comment partager de l'information Lorsque l'on souhaite partager de l'information entre plusieurs ordinateurs, il existe de nombreuses solutions. Celle qui est la plus mise en oeuvre aujourd'hui est le modèle client/serveur. 2.1.1. Mode Client/Serveur 2.1.2. Le P2P 2.1.3. Avantages de l'un par rapport à l'autre 3. Les architectures P2P 3.1. Les architectures centralisées 3.1.1. Un exemple de réseau centralisé : Napster 3.2. Architecture centralisée à serveurs multiples 3.2.1. Un exemple d'architecture à serveurs multiples : le réseau eDonkey 3.3. Architectures décentralisées 3.3.1. Principes Sous-jacents ... 3.3.2. ... et réalités 3.3.3. Un exemple de réseau décentralisé : Gnutella 3.3.4. Un autre exemple : Freenet 3.4. Une architecture hybride : les super-peers 3.4.1. Généralités 3.4.2. Les super-peer redondants 3.4.3. Règles de conception d'un super-peer 3.4.4. Un exemple de réseau super-nodal : Kazaa 3.5. Seti@home 4. Le P2P sémantique 4.1. Quelle information ajouter 4.2. Routing Indices 4.3. SON : Semantic Overlay Networks 5. Problèmes ouverts dans la recherche sur les P2P 6. Utilisations du P2P 6.1. Calculer 6.2. Diffuser des données 7. Conclusion 8. Notes 1. Introduction
On entend de plus en plus parler de P2P aujourd'hui, mais qu'en savons nous vraiment ? D'un côté, de grands groupes d'industriels
qui décrient l'emploi fait de cette technologie, quand ce n'est pas la technologie elle-même, et présentent les utilisateurs du P2p
comme des délinquants systématiques. De l'autre, des gens de tous ages, de tous milieux sociaux, qui assurent ne pas faire de mal et
être (presque) dans la légalité.
Quoiqu'il en soit, ce ne sont pas ces points de vue qui nous intéressent ici. Le but de ce document est de présenter les différentes
architectures du P2P aujourd'hui, ainsi que d'autres pistes qui sont actuellement en exploration.
2. Qu'est-ce qu'un P2P
L'acronyme P2P signifie Peer to Peer, soit en bon français : Pair à Pair. Il s'agit d'un moyen de partager des ressources, comme le propose
par exemple le mode client/serveur.
Le P2P est une technique. Cette technique est utilisée par de multiples applications. Par exemple le P2P est utilisé pour le partage de
ressources parfaitement légales, comme des logiciels open sources (Linux, EDI, outils, etc... ) ou des versions d'évaluation par exemple.
L'utilisation de la technologie P2P pour des téléchargements non autorisés est illégale. Par exemple pour les fichiers musicaux, il existe
actuellement de nombreux sites vous permettant de les télécharger en toute légalité tout en payant les droits d'usage de ces fichiers, de sorte que
les auteurs soient rémunérés pour leurs créations. L'utilisation du P2P pour télécharger des oeuvres non libres de droits, ou dont vous ne vous êtes
pas acquités des droits, est illégal.
2.1. Comment partager de l'informationLorsque l'on souhaite partager de l'information entre plusieurs ordinateurs, il existe de nombreuses solutions. Celle qui est la plus mise en oeuvre aujourd'hui est le modèle client/serveur.2.1.1. Mode Client/Serveur
Rien de complexe dans cette notion : si vous préférez une image plus concrète, remplacez le contexte informatique par le
contexte d'un restaurant, c'est identique ;)
Les clients désignent les applications qui cherchent à exploiter des services proposés par un serveur. Les clients ne
disposent pas d'informations, mais sont capables d'aller en chercher. Par exemple, on peut citer les navigateurs web
(Firefox, Internet Explorer, Mozilla, Safari, ...), mais aussi les logiciels de courrier électroniques (mutt, outlook,
thunderbird, ...), les clients FTP, ... Si vous avez un ordinateur branché sur un réseau (internet ou réseau local), alors vous vous êtes déjà servi d'un client.
De l'autre côté sont les serveurs. Souvent situés sur des machines puissantes afin de pouvoir servir plusieurs clients en même
temps ; ils ont l'information à disposition.
Un des gros avantages de ce mode client/serveur est sa relative simplicité de fonctionnement. En effet, une fois que vous avez
l'information que vous souhaitez partager, vous ouvrez un serveur (un peu comme on ouvre un restaurant), et vous n'avez plus
qu'à attendre les clients. Bien sur, ici, pas question d'attendre que quelqu'un rentre à l'improviste, il faut faire connaître
votre serveur.
Ce mode permet surtout une grande simplicité des mises à jour : chaque possesseur d'information la met sur un serveur (on parle
alors d'upload d'une information, contrairement au download qui consiste à rapatrier les informations du serveur vers le
client), et elle est disponible immédiatement pour tout le monde.
Le problème de ce mode de fonctionnement est son coût. En effet, si un ordinateur un peu puissant suffit largement à traiter
quelques requêtes simultanées, dès que le nombre de requête devient grand, les serveurs (ordinateurs utilisés uniquement pour
fournir un type de service) doivent se multiplier, et la connexion réseau doit également être augmentée, faute de quoi les
performances (temps de réponse du serveur) seront dégradées. Le pire des cas est un crash du serveur : celui-ci n'est plus en
mesure de répondre.
2.1.2. Le P2P
Une autre manière de partager de l'information est de ne pas se servir de serveurs, mais de relier tous les possesseurs
d'informations. Cela a pour avantage de supprimer les serveurs, qui sont des machines coûteuses car très puissantes. En
revanche, cela complique énormément la notion de recherche d'informations.
Ce mode de partage de l'information est le P2P. On peut considérer que chaque utilisateur d'un P2P est à la fois un peu
client et serveur (nous verrons par la suite que ce n'est pas toujours exact, en fonction de l'architecture utilisée).
Une fois que le demandeur sait où est l'information qu'il désire, les deux ordinateurs sont alors en mesure de s'échange
directement des informations, sans plus devoir passer par une machine tiers, c'est à dire sans utiliser des ressources
autres que les leurs.
2.1.3. Avantages de l'un par rapport à l'autre
Considérons une entreprise. Pour des raisons de sécurité évidentes, elle souhaite être en mesure de sauver les informations,
afin d'en disposer même si un ordinateur (quel qu'il soit) tombe en panne. Il est donc logique qu'elle s'oriente vers un modèle
client/serveur : chaque employé, une fois le soir venu, transférera ses données sur un serveur, et une copie des données du
serveur sera effectué (ces opérations sont automatiques et ne demandent plus d'intervention, rendant la tache encore plus évidente).
Par contre, il est certain que cela a un coût non négligeable pour l'entreprise : elle doit disposer de suffisamment de serveurs
en fonction du nombre d'employés, doit effectuer une sauvegarde quotidienne des données, ...
De même, cette entreprise ne souhaite pas que toutes les données soient accessibles à tout le monde. Or il est plus facile de
surveiller quelques serveurs plutôt que quelques milliers de machines... En outre, les logiciels P2P n'offrent que peu de
protections et de confidentialité sur les fichiers échangés, comme nous le verrons par la suite.
En revanche, le P2P a pour lui sa simplicité de mise en place et d'utilisation, ce que recherche un particulier. D'où un
certain engouement pour ce type de technologie.
Pour ceux qui n'auraient jamais utilisé un logiciel de P2P, voici ce que ça demande : télécharger un logiciel depuis le site
qui a (généralement) le même nom que le logiciel. L'installer en cliquant toujours sur suivant". Double-cliquer dessus pour le
lancer, et cliquer sur se connecter". Ensuite, vous avez à votre disposition un mode de recherche, qui vous permettra de trouver
ce que vous voulez. Il ne vous reste plus ensuite qu'à double-cliquer sur le fichier proposé en retour de votre recherche, et
attendre qu'il l'ait télécharger.
Certes, cela se passe bien ainsi. Mais alors pourquoi existe-t-il tant de logiciels différents ? Et quelles sont leurs
différences ? C'est justement à ce type de question que le chapitre suivant répond. Ensuite, nous verrons le P2P sémantique,
avant de parler d'autres axes de recherches menées sur le P2P.
3. Les architectures P2P3.1. Les architectures centraliséesFigure 1 : Exemple d'architecture centralisée
Le représentant le plus connu de ce mode de P2P est sans doute Napster.
(1)
Cette architecture se compose d'un unique serveur, dont le but est de recenser les fichiers proposés par les différents clients.
Contrairement au mode Client/Serveur, ce serveur centralisé ne dispose pas des fichiers. Il dispose principalement de deux types
d'informations : celles sur le fichier (nom, taille, ...), et celles sur l'utilisateur (nom utilisé, IP, nombre de fichiers,
type de connexion, ...)
Du côté du client, rien de plus simple : une fois connecté grâce au logiciel spécifique, il peut faire des recherches comme avec
un moteur classique. On obtient alors une liste d'utilisateurs disposant de la ressource désirée. Il suffit alors de cliquer sur
le bon lien pour commencer le téléchargement. Cette étape est complètement indépendante du serveur, et représente la seule partie
P2P du logiciel.
Avantages
3.1.1. Un exemple de réseau centralisé : Napster Napster2 est le réseau centralisé par excellence. Figure 2: Exemple de fonctionnement de Napster
3.2. Architecture centralisée à serveurs multiplesFigure 3: Exemple d'architecture centralisée à serveurs multiples
Afin de pallier aux déficiences introduites par un unique serveur, une amélioration consiste à remplacer le serveur central par
un réseau de serveurs. L'exemple le plus connu est sans doute le réseau eDonkey. Dans ce type de réseau, on diffère encore une fois très bien les serveurs des clients. Ce sont d'ailleurs deux programmes totalement distincts. Le serveur est, encore une fois, une machine puissante, (généralement) dédiée à faire tourner le programme (non pas que le programme soit lourd, mais les requêtes des utilisateurs oui). Tout le problème d'un serveur est de se faire connaître du public. Les serveurs sont ensuite en mesure de se connecter entre eux, en fonction de leur connaissance les uns des autres. On peut donc avoir plusieurs réseaux indépendants (CF figure 3). Lorsqu'un client lance le logiciel, il est alors obligé de choisir un serveur auquel se connecter. Pour cela, il doit connaître au moins un serveur. Des listes de serveurs sont donc disponibles sur le net, tout le problème résidant alors dans le fait de choisir le bon... Pour ce faire, le logiciel client permet de disposer d'une description de chaque serveur avec son nom, son IP, une description (faite par le propriétaire du serveur), le ping, le nombre d'utilisateurs, le nombre maximal d'utilisateurs et le nombre de fichiers partagés. 3.2.1. Un exemple d'architecture à serveurs multiples : le réseau eDonkey
Ce réseau, dont le but est de permettre le partage de gros fichiers multi-source dispose de deux réseaux de pairs : les clients et
les serveurs. Un serveur connaît la localisation des documents contenus chez les clients qui sont connectés à lui, alors que
le client va stocker des morceaux de fichiers. Les fichiers
les fichiers sont identifiés de manière unique grâce à l'algorithme MD4
(2)
, sur les serveurs de localisation. Afin de permettre un meilleur partage des fichiers, ceux-ci sont diviser en segments de 9 Mo chacun. Dès qu'un segment est complet, celui-ci est partagé par le client. Ce système permet d'obtenir un plus grand nombre de personnes disposant du fichier, le rendant ainsi plus facile à obtenir, puisqu'une autre fonctionnalité d'eDonkey est le téléchargement depuis plusieurs sources. Un dernier point intéressant est la propagation des sources entre les clients. Supposons que l'on a 3 clients : 1, 2 et 3. 1 et 2 sont sur le même serveur, et 3 sur un autre. Enfin, 3 dispose d'un gros fichier (mettons 90 Mo) que voudront 2, puis 1.
Comme en mode client/serveur, les serveurs disposent ici de logiciels spécifiques permettant aux clients de se connecter
explicitement. Afin de faciliter le choix du client, le logiciel permet de voir plusieurs informations à propos du serveur, comme le nom ou le ping, mais aussi des informations plus spécifiques comme le nombre de clients maximum, les nombre de clients connectés, ou encore le nombre de fichiers partagés. Ici aussi, les serveurs sont susceptibles d'être reliés entre eux afin de permettre à leurs clients de disposer de plus d'informations. Toutefois, le partage des informations inter-serveurs ne semble pas aussi efficace que le partage de ressources au sein d'un même serveur. Le client
A l'instar de la plupart des autres p2p cités ici, il n'existe pas un unique logiciel pour se connecter au réseau eDonkey.
On peut par exemple citer eDonkey(http://www.edonkey2000.com) ou eMule
(http://www.emule-projet.net), qui est un peu son pendant français (avec
d'autres fonctionnalités également), mais aussi des projets moins attendus comme MLDonkey
(http://www.nongnu.org/mldonkey/), développé par l'INRIA
(3)
pour développer les langages fonctionnels
(4)
.
3.3. Architectures décentraliséesFigure 4: Exemple d'architecture décentralisée
Une autre architecture de P2P est l'architecture décentralisée. Gnutella
est un des représentants de cette architecture P2P. Ici, plus de serveurs au sens commun : tout le monde est à la fois client et serveur. Cela pose principalement un problème qui n'apparaît pas avec une architecture centralisée : comment connaître la topologie du réseau ? Lorsqu'un client souhaite se connecter, il va donc être nécessaire d'envoyer un message broadcast (5) afin de savoir quels autres personnes du réseau sont actives. Seules ces personnes répondront au message broadcast. On est alors connecté au réseau. Afin de garder des informations cohérentes, un utilisateur n'est pas connecté directement à plus de 3 ou 4 noeuds, et la hauteur d'arbre (6) est généralement de 7. Lors des recherches, chaque noeud propage la requête à ses voisins (généralement 4), qui font de même. Le nombre de propagation est toutefois limité (généralement 7), et il est possible de détecter les cycles grâce à l'identificateur des paquets. 3.3.1. Principes Sous-jacents ...
Ces réseaux reposent sur les principes sous-jacents suivants :
3.3.2. ... et réalités
3.3.3. Un exemple de réseau décentralisé : Gnutella
Nous supposons ici que le pair A souhaite se connecter au réseau Gnutella. Afin de rendre les schema plus lisibles,
nous limitons le nombre de pairs à 5 (et donc aussi le nombre de propagations). Pour se faire, il va tout d'abord
émettre un message ping (en traits pleins rouges sur la figure ). Ici, celui-ci est d'abord reçu par B, qui va alors faire
deux choses :
Ceux-ci répètent alors la même chose (sauf si le nombre de propagations a déjà été atteint).
Figure 5: Ajout d'un noeud dans Gnutella
A va donc connaître les noeuds B, C, D et E.
On peut d'ailleurs remarquer que E connaît l'existence de A grâce à C et à D, mais qu'il ne répond qu'une fois
(via le chemin le plus court, ou le premier qui l'a contacté).
Recherche
Dans cet exemple, A cherche à obtenir le fichier a.txt, disponible chez C et E (ce que A ne sait pas bien évidemment).
Figure 6: Exemple de recherche dans Gnutella
A va donc envoyer un message Query (traits pleins rouges) au(x) premier(s) noeud(s) qu'il connaît (ici B), qui se charge
Les autres noeuds font pareil, ce qui conduit C à répondre et à propager la requête.
A peut alors envoyer à C le message get a.txt, et le transfert peut alors commencer.
Observation de la Bande passante
3.3.4. Un autre exemple : Freenet
Freenet est un logiciel de P2P décentralisé, dont le but est la diffusion de fichiers de façon totalement anonyme.
Ainsi, les données ne sont pas téléchargées directement d'un pair à un autre, mais peuvent transiter par un ou plusieurs pairs.
Il est ainsi quasiment impossible de déterminer l'origine exact d'un message.
Afin de protéger les hébergeurs, tous les fichiers sont cryptés. Le possesseur d'un noeud ne peut donc pas connaître le contenu
des fichiers stockés sur son noeud.
Attention, il est illégal de posséder des fichiers ayant un contenu contraire à la loi.
Dans la mesure où le but de freenet est de garantir un anonymat maximal, les mécanismes de routage sont assez complexe,
et ne seront donc pas traités ici. On trouve de très bons documents à ce sujet sur l'internet ([
(11)
] par exemple).
Il suffit juste de savoir que si le noeud 1 cherche une information, il demandera à son voisin (appelons-le 2) qui, s'il ne
dispose pas de la ressource, transmettra la requête à 3, et ainsi de suite.
Faiblesses de ce réseau
Freenet dispose de nombreuses faiblesse, comme par exemple :
Freenet n'est pas le logiciel P2P le plus simple d'accès : la mise à disposition de fichier reste complexe, et les recherches
de fichiers fastidieuses (proximité sémantique de la clef) ; en outre, les temps de téléchargement sont très très supérieurs à
ses concurrents.
En revanche, les fichiers sont cryptés, et la source de téléchargement est inconnue du destinataire (et quasiment introuvable),
assurant ainsi une grande sécurité et de l'anonymat.
Le choix d'utiliser Freenet ou non va donc dépendre des attentes de chacun.
3.4. Une architecture hybride : les super-peers3.4.1. Généralités
Il s'agit ici d'un modèle que l'on pourrait qualifier d'hybride entre le mode client/serveur et le P2P. En effet,
tous les noeuds ne sont plus égaux :
Le logiciel de P2P le plus connu utilisant cette technologie est sans doute Kazaa.
Figure 7: Exemple de réseau super-peer 3.4.2. Les super-peer redondants
Le choix d'un super-peer introduit de la sensibilité aux défaillances : si le super-peer n'est plus joignables, tous ses clients
sont coupés du réseau. Une des améliorations possible est donc de choisir parmi K super-peers au lieu d'un seul. Une restriction
est que les super-peers soient partenaires.
Dans ce cas, chaque partenaire est relié à chaque client, et possède un index de toutes leurs ressources. Les clients envoient
leurs requêtes selon le principe du Round Robin
(13)
, ce qui permet de faire baisser la charge d'un facteur k.
En revanche, la charge du coût d'entré d'un nouveau client est multipliée par K, et le nombre de connections ouvertes de K²,
comme le montre le graphique .
Figure 8: Exemple de réseau super-peer redondant 3.4.3. Règles de conception d'un super-peer
Pour plus d'information, il est vivement conseillé de lire [
(14)
], qui décrit bien plus précisément ces règles de conceptions :
3.4.4. Un exemple de réseau super-nodal : Kazaa
Bien que les détails de fonctionnement de Kazaa ne soient pas entièrement divulgués,
on sait que ce logiciel utilise une technique de super-peer. En outre, il s'intéresse aussi au problème de la qualité des
noeuds (fiabilité des informations, mais aussi taux et vitesse d'upload, ...)
Principes de Kazaa
Un nouvel utilisateur doit ouvrir un compte, déclarer ses répertoires de fichier partagés. En fonction de sa bande-passante, le
logiciel décidera si le client est ou non un super-peer (possibilité de l'activer ou de le désactiver manuellement).
Une incertitude règne quand à la façon de connecter deux super-peer ensembles. Il se peut que ce soit grâce à un protocole décentralisé
de type broadcast.
Lors d'une recherche, un noeud envoie sa requête à son super-peer (il lui transmet en même temps un index de ses fichiers partagés).
Le super-noeud dispose d'un index des ses propres ressources, ainsi que celle des noeuds de son cluster, ce qui lui permet de répondre
à la requête.
Les files d'attentes sont paramétrées en fonction de plusieurs critères, dont le ratio upload/download et la qualité des ressources.
3.5. Seti@home
Dans la plupart des articles sur le P2P, on retrouve quelque part un paragraphe concernant le projet Seti@home.
Je tiens à préciser qu'il n'y a aucune raison de rapprocher ce projet du P2P. En effet, il y a un serveur centralisé,
qui communique indépendamment avec chacun des utilisateurs ; ceux-ci sont incapables de communiquer entre eux.
On a donc bien affaire ici à un programme fonctionnant typiquement sur le mode client/serveur. Merci de votre attention.
4. Le P2P sémantique
Bien qu'étant encore au stade de la recherche, le P2P sémantique nous semblait intéressant à présenter ici. Il ne s'agit plus ici de
s'intéresser à une architecture ou à un programme précis, puisque la notion de P2P sémantique peut s'appliquer à toutes les architectures
et tous les programmes précités (selon des changements plus ou moins importants).
Le principe est d'ajouter de l'information dynamique aux tables de routage. Cette information peut être généraliste, ou bien au contraire
très spécifique, en fonction des besoins. Un des problèmes est de chercher à trouver un équilibre entre taille et précision.
4.1. Quelle information ajouter
On peut ajouter de l'information sur 3 points particuliers : le contenu des noeuds, les requêtes ou encore les utilisateurs.
4.2. Routing Indices
Le but des indices de routage, comme expliqué dans [
(18)
] est d'introduire de l'information sur le contenu des noeuds (index).
Dans ce sens, c'est un système analogue aux systèmes d'indices répartis et hiérarchisés pour les moteurs de recherche sur l'internet.
Figure 9: Exemple de Routing Indices
Table 1: Exemple de Routing Indices pour le noeud A
Le tableau 1 se lit de la façon suivante : B peut accéder à 100 documents, dont 20 traitent de BDD, 30 de langages et 10 de théorie. D accède à 200 documents : 100 concernent les BDD, 150 les langages, et 100 la théorie.
Dans la mesure où ce tableau représente les informations pour le noeud A, on peut en conclure que ce noeud est en mesure d'accéder à
1 300 documents (attention, ils ne sont pas forcément différents, puisque B, C D ainsi que leurs fils n'ont pas de liaisons directes),
dont 120 traitent de BDD, 230 de langages, 300 de réseaux et 110 de théorie. Cet exemple nous montre bien : Que tous les documents n'apparaissent pas forcément dans une catégorie : B permet d'accéder à 100 documents, dont seulement 60 sont répertoriés dans les domaines cités. Un document peut couvrir deux domaines, et donc être répertorié deux fois. C'est ici le cas pour le noeud D. Plus concrètement, un document traitant de la théorie du langage SQL sera répertorié en théorie, en langages, et en BDD. Algorithme de recherche
4.3. SON : Semantic Overlay NetworksFigure 10: Exemple de SON
L'exemple présenté sur la figure 10 nous montre 8 noeuds classés par genre de musique. Un noeud est relié à un autre par un lien logique
de type ni, nj, lk (lire noeud i, noeud j, lien k). Par exemple, sur le schema, le lien entre A et B est : A, B, 'Rock'. Les liens ayant le même l forment un SON. Ici, nous avons les SON suivants : Rock, avec les noeuds A, B et C Rap, avec B, E, et F Jazz, avec E, F et G Techno, avec F, D et H
Un SON avec un seul label est un P2P classique. On peut également remarquer que lorsque le SON a été choisi, suite à une requête,
alors on retombe une nouvelle fois sur un P2P classique. Encore une fois, le plus gros problème vient de la définition sémantique : comment définir le SON ? Pour ce faire, on peut imaginer un style (musique) avec des sous-styles (Rock, Jazz, ...) comprenant eux-mêmes d'autres sous-styles (Pop, Rock'n Roll, indépendants, ... pour Rock par exemple). Une bonne hiérarchie de classification demande : Des classes dont les documents appartiennent à un petit nombre de noeuds Que le noeuds se trouvent dans peu de classes Des classifieurs faciles à construire et les plus fiables possibles. Résolution d'une requête
Il faut tout d'abord chercher les concepts correspondants à la requête, puis ensuite propager cette dernière dans le SON correspondant,
ainsi qu'à ses ascendants et descendants.
Bilan des SON
Ces réseaux reposent avant tout sur la classification des documents. Celle-ci est relativement complexe à mettre en uvre, et est
surtout liée à un domaine précis. Il est possible d'envisager des SON ayant traits à des domaines divers, mais d'autre problèmes
surgissent alors. Les SON favorisent la précision, mais pas la complétude. Du point de vue technique, on peut tout à fait paralléliser les SON afin d'obtenir des temps de réponse meilleurs (les requêtes sont alors lancées dans chacun des SON sélectionnés par un classifieur). Les résultats expérimentaux montrent une amélioration notable du nombre de messages comparativement à Gnutella. 5. Problèmes ouverts dans la recherche sur les P2P
Un problème ouvert est un problème auquel on n'a pas encore trouvé de solution, et auquel on est susceptible d'en trouver une
(20)
.
6. Utilisations du P2P6.1. Calculer
Le P2P permet de mettre en commun de nombreux ordinateurs, disposant chacun de ressources limitées. Mais en "additionnant"
les ressources de chacun, on obtient des performances théoriques gargantuesques. Un exemple parlant aux mathématiciens est le calcul de matrices : l'une des méthodes permettant l'inversion des matrices nécessite n3 opérations (n étant la taille de la matrice (qui comporte donc n² cases)). Un des challenges actuels est de réaliser un tel calcul grâce au P2P, avec n = 10^6 (un million), soit un total de 10^18 (un milliard de milliard) opérations ... (21) Le but est donc de diviser ce gros calcul qu'est l'inversion de la matrice en petits calculs plus ou moins indépendants que l'on pourra répartir entre les pairs. Cet algorithme demande cependant d'avoir déjà une partie des informations pour pouvoir continuer. Il faudra donc que les pairs échangent des données afin de pouvoir effectuer de nouveaux calculs. Toutefois, outre le fait de trouver suffisamment de pairs pour réaliser ce test, d'autres problèmes surviennent :
Des solutions sont donc actuellement étudiées afin de réaliser de grands calculs grâce au P2P. On peut citer, entre autres projets :
6.2. Diffuser des données
La diffusion de données en utilisant le P2P permettrait de toucher beaucoup plus de personnes avec des moyens bien inférieurs à
ceux nécessaires aujourd'hui. Actuellement, si on veut émettre de la vidéo (par exemple), il faut non seulement une machine qui
diffuse la vidéo (logique), mais également une très très bonne connexion : plus le nombre de gens est important, plus la connexion
doit être grosse
(22)
. En revanche, en utilisant le P2P, chaque personne devient à la fois récepteur et émetteur. Ainsi, le diffuseur initial n'a plus que quelques clients connectés à lui, chacun de ces clients jouant également le rôle de diffuseurs pour d'autres clients. Encore une fois, c'est plus complexe à mettre en uvre qu'a expliquer, les principaux problèmes étant la volatilité des clients (enfin des serveurs devrai-je dire), qui pose des problèmes de rattachement des clients, comme le montrent les figures , et . Figure 11: Modèle de diffusion avant le départ d'un pair Figure 12: Situation au moment du départ Figure 13: Une des manières de relier les 3 pairs orphelins 7. Conclusion
Dans cet article, j'ai souhaité mettre en avant le fait qu'il existe différents modèles de P2P, chacun disposant d'avantages et
d'inconvénients. Il est donc logique que l'utilisation faite de ceux-ci ne soit pas la même. Etonnamment, la recherche sur les P2P est en retard. En effet, contrairement aux cas plus traditionnels, cette technologie n'est pas issue de la recherche fondamentale, mais a été récupérée par cette dernière. C'est pour cette raison qu'on en n'est qu'on début du P2P sémantique, ou même du calcul P2P, de la diffusion de données, ... Si vous souhaitez vous renseigner sur ces technologies, le plus simple est encore d'aller voir les sites des projets qui vous semblent intéressants, ou de rechercher des informations via un moteur de recherche. 8. Notes
|