Etude d`appfrondissement Protocole de communication Peer-to-peer

publicité
Étude d’approfondissement
Protocoles de communication
en Peer-to-Peer
Marc CALVISI
M2PGI
02.11.2004
02.11.2004
Menu
 Peer-to-peer
 Gnutella
 JXTA
 Documents et Références
 Démonstration
 Vos questions?
2
02.11.2004
3
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
02.11.2004
4
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
02.11.2004
5
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
02.11.2004
6
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
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é
7
02.11.2004
8
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, …
02.11.2004
Menu
 Peer-to-peer
 Gnutella
 JXTA
 Documents et Références
 Démonstration
 Vos questions?
9
02.11.2004
10
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
02.11.2004
11
Gnutella - Architecture
 Version 0.4
• Décentralisée
• servants interconnectés
• Trop trafic
02.11.2004
12
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
02.11.2004
13
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)
02.11.2004
14
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
15
02.11.2004
Menu
 Peer-to-peer
 Gnutella
 JXTA
 Documents et Références
 Démonstration
 Vos questions?
16
02.11.2004
17
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
02.11.2004
18
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
19
JXTA - Architecture
Source : JXTA Technology: Creating Connected Communities, Sun Microsystems
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
20
02.11.2004
21
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
02.11.2004
22
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
02.11.2004
23
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
02.11.2004
24
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
02.11.2004
25
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:uuid59616261646162614A78746150325033F3B
C76FF13C2414BC0AB663666DA53903
02.11.2004
26
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
02.11.2004
27
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:uuid59616261646162614E504720503250338E3E7862
29EA460DADC1A176B69B731504
</Id>
<Type>JxtaUnicast</Type>
<Name>TestPipe.end1</Name>
</jxta:PipeAdvertisement>
02.11.2004
28
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
29
JXTA - Architecture
Source : Projext JXTA v2.0 : Java Programmer’s Guide, Sun Microsystems
02.11.2004
30
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
31
JXTA - Architecture
Source : Projext JXTA v2.0 : Java Programmer’s Guide, Sun Microsystems
02.11.2004
32
JXTA – Couche JXTA Applications
 Applications utilisant les couches JXTA services et
JXTA Core
 Applications possibles :
•
•
•
•
Instant messaging
Mail
Partage de document
Partage de ressource
02.11.2004
33
JXTA – Protocoles
 Trouver un peer
 Communication
 Surveillance
 Indépendants
• de l’architecture du réseaux
• du moyen transport
Source : JXTA, Brendon Wilson
02.11.2004
34
JXTA – Peer Discovery Protocol
 Trouver des annonces de peers, peer groups, services et
pipes
 2 messages :
• Discovery Query Message
• Discovery Response Message
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)
35
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)
36
02.11.2004
37
JXTA – Peer Resolver Protocol
 Envoyer une requête de recherche
 2 messages :
• Resolver Query Message
• Resolver Response Message
02.11.2004
38
JXTA – Rendezvous Protocol
 Envoyer des messages dans des peer groups
 3 messages:
• Lease Request Message
• Lease Granted Message
• Lease Cancel Message
02.11.2004
39
JXTA – Peer Information Protocol
 Demander des informations sur capacité et statut
d’un peer
 2 messages :
• Peer Info Query Message
• Peer Info Response Message
02.11.2004
40
JXTA – Pipe Binding Protocol
 Lié un pipe à point terminal(endpoint)
 2 messages :
• Pipe Binding Query Message
• Pipe Binding Answer Message
02.11.2004
41
JXTA – Endpoint Routing Protocol
 Trouver un chemin de communication
 3 messages :
• Route Query Message
• Route Response Message
• Endpoint Router Message
02.11.2004
42
Projet JXTA – Exemple
 Un réseau physique et son réseaux virtuel
Source : Projext JXTA v2.0 : Java Programmer’s Guide, Sun Microsystems
02.11.2004
43
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
02.11.2004
44
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
• www.jxta.org
• 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
45
02.11.2004
Vos Questions ?
46
Téléchargement