Title: Protocoles de Peer to Peer
1Protocoles de Peer to Peer
- Etudes dapprofondissement
2Sommaire
- 1. Présentation du sujet
- 2. Le protocole GNUtella
- 3. La plate-forme de développement JXTA
3Historique et définition
- Concept ancien existant depuis linformatique
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.
4Dé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
quune meilleure répartition des taches.
5Applications 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).
6Les deux types darchitecture.
- Architecture répartie assistée par un serveur
central permettant dindexer les ressources. - Typiquement larchitecture du système Napster.
7Les deux types darchitecture.
- Architecture purement décentralisée.
- Utilisé par Gnutella, FastTracks.
- Plus difficile à réaliser mais plus intéressant
car plus robuste et plus distribué.
8Une architecture changeante
- Au départ Internet était conçu pour des
ordinateurs disposant dune adresse IP fixe. - Allocation dynamiques des adresses IP, NAT et
firewalls en compliquent le fonctionnement. - Les développeurs et les opérateurs doivent
sadapter.
9Le protocole GNUtella
- Histoire et concept.
- Fonctionnement
- Evolutions
-
10GNUtella
- 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. - Cest un protocole et non un programme.
11GNUtella le concept
- Le programme exécutant est un " servant " à la
fois client et serveur. - Il permet de faire des demandes dinformations
ainsi que des réponses à celles-ci. - Il permet de faire des téléchargements ainsi que
des envois.
12GNUtella 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 "
dordinateurs le réseau GNUtella. - Les téléchargements se font directement via HTTP.
13GNUtella fonctionnement
- 1.Lordinateur trouve un ordinateur auquel se
connecter. - 2.Lordinateur annonce quil est arrivé sur le
réseau. - 3.Lordinateur 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.
14GNUtella 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.
15GNUtella connexion
- Une fois une machine trouvée, il faut sy
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
16GNUtella 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
len-tête
17GNUtella 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é jusquau "pinger".
18GNUtella arrivée sur le réseau
Ping Pong
19GNUtella 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 dun
client qui aurait un fichier correspondant - Query Mots-clés correspondant à la recherche.
20GNUtella 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 ) - -gtFile Index identifiant du fichier.
- -gtFile Size taille du fichier
- -gtFile Name nom du fichier correspondant Ã
lindex. - Servent identifier Chaîne de 16 octets qui
identifie le servent répondant à la requête.
21GNUtella 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é.
22GNUtella le routage des paquets
- Technique de "flooding" -gt 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.
23GNUtella 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
bytes0-\r\n\r\n - Réponse
- HTTP 200 OK\r\nServer Gnucleus
1.4.5.2\r\nContent-typeapplication/binary\r\nCo
ntent-length 2894894\r\n\r\n
24GNUtella 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.
25GNUtella nouvelle topologie du réseau
- Besoin de changements.
- Comment améliorer le réseau?
- Utilisation des "ultrapeers".
26GNUtella 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".
27GNUtella les ultrapeers
- Envoi périodique d "indexing queries" à ses
fils. - Lultrapeer ne fait suivre les "queries" quaux
clients qui ont une entrée correspondante. - Compatible avec les clients anciens qui sont vus
comme des ultrapeers sans fils.
28GNUtella choix des ultrapeers
- Lordinateur ne doit pas être situé derrière un
firewall et doit avoir un système dexploitation
relativement récent. - Doit avoir une bande passante et un processeur de
bonne qualité. - Doit être sur le réseau depuis assez longtemps.
29Etablissement 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.166349
- GNUTELLA/0.6 200 OK
- X-Ultrapeer True
- X-Ultrapeer-Needed false
- User-Agent LimeWire 1.9
- X-Try-Ultrapeers 23.35.1.1466346,18.207.63.2563
47 - X-Try 24.37.144.1226346,193.205.63.226346
- X-My-Address 10.254.0.166346
- X-Query-Routing 0.1 -gt GNUTELLA/0.6 200
OK -
30Etablissement 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.146346, 18.1.17.26346
- terminates connection
31Etablissement 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
32Etablissement 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
- Â
33Problèmes
- Répartition des fichiers inégales.
- Beaucoup de pillards.
- Perte dintérêt de larchitecture.
34Réplication des données
- Différentes réplications connues
- Réplication après téléchargement.
- Réplication " sur le chemin ".
35Réplication des données
- Réplication au hasard.
- Evite une concentration des fichiers.
- Difficile à mettre en place.
36Problè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 linstant.
37Evolution
- Dynamisme et multiplicité des développeurs.
- De nombreuses idées prometteuses mais pas encore
mis en place. - Besoin d'une harmonisation des clients.
38Quelques clients GNUtella
- LimeWire
- Shareazaa
- BearShare
- Gnucleus
- Morpheus
- Ares
39JuXTApose
40Sommaire
- Présentation
- Les objectifs de JXTA
- Le réseau virtuel de JXTA
- JXTA Work and Play
- Larchitecture JXTA
- Les concepts du JXTA Core
- Les protocoles du JXTA Core
- Les protocoles standards de JXTA
- Les services JXTA
- Le Shell JXTA
- JXTA Search
41Présentation
- Projet de recherche de Sun Microsystems, Inc.
- The OReilly P2P conference
- Ensemble de protocoles peer-to-peer libres et
généraux - www.jxta.org
42Les 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 dexploitation (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, )
43Réseau virtuel de JXTA
44JXTA Work and Play
- Industries
- Télécommunications
- Gouvernement
- Divertissements
- Finances (enchères)
- Applications
- communication et collaboration instant
messaging, partage de fichiers, partage
denvironnement et de ressources (CPU, disques,
bande passante, ) - Architectures distribuées
- Intra entreprise diffusion dinformation,
formation - Nouvelle génération de jeux en réseaux
45Larchitecture de JXTA
46Les 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)
47Les 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 (11) et propagate pipe (1n)
- Messages XML
- Peer Monitoring, Peer Metering
- Capacité dobtenir un ensemble dinformation sur
un Peer
48Les Peer Pipes
49Les protocoles du JXTA Core
- Peer Resolver Protocol (PRP)
- Interrogation dun 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 nest pas
accessible (routage non déterministe) - Peer Routers
- Route Query Message, Route Response Message
- Marquage des messages
50Resolver Query Schema
- ltxselement name"ResolverQuery"
type"jxtaResolverQuery"/gt - ltxscomplexType name"ResolverQuery"gt
- ltxsallgt
- ltxselement ref"jxtaCred" minOccurs"0"/gt
- ltxselement name"SrcPeerID" type"jxtaJXTAID"/
gt - ltxselement name"HandlerName"
type"xsstring"/gt - ltxselement name"QueryID" type"xsstring"/gt
- ltxselement name"Query" type"xsanyType"/gt
- lt/xsallgt
- lt/xscomplexTypegt
51Les 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 dautres Peers
(capacités, état, ) - Pipe Binding Protocol (PBP)
- Etablir un Pipe entre 2 ou plusieurs Peers
- Pipe Resolver Message
52Discovery Query Schema
- ltxselement name"DiscoveryQuery"
type"jxtaDiscoveryQuery"/gt - ltxsdsimpleType name"DiscoveryQueryType"gt
- ltxsdrestriction base"xsdstring"gt
- lt!-- peer --gt
- ltxsdenumeration value"0"/gt
- lt/xsdrestrictiongt
- lt/xsdsimpleTypegt
- ltxscomplexType name"DiscoveryQuery"gt
- ltxssequencegt
- ltxselement name"Type" type"jxtaDiscoveryQuer
yType"/gt - ltxselement name"Threshold" type"xsunsignedIn
t" minOccurs"0"/gt - ltxselement name"Attr" type"xsstring"
minOccurs"0"/gt - ltxselement name"Value" type"xsstring"
minOccurs"0"/gt - lt!-- The following should refer to a peer adv,
but is instead a whole doc for historical reasons
--gt - ltxselement name"PeerAdv" type"xsstring"
minOccurs"0"/gt - lt/xssequencegt
- lt/xscomplexTypegt
53Les services JXTA
- Equivalents aux librairies UNIX
- Fonctions au-dessus du JXTA Core
- Facilite le développement dapplication
- 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 à lensemble dun Peer Group
- Structure de données (XML)
- Communications sécurisées
- Usage professionnel (Intranet et Extranet)
54Le 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 lappel
- Création de nouvelles commandes
- Appel JXTAgt NomCommande -options arguments
- Redirection des E/S (dynamique, crossing pipe)
- Importation/Exportation de données
(share/unshare) - Batch files
55Le 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 dun pipe
- get/put lecture/écrire dans un message
- send/recv envoyer/recevoir un message
- importfile/exportfile
56JXTA Search (1)
- Motivations
- Augmentation perpétuelle de la quantité
dinformations accessibles par Internet - Moteurs de recherche dépassés
- Hidden Web 400 fois plus dinformations
- 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)
57JXTA Search Network
58JXTA 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)