Most writing about DPDK and VPP stays comfortably abstract. Libraries and drivers for fast packet processing. Kernel bypass. Zero-copy I/O. Poll-mode drivers. The concepts are well-documented. What's harder to find is an account of what happens when you actually build something with them β€” the architectural decisions, the dead ends, and what the profiler tells you when you think you're done. This post is that account. We needed a User Plane Function (UPF) for a 5G core built on Open5GS. Th...