

This is more than 20 times faster than conventional APIs. In our prototype, a single core running at 900 MHz can send or receive 14.88 Mpps (the peak packet rate on 10 Gbit/s links). Netmap has been implemented in FreeBSD and Linux for several 1 and 10 Gbit/s network adapters. The novelty in our proposal is not only that we exceed the performance of most of previouswork, 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.


Separately, some of these techniques have been used in the past. In building netmap, we identified and successfully reduced or removed three main packet processing costs: per-packet dynamic memory allocations, removed by preallocating resources system call overheads, amortized over large batches and memory copies, eliminated by sharing buffers and metadata between kernel and userspace, while still protecting access to device registers and other kernel memory areas. In this paper we present netmap, a novel framework that enables commodity operating systems to handle the millions of packets per seconds traversing 1.10 Gbit/s links, without requiring custom hardware or changes to applications. Many applications (routers, traffic monitors, firewalls, etc.) need to send and receive packets at line rate even on very fast links.
