NICs also have an extra tx/rx ring pair connected to the host stack. Ni_rx_rings) normally depends on the hardware. ( struct netmap_rings) and their position in the Uint32_t ni_bufs_head /* head of extra bufs list */ Ports and rings are created and controlled through a fileĭescriptor, created by opening a special deviceĬonst uint32_t ni_flags /* properties */Ĭonst uint32_t ni_tx_rings /* NIC tx rings */Ĭonst uint32_t ni_rx_rings /* NIC rx rings */ The following section describes the system calls to create and controlĪnd netmap pipe ports). Independently configured to share memory. Pipe ports by default use separate memory regions, but can be dev/netmap file descriptors bound to NICs. Same memory region, accessible to all processes who own Through the rings, and possibly implement zero-copy forwarding betweenĪll NICs operating in netmap mode use the Netmap client can send or receive packets in batches An additionalĪfter binding a file descriptor to a port, a Ring for each transmit/receive queue of a NIC or virtual port. Ports use preallocated circular queues ofīuffers ( rings) residing in an mmapped region. Port, which can be connected to a physical interface ARCHITECTURE netmap supports raw packet I/O through a
In the rest of this (long) manual page we document various aspectsĪrchitecture, features and usage. Requires native support in device drivers. Module, which also emulates the netmap API over VALE switch are implemented by a single kernel Synchronization and blocking I/O through a file descriptor and standard OS Providing high speed packet I/O between processes, virtual machines, NICs Netmap monitors can be created dynamically, Netmap mode and send and receive raw packets through Userspace clients can dynamically switch NICs into
Mode, which uses unmodified device drivers and is 3-5 times faster than Netmap support can still use the API in emulated Gbit/s NICs 35-40 Mpps on 40 Gbit/s NICs (limited by the hardware) aboutĢ0 Mpps per core for VALE ports and over 100 Mpps for Packet I/O using netmap on supported NICs reachesġ4.88 million packets per second (Mpps) with much less than one core on 10 With suitably fast hardware (NICs, PCIe buses, CPUs), Interchangeably with the same API, and are at least one order of magnitudeįaster than standard OS mechanisms (sockets, bpf, tun/tap interfaces, native
Switch/dataplane netmap pipes a shared memory packet transport channel netmap monitors a mechanism similar to
Physical NIC ports to access individual queues of network interfaces host ports to inject packets into the host stack VALE ports implementing a very fast and modular in-kernel software Supports a variety of netmap ports, including On FreeBSD, Linux and some versions of Windows, and Packet I/O for userspace and kernel clients, and for Virtual Machines.
A framework for fast packet I/O SYNOPSIS device netmap DESCRIPTION netmap is a framework for extremely fast and efficient