I-JVM: une machine virtuelle Java pour l isolation de composants dans OSGi



Documents pareils
I-JVM: une machine virtuelle Java pour l isolation de composants dans OSGi

JOnAS 5. Serveur d application d

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

TP1 : Initiation à Java et Eclipse

Introduction aux Machines Virtuelles avec VMKit

Serveur d'application à la juste taille

Etude de l ENT de l Université de Paris 5. Mise en place d outils de suivi de la charge de l ENT (monitoring)

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

INITIATION AU LANGAGE JAVA

Chapitre 2 : Abstraction et Virtualisation

La carte à puce. Jean-Philippe Babau

S T L - C P S - L e s p l u g i n s E c l i p s e. - Une Introduction , Frédéric Peschanski

Cours 1: Java et les objets

Module d anonymisation

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Java pour le Web. Cours Java - F. Michel

Analyse de performance, monitoring

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Vulgarisation Java EE Java EE, c est quoi?

JOnAS 5 Enterprise OSGi javaee compliant

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Clear2Pay Belgium SA Solution B-web V4 Procédure d installation. Solution B-web V4. Procédure d installation. Clear2Pay Belgium SA Page 1 de 18

Chapitre I Notions de base et outils de travail

Bases Java - Eclipse / Netbeans

Remote Method Invocation (RMI)

Projet gestion d'objets dupliqués

La JVM. La machine virtuelle Java. La JVM. La JVM

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Programmation Orientée Objet

Fiche technique rue de Londres Paris Tél. : Mail : contact@omnikles.com

Accès au Serveur de PAIE «SPV» par INTERNET Paramétrage du poste de travail «Windows»

Communications performantes par passage de message entre machines virtuelles co-hébergées

Le passage à l échelle de serveur J2EE : le cas des EJB

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Un ordonnanceur stupide

Cours de Génie Logiciel

Présentation de Java. Olivier de Pertat IT GROUP

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

La technologie Java Card TM

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

as Architecture des Systèmes d Information

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Synchro et Threads Java TM

JASMINe. Outils de gestion et supervision d'infrastructure intergicielle.

JOnAS Day 5.1. Outils de développements

TechSoftware Présentations

Derrière toi Une machine virtuelle!

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Vérifier la qualité de vos applications logicielle de manière continue

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Applications distribuées: le retour du client "riche"

Initiation à JAVA et à la programmation objet.

Projet de Veille Technologique

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Application Web et J2EE

Sessions en ligne - QuestionPoint

Plan. Programmation par agents. Un agent mobile C est quoi?

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Installation et prise en main

IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité.

Java Licence Professionnelle CISII,

TP1 : Initiation à Java et Eclipse

Généralités sur le Langage Java et éléments syntaxiques.

Utiliser Java sans BlueJ

Introduction à Java. Philippe Genoud.

CORBA haute performance

Plan du cours. Historique du langage Nouveautés de Java 7

ÉVALUATION DE LA MAINTENABILITÉ DE S3MDSS AVEC L OUTIL SONAR

«Ré-inventer le browser d'entreprise pour assurer sa sécurité au coeur du Cloud Computing»

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

Machines virtuelles Cours 1 : Introduction

Code Produit Nom Produit Dernière mise à jour. AM003 Alias Mobile On Demand Licence 1 mois 27/04/2015

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Conception de serveurs d'applications ouverts

Machines Virtuelles. et bazard autour. Rémi Forax

Introduction au Déploiement

F. Barthélemy. 17 mai 2005

Défi Cloud Computing

CAHIER DES CHARGES D IMPLANTATION


RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Notion de thread (1/2)

RMI le langage Java XII-1 JMF

I / La démarche à suivre pour l installation de l application-crm

SYNTHÈSE DES ACTIVITÉS DE RECHERCHE. Habilitation à diriger les recherches et thèse de doctorat

Langage Java. Classe de première SI

HOLO-EDIT ONLINE : CONSTRUCTION D UNE APPLICATION JAVA SUR INTERNET

Java - la plateforme

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

SGDN. Projet: JAVASEC

Programmeur Java 1.4 et 5.0

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Intergiciel - concepts de base

La base de données XML exist. A. Belaïd

Remote Method Invocation Les classes implémentant Serializable

Formations. «Règles de l Art» Certilience formation N SIRET APE 6202A - N TVA Intracommunautaire FR

Une introduction à Java

Évaluation et implémentation des langages

Transcription:

I-JVM: une machine virtuelle Java pour l isolation de composants dans OSGi Nicolas Geoffray 1, Gaël Thomas 1, Gilles Muller 1, Pierre Parrend 2, Stéphane Frénot 3, Bertil Folliot 1 nicolas.geoffray@lip6.fr 1 Université Pierre et Marie Curie, INRIA/Regal 2 FZI Karlsruhe 3 INSA Lyon, INRIA/Amazones

Les composants en Java Qu est-ce qu un composant? Ensemble de code composable Browsers web (applets), Serveurs web (servlets), IDEs (plugins), OSGi (bundles) Utilisation des chargeurs de classe Chargement/déchargement dynamique Isolation de nom Politiques de sécurité Couplage dynamique: communications avec appels de méthode directs

Vulnérabilités des chargeurs de classe Java Pas d isolation mémoire Partage d objets (static, String, Class) Pas de comptage de ressources Utilisation mémoire Utilisation CPU Utilisation réseau Pas de terminaison non volontaire Terminé lorsque non référencé

Solutions existantes Plusieurs JVMs Un composant par JVM Isolation système Communications par appels RMI MVM (OOPSLA01, OOPSLA02) Plusieurs applications dans une JVM Isolation VM Communications par Incommunicado

Solutions existantes Plusieurs JVMs Un composant par JVM Isolation système Communications par appels RMI MVM (OOPSLA01, OOPSLA02) Plusieurs applications dans une JVM Isolation VM Communications par Incommunicado Incompatible avec les applications existantes

Solutions existantes Plusieurs JVMs Un composant par JVM Isolation système Communications par appels RMI (90ms) MVM (OOPSLA01, OOPSLA02) Plusieurs applications dans une JVM Isolation VM Communications par Incommunicado (9ms) (Appel direct: 20µs)

OSGi Plateforme d exécution de bundles Java Gestion du cycle de vie (installation, mise-àjour, désinstallation) Communications avec appels de méthode directs Domaines d application Automobiles, boxes internet, téléphones mobiles, IDE (Eclipse), Serveurs web (Jonas)

Un exemple OSGi

Problèmes de sécurité OSGi

Notre contribution Un nouveau modèle d isolation pour composants où la communication reste par appels directs Mémoire, ressources, terminaison Compatible avec l existant Overhead léger lors des communications

Plan 1. Motivation 2. I-JVM 3. Résultats 4. Conclusions

I-JVM Un Isolate par Bundle avec droits limités Isolation mémoire Comptage de ressources Communication par appels directs Threads migrent de contexte Migration détectée à l exécution Isolate0 pour le runtime OSGi Peut créer/démarrer/arrêter des Isolates Peut tuer un isolate

Isolate par bundle Isolation Mémoire (MVM [OOPSLA01]) Langage sûr avec Java Variables globales dupliquées (static, string, Class) Comptage de ressources Mémoire: algorithme GC (Price [OAKLAND03]) CPU: Test sur variable locale au thread E/S: Modifcation du JRE (JRes [OOPSLA98])

Migration de Threads Appels Inter-Isolate Appels directs Même pile, changement de contexte Objets passés par référence Chaque thread référence son isolate courant I-JVM insère des tests à l entrée de chaque méthode L isolate courant est mis-à-jour lors des appels inter-isolate

Terminaison d Isolate Le runtime OSGi arrête les bundles de manière volontaire Plus aucune dépendance Plus de threads exécutant du code du bundle Comment terminer des bundles non coopératifs?

Terminaison d Isolate 1. I-JVM interrompt tous les threads 2. Les threads inspectent leur pile 1. L isolate interrompu est en fin de pile 2. L isolate interrompu est dans la pile 3. L exécution reprend 1. Retour vers l isolate interrompu -> StoppedIsolateException 2. Appel vers l isolate interrompu -> StoppedIsolateException

Implémentation d I-JVM Codée avec VMKit (http://vmkit.llvm.org) Ajout de ~650 lignes de code Isolation mémoire (~200 loc) Tests de migration (~150 loc) Comptage de ressources (~100 loc) Isolate par bundle (~50 loc) Terminaison d Isolate (~150 loc)

Plan 1. Motivation 2. I-JVM 3. Résultats 4. Conclusions

Surcoût à l exécution Appel intra-bundle Appel inter-bundle Allocation d objets Accès variable static 0% 12.5% 25.0% 37.5% 50.0% Surcoût relatif à VMKit

Surcoût à l exécution compress jess raytrace db javac mtrt jack 0% 5.0% 10.0% 15.0% 20.0% Surcoût relatif à VMKit

Surcoût mémoire Exécution de runtime OSGi avec les bundles de base (administration, shell, service de nommage,...) Felix 1.2.1 3 bundles Equinox 3.4.0 22 bundles 0% 10.0% 20.0% 30.0% 40.0% Surcoût relatif à VMKit

Vulnérabilités Classification et attaques OSGi (Parrend [SPE09]) Isolation mémoire Modification d une variable static Synchronized sur une variable static Comptage de ressources Sur-utilisation mémoire Sur-utilisation CPU Création d objets excessive Création de threads excessive Thread bloqué

Vulnérabilités Classification et attaques OSGi (Parrend [SPE09]) Isolation mémoire Modification d une variable static Par défaut avec I-JVM Synchronized sur une variable static Comptage de ressources Sur-utilisation mémoire Sur-utilisation CPU Création d objets excessive Création de threads excessive Thread bloqué

Vulnérabilités Classification et attaques OSGi (Parrend [SPE09]) Isolation mémoire Modification d une variable static Par défaut avec I-JVM Synchronized sur une variable static Comptage de ressources Sur-utilisation mémoire Sur-utilisation CPU Remonté à l administrateur Création d objets excessive Création de threads excessive Thread bloqué

Conclusions Un nouveau modèle d isolation Pour plateformes orientées service Surcoût léger Travaux futurs: système autonome Dans ces travaux, comptage de ressources comme aide pour l administration Dans travaux futurs, écriture de politiques de ressource