Réseaux pair à pair
Transcription
Réseaux pair à pair
Bref historique ✦ ✦ P2P introduit par napster (serveur musique), S. Fanning 1999 idée: partage contenu, stockage et bande passante des utilisateurs (domestiques) Plusieurs types ✦ ✦ Classement selon les ressources partagées ✦ calcul: seti@home, folding@home ✦ fichiers: napster, gnutella, freenet, edonkey,... Modèle ✦ ✦ ✦ 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 ✦ Napster 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 ✦ 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 3 Napster 1 4 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 ✦ système totalement décentralisé ✦ protocole Recherche de fichier ✦ difficile (par inondation) ✦ envoi requête à tous les voisins ✦ de partage de fichiers sur un réseau ✦ redistribution des requêtes par multicast ✦ remplace napster en le décentralisant ✦ réponse d’une machine qui a le fichier ✦ tolérant aux pannes ✦ Bearshare, limewire, gnucleus ✦ 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} V(A)={B,C} V(C)={D,E} TTL=3 V(A)={B,C} V(C)={D,E} TTL=2 V(A)={B,C} V(C)={D,E} TTL=1 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 ✦ ✦ ✦ ✦ ✦ 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. Connexion ✦ 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 ✦ ✦ 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 Exemple file Requête ✦ 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 Insertion ✦ ✦ 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 insert(10, f10) n2 n1 10 n1 f10 4 n1 f4 12 n2 10 n1 f10 9 n3 f9 n3 3 n1 f3 14 n4 f14 5 n3 Insertion n4 n5 14 n5 f14 13 n2 f13 3 n6 4 n1 f4 11 n5 f11 8 n6 Insertion n2 se substitue à n1 comme source insert(10, f10) n1 10 n1 f10 4 n1 f4 12 n2 orig=n1 insert(10, f10) n2 n1 9 n3 f9 n3 3 n1 f3 14 n4 f14 5 n3 n4 n5 14 n5 f14 13 n2 f13 3 n6 4 n1 f4 11 n5 f11 8 n6 10 n1 f10 4 n1 f4 12 n2 n2 10 n1 f10 9 n3 f9 orig=n2 n3 3 n1 f3 14 n4 f14 5 n3 n4 n5 14 n5 f14 13 n2 f13 3 n6 4 n1 f4 11 n5 f11 8 n6 Insertion Résumé ✦ insert(10, f10) n2 n1 10 n1 f10 4 n1 f4 12 n2 10 n1 f10 9 n3 f9 orig=n2 n3 10 n2 10 3 n1 f3 14 n4 n4 n5 14 n5 f14 13 n2 f13 3 n6 4 n1 f4 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 10 n1 f10 4 n1 f4 12 n2 n2 10 n1 f10 9 n3 f9 n3 10 n2 10 3 n1 f3 14 n4 n4 n5 10 n2 f10 14 n5 f14 13 n2 10 n4 f10 4 n1 f4 11 n5 P2P structuré Structuration ✦ 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 Principe ✦ 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 ✦ ✦ ✦ ✦ ✦ ✦ 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 Protocoles ✦ 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é ✦ concilie beaucoup d’avantages ✦ très étudié (et utilisé) en ce moment ✦ bcp évaluations protocole Principe ✦ ✦ 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) ✦ extensibilité ✦ robuste à la très grande affluence ✦ architecture très centralisée (maître esclave) ✦ robuste à la disparition de source ✦ pas de communication entre les pairs Seti@home ✦ ✦ 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) Xgrid ✦ ✦ basé sur système P2P transforme ensemble machines LAN en supercalculateur ✦ passage au wan possible ✦ analyse par FFT les données recueillies par radio-télescopes ✦ maître OS X ✦ peu de résultats ✦ clients unix Distributed.net ✦ ✦ ✦ ✦ 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... Autres applications ✦ 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 ✦ 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 $ 50 Rôle super-pairs ✦ 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 52