Unikernels as Processes
Dan Williams, Ricardo Koller (IBM Research) Martin Lucina (robur.io/Center for the Cultivation of Technology) Nikhil Prakash (BITS Pilani)
Unikernels as Processes Dan Williams, Ricardo Koller (IBM Research) - - PowerPoint PPT Presentation
Unikernels as Processes Dan Williams, Ricardo Koller (IBM Research) Martin Lucina (robur.io/Center for the Cultivation of Technology) Nikhil Prakash (BITS Pilani) What is a unikernel? An application linked with library OS components Run
Dan Williams, Ricardo Koller (IBM Research) Martin Lucina (robur.io/Center for the Cultivation of Technology) Nikhil Prakash (BITS Pilani)
VM
2
3
VM
4
5
Process
6
attack surface
channels or resource starvation
7
Host Kernel app
8
Linux monitor process (e.g., ukvm) I/O devices KVM VT-x
monitor
9
Linux monitor process (e.g., ukvm) I/O devices KVM VT-x Setup Set up I/O fds 1
monitor
10
Linux monitor process (e.g., ukvm) Virtual CPU context I/O devices KVM VT-x Setup Set up I/O fds 1 Load unikernel 2
monitor
11
Linux monitor process (e.g., ukvm) I/O devices KVM VT-x Setup Set up I/O fds 1 Exit handling Load unikernel 2 I/O
monitor
Virtual CPU context
12
Hypercall walltime puts poll blkinfo blkwrite blkread netinfo netwrite netread halt
13
14
Linux tender process I/O devices
unikernel monitor
restrict interface
15
Linux tender process I/O devices Setup Set up I/O fds 1
unikernel monitor
restrict interface
16
Linux tender process I/O devices Setup Set up I/O fds 1 Load unikernel 2
unikernel monitor
restrict interface
17
Linux tender process I/O devices Setup Set up I/O fds 1 Load unikernel 2 Configure seccomp 3
unikernel monitor
restrict interface
18
Linux tender process I/O devices Setup Set up I/O fds 1 Exit handling Load unikernel 2 I/O Configure seccomp 3
unikernel monitor
restrict interface
19
Hypercall walltime puts poll blkinfo blkwrite blkread netinfo netwrite netread halt
hypercalls and system call/resource pairs
20
Hypercall walltime puts poll blkinfo blkwrite blkread netinfo netwrite netread halt
System Call Resource clock_gettime write stdout ppoll net_fd pwrite64 blk_fd pread64 blk_fd write net_fd read net_fd exit_group
21
ecosystem and ukvm
200 400 600 800 1000 1200 1400 1600 n g i n x n g i n x
a r g e n
e
x p r e s s r e d i s
e t r e d i s
e t Unique kernel functions accessed process ukvm nabla
22
through interface is a metric for attack surface
23
100 200 300 400 500 600 700 50 100 150 200 250 300 Unique kernel functions accept nabla block 30 10
system call fuzzer to try to access more of the kernel
by 98% over a “normal” process
80% 100% 120% 140% 160% 180% 200% py_tornado py_chameleon node_fib mirage_HTTP py_2to3 node_express nginx_large redis_get redis_set includeos_TCP nginx includeos_UDP Normalized throughput 245 no I/O with I/O
ukvm nabla QEMU/KVM 24
throughput than ukvm
20 40 60 80 100 120 (a) CPU % 20 40 60 80 100 (b) VMexits/ms 0.5 1 1.5 5000 10000 15000 20000 (c) IPC (ins/cycle) Requests/sec nabla ukvm 25
instructions per cycle
web server
utilization over ukvm
250 500 750
Hello world
QEMU/KVM
10 20 30
ukvm
10 20 30
nabla
10 20 30
process
500 2 4 6 8 10 12 14 16 500 1000 1500
HTTP POST
2 4 6 8 10 12 14 16 50 100 150 200 2 4 6 8 10 12 14 16
Number of cores
50 100 150 200 2 4 6 8 10 12 14 16 50 100 150 200 0 2 4 6 8 500 1000 1500
26
for serverless, NFV
latency than nabla
Hello world HTTP Post
processes be used to improve container isolation?
27
Process
28