Étude d’approfondissement Protocoles de communication en Peer-to-Peer

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

Étude d’approfondissement Protocoles de communication en Peer-to-Peer Marc CALVISI M2PGI 02.11.2004

Menu Peer-to-peer Gnutella JXTA Documents et Références Démonstration 02.11.2004 Menu Peer-to-peer Gnutella JXTA Documents et Références Démonstration Vos questions?

Peer-to-Peer (P2P) - Introduction 02.11.2004 Peer-to-Peer (P2P) - Introduction Définiton «Peer-to-Peer (P2P) technology enables any network-aware device to provide services to another network-aware advice » [JXTA, Brendon Wilson] Peer Un processeur, une application, une machine Rôle : peut être un client et/ou serveur Client – demande un service Serveur – offre un service, exécute un service Différentes architectures possibles

P2P – Architecture Centralisée 02.11.2004 P2P – Architecture Centralisée Client/Serveur Données stockées centralement Client se connecte au serveur Pour envoyer et recevoir des données Pour communiquer avec autres clients Pas de communication direct entre les clients Serveur en panne plus de données pour les clients Nombre clients augmente Ressources nécessaires du serveur augmentent Exemple : Serveur web Base de données

P2P – Architecture Décentralisée 02.11.2004 P2P – Architecture Décentralisée Peer est client et/ou serveur Pas de serveur central Communication directe entre peers Responsabilités partagées Tolérant aux fautes Exemple : Gnutella v0.4

P2P – Arch. Centralisée/Décentralisée 02.11.2004 P2P – Arch. Centralisée/Décentralisée 2 parties Partie centralisée Supernoeud Informations partagées Partie décentralisée Peer Demande d’informations auprès des supernoeuds Communication direct entre clients Pas besoin de contacter tous les peers Exemple : Napster, Mirabilis ICQ

P2P - Avantages Réseaux très extensibles Responsabilité distribuées 02.11.2004 P2P - Avantages Réseaux très extensibles Responsabilité distribuées Différent canaux de communication possibles Utilisation de toute la bande passante Haute disponibilité Résistant au panne Calculs distribués Espace de stockage distribué

P2P - Désavantage Réseaux redondant Requête pour une information 02.11.2004 P2P - Désavantage Réseaux redondant Requête pour une information Différents résultats Sans réponse Apparition/Disparition de ressource à tout moment Attaques distribuées Problème de sécurité Authentification, Confidentialité, Intercepteurs, …

Menu Peer-to-peer Gnutella JXTA Documents et Références Démonstration 02.11.2004 Menu Peer-to-peer Gnutella JXTA Documents et Références Démonstration Vos questions?

Gnutella - Introduction 02.11.2004 Gnutella - Introduction Protocole pour échanger des fichiers Développé par NullSoft Utilisé par : BearShare, Limewire, GTK Gnutella Peer nommé servant Rôle : client et/ou serveur

Gnutella - Architecture 02.11.2004 Gnutella - Architecture Version 0.4 Décentralisée servants interconnectés Trop trafic

Gnutella - Architecture 02.11.2004 Gnutella - Architecture Version 0.6 Centralisée/décentralisée Ultrapeer (supernoeud) Gateway au réseau Gnutella Interconnecté de manière décentralisé Leaf connecté à un Ultrapeer centralisé Avantages : moins de trafic

Gnutella - Protocole Protocole v0.4 : 5 messages 02.11.2004 Gnutella - Protocole Protocole v0.4 : 5 messages Protocole v0.6 : 6 messages Les messages : PING – trouver un autre servant PONG – réponse à un PING adresses et informations pour partagé des données Query – Requête pour des fichiers QueryHit – réponse à QUERY Informations sur les données trouvées PUSH – Communication via firewall BYE – Déconnexion (v0.6)

Gnutella - Protocole Téléchargement d’un fichier 02.11.2004 Gnutella - Protocole Téléchargement d’un fichier via protocole HTTP Communication direct pour l’échange Servant envoie HTTP request GET

02.11.2004 Gnutella - Exemples PING Messages QUERY Messages

Menu Peer-to-peer Gnutella JXTA Documents et Références Démonstration 02.11.2004 Menu Peer-to-peer Gnutella JXTA Documents et Références Démonstration Vos questions?

JXTA – Introduction Problèmes des solutions P2P existants 02.11.2004 JXTA – Introduction Problèmes des solutions P2P existants Protocoles propriétaires Protocoles non compatibles Nouvelle application, nouveau protocole Différentes solutions Même propriétés pour les protocoles Souvent solutions seulement pour une platform Projet JXTA – lancée par Sun Microsystems JXTA = «juxtapose» Base pour développer une application P2P

JXTA - Objectifs Interoperability Platform Independance Ubiquity 02.11.2004 JXTA - Objectifs Interoperability Peers peuvent trouver autres peers Communication entre tous les peers possible Platform Independance indépendant du système d’exploitation Windows, Unix, Solaris,… indépendant du langage de programmation C/C++, Java, Perl, … Messages du protocole en XML Indépendant du moyen de transport TCP/IP, HTTP, Bluetooth, … Ubiquity indépendant du type de machine PDA, PC, Telefon mobile, … Security

02.11.2004 JXTA - Architecture Source : JXTA Technology: Creating Connected Communities, Sun Microsystems

JXTA - Couche JXTA Core Définie la base pour des réseaux P2P 02.11.2004 JXTA - Couche JXTA Core Définie la base pour des réseaux P2P Éléments sont partagés par toutes les solutions Définies 6 protocoles de communications

JXTA - Couche JXTA Core Peer Un appareil connecté au réseau 02.11.2004 JXTA - Couche JXTA Core Peer Un appareil connecté au réseau Différent peer Simple Peer Offre des services et utilise des services Rendezvous Peer Utiliser pour découvrir d’autres peers et des ressources de peers Router Peer Trouver un chemin de communication

JXTA - Couche JXTA Core Peer groups 02.11.2004 JXTA - Couche JXTA Core Peer groups Peer group = Collection de peers offrant un service spécifique Création d’ensemble de peers Attribution de nom à des peer groups Création de règles pour : Créer, supprimer, découvrir, publier, adhérer peer groups et des peers

JXTA - Couche JXTA Core Peer Monitoring 02.11.2004 JXTA - Couche JXTA Core Peer Monitoring Contrôle du fonctionnement et activités des peers dans un peer group Gestion de peers Contrôle d’accès, adaptation de priorité, compteur de trafic, stabilisation de la bande passante

JXTA - Couche JXTA Core Peer Pipes Canaux de communication entre peers 02.11.2004 JXTA - Couche JXTA Core Peer Pipes Canaux de communication entre peers Asynchrone, unidirectionnel Envoie des messages en XML Un pipe lié un point terminal (endpoint) (exemple : TCP port with an IP) Source : Projext JXTA v2.0 : Java Programmer’s Guide, Sun Microsystems

JXTA - Couche JXTA Core IDs Identifiant unique pour 02.11.2004 JXTA - Couche JXTA Core IDs Identifiant unique pour Peer, peer groups, pipes et autres ressources de JXTA Exemple d’id pour un peer urn:jxta:uuid59616261646162614A78746150325033F3BC76FF13C2414BC0AB663666DA53903

JXTA - Couche JXTA Core Advertisements Annonce pour représenter des 02.11.2004 JXTA - Couche JXTA Core Advertisements Annonce pour représenter des Peer, peer groups, pipes et services Indépendant du langage de programmation Structure en XML Protocoles utilisent les annonces Décrire, publier l’existence de ressources d’un peer Peer utilisent les annonces Se connecter et interagir avec un services

JXTA - Couche JXTA Core Exemple d’une annonce pour un pipe 02.11.2004 JXTA - Couche JXTA Core Exemple d’une annonce pour un pipe <?xml version="1.0"?> <!DOCTYPE jxta:PipeAdvertisement> <jxta:PipeAdvertisement xmlns:jxta="http://jxta.org"> <Id> urn:jxta:uuid- 59616261646162614E504720503250338E3E7862 29EA460DADC1A176B69B731504 </Id> <Type>JxtaUnicast</Type> <Name>TestPipe.end1</Name> </jxta:PipeAdvertisement>

JXTA - Couche JXTA Core Sécurité 5 requis de base Confidentialité 02.11.2004 JXTA - Couche JXTA Core Sécurité 5 requis de base Confidentialité Seulement une personne autorisé peut lire le message Authentification L’expéditeur est celui qu’il prétend être Autorisation L’expéditeur est autorisé à envoyer un message Intégrité Pas de changement du message durant le transfert Réfutation Le message a été envoyé par un expéditeur identifié N’est pas une copie d’une réponse transféré précédemment

02.11.2004 JXTA - Architecture Source : Projext JXTA v2.0 : Java Programmer’s Guide, Sun Microsystems

JXTA – Couche JXTA Services 02.11.2004 JXTA – Couche JXTA Services Étend les capacités de la couche JXTA Core Facilite le développement d’applications Mécanismes pour : Recherche Indexation Partage de fichier Authentification Infrastructure à clé publique

02.11.2004 JXTA - Architecture Source : Projext JXTA v2.0 : Java Programmer’s Guide, Sun Microsystems

JXTA – Couche JXTA Applications 02.11.2004 JXTA – Couche JXTA Applications Applications utilisant les couches JXTA services et JXTA Core Applications possibles : Instant messaging Mail Partage de document Partage de ressource

JXTA – Protocoles Trouver un peer Communication Surveillance 02.11.2004 JXTA – Protocoles Trouver un peer Communication Surveillance Indépendants de l’architecture du réseaux du moyen transport Source : JXTA, Brendon Wilson

JXTA – Peer Discovery Protocol 02.11.2004 JXTA – Peer Discovery Protocol Trouver des annonces de peers, peer groups, services et pipes 2 messages : Discovery Query Message Discovery Response Message

JXTA – Peer Discovery Protocol 02.11.2004 JXTA – Peer Discovery Protocol Exemple : Discovery Query Message <?xml version="1.0" encoding=“UTF-8 “ ?> <jxta:DiscoveryQuery> <Type> . . . </Type> <Treshold> . . . </Treshold> <PeerAdv> . . . </PeerAdv> <Attr> . . . </Attr> <Value> . . . </Value> </jxta:DiscoveryQuery> Type=(0|1|2)(annonce pour 0:peer,1:peer group,2:other type) Treshold? (nbr max. d’annonce à retourner par le peer répondant) PeerAdv? (Annonce pour identifier un peer de manière unique) (Attr and Value)? (Critère qu’une annonce doit remplir avant d’être retourné au demandeur) Type=0 & Threshold=0 (=> recevoir toutes les réponses possibles)

JXTA – Peer Discovery Protocol 02.11.2004 JXTA – Peer Discovery Protocol Exemple : Discovery Response Message <?xml version="1.0" encoding=“UTF-8 “ ?> <jxta:DiscoveryQuery> <Type> . . . </Type> <Count> . . . </Count> <PeerAdv> . . . </PeerAdv> <Attr> . . . </Attr> <Value> . . . </Value> <Response Expiration="expiration time"> . . . </Response> </jxta:DiscoveryQuery> Type (le même type que dans le query) Count? (nbr élement response dans le message) PeerAdv? (Annonce pour identifier le peer de manière unique) (Attr and Value)? (Critère) Response? (contient des annonces avec les critères)

JXTA – Peer Resolver Protocol 02.11.2004 JXTA – Peer Resolver Protocol Envoyer une requête de recherche 2 messages : Resolver Query Message Resolver Response Message

JXTA – Rendezvous Protocol 02.11.2004 JXTA – Rendezvous Protocol Envoyer des messages dans des peer groups 3 messages: Lease Request Message Lease Granted Message Lease Cancel Message

JXTA – Peer Information Protocol 02.11.2004 JXTA – Peer Information Protocol Demander des informations sur capacité et statut d’un peer 2 messages : Peer Info Query Message Peer Info Response Message

JXTA – Pipe Binding Protocol 02.11.2004 JXTA – Pipe Binding Protocol Lié un pipe à point terminal(endpoint) 2 messages : Pipe Binding Query Message Pipe Binding Answer Message

JXTA – Endpoint Routing Protocol 02.11.2004 JXTA – Endpoint Routing Protocol Trouver un chemin de communication 3 messages : Route Query Message Route Response Message Endpoint Router Message

Projet JXTA – Exemple Un réseau physique et son réseaux virtuel 02.11.2004 Projet JXTA – Exemple Un réseau physique et son réseaux virtuel Source : Projext JXTA v2.0 : Java Programmer’s Guide, Sun Microsystems

Documentations et Références 02.11.2004 Documentations et Références Brendon Wilson, « JXTA »,2000 Notions P2P, Explications sur les éléments de JXTA, l’architecture et les protocoles Livre en pdf sur le site www.brendonwilson.com/projects/jxta/ Sun Microsystems, « Project JXTA v2.0 Java Programmer’s Guide »,May 2003 Explications sur les éléments de JXTA, l’architecture et les protocoles www.jxta.org/docs/JxtaProgGuid_v2.pdf

Documentations et Références 02.11.2004 Documentations et Références Site officiel de JXTA www.jxta.org Beaucoup de documentations sur JXTA JXTA Technology: Creating Connected Communities, Sun Microsystems, 2004 Introduction dans JXTA Sites de Gnutella www.gnutella.com Site officiel http://rfc-gnutella.sourceforge.net/ Spécifications du protocole en version 0.4 et 0.6

02.11.2004 Démonstration

02.11.2004 Vos Questions ?