Skip to content

future-proof-iot/middleware2022-femtocontainers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Middleware 2022 Femto-Container artifact

This repository contains the artifact for the paper published at ACM Middleware 2022 on "Femto-Containers: Lightweight Virtualization and Fault Isolation For Small Software Functions on Low-Power IoT Microcontrollers", for which you can also check out the preprint in PDF.

Directory overview

RIOT: contains the fork of the RIOT source tree that was used for the measurements. It includes the old rBPF code. It is used to compile the examples with.

Femto-Containers: contains the pure Femto-Containers source code.

Snippets: contains the Femto-Containers application snippets used in the paper submission.

verified: contains the CertFC code and proofs.

examples: contains a number of full working examples demonstrating Femto-Containers including an example of over the air updateable Femto-Container instances.

How to view this artifact

The main part of this artifact consists of the examples in the examples directory. These can be used to demonstrate the Femto-Container runtime and to reproduce measurments from the [Middlerware 2022] paper submission.

Requirements to run the artifacts

To compile the artifacts, an environment able to compile the RIOT operating system on Linux is required. A Debian-based Linux distribution is recommended. Furthermore the following tools are required:

  • Essential system development tools (GNU Make GCC, standard C library headers), can usually be installed by installing build-essential on Debian and derivatives.
  • git
  • GDB in the multiarch variant (alternatively: install for each architecture you target the corresponding GDB package)
  • unzip or p7zip
  • wget or curl
  • python3
  • pyserial (linux distro package often named python3-serial or py3-serial)

These can be installed on Debian and Ubuntu via

# apt install gcc-multilib build-essential git llvm clang python3 python3-pip wget curl unzip

For compiling Femto-Container applications and updating them over the air, the following is required:

These last four can be installed via Pip using

$ pip install --user pyelftools cbor2 cryptography aiocoap[all] linkheader

Examples

Suit Femtocontainer

The `suit_femtocontainer example contains functionality to run and update Femto-Container runtimes on a RIOT instance. See the suit_femtocontainer README for details on how to work with this example.

Bench BPF Unit

The bench_bpf_unit example is a unit test for the different eBPF instructions that can be run on the different runtimes. The README.md with the example has additional details on how to compile and what output is expected.

CertFC

The CertFC with the accompanying benchmark tests are in the verified directory. Installation instructions are provided separately in the INSTALL.md file and details provide in the README.md file in the verified directory.