VPP MASTERY · FULL ROADMAP · 5 PHASES

⚡ VPP Learning Roadmap

3–4 months · Docker + AMD + Mellanox · C/C++/Go · 9 mini-projects

5Phases
10Modules
9Projects
22+Weeks
GoVPPCapstone

PHASE TIMELINE

1
Foundation & Environment
Weeks 1–3
Scalar vs vector processing. VPP's 5-layer architecture (VPPInfra → vlib → vnet → plugins → binary). Build from source. Docker + AMD + Mellanox setup with hugepages and VFIO. Write your first startup.conf. Use vppctl CLI. Capture and decode your first packet trace.
scalar vs vector startup.conf vppctl show run packet trace Docker + Mellanox
📦 Project 1: First Packet Trace
2
Core VPP Internals
Weeks 4–8
Three modules covering VPP's complete software stack from the bottom up. vppinfra: vec, pool, bihash, clib_mem, format/unformat. vlib: node types, dispatch loop, buffer management, dual-loop pattern, tracing, multi-threading. vnet: sw_if_index, feature arcs, FIB/DPO, adjacency, L2 bridge domains.
vec / pool / bihash VLIB_REGISTER_NODE dual-loop vlib_buffer_t feature arcs FIB/DPO thread safety
📦 Project 2: Graph Node Inspector 📦 Project 3: Custom Buffer Inspector Node
⚠️ This phase is the prerequisite for everything that follows. Do not skip any module - plugin development (Phase 4) directly uses all three.
3
Interface Technologies
Weeks 9–13
Every interface type VPP supports, in depth. DPDK plugin: dpdk-input node internals, mbuf/vlib_buffer shared memory bridge, Mellanox mlx5 specifics. memif: shared-memory zero-copy architecture, libmemif API, DPDK net_memif PMD. TAP v2, AF_XDP, vhost-user, AF_PACKET: Linux integration, eBPF/XSK, VM connectivity, full comparison matrix.
dpdk-input mbuf↔vlib bridge mlx5 iova-mode va memif server/client libmemif TAP v2 linux-cp AF_XDP/UMEM vhost-user
📦 Project 4: Interface Throughput Comparison 📦 Project 5: memif vSwitch
4
Plugin Development
Weeks 14–18
Writing production-quality VPP plugins. Graph node anatomy, dual/quad-loop pattern, binary API (.api files, message handlers, vat2), CLI commands, error handling, feature arc registration. Testing with VPP's Python test framework (vpp_unittest). Two projects: a packet classifier with bihash lookups, and a stateful connection tracker with per-flow state and timer-based expiry.
VLIB_REGISTER_NODE .api files message handlers VLIB_CLI_COMMAND VNET_FEATURE_INIT vpp_unittest VppTestCase pool + bihash tw_timer
📦 Project 6: Packet Classifier Plugin 📦 Project 7: Stateful Connection Tracker
⚠️ Requires solid Phase 2 knowledge: dual-loop pattern (vlib P2B), bihash/pool (vppinfra P2A), feature arcs (vnet P2C).
5
Control Plane & Advanced
Weeks 19–22+
Programmatic control of VPP from external processes. GoVPP binary API client with auto-generated bindings. VPP Stats API (shared memory, counters, interface stats). vpp_papi Python bindings. Observability: event logger, perfmon plugin, NUMA-aware tuning. Production deployment patterns. End-to-end capstone integrating all phases. Bonus: VPP Host Stack — TCP/Session layer, VCL, application namespaces, and vcl-ldpreload.
GoVPP binapi-generator Stats API vpp_papi event logger perfmon NUMA tuning cpu pinning session layer VCL vcl-ldpreload app namespaces
📦 Project 8: GoVPP Control Plane Agent 📦 Project 9: End-to-End Production Topology

ALL MINI-PROJECTS

# Project Phase Key Skills
1 VPP Container Lab - First Packet P1 Build, Docker, startup.conf, trace
2 Graph Node Inspector P2B pg-input, show run, GDB dispatch loop
3 Custom Buffer Inspector Node P2B First plugin, trace, feature arc, CLI
4 Interface Technology Comparison P3A DPDK vs memif vs TAP throughput
5 memif vSwitch P3B 3-container topology, libmemif Python
6 Packet Classifier Plugin P4 bihash lookup, binary API, test suite
7 Stateful Connection Tracker P4 Per-flow pool, tw_timer, thread safety
8 GoVPP Control Plane Agent P5 GoVPP, Stats API, REST endpoint
9 End-to-End Production Topology P5 Full integration, tuning, benchmark
← VPP Hub Start: Phase 1 →