Build a User-Space TCP/IP Stack on DPDK
Write a user-space TCP/IP stack on DPDK, from Ethernet and IP to TCP flow control, and ship an HTTP proxy.
Advanced30 lessons
written lessons≈ 15 h
High-Performance Networking & Cloud-Native · 30 illustrated lessons (text/HTML)
Outcomes
- Implement Ethernet, IP, ICMP, UDP and TCP in user space
- Handle TCP congestion control, timers and multi-threading
- Build a programmable load balancer on your own stack
Where we teach this
- NET-210 · DPDK & Userspace Kernel Bypass live cohort
The lessons
Every lesson in this curriculum, in the order we teach it.
- 1Course introduction
- 2DPDK basics and environment setup
- 3DPDK core concepts explained
- 4DPDK memory management in practice
- 5The DPDK packet-processing framework explained
- 6Protocol-stack architecture design
- 7Link-layer implementation in practice
- 8Network-layer basics in practice
- 9ICMP protocol implementation
- 10UDP protocol implementation
- 11TCP protocol basics
- 12TCP connection management in practice
- 13TCP send and receive: buffers, Nagle's algorithm and delayed ACKs
- 14TCP flow control: sliding-window adjustment, zero-window probing and window scaling
- 15TCP congestion control in practice
- 16Timer management
- 17Socket API compatibility layer
- 18Multithreading and concurrency: stack threading models, lock selection, lock-free data structures and performance
- 19High-performance route lookup in practice
- 20Firewalls and ACLs: access-control list design, rule matching and conntrack implementation
- 21Implementing NAT
- 22Tunnel protocol support: VXLAN parsing and encapsulation, tunnel endpoints and overlay construction
- 23Protocol-stack performance optimisation in practice
- 24Statistics and monitoring: performance counters, traffic statistics, connection-state monitoring and remote management interfaces
- 25Logging and debugging
- 26Interoperating with the kernel network stack
- 27Advanced DPDK features in practice
- 28Test frameworks and cases
- 29Project 1: building a high-performance HTTP proxy
- 30Project 2: a programmable load balancer, with course summary and outlook
All-access library
Every curriculum on this page, with the labs and lab sequences, for a year.