M.Sc. Topic: Unikernels and the Embedded Clouds

Introduction

This thesis is focused on understanding how Unikernels can be used as a virtualization tool to realize the so called Embedded Cloud. The main goal is exploiting Unikernels to execute sensing tasks on embedded devices (like Raspberry Pi) measuring different metrics (memory occupation, CPU consumption etc..). The measured values from the sensor will be aggregated on the embedded devices itself and be stored on a remote backend. Moreover, it would be extremely interesting to offer not only the information through an eventual web interface but also directly to mobile terminals in proximity of the embedded device.

About Unikernels

Unikernels are specialized, single address space machine images constructed by using library operating systems. A developer selects, from a modular stack, the minimal set of libraries which correspond to the OS constructs required for their application to run. These libraries are then compiled with the application and configuration code to build sealed, fixed-purpose images (unikernels) which run directly on a hypervisor or hardware without an intervening OS such as Linux or Windows.

Unikernels have a number of benefits and drawbacks when compared to traditional operating systems:

  • Improved security - reducing the amount of code deployed, unikernels necessarily reduce the likely attack surface and therefore have improved security properties.
  • Small footprint - Unikernels have been shown to be around 4% the size of the equivalent code bases using a traditional OS.
  • Whole-system optimization — Due to the nature of their construction, it is possible to perform whole-system optimization across device drivers and application logic, thus improving on the specialization.
  • Low boot times — Unikernels have been regularly shown to boot extremely quickly, in time to respond to incoming requests before the requests time-out.

Thesis Technical Details

The thesis project requires the candidate to go through the following steps:

  • Study and understand how Unikernel works and their differences compared to normal VMs
  • Set-up a proper virtualization environment on an embedded device or a Single-Board-Computer(SBC) like a RasperryPi2 or a CubieBoard 3. (KVM, XEN, QEMU..)
  • Prepare the device to be able to run different Unikernels (OSv, MirageOS, IncludeOS etc.)
  • Define a baseline for the testing, as example, a task that should be executed by each different Unikernel and then compare the results in terms of memory occupation, CPU consumption, boot time etc.
  • Additional task: Implement a scheduling module to launch Unikernels on demand OR develop a new library for a Unikernel (details will be disclosed afterwards).

Advised Practical Skills

The candidate should be proficient with:

  • JAVA/SCALA/OCaml/C++
  • Basic web development tools/languages and Databases
  • BASH or Python
  • Virtualization Techniques
  • Good knowledge of Linux OS

In terms of type of workload, the thesis will be much more oriented on coding and implementation than on the system architecture’s definition.

Depending on the Unikernel selected for the testbed, different challenges may arise. As mentioned before, the constraints regarding the practical skills are not strict, mostly because there are a lot of different methodologies and techniques exploitable to solve the problem.