Overview

Overview

Unikraft ASPLOS'22 Tutorial

To be held on Monday, February 28th 2022 along with International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS'22).

With the advance of virtualization technology and the constant demand for specialization, security and performance, unikernels are no longer a fringe idea. In this tutorial we present Unikraft, a unikernel SDK aiming for extreme specialization.

Unikraft consists of core software components (i.e. internal libraries) and outside optional components (i.e. external libraries), most of which are existing software components (standard C libraries, runtime libraries, frameworks, applications) integrated with the core parts. By allowing extreme configurability and using common APIs backed by multiple implementations, Unikraft makes it easy to tailor custom software solutions for your use case: be it performance, reduced resource utilization, security and safety or functionality, Unikraft makes it happen.

Unikraft is an open source project with a growing and vibrant community available on GitHub and Discord. The community consists of highly skilled industry contributors, academics and students, motivated in creating next-generation software products, pursuing novel research objectives and developing open and challenging technology in operating systems. Recent works realized on the basis of Unikraft include CubicleOS (ASPLOS'21) and FlexOS (to be separately presented at ASPLOS'22).

In this tutorial, we aim to get attendees accustomed to Unikraft and unikernel technology. We present Unikraft internals, highlight research prospects and showcase performance and specialization use cases. We start with an introduction in unikernels and Unikraft, details the build and configuration process of Unikraft, the porting / integration of libraries and applications (both in source code and in binary form) and performance-oriented scenarios.

The tutorial will be highly practical. We will provide remote access to pre-configured machines where attendees will build, configure, run and measure Unikraft-based software components. Attendees are required to have a laptop and an SSH client to access the remote system. Attendees are expected to have good Linux/CLI/shell scripting skills, experience with C programming and build automation and general knowledge of virtualization technology.

Each section in the tutorial will consist of a short presentation / demo (10-15 minutes) followed by practical work to be done by each attendee on their allocated remote machine.

Schedule

TimeSessionHost
10:00 - 10:15 (CET)High-level presentation of unikernels and UnikraftPierre Olivier (UoM)
10:15 - 11:15 (CET)Getting started with UnikraftTBD
11:30 - 12:30 (CET)A look inside the build and configuration systemTBD
13:30 - 14:30 (CET)Running complex applicationsTBD
14:45 - 15:45 (CET)Running applications in binary compatibilityTBD
16:00 - 17:00 (CET)Using Unikraft for performance-oriented use casesTBD
17:15 - 17:45 (CET)Current research and development highlightsHugo Lefeuvre (UoM)

Introduction to Unikraft

This initial introduction provides a birds-eye view of Unikraft through a short-presentation. In this presentation, we go over the basics of unikernels, their purpose and the motivation behind building unikernels with the library Operating System model. Expected time 15mn.

Getting started with Unikraft

Basic working (configure, build, run) with Unikraft and kraft. Expected time 60mn.

Inside the config and build system

We take a look inside Unikraft internals - its build system and runtime infrastructure. Expected time 60mn.

Running complex applications

We will run full-fledged applications on top of Unikraft (nginx, redis, sqlite). Expected time 60mn.

syscall_shim and bincompat

We use the syscall shim layer to run unmodified (binary) applications. Expected time 60mn.

Research and development

These are current research and development tracks in the Unikraft project. Expected time 30mn.

People

This tutorial is co-organized by Hugo Lefeuvre (The University of Manchester), Felipe Huici (NEC Laboratories Europe GmbH), Răzvan Deaconescu (University POLITEHNICA of Bucharest), Pierre Olivier (The University of Manchester), and Alexander Jung (Lancaster University). Over the last decade we co-authored numerous libOS/unikernel papers: ClickOS (NSDI’14), LightVM (SOSP’17), Hermitux (VEE’19, IEEE TC'21), Unikraft (EuroSys’21), among others.