Rump kernel based QEMU stubdomain

Wei Liu

Seattle – August 17-18, 2015 Agenda 4.6 timeline Development update Xen 4.6 Retrospective

Agenda

I Background

I Introduction to rump kernel

I Why rump kernel

I What are required for QEMU stubdomain

I Status of upstream QEMU stubdomain

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 2 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Background

I Feature parity with QEMU traditional

I so that we can eventually use QEMU upstream for everything

I Most secure option for sandboxing QEMU

I But be aware of the downside: extra resources required

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 3 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Introduction to rump kernel

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 4 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Why rump kernel

Options we considered:

I Roll our own

I based

I OSv based

I Rump kernel based

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 5 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Why rump kernel

Roll our own:

I Like QEMU traditional stubdom I Require much work to maintain

I QEMU upstream changes a lot

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 6 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Why rump kernel

Linux based:

I Anthony Perard built a prototype

I Hard to build

I Hard to distribute

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 7 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Why rump kernel

OSv based:

I Provides toolchain to turn application to VM

I No C++ expertise

I No PV support (yet)

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 8 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Why rump kernel

Rump kernel based:

I Provides toolchain to turn application to VM I NetBSD code base

I POSIX-y interface I Many NetBSD infrastructures available I Lots of utilities for debugging (with the help of syscall proxy)

I PV support

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 9 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

What are required

To build a QEMU stubdomain:

I Xenbus driver

I Privcmd driver

I Grant table driver

I Tap (and bridge) device

I Communication channel between toolstack domain and QEMU

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 10 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

What are required

How are they done in QEMU traditional stubdomain

I Various drivers: libxc hooked up to mini-os

I Tap device: hacked together, dump traffic to vif

I Communication: via special consoles

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 11 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

What are required

How are they (going to be) done in QEMU upstream stubdomain

I Various drivers: rump kernel hooked up to mini-os

I Tap (and bridge) device: provided by NetBSD

I Communication: libvchan or TCP network

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 12 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Things done so far

I All required Xen drivers upstreamed in rump kernel

I Bridge and tap drivers enabled I QEMU built as

I Build a bunch of prerequisite libraries I Build QEMU with prerequisite libraries I Able to run with –help and exits

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 13 / 19 Agenda Xen 4.6 timeline Development update Xen 4.6 Retrospective

Problems need to be solved

I Bootstrap rump kernel to certain state

I Network topology setup etc I Currently use a simple program to do that I Stabilise toolchain and utilities

I Wish to use rumprun directly from libxl I Currently not sure if it meets every requirement we have I How to build QEMU stubdomain

I Currently done with a hacked-up script I Building should be done with Raisin, don’t want to put into Xen tree

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 14 / 19 Thank you!

Seattle – August 17-18, 2015 Rump kernel based QEMU stubdomain 15 / 19