xebicon'16 : introduction à unikernel. par jean-baptiste claramonte et tomas rodriguez,...
TRANSCRIPT
@xebiconfr #xebiconfr
Agenda
● Les motivations
● Unikernel : qu’est-ce que c’est ?
● Qu’est-ce que ça change ?
● L’offre
● Démo
● Conclusion
4
@xebiconfr #xebiconfr
La stack aujourd’hui
9
Linux User ProcessesLinux Kernel
Virtual HW DriversHypervisor
Hardware Driver
@xebiconfr #xebiconfr
La stack aujourd’hui
10
Virtual HW DriversHypervisor
Hardware Driver
Shared LibrariesDocker Runtime
Linux User ProcessesLinux Kernel
@xebiconfr #xebiconfr
La stack aujourd’hui
11
ApplicationLanguage Runtime
Virtual HW DriversHypervisor
Hardware Driver
Shared LibrariesDocker Runtime
Linux User ProcessesLinux Kernel
@xebiconfr #xebiconfr
Avec quel objectif ?
12
● Faire tourner ○ une seule application○ sur un serveur○ et un seul user (OS)
@xebiconfr #xebiconfr
Sécurité apportée par le kernel linux
● Les utilisateurs sont sécurisés les uns des autres
● Les applications sont sécurisées les unes des autres
● Les applications sont sécurisées des utilisateurs
13
@xebiconfr #xebiconfr
Linux sait tout faire !
● Linux fonctionne partout !
● On peut tout faire tourner sur linux !
14
@xebiconfr #xebiconfr
Cela a un coût
17
Small App: 10k
Medium/Large: 100k
Huge App: 1M
Le kernel linux en fait 22M !
@xebiconfr #xebiconfr
Bilan du kernel linux
● Système de permissions complexe
● Le kernel inclut des drivers inutiles
● Difficile de maîtriser tout ce qu’un gestionnaire de paquets installe
● Des solutions comme CoreOS optimisent l’OS pas le kernel
18
@xebiconfr #xebiconfr
Côté sécurité
● “Surface d’attaque” très large
(on estime en moyenne 20 à 30 erreurs pour 1000 lignes de code)
● Linux est devenu une cible privilégiée car devenu très populaire sur les serveurs et les systèmes mobiles
19
@xebiconfr #xebiconfr
Fonctionnement high level
22
Kernel
libc libstd++ libgc
libgmp libz libtlc
gtk iconv
OpenGL
Application
@xebiconfr #xebiconfr
Fonctionnement high level
23
Kernel
libc libstd++ libgc
libgmp libz libtlc
gtk iconv
OpenGL
Application
@xebiconfr #xebiconfr
Fonctionnement high level
27
ApplicationLanguage Runtime
OS User ProcessesOS Kernel
Virtual HW DriversHypervisor
Hardware Driver
Shared LibrariesDocker Runtime
@xebiconfr #xebiconfr
Fonctionnement high level
28
ApplicationLanguage Runtime
OS User ProcessesOS Kernel
Virtual HW DriversHypervisor
Hardware Driver
Shared LibrariesDocker Runtime
@xebiconfr #xebiconfr
Fonctionnement high level
29
ApplicationLanguage Runtime
Unikernel
Virtual HW DriversHypervisor
Hardware Driver
@xebiconfr #xebiconfr
Fonctionnement high level
30
ApplicationLanguage Runtime
Unikernel
Virtual HW DriversHypervisor
Hardware Driver
@xebiconfr #xebiconfr
Processus de construction d’une image Unikernel
32
App Binary
App Config
App Deps
Lang runtime
Virt, HW Drivers
Packaging Tool Image Unikernel
AP
PLI
CA
TIO
NU
NIK
ER
NE
LR
UN
TIM
E
@xebiconfr #xebiconfr
Comment boot un Unikernel ?
33
Booter un Unikernel c’est tout simplement booter une image dans un hypervisor
@xebiconfr #xebiconfr
Quelles conséquences
37
● Un seul processus
Pas de “fork”
Pas de “context switching”
@xebiconfr #xebiconfr
Quelles conséquences
39
● Un seul espace mémoire● Pas de mémoire virtuelle
Gains en perf
@xebiconfr #xebiconfr
Quelles conséquences
40
● Un seul espace mémoire● Pas de mémoire virtuelle
Gains en perf
Une Application ne peut utiliser plus de mémoire physique que ce qui est disponible
@xebiconfr #xebiconfr
Quelles conséquences
41
● Un seul espace mémoire● Pas de mémoire virtuelle
Gains en perf
Une Application ne peut utiliser plus de mémoire physique que ce qui est disponible
Pas de mmap
@xebiconfr #xebiconfr
Quelles conséquences
42
● Il n’y a plus de cloisonnement entre les espaces kernel et utilisateur
@xebiconfr #xebiconfr
Quelles conséquences
43
● Il n’y a plus de cloisonnement entre les espaces kernel et utilisateur
Votre application s’exécute dans le kernel space
@xebiconfr #xebiconfr
Quelles conséquences
44
● Il n’y a plus de cloisonnement entre les espaces kernel et utilisateur
Votre application s’exécute dans le kernel space
Gain en performance pour les I/O
@xebiconfr #xebiconfr
Quelles conséquences
45
● Il n’y a plus de cloisonnement entre les espaces kernel et utilisateur
Votre application s’exécute dans le kernel space
Gain en performance pour les I/O
Pas de protection de la mémoire entre kernel/app
@xebiconfr #xebiconfr
De nombreuses solutions
50
● ClickOS● Clive● Drawbridge● HaLVM● IncludeOS● LING
● MirageOS● OSv● Rumprun● runtime.js● UniK
@xebiconfr #xebiconfr
Démo time !
60
● Démo d’une application Java avec l’Unikernel Unik sur VirtualBox
@xebiconfr #xebiconfr
Démo time !
63
Étapes:
● Installation de Unik
● Création d’une image
● Création d’une instance à partir de l’image