Introduction
Documentation Roadmap
Related Publications
Overview
Development Environment
Environment Abstraction Layer
Core Components
Ethernet* Poll Mode Driver Architecture
Packet Forwarding Algorithm Support
librte_net
Environment Abstraction Layer
EAL in a Linux-userland Execution Environment
Memory Segments and Memory Zones (memzone)
Multiple pthread
Malloc Library
Cookies
Alignment and NUMA Constraints
Use Cases
Internal Implementation
Ring Library
References for Ring Implementation in FreeBSD*
Lockless Ring Buffer in Linux*
Additional Features
Use Cases
Anatomy of a Ring Buffer
References
Mempool Library
Cookies
Stats
Memory Alignment Constraints
Local Cache
Use Cases
Mbuf Library
Design of Packet Buffers
Buffers Stored in Memory Pools
Constructors
Allocating and Freeing mbufs
Manipulating mbufs
Meta Information
Direct and Indirect Buffers
Debug
Use Cases
Poll Mode Driver
Requirements and Assumptions
Design Principles
Logical Cores, Memory and NIC Queues Relationships
Device Identification and Configuration
Poll Mode Driver API
IVSHMEM Library
IVHSHMEM Library API Overview
IVSHMEM Environment Configuration
Best Practices for Writing IVSHMEM Applications
Best Practices for Running IVSHMEM Applications
Link Bonding Poll Mode Driver Library
Link Bonding Modes Overview
Implementation Details
Using Link Bonding Devices
Timer Library
Implementation Details
Use Cases
References
Hash Library
Hash API Overview
Implementation Details
Use Case: Flow Classification
References
LPM Library
LPM API Overview
Implementation Details
LPM6 Library
LPM6 API Overview
Use Case: IPv6 Forwarding
Packet Distributor Library
Distributor Core Operation
Worker Operation
Reorder Library
Operation
Implementation Details
Use Case: Packet Distributor
IP Fragmentation and Reassembly Library
Packet fragmentation
Packet reassembly
Multi-process Support
Memory Sharing
Deployment Models
Multi-process Limitations
Kernel NIC Interface
The DPDK KNI Kernel Module
KNI Creation and Deletion
DPDK mbuf Flow
Use Case: Ingress
Use Case: Egress
Ethtool
Link state and MTU change
KNI Working as a Kernel vHost Backend
Thread Safety of DPDK Functions
Fast-Path APIs
Performance Insensitive API
Library Initialization
Interrupt Thread
Quality of Service (QoS) Framework
Packet Pipeline with QoS Support
Hierarchical Scheduler
Dropper
Traffic Metering
Power Management
CPU Frequency Scaling
Core-load Throttling through C-States
API Overview of the Power Library
User Cases
References
Packet Classification and Access Control
Overview
Application Programming Interface (API) Usage
Packet Framework
Design Objectives
Overview
Port Library Design
Table Library Design
Pipeline Library Design
Multicore Scaling
Interfacing with Accelerators
Vhost Library
Vhost API Overview
Vhost Implementation
Vhost supported vSwitch reference
Port Hotplug Framework
Overview
Port Hotplug API overview
Reference
Limitations
Source Organization
Makefiles and Config
Libraries
Applications
Development Kit Build System
Building the Development Kit Binary
Building External Applications
Makefile Description
Development Kit Root Makefile Help
Configuration Targets
Build Targets
Install Targets
Test Targets
Documentation Targets
Deps Targets
Misc Targets
Other Useful Command-line Variables
Make in a Build Directory
Compiling for Debug
Extending the DPDK
Example: Adding a New Library libfoo
Building Your Own Application
Compiling a Sample Application in the Development Kit Directory
Build Your Own Application Outside the Development Kit
Customizing Makefiles
External Application/Library Makefile help
Prerequisites
Build Targets
Help Targets
Other Useful Command-line Variables
Make from Another Directory
Performance Optimization Guidelines
Introduction
Writing Efficient Code
Memory
Communication Between lcores
PMD Driver
Locks and Atomic Operations
Coding Considerations
Setting the Target CPU Type
Profile Your Application
Glossary