Protocoles de Peer to Peer Etudes dapprofondissement A

  • Slides: 58
Download presentation
Protocoles de Peer to Peer Etudes d’approfondissement A. Thaveau & M-A Bourgeot 1

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

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

Historique et définition Concept ancien : existant depuis l’informatique distribuée (~=30 ans). Il a vraiment été popularisé par Napster. n Un système d'échange direct de ressources entre machines connectées. n Au départ, Internet était vu comme un système Peer-to-Peer. n A. Thaveau & M-A Bourgeot 3

Définition et avantages Littéralement " égal à égal " : les ordinateurs sont à

Définition et avantages Littéralement " égal à égal " : les ordinateurs sont à la fois clients et serveurs. n Possibilités de plus en plus accrues avec l'évolution des ordinateurs. n Permet la décentralisation des contenus ainsi qu’une meilleure répartition des taches. n A. Thaveau & M-A Bourgeot 4

Applications typiques n n n Calcul distribué : projet SETI. Echange de fichiers :

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

Les deux types d’architecture. n n Architecture répartie assistée par un serveur central permettant

Les deux types d’architecture. n n 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. n n n Architecture purement décentralisée. Utilisé par Gnutella, Fast.

Les deux types d’architecture. n n n Architecture purement décentralisée. Utilisé par Gnutella, Fast. Tracks. 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

Une architecture changeante Au départ Internet était conçu pour des ordinateurs disposant d’une adresse IP fixe. n Allocation dynamiques des adresses IP, NAT et firewalls en compliquent le fonctionnement. n Les développeurs et les opérateurs doivent s’adapter. n A. Thaveau & M-A Bourgeot 8

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

Le protocole GNUtella 1. 2. 3. Histoire et concept. Fonctionnement Evolutions A. Thaveau & M-A Bourgeot 9

GNUtella Développé par Null. Soft (J. Frankel & T. Pepper) qui fut ensuite racheté

GNUtella Développé par Null. Soft (J. Frankel & T. Pepper) qui fut ensuite racheté par AOLTime-Warner. n Diffusé peu de temps sur le Web, il put être implémenté par de multiples programmeurs sur différents OS. n C’est un protocole et non un programme. n A. Thaveau & M-A Bourgeot 10

GNUtella : le concept Le programme exécutant est un " servant " : à

GNUtella : le concept Le programme exécutant est un " servant " : à la fois client et serveur. n Il permet de faire des demandes d’informations ainsi que des réponses à celles-ci. n Il permet de faire des téléchargements ainsi que des envois. n A. Thaveau & M-A Bourgeot 11

GNUtella : concept technique Le protocole est utilisé par des nœuds connectés avec TCP/IP.

GNUtella : concept technique Le protocole est utilisé par des nœuds connectés avec TCP/IP. n Des milliers de connections à travers des milliers de nœuds créent une " web " d’ordinateurs : le réseau GNUtella. n Les téléchargements se font directement via HTTP. n A. Thaveau & M-A Bourgeot 12

GNUtella : fonctionnement 1. L’ordinateur trouve un ordinateur auquel se connecter. 2. L’ordinateur annonce

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 à

GNUtella : Connexion Pour trouver une machine déjà connectée, il faut se connecter à un hostcache. n Le hostcache garde les adresses de certaines machines connectées. n Le client à généralement une liste de hostcache. n A. Thaveau & M-A Bourgeot 14

GNUtella : connexion Une fois une machine trouvée, il faut s’y connecter : Demande

GNUtella : connexion Une fois une machine trouvée, il faut s’y connecter : Demande : GNUTELLA CONNECT/0. 4rn User-Agent: Gnucleus 1. 4. 5. 0rn Si l’ôte accepte la connexion, il envoie : GNUTELLA/0. 4 200 OKrn User-Agent: Gnucleus 1. 4. 5. 2rn Après cela, les échanges peuvent commencer : GNUTELLA/0. 4 200 OKrn A. Thaveau & M-A Bourgeot 15

GNUtella : arrivée sur le réseau Utilisation du paquet ping : il sert à

GNUtella : arrivée sur le réseau Utilisation du paquet ping : il sert à decouvrir les autres nœuds sur le réseau. n Sert à donner une mesure de la taille de l' "horizon". n 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

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 : arrivée sur le réseau Ping Pong A. Thaveau & M-A Bourgeot 18

GNUtella : les requêtes n Pour une demande de fichier, on envoie un paquet

GNUtella : les requêtes n 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 n Si un ordinateur possède un fichier correspondant à une

GNUtella : les requêtes n Si un ordinateur possède un fichier correspondant à une requête, il envoie un paquet de type Query. Hit : 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 n n Un servant ne peut initier de connexion

GNUtella : le paquet push n n 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. n Les pings

GNUtella : le routage des paquets Technique de "flooding" -> inondation. n Les pings sont envoyés à tous les voisins sauf à l'émetteur. n Les pongs empruntent le même chemin que les pings. n Le routage des paquets Query. Hits fonctionne comme celui des pongs. n A. Thaveau & M-A Bourgeot 22

GNUtella : téléchargement Une fois un fichier choisi, le téléchargement se fait par connexion

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. 0rn User-Agent: Lime. Wire 1. 8rn Range: bytes=0 -rn Réponse : HTTP 200 OKrn Server: Gnucleus 1. 4. 5. 2rn Content-type: application/binaryrn Content-length: 2894894rn A. Thaveau & M-A Bourgeot 23

GNUtella : première topologie du réseau n n n Les nœuds sont tous égaux

GNUtella : première topologie du réseau n n n 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. n Comment améliorer le réseau?

GNUtella : nouvelle topologie du réseau Besoin de changements. n Comment améliorer le réseau? n Utilisation des "ultrapeers". n A. Thaveau & M-A Bourgeot 25

GNUtella : les ultrapeers Fin 2001 : Lime. Wire relance le concept et l'implemente

GNUtella : les ultrapeers Fin 2001 : Lime. Wire relance le concept et l'implemente dans son client. n Une hierarchie de nœuds est créée : n ¨ 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. n L’ultrapeer

GNUtella : les ultrapeers Envoi périodique d’ "indexing queries" à ses fils. n L’ultrapeer ne fait suivre les "queries" qu’aux clients qui ont une entrée correspondante. n Compatible avec les clients anciens qui sont vus comme des ultrapeers sans fils. n A. Thaveau & M-A Bourgeot 27

GNUtella : choix des ultrapeers L’ordinateur ne doit pas être situé derrière un firewall

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. n Doit avoir une bande passante et un processeur de bonne qualité. n Doit être sur le réseau depuis assez longtemps. n A. Thaveau & M-A Bourgeot 28

Etablissement des connexions : feuille sur ultrapeer GNUTELLA CONNECT/0. 6 X-Ultrapeer: False User-Agent: Lime.

Etablissement des connexions : feuille sur ultrapeer GNUTELLA CONNECT/0. 6 X-Ultrapeer: False User-Agent: Lime. Wire 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: Lime. Wire 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.

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

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

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 n n n Répartition des fichiers inégales. Beaucoup de «pillards» . Perte d’intérêt

Problèmes n n n 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 "

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 n Réplication au hasard. n Evite une concentration des fichiers. n

Réplication des données n Réplication au hasard. n Evite une concentration des fichiers. n Difficile à mettre en place. A. Thaveau & M-A Bourgeot 35

Problèmes Tensions entre les développeurs utilisant GNUtella. n Logiciels commerciaux et communautaires sur le

Problèmes Tensions entre les développeurs utilisant GNUtella. n Logiciels commerciaux et communautaires sur le même réseau, problèmes de compatibilité entre les clients. n Logiciel qui a toujours été développé dans un esprit libre, pas de chef de file pour l’instant. n A. Thaveau & M-A Bourgeot 36

Evolution Dynamisme et multiplicité des développeurs. n De nombreuses idées prometteuses mais pas encore

Evolution Dynamisme et multiplicité des développeurs. n De nombreuses idées prometteuses mais pas encore mis en place. n Besoin d'une harmonisation des clients. n A. Thaveau & M-A Bourgeot 37

Quelques clients GNUtella Lime. Wire n Shareazaa n Bear. Share n Gnucleus n Morpheus

Quelques clients GNUtella Lime. Wire n Shareazaa n Bear. Share n Gnucleus n Morpheus n Ares n A. Thaveau & M-A Bourgeot 38

Ju. XTApose Le projet JXTA A. Thaveau & M-A Bourgeot 39

Ju. XTApose Le projet JXTA A. Thaveau & M-A Bourgeot 39

Sommaire n n n Présentation Les objectifs de JXTA Le réseau virtuel de JXTA

Sommaire n n n Présentation Les objectifs de JXTA Le réseau virtuel de JXTA « Work and Play » L’architecture JXTA Les concepts du JXTA Core Les protocoles standards de JXTA Les services JXTA Le Shell JXTA Search A. Thaveau & M-A Bourgeot 40

Présentation Projet de recherche de Sun Microsystems, Inc. n The O’Reilly P 2 P

Présentation Projet de recherche de Sun Microsystems, Inc. n The O’Reilly P 2 P conference n Ensemble de protocoles peer-to-peer libres et généraux n www. jxta. org n A. Thaveau & M-A Bourgeot 41

Les objectifs de JXTA n Interopérabilité n n Multi plate forme n n Permettre

Les objectifs de JXTA n Interopérabilité n n Multi plate forme n n Permettre à tous les Peers de toutes les communautés de communiquer entre eux grâce à une même plate forme P 2 P Langage de programmation (C, Java, Perl, Python, Ruby) Système d’exploitation (Solaris, Linux, Windows, Mac. OS, …) Réseaux (TCP/IP, Bluetooth, …) Ubiquité n 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

Réseau virtuel de JXTA A. Thaveau & M-A Bourgeot 43

JXTA « Work and Play » n Industries : n n n Applications :

JXTA « Work and Play » n Industries : n n n Applications : n n Télécommunications Gouvernement Divertissements Finances (enchères) 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

L’architecture de JXTA A. Thaveau & M-A Bourgeot 45

Les concepts du JXTA Core (1) n Peer n n n Implémente les protocoles

Les concepts du JXTA Core (1) n Peer n n n 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 n n Ensemble de Peers en relation (sécurité, intérêts communs, surveillance) Unique (Peer Group Id) World Peer Group Services (Discovery, Membership, Access, Pipe, Resolver, Monitoring) A. Thaveau & M-A Bourgeot 46

Les concepts du JXTA Core (2) n Peer Pipe n n Canal virtuel de

Les concepts du JXTA Core (2) n Peer Pipe n n Canal virtuel de communication entre Peer Endpoints Différentes qualités de services § § n n n Unidirectionnel et asynchrone Synchronisé Streaming Sécurisé Point-to-point pipe (1~1) et propagate pipe (1~n) Messages XML Peer Monitoring, Peer Metering n 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 Peer Pipes A. Thaveau & M-A Bourgeot 48

Les protocoles du JXTA Core n Peer Resolver Protocol (PRP) n n n Interrogation

Les protocoles du JXTA Core n Peer Resolver Protocol (PRP) n n n Interrogation d’un service dans un Peer Group Utilise le Rendezvous Protocol Handler Name Resolver Query Message, Resolver Response Message Endpoint Routing Protocol (ERP) n n 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="Resolver. Query" type="jxta: Resolver. Query"/> <xs: complex. Type name="Resolver.

Resolver Query Schema <xs: element name="Resolver. Query" type="jxta: Resolver. Query"/> <xs: complex. Type name="Resolver. Query"> <xs: all> <xs: element ref="jxta: Cred" min. Occurs="0"/> <xs: element name="Src. Peer. ID" type="jxta: JXTAID"/> <xs: element name="Handler. Name" type="xs: string"/> <xs: element name="Query. ID" type="xs: string"/> <xs: element name="Query" type="xs: any. Type"/> </xs: all> </xs: complex. Type> A. Thaveau & M-A Bourgeot 50

Les protocoles standard de JXTA n Peer Discovery Protocol (PDP) n n Rendezvous Protocol

Les protocoles standard de JXTA n Peer Discovery Protocol (PDP) n n Rendezvous Protocol (RVP) n n n Propage les messages dans un Peer Group Contrôle de la propagation (TTL, loopback detection, …) Peer Information Protocol (PIP) n n Recherche de ressources (Peers, Peers group, pipe, services) Utilise les services pour valoriser son cache Discovery Query Message, Discovery Response Message Obtenir des informations sur d’autres Peers (capacités, état, …) Pipe Binding Protocol (PBP) n n Etablir un Pipe entre 2 ou plusieurs Peers Pipe Resolver Message A. Thaveau & M-A Bourgeot 51

Discovery Query Schema <xs: element name="Discovery. Query" type="jxta: Discovery. Query"/> <xsd: simple. Type name="Discovery.

Discovery Query Schema <xs: element name="Discovery. Query" type="jxta: Discovery. Query"/> <xsd: simple. Type name="Discovery. Query. Type"> <xsd: restriction base="xsd: string"> <!-- peer --> <xsd: enumeration value="0"/> </xsd: restriction> </xsd: simple. Type> <xs: complex. Type name="Discovery. Query"> <xs: sequence> <xs: element name="Type" type="jxta: Discovery. Query. Type"/> <xs: element name="Threshold" type="xs: unsigned. Int" min. Occurs="0"/> <xs: element name="Attr" type="xs: string" min. Occurs="0"/> <xs: element name="Value" type="xs: string" min. Occurs="0"/> <!-- The following should refer to a peer adv, but is instead a whole doc for historical reasons --> <xs: element name="Peer. Adv" type="xs: string" min. Occurs="0"/> </xs: sequence> </xs: complex. Type> A. Thaveau & M-A Bourgeot 52

Les services JXTA n Equivalents aux librairies UNIX n n n Proposent différents mécanismes

Les services JXTA n Equivalents aux librairies UNIX n n n Proposent différents mécanismes n n n Recherche, indexation Partage de ressources Cache Transport via TCP/IP, HTTP, TLS Traitements distribués et parallèles n n n Fonctions au-dessus du JXTA Core Facilite le développement d’application Envoi de requêtes à l’ensemble d’un Peer Group Structure de données (XML) Communications sécurisées n Usage professionnel (Intranet et Extranet) A. Thaveau & M-A Bourgeot 53

Le Shell JXTA (1) n Accès interactif au JXTA Core n n Publier, recher

Le Shell JXTA (1) n Accès interactif au JXTA Core n n Publier, recher et exécuter des ressources Découvrir de nouveaux Peers ou Peer Groups Envoyer et recevoir des messages Propriétés des commandes n n n Chargées dynamiquement lors de l’appel Création de nouvelles commandes Appel : JXTA> Nom. Commande [-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) n Commandes de base n n n n shell, env,

Le Shell JXTA (2) n Commandes de base n n n n 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 : recher 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) n Motivations n n Avantages de JXTA n n n Augmentation

JXTA Search (1) n Motivations n n Avantages de JXTA n n n Augmentation perpétuelle de la quantité d’informations accessibles par Internet Moteurs de recherche dépassés « Hidden Web » = 400 fois plus d’informations Protocoles en XML = Multi plate forme Requêtes distribuées (architecture décentralisée) Les acteurs n n n 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 Network A. Thaveau & M-A Bourgeot 57

JXTA Search (2) n Recherche profonde (Deep Search) n n Query Routing Protocol (QRP)

JXTA Search (2) n Recherche profonde (Deep Search) n n Query Routing Protocol (QRP) n n Pertinence Accessibilité Efficacité 3 composants : registers, queries, responses Query Spaces, Query Predicates Query Resolution and Routing Utilisations n n Recherche Internet (Google) Échanges commerciaux (Communication et synchronisation) A. Thaveau & M-A Bourgeot 58