Précédent : Logiciels Remonter : Projet SIRAC, Systèmes
Informatiques Répartis Suivant : Actions industrielles
Mots-clés :
programmation par composants, agents, intégration d'applications,
configuration, programmation répartie, code mobile, protection,
machine virtuelle Java
Résumé : L'objectif est de fournir des outils et services pour le développement et l'exécution d'applications réparties. Deux directions sont actuellement explorées.
- 1.
- Intégration et extension d'applications existantes. Un environnement expérimental de programmation par composants, Olan, a été réalisé. Il permet a) de construire des applications réparties par assemblage de composants, dont certains sont des applications existantes; b) de configurer ces applications à la demande et de les déployer sur des plates-formes d'usage courant. Un langage de description d'architecture décrit la structure globale d'une application, et un environnement d'exécution permet de mettre en place et de faire évoluer l'application. Les travaux en cours portent sur l'usage d'agents pour étendre les fonctions d'une application répartie existante et sur une extension graphique du langage de configuration.
- 2.
- Applications réparties sur l'Internet. Une nouvelle action vise à fournir des services systèmes pour utiliser efficacement l'Internet comme environnement d'exécution d'applications réparties. Ces services concernent la gestion d'objets partagés, la gestion de l'exécution répartie (migration du code et des données), la gestion de la securité. Ces services s'appuient sur une extension logicielle de la machine virtuelle Java.
Participants : Michel Riveill , Luc Bellissard , Fabienne
Boyer , Vladimir Marangozov , Marie-Claude Pellegrini , Jean-Yves
Vion-Dury , Roland Balter .
Le travail a d'abord porté sur la consolidation du modèle de description d'applications et sur la réalisation des outils permettant de mettre en oeuvre ce modèle.
Les éléments du modèle d'assemblage sont intégrés dans un
langage de haut niveau, baptisé OCL (Olan Configuration
Language), indépendant des langages de programmation. Dans sa
définition actuelle, le langage OCL peut être vu comme une
extension d'un langage de description d'interface (tel que l'IDL
de Corba) à l'aide d'annotations. Le compilateur du langage OCL
génère le code des talons (stubs) pour les composants
appelant et appelé, le code qui permet d'encapsuler un module
logiciel existant (wrapper), et un script
d'installation pour le déploiement des composants dans leur
environnement d'exécution. L'interprétation de ce script se
traduit par l'installation des binaires des composants sur leur
site d'implantation et par un certain nombre de contrôles portant
sur l'adéquation de l'environnement d'exécution (test de la
présence de certaines bibliothèques et/ou de ressources systèmes
nécessaires à l'exécution du composant). Cette procédure
d'installation semi-automatisée est mise en oeuvre par un
protocole ad hoc entre des services de déploiement, disponibles
sur chaque site concerné. Ces services constituent globalement la
machine à configurations.
Contrairement aux composants utilisés dans la plupart des
langages de description d'architecture et dans les calculs sur
les processus, les composants du modèle Olan ne sont pas actifs.
Nous avons proposé [21]
une extension du calcul SCCS afin de déterminer si les
interconnexions entre les composants passifs ou actifs indiquées
par le programmeur d'application sont licites ou
illicites.
Au cours de cette année, le langage OCL a été utilisé pour décrire plusieurs classes d'applications :
Les travaux de développement actuels portent sur la réalisation d'un environnement graphique permettant d'interconnecter de manière visuelle des composants préalablement développés, et sur la génération d'une nouvelle classe de wrappers permettant de rendre plus efficace l'encapsulation des composants.
Les travaux de recherche portent sur la définition du support système nécessaire au changement dynamique de la configuration d'une application. Ce travail est motivé par le besoin de pouvoir arrêter un site, par exemple à des fins de maintenance, tout en permettant à l'application de poursuivre son exécution mais aussi par la nécessité de changer dynamiquement un des composants de l'application, par exemple pour intégrer une nouvelle version de ce module logiciel.
Participants : Daniel Hagimont , Sacha Krakowiak , Jacques
Mossière , Leila Ismail .
L'axe de recherche décrit ci-dessus () trouve sa justification dans la
nécessité de réduire le coût de construction et d'administration
des applications qui s'appuient sur la réutilisation de
l'existant. Un axe de recherche complémentaire concerne
l'utilisation de l'Internet, et plus spécifiquement du Web, comme
support d'exécution de nouvelles classes d'applications
réparties. Des modèles d'exécution fondés sur la mobilité du code
pour l'accès à des données réparties bénéficient aujourd'hui d'un
regain d'intérêt comme en témoigne le développement du langage
Java. L'utilisation d'un tel modèle d'exécution pose, de nouveaux
problèmes de sécurité et de gestion globale des données et des
activités. Ces aspects sont explorés dans une action de Sirac en
cours de démarrage.
L'objectif de cette action est de fournir un système de gestion d'objets Java répartis et partagés. Le bénéfice attendu de ce travail est la possibilité de réaliser, à l'aide du langage Java, des applications mettant en jeu des objets partagés et répartis sans souci de la localisation des objets (transparence de la distribution). La mise en oeuvre d'un environnement d'exécution pour ces applications requiert le développement de services pour : a) la désignation des objets Java; b) l'accès à des objets Java répartis, en exploitant conjointement les capacités de l'appel de méthode à distance (RMI) et de mobilité du code; c) la protection des accès aux objets partagés.
Ces services sont réalisés de façon simple à l'aide de classes
Java qui constituent des extensions de la machine virtuelle. Ces
classes peuvent être téléchargées à la demande sur les sites
concernés par une application, ce qui permet de résoudre
élégamment le problème de la disponibilité du support d'exécution
sur toutes les machines d'un système réparti.
Des résultats sur la protection ont été obtenus en réutilisant dans les environnements Java [17] et Corba [15] le schéma de protection par capacités cachées initialement développé pour la protection des objets dans un espace d'adressage virtuel partagé ([5], [18]). Les expériences réalisées montrent la viabilité de ce schéma de protection, qui doit être intégré au système d'exécution proposé.
Mots-clés : gestion de
mémoire, grappes, clusters, capacités, cohérence de
caches, mémoire virtuelle répartie, SCI
Résumé : L'objectif est de fournir des services génériques et efficaces pour la construction de serveurs d'information extensibles, sur des grappes de machines homogènes (clusters fortement couplés ou stations de travail interconnectées par un réseau rapide). Deux voies sont explorées :
- 1.
- Services de gestion de mémoire. Un service de gestion de mémoire, Arias, a été réalisé sur AIX (voir
). Il s'appuie sur une mémoire virtuelle partagée répartie et utilise des protocoles de gestion de mémoire adaptables en fonction des caractéristiques des applications. Les mesures montrent que cette souplesse d'utilisation est compatible avec de bonnes performances. Les applications visées sont les serveurs d'information reposant sur le partage de données (serveur de fichiers, serveur Web, serveur de bases de données).
- 2.
- Services système pour réseaux de communication rapides. On explore l'utilisation de la technologie d'interconnexion SCI (Scalable Coherent Interface) pour construire des services efficaces de gestion de mémoire sur des serveurs en grappes. SCI permet de réaliser une communication directe entre deux mémoires distantes, avec un haut débit et une faible latence. Une plate-forme expérimentale est en cours de mise en place.
Participants : Xavier Rousset de Pina , Christian Jensen ,
Olivier Lobry .
Le projet Sirac développe depuis deux ans un service de
gestion de mémoire, Arias, pour des serveurs réalisés sur des
grappes de machines. Ce service, intégré au système
d'exploitation Unix-AIX, a été utilisé pour la construction d'un
système réparti de gestion de fichiers, CFS (Cluster File
System). Ce système est destiné à des applications qui
doivent manipuler une quantité importante de données (serveurs et
gérants de cache pour le Web, bases et entrepôts de
données).
Le travail réalisé dans ce domaine en 1997 a porté sur les points suivants.
Participants : Xavier Rousset de Pina , Jean-Philippe
Fassino , Povl Koch , Sacha Krakowiak .
L'année 1997 a vu le démarrage d'un travail visant à explorer les possibilités d'un réseau d'interconnexion utilisant l'interface SCI (Scalable Coherent Interface) pour la réalisation de serveurs performants.
L'intérêt de l'interface SCI est la communication directe de mémoire à mémoire. Cette capacité a été jusqu'ici peu exploitée, l'interface SCI ayant surtout été utilisée pour les communications avec les organes d'entrée-sortie. SCI permet de réaliser un ``couplage'' (mise en correspondance) entre des zones de mémoire de machines distantes, permettant l'écriture à distance au moyen de simples opérations d'écriture locale, avec une faible latence.
L'objectif du travail sur SCI est de construire une couche logicielle permettant l'exploitation efficace de ce mode de communication en vue de la gestion globale de ressources sur un serveur en grappes. Il est prévu de fournir les fonctions suivantes.
En octobre 1997, une plate-forme de 6 stations de type PC reliées par SCI est en cours de mise en place, et une première spécification générale du système est en cours d'élaboration. Parallèlement, des contacts sont pris avec les autres projets de l'INRIA travaillant sur les grappes de machines (projets Apache, CAPS, Remap), en vue de coordonner les recherches dans ce domaine.
Participants : Claude Castelluccia , Xavier Delord .
Mots-clés : réseaux sans fil, mobilité, IPv6, IP
Mobile, qualité de service
Résumé : Au début de l'année 97, le projet Sirac a lancé une nouvelle activité de recherche qui vise à fournir des services pour la gestion flexible de la mobilité afin d'accroître les performances et la souplesse d'utilisation de stations mobiles accédant à l'Internet dans le contexte de réseaux sans fil. Les travaux ont porté plus particulièrement sur les problèmes posés par la gestion de la mobilité dans la couche IP.
Le point de départ des études en cours est le protocole Mobile IP, défini par l'IETF (Internet Engineering Task Force). Dans sa définition actuelle, ce protocole permet à un utilisateur de rester accessible et connecté à l'Internet quelle que soit sa localisation physique. L'objectif est d'étendre ce protocole aux environnements mobile hétérogènes. La contribution du projet Sirac en 1997 a porté sur les points suivants :
Une application spécifie ses besoins en terme de qualité
de service (bande passante, latence, sécurité, etc.) par
l'intermédiaire d'une interface de programmation ad hoc. La
définition de cette interface, des paramètres de QoS
spécifiables et de leur métrique constitue une des facettes
du projet. Ces besoins sont ensuite utilisés par un service
de gestion des interfaces dont le rôle est de sélectionner le
ou les réseaux correspondant le mieux aux QoS de
l'application. Un algorithme de décision simple, utilisant
les spécifications en QoS des applications, sera développé et
implémenté. Le service précédent s'appuie sur un service de
supervision des interfaces dont le rôle est d'identifier en
permanence les réseaux disponibles et leurs caractéristiques.
Le coeur du système est constitué du service de gestion de la
mobilité, qui assure deux fonctions principales : la
prise en compte des changements d'adresse IP induits par la
mobilité, et l'utilisation simultanée de plusieurs
interfaces.
Ce travail fait l'objet d'une convention de recherche dans le cadre de l'appel d'offres 1997 du CNRS portant sur le programme ``Télécommunications et Réseaux''.
Par ailleurs, en liaison avec les moyens informatiques de l'UR, le projet Sirac s'est doté en 97 d'un réseau expérimental IPv6, connecté au réseau d'expérimentation français, le G6, lui-même connecté au réseau international 6Bone. L'objectif de cette plate-forme est, d'une part de tester en vraie grandeur les nouvelles fonctionnalités du protocole IPv6, et d'autre part de se doter d'un environnement expérimental pour nos travaux de recherche sur la gestion de la mobilité dans l'Internet. A cet effet il est prévu d'implémenter dans un futur proche le protocole IP Mobile sur la souche IPv6 développée à l'Inria.