UNIVERSITÉ DU QUÉBEC À MONTRÉAL
IBC-GO: UN SYSTÈME D'AGENT ITINÉRANT
MÉMOIRE PRÉSENTÉ
COMME EXIGENCE PARTIELLE
DE LA MAÎTRISE EN INFORMATIQUE
PAR SERGE GIGUÈRE
UNIVERSITÉ DU QUÉBEC À MONTRÉAL Service des bibliothèques
Avertissement
La diffusion de ce mémoire se fait dans le' respect des droits de son auteur, qui a signé le formulaire Autorisation de reproduire et de diffuser un travail de recherche de cycles supérieurs (SDU-522- Rév.01-2006). Cette autorisation stipule que «conformément
à
l'article 11 dU Règlement no 8 des études de cycles supérieurs, [l'auteur] concèdeà
l'Université du Québec
à
Montréal une licence non exclusive d'utilisation et de . publicationqe
la totalité ou d'une partie importante de [son] travail de recherche pour des fins pédagogiques et non commerciales. Plus précisément, [l'auteur] autorise l'Université du Québec à Montréal à reproduire, diffuser, prêter, distribuer ou vendre des .· copies de. [son] travail de rechercheà
des fins non commerciales sur quelque support que ce soit, y compris l'Internet. Cette licence et cette autorisation n'entraînent pas une renonciation de [la] part [de l'auteur]à
[ses] droits moraux nià
[ses] droits de propriété intellectuelle. Sauf entente contraire, [l'auteur] conserve la liberté de diffuser et de commercialiser ou non ce travail dont [il] possède un exemplaire.»-- -- --- - - -- - -- - - -- - -- - - --
-Remerciements
En préambule à ce mémoire, je souhaite adresser ici tous mes remerciements aux personnes qui m'ont apporté leur aide et qui ont ainsi contribué à l'élaboration de ce mémoire.
Tout d'abord Monsieur Abdel Obaid, directeur de ce mémoire, pour l'aide et le temps qu'il a bien voulu me consacrer et sans qui ce mémoire n'aurait jamais vu le jour.
Aussi, j'adresse mes plus sincères remerciements à tous mes proches et all1Js qm m'ont soutenu et encouragé au cours de la réalisation de ce mémoire.
LISTE DES FIGURES ... v
LISTE DES ABRÉVIATIONS, SIGLES ET ACRONYMES ... viii
LISTE DES ABRÉVIATIONS, SIGLES ET ACRONYMES ... viii
CHAPITRE I ... 1
INTRODUCTION ... 1
1.1 Motivation ... 2
1.2 Problématique ... 3
1.2.1 Omniprésence et évolution des réseaux ... 3
1.2.2 Évolution et déploiement des standards ... .4
1.2.3 Augmentation de la quantité d'information transmise ... 5
1.2.4 Limites des connexions en périphérie du réseau ... 5
1.2.5 Nouvelles tendances du réseau Internet ... 6
1.2.6 Solution possible ... 7 1.3 Objectifs ... 7 1.4 Méthodologie ... 9 1.5 Organisation du mémoire ... 1 0 CHAPITRE II ... 11 REVUE DE LA LITTÉRATURE ...... .. 11
2.1 Les définitions des concepts fondamentaux ... ......... 11
a. Code mobile ... 11
b. Réseau actif ... 12
c. Agent mobile ... 13
2.2 Les liens entre les concepts fondamentaux et le présent travail ... 15
2.3 Les réseaux actifs ... 15
2.3 .1 Les types d'approches ... 16
2.3.2 L'architecture d'un nœud actif.. ... 17
2.3.3 Les applications actives ... 18
- - -
-11
2.3.5 Le système d'exploitation d'un nœud ... 19
2.3.6 Le protocole ANEP ... 20 2.3.7 Le protocole SAPF ... 21 2.3 Les agents mobiles ... 22 2.4.1 La terminologie ... 23 2.4.2 La structure ... 24 2.4.3 La migration ... 25
2.4.4 Les langages de programmation pour les agents mobiles ... 26
2.4.5 La communication ... 27
2.4.6 Les avantages ... 27
a. Les communications hétérogènes ... 28
b. La réduction de la communication ... 28
c. L'enrichissement des interfaces ... 28
d. Les applications temporaires ... 28
e. Les données intelligentes ... 29
2.4.7 La sécurité ... 29
2.5 Les prototypes ... 30
2.5.1 Switchware ... 30 2.5.2 ANTS ... 32 2.5.3 AMARRAGE ... 35 2.5.4 SMART PACKETS ... 37 2.5.5 Étude comparative ... 39 CHAPITRE 111 ...................................... 41 IBC-GO ............................................. 41 3.1 Le modèle fonctionnel ... .41 3.2 La migration ... .42 3.3 La communication ... .43 3.4 Le protocole ... 43
3.5 Le langage pour la programmation des agents ... .45
Ill 3.7 La sécurité ... 49 CHAPITRE IV ... , ... 52 MISE EN ŒUVRE ... 52 4.1 L'environnement et langage ... , ... 52 4.2 L'architecture logicielle ... 53
4.3 Les interfaces utilisateurs ... , ... 54
4.3.1 Les fichiers textes ... 54
4.3.2 L'interface graphique ... , ... 55
4.4 L'interpréteur pour le langage AL ... 57
4.5 Le gestionnaire des communications, le protocole et le paquet IBC-Go ... 58
4.6 L'environnement d'exécution ... 59
4.7 Les communications ... , ... 59
4.8 Sécurité ... 61
4.9 L'intégration des routeurs traditionnels ... 63
CHAPITRE V ... 65
TESTS ETRÉSULTATS ... 65
5.1 Lestests ... 65
5.2 Les résultats ... 74
5.2.1 Le commerce électronique ... 74
a. Vente et achat en ligne avec IBC-Go ... 75
b. Avantages amenés par le système IBC-Go ... 75
5.2.2 La diffusion audio/vidéo ... 78
a. Diffusion audio/vidéo avec IBC-Go ... 79 b. Avantages amenés par le système IBC-Go ... 80
5.2.3 La gestion des réseaux ... 82
a. Gestion des réseaux avec IBC-Go ... 82
b. Avantages amenés par le système IBC-Go ... 83
CHAPITRE VI ... 88
CONCLUSION ... 88
lV LE LANGAGE AL ... 92 a. Identificateurs ... 92 b. Mots réservés ... 92 c. Types de données ... 93 d. Type Boolean ... 93 e. Type Char ... 93 f. Type Integer ... 93 g. Type String ... 93 h. Générateurs de types ... 94 i. Constantes ... 94 j. Variables ... 95 k. Opérateurs ... 95 1. Assignations ... 95 m. Instructions conditionnelles ... 96 n. Boucles ... 96 o. Procédures ... 97 ANNEXEB ... 98 LES FONCTIONS ... 98 ANNEXE C ... 103
LAT AILLE DES PAQUETS IBC-Go ... 1 03 ANNEXE D ... 1 05 LE CODE DU SYSTÈME IBC-Go ... 105
a. L'interface graphique ... ! 05
b. L'interpréteur pour le langage AL ... 143
c. Le système IBC-Go ... 1 73 d. Les modifications apportées au système ANTS ... 241
LISTE DES FIGURES
Figure Page
Figure 2.1: Lien entre les agents mobiles d'IBC-Go et le réseau actif.. ... 15
Figure 2.2: Architecture d'un nœud actif ... 17
Figure 2.3: Format du paquet ANEP ... 21
Figure 2.4: Format des options ANEP ... 21
Figure 2.5: Format du paquet SAPF ... 22
Figure 2.6: Architecture Switchware [ALE 1998] ... 31
Figure 2.8: Relation entre capsule et protocole [SPA 2000] ... 33
Figure 2.9: Format de la capsule ANTS [WET 1999] ... 34
Figure 2.10: Plate-fonne AMARRAGE vl [SPA 2001]. ... 35
Figure 2.11: Architecture en trois plans [ZEB 2002] ...... 36
Figure 2.12: Architecture Smart Packet ... 38
VI
Figure 3.1:
Modèle fonctionnel de IBC-Go ... .42Figure 3.2:
Format des paquets IBC-Go ... .44Figure 3.3: Modèle
architectural des agences IBC-Go ... 49Figure 3.4:
Champ d'autorisation ... 50Figure 4.1:
Architecture logicielle du système IBC-Go ... 53Figure 4.2:
Interface graphique ... 56Figure 5.1:
Résultat d'un test pour l'interpréteur ... 67Figure 5.2:
Topologie pour les tests ... 68Figure 5.3: Résultat du test 1
sur le système IBC-Go ... 69Figure 5.4:
Résultat du test 2 sur le système IBC-Go ... 70Figure 5.5:
Résultat du test 3 sur le système IBC-Go ... 72Figure 5.6:
Résultat du test 4 sur le système IBC-Go ... 73Figure
5.7
:
Achat en ligne avec IBC-Go ... 75Figure 5.10: Diffusion audio/vidéo avec IBC-Go ... 79
Figure 5.11: Bande passante utilisé pour la diffusion audio/vidéo ... 81
Figure 5.12: Gestion des réseaux avec agents mobiles ... 83
Figure 5.13: Données véhiculées via le gestionnaire pour la gestion des réseaux ... 84
Figure 5.15: Données véhiculées moins le poids de l'itinéraire ... 86
AB one ACM ACMP
LJSTE DES ABRÉVIATIONS, SIGLES ET ACRONYMES
Active Networks backBone
Association for Computing Machinery
Agent Control Message Protocol
AMARRAGE Architecture Multimédia & Administration Réparties sur un Réseau Actif à Grande Échelle AN CORS ANEP ANETd ANS ANTLR ANTS API ASIC BBN BD CAML CFIP CO
RBA
CPL CPUcss
DAN DARPA DHCP DOS Diffserv DSA DSSAdaptable Network COntrol and Reporting System Active Network Encapsulation Protocole
Active NETwork deamon
Active Network Simulator
Another Tool for Language Recognition
Active Node Transfer System
Application Program Interface
Application Specifie Integrated Circuit
Boit, Beranek and Newman
Base de Donnée
Categorical Abstract Machine Language
Colloque Francophone sur l'Ingénierie des Protocoles
Common Object Request Broker Architecture Cali Processing Language
Central Processing Unit Cascading Style Sheet
Distributed code cashing Active Network
Defense Advanced Research Projects Agency
Dynamic Host Configuration Protocol
Deniai-Of-Service
Differentiated services Digital Signature Algorithm Digital Signature Standard
EUNICE FIFO FTP GCAP HABA HTML HTTP IBC-Go IEEE IETF lOS IP IST JAAS JAXP JCE J2EE JNI JSP
NM
LDAP MAF MAPS MIT MOM MMUSIC MPEG MVCEUropean Network of universities and companies in Information and Communication Engineering
First In First Out File Transfert Protocol
Global Communication Architecture & Protocols HyperActive Beans component Architecture HyperText Markup Language
Hypertext Transfer Protocol
Itinerary Based Computation and Go
Institute of Electrical and Electronics Engineers Internet Engineering Task Force
Internet Operating System Internet Protocole
Information Society Technologies
Java Authentication and Authorization Service Java API for XML Processing
Java Cryptography Extension Java 2 platform Enterprise Edition Java Native Interface
Java Server Page Java Virtual Machine
Lightweight Directory Access Protocol Multicast Actif Fiable
Mobility Architecture for Programmable Services Massachusetts lnstitute of Teclmologie
Message Oriented Middleware
Multiparty Multimedia Session Control Moving Pictures Expert Group
NS ORB
os
OSI PIRST-ON PKI PLAN QCM QoS RAP RNRT RPC RTP RTCP RTTs SAPF SARA SDK SIGCOMM SIP SLRP SNMP SQL SRI SSL TCL TCP UDP ITU Network Simulator Object Request Broker Operating SystemOpen Systems Interconnexion
x
Programmable, Intermediate, Resilient, Self-configuring, Transparent Overlay Networks
Public Key Infrastructure
Programming Language for Active Networks Query Certificate Manager
Quality of Service
Routeur Assistant Protocol
Réseau National de Recherche en Télécommunications Remote Procedure Cali
Real-time Transport Protocol
Real-time Transport Control Protocol Round-Trip Time
Simple Active Packet Format Simple Active Router Assistant Software Development Kit
Special Interest Group on data COMMunications Session Initiation Protocol
Service Layer Routing Protocol Simple Network Management Protocol Structured Query Language
Stanford Research Institute Secure Socket Layer Tool Command Language Transmission Control Protocol User Datagram Protocol
www
XMLWorld Wide Web
RÉSUMÉ
La situation, les problèmes et les nouvelles tendances liés aux réseaux de
télécommunications font en sorte qu'il est nécessaire de revoir la façon de développer des systèmes distribués. On peut actuellement constater: qu'il y a une omniprésence des réseaux, que ces réseaux sont de plus en plus intelligents, que ceux-ci ont de la difficulté à suivre l'évolution des standards, qu'il y a une augmentation de la quantité d'information transmise, que les connexions en périphérie d'un réseau comme l'Internet sont limitées, etc. Des recherches récentes relatives au code mobile, sous la forme d'agents mobiles et de réseaux actifs, offrent de nouvelles possibilités intéressantes pour le développement des systèmes distribués. La fusion de ces deux secteurs de recherche est susceptible d'amener de nouveaux mécanismes pour construire des systèmes distribués plus adaptés à la situation actuelle des
réseaux de télécommunications. Ce mémoire présente IBC-Go (ltinerary Based Computation
and Go), un système d'agents mobiles, basé sur une approche itinéraire, qui intègre les technologies de réseau actif. Ce système permet le développement de systèmes distribués qui tiennent davantage compte de la situation, des problèmes et des nouvelles tendances d'aujourd'hui; comparativement aux systèmes traditionnels. Pour montrer les possibilités du
système IBC-Go et pour démontrer les avantages amenés par le système IBC-Go, plus
particulièrement de démontrer le fait que le dit système amène une diminution des besoins en communication entre le nœud d'origine et les autres nœuds; 3 scénarios mettant en application le système IBC-Go ont été présentés. La présentation de chacun de ces scénarios a également été accompagnée de résultats numériqués qui ont permis de chiffrer les gains amenés par le système IBC-Go. La présentation des scénarios et des résultats numériqués a permis de répondre l'objectif qui était de démontrer que le système développé est davantage
en mesure de solutionner les problèmes soulevés dans la problématique que les systèmes actuels, et plus particulièrement de diminuer les besoins en communication entre le nœud d'origine et les autres nœuds.
INTRODUCTION
La situation, les problèmes et les nouvelles tendances liés aux réseaux de télécommunications font en sorte qu'il est nécessaire de revoir la façon de développer des systèmes distribués. On peut actuellement constater: qu'il y a une omniprésence des réseaux, que ces réseaux sont de plus en plus intelligents, que ceux-ci ont de la difficulté à suivre
l'évolution des standards, qu'il y a une augmentation de la quantité d'information transmise, que les connexions en périphérie d'un réseau comme l'Internet sont limitées, etc.
Des recherches récentes relatives au code mobile, sous la forme d'agents mobiles et de réseaux actifs, offrent de nouvelles possibilités intéressantes pour le développement des systèmes distribués. La fusion de ces deux secteurs de recherche est susceptible d'amener de nouveaux mécanismes pour construire des systèmes distribués plus adaptés à la situation
actuelle des réseaux de télécommunications.
Ce mémoire présente IBC-Go (ltinerary Based Computation and Go), un système
d'agents mobiles, basé sur une approche itinéraire, qui intègre les technologies de réseau actif. Ce système permet le développement de systèmes distribués qui tiennent davantage compte de la situation, des problèmes et des nouvelles tendances d'aujourd'hui; comparativement aux systèmes traditionnels.
Comme son nom l'identique, IBC-Go met un accent particulier sur le concept
d'itinéraire. Avec celui-ci, un agent peut visiter plusieurs nœuds, sans avoir à communiquer avec son expéditeur original; ce qui contribue à faire diminuer le besoin en communication entre le nœud d'origine et les autres nœuds (là où les connexions sont généralement plus
lentes et instables). En plus de l'emploi d'itinéraire, IBC-Go inclut d'autres mécanismes pour
2 transmission du code de l'agent en tant que tel et l'emploi d'une mobilité faible pour les
agents. Le premier mécanisme diminue les besoins en communication en diminuant le poids des agents, alors que le second mécanisme diminue les besoins en ressources en ne transportant pas les états des agents lors de la migration de ceux-ci.
Aussi, ŒC-Go utilise un langage spécifique, appelé AL (Agent Language), pour le développement des agents mobiles. Le fait d'utiliser un langage spécifique pour le développement des agents mobiles permet de ne pas restreindre la programmation des agents au langage utilisé pour le développement du système sous-jacent et ne nécessite pas de
comprendre les détails du fonctionnement dudit système [PEI 2003].
Enfin, étant donné les problèmes de sécurité inhérents à l'utilisation de technologies de code mobile, une attention particulière a été portée à la sécurité d'ŒC-Go. Cela a mené à
la conception de différents mécanismes de sécurité; comme l'inclusion d'un champ
d'autorisation et de signatures électroniques.
1.1 Motivation
La principale motivation, dans ce travail de maîtrise, est de développer un système de
code mobile plus apte à répondre aux besoins des réseaux d'aujourd'hui que les réseaux traditionnels comme l'Internet. Plus précisément, ce travail doit mener à la création d'un
système d'agent mobile incluant une architecture basée sur un modèle de réseau actif.
En plus du développement d'ŒC-Go, ce travail entend faire la démonstration que ce
dernier est en effet plus apte à répondre aux besoins des réseaux d'aujourd'hui que les
réseaux traditionnels comme l'Internet. Plus précisément, ce travail attend démontrer: que le
système développé est plus à même de supporter le développement de certains types d'applications et que celui-ci diminue le besoin en communication entre le nœud d'origine et
demande, etc.). Il aurait également été possible de démontrer d'autres avantages amenés par le système développé, comme la possibilité de déployer des standards plus rapidement et celle de répondre plus adéquatement aux nouvelles tendances, mais cela n'aurait pas tenu compte des limites de temps associées à ce travail.
Enfin, une autre motivation de ce travail est de développer un système qui inclut certaines qualités jugées essentielles. Ces qualités sont notamment: la portabilité, la sécurité et la facilité d'utilisation.
1.2 Problématique
Ici seront brièvement présentés, la situation, les problèmes et les nouvelles tendances liés aux réseaux de télécommunications. Relativement à la situation et aux problèmes liés aux réseaux de télécommunications, il sera notamment question de 1 'onmiprésence et de 1 'évolution des réseaux, de 1' évolution et du déploiement des standards, de 1' augmentation de la quantité d'information transmise, et finalement, des limites des connexions en périphérie.
Relativement aux nouvelles tendances liées aux réseaux de télécommunications, il sera question de l'augmentation des PDAs (Persona! Digital Assistant) et de l'informatique nomade. Suite à cela, une solution possible, pour solutionner les problèmes rencontrés et répondre aux nouveaux besoins, sera présentée.
1.2.1 Omniprésence et évolution des réseaux
Aujourd'hui, les réseaux de télécommunications sont de plus en plus onmiprésents.
La plupart des organisations sont maintenant équipées d'un réseau local d'ordinateurs, en plus d'un circuit téléphonique connecté à un réseau public, et ces réseaux sont de plus en plus intereliés avec Je réseau Internet; de même que les ordinateurs personnels que l'on retrouve
4
dans les maisons. Avec l'avènement de nouvelles technologies sans-fils, comme Bluetooth et
la téléphonie de 3e génération comme UMTS (Universal Mobile Telecommunications System), il est à prévoir que l'omniprésence des réseaux de télécommunications va aller en s'accroissant.
Jusqu'à un passé récent, les réseaux de télécommunications assuraient la fourniture
d'un nombre limité de services essentiels comme la téléphonie de base et la transmission de données. Cette situation a évolué par suite de l'innovation technologique rapide et des nouvelles conditions du marché. Dans le nouveau contexte concurrentiel, les opérateurs sont,
en effet, conduits à diversifier leur offre de services auprès de la clientèle. La structure
classique des réseaux de télécommunications, avec des nœuds indépendants imposant des limitations dans l'offre de services, a évolué vers une structure dans laquelle le traitement de
fonctions spécifiques est confié à des entités spécialisées commandant les nœuds adaptés en conséquence [TEN 1996]. Ce nouveau type de réseau est communément appelé: « réseau intelligent».
1.2.2 Évolution et déploiement des standards
Au lieu de rester figés dans le temps, les standards, notamment ceux associés au World Wide Web, évoluent. Le World Wide Web a popularisé l'Internet, grâce à sa puissance
et à sa simplicité et le consortium Web (W3C), de même que plusieurs autres groupes,
travaillent à l'évolution des standards qui constituent le World Wide Web.
Malheureusement, 1 'évolution des standards dans le domaine des réseaux de
télécommunications n'est pas automatiquement suivie d'une implémentation. Cela est
notamment dû au fardeau que représentent leurs implantations sur les équipements d'un
réseau. Il faut en effet que tous les équipements d'un réseau supportent un nouveau standard pour que celui-ci puisse être exploitable; ce qui est pratiquement impensable pour le réseau
5
déjà quelques années, mais n'ont pu être implantés à la grandeur du réseau Internet. Il faut, en l'occurrence, adapter les réseaux de télécorrununications pour que les nouveaux standards puissent être déployés plus rapidement.
1.2.3 Augmentation de la quantité d'information transmise
L'Internet, en tant que réseau des réseaux, est devenu largement accepté corrune un médium très important pour tout type d'échange d'information. Le nombre d'individus et de compagnies qui offrent des services sur 1 'Internet augmente constarrunent. Alors qu'au départ, l'Internet offrait un nombre limité de types de services, corrune le courrier électronique, nous pouvons maintenant voir que celui-ci offre de plus en plus de types de services; dont notarrunent des services de diffusion audio/vidéo. Cette augmentation du nombre d'individus et de compagnies qui offrent des services et l'apparition de nouveaux types de services, corrune les services de diffusion audio/vidéo, amènent inévitablement une augmentation de la quantité d'information transmise via le réseau Internet.
1.2.4 Limites des connexions en périphérie du réseau
Le réseau Internet peut être divisé en deux zones: le centre et la périphérie. Au centre, la bande passante des connexions est très grande (en comparaison avec la périphérie) et ces dernières sont la plupart du temps stables; ce qui n'est pas le cas en périphérie. Tout porte à croire que ces différences entre le centre et la périphérie du réseau Internet ne vont pas s'amoindrir, mais vont au contraire s'accentuer. Il est en effet à prévoir que la bande passante du centre va considérablement augmenter afin de pouvoir répondre à la demande grandissante pour la transmission de grandes quantités de données; ce qui ne sera pas le cas pour la périphérie [BRA 2005]. Pour contourner ces limites, les systèmes distribués auraient ainsi avantage à limiter les échanges de données véhiculées par les connexions en périphérie.
6
1.2.5 Nouvelles tendances du réseau Internet
Depuis sa création, de nouvelles tendances ont vu le jour sur le réseau Internet. Deux de ces tendances seront ici décrites: l'augmentation des PDAs et l'informatique nomade.
Depuis quelques années, nous voyons apparaître de plus en plus d'appareils sans-fils, comme les PDAs: des appareils portables qui combinent ordinateur et téléphone et qui ont la
capacité de se brancher à un réseau comme l'Internet [WEB 2005]. Selon un sondage entrepris au près 6 544 adultes, incluant 3 304 utilisateurs actifs d'Internet, 44% des utilisateurs d'Internet accédait à l'Internet via une connexion sans-fils1 [SIA 2005].
Avec ce type d'appareil, la plupart des prémisses qui influencent la définition et 1' évolution des systèmes distribués ne sont plus valides. Ces prémisses incluent: des
communications rapides et fiables, des appareils robustes et riches en ressources, de même
que des appareils situés à des locations fixes. Cela dit, les utilisateurs veulent avoir un
environnement semblable à celui que l'on retrouve sur un appareil situé à une location fixe et
muni de ressources riches et d'une connexion fiable et rapide. En conséquence, cet environnement doit, autant que possible, inclure les mêmes applications et possibilités
offertes par les appareils situés à une location fixe [BRA 2005].
En plus de l'augmentation du nombre d'appareils sans-fils pouvant se brancher au réseau Internet, une autre tendance suscite actuellement beaucoup d'intérêts: l'informatique
nomade. L'informatique nomade fait référence au fait que les utilisateurs se déplacent d'un
endroit à un autre tout en travaillant. Par moment, un utilisateur peut être branché à un
système via un ordinateur de bureau branché au réseau local d'une entreprise, alors que plus
tard, le même utilisateur sera branché au même système via un PDA. Néanmoins, l'utilisateur
1
Le sondage a été mené au près d'adultes se trouvant dans 12 centres urbains situés dans des pays comme le Canada, les États Unis et la France.
7
veut une synchronisation des appareils de sorte qu'il puisse continuer à travailler tout enchangeant d'appareil [BRA 2005].
1.2.6 Solution possible
Pour solutionner les problèmes rencontrés et répondre aux nouveaux besoins, les
systèmes distribués actuels doivent s'adapter. Plusieurs technologies ont la possibilité de
solutionner les problèmes rencontrés et de répondre aux nouveaux besoins qui sont posés.
Cela dit, ce n'est pas parce qu'une technologie a la possibilité de solutionner un problème qu'elle est pour autant la plus appropriée. Nous ne développons plus de gros systèmes en
programmant en assembleur, même si cela demeure possible. Aujourd'hui, nous utilisons les technologies orientées objets, parce qu'elles sont plus proches des concepts et des besoins des clients, de même que de notre façon de penser durant le développement des systèmes [BRA
2005].
De même que les technologies orientées objets se sont démontrées plus appropriées
pour le développement de gros systèmes, il est possible de croire que les nouvelles technologies relatives au code mobile soient plus appropriées pour le développement des
systèmes distribués actuels et futurs. Des recherches récentes relatives au code mobile, sous
la forme d'agents mobiles et de réseaux actifs, offrent de nouvelles possibilités intéressantes pour le développement des systèmes distribués. La fusion de ces deux secteurs de recherche
est susceptible d'amener de nouveaux mécanismes pour construire des systèmes distribués
plus adaptés à la situation actuelle des réseaux de télécommunications [COL 1998].
1.3 Objectifs
8
• développer un système d'agent mobile incluant une architecture basée sur unmodèle de réseau actif;
• développer un système portable, sécuritaire et facile d'utilisation;
• démontrer que le système développé est davantage en mesure de solutionner
les problèmes soulevés dans la problématique que les systèmes actuels.
L'objectif principal du présent travail est de développer un système d'agent mobile incluant une architecture basée sur un modèle de réseau actif. Avec ce système, il sera
possible de créer et d'exécuter des agents mobiles sur les serveurs, postes de travail, PDA, routeurs et autres appareils reliés au réseau Internet.
Il est également attendu que le système développé inclut certaines qualités jugées
essentielles, qui sont: la portabilité, la sécurité et la facilité d'utilisation. Par rapport à la portabilité, l'utilité du système développé sera proportionnelle à la possibilité qu'il puisse être installé sur les divers appareils reliés au réseau Internet. En conséquence, celui-ci devra pouvoir être installé, autant que possible, sur les dits appareils. Par rapport à la sécurité, il est
important que le système développé puisse répondre aux besoins en sécurité des différents usagers. En conséquence, le système développé devra inclure des mécanismes pour répondre
à ces besoins. Enfin, pour pouvoir être utilisé par des utilisateurs autres que des experts en
informatique, le système développé devra être facile d'utilisation. Celui-ci devra paraître le plus simple possible pour les utilisateurs; masquant ainsi la complexité de celui-ci.
Enfin, le présent travail a également pour objectif de démontrer que le système
développé est davantage en mesure de solutionner les problèmes soulevés dans la problématique que les systèmes actuels. Il est attendu que ce travail mène à des démonstrations de mises en application du système développé et à des mesures montrant les
Pour atteindre l'objectif principal, une revue de la littérature et des technologies de réseaux actifs sera faite. Le but de cette revue de la littérature est de donner des définitions claires des concepts fondamentaux utilisés dans ce mémoire et d'exposer les particularités des réseaux actifs et des agents mobiles. La revue des technologies de réseaux actifs, pour sa part, a pour but de mener à l'adoption d'un prototype de réseau actif qui servira de base pour le développement du présent système. Le choix du prototype à adopter se fera en fonction des possibilités offertes par celui-ci; principalement en ce qui a trait à la possibilité d'y implémenter un système d'agent mobile.
Pour la conception du présent système d'agent mobile, ce travail entend reprendre IBC-Go, un système initialement conçu par Abdel Obaid et Anna Cavali et décrit dans un article interne intitulé: « IBC-Go: An itinerary-based mobile computing system. ». La conception du système IBC-Go constitue un bon point de départ pour la conception du présent système et sera, au besoin, ajustée.
Relativement aux qualités jugées essentielles, le choix de l'environnement, dans lequel sera développé le système, se fera en respectant la portabilité qui en découlera. En conséquence, l'envirmmement choisi devra être compatible avec les divers appareils reliés au réseau Internet. Par rapport à la sécurité, la revue de la littérature inclura une section relative aux problèmes liés à la sécurité des agents mobiles. En lien avec cette revue, la conception du présent système sera ajustée pour répondre aux problèmes qui y sont soulevés. Enfin, par rapport à la facilité d'utilisation, le système travaillera le plus possible en arrière plan; laissant une interface utilisateur aussi simple que possible. Cela pourra se concrétiser par une abstraction, de la programmation des agents, des mécanismes de sécurité, etc.
Lors du développement du système, un cycle de développement en spirale, incluant une série de prototypes, est prévu. Cela permet d'obtenir un prototype fonctionnel et testable rapidement; ce qui est approprié, compte tenu des limites de temps et que le système à
lü
développer constituera lui-même un prototype. Pour tester le système, celui-ci sera installé et
exécuté sur les machines les plus diverses que possible. Cela contribuera à garantir sa
compatibilité avec le plus d'appareils possibles.
Finalement, pour démontrer que le système développé est davantage en mesure de
solutionner les problèmes soulevés dans la problématique que les systèmes actuels, des mises
en application du système développé seront décrites et des mesures relatives à ces mises en
application seront présentées. Ces dernières seront issues de résultats numériqués ou de
simulations (avec ns-2).
1.5 Organisation du mémoire
En plus de l'introduction, ce mémoire inclut 5 chapitres:
• le deuxième chapitre contient la revue de la littérature et des technologies de réseaux actifs;
• le troisième chapitre présente la conception du système IBC-Go;
• le quatrième chapitre décrit la mise en œuvre du système IBC-Go;
• Je cinquième chapitre est une courte conclusion qui résume ce mémoire et
expose quelques réflexions.
À la suite de ces chapitres, les références ayant servi à la rédaction de ce mémoire, de même que des annexes, sont présentées. Ces dernières contiennent: la description du langage
AL et les fonctions incluses avec ce langage, la présentation du paquet IBC-Go avec la taille
de chacune de ces composantes, et finalement, le code ayant servi à l'implémentation du
REVUE DE LA LITTÉRATURE
Le présent chapitre présente une revue de la littérature relative aux technologies de réseaux actifs et d'agents mobiles. Cela commence par la présentation des concepts fondamentaux et des liens existant entre ces concepts et le présent travail, pour ensuite présenter en détails ce qu'est un réseau actif et un agent mobile. Suite à cela, une série de prototypes de réseaux actifs sera présentée et analysée. Cette analyse mènera à l'adoption d'un prototype de réseau actif pour supporter le développement du présent système.
2.1 Les définitions des concepts fondamentaux
Trois concepts fondamentaux sont utilisés dans ce mémoire et sont en 1 'occurrence ici présentés, à savoir: code mobile, réseau actif et agent mobile.
a. Code mobile
Dans [WIK 2004], on définit le concept de code mobile comme suit:
<<ln computer science, mobile code is a general term for any executable
software program that is sent via sorne computer network from one computer to another to be executed at the destination.
Mobile code technology essentia!ly encompasses three different
paradigms: remo te evaluation, code on demand, and mobile agents.»
«Mobile code is a technique in which code is transferred from the computer system that stores the code files to the computer system thal will execute the code.»
12
De ces deux définitions, il ressort qu'un code mobile est un code exécutable qui est transmis d'un ordinateur à un autre pour ensuite être exécuté. La première définition présente
également le concept d'agent mobile comme étant un des paradigmes du concept de code mobile. Les deux autres paradigmes étant l'évaluation à distance et le code sur demande. Dans «Mobile Agents: Basic Concepts, Mobility Models & the Tracy Toolkits», le concept d'agent mobile est, dans le même sens, présenté comme étant un des paradigmes du concept de code mobile; même si cela ne figure pas dans la définition précédente.
Le concept de code mobile sera ici défini comme étant un code exécutable qui est transmis d'un ordinateur à un autre pour ensuite être exécuté. C01rune il sera possible de le voir avec la définition d'un agent mobile, ce dernier peut être effectivement vu comme étant un paradigme du concept de code mobile.
b. Réseau actif
Dans [WET 1999], la définition suivante du concept de réseau actif est offerte:
<<Active networks are a novel approach to network architecture in which customized programs are executed within the network.»
Dans [SCH 2000], la définition suivante du même concept est offerte:
<<Active Networks is a framework within which users inject programs contained in messages into a network capable of performing computations and manipulations on behalf of the user.»
<<Active networks are packet-switched networks in which packets can
con tain code fragments that are executed on the intermediary nades.»
13
Des deux premières défmitions, il ressort qu'un réseau actif est une architecture, ou
une plate-forme, dans laquelle des programmes, traitements ou manipulations, sont exécutés à l'intérieur du réseau. La deuxième définition va plus loin en précisant que les programmes sont contenus dans des messages issus des utilisateurs du réseau. Finalement, la troisième définition reprend l'idée de la fusion programme-message en indiquant que les paquets d'un réseau actif contiennent des fragments de code qui sont exécutés sur les nœuds
intermédiaires; en l'occurrence, le réseau.
Pour les besoins du présent travail, un réseau actif sera défini comme étant un réseau dans lesquel les paquets peuvent contenir des fragments de code étant exécutés sur les nœuds actifs (routeur, commutateur, poste de travail, etc.).
c. Agent mobile
Dans [WIK 2005], on définit le concept d'agent mobile comme suit :
«ln computer science, a mobile agent is a piece of computer software that is able to migrate (move) from one computer to another autonomously and continue its execution on the destination computer.
Mobile agents are a specifie form of mobile code. However, in contrast to the Remo te evaluation and Code on demand paradigms, mobile agents are active in that they may choose to migrate between computers at any time during the ir execution. This makes them a powerful tool for implementing distributed applications in a computer network.
Besides belonging the family of mobile code paradigms, mobile agents are also a specificform of software agents.»
Dans [BRA 2005], deux définitions du concept d'agent mobile sont notamment données:
~--<<A mobile agent is a program that can migrate from a starting host ta many other hasts in a network of heterogeneous computer systems and fuljill a task specified by its owner. ft works autonomously and communicates with other agents and host systems. During the self-initiated migration, the agent carries ail its code and data, and in sorne systems it also carries sorne kind of execution state.»
<<.Mobile agents refer ta self-contained and identifiable computer
programs, bundled with their code, data, and execution state, that can move within a heterogeneous network of computer systems. They can suspend their execution on an arbitrary point and transport themselves ta another computer system. During the migration the agent is transmitted complete/y, that is, as a set of code, data, and execution state. At the
destination computer system, an agent 's execution is resumed at exact/y
the point where it was suspended before.»
14
Il ressort de ces trois définitions qu'un agent mobile est un programme, ou logiciel, informatique ayant la possibilité de migrer d'un ordinateur à un autre de façon autonome pour ensuite accomplir une tâche ou poursuivre une exécution. Par rapport à la première définition, les deux autres définitions mettent également l'accent sur l'aspect hétérogène des ordinateurs qui transitent les agents mobiles. Par rapport toujours à la première définition, les deux autres définitions précisent également qu'un agent mobile transporte du code, des données et possiblement 1' état de son exécution. La troisième définition met par ailleurs davantage de l'avant l'importance du transport de l'état d'exécution que la deuxième définition en ajoutant que 1' exécution se poursuit sur 1' ordinateur destinataire là où elle a été interrompue sur 1' ordinateur précédent. Enfin la deuxième définition présente le fait que les agents peuvent communiquer entre eux et avec les ordinateurs hôtes.
Pour le présent travail, la définition du concept d'agent mobile suivante sera donnée: un agent mobile est un programme informatique ayant la possibilité de migrer d'un ordinateur à un autre de façon autonome pour ensuite accomplir une tâche ou poursuivre une exécution. Cette définition n'indique pas comment un agent mobile suit son exécution d'un ordinateur à un autre. Un agent peut reprendre son exécution depuis le début à chaque nœud visité ou peut poursuivre son exécution là où elle s'est terminée au nœud précédent.
2.2 Les liens entre les concepts fondamentaux et le présent travail
Le présent travail concerne la mise en oeuvre un système d'agents mobiles basée sur
un modèle de réseau actif. C'est une plate-forme d'agents mobiles en ce sens quelle permet de construire et d'exécuter des agents mobiles, des programmes informatiques ayant la possibilité de migrer d'un ordinateur à un autre de façon autonome pour ensuite accomplir
une tâche ou poursuivre une exécution. Le système développé est basé sur un modèle de réseau actif en ce sens que les agents mobiles du système sont transportés dans des paquets qui peuvent être exécutés sur les nœuds actifs (routeur, commutateur, poste de travail, etc.).
Le lien entre les agents mobiles du système et le réseau actif est présenté à la figure
2.1. Cette dernière montre un poste de travail qui envoie un agent mobile vers un serveur, en
passant par un routeur. Le poste de travail, le routeur et le serveur sont des nœuds actifs; ce qui implique que 1' agent mobile sera exécuté sur chacun de ces trois appareils.
Nœud agent mobil
-
e Nœud Nœudactif
-
actif actifRouteur Serveur
J
-
PosteJ
1de travail u
Figure 2.1: Lien entre les agents mobiles d'IBC-Go et le réseau actif
2.3 Les réseaux actifs
Le concept de réseau actif a émergé en 1994 des discussions entre les chercheurs de DARP A (Defense Advanced Research Projects Agency) sur les directions futures des
systèmes réseaux [TEN 1997]. Les recherches sur les réseaux actifs ont mené à 1' élaboration de trois objectifs spécifiques: l'introduction d'un code portable pour les logiciels réseaux, le
16 traitement des flux de données spécifiques à l'intérieur du réseau et finalement, la reconfiguration dynamique et efficace du réseau. Cette dernière pouvant être faite par un administrateur de réseau pour l'ensemble des flux de données ou par un utilisateur spécifique pour son propre flux de données [BER 2000].
Les sections suivantes montrent les caractéristiques propres au réseau actif. Cela comprendra: les types d'approches, l'architecture d'un nœud actif, les applications actives, l'environnement d'exécution, le système d'exploitation d'un nœud et les protocoles ANEP et SAPF.
2.3.1 Les types d'approches
Il y a différentes approches possibles par lesquelles un réseau peut être amené à être actif. Dans A Survey of Active Network Research, Tennenhouse et al. (1997) ont fait référence à deux: l'approche commutateur programmable (supportée par l'IEEE) et l'approche capsule (supportée par DARP A).
Avec l'approche commutateur programmable, également appelé approche discrète, le format actuel des paquets est conservé en intégrant un mécanisme discret qui se charge de télécharger les programmes. Un utilisateur envoie dans un premier temps ses routines de traitement et ensuite ses paquets de données [TEN 1997]. La séparation entre 1' exécution et Je chargement du programme peut être valable quand le chargement doit être contrôlé avec soin ou quand les programmes sont particulièrement volumineux. Cette approche est utilisée, par exemple, dans les réseaux intelligents standardisés par le ITU-T (JTU (International Telecommunication Union) Telecommunication Standardization Sector). Avec l'Internet, le chargement des programmes peut être restreint à l'opérateur d'un routeur qui est muni d'un accès avec lequel il peut charger dynamiquement les programmes. Des mesures de sécurité comme l'authentification de l'opérateur et la vérification du code des programmes pourraient être appliquées au chargement des programmes [TEN 1996].
Avec J'approche capsule, également appelée approche intégrée, les paquets des réseaux actuels sont remplacés par des programmes miniatures qui sont exécutés à chacun des nœuds rencontrés sur son chemin [TEN 1997]. Comme il sera possible de Je voir avec la revue des prototypes de réseaux actifs, la plupart des systèmes de réseaux actifs utilisent une
approche qui est un mélange de l'approche discrète et de l'approche intégrée.
2.3.2 L'architecture d'un nœud actif
L'architecture d'un nœud actif comprenant 3 composantes: les applications actives (AA), l'environnement d'exécution (EE) et Je système d'exploitation du nœud; comme
illustré à la figure 2.2 [BER 2000].
Canal d'entrée
Canal d'entrée Canal d'entrée Système d'exploitation du nœud Ressources
Figure 2.2: Architecture d'un nœud actif
Canal de sortie
Canal de sortie
18
Comme on peut le voir avec la figure 2.2, une ou des applications actives sont exécutées dans un environnement d'exécution et un ou des environnements d'exécution sont exécutés dans le système d'exploitation du nœud. Ce dernier inclut une série de canaux d'entrée et de sortie qui permet aux paquets d'entrer et de sortir du nœud actif2.3.3 Les applications actives
Les applications actives accomplissent les fonctions de communication en utilisant une combinaison d'acheminement de paquets et de traitement à l'intérieur des nœuds du réseau. Elles sont généralement écrites dans un langage restreint qui permet la portabilité et la sécurité, comme Java, et peuvent opérer sur le plan des données, de la gestion ou du contrôle. Les composantes d'une application active peuvent migrer d'un nœud à un autre et une application active peut créer un état de nœud persistant [BER 2000).
La mobilité peut se faire à différentes couches de représentation du programme. À un niveau plus élevé, un programme peut être exprimé dans langage interprété comme TCL
(Tool Command Language). À un niveau intermédiaire, un programme peut être encodé dans
un langage pré-compilé comme Java [TEN 1997]. Finalement, un programme peut être transformé dans un format binaire comme Ornniware [TEN 1997], un outil développé par Colusa Software qui permet aux développeurs de logiciel de prendre des composantes écrites en C et C++ et de créer des composantes indépendantes du client [UMB 2003).
Une approche possible pour permettre l'interopérabilité entre les nœuds pourrait également être d'adopter un langage intermédiaire inter-nœud avec un mécanisme de traduction à la sortie et à 1 'entrée des nœuds. Les utilisateurs du réseau pourraient ainsi utiliser le langage désiré, si un mécanisme de traduction existe pour ce langage [TEN 1997].
Une application active est exécutée dans un environnement d'exécution. Ce dernier
est la partie stable du logiciel du nœud [BER 2000]. Il constitue une architecture virtuelle de réseau. C'est lui qui mémorise le code des services actifs et réalise les traitements adaptés
aux paquets et aux services demandés (chaque paquet est associé à un traitement
correspondant au service).
L'environnement d'exécution permet la création de services (interface de programmation), la gestion des services utilisés et le partage des ressources allouées entre les
services [HAE 2002]. Il implémente généralement un ensemble de librairies qui permettent
aux applications actives d'accéder aux ressources du nœud et du réseau et forme la première ligne de défense contre les violations de sécurité et la quantité de ressource retenue par une
même application.
Un environnement d'exécution peut également supporter les entrée/sortie du réseau
dans un plan de donnée virtuel ou dans Je plan de donnée lP natif [BER 2000]. Équipé d'une
interface correspondante, il peut créer les canaux qui lui sont reliés et décider quels flux
doivent être acheminés directement (sans traitement).
Un même nœud peut supporter plus d'un environnement d'exécution. L'opérateur
d'un réseau actif peut configurer Je système d'exploitation d'un nœud par l'intermédiaire d'un environnement de gestion. Cela peut lui permettre notamment de gérer le partage des
ressources entre les environnements d'exécution [HAE 2002].
2.3.5 Le système d'exploitation d'un nœud
Les environnements d'exécution d'un nœud exécutent un environnement créé par le
20
réseau (canaux, protocoles de liaison) et du système (CPU (Control Processing Unit),
mémoires) aux environnements d'exécution et offre une protection des ressources entre eux.
Il doit supporter les entrée/sortie du réseau et offrir quelques mécanismes de communication
entre les environnements [BER 2000]. Ainsi, c'est le système d'exploitation du nœud qui identifie les paquets entrants qui doivent être envoyés à l'environnement d'exécution (les paquets actifs) et ceux qui doivent être envoyés directement vers un canal de sortie (les
autres).
Le système d'exploitation identifie les différents paquets selon deux méthodes de classement. La première méthode utilise des critères spécifiques à chaque environnement
d'exécution (format du paquet, contenu de certains champs, etc.); alors que la seconde
méthode utilise un des protocoles suivants au niveau du système d'exploitation: ANEP
(Active Network Encapsulation Protocole) et SAPF (Simple Active Packet Format) [HAE 2002).
2.3.6 Le protocole ANEP
ANEP est un protocole indépendant des technologies utilisées. Il peut se placer
au-dessus de Ethemet, IP, UDP, etc. Il comprend notamment un identificateur d'environnement
d'exécution (Type ID) et des options comme les certificats de sécurité, l'adressage et le
checksum. La figure 2.3 présente le format d'un paquet ANEP. Le champ Drapeaux identifie
si le paquet doit être acheminé ou retiré par défaut.
La figure 2.4 montre le format des options ANEP. Le champ Drapeaux est sur 2 bits; le premier étant réservé à l'environnement d'exécution et le second n'étant pas couramment
utilisé. Parmi les types d'options possibles, on retrouve: l'identificateur de la source, 1 'identificateur de la destination, 1' integrity checksum [DRA 1997].
1
Longueur de l'entête
Longueur du paquet
Options
Charge
(paquet actif)
Figure 2.3: Format du paquet ANEP
Drapeaux
1Type d'option
1Longueur
de l'option
Charge
de l'option
Figure 2.4: Format des options ANEP
2.3. 7 Le protocole SAPF
Tout comme le protocole ANEP, le protocole SAPF est un protocole indépendant des technologies utilisées. Le format de l'en-tête SAPF est réduit au strict minimum: un champ version (sur 1 bit) et un champ sélecteur (de 63 bits). Les bits de 0 à 47, du champ sélecteur, servent à identifier 1' environnement d'exécution (équivalent au champ Type ID d' ANEP) et les bits de 48 à 50, le type du paquet: statique, émetteur ou récepteur. [DEC 1998]. La figure 2.5 présente le format d'un paquet SAPF.
22
Identificateur lntegrity checksum
Version Sélecteur
Charge (paquet actif)
Figure 2.5: Format du paquet SAPF
2.4 Les agents mobiles
C'est en 1994 que James E. White publia un white paper, publié en 1996 dans
Software Agents de [WHI 1996], qui initia la recherche dans le domaine des agents mobiles. Dans ce papier, James E. White introduisait la technologie Telescript qui comprenait un
environnement et un langage de programmation pour les agents mobiles. Par la suite, d'autres
prototypes d'agent mobile ont été développés. La plupart d'entre eux utilisent les nouvelles possibilités offertes par les technologies Java, notamment la portabilité [BRA 2005].
La présente section explique les particularités des agents mobiles. Cela comprendra:
la terminologie associée à ce type de logiciel, la structure générale des agents mobiles, l'infrastructure associée à la migration des agents, les langages de programmation utilisés par
les systèmes d'agent mobile, la communication entre les agents mobiles, les avantages
Ici seront définis les termes qui sont propres aux systèmes d'agents mobiles. Les défmitions de ces termes sont présentées au tableau 2.1. Ces termes se retrouvent dans la plupart des écrits relatifs aux agents mobiles.
Toolkit pour agent mobile Un toolkit pour agent mobile est un produit permettant de construire et d'exécuter des agents mobiles. Il existe actuellement plusieurs toolkit pour agent mobile. À titre d'exemple, mentionnons: Aglets de IBM,
Voyager de Recursion et Tracy de l'université de Jena.
Agence Une agence est un environnement d'exécution de lequel les agents mobiles sont exécutés. Cet environnement contrôle l'exécution des
agents et offre des fonctionnalités pour la communication, la sécurité et la migration des agents.
D'autres auteurs, comme [WHI 1996] et [LAN 1998], utilisent les notions de place et de moteur pour faire référence à une agence. Agence expéditrice Durant Je processus de migration, 1' agence quittée par 1' agent est
appelée agence expéditrice.
Agence réceptrice Durant Je processus de migration, J'agence qm reçoit J'agent est appelée agence réceptrice.
Protocole de migration Durant le processus de migration, l'agence expéditrice et J'agence
réceptrice échangent de l'information au sujet de J'agent qui doit migré.
Pour cela, un protocole de migration est utilisé par les agences.
Agence d'origine L'agence d'origine correspond à l'endroit où est créé un agent. Habituellement, un agent retourne à son agence d'origine après avoir
complété sa tâche.
Système d'agent mobile Toutes les agences pouvant échanger des agents mobiles forment un réseau logique appelé système d'agent mobile. Chaque agence du
système est accessible via un URL spécifique. Cet URL sert également de nom pour 1' agence.
Propriétaire d'agent Le propriétaire d'un agent correspond à l'utilisateur qui a créé J'agent. Les informations relatives au propriétaire d'un agent peuvent être
utilisées par les agences pour l'assignation des droits.
24
Nom de l'agent Chaque agent possède un nom spécifique. Ce nom est défini par le propriétaire de l'agent. Le nom de l'agent est nécessaire pour pouvoir identifier sans équivoque un agent à toutes les agences d'un système
d'agent mobile.
Serveur de code En plus d'héberger les agents, les agences peuvent également contenir
le code des agents. Les agences qui contiennent le code d'agents sont
appelées serveurs de code.
Tableau 2.1 (suite)
2.4.2 La structure
Un agent mobile est constitué de trois composantes: le code, les données et 1' état de l'exécution. Le code contient la logique de l'agent et peut être utilisé par plus d'un agent. La transmission du code et de l'agent sont généralement séparées; ce qui permet de diminuer le poids de l'agent. Très souvent, le code n'est transmis qu'une seule fois et emmagasiné dans
les agences pour une utilisation future. Dans le cas où le code est séparé, celui-ci doit pouvoir
être identifié sans équivoque par toutes les agences d'un système d'agent mobile; comme
pour les agents [BRA 2005].
La seconde composante, les données, correspond à la valeur des variables de l'agent
[BRA 2005]. Certains auteurs, comme [WHI 1996] et [LAN 1998], appèlent les données: état de l'objet.
La troisième composante, l'état d'exécution, correspond à l'information qm est contrôlée par le processeur et le système d'exploitation [BRA 2005]. L'état d'exécution n'est
pas toujours transmis avec l'agent mobile; comme il sera possible de le voir à la section suivante.
2.4.3 La migration
Le processus de migration peut être découpé en six étapes. Ces six étapes, inspirées des processus décris par [LAN 1998], sont: l'initialisation, la sérialisation, le transfert, la réception, la désérialisation, l'exécution. L'initialisation démarre lorsque l'agent annonce à
l'agence son intention de migrer. Avec cette annonce, l'agence doit interrompre l'exécution
de l'agent en vue de la sérialisation de 1' agent. À la sérialisation, les données et 1' état
d'exécution avec une forte mobilité (voir plus loin) de l'agent sont transformées en séquence
de bits pour leur transfert. Lorsque du transfert, la séquence de bits issue de la sérialisation est transmise à l'agence réceptrice via un protocole de migration. À la réception de l'agent, l'agence réceptrice vérifie l'identité de l'agent et les droits qui lui sont associés. En fonction
de cela, l'agent sera accepté ou non. Après la réception de l'agent, celui-ci est désérialisé en
vue de réétablir les données, et l'état d'exécution avec une forte mobilité (voir plus loin), de l'agent transmis. Après la désérialisation, l'agent poursuit son exécution.
Il y a deux approches pour la mobilité des agents: forte et faible. Avec la migration forte, l'état d'exécution de l'agent est capturé et envoyé avec le code vers sa destination. Cet état est réétabli lorsque l'agent atteint sa destination. La migration forte peut être exigeante en
terme de traitement et de temps; surtout si la taille des états est importante. Pour plus d'efficacité, la mobilité faible est souvent utilisée. Avec cette dernière, l'état d'exécution de l'agent n'est pas transmis avec l'agent et celui-ci est réinitialisé lorsqu'il arrive à une autre agence. [LEV 2001].
Différents patrons de mobilité sont utilisés par les agents mobiles. La mobilité des agents mobiles peut être caractérisée par une série de destinations visitées par l'agent et par
un ordre dans lequel la visite peut se faire. La série de destinations est communément appelée
itinéraire. L'utilisation d'un itinéraire permet à un agent de visiter plusieurs agences avant de retourner à son agence d'origine; ce qui contribue à faire diminuer le besoin en
- - --- -- -- - -- --- - -
-26
communication entre l'agence d'origine et les autres agences. Relativement à l'itinéraire et à l'ordre des destinations, trois types de mobilité peuvent être observés:• mobilité avec itinéraire statique et ordre statique,
• mobilité avec itinéraire statique avec ordre dynamique,
• mobilité avec itinéraire dynamique [LEV 2001].
2.4.4 Les langages de programmation pour les agents mobiles
Le langage de programmation Java est devenu un standard de fait pour le développement de systèmes d'agents mobiles. Depuis 5 ans, presque tous les systèmes d'agents mobiles sont développés avec le langage Java. La plupart d'entre eux utilisent également le langage Java pour la création des agents mobiles. Cela s'explique en bonne partie dû au fait que le langage Java est portable et qu'il inclut différents dispositifs pour supporter la migration des processus [BRA 2005].
Bien que le langage Java soit utilisé pour le développement des systèmes d'agent mobile, il est possible de faire appel à d'autres langages pour la création des agents mobiles proprement dit. Pour cela, des compilateurs ou des interpréteurs peuvent être inclus dans les agences du système. Ces compilateurs ou interpréteurs permettraient en 1 'occurrence de faire le lien entre le langage utilisé pour la création des agents mobiles et celui utilisé pour le développement du système. Le fait de séparer la programmation des agents mobiles de la programmation du système permet de ne pas restreindre la programmation des agents au langage Java et ne nécessite pas de comprendre les détails du fonctionnement du système pour la programmation de ces derniers.
Les agents mobiles peuvent communiquer entre eux; qu'ils se trouvent à une même agence ou à des agences différentes. En général, les échanges entre les agents sont de type
peer-ta-peer ou à diffusion multiple (multicast). Différentes techniques peuvent être utilisées
pour communiquer avec les agents distants. [BRA 2005] en propose cinq:
• l'approche serveur central, qui emmagasine la location des agents dans une base de données centrale;
• l'approche serveur d'origine, qm emmagasine la location d'un agent à l'agence d'origine;
• l'approche pointeur expéditeur, qui envoie les messages le long des agences visitées par l'agent;
• l'approche à large diffusion (broadcast), où les messages sont envoyés en parallèle à toutes les agences;
• l'approche hiérarchique, qui utilise une structure en arbre pour la diffusion des messages.
2.4.6 Les avantages
Les systèmes d'agents mobiles amènent plusieurs avantages par rapport aux systèmes traditionnels. Ici sont présentés quelques-uns de ces avantages; en 1 'occurrence: l'harmonisation des communications hétérogènes, la réduction de la communication, l'enrichissement des interfaces, la possibilité d'utiliser des applications temporaires, et enfin, la possibilité d'utiliser des données intelligentes (qui contiennent de la logique).
28
a. Les communications hétérogènesReliés ensemble, deux systèmes révèlent rapidement des incompatibilités de langages
et de formats de données; incompatibilités qui se multiplient avec l'ajout d'autres systèmes. Les agents mobiles peuvent solutionner ce genre de problèmes en jouant le rôle d'intermédiaire entre les systèmes hétérogènes. La seule exigence est que l'agent puisse être exécuté sur chaque type de système [KNA 1996].
b. La réduction de la communication
Un des avantages clés des agents mobiles est de pouvoir réduire les coûts en communication. En effet, dans un système structuré autour des agents mobiles, un tiers peut
se déplacer de l'autre côté d'une connexion pour éviter d'utiliser celle-ci. Ainsi, les tiers peuvent interagir, même si les connexions sont de mauvaises qualités [KNA 1996].
c. L'enrichissement des interfaces
Les agents mobiles permettent la présentation d'interfaces plus sophistiquées. Si on prend pour exemple une interface de réalité virtuelle, cette dernière demanderait normalement trop de traitement et de bande passante pour qu'un serveur puisse la fournir à distance. En envoyant un agent mobile contenant l'interface au client, cela devient davantage possible [KNA 1996].
d. Les applications temporaires
Un agent mobile n'a pas besoin de faire partie d'une application. Il peut former un tout et n'avoir besoin d'aucune communication. Télécharger un tel agent n'est pas différent
l'utilisation des agents mobiles est que ceux-ci sont plus faciles à télécharger et ne nécessitent
pas d'installation dans le système hôte [KNA 1996].
e. Les données intelligentes
L'association de codes et de données offre un moyen pour les données de savoir comment se traiter elles-mêmes. Un exemple pour cela est le standard de compression vidéo
MPEG 4 (Moving Pictures Expert Group 4), où l'algorithme de décompression est empaqueté avec les données [KNA 1996].
2.4. 7 La sécurité
Il va de soi que des systèmes d'agents mobiles introduisent différents problèmes de
sécurité. Il y a principalement trois catégories de menaces reliées aux technologies d'agents
mobiles:
• une attaque d'un agent vers une agence, • une attaque d'une agence vers un agent,
• une attaque d'un agent vers un agent [RAO 2004].
En ce qui concerne l'attaque d'un agent vers une agence, on peut retrouvrer principalement des DOS (Deniai-Of-Service) et des attaques de personnification d'agent. Le
premier type d'attaque, DOS, est provoqué par le fait que les agents font travailler inutilement et volontairement les agences. Par rapport au travail qui est demandé aux agences, il est également possible que les agents fassent, volontairement ou non, une
30
et qui peut ultimement mener à un DOS. La deuxième attaque, la personnification, se caractérise par le fait qu'un agent emprunte une identité autre que la sienne. Ce faisant, il peut avoir accès à des services et des informations confidentielles et possiblement modifier ces informations [RAO 2004].L'autre catégorie d'attaque, l'attaque d'une agence vers un agent, concerne entre autres le fait qu'une agence puisse modifier le code d'un agent. Le code ainsi introduit peut devenir à la fois nuisible pour le créateur de 1 'agent modifié, les autres agences visitées par l'agent et les autres agents avec lesquels l'agent modifié interagit [RAO 2004]. Ce dernier point constitue l'attaque d'un agent vers un autre agent.
Comme il sera possible de le voir au chapitre suivant, différents mécanismes peuvent
être mis
en
place pour contrer ces attaques.
2.5 Les prototypes
Le présente section présente 4 prototypes de réseaux actifs: Switchware, ANTS,
AMARRAGE et Smart Packets. Une analyse comparative suivra cette présentation. Cette dernière aura pour but de mener à l'adoption d'un prototype de réseau actif qui servira de base pour le développement du présent système. Le choix du prototype à adopter se fera en fonction des possibilités offertes par celui-ci; principalement en ce qui a trait à la possibilité d'y implémenter un système d'agent mobile.
2.5.1 Switchware
À l'université de Pe1msylvanie, un projet nommé SwitchWare a mené au développement d'une approche commutateur programmable qui permet de télécharger des