- Pair à pair
-
« P2P » et « p2p » redirigent ici. Pour les autres sens, voir P2P (homonymie). Le pair à pair ou pair-à-pair (traduction de l'anglicisme peer-to-peer, souvent abrégé « P2P ») est un modèle de réseau informatique proche du modèle client-serveur mais où chaque client est aussi un serveur.
Le pair à pair peut être centralisé (les connexions passant par un serveur intermédiaire) ou décentralisé (les connexions se faisant directement). Il peut servir au partage de fichiers en pair à pair, au calcul scientifique ou à la communication.
Sommaire
Principe général
Les systèmes pair-à-pair permettent à plusieurs ordinateurs de communiquer via un réseau, de partager simplement des objets – des fichiers le plus souvent, mais également des flux multimédia continus (streaming), le calcul réparti, un service (comme la téléphonie avec Skype), etc. sur Internet.
Le pair-à-pair a permis une décentralisation des systèmes, auparavant basés sur quelques serveurs, en permettant à tous les ordinateurs de jouer le rôle de client et serveur (voir client-serveur).
En particulier, les systèmes de partage de fichiers permettent de rendre les objets d'autant plus disponibles qu'ils sont populaires, et donc répliqués sur un grand nombre de nœuds. Cela permet alors de diminuer la charge (en nombre de requêtes) imposée aux nœuds partageant les fichiers populaires, ce qui facilite l'augmentation du nombre de nœuds et donc de fichiers dans le réseau. C'est ce qu'on appelle le passage à l'échelle.
Illustration de réseaux client-serveurs et pair-à-pair. L'utilisation d'un système pair-à-pair nécessite pour chaque nœud l'utilisation d'un logiciel particulier. Ce logiciel, qui remplit alors à la fois les fonctions de client et de serveur, est parfois appelé servent (de la contraction de « serveur » et de « client », due à Gnutella), ou plus communément mais de façon réductrice, « client ». C'est là l'origine du terme pair (de l'anglais : peer) que l'on trouve dans pair-à-pair : les communications et les échanges se font entre des nœuds qui ont la même responsabilité dans le système.
Le modèle pair-à-pair va bien plus loin que les applications de partage de fichiers.
Il permet en effet de décentraliser des services et de mettre à disposition des ressources dans un réseau.
Tout nœud d'un réseau pair-à-pair peut alors proposer des objets et en obtenir sur le réseau.
Les systèmes pair-à-pair permettent donc de faciliter le partage d'informations. Ils rendent aussi la censure ou les attaques légales ou pirates plus difficiles. Ces atouts font des systèmes pair-à-pair des outils de choix pour décentraliser des services qui doivent assurer une haute disponibilité tout en permettant de faibles coûts d'entretien. Toutefois, ces systèmes sont plus complexes à concevoir que les systèmes client-serveur.
Des propositions utilisant le modèle pair-à-pair sont applicables à plus ou moins long terme pour ne plus utiliser de serveurs, entre autres pour :
- les DNS ;
- la mise à disposition de logiciels (distributions Linux comme la Mandriva, mises-à-jour Microsoft, World of Warcraft, etc.) ;
- diffuser des contenus multimédia (streaming) ;
- les logiciels de messagerie en ligne.
L'application la plus connue actuellement reste cependant le partage de fichiers par le biais de logiciel à la fois client et serveur comme eDonkey ou eMule (protocole originel eDonkey), FastTrack (utilisé par KaZaA), etc.
Toutefois, les systèmes pair-à-pair décentralisés ont plus de difficultés que les systèmes client-serveur pour diffuser l'information et coordonner l'interconnexion des nœuds, donc assurer des faibles délais aux requêtes. C'est pourquoi sont apparus des systèmes pair-à-pair qui imposent une structure entre les nœuds connectés, afin de garantir des délais de communication faibles : il s'agit des systèmes décentralisés structurés. Ces systèmes s'inspirent de structures de graphes pour interconnecter les nœuds. Ils ont ainsi pu se passer de serveurs pour assurer une répartition de la charge parmi les nœuds en terme :
- de trafic de contrôle reçu et envoyé par chaque nœud, ce qui revient à limiter le nombre de nœuds auxquels est connecté chaque nœud ;
- de nombre de requêtes transmis à un nœud ;
- de responsabilité pour l'accès aux objets partagés dans le réseau.
Enfin, ces systèmes permettent souvent d'utiliser un routage proche de celui du graphe dont ils s'inspirent, diminuant ainsi le nombre de messages de requêtes transitant dans le réseau.
Le pair-à-pair ne doit pas être confondu avec la notion de liaison point à point (Point-to-Point en anglais), ni avec le protocole point à point (PPP).
Applications
Le pair-à-pair ne s'est pas fait connaître en tant que principe mais par les applications qui ont pu émerger selon ce nouveau modèle de réseau.
Partage de fichiers
L'application la plus répandue du pair-à-pair est le partage de fichiers. L'avènement des connexions à Internet à haut débit (ADSL notamment) sans limite de temps a contribué à cet essor.
Chaque internaute est un pair du réseau et les ressources sont des fichiers. Chacun peut donc partager ses fichiers et télécharger les fichiers des autres. Ces systèmes s'avèrent très efficaces y compris quand il s'agit d'échanger de gros volumes de données.
Parmi les applications les plus utilisées, on peut distinguer BitTorrent et eMule.
Calcul distribué
Une seconde application destinée au grand public ou à la recherche mais toutefois moins répandue que le partage de fichier est la possibilité pour les internautes de mettre à disposition une partie de leur puissance de calcul.
Les ordinateurs d'aujourd'hui sont tellement puissants que la majeure partie du temps, une grande partie de leur processeur est disponible pour effectuer des calculs. Le projet BOINC a saisi cette opportunité pour créer un gigantesque parc informatique réparti dans le monde afin d'utiliser cette immense puissance de calcul totale pour effectuer des calculs trop complexes pour être réalisés dans un laboratoire.
Le projet BOINC demande donc au particulier de permettre l'usage de la puissance de calcul dont il n'a pas immédiatement besoin pour contribuer à la recherche sur le repliement de protéine (Folding@Home) et même la recherche d'intelligence extra-terrestre par analyse de spectre électromagnétique (SETI@home).
Systèmes de fichiers répartis
Autres applications
Le concept de pair-à-pair est également décliné dans d'autres logiciels tels que Skype, un logiciel de téléphonie.
Architectures logicielles
Les serveurs pair-à-pair fonctionnent dans la quasi-totalité des cas en mode synchrone : le transfert d'information est limité aux éléments connectés en même temps au réseau.
Ils peuvent utiliser le protocole TCP comme couche de transport des données (il fonctionne en duplex, la réception des données est donc confirmée et leur intégrité est assurée).
En revanche, certaines utilisations comme le continu (streaming) nécessitent l'emploi d'un protocole plus léger et plus rapide, comme UDP, bien que moins fiable, quitte à assurer elles-mêmes l'intégrité des données transmises. UDP est aussi le protocole le plus utilisé pour transmettre des messages entre serveurs dans les systèmes en partie centralisés.
Les systèmes pair-à-pair se répartissent en plusieurs grandes catégories, selon leur organisation.
Architecture centralisée
Dans cette architecture, un client (un logiciel utilisé par les membres) se connecte à un serveur qui gère les partages, la recherche, l'insertion d'informations, bien que celles-ci transitent directement d'un utilisateur à l'autre.
Certains considèrent que de telles architectures ne sont pas pair-à-pair, car un serveur central intervient dans le processus. D'autres leur répondent que les fichiers transférés ne passent pas par le serveur central. C'est la solution la plus fragile puisque le serveur central est indispensable au réseau. Ainsi, s'il est supprimé, à la suite d'une action en justice par exemple, comme ce fut le cas avec Napster et Audiogalaxy, tout le réseau s'effondre.
Architecture décentralisée
Une telle architecture permet de résister à de telles attaques puisque le logiciel client ne se connecte pas à un unique serveur mais à plusieurs. Le système est ainsi plus robuste mais la recherche d'informations est plus difficile. Elle peut s'effectuer dans des systèmes décentralisés non-structurés, comme Gnutella, où la recherche nécessite un nombre de messages élevé, proportionnel au nombre d'utilisateurs du réseau (et exponentiel suivant la profondeur de recherche). Dans les systèmes décentralisés structurés, une organisation de connexion est maintenue entre les nœuds. La plupart est basée sur les table de hachage distribuées, permettant de réaliser des recherches en un nombre de messages croissant de façon logarithmique avec le nombre d'utilisateurs du réseau, comme CAN, Chord, Freenet, GNUnet, I2P, Tapestry, Pastry et Symphony.
Une autre solution a été envisagée, consistant en l'utilisation de « super-nœuds », éléments du réseau choisis en fonction de leur puissance de calcul et de leur bande passante, réalisant des fonctions utiles au système comme l'indexation des informations et le rôle d'intermédiaire dans les requêtes. Cette solution, rendant le système un peu moins robuste (les cibles à « attaquer » dans le réseau pour que le système devienne inopérant sont moins nombreuses que dans un système de type Gnutella, par exemple), est employée dans les systèmes FastTrack, comme KaZaA. Les nœuds du réseau peuvent alors devenir super-nœuds et vice-versa, selon les besoins du système ou de leur propre choix.
De la même façon, le système eDonkey2000 utilise des serveurs fixes, plus vulnérables car moins nombreux et moins souple que les super-nœuds FastTrack.
Protocoles réseaux
Les connexions se font par TCP/IP, le plus utilisé sur internet, qui intègre un contrôle de réception des données, ou par UDP lorsque l'application choisit de contrôler elle-même la bonne réception des données.
Plusieurs systèmes pair-à-pair sont proposés sous forme de réseau abstrait, même s'ils ne sont pas tous, en 2009, très répandus. Les applications proposées à l'utilisateur final fonctionnent à l'aide de tels protocoles réseaux. Parmi eux, on trouve Mnet, Chord, Tapestry, Freenet, I2P (utilisé par iMule), Tor ou Koorde (en).
Sécurité
La plupart des questions de sécurité dans les réseaux P2P sont dues au partage de fichier. Les utilisateurs recherchent :
- L'anonymat (afin d'éviter d'éventuelles poursuites judiciaires) ;
- Le brouillage du protocole (afin d'éviter les filtrages du fournisseur d'accès internet) ;
- Le chiffrement (« on peut savoir qui je suis mais pas ce que je télécharge »).
Afin d'assurer l'anonymat des utilisateurs, un ou plusieurs de ces concepts sont mis en pratique dans des applications pair-à-pair :
Routage aléatoire
Les requêtes passent par plusieurs nœuds afin de rendre leur traçage difficile. Ces nœuds faisant transiter les informations sont d'autres utilisateurs du réseau, différents fragments d'un même fichier passent donc par différentes machines, et y sont parfois recopiés, selon le protocole (mécanisme de cache), avant de parvenir à l'ordinateur final ayant demandé le téléchargement.
Ce mécanisme de cache est souvent utilisé conjointement avec le chiffrement des données de façon à ce que les intermédiaires ne puissent pas voir ce qui transite.
Le routage aléatoire est mis en œuvre dans Freenet, I2P, Tor, stealthNet.
Réseaux de confiance : « Ami à ami »
Ce procédé est mis en œuvre dans WASTE, GNUnet, OneSwarm, Freenet.
Chiffrement des échanges
Ce procédé est mis en œuvre dans Freenet, I2P, Ants, stealthNet.
Évolution
Décentralisation
On peut constater, dans l'évolution des technologies pair-à-pair une tendance à toujours plus de décentralisation. Illustration avec les logiciels de partage de fichiers connus :
Technologie Ressources Recherche de ressources Recherche de pairs Multi-source Architecture client-serveur centralisé centralisé centralisé non Napster (1999) décentralisé centralisé centralisé non Direct Connect (?) décentralisé décentralisé centralisé non eDonkey (2003) décentralisé semi-centralisé semi-centralisé oui Kademlia (2002) décentralisé décentralisé décentralisé oui Instantanéité d'accès à la ressource
Un des avantages de l'accès client-serveur est l'instantanéité avec laquelle on obtient la ressource. C'est pourquoi le téléchargement par http, ftp ou via les newsgroups sont encore utilisés bien qu'étant des systèmes typiquement client-serveur.
L'usage des logiciels de transfert de fichiers, de l'époque de Napster à celle de BitTorrent, est d'attendre l'arrivée du fichier de plusieurs heures à plusieurs jours. Plusieurs initiatives tentent de combler cette lacune. C'est par exemple le cas de Freenet mais aussi de Wuala qui veut rendre l'accès aux fichiers stockés en réseau aussi rapide que l'accès à un fichier local.
Optimisation par proximité géographique
Proactive network Provider Participation for P2P ou P4P est un groupe de travail qui vise au développement de technologies permettant d'optimiser les échanges pair-à-pair. Ils partent du principe que des pairs proches géographiquement sont plus à même d'échanger des données.
Remarque : Le P3P, malgré son nom, n'a rien à voir avec le P2P et n'en est pas une évolution. Il s'agit de la Platform for Privacy Preferences : une initiative du W3C qui vise à améliorer la sécurité des échanges sur le Web.
Évolution de la recherche scientifique
Le pair-à-pair et, de façon plus générale les systèmes distribués, sont le sujet de nombreuses recherches universitaires en informatique.
Terminologie
Pour traduire « peer-to-peer » en français, « poste-à-poste » est la recommandation officielle faite à la fois en France par la Commission générale de terminologie et de néologie[1] et au Québec par l'OQLF[2], ces organismes reconnaissant cependant tous les deux l'expression « pair-à-pair » comme synonyme. L'anglicisme reste néanmoins très utilisé en français.
D'autre part, l'OQLF recommande les traits d'union pour « poste-à-poste » et « pair-à-pair » lorsqu'ils sont utilisés comme substantifs, mais pas lorsqu'ils ont une valeur adjectivale ; l'organisme rappelle également que ces expressions sont invariables[2].
- Le terme de système pair-à-pair permet de nommer un ensemble constitué d'utilisateurs (en nombre pas forcément défini, ni fixe, mais plutôt de manière générale), du protocole qui leur permet de communiquer (Gnutella, BitTorrent, CAN, etc.), et du fonctionnement du protocole entre ces machines ;
- le terme de réseau pair-à-pair permet de désigner les machines et leur interconnexion à un moment donné, avec un nombre défini de machines / utilisateurs ;
- le terme de nœud permet de désigner le logiciel présent sur une machine, donc souvent un utilisateur (mais éventuellement plusieurs) ;
- le terme de lien désigne une connexion (souvent TCP) entre deux nœuds ;
- le terme d'objet désigne ce qui est partagé dans un système pair-à-pair.
Liste de logiciels pair-à-pair
BitTorrent
~ ABC ~ Azureus ~ BitComet ~ BitTornado ~ BitTorrent ~ BT++ ~ Deluge ~ eXeem ~ KTorrent ~ Miro ~ mlDonkey ~ Opera ~ PTC ~ qBittorrent ~ Shareaza ~ TorrentStorm ~ Transmission ~ µTorrent ~ WinMobile Torrent ~ Xtorrent
Gnutella
Limewire et son clone Frostwire ~ Shareaza ~ Acquisition (Mac) ~ BearShare ~ Cabos (Mac : Aquisition + Limewire) ~ Gnucleus ~ mlDonkey ~ Morpheus ~ mlmac ~ Poisoned ~ PeerCast ~ Phex ~ Swapper ~ XoloX ~ Mutella ~ IMesh ~ I2Phex
Napster
OpenNap ~ mlmac ~ Poisoned ~ lopster
FastTrack
Kazaa ~ Grokster arrêté par la MPAA et la RIAA ~ iMesh ~ gIFT ~ mlmac ~ Poisoned
eDonkey2000
eDonkey2000 (regroupement eDonkey2000 - Overnet) ~ mlDonkey ~ eMule ~ IMule ~ LMule ~ aMule ~ xMule ~ Shareaza ~ lphant
MP2P
Freenet
Frost - Le logiciel qui permet d'utiliser les forums de Freenet. ~ Fuqid - Pour publier des sites web. ~ Freemail
I2P
Robert, I2PSnark, ... - Les logiciels qui permettent d'utiliser le partage de fichier de la maniere bittorrent dans I2P.
iMule - Un clone d'aMule pour le partage de fichiers anonyme dans le réseau I2P.
I2P-Bote - e-mail anonyme et crypté de bout a bout. Système sans serveur.
I2P-Messenger - Un simple messenger instantan anonyme, crypté de bout a bout.
Syndie - Logiciel de forum et blog pour I2P.
GNUnet
GNUnet projet de la Free Software Foundation.
Direct Connect
Direct Connect ~ DC++ ~ Zion++ ~ BlackDC ~ oDC ~ rmDC
Ares Galaxy
~ Ares (Galaxy ou Lite) ~ FileCroc
Autres systèmes pair-à-pair chiffrés et/ou partiellement anonymes
Logiciel Type Statut Dernière MAJ connue Fiabilité Fonctionnalités Plateformes Forks connus AllianceP2P
Site officielF2F Développement actif 1.1.0d (15-fev-2010) Partage de fichiers entre amis Win, Java
(sources disponibles)ANts P2P
Site officielP2P Suspendu 1.6.0 (03-fev-2008) Partage de fichiers anonyme
Discussions anonymesJava
(sources disponibles)BitBlinder P2P Arrêté 2009 Bunzilla
Site officielP2P Développement actif 1.0.0.9 (20-juil-2009) Win
(binaires uniquement)Entropy P2P Arrêté 2004 Arrêté par l'auteur suite à des doutes sur la sécurité Filetopia
Site officielP2P Suspendu 3.04 (23-oct-2008) Partage anonyme de fichiers
Discussion anonyme
Forums anonymesWin
(binaires uniquement)FreeNet
Site officielP2P/F2F Développement actif 0.7.5 (21-aout-2009) Partage anonyme de fichiers
Navigation et hébergement de sites web anonymes (statiques)
Forums anonymes
Emails anonymesWin, Linux, Mac
(sources disponibles)GigaTribe (payant)
Site officielF2F Développement actif 3.0.1 (2009) Partage de fichiers entre amis Win, Linux, Mac
(binaires uniquement)GNUnet
Site officielP2P Développement actif 0.9.0 (03-juil-2010) Partage de fichiers anonyme Linux, Win (retard)
(sources disponibles)I2P
Site officielP2P (réseau) Développement actif 0.8 (12-juillet-2010) Partage anonyme de fichiers
Navigation et hébergement de sites web anonymes (dynamiques)
Forums anonymes
Emails anonymesJava
(sources disponibles)Calypso (ex Kommute)
Site officielP2P Développement actif 2010 Marabunta
Site officielP2P Développement actif 0.3.2 Forums anonymes Win, Linux
(sources disponibles)MUTE
Site officielP2P/F2F Arrêté 0.3 (12-oct-2004) Partage anonyme de fichiers Win, Linux, Mac
(sources disponibles)Calypso Netsukuku
Site officielP2P (réseau) ? (2009) (sources disponibles) Nodezilla
Site officielP2P/F2F Développement actif 0.5.15 (29-janv-2010) Partage anonyme de fichiers
Partage de photos entre amis
Tracker Bittorrent anonyme (via plugin Azureus)Win, Linux, Java
(sources disponibles)OFFSystem
Site officielP2P Développement actif 0.19.34 (28-janv-2010) Linux
(sources disponibles)Omemo
Site officielP2P Suspendu 0.30 (2008) Partage anonyme de fichiers Win
(sources disponibles)OneSwarm
Site officielP2P/F2F Développement actif 0.7 (17-aout-2010) Win, Linux, Mac
(sources disponibles)RetroShare
Site officielF2F Développement actif 0.5.1 (26-fevrier-2011) Partage de fichiers
Messagerie, Chat
Forums, Channels
Visualisation graphique du reseauWin, Linux, Mac
(sources disponibles)Perfect Dark
Site officielP2P Développement actif 1.06 Partage anonyme de fichiers Win
(binaires uniquement)RShare P2P Arrêté StealthNet Share P2P Arrêté 2006 StealthNet
Site officielP2P Développement actif 0.8.7.8 (29-sept-2010) Partage de fichiers anonyme Win, Linux
(sources disponibles)Tor
Site officielP2P (réseau) Développement actif 0.2.1 (28-sept-2010) Navigation web anonyme
Partage de fichiers anonymeWin, Linux, Mac
(sources disponibles)TudZu
Site officielP2P Développement actif 1.2 (Mars 2011) Partage de fichiers anonyme
Sauvegarde entre amisWin, linux
(binaires uniquement)Turtle
Site officielF2F Suspendu 1.5 (2006 ?) Linux
(binaires uniquement)Winny
Site officielP2P Arrêté 2.0β7.1 Utilisateurs arrêtés par les autorités[1] Partage anonyme de fichiers Win
(binaires uniquement)Share, Perfect Dark Autres systèmes
AllPeers ~ Alpine ~ bwa ~ CAN ~ Carracho ~ Chord ~ Dexter ~ Evernet ~ FreePastry ~ GPU ~ Groove ~ Hotwire ~ JXTA ~ JXMobile ~ KoffeePhoto ~ Kademlia ~ MojoNation ~ OFFsystem ~ P2PS ~ Pastry ~ PixVillage ~ Rshare ~ Scribe ~ Soulseek ~ Swarmcast ~ Symphony ~ Tapestry ~ TribalWeb ~ Wambo ~ WinMX ~ Hotline et KDX
Notes et références
- Vocabulaire de l'informatique, JORF n°111 du 13 mai 2006 (p. 7072, texte n° 130), NOR CTNX0609259X, sur Légifrance.
- Entrée « Peer-to-peer » sur Grand dictionnaire terminologique, OQLF
Voir aussi
Bibliographie
- (en) Ralf Steinmetz, Peer-to-peer systems and Applications, éd. Spinger (ISBN 3-540-29192-X)
Articles connexes
- Calcul parallèle
- Grille informatique
- (en) The World of Peer-to-Peer, un wikibook.
- Étude et utilisation des technologies pair-à-pair
Liens externes
- Conférences
- (en)The IEEE International Conference on Peer-to-Peer Computing
- (en)"Peer-to-Peer Paradigm" Minitrack in Americas Conference on Information Systems
- (en)CoNEXT (ACM SIGCOMM), Conference on emerging Networking EXperiments and Technologies.
- Ateliers
- (en)International Workshop on Peer-to-Peer Systems
- (en)The International Workshop on Hot Topics in Peer-to-Peer Systems
- (en)Fifth International Workshop on Agents and Peer-to-Peer Computing
- International Workshop on Global and Peer-to-Peer Computing
- (en)International Workshop on Peer-to-Peer Knowledge Management
Wikimedia Foundation. 2010.