Upcoming Webinar: Hyperscaling in the Cloud
Skip to main content

DPDK is the Data Plane Development Kit that consists of libraries to accelerate packet processing workloads running on a wide variety of CPU architectures.

In a world where the network is fundamental to the way people communicate, performance, throughput, and latency are mission critical for applications like wireless core and access, wireline infrastructure, routers, load balancers, firewalls, video streaming, VoIP, and more.

DPDK (Data Plane Development Kit) the open source project hosted by the Linux Foundation offers an extensive framework designed to enhance packet processing speeds across various CPU architectures, including Intel x86, ARM, and PowerPC. Its primary advantage lies in facilitating the rapid development of high-speed data packet networking applications.

By running DPDK, new users can significantly accelerate their network applications’ performance due to its efficient run-to-completion model and optimized libraries that ensure all necessary resources are allocated upfront.

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.

EAL (Environment Abstraction Layer): Provides a basic interface between DPDK applications and the underlying hardware, abstracting away specifics of the operating system and hardware differences.

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

Poll Mode Drivers (PMDs): These are optimized drivers for various network interfaces, bypassing the kernel’s network stack to reduce latency and increase throughput.

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

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

Crypto and Security: Provides libraries and drivers to support cryptographic operations and secure communication.

Eventdev and Timers: 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.

  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.
  8. librte_kni – Kernel Network Interface: Facilitates communication between DPDK applications and the Linux kernel networking stack, primarily used for debugging or interfacing with existing Linux network services.

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 expansion of the project. Since then, the community has been continuously growing in terms of the number of contributors, patches, and contributing organizations, with 5 major releases completed including contributions from over 160 individuals from 25 different organizations. 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.

Logos

The DPDK logos are provided by Intel under a Creative Commons Attribution-NoDerivatives 4.0 License (CC BY-ND 4.0).

Hosting

The main server is hosted by

CDN provided by