a.thaveau & m-a bourgeot 1 protocoles de peer to peer etudes dapprofondissement
TRANSCRIPT
A.Thaveau & M-A Bourgeot 1
Protocoles de Peer to Peer
Etudes d’approfondissement
A.Thaveau & M-A Bourgeot 2
Sommaire
1. Présentation du sujet
2. Le protocole GNUtella
3. La plate-forme de développement JXTA
A.Thaveau & M-A Bourgeot 3
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 4
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 5
Applications typiques
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).
A.Thaveau & M-A Bourgeot 6
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 7
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 8
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 9
Le protocole GNUtella
1. Histoire et concept.
2. Fonctionnement
3. Evolutions
A.Thaveau & M-A Bourgeot 10
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 11
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 12
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 13
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 14
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 15
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 16
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 paquetFunction : identifiant du type paquetTTL : time to liveHops : nombre de sauts déjà accomplisPayload length : longueur du descripteur suivant l’en-tête
A.Thaveau & M-A Bourgeot 17
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 18
GNUtella : arrivée sur le réseau
Ping
Pong
A.Thaveau & M-A Bourgeot 19
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 20
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 21
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 22
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 23
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\n
User-Agent: LimeWire 1.8\r\nRange: bytes=0-\r\n\r\n
Réponse :HTTP 200 OK\r\n
Server: Gnucleus 1.4.5.2\r\nContent-type:application/binary\r\nContent-length: 2894894\r\n\r\n
A.Thaveau & M-A Bourgeot 24
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 25
GNUtella : nouvelle topologie du réseau Besoin de
changements. Comment
améliorer le réseau?
Utilisation des "ultrapeers".
A.Thaveau & M-A Bourgeot 26
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 27
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 28
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 29
Etablissement des connexions : feuille sur ultrapeerGNUTELLA CONNECT/0.6X-Ultrapeer: FalseUser-Agent: LimeWire 1.9X-Query-Routing: 0.1X-My-Address: 10.254.0.16:6349
GNUTELLA/0.6 200 OKX-Ultrapeer: TrueX-Ultrapeer-Needed: falseUser-Agent: LimeWire 1.9X-Try-Ultrapeers: 23.35.1.146:6346,18.207.63.25:6347X-Try: 24.37.144.122:6346,193.205.63.22:6346X-My-Address: 10.254.0.16:6346
X-Query-Routing: 0.1 -> GNUTELLA/0.6 200 OK
A.Thaveau & M-A Bourgeot 30
Etablissement des connexions : feuille sur feuille protégéeGNUTELLA 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 31
Etablissement des connexions : ultrapeer vers ultrapeerGNUTELLA 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 32
Etablissement des connexions : ultrapeer vers ultrapeerGNUTELLA 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 33
Problèmes
Répartition des fichiers inégales.
Beaucoup de «pillards».
Perte d’intérêt de l’architecture.
A.Thaveau & M-A Bourgeot 34
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 35
Réplication des données
Réplication au hasard. Evite une concentration des fichiers. Difficile à mettre en place.
A.Thaveau & M-A Bourgeot 36
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 37
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 38
Quelques clients GNUtella
LimeWire Shareazaa BearShare Gnucleus Morpheus Ares
A.Thaveau & M-A Bourgeot 39
JuXTApose
Le projet JXTA
A.Thaveau & M-A Bourgeot 40
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 41
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 42
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 43
Réseau virtuel de JXTA
A.Thaveau & M-A Bourgeot 44
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 45
L’architecture de JXTA
A.Thaveau & M-A Bourgeot 46
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 47
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 48
Les Peer Pipes
A.Thaveau & M-A Bourgeot 49
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 50
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 51
Les protocoles standard de JXTA
Peer Discovery Protocol (PDP) Recherche de ressources (Peers, Peers group, pipe, services) Utilise les services pour valoriser son cache Discovery Query Message, Discovery Response Message
Rendezvous Protocol (RVP) Propage les messages dans un Peer Group Contrôle de la propagation (TTL, loopback detection, …)
Peer Information Protocol (PIP) Obtenir des informations sur d’autres Peers (capacités, état, …)
Pipe Binding Protocol (PBP) Etablir un Pipe entre 2 ou plusieurs Peers Pipe Resolver Message
A.Thaveau & M-A Bourgeot 52
Discovery Query Schema<xs:element name="DiscoveryQuery" type="jxta:DiscoveryQuery"/>
<xsd:simpleType name="DiscoveryQueryType"><xsd:restriction base="xsd:string">
<!-- peer --><xsd:enumeration value="0"/>
</xsd:restriction></xsd:simpleType>
<xs:complexType name="DiscoveryQuery"><xs:sequence>
<xs:element name="Type" type="jxta:DiscoveryQueryType"/><xs:element name="Threshold" type="xs:unsignedInt" minOccurs="0"/><xs:element name="Attr" type="xs:string" minOccurs="0"/><xs:element name="Value" type="xs:string" minOccurs="0"/><!-- The following should refer to a peer adv, but is instead a whole doc for historical reasons --><xs:element name="PeerAdv" type="xs:string" minOccurs="0"/>
</xs:sequence></xs:complexType>
A.Thaveau & M-A Bourgeot 53
Les services JXTA
Equivalents aux librairies UNIX Fonctions au-dessus du JXTA Core Facilite le développement d’application
Proposent différents mécanismes Recherche, indexation Partage de ressources Cache Transport via TCP/IP, HTTP, TLS
Traitements distribués et parallèles Envoi de requêtes à l’ensemble d’un Peer Group Structure de données (XML)
Communications sécurisées Usage professionnel (Intranet et Extranet)
A.Thaveau & M-A Bourgeot 54
Le Shell JXTA (1)
Accès interactif au JXTA Core Publier, rechercher et exécuter des ressources Découvrir de nouveaux Peers ou Peer Groups Envoyer et recevoir des messages
Propriétés des commandes Chargées dynamiquement lors de l’appel Création de nouvelles commandes Appel : JXTA> NomCommande [-options] [arguments] Redirection des E/S (dynamique, crossing pipe) Importation/Exportation de données (share/unshare) Batch files
A.Thaveau & M-A Bourgeot 55
Le Shell JXTA (2)
Commandes de base shell, env, man, exit, version more, cat, grep, ls whoami : informations sur le Peer talk peers : recherche et liste les Peers groups : recherche et liste les Peer Group mkpgrp/chpgrp : créer/changer de groupe join/leave : rejoindre/quitter un groupe search : rechercher un codat mkpipe : création d’un pipe get/put : lecture/écrire dans un message send/recv : envoyer/recevoir un message importfile/exportfile
A.Thaveau & M-A Bourgeot 56
JXTA Search (1)
Motivations Augmentation perpétuelle de la quantité d’informations accessibles
par Internet Moteurs de recherche dépassés « Hidden Web » = 400 fois plus d’informations
Avantages de JXTA Protocoles en XML = Multi plate forme Requêtes distribuées (architecture décentralisée)
Les acteurs Fournisseurs Consommateurs Peer Hub spécialisés (géographie, contenu, application)
A.Thaveau & M-A Bourgeot 57
JXTA Search Network
A.Thaveau & M-A Bourgeot 58
JXTA Search (2)
Recherche profonde (Deep Search) Pertinence Accessibilité Efficacité
Query Routing Protocol (QRP) 3 composants : registers, queries, responses Query Spaces, Query Predicates Query Resolution and Routing
Utilisations Recherche Internet (Google) Échanges commerciaux (Communication et synchronisation)