Snap

Autor: Carlo Contavalli, Steve Gribble, Jacob Adriaens, Michael R. Marty, Sean Bauer, Erik Rubow, Gautam Kumar, Roman Kononov, William C. Evans, Valas Valancius, Carl Mauer, Amin Vahdat, Nicholas Kidd, Marc de Kruijf, Paul Turner, Christopher Alfeld, Michael C. Ryan, Lena E. Olson, Emily Musick, Kevin Springborn, Michael Dalton, Xi Wang, Nandita Dukkipati
Rok vydání: 2019
Předmět:
Zdroj: SOSP
DOI: 10.1145/3341301.3359657
Popis: This paper presents our design and experience with a microkernel-inspired approach to host networking called Snap. Snap is a userspace networking system that supports Google's rapidly evolving needs with flexible modules that implement a range of network functions, including edge packet switching, virtualization for our cloud platform, traffic shaping policy enforcement, and a high-performance reliable messaging and RDMA-like service. Snap has been running in production for over three years, supporting the extensible communication needs of several large and critical systems. Snap enables fast development and deployment of new networking features, leveraging the benefits of address space isolation and the productivity of userspace software development together with support for transparently upgrading networking services without migrating applications off of a machine. At the same time, Snap achieves compelling performance through a modular architecture that promotes principled synchronization with minimal state sharing, and supports real-time scheduling with dynamic scaling of CPU resources through a novel kernel/userspace CPU scheduler co-design. Our evaluation demonstrates over 3x Gbps/core improvement compared to a kernel networking stack for RPC workloads, software-based RDMA-like performance of up to 5M IOPS/core, and transparent upgrades that are largely imperceptible to user applications. Snap is deployed to over half of our fleet of machines and supports the needs of numerous teams.
Databáze: OpenAIRE