Extending AF_XDP for fast co-located packet transfer#
FOSDEM 2026 digest Program Core pick 31 January – 1 February 2026
Debojeet Das (IIT Bombay, SynerG)
- Why: AF_XDP has no efficient way to forward packets between sockets — even localhost redirection today needs SR-IOV or an external switch. This closes the gap and keeps AF_XDP competitive with DPDK-style chaining. Also a published SoCC'25 paper.
- What: FLASH, a ~700-LoC kernel extension enabling low-overhead, in-kernel packet transfer between AF_XDP sockets: zero-copy for sockets sharing a UMEM, single-copy otherwise. Measured 1.1–2.5x higher throughput than SR-IOV-based approaches, with the lowest latency among all compared options (baseline: OpenNetVM/DPDK chaining).
- How: Backward-compatible MP/MC lockless rings (CAS serialization in-kernel, SP/SC preserved for userspace, no API changes); batched redirections with partial-TX + descriptor buffering to handle capacity changing mid-batch; smart polling with early backpressure (POLLOUT blocking, MSG_MORE wakeups) extending hybrid interrupt/busy-poll across the redirection path; a sysfs interface (
/sys/kernel/flash) for chaining rules; and a Rust runtime + FLASH monitor for multi-tenant isolation. - Where applicable: Co-located network functions (firewall → LB → router chains) on one host. Driver support already exists for ixgbe, i40e, ice, and mlx5. Roadmap replaces sysfs with an XDP_EGRESS hook, making steering programmable via eBPF.