Neha Patil (Editor)

Data Plane Development Kit

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
6WIND, Intel

Written in
  
C

Type
  
Packet Processing

Development status
  
Active

Operating system
  
FreeBSD, Linux

Data Plane Development Kit

Stable release
  
17.02 / 14 February 2017 (2017-02-14)

The Data Plane Development Kit (DPDK) is a set of data plane libraries and network interface controller drivers for fast packet processing. The DPDK provides a programming framework for Intel x86 processors and enables faster development of high speed data packet networking applications. It scales from Intel Atom processors to Intel Xeon processors. Support for other processor architectures such as IBM POWER8 EZchip TILE-Gx and ARM have been added. It is provided and supported under the open source BSD license.

Contents

Overview

The DPDK framework creates a set of libraries for specific hardware/software environments through the creation of an Environment Abstraction Layer (EAL). The EAL hides the environmental specific and provides a standard programming interface to libraries, available hardware accelerators and other hardware and operating system (Linux, FreeBSD) elements. Once the EAL is created for a specific environment, developers link to the library to create their applications. For instance, EAL provides the frameworks to support Linux, FreeBSD, Intel IA 32- or 64-bit, IBM Power8, EZchip TILE-Gx and ARM.

The EAL also provides additional services including time references, PCIe bus access, trace and debug functions and alarm operations.

The DPDK implements a low overhead run-to-completion model for fast data plane performance and accesses devices via polling to eliminate the performance overhead of interrupt processing.

The DPDK also includes software examples that highlight best practices for software architecture, tips for data structure design and storage, application profiling and performance tuning utilities and tips that address common network performance deficits.

Libraries

The DPDK includes data plane libraries and optimized NIC drivers for the following:

  • A queue manager implements lockless queues
  • A buffer manager pre-allocates fixed size buffers
  • A memory manager allocates pools of objects in memory and uses a ring to store free objects; ensures that objects are spread equally on all DRAM channels
  • Poll mode drivers (PMD) are designed to work without asynchronous notifications, reducing overhead
  • A packet framework – set of libraries that are helpers to develop packet processing
  • All libraries are stored in the dpdk/lib/librte_* directories

    Plugins

    The EAL allows loading some plugins using the -d file.so option without recompiling any applications that use the DPDK libraries. The following plugins are available:

  • librte_pmd_virtio.so – provides PMD Ethernet layer supporting Virtio paravirtualized NIC
  • librte_pmd_vmxnet3.so – provides PMD Ethernet layer supporting Vmxnet3 paravitualized NIC
  • librte_pmd_memnic_copy.so – provides a Virtual PMD Ethernet layer through shared memory based on 2 memory copies of packets
  • librte_pmd_mlx4.so – provides PMD Ethernet layer for Mellanox ConnectX-3 40G NIC
  • librte_crypto_nitrox.so – provides cryptography layer for Cavium Nitrox PCI boards
  • librte_crypto_quickassist.so – provides cryptography layer for Intel Colleto Creek PCI boards.
  • Environment

    The DPDK was originally designed to run using a bare-metal mode which is currently deprecated. Actually, DPDK's EAL provides support for Linux or FreeBSD userland application.

    EAL can be extended in order to support any processors.

    Ecosystem

    Beside Intel which is a contributor to the DPDK, several other vendors also support the DPDK within their products and some offer additional training, support and professional services. The list of vendors who have announced DPDK support includes:

  • 6WIND
  • ALTEN Calsoft Labs [1]
  • Advantech
  • Brocade
  • Big Switch Networks
  • Radisys
  • Tieto
  • Wind River
  • Lanner
  • Opensource

    The pfSense project published a road map on 25 February 2015, in which developer Jim Thompson announced the rewriting of the pfSense core—including pf, network packet forwarding and shaping, link bonding, IPsec—using Intel's DPDK: "We have a goal of being able to forward, with packet filtering at rates of at least 14.88Mpps. This is 'line rate' on a 10Gbps interface. There is simply no way to use today's FreeBSD (or linux) in-kernel stacks for this type of load."

    OVS has a limited set of feature running userland that can be leveraged to bypass the Linux kernel OVS processing. This use case of OVS with DPDK userland is usually named OVS-DPDK. It is mostly deployed with Openstack Neutron but it assumes that many features and SDN capabilities of Openstack are disabled. For instance, when OVS-DPDK is used, Neutron provides a lower lever of security than when OVS kernel is used (no stateful firewalling, less security group).

    The FD.IO VPP platform is an extensible framework that provides out-of-the-box production quality switch/router functionality. It is the open source version of Cisco's Vector Packet Processing (VPP) technology: a high performance, packet-processing stack that can run on commodity CPUs, and can leverage the Poll Mode Drivers for both NICs and cryptographic acceleration hardware and libraries.

    TRex is an open source, low cost, stateful and stateless traffic generator fueled by DPDK. It generates L4-7 traffic based on pre-processing and smart replay of real traffic templates. TRex amplifies both client and server side traffic and can scale to 200Gb/sec with one UCS using Intel XL710. TRex also supports multiple streams, ability to change any packet field and provides per stream statistics, latency and jitter.

    It has been estimated that more than 20 opensource projects are now using DPDK in various fashions.

    Platforms and solutions

    Since DPDK was launched, very quickly many platforms have integrated this userland library for some IOs. The platforms are:

  • 6WIND 6WINDGate, Virtual Accelerator and their Turbo Series which provide the highest performance and the widest set of features leveraging the DPDK.
  • OVS-DPDK from OVS which provides a subset of OVS support.
  • References

    Data Plane Development Kit Wikipedia