Programmer’s Guide

Figures

Fig. 2.1 Core Components Architecture

Fig. 3.1 EAL Initialization in a Linux Application Environment

Fig. 3.2 Example of a malloc heap and malloc elements within the malloc library

Fig. 5.2 Ring Structure

Fig. 5.3 Enqueue first step

Fig. 5.4 Enqueue second step

Fig. 5.5 Enqueue last step

Fig. 5.6 Dequeue last step

Fig. 5.7 Dequeue second step

Fig. 5.8 Dequeue last step

Fig. 5.9 Multiple producer enqueue first step

Fig. 5.10 Multiple producer enqueue second step

Fig. 5.11 Multiple producer enqueue third step

Fig. 5.12 Multiple producer enqueue fourth step

Fig. 5.13 Multiple producer enqueue last step

Fig. 5.14 Modulo 32-bit indexes - Example 1

Fig. 5.15 Modulo 32-bit indexes - Example 2

Fig. 6.1 Two Channels and Quad-ranked DIMM Example

Fig. 6.2 Three Channels and Two Dual-ranked DIMM Example

Fig. 6.3 A mempool in Memory with its Associated Ring

Fig. 7.1 An mbuf with One Segment

Fig. 7.2 An mbuf with Three Segments

Fig. 32.1 Memory Sharing in the DPDK Multi-process Sample Application

Fig. 33.1 Components of a DPDK KNI Application

Fig. 33.2 Packet Flow via mbufs in the DPDK KNI

Fig. 39.1 Complex Packet Processing Pipeline with QoS Support

Fig. 39.2 Hierarchical Scheduler Block Internal Diagram

Fig. 39.3 Scheduling Hierarchy per Port

Fig. 39.4 Internal Data Structures per Port

Fig. 39.5 Prefetch Pipeline for the Hierarchical Scheduler Enqueue Operation

Fig. 39.6 Pipe Prefetch State Machine for the Hierarchical Scheduler Dequeue Operation

Fig. 39.7 High-level Block Diagram of the DPDK Dropper

Fig. 39.8 Flow Through the Dropper

Fig. 39.9 Example Data Flow Through Dropper

Fig. 39.10 Packet Drop Probability for a Given RED Configuration

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

Fig. 42.3 Example of Packet Processing Pipeline where Input Ports 0 and 1 are Connected with Output Ports 0, 1 and 2 through Tables 0 and 1

Fig. 42.4 Sequence of Steps for Hash Table Operations in a Packet Processing Context

Fig. 42.5 Data Structures for Configurable Key Size Hash Tables

Fig. 42.6 Bucket Search Pipeline for Key Lookup Operation (Configurable Key Size Hash Tables)

Fig. 42.7 Data Structures for 8-byte Key Hash Tables

Fig. 42.8 Data Structures for 16-byte Key Hash Tables

Fig. 42.9 Bucket Search Pipeline for Key Lookup Operation (Single Key Size Hash Tables)

Fig. 21.1 Load Balancing Using Front End Node

Fig. 21.2 Consistent Hashing

Fig. 21.3 Table Based Flow Distribution

Fig. 21.4 Searching for Perfect Hash Function

Fig. 21.5 Divide and Conquer for Millions of Keys

Fig. 21.6 EFD as a Flow-Level Load Balancer

Fig. 21.7 Group Assignment

Fig. 21.8 Perfect Hash Search - Assigned Keys & Target Value

Fig. 21.9 Perfect Hash Search - Satisfy Target Values

Fig. 21.10 Finding Hash Index for Conflict Free lookup_table

Fig. 21.11 EFD Lookup Operation

Fig. 22.3 Example Usages of Membership Library

Fig. 22.4 Bloom Filter False Positive Probability

Fig. 22.5 Detecting Routing Loops Using BF

Fig. 22.6 Vector Bloom Filter (vBF) Overview

Fig. 22.7 vBF for Flow Scheduling to Worker Thread

Fig. 22.8 Using HTSS for Attack Signature Matching

Fig. 22.9 Using HTSS with False Negatives for Wild Card Classification

Tables

Table 39.2 Packet Processing Pipeline Implementing QoS

Table 39.3 Infrastructure Blocks Used by the Packet Processing Pipeline

Table 39.4 Port Scheduling Hierarchy

Table 39.5 Scheduler Internal Data Structures per Port

Table 39.6 Ethernet Frame Overhead Fields

Table 39.7 Token Bucket Generic Parameters

Table 39.8 Token Bucket Generic Operations

Table 39.9 Token Bucket Persistent Data Structure

Table 39.10 Token Bucket Operations

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

Table 39.12 Subport/Pipe Traffic Class Upper Limit Enforcement Operations

Table 39.13 Weighted Round Robin (WRR)

Table 39.14 Subport Traffic Class Oversubscription

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

Table 39.16 Watermark Calculation

Table 39.17 RED Configuration Parameters

Table 39.18 Relative Performance of Alternative Approaches

Table 39.19 RED Configuration Corresponding to RED Configuration File

Table 42.1 Port Types

Table 42.2 20 Port Abstract Interface

Table 42.3 Table Types

Table 42.5 Configuration Parameters Common for All Hash Table Types

Table 42.6 Configuration Parameters Specific to Extendable Bucket Hash Table

Table 42.7 Configuration Parameters Specific to Pre-computed Key Signature Hash Table

Table 42.8 Main Large Data Structures (Arrays) used for Configurable Key Size Hash Tables

Table 42.9 Field Description for Bucket Array Entry (Configurable Key Size Hash Tables)

Table 42.10 Description of the Bucket Search Pipeline Stages (Configurable Key Size Hash Tables)

Table 42.11 Lookup Tables for Match, Match_Many and Match_Pos

Table 42.12 Collapsed Lookup Tables for Match, Match_Many and Match_Pos

Table 42.13 Main Large Data Structures (Arrays) used for 8-byte and 16-byte Key Size Hash Tables

Table 42.14 Field Description for Bucket Array Entry (8-byte and 16-byte Key Hash Tables)

Table 42.15 Description of the Bucket Search Pipeline Stages (8-byte and 16-byte Key Hash Tables)

Table 42.16 Next Hop Actions (Reserved)

Table 42.17 User Action Examples

Table 20.1 Entry distribution measured with an example table with 1024 random entries using jhash algorithm

Table 20.2 Entry distribution measured with an example table with 1 million random entries using jhash algorithm