590 likes | 698 Views
Protocoles de Peer to Peer. Etudes d’approfondissement. Sommaire. 1. Présentation du sujet 2. Le protocole GNUtella 3. La plate-forme de développement JXTA. Historique et définition.
E N D
Protocoles de Peer to Peer Etudes d’approfondissement A.Thaveau & M-A Bourgeot
Sommaire 1. Présentation du sujet 2. Le protocole GNUtella 3. La plate-forme de développement JXTA A.Thaveau & M-A Bourgeot
Historique et définition • Concept ancien : existant depuis l’informatique distribuée (~=30 ans). Il a vraiment été popularisé par Napster. • Un système d'échange direct de ressources entre machines connectées. • Au départ, Internet était vu comme un système Peer-to-Peer. A.Thaveau & M-A Bourgeot
Définition et avantages • Littéralement " égal à égal " : les ordinateurs sont à la fois clients et serveurs. • Possibilités de plus en plus accrues avec l'évolution des ordinateurs. • Permet la décentralisation des contenus ainsi qu’une meilleure répartition des taches. A.Thaveau & M-A Bourgeot
Calcul distribué : projet SETI. Echange de fichiers : Napster, Gnutella … Stockage distribué : Chord, CFS (MIT). Plate-forme de développement et groupe de collaboration : JXTA (Sun). Applications typiques A.Thaveau & M-A Bourgeot
Les deux types d’architecture. • Architecture répartie assistée par un serveur central permettant d’indexer les ressources. • Typiquement l’architecture du système Napster. A.Thaveau & M-A Bourgeot
Les deux types d’architecture. • Architecture purement décentralisée. • Utilisé par Gnutella, FastTracks. • Plus difficile à réaliser mais plus intéressant car plus robuste et plus distribué. A.Thaveau & M-A Bourgeot
Une architecture changeante • Au départ Internet était conçu pour des ordinateurs disposant d’une adresse IP fixe. • Allocation dynamiques des adresses IP, NAT et firewalls en compliquent le fonctionnement. • Les développeurs et les opérateurs doivent s’adapter. A.Thaveau & M-A Bourgeot
Le protocole GNUtella • Histoire et concept. • Fonctionnement • Evolutions A.Thaveau & M-A Bourgeot
GNUtella • Développé par NullSoft (J.Frankel & T.Pepper) qui fut ensuite racheté par AOL-Time-Warner. • Diffusé peu de temps sur le Web, il put être implémenté par de multiples programmeurs sur différents OS. • C’est un protocole et non un programme. A.Thaveau & M-A Bourgeot
GNUtella : le concept • Le programme exécutant est un " servant " : à la fois client et serveur. • Il permet de faire des demandes d’informations ainsi que des réponses à celles-ci. • Il permet de faire des téléchargements ainsi que des envois. A.Thaveau & M-A Bourgeot
GNUtella : concept technique • Le protocole est utilisé par des nœuds connectés avec TCP/IP. • Des milliers de connections à travers des milliers de nœuds créent une " web " d’ordinateurs : le réseau GNUtella. • Les téléchargements se font directement via HTTP. A.Thaveau & M-A Bourgeot
GNUtella : fonctionnement 1.L’ordinateur trouve un ordinateur auquel se connecter. 2.L’ordinateur annonce qu’il est arrivé sur le réseau. 3.L’ordinateur peut ensuite émettre des requêtes et y répondre, il route aussi les messages. 4.Il peut télécharger ou envoyer des fichiers. A.Thaveau & M-A Bourgeot
GNUtella : Connexion • Pour trouver une machine déjà connectée, il faut se connecter à un hostcache. • Le hostcache garde les adresses de certaines machines connectées. • Le client à généralement une liste de hostcache. A.Thaveau & M-A Bourgeot
GNUtella : connexion Une fois une machine trouvée, il faut s’y connecter : Demande : GNUTELLA CONNECT/0.4\r\nUser-Agent: Gnucleus 1.4.5.0\r\n\r\n Si l’ôte accepte la connexion, il envoie : GNUTELLA/0.4 200 OK\r\nUser-Agent: Gnucleus 1.4.5.2\r\n\r\n Après cela, les échanges peuvent commencer : GNUTELLA/0.4 200 OK\r\n\r\n A.Thaveau & M-A Bourgeot
GNUtella : arrivée sur le réseau • Utilisation du paquet ping : il sert à decouvrir les autres nœuds sur le réseau. • Sert à donner une mesure de la taille de l' "horizon". Caractéristiques du paquet (commun à tous les paquets gnutella): GUID : identifiant du paquet Function : identifiant du type paquet TTL : time to live Hops : nombre de sauts déjà accomplis Payload length : longueur du descripteur suivant l’en-tête A.Thaveau & M-A Bourgeot
GNUtella : arrivée sur le réseau Description du paquet pong : Caractéristiques : En-tête Port : le port sur lequel le servant écoute. Host : IP du servant File Count : nombre de fichiers partagés File Size : taille de tous les fichiers partagés Ce paquet est routé jusqu’au "pinger". A.Thaveau & M-A Bourgeot
GNUtella : arrivée sur le réseau Ping Pong A.Thaveau & M-A Bourgeot
GNUtella : les requêtes • Pour une demande de fichier, on envoie un paquet de type Query : Caractéristiques : En-tête Minimum Speed : vitesse minimum de transfert d’un client qui aurait un fichier correspondant Query : Mots-clés correspondant à la recherche. A.Thaveau & M-A Bourgeot
GNUtella : les requêtes • Si un ordinateur possède un fichier correspondant à une requête, il envoie un paquet de type QueryHit : Caractéristiques : En-tête. Number of hits : Nombre de "coups au but" dans le Result Set. Port : le port sur lequel le servant écoute. Host : IP du servant. Speed : vitesse du servant atteint. Result Set :Ensemble de réponses à la requête correspondante ( Number of hits ) ->File Index : identifiant du fichier. ->File Size : taille du fichier ->File Name : nom du fichier correspondant à l’index. Servent identifier : Chaîne de 16 octets qui identifie le servent répondant à la requête. A.Thaveau & M-A Bourgeot
GNUtella : le paquet push • Un servant ne peut initier de connexion HTTP avec un autre servant derrière un firewall. • Avec le paquet push, il demande au servant du fichier d'initier la connexion. Caractéristiques : En-tête. Servent identifier : Chaîne de 16 octets qui identifie le servent qui doit pousser le fichier. File Index : identifiant du fichier devant être poussé. Host : IP du servant vers lequel le fichier doit être poussé. Port : le port vers lequel le fichier doit être poussé. A.Thaveau & M-A Bourgeot
GNUtella : le routage des paquets • Technique de "flooding" -> inondation. • Les pings sont envoyés à tous les voisins sauf à l'émetteur. • Les pongs empruntent le même chemin que les pings. • Le routage des paquets QueryHits fonctionne comme celui des pongs. A.Thaveau & M-A Bourgeot
GNUtella : téléchargement Une fois un fichier choisi, le téléchargement se fait par connexion HTTP directe entre 2 servants. Demande : GET /get/2975/How Towels Work.txt HTTP/1.0\r\nUser-Agent: LimeWire 1.8\r\nRange: bytes=0-\r\n\r\n Réponse : HTTP 200 OK\r\nServer: Gnucleus 1.4.5.2\r\nContent-type:application/binary\r\nContent-length: 2894894\r\n\r\n A.Thaveau & M-A Bourgeot
GNUtella : première topologie du réseau • Les nœuds sont tous égaux et jouent exactement le même rôle. • Saturation lors de la montée en charge. • Trop de messages circulant. A.Thaveau & M-A Bourgeot
GNUtella : nouvelle topologie du réseau • Besoin de changements. • Comment améliorer le réseau? • Utilisation des "ultrapeers". A.Thaveau & M-A Bourgeot
GNUtella : les ultrapeers • Fin 2001 : LimeWire relance le concept et l'implemente dans son client. • Une hierarchie de nœuds est créée : • Ultrapeers : Bonne capacité de calcul et de transfert. • "Nœuds Feuilles" : Ordinateurs "normaux". A.Thaveau & M-A Bourgeot
GNUtella : les ultrapeers • Envoi périodique d’ "indexing queries" à ses fils. • L’ultrapeer ne fait suivre les "queries" qu’aux clients qui ont une entrée correspondante. • Compatible avec les clients anciens qui sont vus comme des ultrapeers sans fils. A.Thaveau & M-A Bourgeot
GNUtella : choix des ultrapeers • L’ordinateur ne doit pas être situé derrière un firewall et doit avoir un système d’exploitation relativement récent. • Doit avoir une bande passante et un processeur de bonne qualité. • Doit être sur le réseau depuis assez longtemps. A.Thaveau & M-A Bourgeot
Etablissement des connexions : feuille sur ultrapeer GNUTELLA CONNECT/0.6 X-Ultrapeer: False User-Agent: LimeWire 1.9 X-Query-Routing: 0.1 X-My-Address: 10.254.0.16:6349 GNUTELLA/0.6 200 OK X-Ultrapeer: True X-Ultrapeer-Needed: false User-Agent: LimeWire 1.9 X-Try-Ultrapeers: 23.35.1.146:6346,18.207.63.25:6347 X-Try: 24.37.144.122:6346,193.205.63.22:6346 X-My-Address: 10.254.0.16:6346 X-Query-Routing: 0.1 -> GNUTELLA/0.6 200 OK A.Thaveau & M-A Bourgeot
Etablissement des connexions : feuille sur feuille protégée GNUTELLA CONNECT/0.6 X-Ultrapeer: False GNUTELLA/0.6 503 I am a shielded leaf node X-Ultrapeer: False X-Try-Ultrapeers: 18.2.3.14:6346, 18.1.17.2:6346 [terminates connection] A.Thaveau & M-A Bourgeot
Etablissement des connexions : ultrapeer vers ultrapeer GNUTELLA CONNECT/0.6 X-Ultrapeer: True GNUTELLA/0.6 200 OK X-Ultrapeer: True X-Ultrapeer-Needed: True GNUTELLA/0.6 200 OK A.Thaveau & M-A Bourgeot
Etablissement des connexions : ultrapeer vers ultrapeer GNUTELLA CONNECT/0.6 X-Ultrapeer: True GNUTELLA/0.6 200 OK X-Ultrapeer: True X-Ultrapeer-Needed: false GNUTELLA/0.6 200 OK X-Ultrapeer: False A.Thaveau & M-A Bourgeot
Problèmes • Répartition des fichiers inégales. • Beaucoup de «pillards». • Perte d’intérêt de l’architecture. A.Thaveau & M-A Bourgeot
Réplication des données Différentes réplications connues : • Réplication après téléchargement. • Réplication " sur le chemin ". A.Thaveau & M-A Bourgeot
Réplication des données • Réplication au hasard. • Evite une concentration des fichiers. • Difficile à mettre en place. A.Thaveau & M-A Bourgeot
Problèmes • Tensions entre les développeurs utilisant GNUtella. • Logiciels commerciaux et communautaires sur le même réseau, problèmes de compatibilité entre les clients. • Logiciel qui a toujours été développé dans un esprit libre, pas de chef de file pour l’instant. A.Thaveau & M-A Bourgeot
Evolution • Dynamisme et multiplicité des développeurs. • De nombreuses idées prometteuses mais pas encore mis en place. • Besoin d'une harmonisation des clients. A.Thaveau & M-A Bourgeot
Quelques clients GNUtella • LimeWire • Shareazaa • BearShare • Gnucleus • Morpheus • Ares A.Thaveau & M-A Bourgeot
JuXTApose Le projet JXTA A.Thaveau & M-A Bourgeot
Sommaire • Présentation • Les objectifs de JXTA • Le réseau virtuel de JXTA • JXTA « Work and Play » • L’architecture JXTA • Les concepts du JXTA Core • Les protocoles du JXTA Core • Les protocoles standards de JXTA • Les services JXTA • Le Shell JXTA • JXTA Search A.Thaveau & M-A Bourgeot
Présentation • Projet de recherche de Sun Microsystems, Inc. • The O’Reilly P2P conference • Ensemble de protocoles peer-to-peer libres et généraux • www.jxta.org A.Thaveau & M-A Bourgeot
Les objectifs de JXTA • Interopérabilité • Permettre à tous les Peers de toutes les communautés de communiquer entre eux grâce à une même plate forme P2P • Multi plate forme • Langage de programmation (C, Java, Perl, Python, Ruby) • Système d’exploitation (Solaris, Linux, Windows, MacOS, …) • Réseaux (TCP/IP, Bluetooth, …) • Ubiquité • Implémentation possible sur tout type de machine (PDA, routeur, PC, serveur, téléphones mobiles, …) A.Thaveau & M-A Bourgeot
Réseau virtuel de JXTA A.Thaveau & M-A Bourgeot
JXTA « Work and Play » • Industries : • Télécommunications • Gouvernement • Divertissements • Finances (enchères) • Applications : • communication et collaboration : instant messaging, partage de fichiers, partage d’environnement et de ressources (CPU, disques, bande passante, …) • Architectures distribuées • Intra entreprise : diffusion d’information, formation • Nouvelle génération de jeux en réseaux A.Thaveau & M-A Bourgeot
L’architecture de JXTA A.Thaveau & M-A Bourgeot
Les concepts du JXTA Core (1) • Peer • Implémente les protocoles Core de JXTA • Unique (Peer Id), indépendant et asynchrone • Relations persistantes ou temporaires (Peer Group) • Offre des services • Peers identiques interchangeables • Peer Group • Ensemble de Peers en relation (sécurité, intérêts communs, surveillance) • Unique (Peer Group Id) • World Peer Group • Peer Group Services (Discovery, Membership, Access, Pipe, Resolver, Monitoring) A.Thaveau & M-A Bourgeot
Les concepts du JXTA Core (2) • Peer Pipe • Canal virtuel de communication entre Peer Endpoints • Différentes qualités de services • Unidirectionnel et asynchrone • Synchronisé • Streaming • Sécurisé • Point-to-point pipe (1~1) et propagate pipe (1~n) • Messages XML • Peer Monitoring, Peer Metering • Capacité d’obtenir un ensemble d’information sur un Peer A.Thaveau & M-A Bourgeot
Les Peer Pipes A.Thaveau & M-A Bourgeot
Les protocoles du JXTA Core • Peer Resolver Protocol (PRP) • Interrogation d’un service dans un Peer Group • Utilise le Rendezvous Protocol • Handler Name • Resolver Query Message, Resolver Response Message • Endpoint Routing Protocol (ERP) • Trouver une route vers un Peer qui n’est pas accessible (routage non déterministe) • Peer Routers • Route Query Message, Route Response Message • Marquage des messages A.Thaveau & M-A Bourgeot
Resolver Query Schema <xs:element name="ResolverQuery" type="jxta:ResolverQuery"/> <xs:complexType name="ResolverQuery"> <xs:all> <xs:element ref="jxta:Cred" minOccurs="0"/> <xs:element name="SrcPeerID" type="jxta:JXTAID"/> <xs:element name="HandlerName" type="xs:string"/> <xs:element name="QueryID" type="xs:string"/> <xs:element name="Query" type="xs:anyType"/> </xs:all> </xs:complexType> A.Thaveau & M-A Bourgeot