BSDCan2015 - ZI

BSDCan 2015
The Technical BSD Conference

Luigi Rizzo
Day Tutorials #2 - 11 June - 2015-06-11
Room DMS 1120
Start time 13:00
Duration 03:00
ID 595
Event type Workshop
Track Tutorial
Language used for presentation English

Fast packet processing with the netmap framework

This tutorial targets vendors, engineers, and researchers looking for OS support for high speed NICs; efficient software packet processing techniques; high speed networking in VMs. We will show how to achieve these results using netmap.

Netmap is a platform-independent framework for high-speed packet I/O from userspace/kernel, similar in spirit (but with many features that make it unique) to proposals such as DPDK, PFRING-DNA, OpenOnLoad, SnabbSwitch and other vendor specific libraries. Netmap uses the same API to access physical NICs, virtual switches (the VALE software switch) or fast interprocess communication channels (netmap pipes).

Unlike other solutions, netmap provides a file descriptor for synchronization (select/poll, epoll, kqueue), thus not requiring active threads to monitor the device's status.

All netmap features are device- and OS-independent, and implemented as a single FreeBSD/Linux kernel module. Optional device driver support exploits the hardware's full capabilities (14.88 Mpps on a 10 Gbit/s NIC with a single core at less than 1 GHz). We have extensive application support: QEMU/KVM and Click have native netmap support, we recently added netmap support for bhyve, and pcap clients can access netmap without even recompiling through the netmap-enabled libpcap.