Netmap

Speaker : Luigi Rizzo
Univ. of Pisa
Date: 04/07/2012
Time: 2:00 pm - 3:00 pm
Location: LINCS Meeting Room 40

Abstract

Many applications (routers, traffic monitors, firewalls, etc.) need to send and receive packets at line rate even on very fast links. In this paper we present netmap, a novel framework that enables commodity operating systems to handle the millions of packets per second traversing 1..10 Gbit/s links, without requiring custom hardware or changes to applications. In building netmap, we identified and successfully reduced or removed three main packet processing costs: per-packet dynamic memory allocations, removed by pre-allocating resources. system call overheads, amortized over large batches. and memory copies, eliminated by sharing buffers and metadata between kernel and user space, while still protecting access to device registers and other kernel memory areas. Separately, some of these techniques have been used in the past. The novelty in our proposal is not only that we exceed the performance of most of previous work, but also that we provide an architecture that is tightly integrated with existing operating system primitives, not tied to specific hardware, and easy to use and maintain. netmap has been implemented in FreeBSD and Linuxfor several 1 and 10 Gbit/s network adapters. In our prototype,a single core running at 900 MHz can send orreceive 14.88 Mpps (the peak packet rate on 10 Gbit/slinks). This is more than 20 times faster than conventional APIs. Large speed ups (5x and more) are also achieved on user-space Click and other packet forwarding applications using a libpcap emulation library running on top of netmap.

This work received the Best paper award at USENIX ATC 201.