Vous êtes sur la page 1sur 58

Protocoles de

Peer to Peer

Etudes d’approfondissement

A.Thaveau & M-A Bourgeot 1


Sommaire
1. Présentation du sujet

2. Le protocole GNUtella

3. La plate-forme de développement JXTA

A.Thaveau & M-A Bourgeot 2


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 3


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 4


Applications typiques
 Calcul distribué :  Plate-forme de
projet SETI. développement et
 Echange de fichiers : groupe de
Napster, Gnutella … collaboration : JXTA
 Stockage distribué : (Sun).
Chord, CFS (MIT).

A.Thaveau & M-A Bourgeot 5


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 6


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 7


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 8


Le protocole GNUtella
1. Histoire et concept.
2. Fonctionnement
3. Evolutions

A.Thaveau & M-A Bourgeot 9


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 10


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 11


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 12


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 13


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 14


GNUtella : connexion
Une fois une machine trouvée, il faut s’y
connecter :
Demande : GNUTELLA CONNECT/0.4\r\n
User-Agent: Gnucleus 1.4.5.0\r\n
\r\n
Si l’ôte accepte la connexion, il envoie :
GNUTELLA/0.4 200 OK\r\n
User-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 15


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 16


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 17


GNUtella : arrivée sur le réseau
Ping
Pong

A.Thaveau & M-A Bourgeot 18


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 19


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 20


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 21


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 22


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\n
Range: bytes=0-\r\n
\r\n
Réponse :
HTTP 200 OK\r\n
Server: Gnucleus 1.4.5.2\r\n
Content-type:application/binary\r\n
Content-length: 2894894\r\n
\r\n

A.Thaveau & M-A Bourgeot 23


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 24


GNUtella : nouvelle topologie du
réseau
 Besoin de
changements.
 Comment
améliorer le
réseau?
 Utilisation des
"ultrapeers".

A.Thaveau & M-A Bourgeot 25


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 26


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 27


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 28


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 29


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 30


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 31


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 32


Problèmes
 Répartition des
fichiers inégales.
 Beaucoup de
«pillards».
 Perte d’intérêt de
l’architecture.

A.Thaveau & M-A Bourgeot 33


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 34


Réplication des données
 Réplication au hasard.
 Evite une concentration des fichiers.
 Difficile à mettre en place.

A.Thaveau & M-A Bourgeot 35


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 36


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 37


Quelques clients GNUtella
 LimeWire
 Shareazaa
 BearShare
 Gnucleus
 Morpheus
 Ares

A.Thaveau & M-A Bourgeot 38


JuXTApose

Le projet JXTA

A.Thaveau & M-A Bourgeot 39


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 40


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 41


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 42


Réseau virtuel de JXTA

A.Thaveau & M-A Bourgeot 43


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 44


L’architecture de JXTA

A.Thaveau & M-A Bourgeot 45


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 46


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 47


Les Peer Pipes

A.Thaveau & M-A Bourgeot 48


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 49


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 50


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 51


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 52


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 53


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 54


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 55


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 56


JXTA Search Network

A.Thaveau & M-A Bourgeot 57


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)

A.Thaveau & M-A Bourgeot 58

Vous aimerez peut-être aussi