Programmation des Applications Réparties Introduction P2P
Transcription
Programmation des Applications Réparties Introduction P2P
Programmation des Applications Réparties Introduction P2P Luiz Angelo Steffenel [email protected] Steffenel Programmation des Applications Réparties – Master M1 - 2007-2008 1 Motivation ● Informatique Grand Public – ● ● Terminal (PC), Connexion quasi permanente (Forfait ADSL, Modem Cable, …) Usage – A la fois client – A la fois serveur (de ressources) Exemples – Calcul massivement distribué (SETI@home, XtremWeb, ...) – Partage de fichiers ● – Steffenel Napster, GnuTella, Kazaa, BitTorrent Plate-forme de développement (JXTA) Programmation des Applications Réparties – Master M1 - 2007-2008 2 Définitions ● ● ● Steffenel Un « peer » est un « individu du réseau » qui peut recevoir et traiter des messages issus des autres « peers » mais aussi envoyer ses messages à ces peers. Un système P2P n'est rien qu'un réseau où des pairs échangent des messages selon les besoins d'une application réseau : partage de fichiers, traitement de données, messagerie instantanée Une application est vraiment P2P ? – Elle adresse les aspects liés à la volatilité de la connection et des adresses du réseau ? – Les noeuds sont suffisamment autonomes lorsqu'ils se retrouvent partiellement ou totalement déconnectés du réseau ? Programmation des Applications Réparties – Master M1 - 2007-2008 3 Modèle Client-Serveur Steffenel ● Modèle assez courant dans l'Internet ● Distinction claire (?) entre les rôles ● Exemples – accès à un serveur Web – FTP – DNS – mail (?) Programmation des Applications Réparties – Master M1 - 2007-2008 4 Modèle P2P ● Ressources partagées ● Communications bidirectionnelles ● Exemples : – partage fichier ● – calcul distribué ● – seti@home messagerie instantanée ● Steffenel gnutella ICQ Programmation des Applications Réparties – Master M1 - 2007-2008 5 Un peu d'histoire ● années 1970 à 1980 – ● ● début d'Internet avec une architecture P2P (ARPANet) années 1990 – standardisation de l'architecture et des protocoles Internet – dissémination de services client-serveur Fin des années 1990 jusqu'à présent – le partage de fichiers reouvre l'intérêt sur le P2P ● – Steffenel actuellement, ce sont les applications les plus populaires de l'Internet étude sur les réseaux P2P comme possible évolution de l'Internet Programmation des Applications Réparties – Master M1 - 2007-2008 6 L'Internet aujourd'hui ● Internet aujourd’hui – Zone IP Stable ● ● – Principalement les serveurs d’entreprise mais aussi des PC des particuliers (abonnement illimité …) Zone IP Non Stable ● ● Steffenel Ordinateurs (nœud) connectés de manière permanente au réseau Ordinateurs connectés de manière intermittente au réseau Dispositifs mobiles (téléphone cellulaire, PDAs, ordinateurs portables) Programmation des Applications Réparties – Master M1 - 2007-2008 7 P2P « pur » ● Une vraie application P2P doit implémenter des protocoles qui ne font aucune distinction entre les pairs – ● ● Telles applications sont très rares La plupart des réseaux et applications P2P contient ou utilise des éléments non-P2P, comme par exemple un serveur DNS – Steffenel Ne pas reconnaître les concepts de « serveur » et « client » DNS est un service qui fait la traduction entre nom et IP. DNS est un service fondé sur une hiérarchie de serveurs qui sont contactés lorsqu'on a besoin de traduire un nom de machine en une adresse IP Programmation des Applications Réparties – Master M1 - 2007-2008 8 P2P avec Index Centralisé ● Index centralisé (en zone stable) ● Stockage décentralisé (en zone instable) ● Principe ● Steffenel – Chaque pair annonce à l’index la liste des ressource qu’il sert – Un pair requête l’index pour connaître la liste des pairs qui servent une ressources – Le chargement des données se fait de pair à pair Exemples – Napster – SoulSeek Programmation des Applications Réparties – Master M1 - 2007-2008 9 P2P avec Index Centralisé ● ● Avantages – Performance – Contrôle d'accès (facturation?, bannissement) Inconvénients – Single point of failure ● Steffenel peut être résolu avec des serveurs qui se relayent – Passage à l'échelle – Modèle abandonné surtout à cause des implications légales Programmation des Applications Réparties – Master M1 - 2007-2008 10 P2P avec Index décentralisé / Données décentralisées ● Index décentralisés (en zone instable/stable) ● Stockage décentralisé (en zone instable) ● Principe – Découverte des pairs qui servent l’index ● – ● ● Steffenel inondation du réseau (flooding) Les pairs qui servent d’index peuvent s’annoncer Avantages : environnement P2P pur, scalabilité, tolérance aux fautes Inconvénients : Performance dégradée sur des grands réseaux, sécurité, disponibilité, fiabilité Programmation des Applications Réparties – Master M1 - 2007-2008 11 P2P avec Index décentralisé / Données décentralisées ● Steffenel Exemple : le réseau GnuTella Programmation des Applications Réparties – Master M1 - 2007-2008 12 P2P décentralisé avec sélection de routes ● Pour pallier au problème du flooding, certaines applications P2P font de la sélection des routes sur lesquelles les messages sont relayés – principe des « supernodes » ● ● ● Steffenel stockage temporaire de données (cache) un peer devient automatiquement supernode s'il a le débit et la puissance nécessaire exemple : FastTrack Programmation des Applications Réparties – Master M1 - 2007-2008 13 P2P avec Hachage des Index Décentralisé (DHT) ● Steffenel Principe : – les index sont décentralisés – une application de hachage permet de connaître le peer qui a la plus grande probabilité de connâitre le index pour les informations demandées – exemples ● Chord ● Pastry ● Tapestry Programmation des Applications Réparties – Master M1 - 2007-2008 14 P2P avec Hachage des Index Décentralisé (DHT) ● Steffenel Chord – les noeuds et les clés partagent un espace d'identification – les clés sont stockés dans les noeuds avec l'ID immédiatement supérieur Programmation des Applications Réparties – Master M1 - 2007-2008 15 P2P avec Hachage des Index Décentralisé (DHT) ● Chord – Steffenel lors d'une requête, la demande est relayé dans l'ordre croissante des noeuds jusqu'à trouver le noeud avec l'index demandé Programmation des Applications Réparties – Master M1 - 2007-2008 16 Pros et Contres ● ● Steffenel Avantages – scalabilité – équilibrage de charge – qualité de service Inconvénients – coût pour garder les états à jour – indisponibilité partielle des index lors d'une défaillance – sécurité (attaques genre « man in the middle ») Programmation des Applications Réparties – Master M1 - 2007-2008 17 Résume P2P - Avantages ● Échanges plus rapides – ● Optimisation de l’utilisation de la bande passante du réseau – ● ressources réparties Tolérance aux pannes – Steffenel équilibrage de la charge du réseau Maintenance et coûts réduits – ● connexion directe réplication des ressources ● Extensibilité ● Utilisation des ressources inutilisées – CPU, Stockage, … Programmation des Applications Réparties – Master M1 - 2007-2008 18 Résume P2P - Inconvénients ● ● ● ● Steffenel Sécurité – Virus, backdoors (spyware) – Distributed Denial of Service (DDoS) – Confidentialité, Authentification Contenu trompeur – Consistance – Contradiction Loi : Wild Wild Web – Droit d’auteurs – Contenu immoral Régulation / Répression Programmation des Applications Réparties – Master M1 - 2007-2008 19 Un autre problème des réseaux P2P ● Steffenel Intéroperabilité – la plupart des applications P2P ne sont pas compatibles – Solution : une plate-forme P2P générique Programmation des Applications Réparties – Master M1 - 2007-2008 20 JXTA – un framework pour P2P ● introduit par SUN en 2001 – ● objectif : une plate-forme commune pour le développement d'applicaitons P2P JXTA définit – Concepts ● – Peers, peergroups, advertisements, modules, pipes, security 6 protocoles centraux ● Discovery, Resolver, Information, Endpoint Routing, Rendezvous, Pipe Binding – Une architecture réseau ● Steffenel Modèles de communication (unicast, diffusion) Programmation des Applications Réparties – Master M1 - 2007-2008 21 Avec JXTA on peut ● Steffenel Localiser dynamiquement d'autres peers même à travers des pare-feux ● Envoyer des messages et partages des ressources ● Retrouver des ressources ● Créer groupes de peers pour fournir des services ● Contrôler l'activité d'autres peers ● Échanger des messages avec sécurité et cryptographie Programmation des Applications Réparties – Master M1 - 2007-2008 22 Les Peers JXTA ● ● ● ● Processus ou dispositifs sur le réseau qui implémentent un ou plusieurs protocoles JXTA Peuvent opérer indépendamment et asychronement par rapport aux autres peers Identifiés par un Peer ID unique Leur interface réseau est publiée comme un seul point d'accès sur le réseau (endpoints) – Steffenel les points d'accès sont utilisés pour établir une connexion point-àpoint entre deux peers Programmation des Applications Réparties – Master M1 - 2007-2008 23 Les Groupes JXTA ● ● ● Steffenel Un groupe de peers qui se sont mis d'accord sur un ensemble commun de services Les peers s'organisent naturellement en peer-groups, chacun identifié par un peer group ID unique Les peergroups peuvent déterminer leur propre politique d'appartenance (membership) ● Un peer peut appartenir à plusieurs groupes simultanément ● Les peergroups permettent la création de – environnements sécurisés – environnements ciblés – environnements d'observation Programmation des Applications Réparties – Master M1 - 2007-2008 24 Les Advertisements (Annonces) ● Utilisés pour décrire toutes les ressources dans un réseau JXTA ● Description en langage neutre - XML documents ● ● Steffenel Les protocoles JXTA utilisent des advertisements pour décrire et annoncer les ressources d'un peer Les protocoles JXTA définissent 8 advertisements de base dont : – Peer Advertisement – PeerGroup Advertisement – Pipe Advertisement – Rendezvous Advertisement – Peer Info Advertisement – ... Programmation des Applications Réparties – Master M1 - 2007-2008 25 Les « Pipes » (communication) ● Les Pipes sont des canaux de communication virtuelle qui peuvent connecter des peers qui n'ont pas une liaison directe – ● Steffenel exemple : peers en réseaux différents Plusieurs types de pipes – Point-to-point Pipes – Propagate Pipes (diffusion) – Secure Unicast Pipes Programmation des Applications Réparties – Master M1 - 2007-2008 26 Les Messages ● Unité de base pour l'échange de données entre peers ● Les messages transms peuvent être ● – en format Binaire – en format Textuel (XML ou pas) Les protocoles JXTA sont spécifiés comme des ensembles de messages échangés entre les peers – ● Steffenel Par exemple, un advertisement est encapsulé dans un message Chaque implémentation définit comment un message est traduit vers la structure native des données (objets Java, structures C, ...) Programmation des Applications Réparties – Master M1 - 2007-2008 27 La Sécurité ● Cinq services de sécurité de base doivent être garantis : – Confidentialité – Authentification – Autorisation – Intégrité des données – Refutabilité ● ● Steffenel un message transmit ne peut jamais être la retransmission d'un message précédent Ces services de sécurité s'appliquent sur – les couches de transport – le membership des groupes Programmation des Applications Réparties – Master M1 - 2007-2008 28 Les IDs ● ● Chaque ressource ou peer sont identifiés de manière unique avec un ID – array de 64 octets – indépendant du système d'identification du réseau (IP, MAC) Six types d'ID ont été définis – ● peers, peergroup, pipes, contents, module classes et module specifications Un ID est représenté comme un Uniform Resource Name (URN) – Exemple de peer ID JXTA: ● Steffenel urn:jxta:uuid59616261646162614A78746150325033F3BC76 FF13C2414CBC0AB663666DA53903 Programmation des Applications Réparties – Master M1 - 2007-2008 29 L'Architecture JXTA Steffenel Programmation des Applications Réparties – Master M1 - 2007-2008 30 La Pile des Protocoles ● Steffenel Endpoint Routing Protocol (ERP) – Utilisé pour trouver des routes pour contacter d'autres peers – La route découverte inclut la liste des peers utilisés pour relayer les messages jusqu'à leur destination Programmation des Applications Réparties – Master M1 - 2007-2008 31 La Pile des Protocoles ● Steffenel Rendezvous Protocol (RVP) – Établit la connexion entre les peers et les services – Contrôle la propagation des messages dans le réseau ● Time To Live ● Détection de Loopbacks Programmation des Applications Réparties – Master M1 - 2007-2008 32 La Pile des Protocoles ● Steffenel Peer Resolver Protocol (PRP) – Permet à un peer de lancer une requête générique et de recevoir la réponse associée – Requêtes/Réponses peuvent être envoyées à tout le groupe ou à un peer spécifique à l'intérieur d'un groupe Programmation des Applications Réparties – Master M1 - 2007-2008 33 La Pile des Protocoles ● Pipe Binding Protocol (PBP) – Steffenel Utilisé par les peers pour établir un canal de communication virtuel (le pipe) entre un ou plusieurs peers Programmation des Applications Réparties – Master M1 - 2007-2008 34 La Pile des Protocoles ● Peer Information Protocol (PIP) – Steffenel Utilisé par les peers pour obtenir des informations sur d'autres peers ● état ● uptime ● trafic récent ● etc. Programmation des Applications Réparties – Master M1 - 2007-2008 35 La Pile des Protocoles ● Steffenel Peer Discovery Protocol (PDP) – Utilisé pour les peers pour annoncer leurs propres ressources (peer ID, peergroups, pipes, services) et pour découvrir les ressources des autres peers – Chaque ressource est décrit et publié dans un Advertisement Programmation des Applications Réparties – Master M1 - 2007-2008 36 Exemple d'Utilisation - BibShare ● ● ● Steffenel Groupe de peers qui partagent des références bibliographiques – Les peers peuvent recherches des références spécifiques ou faire une requête pour tout le groupe à la recherche d'entrées qui correspondent à un critère donné – Les entrées bibliographiques de chaque peer sont disponibles uniquement si le peer est conecté Les requêtes au groupe sont faites à l'aide du Peer Discovery Protocol L'acquisition d'une référence spécifique est faite à l'aide du Peer Resolver Protocol Programmation des Applications Réparties – Master M1 - 2007-2008 37