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 |