Explore the evolution and lessons learned from 1.5 years of XDP (eXpress Data Path) in production at Facebook in this Linux Plumbers Conference talk. Dive into the history of changes in core BPF components driven by production needs, performance improvements, and implementation details. Learn about issues, shortcomings, and corner cases encountered during operations. Discover topics such as the addition of bpf_adjust_head/bpf_adjust_tail helpers, unit testing and microbenchmarking with bpf_prog_test_run, map-in-map scaling, NUMA-aware allocation for BPF maps, and inline lookups. Gain insights into operational lessons, including BPF instruction counts vs. complexity, attaching multiple XDP programs to an interface, and hardware limitations. Discuss missing features like hardware checksumming offload and bounded loops, and their potential benefits for XDP applications.
Overview
Syllabus
Introduction
Operational Experience
Why XDP
Initial Version
Tips
Program Chaining
Evolution
Unit Testing
Fragmenting
Inlining
checksum offloading
Taught by
Linux Plumbers Conference