xebicon'16 : introduction à unikernel. par jean-baptiste claramonte et tomas rodriguez,...

72
@xebiconfr #xebiconfr Introduction à Unikernel Jean-Baptiste Claramonte & Tomas Rodriguez

Upload: xebia-france

Post on 16-Apr-2017

107 views

Category:

Technology


0 download

TRANSCRIPT

@xebiconfr #xebiconfr

Introduction à

Unikernel Jean-Baptiste Claramonte

&Tomas Rodriguez

@xebiconfr #xebiconfr

Tomas Rodriguez

2

@xebiconfr #xebiconfr

Jean-Baptiste Claramonte

3

@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

Les motivations pour Unikernel

1

5

@xebiconfr #xebiconfr

La stack aujourd’hui

6

Hardware Driver

@xebiconfr #xebiconfr

La stack aujourd’hui

7

HypervisorHardware Driver

@xebiconfr #xebiconfr

La stack aujourd’hui

8

Virtual HW DriversHypervisor

Hardware Driver

@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

15

● Small App: 10k

● Medium/Large: 100k

● Huge App: 1M

@xebiconfr #xebiconfr

Cela a un coût

16

Small App: 10k

Medium/Large: 100k

Huge App: 1M

@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

Quelle alternative ?

● Unikernel …

20

@xebiconfr #xebiconfr

Unikernel : qu’est ce que c’est ?

2

21

@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

24

Application

@xebiconfr #xebiconfr

Fonctionnement high level

25

Application

@xebiconfr #xebiconfr

Fonctionnement high level

26

Application Unikernel

@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

Qu’est ce que ça change ?

3

31

@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

Comment boot un Unikernel ?

34

@xebiconfr #xebiconfr

Quelles conséquences

35

● Un seul processus

@xebiconfr #xebiconfr

Quelles conséquences

36

● Un seul processus

Pas de “fork”

@xebiconfr #xebiconfr

Quelles conséquences

37

● Un seul processus

Pas de “fork”

Pas de “context switching”

@xebiconfr #xebiconfr

Quelles conséquences

38

● Un seul espace mémoire● Pas de mémoire virtuelle

@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

kernel/user space : exécution avec un linux

46

@xebiconfr #xebiconfr

Pas de kernel/user space avec Unikernel

47

Unikernel

@xebiconfr #xebiconfr

L’offre

4

48

@xebiconfr #xebiconfr

Unikernel.org

49

● MirageOS● OSv● Rumprun● runtime.js● UniK

@xebiconfr #xebiconfr

De nombreuses solutions

50

● ClickOS● Clive● Drawbridge● HaLVM● IncludeOS● LING

● MirageOS● OSv● Rumprun● runtime.js● UniK

@xebiconfr #xebiconfr

Comparaison de l’offre

51

@xebiconfr #xebiconfr

Comparaison de l’offre

52

@xebiconfr #xebiconfr

Unik

53

@xebiconfr #xebiconfr

Unik

54

● Le “docker” de l’Unikernel

@xebiconfr #xebiconfr

Une CLI à la docker

55

@xebiconfr #xebiconfr

Un Hub à la Docker Hub

56

@xebiconfr #xebiconfr

Un intermédiaire avec différents Unikernel

57

@xebiconfr #xebiconfr

Excellent candidat pour une démo !

58

@xebiconfr #xebiconfr

Démo time !

5

59

@xebiconfr #xebiconfr

Démo time !

60

● Démo d’une application Java avec l’Unikernel Unik sur VirtualBox

@xebiconfr #xebiconfr

Démo time !

61

Étapes :

● Installation de Unik

@xebiconfr #xebiconfr

Démo time !

62

Étapes:

● Installation de Unik

● Création d’une image

@xebiconfr #xebiconfr

Démo time !

63

Étapes:

● Installation de Unik

● Création d’une image

● Création d’une instance à partir de l’image

@xebiconfr #xebiconfr

Conclusion

6

64

@xebiconfr #xebiconfr 65

Pas d’image hub unikernel “à la” docker registry

@xebiconfr #xebiconfr 66

Cloud Public on paye à l’utilisation de l’instance

@xebiconfr #xebiconfr 67

Complexité de certaines solutions

@xebiconfr #xebiconfr 68

Persistance des données

@xebiconfr #xebiconfr 69

Le plus : les performances et la sécurité annoncées

@xebiconfr #xebiconfr 70

Unikernel n’est pas l’alter ego de Docker

@xebiconfr #xebiconfr 71

Unikernel pour l’IoT

@xebiconfr #xebiconfr 72

À suivre, mais tout ça n’est pas sec pour l’instant !