Programmer’s Guide
- 1. Introduction
- 2. Overview
- 3. Source Organization
- 4. Environment Abstraction Layer
- 4.1. EAL in a Linux-userland Execution Environment
- 4.1.1. Initialization and Core Launching
- 4.1.2. Shutdown and Cleanup
- 4.1.3. Multi-process Support
- 4.1.4. Memory Mapping Discovery and Memory Reservation
- 4.1.5. Support for Externally Allocated Memory
- 4.1.6. Per-lcore and Shared Variables
- 4.1.7. Logs
- 4.1.8. CPU Feature Identification
- 4.1.9. User Space Interrupt Event
- 4.1.10. Block list
- 4.1.11. Misc Functions
- 4.1.12. IOVA Mode Detection
- 4.1.13. IOVA Mode Configuration
- 4.1.14. Max SIMD bitwidth
- 4.2. Memory Segments and Memory Zones (memzone)
- 4.3. Multiple pthread
- 4.4. Malloc
- 4.1. EAL in a Linux-userland Execution Environment
- 5. Service Cores
- 6. Trace Library
- 7. RCU Library
- 8. Ring Library
- 9. Stack Library
- 10. Mempool Library
- 11. Mbuf Library
- 12. Poll Mode Driver
- 13. Generic flow API (rte_flow)
- 14. Switch Representation within DPDK Applications
- 15. Traffic Metering and Policing API
- 16. Traffic Management API
- 17. Wireless Baseband Device Library
- 18. Cryptography Device Library
- 19. Compression Device Library
- 20. RegEx Device Library
- 21. DMA Device Library
- 22. General-Purpose Graphics Processing Unit Library
- 23. Security Library
- 24. Rawdevice Library
- 25. Link Bonding Poll Mode Driver Library
- 25.1. Link Bonding Modes Overview
- 25.2. Implementation Details
- 25.3. Using Link Bonding Devices
- 25.4. Testpmd driver specific commands
- 25.4.1. create bonded device
- 25.4.2. add bonding slave
- 25.4.3. remove bonding slave
- 25.4.4. set bonding mode
- 25.4.5. set bonding primary
- 25.4.6. set bonding mac
- 25.4.7. set bonding balance_xmit_policy
- 25.4.8. set bonding mon_period
- 25.4.9. set bonding lacp dedicated_queue
- 25.4.10. set bonding agg_mode
- 25.4.11. show bonding config
- 25.4.12. show bonding lacp info
- 26. Timer Library
- 27. Hash Library
- 27.1. Hash API Overview
- 27.2. Multi-process support
- 27.3. Multi-thread support
- 27.4. Extendable Bucket Functionality support
- 27.5. Implementation Details (non Extendable Bucket Case)
- 27.6. Implementation Details (with Extendable Bucket)
- 27.7. Entry distribution in hash table
- 27.8. Use Case: Flow Classification
- 27.9. References
- 28. Toeplitz Hash Library
- 29. Elastic Flow Distributor Library
- 30. Membership Library
- 31. LPM Library
- 32. LPM6 Library
- 33. FIB Library
- 34. RIB Library
- 35. Flow Classification Library
- 36. Packet Distributor Library
- 37. Reorder Library
- 38. IP Fragmentation and Reassembly Library
- 39. Generic Receive Offload Library
- 40. Generic Segmentation Offload Library
- 41. Packet Capture Next Generation Library
- 42. Packet Capture Library
- 43. Multi-process Support
- 44. Kernel NIC Interface
- 45. Thread Safety of DPDK Functions
- 46. Event Device Library
- 47. Event Ethernet Rx Adapter Library
- 47.1. API Walk-through
- 47.1.1. Creating an Adapter Instance
- 47.1.2. Adding Rx Queues to the Adapter Instance
- 47.1.3. Querying Adapter Capabilities
- 47.1.4. Configuring the Service Function
- 47.1.5. Starting the Adapter Instance
- 47.1.6. Getting Adapter Statistics
- 47.1.7. Getting Adapter queue config
- 47.1.8. Getting and resetting Adapter queue stats
- 47.1.9. Interrupt Based Rx Queues
- 47.1.10. Rx Callback for SW Rx Adapter
- 47.1.11. Rx event vectorization
- 47.1.12. Rx event vectorization for SW Rx adapter
- 47.1. API Walk-through
- 48. Event Ethernet Tx Adapter Library
- 48.1. API Walk-through
- 48.1.1. Creating an Adapter Instance
- 48.1.2. Adding Tx Queues to the Adapter Instance
- 48.1.3. Querying Adapter Capabilities
- 48.1.4. Linking a Queue to the Adapter’s Event Port
- 48.1.5. Configuring the Service Function
- 48.1.6. Starting the Adapter Instance
- 48.1.7. Enqueuing Packets to the Adapter
- 48.1.8. Getting Adapter Statistics
- 48.1.9. Tx event vectorization
- 48.1. API Walk-through
- 49. Event Timer Adapter Library
- 50. Event Crypto Adapter Library
- 51. Quality of Service (QoS) Framework
- 52. Power Management
- 52.1. CPU Frequency Scaling
- 52.2. Core-load Throttling through C-States
- 52.3. Per-core Turbo Boost
- 52.4. Use of Power Library in a Hyper-Threaded Environment
- 52.5. API Overview of the Power Library
- 52.6. User Cases
- 52.7. Empty Poll API
- 52.8. User Cases
- 52.9. Ethernet PMD Power Management API
- 52.10. References
- 53. Packet Classification and Access Control
- 54. Packet Framework
- 55. Vhost Library
- 56. Metrics Library
- 57. Telemetry Library
- 58. Berkeley Packet Filter Library
- 59. IPsec Packet Processing Library
- 60. Graph Library and Inbuilt Nodes
- 60.1. Features
- 60.2. Advantages of Graph architecture
- 60.3. Performance tuning parameters
- 60.4. Programming model
- 60.4.1. Anatomy of Node:
- 60.4.2. Node creation and registration
- 60.4.3. Link the Nodes to create the graph topology
- 60.4.4. Create the graph object
- 60.4.5. Multicore graph processing
- 60.4.6. In fast path
- 60.4.7. Context update when graph walk in action
- 60.4.8. Get the node statistics using graph cluster
- 60.4.9. Node writing guidelines
- 60.4.10. Static nodes
- 60.4.11. Intermediate nodes
- 60.5. Graph object memory layout
- 60.6. Inbuilt Nodes
- 61. Installing DPDK Using the meson build system
- 62. Running DPDK Unit Tests with Meson
- 63. Building Your Own Application
- 64. Performance Optimization Guidelines
- 65. Writing Efficient Code
- 66. Link Time Optimization
- 67. Profile Your Application
- 68. Running AddressSanitizer
- 69. Glossary