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- What it is
- Software-defined networking
- 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,
iptablesortcpdumpon 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
What uses DPDK (Data Plane Development Kit)
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 allSee 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
- 2010
Created at Intel
- 2013
6WIND establishes the open community at dpdk.org
- 2017
Moves to the Linux Foundation on 3 April
- 2025
25.11 LTS released in November
- 2026
26.03 and 26.07 released; 26.11 LTS due 18 November
- DPDK: About (created at Intel in 2010, community at dpdk.org by 6WIND in 2013)
- Linux Foundation: Networking industry leaders join forces to expand new open source community to drive development of the DPDK project (3 April 2017)
- SDxCentral: Free Range Routing and DPDK join the Linux Foundation (April 2017)
- DPDK: Roadmap (26.11 schedule, stable branches)
- GitHub: DPDK/dpdk tags (v25.11 November 2025, v26.07 July 2026)
- Open vSwitch NEWS (v4.0.0 validated with DPDK 25.11.2)
Sources11 · facts checked 28 October 2026
- DPDK programmer’s guide: Overview (EAL, PMDs, mempool, mbuf, ring, run-to-completion and pipeline)
- DPDK Linux guide: System requirements (hugepages)
- DPDK Linux guide: Linux drivers (vfio-pci, dpdk-devbind.py)
- DPDK tools: dpdk-hugepages
- DPDK: Running testpmd
- DPDK: About (Linux, FreeBSD, Windows; x86, Arm, POWER)
- DPDK: Licence README (BSD-3-Clause, kernel components GPL-2.0)
- DPDK: Stable releases and LTS (each X.11 release, three years)
- DPDK: Roadmap (about four months per release; 26.11 on 18 November 2026)
- Open vSwitch docs: Open vSwitch with DPDK
- p4c README: p4c-dpdk backend for the DPDK software switch (SWX) pipeline