Intel® Ethernet Controller E810 Data Plane Development Kit (DPDK) 22.11/23.03

Configuration Guide

ID 764257
Date 06/16/2023
Version 22.11
Document Table of Contents

DPDK Overview

DPDK is a set of libraries and drivers that perform fast packet processing. This enables a user to create optimized performance with packet processing applications.

DPDK bypasses the OS network stack, avoiding the associated latency, and maps hardware registers to user space. A DPDK-enabled application processes packets faster by allowing NICs to DMA packets directly into an application's address space and having the application poll for packets, thereby avoiding the overhead of interrupts from the NIC.

Packet Processing Kernel Space vs. User Space

Key components of DPDK include the following:

  • Environment Abstraction Layer (EAL) — Provides a generic interface that hides the environment specifics from the application and libraries.
  • Ethernet Poll Mode Driver (PMD) — Designed to work without asynchronous, interrupt-based signaling mechanisms.
  • Memory management — Allocates pools of objects in memory created in huge page memory space, uses a ring to store free objects, and spreads objects evenly across DRAM channels to optimize access speed.
  • Buffer management — Pre-allocates fixed-size buffers that are stored in memory pools, significantly reducing the amount of time spent by the operating system allocating and deallocating buffers.
  • Queue management — Replaces spinlocks with safe lockless queues, allowing different software components to process packets while avoiding unnecessary wait times.
  • Flow classification — Improves throughput by implementing Intel® Streaming SIMD Extensions (Intel® SSE) to produce a hash based on tuple information, enabling packets to be placed into flows quickly for processing.
  • Packet Forwarding Algorithm Support — Includes Hash (librte_​hash) and Longest Prefix Match (LPM, librte_​lpm) libraries to support the corresponding packet forwarding algorithms.

DPDK is composed of several directories:

  • lib - Source code of DPDK libraries
  • drivers - Source code of DPDK poll-mode drivers
  • app - Source code of DPDK applications (automatic tests)
  • examples - Source code of DPDK application examples
  • config, buildtools, mk - Framework-related makefiles, scripts, and configuration

Refer to dpdk.org for more details.