Partage de mémoire à très grande échelle sur des réseaux pair-à-pair Gabriel Antoniu, Luc Bougé, Thierry Priol IRISA/INRIA Rennes
Plan Pourquoi le P2P Introduction à JXTA Objectifs Concepts de base Protocoles Service de partage de mémoire dans JXTA Proposition d’architecture Conclusion
Pour quoi le pair-à-pair (P2P) ? Internet Client Client Cache Proxy Client Client Client Modèle pair-à-pair serveur serveur Client Client Client/ Serveur Client/ Serveur Zone de congestion Client Client/ Serveur Client Client Client/ Serveur Client/ Serveur Modèle client/serveur serveur serveur Client/ Serveur Zone de congestion Client/ Serveur Client/ Serveur Client/ Serveur
P2P: une définition Objectif: exploiter les ressources disponibles à la périphérie d’Internet Puissance de calcul, espace de stockage, contenu Définition Parité: tout nœud peut être client et serveur pour des transactions différentes Comment reconnaître un système P2P ? Connectivité variable et adresses IP temporaires = le cas standard! Autonomie des nœuds périphériques
P2P: caractéristiques Dynamicité du réseau sous-jacent Composition et topologie Découverte dynamique de pairs et de ressources Extensibilité Plus de pairs=>plus de performance Haute disponibilité Pairs interchangeables (réplication) Fiabilité des répertoires de ressources
JXTA: infrastructure générique pour le P2P Plate-forme ouverte de programmation P2P Ensemble de protocoles interopérables (XML) Indépendance des langages, systèmes, réseaux Projet open source: http://www.jxta.org
Services et applications JXTA Stockage distribué et partage de données Recherche, indexation et partage de fichiers Calcul distribué à grande échelle Outils de collaboration Messagerie P2P Monitoring des pairs et des services
Le réseau virtuel JXTA Peer ID Peer ID Peer ID Peer ID Peer ID Peer ID TCP/IP Peer Peer Peer Peer Peer Peer Firewall Firewall Peer Peer Peer Peer Peer HTTP Réseau physique
JXTA: pairs Un pair = Plusieurs types de pairs Un identifiant unique (UUID) Adressable indépendamment de sa localisation (firewalls, NAT) Plusieurs points d’accès réseau (TCP, HTTP, etc.) Plusieurs types de pairs Minimaux Simples Rendez-vous Routage
JXTA: pairs de routage Peer ID Peer ID Peer ID Relay Peer Peer ID TCP/IP Peer Peer Peer Peer Peer Peer Peer Peer Peer Firewall Peer Peer Peer Peer Peer HTTP Réseau physique
JXTA: groupes de pairs Ensemble de pairs réunis par un intérêt commun Applications collaboratives Services de groupe Politique de sécurité NetPeerGroup PeerGroupA Peer ID Peer ID Peer ID Peer ID Peer ID Peer ID Peer ID Peer ID PeerGroupB
JXTA: annonces (advertisements) Toute ressource est représentée par une annonce Pair Groupe de pairs Canal de communication Point d’accès au pair Service Contenu Etat d’un pair PeerGroup Advertisement: <?xml version="1.0"?> <!DOCTYPE jxta:PGA> <jxta:PGA> <GID> urn:jxta: uuid- BCBCDEABDBBBABEABBBABA000000 </GID> <MSID> urn:jxta:uuid- BFEFDEDFBABAFRUDBACE00000001 </MSID> <Name> My Group </Name> <Desc> This group is to be used for my own testing </Desc> </jxta:PGA>
JXTA: communication par canaux Peer Group A Input Pipe Output Pipe Peer PeerGroup B Send Receive Point-to-Point Pipe Propagate Canaux Asynchrones Uni-directionnels 1-to-1, 1-to-N ou N-to-1 Localisation transparente des services Pipeline de services Haute disponibilité (reconfiguration transparente en cas de panne)
JXTA: pile des protocoles Peer Discovery Protocol Pipe Binding Protocol Peer Info Protocol Peer Resolver Protocol Peer Endpoint Protocol Peer Rendezvous Protocol
JXTA: protocole de découverte 3 2 4 4 RdV RdV 1 2 RdV 3 2 3 2 4
Community JXTA Applications JXTA: architecture JXTA Applications Sun JXTA Applications Community JXTA Applications Sun JXTA Services JXTA Shell JXTA Services Community JXTA Services Indexing Searching File sharing Peer Commands Peer Monitoring Peer Groups Peer Pipes JXTA Core Security Security Any Peer on the Expanded Web
JXTA: services de base Discovery Service PeerInfo Service Pipe Service Resolver Service Membership Service Access Service
Service de partage de mémoire Point de départ: mémoire virtuellement partagée Peer ID Peer ID Peer ID Peer ID Peer ID Peer ID Peer ID Peer ID Espace d’adressage global Données communes
Service de partage de mémoire P2P Nouvelles hypothèses Dynamicité du réseau Hétérogénéité des processeurs et des réseaux Sécurité Cohérence hiérarchique Schémas d’accès aux données Nommage des nœuds Critères d’évaluation à revoir Pas une DSM à grande échelle!
Application: couplage de code Une application = un assemblage de plusieurs codes de calcul SAN LAN Mécanique des structures Thermique Optique Dynamique Conception de Satellite Application de couplage Grappe de PC WAN SAN Visualisation Supercomputer Grappe de PC
Application: metacomputing Client Stockage des données Éviter les transferts multiples entre client et serveurs Gestion des données distribuées et redistribution Modèle de déploiement P2P Requête AGENT(s) S2 ! A, B, C Réponse (C) Op2(C, A, B) Op1(C, A, B) S1 S3 S4 S2 Serveur Serveur Serveur Serveur Service de gestion des données distribuées persistantes
Service de partage de mémoire: Architecture Applications JXTA Applications Memory Sharing Service Consistency protocols JXTA Services Communications Superpages Peer Monitoring Peer Groups Peer Pipes JXTA Core Security Security Any Peer on the Expanded Web
Conclusion Partage de mémoire pair-à-pair Applications typiques Principaux défis: dynamicité, hétérogénéité, architecture hiérarchique Applications typiques Couplage de code Persistance des données dans les environnements de calcul sur grille JXTA: plate-forme ouverte pour des services et applications P2P