02-agent mobile
Transcription
02-agent mobile
Plan Agents mobiles Programmation par agents Exemples de code mobile Modèles à agents mobiles Principes et mise en œuvre [email protected] http://rangiroa.polytech.unice.fr Evaluation quantitative Agents intelligents – en dehors des objectifs de ce cours mise à jour septembre 2010 2 Un agent… mobile C’est quoi ? Il n’y a pas de définition unique IEEE Spectrum April 1998 paper by Morreale 2 points de vue Système S’exécute dans un environnement d’exécution donné Réactif, autonome, possède un but Communiquant, mobile Apprenant, digne de confiance Utilisateur final (fera l’objet de la seconde partie du cours) Assistant personnel qui peut faire des actions à la place de l’utilisateur Possibilité de délégué à la demande des tâches Agents… mobiles 3 mise à jour septembre 2010 4 mise à jour septembre 2010 1 Principe de fonctionnement Agents et domaines de recherche Coté système Systèmes répartis Ne reste pas sur la station ou il a été créé Architectures et protocoles pour exécuter des ‘objets’ mobiles Peut se transporter (migrer) au travers du réseau vers une autre Sécurité, tolérances aux fautes, désignation station, disparaît du site de départ après migration Peut emporter un état lors de la migration Est capable de communiquer avec d’autres agents, avec les stations visitées Langages de programmation Code mobile, sûreté, construction syntaxique Langages pour la communication entre agents Intelligence artificielle Coté utilisateur Intelligence, raisonnement, apprentissage, coopération Est autonome Peut raisonner et prendre des initiatives S’adapte à un environnement changeant mise à jour septembre 2010 5 Ce n’est pas nouveau... Migration de processus Une évolution… Migration des objets Utilisé dès le début des années 1980 pour faire de la régulation de Permettre de coupler des objets dans des espaces virtuels charge dans un réseau local différents sur différents noeuds Locus (UCLA), Sprite (UC Berkeley), Condor (Wisconsin) Nécessite la mobilité du code et des données Un processus qui n’était pas terminé pouvait continuer son exécution Emerald (1986) supporte la mobilité des objets avec un contrôle sur un autre site par migration : du programme (Univ. of Washington - 1986) du code, Guide (1987) supporte la mobilité autonome des objets (un objet des données, est couplé sur le site qui l’utilise) du tas, Chorus distributed system (1988) supporte la mobilité autonome de la pile, des objets (un objet décide ou il doit être couplé) des descripteurs ouverts (fichiers), du compteur ordinal 7 mise à jour septembre 2010 6 Toutes ces approches nécessite un système homogène mise à jour septembre 2010 8 mise à jour septembre 2010 2 Evolution suivante... Agents mobiles Un agent mobile est un objet capable de migrer de manière Appel de procédure et mobilité du code Code du service + data Client Server resultats (data) autonome d’un site à un autre afin d’exécuter des actions décrites par son créateur Le code est transporté sur le site du serveur Client agent (code+data) • Remote Evaluation model by Stamos and Gifford (MIT - 1990). • Java (Sun Microsystems - 1995) permet la migration du code sur des plate-formes hétérogènes mise à jour septembre 2010 Agent mobile Server 2 Server 3 9 Server 1 mise à jour septembre 2010 10 Exemples de code mobile Exemples de code mobile SQL Postscript code exécuté par machine physique ou virtual code exécuté par un interpréteur SQL reporte le travail sur différents sites code déplacé vers le serveur de base de données %!PS-Adobe-3.0 %%Title=... ggfdgf ... client %%EOF site A interprète (ghostview) 11 site B ggfdgf requête SQL interprète SQL SGBD imprimante postscript mise à jour septembre 2010 12 serveur mise à jour septembre 2010 3 Pourquoi utiliser des agents mobiles Exemples de code mobile S’affranchir du réseau Applets programme exécutable inclus dans une page HTML Latence, débit exécution sur le site qui télécharge la page HTML Mode déconnecté Permet d’encapsuler des protocoles <HTML> Par un modèle de fonctionnement asynchrone et autonome qui chargement Privilégie les interactions locales [...] applet Permet l’installation d’interface locale spécifique communication Permet de s’affranchir de l’hétérogénéité En ayant un un modèle robuste MV Java client 13 serveur mise à jour septembre 2010 Quelques exemples d’applications Modèle à agents mobiles Principes Commerce électronique : suivi de salle de marché Agent Mobile : processus, incluant du code et des données, pouvant se déplacer entre des machines pour réaliser une tâche Assistant personnel : filtrage, recherche d’information Agent Collecte d’information distribuées Monitoring et notification Objet actif Objets : encapsule un état Agents : encapsule un état + exécute un comportement Administration, diffusion de logiciel, mise à jour communique potentiellement avec d'autres agent Mise en cohérence de données dupliquées Objet mobile se déplace en fonction de ses besoins suit parfois un itinéraire Système de workflow et système collaboratif Détection d’intrusion Calcul parallèle 15 mise à jour septembre 2010 14 Jeux sur internet mise à jour septembre 2010 16 mise à jour septembre 2010 4 Modèle à agents mobiles Exemple 1 Modèle à agents mobiles Exemple 2 Agent notificateurs/réactifs Agents itinérants réalisant une suite attend une information ou un événement d'interaction avec des serveurs privilégie les accès locaux exemple : jointure entre deux sources de données prévient un usager ou déclenche une action exemples recherche d'emploi dans des journaux gestion d'un portefeuille d'actions notification client App un serveur retourne une liste de agent 17 Service serveurmise à jour septembre 2010 18 noms (Hôtels) un serveur gère un annuaire téléphonique les serveur sont gérés par des institutions différentes Annuaire mise à jour septembre 2010 Modèle à agents mobiles Exemple 3 Les fonctions d’une plate-forme à agents mobiles Agent d'adaptation Une plate-forme à agents permet : extension des fonctions du service La création des agents adaptation aux besoins spécifiques des clients L’exécution des agents exemple : compression/chiffrement de documents un client demande un document à un serveur le client passe un algorithme de compression ou de chiffrement des données le code de cet algorithme est propre au client La migration des agents La terminaison des agents agent avec code de compression App 19 Serveur document compressé mise à jour septembre 2010 20 mise à jour septembre 2010 5 Modèle à agents mobiles Définitions Modèle à agents mobiles Définitions Agents Déplacement unité de structuration des applications entre des places agents mobiles ou stationnaires parfois notion d’itinéraire ressources allouées (contrôlées) aux agents permet de co-localiser des agents pour des interactions locales Places Interactions endroit que peut visiter un agent entre des agents co-localisés : meetings Communication synchrone Appel de méthode ou partage d’objets plus fin que le site On peut avoir plusieurs places sur un site Permet un contrôle d’accès par place entre des agents distants : messages Communication asynchrone directe (envoie de messages à un agent) ou indirecte (envoie de messages à une boite aux lettres certaines places prédéfinies pour un agent home mise à jour septembre 2010 21 mise à jour septembre 2010 22 Modèle à agents mobiles Définitions Modèle à agents mobiles La mobilité Contrôle d’accès Agents mobiles = paradigme pour la calcul distribué Code mobile : migration du code Objets mobiles : migration du code + données comme toujours, deux aspects Identification (authentification) de l’agent ou de la place Processus mobiles : migration du code + données + état des threads Agents mobiles : migration du code + données + état des threads + Description des permissions Que peut faire un agent sur cette place Que peut faire cette place sur cet agent L’un doit se protéger de l’autre autorités de son propriétaire Différentes mobilité en ‘let’ dans le monde Java Applet : transfert du code/donnée depuis un serveur vers un client (download) Servlet : upload de code depuis un client vers un serveur Agents mobiles : pas de notion de client ou de serveur, peu effectuer plusieurs sauts. 23 mise à jour septembre 2010 24 mise à jour septembre 2010 6 Mise en œuvre de la mobilité Obtention du code et des données Mise en œuvre de la mobilité Sender Receiver Suspend Execution Resume Execution Serialize Agent Deserialize Agent Server (c) Class at Server Class Code Encode Data Transfer Data Origin Destination Decode Data Agent Agent Receive Data Class Code Class Code (b) Class at Origin (a) Class at destination Network 25 mise à jour septembre 2010 Modèle à agents mobiles Les problèmes Mobilité faible / forte Mobilité Mobilité faible Migration du code + données hétérogénéité du code, des données et du système hypothèse sur l'environnement (imposer homogénéité) gestion par une machine virtuelle Données = variables d’instance Après migration l’éxécution débute au début du programme capture de l'état d'un agent délimiter l'ensemble des objets à déplacer avec l'agent capture de l'état de la pile d'exécution migration faible migration forte 27 mise à jour septembre 2010 26 Exemple : applet mise à jour septembre 2010 28 • IEEE TSE May’98 paper by Fugetta, Picco, Vigna • Thèse Sarah Bouchenak, Grenoble Mobilité forte Migration du code + données + état éxécution Données = variables d’instance Execution State – variables locales et variables liés aux processus/threads (pile / tas / compteur ordinal / …) Après migration l’exécution continu a l’endroit ou elle a été suspendue mise à jour septembre 2010 7 Exemples Mobilité forte La fonction calcule est founie 29 par la place Le tableau site contient les différentes places à visitée run () { For (i=0; i<N;i++) { Y := calcule (X); moveto (site[i+1]); } } RPC vs agents mobiles RPC Mobilité faible Agents mobiles Un « processus demande un traitement qui Même structure de donnée int status = 0; run () { if (status != N) { Y := calcule (X); status++; moveto (site[i++]); } } mise à jour septembre 2010 CLIENT est dans autre « processus » Message d’appel suivi d’un message de réponse La procédure appelée est locale au processus distant Client et serveur sont d’accord a priori sur le protocole à utiliser Interaction et communication en continu entre le client et le serveur network SERVER Au lieu de demander un traitement, l’agent est à l’initiative du traitement Messages : c’est généralement l’agents lui- même (procédure + donnée + état) Émetteur : celui qui a commencé le traitement - récepteur : celui qui poursuit le traitement Interaction en continu… mais pas communication en continu CLIENT network Mobile Agent Service mise à jour septembre 2010 30 SERVER Modèle à agents mobiles Les problèmes - Utilisation de ressources partagées Modèle à agents mobiles Les problèmes - Sécurité référence à distance attaque d'un hôte par un agent mobile confinement de l'exécution par le matériel par le logiciel copie liaison par équivalence authentification de l'agent pour délimiter ses droits d'accès attaque d'un agent par un hôte très difficile dans le cas général R 31 avant ? ? mise à jour septembre 2010 après 32 Solution dans le cadre du calcul : brouillage de code A veut faire calculer F(x) sur le site B sans révéler F à B (F linéaire) A calcule Z = S.F (S matrice inversible choisie par A) A envoie Z à B et B calcule y = Z(x) et envoie y à A A calcule S-1(y) = F(x) mise à jour septembre 2010 8 Modèle à agents mobiles Un modèle qui a de nombreux avantages Modèle d’exécution asynchrone et autonome Justifié Permettre le déployement 33 dynamique de composants d’applications sur un nombre arbitraire de sites Fonctionne sur des platesformes hétérogènes Parfaitement adapté aux utilisateurs mobiles pouvant être déconnectés Modèle à agents mobiles Quelques plates-formes Autres environnements (Tcl, Sur Java A justifier AgentTcl (Dartmouth College) http://www.trl.ibm.co.jp/aglets la bande passante et la charge du réseau Encapsuler des protocoles Adaptabilité de l’application par migration Odyssey (General Magic Inc.) http://www.cs.dartmouth.edu/~agent Ara (Université de Kaiserslautern) http://genmagic.com/technology/ mobile_agent.html http://www.uni-kl.de/AG-Nehmer/ Concordia(Mitsubishi) Projekte/Ara Tacoma (Université de Tromsø et http://www.meitca.com/HSL/ Projects/Concordia Cornell) Voyager (Object Space) De très nombreuses http:/www.cs.uit.no/DOS/Tacoma http://www.objectspace.com/voyager applications peuvent être programmée selon ce modèle mise à jour septembre 2010 Python, ...) Aglets (IBM) Réduire la consommation de MOA (OSF/OpenGroup) http://www.osf.org/RI/java/moa mise à jour septembre 2010 37 Modèle à agents mobiles Aglets un projet d’IBM http://www.trl.ibm.com/aglets/ Les sources sont ici : http://sourceforge.net/projects/aglets/ conçu sur Java User Interface Etude d’une plate-forme Aglet 38 A A A Security Manager Network Daemon mise à jour septembre 2010 39 Network mise à jour septembre 2010 9 Pourquoi Java ? Bénéfices Objectifs Limitations Indépendant de la plate-forme Peu de support pour le Exécution sûres contrôle des ressources Pas de référence ‘protégées’ Chargement de classe dynamique Programmation multi-thread Persistance par sérialisation Simplicité et extensibilité La programmation d’une Aglet par un programmeur Java doit être aisée Spécifications (JAAPI) plus que plate-forme nécessité d'un objet proxy pour Indépendant des plates-formes protéger l'accès aux méthodes publiques Une Aglet doit pouvoir s’exécuter sur n’importe quelle place respectant la spécification JAAPI Pas de support pour capturer et restaurer un contexte d’exécution Standard industriel JAAPI doit devenir un standard industriel Security mise à jour septembre 2010 40 41 Les éléments du modèles Une aglet non fiable ne doit pas être un risque pour la place qui l’exécute mise à jour septembre 2010 Aglet Une aglet est un objet java mobile qui peut visiter plusieurs sites. Interfaces Classes AgletContext Aglet FutureReply AgletIdentifier MessageManager AgletProxy Il est autonome i.e. il s’exécute dans sa propre thread Il est réactif i.e. il répond au message qu’il reçoit proche du modèle d’acteurs ou des JavaBean Itinerary Message En rouge, les éléments du modèle détaillé après 42 mise à jour septembre 2010 43 mise à jour septembre 2010 10 Context Proxy Un contexte est le lieu d’exécution d’une aglet Un proxy est le représentant d’une aglet i.e. une place Il empêche l’accès direct aux méthodes publiques de l’aglet Implémenté par un objet stationnaire Cache la localisation de l’aglet Founit tout ce qui est nécessaire pour exécuter de manière homogène (y compris en environnement hétérogène) une aglet Protège le système hôte contre les aglets malveillante Un site peut contenir plusieurs contextes mise à jour septembre 2010 44 mise à jour septembre 2010 45 Message Itinerary Un message est un objet échangées entre aglets. Liste de contexte à visiter auquel est associé une liste d’action Selon les besoins, il peut être utilisé de manière synchrone ou Inclus le problème du routage (identification d’un noeud physique asynchrone. Le mode asynchrone permettant la coopération lache entre aglets à partir d’une description symbolique) Fournit une abstraction pour mettre en œuvre de modèle d’itinéraire non triviaux. Un gestionnaire de message permet de contrôler la concurrence des messages entrants 46 mise à jour septembre 2010 47 mise à jour septembre 2010 11 Identifier En résumé Chaque aglet possède un identifiant Les abstractions Unique Contexte : une place Immuable Aglet : un agent mobile AgletIdentifier : un identifiant unique AgletProxy : un objet d’accès Attribué à sa création Message message asynchrone appel de procédure synchrone Proxy Agents Place Engine Resources Host mise à jour septembre 2010 mise à jour septembre 2010 48 Mise en œuvre d’une aglet Mise en œuvre d’une aglet Interface Une classe qui étend la classe Aglet Etat Un graphe d’objets sérialisable Implémentation Des méthodes prédéfinies de gestion des aglets qu’il faut implémenter Un modèle de programmation réactif sur une association événement réaction Méthode à ne pas surcharger sauf besoin spécifique Méthodes à surcharger (livrées vides) Aglet.dispatch (URL url) Aglet.onCreation (Object // déplace l’aglet dans la place url Aglet.deactivate (long time) Listener // Suspend l’exécution Aglet.clone () Interface // Duplique l’aglet Aglet.getAgletContext () Implementation // récupère la place courante init) // executé lors de la création Aglet.run () // lancé lors de l’arrivée sur la place Aglet.HandleMessage (Message msg) // action lors de la réception d’un message Aglet.onDisposing () State 50 49 Identifier mise à jour septembre 2010 51 // action lors de la desctruction de mise à jour septembre 2010 l’aglet 12 Autres méthodes de la classe aglet Proxy et message Ma première Aglet public class Hello extends Aglet { Proxy public void onCreation (Object init) { AgletContext.getAgletProxies() System.out.println (“created!”); } AgletContext.getAgletProxy (AgletID) public void run () { Un proxy peut être transmis dans un message System.out.println (“hello!”); } Message public boolean handleMessage (Message msg) { Composé de deux champs : un type (String), un objet if (msg.sameKind(“sayHello”)) { System.out.println (“hello!”); appel synchrone : AgletProxy.sendMessage (Message msg) return true; appelsynchrone à résultat différé (asynchrone avec futur) : } AgletProxy.sendAsyncMessage (Message msg) return false; } Appel asynchrone : AgletProxy.sendOnewayMessage (Message msg) public void onDisposing () { System.out.println (“bye!”); 52 }} mise à jour septembre 2010 mise à jour septembre 2010 53 Autres méthodes de la classe aglet Mobilité Modèle à agents mobiles Programmation de la mobilité Un listener pour la mobilité (MobilityListener) Pas de mobilité “forte” du code Des événements imposées par la plate-forme agletArrived (ContextEvent ev) agletDispatched (ContextEvent ev) agletReverted (ContextEvent ev) onDispatching () aglet Des réactions définies par le programmeur onArrival (MobilityEvent l) // quand l’agent arrive sur une place onDispatching (MobilityEvent l) // quand l ’agent part d ’une place onReverting (MobilityEvent l) // quand l’agent part d’une place pour revenir à la place ‘home’ 54 mise à jour septembre 2010 dispatch onArrival () aglet retract onReverting () 55 mise à jour septembre 2010 13 Modèle à agents mobiles Programmation de la mobilité Autres méthodes de la classe aglet Cycle de vie, Clonage, Persistance Un listener pour chaque classe d’événement class myListener implements MobilityListener { public void onDispatching (MobilityEvent l) { Liés aux contextes contextStarted (ContextEvent ev) contextShutdown (ContextEvent ev) System.out.println (“I am leaving!”); } public void onReverting (MobilityEvent l) { System.out.println (“I am going home!”); Cycle de vie d’une aglet agletCreated (ContextEvent ev) agletCloned (ContextEvent ev) agletStateChanged (ContextEvent ev) agletDeactivated (ContextEvent ev) agletActivated (ContextEvent ev) } public void onArrival (MobilityEvent l) { System.out.println (“I have arrived!”); } } public class MyAglet extends Aglet { public void onCreation (Object init) { MobilityListener listener = new myListener(); addMobilityListener(listener); 56 }} mise à jour septembre 2010 mise à jour septembre 2010 57 Modèle à agents mobiles Application à Java Avantages de Java Diffusion sur toutes les machines Mobilité du code et des objets chargement dynamique de classes (ClassLoader) sérialisation des objets Java Sécurité assurée par l'environnement confinement : pas d'adresses virtuelles contrôle d'accès aux ressources (SecurityManager) Agents mobiles quelques justifications 60 mise à jour septembre 2010 61 mise à jour septembre 2010 14 Modèle à agents mobiles Expérimentation : coûts de base Modèle à agents mobiles Conception sur Java Sérialisation de l'état de l'agent Objectif : mesurer les coûts des principaux mécanismes de Java Envoi du code et de l'état de l'agent rentrant dans la conception Développement d'une plate-forme minimale Environnement : Destruction de l'agent sur le site origine Création d'un thread sur le site destination Chargement du code de l'agent (chargeur privé) Dé-sérialisation de l'agent Exécution mise à jour septembre 2010 62 63 Coûts des principales phases mise à jour septembre 2010 Coût de la migration (plate-forme minimale) coût de Java prohibitif par rapport au réseau local acceptable par rapport à l'Internet Coût de la migration d'un agent minimal sur réseau local Coût de la migration d'un agent minimal sur Internet grande partie provenant du chargeur privé 64 0.6 ms 20 ms 842 Ko/s 129 Ko/s 1 µs 3,1 ms 44 ms Modèle à agents mobiles Expérimentation : coûts de base Modèle à agents mobiles Evaluation des coûts Sérialisation de l'agent Transfert de l'agent sur le réseau local Transfert de l'agent sur Internet Installation de l'agent avec le chargeur de Java Installation de l'agent avec un chargeur privé à l'agent Latence sur le réseau local Latence sur Internet Débit sur le réseau local Débit sur Internet Appel local de méthode Java Appel à distance de méthode Java sur le réseau local Appel à distance de méthode Java sur Internet 35 ms 148 ms Coût de la migration (Aglets) 3,2 ms 8 ms 121 ms 4.3 ms Coût de la migration d'un Aglet minimal sur réseau local Coût de la migration d'un Aglet minimal sur Internet 240 ms 369 ms 23,8 ms mise à jour septembre 2010 65 mise à jour septembre 2010 15 Modèle à agents mobiles Expérimentation : intérêt/RMI Modèle à agents mobiles Expérimentation Objectif : étudier l’intérêt de la technologie agents mobiles en Trois machines réparties sur Internet utilisant en France (INRIA) le modèle client serveur (Java-RMI) en Grande-Bretagne (QMW) une plate-forme minimale que nous avons réalisée en Suisse (Université de Genève) une plate- forme très répandue (Aglets) Aglets Résultats visés Java-RMI comparaison entre le modèle client-serveur et le modèle à agents Notre plate-forme minimale mobiles comparaison entre une plate-forme minimale et une vrai plate-forme à agents mobiles mise à jour septembre 2010 66 mise à jour septembre 2010 67 Modèle à agents mobiles Expérimentation Modèle à agents mobiles Expérimentation Capacités du réseau Comparaison aller-retour avec agent mobile et RMI Taille enregistrement : 80 octets entre France et GB 3500 3000 2500 2000 1500 1000 500 0 RMI 1400 1200 800 1000 600 400 Agle ts a nd Age nt 1 129 280 123 200 20 16 26 Débit (Ko/sec) 0 France - GB GB - Suisse Suisse - France Latence (ms) Temps en millisecondes Connexion Nom bre d'e nre gis tre m e nt 68 mise à jour septembre 2010 69 mise à jour septembre 2010 16 Modèle à agents mobiles Expérimentation Modèle à agents mobiles Expérimentation Application de jointure Application de jointure : résultats rpcC-A(n) + n*rpcC-B(1) > AgC-A(0) + AgA-B(n) + AgB-C(2*n) Ag(n) augmente plus vite que rpc(n) ... A A rpc (1) C C rpc (n) B B mise à jour septembre 2010 70 mise à jour septembre 2010 71 Modèle à agents mobiles Expérimentation Modèle à agents mobiles Expérimentation Application de compression Application de compression : résultats App Serveur document compressé La compression est potentiellement rentable si tc + fc * S/dr + td < S/dr ce qui donne : dr < 74 Ko/s pour un fichier de 100 Ko dr < 164 Ko/s pour un fichier de 500 Ko Mais le cout d’un transfert par agent augmente plus vite ... 72 mise à jour septembre 2010 73 mise à jour septembre 2010 17 Modèle à agents mobiles Conclusion La plate-forme mobilet Conclusion Arborescence des fichiers Mobilet `-----appli agents mobile : nouveau modèle basé sur la mobilité Java fournit les outils pour le support d'agents mobiles | `-----hello | `-----mesure | `-----vente `-----system Intéressant pour des réseaux lents ou lors de déconnexions Limites et perspectives intégration avec les autres modèles transparence de la programmation migration faible/forte utilisation de ressources partagées mise à jour septembre 2010 74 mise à jour septembre 2010 75 Travail à faire Mini projet Pour la semaine prochaine implémenter l'application de commerce électronique à l'aide de la Avoir installé la plate-forme plate-forme Mobilet Avoir programmé l’exemple suivant Écrire un agent mobile et mesurer le temps d’un aller retour d’un agent entre 2 JVMs de la même station De même mesurer le coût d’un appel de procédure entre 2 JVMs de la même station Identification des manques Modification de la plate-forme Mise en forme de la démonstration Justifier l'intérêt d'un tel modèle pour cette application 76 mise à jour septembre 2010 77 mise à jour septembre 2010 18