cloudparts

DPDK (Data Plane Development Kit)

C libraries and drivers for processing packets in user space at line rate: applications take NICs away from the kernel and poll them from dedicated CPU cores, with no interrupts or system calls per packet.

Linux Foundation project
Type
Open source
Made by
DPDK project (Linux Foundation), created at Intel
Foundation
The Linux Foundation, joined April 2017. A Linux Foundation project with its own governing board and technical board
License
BSD-3-Clause (kernel components GPL-2.0)
Facts checked
28 October 2026

What it is

In a normal Linux server, each packet raises an interrupt, passes through the kernel’s network stack and is copied to the application through a system call. At tens of millions of packets per second that overhead is too much. DPDK moves packet processing into the application instead. A NIC is unbound from its kernel driver and bound to vfio-pci, and a poll mode driver (PMD) in user space reads and writes the NIC’s descriptor rings directly. Application threads are pinned to dedicated cores and poll in a loop, so they never sleep or wait for an interrupt; packets live in buffers (mbufs) allocated at start-up from memory pools in hugepages, and cores hand work to each other through lockless rings. The Environment Abstraction Layer (EAL) hides the platform: it sets up memory, cores and PCI access on Linux, FreeBSD or Windows, on x86, Arm and POWER CPUs.

DPDK is a toolkit, not a product. On top of the core it provides drivers for NICs from many vendors and for virtual devices such as virtio and vhost-user, plus libraries and drivers for crypto, compression, event scheduling and other accelerators, and helpers for hashing, longest-prefix-match lookups, flow classification and QoS. Applications are written either run-to-completion, where each core handles a packet from start to finish, or as a pipeline of stages on different cores linked by rings. Tools such as dpdk-testpmd forward traffic between ports to test NICs and measure throughput.

It is the fast path inside many network functions: routers, firewalls, load balancers, wireless and wireline infrastructure, Open vSwitch’s user-space datapath, and one of the targets of the P4 compiler. Intel created DPDK in 2010, 6WIND started the open community at dpdk.org in 2013, and it moved to the Linux Foundation in April 2017. Releases are numbered by year and month and come about every four months: 26.07 came out in July 2026 and 26.11 is due on 18 November 2026. Every November release is a long-term support release, maintained for three years.

Why teams pick it

  • Line-rate packet processing on standard servers by avoiding interrupts, system calls and copies per packet
  • Broad hardware support: PMDs for NICs from many vendors plus virtio, vhost-user and accelerator drivers behind common APIs
  • Portable across x86, Arm and POWER, and across Linux, FreeBSD and Windows, through the EAL
  • A permissive BSD licence and a vendor-neutral Linux Foundation project, so it is easy to build into commercial products

Watch out for

  • Polling burns whole CPU cores at 100% even when traffic is light, unless the application adds interrupt or power-saving modes
  • Bypassing the kernel means losing its network stack and tools: no sockets, iptables or tcpdump on those ports unless the application provides them
  • Setup is demanding: hugepages, binding NICs to vfio-pci (often with an IOMMU), core isolation and NUMA placement all have to be right
  • A low-level C toolkit with releases about every four months; most teams build on the November LTS and on a framework that uses DPDK rather than on DPDK directly

Alternatives

What all software-defined networking have in common →Compare side by side →

How it fits with other technologies

Reserve hugepages, hand a NIC to DPDK and forward packets with testpmd (from the DPDK guides; needs root and a supported NIC) · bash

# 2 GB of memory as 1 GB hugepages
dpdk-hugepages.py -p 1G --setup 2G

# unbind the NIC from its kernel driver and give it to vfio-pci
dpdk-devbind.py --status
dpdk-devbind.py --bind=vfio-pci 0000:86:00.0

# cores 0-2: core 0 runs the prompt, two cores forward packets
dpdk-testpmd -l 0-2 -a 0000:86:00.0 -- -i --nb-cores=2
testpmd> start
testpmd> show port stats all

See it in a real stack

No architecture uses DPDK (Data Plane Development Kit) yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2010–2026

Intel created DPDK in 2010 as a set of libraries for fast packet processing on its general-purpose CPUs, and released it under a permissive licence. In 2013 6WIND established an open community around it at dpdk.org, and other CPU and NIC vendors began adding drivers.

As routers, firewalls, load balancers and other network functions moved from dedicated boxes to software on servers, DPDK became a common building block for them. On 3 April 2017 the community moved to the Linux Foundation, with a governing board of member companies, among them ARM, AT&T, Cavium, Intel, Mellanox, NXP, Red Hat and ZTE, alongside the technical board that already steered development.

The project kept its year-and-month releases and its long-term support for each November release. In 2026 it shipped 26.03 and 26.07, with 26.11, the next LTS, due in November; Open vSwitch 4.0 was validated with DPDK 25.11.

Why it’s built this way

Poll instead of interrupts
At high packet rates an interrupt per packet, or even per batch, costs more than spinning on a dedicated core, so DPDK gives cores to the data plane and keeps them busy.
Drivers in user space
Running the NIC driver inside the application removes system calls and copies between kernel and user memory, and lets the application batch and prefetch as it likes.
Hugepages and pre-allocated pools
Allocating all packet buffers up front in large pages avoids allocation on the fast path and reduces TLB misses when touching many buffers.

Timeline

  1. 2010

    Created at Intel

  2. 2013

    6WIND establishes the open community at dpdk.org

  3. 2017

    Moves to the Linux Foundation on 3 April

  4. 2025

    25.11 LTS released in November

  5. 2026

    26.03 and 26.07 released; 26.11 LTS due 18 November

Sources11 · facts checked 28 October 2026

Improve this page on GitHub