Programmer’s Guide

December 20, 2014

Contents

Figures

Figure 1. Core Components Architecture

Figure 2. EAL Initialization in a Linux Application Environment

Figure 3. Example of a malloc heap and malloc elements within the malloc library

Figure 4. Ring Structure

Figure 5. Two Channels and Quad-ranked DIMM Example

Figure 6. Three Channels and Two Dual-ranked DIMM Example

Figure 7. A mempool in Memory with its Associated Ring

Figure 8. An mbuf with One Segment

Figure 9. An mbuf with Three Segments

Figure 10. Virtualization for a Single Port NIC in SR-IOV Mode

Figure 11. Performance Benchmark Setup

Figure 12. Fast Host-based Packet Processing

Figure 13. Inter-VM Communication

Figure 14. Host2VM Communication Example Using kni vhost Back End

Figure 15. Host2VM Communication Example Using qemu vhost Back End

Figure 16. Memory Sharing inthe Intel® DPDK Multi-process Sample Application

Figure 17. Components of an Intel® DPDK KNI Application

Figure 18. Packet Flow via mbufs in the Intel DPDK® KNI

Figure 19. vHost-net Architecture Overview

Figure 20. KNI Traffic Flow

Figure 21. Complex Packet Processing Pipeline with QoS Support

Figure 22. Hierarchical Scheduler Block Internal Diagram

Figure 23. Scheduling Hierarchy per Port

Figure 24. Internal Data Structures per Port

Figure 25. Prefetch Pipeline for the Hierarchical Scheduler Enqueue Operation

Figure 26. Pipe Prefetch State Machine for the Hierarchical Scheduler Dequeue Operation

Figure 27. High-level Block Diagram of the Intel® DPDK Dropper

Figure 28. Flow Through the Dropper

Figure 29. Example Data Flow Through Dropper

Figure 30. Packet Drop Probability for a Given RED Configuration

Figure 31. Initial Drop Probability (pb), Actual Drop probability (pa) Computed Using a Factor 1 (Blue Curve) and a Factor 2 (Red Curve)

Figure 32. Example of packet processing pipeline. The input ports 0 and 1 are connected with the output ports 0, 1 and 2 through tables 0 and 1.

Figure 33. Sequence of steps for hash table operations in packet processing context

Figure 34. Data structures for configurable key size hash tables

Figure 35. Bucket search pipeline for key lookup operation (configurable key size hash tables)

Figure 36. Pseudo-code for match, match_many and match_pos

Figure 37. Data structures for 8-byte key hash tables

Figure 38. Data structures for 16-byte key hash tables

Figure 39. Bucket search pipeline for key lookup operation (single key size hash tables)

Tables

Table 1. Packet Processing Pipeline Implementing QoS

Table 2. Infrastructure Blocks Used by the Packet Processing Pipeline

Table 3. Port Scheduling Hierarchy

Table 4. Scheduler Internal Data Structures per Port

Table 5. Ethernet Frame Overhead Fields

Table 6. Token Bucket Generic Operations

Table 7. Token Bucket Generic Parameters

Table 8. Token Bucket Persistent Data Structure

Table 9. Token Bucket Operations

Table 10. Subport/Pipe Traffic Class Upper Limit Enforcement Persistent Data Structure

Table 11. Subport/Pipe Traffic Class Upper Limit Enforcement Operations

Table 12. Weighted Round Robin (WRR)

Table 13. Subport Traffic Class Oversubscription

Table 14. Watermark Propagation from Subport Level to Member Pipes at the Beginning of Each Traffic Class Upper Limit Enforcement Period

Table 15. Watermark Calculation

Table 16. RED Configuration Parameters

Table 17. Relative Performance of Alternative Approaches

Table 18. RED Configuration Corresponding to RED Configuration File

Table 19. Port types

Table 20. Port abstract interface

Table 21. Table types

Table 29. Table Abstract Interface

Table 22. Configuration parameters common for all hash table types

Table 23. Configuration parameters specific to extendible bucket hash table

Table 24. Configuration parameters specific to pre-computed key signature hash table

Table 25. The main large data structures (arrays) used for configurable key size hash tables

Table 26. Field description for bucket array entry (configurable key size hash tables)

Table 27. Description of the bucket search pipeline stages (configurable key size hash tables)

Table 28. Lookup tables for match, match_many, match_pos

Table 29. Collapsed lookup tables for match, match_many and match_pos

Table 30. The main large data structures (arrays) used for 8-byte and 16-byte key size hash tables

Table 31. Field description for bucket array entry (8-byte and 16-byte key hash tables)

Table 32. Description of the bucket search pipeline stages (8-byte and 16-byte key hash tables)

Table 33. Next hop actions (reserved)

Table 34. User action examples

Previous topic

4. Compiling and Running Sample Applications

Next topic

1. Introduction

This Page