Snap: a Microkernel Approach to Host Networking

Michael Marty, Marc de Kruijf, Jacob Adriaens, Christopher Alfeld, Sean Bauer, Carlo Contavalli Michael Dalton , Nandita Dukkipati, William C. Evans, Steve Gribble, Nicholas Kidd, Roman Kononov, Gautam Kumar, Carl Mauer, Emily Musick, Lena Olson, Erik Rubow, Michael Ryan, Kevin Springborn, Paul Turner, Valas Valancius, Xi Wang, and Amin Vahdat (2019)

What kind of paper is this?

The Fairy Tale: Once upon a time, networking happened in the kernel or in user-space services. This was a nightmare: upgrading and changing the network infrastructure took a long time making quick adaption to new requirements impossible, worse: upgrades often meant downtime and integrating upstream changes often break optimization through vertical integration. These drawbacks became unbearable for Google, and Marty et al. decided to combine ideas from uKernels and user-level networking with the central resource management and scheduling of the Linux kernel. With Snap and Pony Express Transport layer, they could greatly reduce the resource usage for network processing, improve latecy and bandwidth, and upgrade the networking services within less than 250ms. Since more than three years, they snapped an happyliy ever after.

Principles

Claims

Components

Snap

Engines

Engine Groups

Scheduling Class: MicroQuanta

Pony Express

Transparent Upgrades

Evaluation