A.Thaveau & M-A Bourgeot 1 Protocoles de Peer to Peer Etudes dapprofondissement

Preview:

Citation preview

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)

Recommended