THE LINUX FOUNDATION PROJECTS

Data Plane Development Kit (DPDK) is a Linux Foundation project that consists of libraries to accelerate packet processing workloads running on a wide variety of CPU architectures.

Network performance, throughput, and latency are crucial for diverse applications, including wireless and wireline infrastructure, routers, load balancers, firewalls, video streaming, and VoIP. DPDK (Data Plane Development Kit), an open source project hosted by the Linux Foundation, provides a robust framework that boosts packet processing speeds on various CPU architectures like Intel x86, ARM, and PowerPC. This framework is key to rapidly developing high-speed data packet networking applications.

By running DPDK, new users can significantly accelerate their network applications’ performance through optimized libraries that allocate resources upfront, supporting both run-to-completion and pipeline processing models depending on application needs.

Project Architecture

At its core, DPDK consists of a set of libraries and drivers that support fast packet processing across a variety of hardware and software environments. This framework includes an Environment Abstraction Layer (EAL) that abstracts hardware details from the applications, allowing developers to write portable code that runs efficiently on different platforms, including x86, ARM, and PowerPC processors.

Provides a basic interface between DPDK applications and the underlying hardware, abstracting away specifics of the operating system and hardware differences.

Includes hugepage support, memory pools, and buffer management, essential for efficient packet processing.

These are optimized drivers for various network interfaces, bypassing the kernel’s network stack to reduce latency and increase throughput.

Utilized for efficient queueing mechanisms, allowing high-speed inter-process communication.

Offers a set of functions and libraries for packet manipulation, including header parsing, packet classification, and packet forwarding.

Provides libraries and drivers to support cryptographic operations and secure communication.

For event-driven programming and time management functionalities, aiding in scheduling and execution of tasks in a timely manner.

Libraries

By leveraging DPDK libraries, developers can create optimized packet processing paths, manage timers for executing functions asynchronously, and utilize a wide range of drivers and libraries tailored for fast packet processing. A few of the foundational libraries:

  1. librte_eal – Environment Abstraction Layer: Provides the foundational API for DPDK, facilitating access to hardware resources such as memory, timers, and logs.
  2. librte_mempool – Memory Pool Manager: Manages memory pools for efficient and speedy packet handling.
  3. librte_ring – Ring Buffer Manager: Implements lock-free FIFO queues, enabling high-speed communication between various DPDK components.
  4. librte_mbuf – Packet Buffer Management: Handles packet buffers, which are crucial for packet transmission and reception.
  5. librte_ethdev – Ethernet Device API: Offers an API for configuring and querying Ethernet devices. It supports various operations, including sending and receiving packets.
  6. librte_net – Network Helper Library: Provides helper APIs for dealing with network protocols.
  7. librte_ip_frag – IP Fragmentation and Reassembly: Handles fragmentation and reassembly of IP packets, supporting both IPv4 and IPv6.

DPDK’s library set evolves with every release. For the complete, current list, see the Programmer’s Guide.

History of DPDK

DPDK was created in 2010 by Intel and made available under a permissive open source license. The open source community was established at DPDK.org in 2013 by 6WIND and has facilitated the continued growth of the project ever since. Since then, the community has grown steadily in contributors, patches, and participating organizations across more than a decade of quarterly releases. DPDK now supports all major CPU architectures and NICs from multiple vendors, which makes it ideally suited to applications that need to be portable across multiple platforms. See the current release roadmap for up-to-date release history and cadence.

Get StartedLearn more about membership