Data Plane Development Kit
Getting Started Guide for Linux
1. Introduction
1.1. Documentation Roadmap
2. System Requirements
2.1. BIOS Setting Prerequisite on x86
2.2. Compilation of the DPDK
2.3. Running DPDK Applications
2.3.1. System Software
2.3.2. Use of Hugepages in the Linux Environment
2.3.3. Xen Domain0 Support in the Linux Environment
3. Compiling the DPDK Target from Source
3.1. Install the DPDK and Browse Sources
3.2. Installation of DPDK Target Environments
3.3. Browsing the Installed DPDK Environment Target
3.4. Loading Modules to Enable Userspace IO for DPDK
3.5. Loading VFIO Module
3.6. Binding and Unbinding Network Ports to/from the Kernel Modules
4. Compiling and Running Sample Applications
4.1. Compiling a Sample Application
4.2. Running a Sample Application
4.2.1. Logical Core Use by Applications
4.2.2. Hugepage Memory Use by Applications
4.3. Additional Sample Applications
4.4. Additional Test Applications
5. Enabling Additional Functionality
5.1. High Precision Event Timer HPET) Functionality
5.1.1. BIOS Support
5.1.2. Linux Kernel Support
5.1.3. Enabling HPET in the DPDK
5.2. Running DPDK Applications Without Root Privileges
5.3. Power Management and Power Saving Functionality
5.4. Using Linux Core Isolation to Reduce Context Switches
5.5. Loading the DPDK KNI Kernel Module
5.6. Using Linux IOMMU Pass-Through to Run DPDK with Intel® VT-d
5.7. High Performance of Small Packets on 40G NIC
5.7.1. Use 16 Bytes RX Descriptor Size
5.7.2. High Performance and per Packet Latency Tradeoff
6. Quick Start Setup Script
6.1. Script Organization
6.2. Use Cases
6.3. Applications
7. How to get best performance with NICs on Intel platforms
7.1. Hardware and Memory Requirements
7.1.1. Network Interface Card Requirements
7.1.2. BIOS Settings
7.1.3. Linux boot command line
7.2. Configurations before running DPDK
7.3. Example of getting best performance for an Intel NIC
Getting Started Guide for FreeBSD
1. Introduction
1.1. Documentation Roadmap
2. Installing DPDK from the Ports Collection
2.1. Installing the DPDK FreeBSD Port
2.2. Compiling and Running the Example Applications
3. Compiling the DPDK Target from Source
3.1. System Requirements
3.2. Install the DPDK and Browse Sources
3.3. Installation of the DPDK Target Environments
3.4. Browsing the Installed DPDK Environment Target
3.5. Loading the DPDK contigmem Module
3.6. Loading the DPDK nic_uio Module
3.6.1. Binding Network Ports to the nic_uio Module
3.6.2. Binding Network Ports Back to their Original Kernel Driver
4. Compiling and Running Sample Applications
4.1. Compiling a Sample Application
4.2. Running a Sample Application
4.3. Running DPDK Applications Without Root Privileges
Xen Guide
1. DPDK Xen Based Packet-Switching Solution
1.1. Introduction
1.2. Device Creation
1.2.1. Poll Mode Driver Front End
1.2.2. Switching Back End
1.2.3. Packet Reception
1.2.4. Packet Transmission
1.3. Running the Application
1.3.1. Validated Environment
1.3.2. Xen Host Prerequisites
1.3.3. Building and Running the Switching Backend
1.3.4. Xen PMD Frontend Prerequisites
1.3.5. Building and Running the Front End
1.3.6. Usage Examples: Injecting a Packet Stream Using a Packet Generator
Programmer’s Guide
1. Introduction
1.1. Documentation Roadmap
1.2. Related Publications
2. Overview
2.1. Development Environment
2.2. Environment Abstraction Layer
2.3. Core Components
2.3.1. Ring Manager (librte_ring)
2.3.2. Memory Pool Manager (librte_mempool)
2.3.3. Network Packet Buffer Management (librte_mbuf)
2.3.4. Timer Manager (librte_timer)
2.4. Ethernet* Poll Mode Driver Architecture
2.5. Packet Forwarding Algorithm Support
2.6. librte_net
3. Environment Abstraction Layer
3.1. EAL in a Linux-userland Execution Environment
3.1.1. Initialization and Core Launching
3.1.2. Multi-process Support
3.1.3. Memory Mapping Discovery and Memory Reservation
3.1.4. Xen Dom0 support without hugetbls
3.1.5. PCI Access
3.1.6. Per-lcore and Shared Variables
3.1.7. Logs
3.1.8. CPU Feature Identification
3.1.9. User Space Interrupt Event
3.1.10. Blacklisting
3.1.11. Misc Functions
3.2. Memory Segments and Memory Zones (memzone)
3.3. Multiple pthread
3.3.1. EAL pthread and lcore Affinity
3.3.2. non-EAL pthread support
3.3.3. Public Thread API
3.3.4. Known Issues
3.3.5. cgroup control
3.4. Malloc
3.4.1. Cookies
3.4.2. Alignment and NUMA Constraints
3.4.3. Use Cases
3.4.4. Internal Implementation
4. Ring Library
4.1. References for Ring Implementation in FreeBSD*
4.2. Lockless Ring Buffer in Linux*
4.3. Additional Features
4.3.1. Name
4.3.2. Water Marking
4.3.3. Debug
4.4. Use Cases
4.5. Anatomy of a Ring Buffer
4.5.1. Single Producer Enqueue
4.5.2. Single Consumer Dequeue
4.5.3. Multiple Producers Enqueue
4.5.4. Modulo 32-bit Indexes
4.6. References
5. Mempool Library
5.1. Cookies
5.2. Stats
5.3. Memory Alignment Constraints
5.4. Local Cache
5.5. Mempool Handlers
5.6. Use Cases
6. Mbuf Library
6.1. Design of Packet Buffers
6.2. Buffers Stored in Memory Pools
6.3. Constructors
6.4. Allocating and Freeing mbufs
6.5. Manipulating mbufs
6.6. Meta Information
6.7. Direct and Indirect Buffers
6.8. Debug
6.9. Use Cases
7. Poll Mode Driver
7.1. Requirements and Assumptions
7.2. Design Principles
7.3. Logical Cores, Memory and NIC Queues Relationships
7.4. Device Identification and Configuration
7.4.1. Device Identification
7.4.2. Device Configuration
7.4.3. On-the-Fly Configuration
7.4.4. Configuration of Transmit and Receive Queues
7.4.5. Hardware Offload
7.5. Poll Mode Driver API
7.5.1. Generalities
7.5.2. Generic Packet Representation
7.5.3. Ethernet Device API
7.5.4. Extended Statistics API
8. Cryptography Device Library
8.1. Design Principles
8.2. Device Management
8.2.1. Device Creation
8.2.2. Device Identification
8.2.3. Device Configuration
8.2.4. Configuration of Queue Pairs
8.2.5. Logical Cores, Memory and Queues Pair Relationships
8.3. Device Features and Capabilities
8.3.1. Device Features
8.3.2. Device Operation Capabilities
8.3.3. Capabilities Discovery
8.4. Operation Processing
8.4.1. Enqueue / Dequeue Burst APIs
8.4.2. Operation Representation
8.4.3. Operation Management and Allocation
8.5. Symmetric Cryptography Support
8.5.1. Session and Session Management
8.5.2. Transforms and Transform Chaining
8.5.3. Symmetric Operations
8.6. Asymmetric Cryptography
8.6.1. Crypto Device API
9. IVSHMEM Library
9.1. IVHSHMEM Library API Overview
9.2. IVSHMEM Environment Configuration
9.3. Best Practices for Writing IVSHMEM Applications
9.4. Best Practices for Running IVSHMEM Applications
10. Link Bonding Poll Mode Driver Library
10.1. Link Bonding Modes Overview
10.2. Implementation Details
10.2.1. Link Status Change Interrupts / Polling
10.2.2. Requirements / Limitations
10.2.3. Configuration
10.3. Using Link Bonding Devices
10.3.1. Using the Poll Mode Driver from an Application
10.3.2. Using Link Bonding Devices from the EAL Command Line
11. Timer Library
11.1. Implementation Details
11.2. Use Cases
11.3. References
12. Hash Library
12.1. Hash API Overview
12.2. Multi-process support
12.3. Implementation Details
12.4. Entry distribution in hash table
12.5. Use Case: Flow Classification
12.6. References
13. LPM Library
13.1. LPM API Overview
13.2. Implementation Details
13.2.1. Addition
13.2.2. Lookup
13.2.3. Limitations in the Number of Rules
13.2.4. Use Case: IPv4 Forwarding
13.2.5. References
14. LPM6 Library
14.1. LPM6 API Overview
14.1.1. Implementation Details
14.1.2. Addition
14.1.3. Lookup
14.1.4. Limitations in the Number of Rules
14.2. Use Case: IPv6 Forwarding
15. Packet Distributor Library
15.1. Distributor Core Operation
15.2. Worker Operation
16. Reorder Library
16.1. Operation
16.2. Implementation Details
16.3. Use Case: Packet Distributor
17. IP Fragmentation and Reassembly Library
17.1. Packet fragmentation
17.2. Packet reassembly
17.2.1. IP Fragment Table
17.2.2. Packet Reassembly
17.2.3. Debug logging and Statistics Collection
18. The librte_pdump Library
18.1. Operation
18.2. Implementation Details
18.3. Use Case: Packet Capturing
19. Multi-process Support
19.1. Memory Sharing
19.2. Deployment Models
19.2.1. Symmetric/Peer Processes
19.2.2. Asymmetric/Non-Peer Processes
19.2.3. Running Multiple Independent DPDK Applications
19.2.4. Running Multiple Independent Groups of DPDK Applications
19.3. Multi-process Limitations
20. Kernel NIC Interface
20.1. The DPDK KNI Kernel Module
20.2. KNI Creation and Deletion
20.3. DPDK mbuf Flow
20.4. Use Case: Ingress
20.5. Use Case: Egress
20.6. Ethtool
20.7. Link state and MTU change
20.8. KNI Working as a Kernel vHost Backend
20.8.1. Overview
20.8.2. Packet Flow
20.8.3. Sample Usage
20.8.4. Compatibility Configure Option
21. Thread Safety of DPDK Functions
21.1. Fast-Path APIs
21.2. Performance Insensitive API
21.3. Library Initialization
21.4. Interrupt Thread
22. Quality of Service (QoS) Framework
22.1. Packet Pipeline with QoS Support
22.2. Hierarchical Scheduler
22.2.1. Overview
22.2.2. Scheduling Hierarchy
22.2.3. Application Programming Interface (API)
22.2.4. Implementation
22.2.5. Worst Case Scenarios for Performance
22.3. Dropper
22.3.1. Configuration
22.3.2. Enqueue Operation
22.3.3. Queue Empty Operation
22.3.4. Source Files Location
22.3.5. Integration with the DPDK QoS Scheduler
22.3.6. Integration with the DPDK QoS Scheduler Sample Application
22.3.7. Application Programming Interface (API)
22.4. Traffic Metering
22.4.1. Functional Overview
22.4.2. Implementation Overview
23. Power Management
23.1. CPU Frequency Scaling
23.2. Core-load Throttling through C-States
23.3. API Overview of the Power Library
23.4. User Cases
23.5. References
24. Packet Classification and Access Control
24.1. Overview
24.1.1. Rule definition
24.1.2. RT memory size limit
24.1.3. Classification methods
24.2. Application Programming Interface (API) Usage
24.2.1. Classify with Multiple Categories
25. Packet Framework
25.1. Design Objectives
25.2. Overview
25.3. Port Library Design
25.3.1. Port Types
25.3.2. Port Interface
25.4. Table Library Design
25.4.1. Table Types
25.4.2. Table Interface
25.4.3. Hash Table Design
25.5. Pipeline Library Design
25.5.1. Connectivity of Ports and Tables
25.5.2. Port Actions
25.5.3. Table Actions
25.6. Multicore Scaling
25.6.1. Shared Data Structures
25.7. Interfacing with Accelerators
26. Vhost Library
26.1. Vhost API Overview
26.2. Vhost Implementations
26.2.1. Vhost-cuse implementation
26.2.2. Vhost-user implementation
26.3. Vhost supported vSwitch reference
27. Port Hotplug Framework
27.1. Overview
27.2. Port Hotplug API overview
27.3. Reference
27.4. Limitations
28. Source Organization
28.1. Makefiles and Config
28.2. Libraries
28.3. Drivers
28.4. Applications
29. Development Kit Build System
29.1. Building the Development Kit Binary
29.1.1. Build Directory Concept
29.2. Building External Applications
29.3. Makefile Description
29.3.1. General Rules For DPDK Makefiles
29.3.2. Makefile Types
29.3.3. Internally Generated Build Tools
29.3.4. Useful Variables Provided by the Build System
29.3.5. Variables that Can be Set/Overridden in a Makefile Only
29.3.6. Variables that can be Set/Overridden by the User on the Command Line Only
29.3.7. Variables that Can be Set/Overridden by the User in a Makefile or Command Line
30. Development Kit Root Makefile Help
30.1. Configuration Targets
30.2. Build Targets
30.3. Install Targets
30.4. Test Targets
30.5. Documentation Targets
30.6. Deps Targets
30.7. Misc Targets
30.8. Other Useful Command-line Variables
30.9. Make in a Build Directory
30.10. Compiling for Debug
31. Extending the DPDK
31.1. Example: Adding a New Library libfoo
31.1.1. Example: Using libfoo in the Test Application
32. Building Your Own Application
32.1. Compiling a Sample Application in the Development Kit Directory
32.2. Build Your Own Application Outside the Development Kit
32.3. Customizing Makefiles
32.3.1. Application Makefile
32.3.2. Library Makefile
32.3.3. Customize Makefile Actions
33. External Application/Library Makefile help
33.1. Prerequisites
33.2. Build Targets
33.3. Help Targets
33.4. Other Useful Command-line Variables
33.5. Make from Another Directory
34. Performance Optimization Guidelines
34.1. Introduction
35. Writing Efficient Code
35.1. Memory
35.1.1. Memory Copy: Do not Use libc in the Data Plane
35.1.2. Memory Allocation
35.1.3. Concurrent Access to the Same Memory Area
35.1.4. NUMA
35.1.5. Distribution Across Memory Channels
35.2. Communication Between lcores
35.3. PMD Driver
35.3.1. Lower Packet Latency
35.4. Locks and Atomic Operations
35.5. Coding Considerations
35.5.1. Inline Functions
35.5.2. Branch Prediction
35.6. Setting the Target CPU Type
36. Profile Your Application
37. Glossary
Network Interface Controller Drivers
1. Overview of Networking Drivers
2. BNX2X Poll Mode Driver
2.1. Supported Features
2.2. Non-supported Features
2.3. Co-existence considerations
2.4. Supported QLogic NICs
2.5. Prerequisites
2.6. Pre-Installation Configuration
2.6.1. Config File Options
2.6.2. Driver Compilation
2.7. Linux
2.7.1. Linux Installation
2.7.2. Sample Application Notes
2.7.3. SR-IOV: Prerequisites and sample Application Notes
3. bnxt poll mode driver library
3.1. Limitations
4. CXGBE Poll Mode Driver
4.1. Features
4.2. Limitations
4.3. Supported Chelsio T5 NICs
4.4. Prerequisites
4.5. Pre-Installation Configuration
4.5.1. Config File Options
4.5.2. Driver Compilation
4.6. Linux
4.6.1. Linux Installation
4.6.2. Running testpmd
4.7. FreeBSD
4.7.1. FreeBSD Installation
4.7.2. Running testpmd
4.8. Sample Application Notes
4.8.1. Enable/Disable Flow Control
4.8.2. Jumbo Mode
5. Driver for VM Emulated Devices
5.1. Validated Hypervisors
5.2. Recommended Guest Operating System in Virtual Machine
5.3. Setting Up a KVM Virtual Machine
5.4. Known Limitations of Emulated Devices
6. ENA Poll Mode Driver
6.1. Overview
6.2. Management Interface
6.3. Data Path Interface
6.4. Configuration information
6.5. Building DPDK
6.6. Supported ENA adapters
6.7. Supported Operating Systems
6.8. Supported features
6.9. Unsupported features
6.10. Prerequisites
6.11. Usage example
7. ENIC Poll Mode Driver
7.1. How to obtain ENIC PMD integrated DPDK
7.2. Configuration information
7.3. Limitations
7.4. How to build the suite?
7.5. Supported Cisco VIC adapters
7.6. Supported Operating Systems
7.7. Supported features
7.8. Known bugs and Unsupported features in this release
7.9. Prerequisites
7.10. Additional Reference
7.11. Contact Information
8. FM10K Poll Mode Driver
8.1. FTAG Based Forwarding of FM10K
8.2. Vector PMD for FM10K
8.2.1. RX Constraints
8.2.2. TX Constraint
8.3. Limitations
8.3.1. Switch manager
8.3.2. CRC striping
8.3.3. Maximum packet length
8.3.4. Statistic Polling Frequency
8.3.5. Interrupt mode
9. I40E Poll Mode Driver
9.1. Features
9.2. Prerequisites
9.3. Pre-Installation Configuration
9.3.1. Config File Options
9.3.2. Driver Compilation
9.4. Linux
9.4.1. Running testpmd
9.4.2. SR-IOV: Prerequisites and sample Application Notes
9.5. Sample Application Notes
9.5.1. Vlan filter
9.5.2. Flow Director
9.5.3. Floating VEB
10. IXGBE Driver
10.1. Vector PMD for IXGBE
10.1.1. RX Constraints
10.1.2. TX Constraint
10.1.3. Sample Application Notes
10.2. Malicious Driver Detection not Supported
10.3. Statistics
11. I40E/IXGBE/IGB Virtual Function Driver
11.1. SR-IOV Mode Utilization in a DPDK Environment
11.1.1. Physical and Virtual Function Infrastructure
11.1.2. Validated Hypervisors
11.1.3. Expected Guest Operating System in Virtual Machine
11.2. Setting Up a KVM Virtual Machine Monitor
11.3. DPDK SR-IOV PMD PF/VF Driver Usage Model
11.3.1. Fast Host-based Packet Processing
11.4. SR-IOV (PF/VF) Approach for Inter-VM Communication
12. MLX4 poll mode driver library
12.1. Implementation details
12.2. Features
12.3. Limitations
12.4. Configuration
12.4.1. Compilation options
12.4.2. Environment variables
12.4.3. Run-time configuration
12.4.4. Kernel module parameters
12.5. Prerequisites
12.5.1. Getting Mellanox OFED
12.6. Usage example
13. MLX5 poll mode driver
13.1. Implementation details
13.2. Features
13.3. Limitations
13.4. Configuration
13.4.1. Compilation options
13.4.2. Environment variables
13.4.3. Run-time configuration
13.5. Prerequisites
13.5.1. Getting Mellanox OFED
13.6. Notes for testpmd
13.7. Usage example
14. NFP poll mode driver library
14.1. Dependencies
14.2. Building the software
14.3. System configuration
15. QEDE Poll Mode Driver
15.1. Supported Features
15.2. Non-supported Features
15.3. Supported QLogic Adapters
15.4. Prerequisites
15.4.1. Performance note
15.4.2. Config File Options
15.4.3. Driver Compilation
15.4.4. Sample Application Notes
15.4.5. SR-IOV: Prerequisites and Sample Application Notes
16. SZEDATA2 poll mode driver library
16.1. Prerequisites
16.2. Configuration
16.3. Using the SZEDATA2 PMD
16.4. Example of usage
17. ThunderX NICVF Poll Mode Driver
17.1. Features
17.2. Supported ThunderX SoCs
17.3. Prerequisites
17.4. Pre-Installation Configuration
17.4.1. Config File Options
17.4.2. Driver Compilation
17.5. Linux
17.5.1. Running testpmd
17.5.2. SR-IOV: Prerequisites and sample Application Notes
17.6. Limitations
17.6.1. CRC striping
17.6.2. Maximum packet length
17.6.3. Maximum packet segments
17.6.4. Limited VFs
18. Poll Mode Driver for Emulated Virtio NIC
18.1. Virtio Implementation in DPDK
18.2. Features and Limitations of virtio PMD
18.3. Prerequisites
18.4. Virtio with kni vhost Back End
18.5. Virtio with qemu virtio Back End
18.6. Virtio PMD Rx/Tx Callbacks
19. Poll Mode Driver that wraps vhost library
19.1. Vhost Implementation in DPDK
19.2. Features and Limitations of vhost PMD
19.3. Vhost PMD arguments
19.4. Vhost PMD event handling
19.5. Vhost PMD with testpmd application
20. Poll Mode Driver for Paravirtual VMXNET3 NIC
20.1. VMXNET3 Implementation in the DPDK
20.2. Features and Limitations of VMXNET3 PMD
20.3. Prerequisites
20.4. VMXNET3 with a Native NIC Connected to a vSwitch
20.5. VMXNET3 Chaining VMs Connected to a vSwitch
21. Libpcap and Ring Based Poll Mode Drivers
21.1. Using the Drivers from the EAL Command Line
21.1.1. Libpcap-based PMD
21.1.2. Rings-based PMD
21.1.3. Using the Poll Mode Driver from an Application
Crypto Device Drivers
1. Crypto Device Supported Functionality Matrices
2. AESN-NI Multi Buffer Crytpo Poll Mode Driver
2.1. Features
2.2. Limitations
2.3. Installation
2.4. Initialization
3. AES-NI GCM Crypto Poll Mode Driver
3.1. Features
3.2. Initialization
3.3. Limitations
4. KASUMI Crypto Poll Mode Driver
4.1. Features
4.2. Limitations
4.3. Installation
4.4. Initialization
5. Null Crypto Poll Mode Driver
5.1. Features
5.2. Limitations
5.3. Installation
5.4. Initialization
6. SNOW 3G Crypto Poll Mode Driver
6.1. Features
6.2. Limitations
6.3. Installation
6.4. Initialization
7. Quick Assist Crypto Poll Mode Driver
7.1. Features
7.2. Limitations
7.3. Installation
7.4. Installation using 01.org QAT driver
7.5. Installation using kernel.org driver
7.6. Binding the available VFs to the DPDK UIO driver
Sample Applications User Guide
1. Introduction
1.1. Documentation Roadmap
2. Command Line Sample Application
2.1. Overview
2.2. Compiling the Application
2.3. Running the Application
2.4. Explanation
2.4.1. EAL Initialization and cmdline Start
2.4.2. Defining a cmdline Context
3. Ethtool Sample Application
3.1. Compiling the Application
3.2. Running the Application
3.3. Using the application
3.4. Explanation
3.4.1. Packet Reflector
3.4.2. Ethtool Shell
3.5. Ethtool interface
4. Exception Path Sample Application
4.1. Overview
4.2. Compiling the Application
4.3. Running the Application
4.3.1. Getting Statistics
4.4. Explanation
4.4.1. Initialization
4.4.2. Packet Forwarding
4.4.3. Managing TAP Interfaces and Bridges
5. Hello World Sample Application
5.1. Compiling the Application
5.2. Running the Application
5.3. Explanation
5.3.1. EAL Initialization
5.3.2. Starting Application Unit Lcores
6. Basic Forwarding Sample Application
6.1. Compiling the Application
6.2. Running the Application
6.3. Explanation
6.3.1. The Main Function
6.3.2. The Port Initialization Function
6.3.3. The Lcores Main
7. RX/TX Callbacks Sample Application
7.1. Compiling the Application
7.2. Running the Application
7.3. Explanation
7.3.1. The Main Function
7.3.2. The Port Initialization Function
7.3.3. The add_timestamps() Callback
7.3.4. The calc_latency() Callback
8. IP Fragmentation Sample Application
8.1. Overview
8.2. Building the Application
8.3. Running the Application
9. IPv4 Multicast Sample Application
9.1. Overview
9.2. Building the Application
9.3. Running the Application
9.4. Explanation
9.4.1. Memory Pool Initialization
9.4.2. Hash Initialization
9.4.3. Forwarding
9.4.4. Buffer Cloning
10. IP Reassembly Sample Application
10.1. Overview
10.2. The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application
10.3. Running the Application
10.4. Explanation
10.4.1. IPv4 Fragment Table Initialization
10.4.2. Mempools Initialization
10.4.3. Packet Reassembly and Forwarding
10.4.4. Debug logging and Statistics Collection
11. Kernel NIC Interface Sample Application
11.1. Overview
11.2. Compiling the Application
11.3. Loading the Kernel Module
11.4. Running the Application
11.5. KNI Operations
11.6. Explanation
11.6.1. Initialization
11.6.2. Packet Forwarding
11.6.3. Callbacks for Kernel Requests
12. Keep Alive Sample Application
12.1. Overview
12.2. Compiling the Application
12.3. Running the Application
12.4. Explanation
13. L2 Forwarding with Crypto Sample Application
13.1. Overview
13.2. Compiling the Application
13.3. Running the Application
13.4. Explanation
13.4.1. Crypto operation specification
13.4.2. Crypto device initialization
13.4.3. Session creation
13.4.4. Crypto operation creation
13.4.5. Crypto operation enqueuing/dequeuing
14. L2 Forwarding Sample Application (in Real and Virtualized Environments) with core load statistics.
14.1. Overview
14.1.1. Virtual Function Setup Instructions
14.2. Compiling the Application
14.3. Running the Application
14.4. Explanation
14.4.1. Command Line Arguments
14.4.2. Mbuf Pool Initialization
14.4.3. Driver Initialization
14.4.4. RX Queue Initialization
14.4.5. TX Queue Initialization
14.4.6. Jobs statistics initialization
14.4.7. Main loop
14.4.8. Receive, Process and Transmit Packets
15. L2 Forwarding Sample Application (in Real and Virtualized Environments)
15.1. Overview
15.1.1. Virtual Function Setup Instructions
15.2. Compiling the Application
15.3. Running the Application
15.4. Explanation
15.4.1. Command Line Arguments
15.4.2. Mbuf Pool Initialization
15.4.3. Driver Initialization
15.4.4. RX Queue Initialization
15.4.5. TX Queue Initialization
15.4.6. Receive, Process and Transmit Packets
16. L2 Forwarding Sample Application with Cache Allocation Technology (CAT)
16.1. Compiling the Application
16.2. Running the Application
16.3. Explanation
16.3.1. The Main Function
17. L3 Forwarding Sample Application
17.1. Overview
17.2. Compiling the Application
17.3. Running the Application
17.4. Explanation
17.4.1. Hash Initialization
17.4.2. LPM Initialization
17.4.3. Packet Forwarding for Hash-based Lookups
17.4.4. Packet Forwarding for LPM-based Lookups
18. L3 Forwarding with Power Management Sample Application
18.1. Introduction
18.2. Overview
18.3. Compiling the Application
18.4. Running the Application
18.5. Explanation
18.5.1. Power Library Initialization
18.5.2. Monitoring Loads of Rx Queues
18.5.3. P-State Heuristic Algorithm
18.5.4. C-State Heuristic Algorithm
19. L3 Forwarding with Access Control Sample Application
19.1. Overview
19.1.1. Tuple Packet Syntax
19.1.2. Access Rule Syntax
19.1.3. ACL and Route Rules
19.1.4. Rules File Example
19.1.5. Application Phases
19.2. Compiling the Application
19.3. Running the Application
19.4. Explanation
19.4.1. Parse Rules from File
19.4.2. Setting Up the ACL Context
20. L3 Forwarding in a Virtualization Environment Sample Application
20.1. Overview
20.2. Compiling the Application
20.3. Running the Application
20.4. Explanation
21. Link Status Interrupt Sample Application
21.1. Overview
21.2. Compiling the Application
21.3. Running the Application
21.4. Explanation
21.4.1. Command Line Arguments
21.4.2. Mbuf Pool Initialization
21.4.3. Driver Initialization
21.4.4. Interrupt Callback Registration
21.4.5. RX Queue Initialization
21.4.6. TX Queue Initialization
21.4.7. Receive, Process and Transmit Packets
22. Load Balancer Sample Application
22.1. Overview
22.1.1. I/O RX Logical Cores
22.1.2. I/O TX Logical Cores
22.1.3. Worker Logical Cores
22.2. Compiling the Application
22.3. Running the Application
22.4. Explanation
22.4.1. Application Configuration
22.4.2. NUMA Support
23. Multi-process Sample Application
23.1. Example Applications
23.1.1. Building the Sample Applications
23.1.2. Basic Multi-process Example
23.1.3. Symmetric Multi-process Example
23.1.4. Client-Server Multi-process Example
23.1.5. Master-slave Multi-process Example
24. QoS Metering Sample Application
24.1. Overview
24.2. Compiling the Application
24.3. Running the Application
24.4. Explanation
25. QoS Scheduler Sample Application
25.1. Overview
25.2. Compiling the Application
25.3. Running the Application
25.3.1. Interactive mode
25.3.2. Example
25.4. Explanation
26. Intel® QuickAssist Technology Sample Application
26.1. Overview
26.1.1. Setup
26.2. Building the Application
26.3. Running the Application
26.3.1. Intel® QuickAssist Technology Configuration Files
26.3.2. Traffic Generator Setup and Application Startup
27. Quota and Watermark Sample Application
27.1. Overview
27.2. Compiling the Application
27.3. Running the Application
27.3.1. Running the Core Application
27.3.2. Running the Control Application
27.4. Code Overview
27.4.1. Core Application - qw
27.4.2. Control Application - qwctl
28. Timer Sample Application
28.1. Compiling the Application
28.2. Running the Application
28.3. Explanation
28.3.1. Initialization and Main Loop
28.3.2. Managing Timers
29. Packet Ordering Application
29.1. Overview
29.2. Compiling the Application
29.3. Running the Application
29.3.1. Application Command Line
30. VMDQ and DCB Forwarding Sample Application
30.1. Overview
30.2. Compiling the Application
30.3. Running the Application
30.4. Explanation
30.4.1. Initialization
30.4.2. Statistics Display
31. Vhost Sample Application
31.1. Background
31.2. Sample Code Overview
31.3. Supported Distributions
31.4. Prerequisites
31.4.1. Installing Packages on the Host(vhost cuse required)
31.4.2. QEMU simulator
31.4.3. Setting up the Execution Environment
31.4.4. Setting up the Guest Execution Environment
31.5. Compiling the Sample Code
31.6. Running the Sample Code
31.6.1. Parameters
31.7. Running the Virtual Machine (QEMU)
31.7.1. Redirecting QEMU to vhost-net Sample Code(vhost cuse)
31.7.2. Mapping the Virtual Machine’s Memory
31.7.3. QEMU Wrapper Script
31.7.4. Libvirt Integration
31.7.5. Common Issues
31.8. Running DPDK in the Virtual Machine
31.8.1. Testpmd MAC Forwarding
31.8.2. Running Testpmd
31.9. Passing Traffic to the Virtual Machine Device
31.10. Running virtio_user with vhost-switch
32. Netmap Compatibility Sample Application
32.1. Introduction
32.2. Available APIs
32.3. Caveats
32.4. Porting Netmap Applications
32.5. Compiling the “bridge” Sample Application
32.6. Running the “bridge” Sample Application
33. Internet Protocol (IP) Pipeline Application
33.1. Application overview
33.2. Design goals
33.2.1. Rapid development
33.2.2. Flexibility
33.2.3. Performance
33.2.4. Debug capabilities
33.3. Running the application
33.4. Application stages
33.4.1. Configuration
33.4.2. Configuration checking
33.4.3. Initialization
33.4.4. Run-time
33.5. Configuration file syntax
33.5.1. Syntax overview
33.5.2. Application resources present in the configuration file
33.5.3. Rules to parse the configuration file
33.5.4. PIPELINE section
33.5.5. MEMPOOL section
33.5.6. LINK section
33.5.7. RXQ section
33.5.8. TXQ section
33.5.9. SWQ section
33.5.10. TM section
33.5.11. KNI section
33.5.12. SOURCE section
33.5.13. SINK section
33.5.14. MSGQ section
33.5.15. EAL section
33.6. Library of pipeline types
33.6.1. Pipeline module
33.6.2. List of pipeline types
33.7. Command Line Interface (CLI)
33.7.1. Global CLI commands
33.7.2. CLI commands for link configuration
33.7.3. CLI commands common for all pipeline types
33.7.4. Pipeline type specific CLI commands
34. Test Pipeline Application
34.1. Overview
34.2. Compiling the Application
34.3. Running the Application
34.3.1. Application Command Line
34.3.2. Table Types and Behavior
34.3.3. Input Traffic
35. Distributor Sample Application
35.1. Overview
35.2. Compiling the Application
35.3. Running the Application
35.4. Explanation
35.5. Debug Logging Support
35.6. Statistics
35.7. Application Initialization
36. VM Power Management Application
36.1. Introduction
36.2. Overview
36.2.1. Performance Considerations
36.3. Configuration
36.3.1. BIOS
36.3.2. Host Operating System
36.3.3. Hypervisor Channel Configuration
36.4. Compiling and Running the Host Application
36.4.1. Compiling
36.4.2. Running
36.5. Compiling and Running the Guest Applications
36.5.1. Compiling
36.5.2. Running
37. TEP termination Sample Application
37.1. Background
37.2. Sample Code Overview
37.3. Supported Distributions
37.4. Prerequisites
37.5. Compiling the Sample Code
37.6. Running the Sample Code
37.6.1. Parameters
37.7. Running the Virtual Machine (QEMU)
37.8. Running DPDK in the Virtual Machine
37.9. Passing Traffic to the Virtual Machine Device
38. PTP Client Sample Application
38.1. Limitations
38.2. How the Application Works
38.3. Compiling the Application
38.4. Running the Application
38.5. Code Explanation
38.5.1. The Main Function
38.5.2. The Lcores Main
38.5.3. PTP parsing
39. Performance Thread Sample Application
39.1. Overview
39.2. Compiling the Application
39.3. Running the Application
39.3.1. Running with L-threads
39.3.2. Running with EAL threads
39.3.3. Examples
39.4. Explanation
39.4.1. Mode of operation with EAL threads
39.4.2. Mode of operation with L-threads
39.4.3. CPU load statistics
39.5. The L-thread subsystem
39.5.1. Comparison between L-threads and POSIX pthreads
39.5.2. Constraints and performance implications when using L-threads
39.5.3. Porting legacy code to run on L-threads
39.5.4. Pthread shim
39.5.5. L-thread Diagnostics
40. IPsec Security Gateway Sample Application
40.1. Overview
40.2. Constraints
40.3. Compiling the Application
40.4. Running the Application
40.5. Configurations
40.5.1. Security Policy Initialization
40.5.2. Security Association Initialization
40.5.3. Routing Initialization
Tool User Guides
1. dpdk-procinfo Application
1.1. Running the Application
1.1.1. Parameters
2. dpdk-pdump Application
2.1. Running the Application
2.1.1. The
--pdump
parameters
2.2. Example
3. dpdk-pmdinfo Application
3.1. Running the Application
4. dpdk-devbind Application
4.1. Running the Application
4.2. OPTIONS
4.3. Examples
Testpmd Application User Guide
1. Introduction
2. Compiling the Application
3. Running the Application
3.1. EAL Command-line Options
3.2. Testpmd Command-line Options
4. Testpmd Runtime Functions
4.1. Help Functions
4.2. Control Functions
4.2.1. start
4.2.2. start tx_first
4.2.3. stop
4.2.4. quit
4.3. Display Functions
4.3.1. show port
4.3.2. show port rss reta
4.3.3. show port rss-hash
4.3.4. clear port
4.3.5. show (rxq|txq)
4.3.6. show config
4.3.7. set fwd
4.3.8. read rxd
4.3.9. read txd
4.4. Configuration Functions
4.4.1. set default
4.4.2. set verbose
4.4.3. set nbport
4.4.4. set nbcore
4.4.5. set coremask
4.4.6. set portmask
4.4.7. set burst
4.4.8. set txpkts
4.4.9. set txsplit
4.4.10. set corelist
4.4.11. set portlist
4.4.12. vlan set strip
4.4.13. vlan set stripq
4.4.14. vlan set filter
4.4.15. vlan set qinq
4.4.16. vlan set tpid
4.4.17. rx_vlan add
4.4.18. rx_vlan rm
4.4.19. rx_vlan add (for VF)
4.4.20. rx_vlan rm (for VF)
4.4.21. tunnel_filter add
4.4.22. tunnel_filter remove
4.4.23. rx_vxlan_port add
4.4.24. rx_vxlan_port remove
4.4.25. tx_vlan set
4.4.26. tx_vlan set pvid
4.4.27. tx_vlan reset
4.4.28. csum set
4.4.29. csum parse-tunnel
4.4.30. csum show
4.4.31. tso set
4.4.32. tso show
4.4.33. mac_addr add
4.4.34. mac_addr remove
4.4.35. mac_addr add(for VF)
4.4.36. set port-uta
4.4.37. set promisc
4.4.38. set allmulti
4.4.39. set flow_ctrl rx
4.4.40. set pfc_ctrl rx
4.4.41. set stat_qmap
4.4.42. set port - rx/tx (for VF)
4.4.43. set port - mac address filter (for VF)
4.4.44. set port - rx mode(for VF)
4.4.45. set port - tx_rate (for Queue)
4.4.46. set port - tx_rate (for VF)
4.4.47. set port - mirror rule
4.4.48. reset port - mirror rule
4.4.49. set flush_rx
4.4.50. set bypass mode
4.4.51. set bypass event
4.4.52. set bypass timeout
4.4.53. show bypass config
4.4.54. set link up
4.4.55. set link down
4.4.56. E-tag set
4.5. Port Functions
4.5.1. port attach
4.5.2. port detach
4.5.3. port start
4.5.4. port stop
4.5.5. port close
4.5.6. port start/stop queue
4.5.7. port config - speed
4.5.8. port config - queues/descriptors
4.5.9. port config - max-pkt-len
4.5.10. port config - CRC Strip
4.5.11. port config - scatter
4.5.12. port config - TX queue flags
4.5.13. port config - RX Checksum
4.5.14. port config - VLAN
4.5.15. port config - VLAN filter
4.5.16. port config - VLAN strip
4.5.17. port config - VLAN extend
4.5.18. port config - Drop Packets
4.5.19. port config - RSS
4.5.20. port config - RSS Reta
4.5.21. port config - DCB
4.5.22. port config - Burst
4.5.23. port config - Threshold
4.5.24. port config - E-tag
4.6. Link Bonding Functions
4.6.1. create bonded device
4.6.2. add bonding slave
4.6.3. remove bonding slave
4.6.4. set bonding mode
4.6.5. set bonding primary
4.6.6. set bonding mac
4.6.7. set bonding xmit_balance_policy
4.6.8. set bonding mon_period
4.6.9. show bonding config
4.7. Register Functions
4.7.1. read reg
4.7.2. read regfield
4.7.3. read regbit
4.7.4. write reg
4.7.5. write regfield
4.7.6. write regbit
4.8. Filter Functions
4.8.1. ethertype_filter
4.8.2. 2tuple_filter
4.8.3. 5tuple_filter
4.8.4. syn_filter
4.8.5. flex_filter
4.8.6. flow_director_filter
4.8.7. flush_flow_director
4.8.8. flow_director_mask
4.8.9. flow_director_flex_mask
4.8.10. flow_director_flex_payload
4.8.11. get_sym_hash_ena_per_port
4.8.12. set_sym_hash_ena_per_port
4.8.13. get_hash_global_config
4.8.14. set_hash_global_config
4.8.15. set_hash_input_set
4.8.16. set_fdir_input_set
4.8.17. global_config
FAQ
1. What does “EAL: map_all_hugepages(): open failed: Permission denied Cannot init memory” mean?
2. If I want to change the number of TLB Hugepages allocated, how do I remove the original pages allocated?
3. If I execute “l2fwd -c f -m 64 -n 3 – -p 3”, I get the following output, indicating that there are no socket 0 hugepages to allocate the mbuf and ring structures to?
4. I am running a 32-bit DPDK application on a NUMA system, and sometimes the application initializes fine but cannot allocate memory. Why is that happening?
5. On application startup, there is a lot of EAL information printed. Is there any way to reduce this?
6. How can I tune my network application to achieve lower latency?
7. Without NUMA enabled, my network throughput is low, why?
8. I am getting errors about not being able to open files. Why?
9. VF driver for IXGBE devices cannot be initialized
10. Is it safe to add an entry to the hash table while running?
11. What is the purpose of setting iommu=pt?
12. When trying to send packets from an application to itself, meaning smac==dmac, using Intel(R) 82599 VF packets are lost.
13. Can I split packet RX to use DPDK and have an application’s higher order functions continue using Linux pthread?
14. Is it possible to exchange data between DPDK processes and regular userspace processes via some shared memory or IPC mechanism?
15. Can the multiple queues in Intel(R) I350 be used with DPDK?
16. How can hugepage-backed memory be shared among multiple processes?
How To User Guides
1. Live Migration of VM with SR-IOV VF
1.1. Overview
1.2. Test Setup
1.3. Live Migration steps
1.3.1. On host_server_1: Terminal 1
1.3.2. On host_server_1: Terminal 2
1.3.3. On host_server_1: Terminal 1
1.3.4. On host_server_1: Terminal 2
1.3.5. On host_server_1: Terminal 1
1.3.6. On host_server_2: Terminal 1
1.3.7. On host_server_2: Terminal 2
1.3.8. On host_server_1: Terminal 2
1.3.9. On host_server_2: Terminal 1
1.3.10. On host_server_2: Terminal 2
1.3.11. On host_server_2: Terminal 1
1.4. Sample host scripts
1.4.1. setup_vf_on_212_46.sh
1.4.2. vm_virtio_vf_one_212_46.sh
1.4.3. setup_bridge_on_212_46.sh
1.4.4. connect_to_qemu_mon_on_host.sh
1.4.5. setup_vf_on_212_131.sh
1.4.6. vm_virtio_one_migrate.sh
1.4.7. setup_bridge_on_212_131.sh
1.5. Sample VM scripts
1.5.1. setup_dpdk_in_vm.sh
1.5.2. run_testpmd_bonding_in_vm.sh
1.6. Sample switch configuration
1.6.1. On Switch: Terminal 1
1.6.2. On Switch: Terminal 2
1.6.3. On Switch: Terminal 1
1.6.4. Sample switch configuration script
2. Live Migration of VM with Virtio on host running vhost_user
2.1. Overview
2.2. Test Setup
2.3. Live Migration steps
2.3.1. On host_server_1: Terminal 1
2.3.2. On host_server_1: Terminal 2
2.3.3. On host_server_1: Terminal 3
2.3.4. On host_server_1: Terminal 1
2.3.5. On host_server_1: Terminal 4
2.3.6. On host_server_1: Terminal 1
2.3.7. On host_server_2: Terminal 1
2.3.8. On host_server_2: Terminal 2
2.3.9. On host_server_2: Terminal 3
2.3.10. On host_server_2: Terminal 1
2.3.11. On host_server_2: Terminal 4
2.3.12. On host_server_1: Terminal 4
2.3.13. On host_server_2: Terminal 1
2.3.14. On host_server_2: Terminal 4
2.3.15. On host_server_2: Terminal 1
2.4. Sample host scripts
2.4.1. reset_vf_on_212_46.sh
2.4.2. vm_virtio_vhost_user.sh
2.4.3. connect_to_qemu_mon_on_host.sh
2.4.4. reset_vf_on_212_131.sh
2.4.5. vm_virtio_vhost_user_migrate.sh
2.5. Sample VM scripts
2.5.1. setup_dpdk_virtio_in_vm.sh
2.5.2. run_testpmd_in_vm.sh
3. Flow Bifurcation How-to Guide
3.1. Using Flow Bifurcation on IXGBE in Linux
3.2. Using Flow Bifurcation on I40E in Linux
Release Notes
1. Description of Release
2. DPDK Release 16.07
2.1. New Features
2.2. Resolved Issues
2.2.1. EAL
2.2.2. Drivers
2.2.3. Libraries
2.2.4. Examples
2.2.5. Other
2.3. Known Issues
2.4. API Changes
2.5. ABI Changes
2.6. Shared Library Versions
2.7. Tested Platforms
2.8. Tested NICs
2.9. Tested OSes
3. DPDK Release 16.04
3.1. New Features
3.2. Resolved Issues
3.2.1. Drivers
3.2.2. Libraries
3.2.3. Examples
3.3. API Changes
3.4. ABI Changes
3.5. Shared Library Versions
3.6. Tested Platforms
3.7. Tested NICs
4. DPDK Release 2.2
4.1. New Features
4.2. Resolved Issues
4.2.1. EAL
4.2.2. Drivers
4.2.3. Libraries
4.2.4. Examples
4.2.5. Other
4.3. Known Issues
4.4. API Changes
4.5. ABI Changes
4.6. Shared Library Versions
5. DPDK Release 2.1
5.1. New Features
5.2. Resolved Issues
5.3. Known Issues
5.4. API Changes
5.5. ABI Changes
6. DPDK Release 2.0
6.1. New Features
7. DPDK Release 1.8
7.1. New Features
8. Supported Operating Systems
9. Known Issues and Limitations in Legacy Releases
9.1. Unit Test for Link Bonding may fail at test_tlb_tx_burst()
9.2. Pause Frame Forwarding does not work properly on igb
9.3. In packets provided by the PMD, some flags are missing
9.4. The rte_malloc library is not fully implemented
9.5. HPET reading is slow
9.6. HPET timers do not work on the Osage customer reference platform
9.7. Not all variants of supported NIC types have been used in testing
9.8. Multi-process sample app requires exact memory mapping
9.9. Packets are not sent by the 1 GbE/10 GbE SR-IOV driver when the source MAC is not the MAC assigned to the VF NIC
9.10. SR-IOV drivers do not fully implement the rte_ethdev API
9.11. PMD does not work with –no-huge EAL command line parameter
9.12. Some hardware off-load functions are not supported by the VF Driver
9.13. Kernel crash on IGB port unbinding
9.14. Twinpond and Ironpond NICs do not report link status correctly
9.15. Discrepancies between statistics reported by different NICs
9.16. Error reported opening files on DPDK initialization
9.17. Intel® QuickAssist Technology sample application does not work on a 32-bit OS on Shumway
9.18. Differences in how different Intel NICs handle maximum packet length for jumbo frame
9.19. Binding PCI devices to igb_uio fails on Linux kernel 3.9 when more than one device is used
9.20. GCC might generate Intel® AVX instructions for processors without Intel® AVX support
9.21. Ethertype filter could receive other packets (non-assigned) in Niantic
9.22. Cannot set link speed on Intel® 40G Ethernet controller
9.23. Devices bound to igb_uio with VT-d enabled do not work on Linux kernel 3.15-3.17
9.24. VM power manager may not work on systems with more than 64 cores
9.25. DPDK may not build on some Intel CPUs using clang < 3.7.0
9.26. The last EAL argument is replaced by the program name in argv[]
9.27. I40e VF may not receive packets in the promiscuous mode
10. ABI and API Deprecation
10.1. Deprecation Notices
Contributor’s Guidelines
1. DPDK Coding Style
1.1. Description
1.2. General Guidelines
1.3. C Comment Style
1.3.1. Usual Comments
1.3.2. License Header
1.4. C Preprocessor Directives
1.4.1. Header Includes
1.4.2. Header File Guards
1.4.3. Macros
1.4.4. Conditional Compilation
1.5. C Types
1.5.1. Integers
1.5.2. Enumerations
1.5.3. Bitfields
1.5.4. Variable Declarations
1.5.5. Structure Declarations
1.5.6. Queues
1.5.7. Typedefs
1.6. C Indentation
1.6.1. General
1.6.2. Control Statements and Loops
1.6.3. Function Calls
1.6.4. Operators
1.6.5. Exit
1.6.6. Local Variables
1.6.7. Casts and sizeof
1.7. C Function Definition, Declaration and Use
1.7.1. Prototypes
1.7.2. Definitions
1.8. C Statement Style and Conventions
1.8.1. NULL Pointers
1.8.2. Return Value
1.8.3. Logging and Errors
1.8.4. Branch Prediction
1.8.5. Static Variables and Functions
1.8.6. Const Attribute
1.8.7. Inline ASM in C code
1.8.8. Control Statements
1.9. Python Code
2. Design
2.1. Environment or Architecture-specific Sources
2.1.1. Per Architecture Sources
2.1.2. Per Execution Environment Sources
2.2. Library Statistics
2.2.1. Description
2.2.2. Mechanism to allow the application to turn library statistics on and off
2.2.3. Prevention of ABI changes due to library statistics support
2.2.4. Motivation to allow the application to turn library statistics on and off
3. Managing ABI updates
3.1. Description
3.2. General Guidelines
3.3. What is an ABI
3.4. The DPDK ABI policy
3.5. Examples of Deprecation Notices
3.6. Versioning Macros
3.7. Examples of ABI Macro use
3.7.1. Updating a public API
3.7.2. Deprecating part of a public API
3.7.3. Deprecating an entire ABI version
3.8. Running the ABI Validator
4. DPDK Documentation Guidelines
4.1. Structure of the Documentation
4.2. Role of the Documentation
4.3. Building the Documentation
4.3.1. Dependencies
4.3.2. Build commands
4.4. Document Guidelines
4.5. RST Guidelines
4.5.1. Line Length
4.5.2. Whitespace
4.5.3. Section Headers
4.5.4. Lists
4.5.5. Code and Literal block sections
4.5.6. Images
4.5.7. Tables
4.5.8. Hyperlinks
4.6. Doxygen Guidelines
5. Contributing Code to DPDK
5.1. The DPDK Development Process
5.2. Getting the Source Code
5.3. Make your Changes
5.4. Commit Messages: Subject Line
5.5. Commit Messages: Body
5.6. Creating Patches
5.7. Checking the Patches
5.8. Checking Compilation
5.9. Sending Patches
5.10. The Review Process
6. Patch Cheatsheet
Data Plane Development Kit
Docs
»
Release Notes
View page source
Release Notes
1. Description of Release
2. DPDK Release 16.07
3. DPDK Release 16.04
4. DPDK Release 2.2
5. DPDK Release 2.1
6. DPDK Release 2.0
7. DPDK Release 1.8
8. Supported Operating Systems
9. Known Issues and Limitations in Legacy Releases
10. ABI and API Deprecation