DPDK MASTERY · FULL ROADMAP · 3 PHASES
⚡ DPDK Learning Roadmap
3–4 months · Intel / Mellanox NICs · C · 6 modules · 7 mini-projects · Production SASE-DP context
3Phases
6Modules
7Projects
14+Weeks
SASECapstone
PHASE TIMELINE
1
Foundation & Memory
Weeks 1–5
Why the Linux kernel packet path fails at 100G — interrupts, sk_buff, memory copies, context switches.
DPDK's answer: Poll Mode Drivers, hugepages, zero-copy, user-space NIC ownership.
Full DPDK software stack from PMD → ethdev → rte_mempool → rte_mbuf → EAL.
PCIe device binding with VFIO and IOMMU. Hugepage anatomy, IOVA, DMA mapping.
rte_mempool pre-allocation mechanics (per-lcore cache, bulk get/put).
rte_mbuf layout: buf_addr, data_off, pkt_len, ol_flags, headroom, chained mbufs.
kernel path overheads
PMD polling
rte_eal_init()
VFIO-PCI
IOMMU
hugepages
IOVA
rte_mempool
rte_mbuf
zero-copy
📦 Project 1: DPDK Hello World + EAL Probe
📦 Project 2: mbuf Inspector — Decode Every Field
2
Core Mechanics
Weeks 6–10
Two modules covering DPDK's complete runtime machinery.
PMD & Port Config: NIC descriptor rings, DD bit handshake, rx_burst / tx_burst hot path,
full port configuration sequence (dev_configure → queue_setup → dev_start), offloads, stats.
RSS: Toeplitz hash in hardware, RETA table, symmetric RSS key, power-of-2 worker count requirement.
rte_ring: lock-free SPSC/MPMC circular buffer, CAS mechanics, bulk enqueue/dequeue.
rte_distributor: fan-out from one RX core to N workers, work tagging, flow affinity.
Application Models: run-to-completion vs pipeline, when to use each.
rte_eth_rx_burst
DD bit
descriptor rings
RSS Toeplitz
RETA
symmetric RSS
rte_ring CAS
MPMC
rte_distributor
pipeline model
📦 Project 3: L2 Forwarder with RSS Verification
📦 Project 4: Ring-Based Worker Pipeline
⚠️ Phase 1 memory knowledge is prerequisite — PMD and ring patterns build directly on mempool and mbuf internals.
3
Advanced Topics & Production
Weeks 11–14+
Production-grade DPDK design and operations.
Multi-Process: primary/secondary model, shared mempools and rings, named object lookup,
hot-restart secondaries — exactly the pattern used in Jio SASE-DP.
rte_flow: hardware flow classification and queue steering with zero CPU cost,
match / action model, flow priority and groups.
NUMA: socket-aware allocation, lcore binding, cache-line alignment, false sharing.
Packet Processing Patterns: prefetching, batching, branch elimination.
Performance Tuning: CPU isolation, hugepage sizing, burst tuning, PMD stats, benchmarking.
Debugging: mbuf leaks, imissed counter, mempool exhaustion, common pitfalls.
primary/secondary
rte_mempool_lookup
rte_flow_create
FDIR
NUMA-aware alloc
cache-line align
prefetch
isolcpus
imissed
mbuf leak
📦 Project 5: Multi-Process SASE-DP Skeleton
📦 Project 6: rte_flow Hardware Classifier
📦 Project 7: End-to-End URL Filter Dataplane
ALL MINI-PROJECTS
| # | Project | Phase | Key Skills |
|---|---|---|---|
| 1 | DPDK Hello World + EAL Probe | P1 | rte_eal_init, lcore enumeration, hugepage check |
| 2 | mbuf Inspector — Decode Every Field | P1 | rte_mbuf layout, ol_flags, pkt_len, headroom |
| 3 | L2 Forwarder with RSS Verification | P2 | rx_burst, tx_burst, MAC swap, RSS queue affinity |
| 4 | Ring-Based Worker Pipeline | P2 | rte_ring SPSC, producer/consumer cores, backpressure |
| 5 | Multi-Process SASE-DP Skeleton | P3 | primary/secondary, named pool lookup, hot-restart |
| 6 | rte_flow Hardware Classifier | P3 | rte_flow_create, 5-tuple matching, queue steering |
| 7 | End-to-End URL Filter Dataplane | P3 | Full pipeline: RX → classify → filter → TX → stats |