Bref historique P2P introduit par napster (serveur musique), S. Fanning 1999 idée: partage contenu, stockage et bande passante des utilisateurs (domestiques) Plusieurs types Modèle Classement selon les ressources partagées calcul: seti@home, folding@home fichiers: napster, gnutella, freenet, edonkey,... Classement selon l organisation non structurée: pas d ordre entre les pairs structurée: organisation des pairs chaque utilisateur : stocke un sous-ensemble de fichiers a accès à (télécharge) des fichiers distribués sur l ensemble des pairs du système chaque nœud est à la fois client et serveur
Défis retrouver où se trouve un fichier particulier... passage à l échelle: gestion de millions de machines dynamique : machines peuvent apparaître/disparaître sans préavis Napster Suppose un système d index centralisé qui associe les fichiers aux machines actives Recherche d un fichier E: recherche dans l index machine contenant E (la + proche, la - chargée) transfert par ftp Avantages: simplicité, facile d implémenter un moteur de recherche au dessus du gestionnaire d index Inconvénients: robustesse, passage à l'échelle Exemple Napster 4 3 1 2
Principes Gnutella nœuds égaux avec 3 rôles: producteur/consommateur/routeur nœud connaît son voisinage immédiat réseau logique (overlay network) échange messages pour maintenir infrastructure et faire recherche chaque nœud est forcément routeur transfert de fichiers par http Gnutella Recherche de fichier système totalement décentralisé protocole de partage de fichiers sur un réseau remplace napster en le décentralisant tolérant aux pannes Bearshare, limewire, gnucleus difficile (par inondation) envoi requête à tous les voisins redistribution des requêtes par multicast réponse d une machine qui a le fichier pb: tout le rx peut être saturé de requêtes (résolu par attribution TTL, en gl TTL=7)
V(A)={B,C} V(B)={D,E} TTL=3 V(A)={B,C} V(C)={D,E} TTL=1 V(A)={B,C} V(C)={D,E} TTL=2 V(A)={B,C} V(C)={D,E}
Inondation Pare-feu nœuds ne connaissent que leurs voisins communication par transmission de voisin en voisin limitée par TTL (horizon) possibilité de cycles dans le réseau; résolu par mémorisation des messages antérieurs (cache limité dans le temps) sinon risque de surcharge Effectue un filtrage des paquets en entrée (destiné à un processus local) en sortie (permet de contacter un service distant) En général, filtrage en entrée: machine distante ne peut contacter le processus local (P) (P) initie la connexion par un message push le pair sans firewall répond au push initié par (P); permet le téléchargement fichier sur machine derrière le pare-feu par un upload ne fonctionne pas si les 2 pairs sont derrière un pare-feu. 5 types de messages Connexion Ping: nœud signale son existence et cherche ses voisins (inondation) Pong: réponse à un ping Query: recherche fichier correspondant à des critères (inondation) QueryHit: réponse: liste url ayant fichier Push: message pour initier le transfert pour un pair situé après un pare-feu ou un NAT. Comment trouver ses voisins? client se connecte à un nœud bien connu (gnutellahost.com, router.limewire.com port 6346) et ping propagé par inondation pairs répondent par un pong (voisins) nœud bien connu ferme la connexion Plus un nœud reste longtemps dans le réseau, plus il devient connecté
Problèmes Freenet inondation ne passe pas à l'échelle (nœud limité par son horizon) recherche fichier seulement par nom pas par contenu part importante de messages de routage id nœuds =(IP,port) si panne temporaire, impossible de retrouver le nœud protocole de téléchargement http primitif (source unique, pas //) conçu pour tolérance aux pannes et l intimité (privacy) axé sur le stockage et non la recherche I. Clarke (Edinbourgh, 1999) documents chiffrés, découpés et mis en cache sur certains nœuds utilisateurs fournissent disque et bande passante ignorent ce qu ils stockent et où https://freenetproject.org/faq.h Architecture Freenet chaque fichier repéré par un identifiant unique chaque machine stocke un ensemble de fichiers et conserve une table de routage pour router les requêtes
Structure de données Exemple Pile maintenue par tt nœud id: ident. fichier next_hop: autre nœud conservant l id file: fichier id stocké sur le nœud Forwarding chaque message contient l id auquel il se réfère si id est stocké localement stop sinon, chercher l id le + proche dans la pile et transmettre au next_hop id next_hop file Requête Insertion API: file=query(id) A réception d une requête pour id chercher si le fichier est stocké localement si oui, le renvoyer (de proche en proche) sinon retransmettre message Utilisation TTL comme gnutella API: insert(id,file) En 2 étapes: chercher le fichier à insérer (comme requête mais nœud répond directement au demandeur) si non trouvé, l ajouter en suivant le chemin aller et en l ajoutant sur tous les nœuds un nœud se substitue aléatoirement au demandeur pour en empêcher l identification
Exemple Insertion insert(10,f10) non trouvé selon le chemin n1 insert(10, f10) 12 n2 n2 9 n3 f9 n3 3 n1 f3 14 n4 f14 5 n3 n4 14 n5 f14 13 n2 f13 3 n6 n5 11 n5 f11 8 n6 Insertion Insertion n2 se substitue à n1 comme source insert(10, f10) insert(10, f10) n1 12 n2 orig=n1 n2 9 n3 f9 n3 3 n1 f3 14 n4 f14 5 n3 n4 14 n5 f14 13 n2 f13 3 n6 n5 11 n5 f11 8 n6 n1 12 n2 n2 9 n3 f9 orig=n2 n3 3 n1 f3 14 n4 f14 5 n3 n4 14 n5 f14 13 n2 f13 3 n6 n5 11 n5 f11 8 n6
Insertion Résumé n1 insert(10, f10) 12 n2 n2 9 n3 f9 orig=n2 n3 10 n2 10 3 n1 f3 14 n4 n4 14 n5 f14 13 n2 f13 3 n6 n5 11 n5 f11 8 n6.../... Avantages fournit de l anonymat entièrement décentralisé robuste et passe à l échelle interdit la suppression malicieuse Inconvénients ne garantit pas qu un fichier soit trouvé même s il existe sur le réseau TTL beaucoup de tables de routage Insertion Insert(10, f10) n1 12 n2 n2 9 n3 f9 n3 10 n2 10 3 n1 f3 14 n4 n4 10 n2 f10 14 n5 f14 13 n2 n5 10 n4 f10 11 n5 P2P structuré
Structuration Principe pour éviter la centralisation napster ou la jungle gnutella affecter un contenu donné à un nœud donné extension des concepts freenet utilise des tables de hachage avec gestion des collisions sha-1(file)= clé k de 160 bits envoi message insert(k,file) aux nœuds message retransmis de nœud en nœud jusqu à trouver celui qui prend en charge la clé k selon le découpage de l espace des clés; stockage de (k,file) recherche à la freenet Hashtables distribuées Protocoles associe une clé à un élément stockage de l elt dans la table à l indice de clé collision rangement dans une chaîne DHT: cellules tables correspondent à des nœuds P2P à base de DHT, nombre nœuds variable donc le nombre de cases aussi solution par hachage consistant # val possibles ne dépend pas du # nœuds elt va sur nœud de val. hachage la plus proche CAN Chord Pastry...
Utilisé par BitTorrent : la distribution de fichiers TheCircle : partage fichiers et chat Dijjer: style freenet emule: partage de fichiers I2P: intimité akamai: serveur de distributions (P2P en 2007) P2P de calcul Résumé Principe concilie beaucoup d avantages très étudié (et utilisé) en ce moment bcp évaluations protocole extensibilité robuste à la très grande affluence robuste à la disparition de source utiliser CPU PCs sous-utilisés comme nœuds de calculs pour calcul distribué sur la base du volontariat (utilisateur installe logiciel qui demande des tâches à traiter à un serveur) architecture très centralisée (maître esclave) pas de communication entre les pairs
Seti@home Xgrid le pionnier expérience scientifique en radio-astronomie exploitant la puissance inutilisée de millions d'ordinateurs connectés via Internet dans un projet de Recherche d'une Intelligence Extra-Terrestre (Search for Extra-Terrestrial Intelligence) analyse par FFT les données recueillies par radio-télescopes peu de résultats basé sur système P2P transforme ensemble machines LAN en supercalculateur passage au wan possible maître OS X clients unix Distributed.net Autres applications créé en 1997 pour casser exhaustivement RC5-64 terminé en 2002 après 1757 jours de calcul 160 000 PC problème de vérification de l information renvoyée, gestion des pannes... VoIP (Skype, Jabber, ichat, Gtalk, MSN) stockage archivage environnements collaboratifs (Groove) messagerie instantanée (MSN, AOL, ichat,...) publication robuste à la censure (ethernity, freenet) http://2005.jres.org/slides/152.pdf
Organisation Skype protocoles propriétaires par reverse engineering: constitué en réseau logique (overlay network) hiérarchique chaque pair est classé comme super-pair ou pair ordinaire. 51 Généralités Rôle super-pairs application VOIP en P2P avec plusieurs millions d utilisateurs simultanés Par les créateurs de Fastrack et Kazaa Vendu à ebay en 2005 pour 2.6 milliards $ racheté par Microsoft en mai 2011 pour 8.5 milliards $ gèrent index de la relation (utilisateur, IP, port) distribués sur les super-pairs organisation précise des index pas claire, probablement sous forme DHT assurent la fonction de relai (pour établir communication quand les pairs sont derrière un nat ou firewall) attribution à la connexion d un super-pair (init derrière nat) qui gère la demande de connexion 50 52