26 ms·
Here are answers to both your questions: The code has the infrastructure for XDP hardware offload: - XDP_MODE_OFFLOAD enum exists in bpf_loader.h:61 - XDP_FL
by spliffedr 8mo ago
Here are answers to both your questions:
The code has the infrastructure for XDP hardware offload:
- XDP_MODE_OFFLOAD enum exists in bpf_loader.h:61
- XDP_FLAGS_HW_MODE flag mapping in bpf_loader.c:789
But it's not usable in practice because:
1. No CLI option – There's no way to enable offload mode; it defaults to native with SKB fallback
2. BPF program isn't offload-compatible – The XDP program uses:
- Complex BPF maps (LRU hash, ring buffers)
- Helper functions not supported by most SmartNIC JITs
- The flow_cookie_map shared with sock_ops (can't be offloaded)
3. SmartNIC limitations
– Hardware offload typically only supports simple packet filtering/forwarding, not the stateful flow tracking spliff does
What would be needed for SmartNIC support:
- Split XDP program into offloadable (simple classification) and non-offloadable (stateful) parts
- Use SmartNIC-specific toolchains (Memory-1, Netronome SDK, etc.)
- Me having a device with SmartNIC and full driver support to play with. I've done all my testing on Fedora 43 on my device
For now this could be a future roadmap item, but the current "Golden Thread" correlation architecture fundamentally requires userspace + kernel cooperation that can't be fully offloaded.
Here is a sample debug output when you run spliff -d and it tries to detect all your NICs:
---
[DEBUG] Loaded BPF program from build-release/spliff.bpf.o
[XDP] Found program: xdp_flow_tracker
[XDP] Found required maps: flow_states, session_registry, xdp_events
[XDP] Found optional map: cookie_to_ssl
[XDP] Found map: flow_cookie_map (for cookie caching)
[XDP] Found optional map: xdp_stats_map
[XDP] Initialization complete
[XDP] Discovered interface: enp0s20f0u2u4u2 (idx=2, mtu=1500, UP, physical)
[XDP] Discovered interface: wlp0s20f3 (idx=4, mtu=1500, UP, physical)
[XDP] Discovered interface: enp0s31f6 (idx=3, mtu=1500, UP, physical)
libbpf: Kernel error message: Underlying driver does not support XDP in native mode
[XDP] native mode failed on enp0s20f0u2u4u2, falling back to SKB mode
[XDP] Attached to enp0s20f0u2u4u2 (idx=2) in skb mode
libbpf: Kernel error message: Underlying driver does not support XDP in native mode
[XDP] native mode failed on wlp0s20f3, falling back to SKB mode
[XDP] Attached to wlp0s20f3 (idx=4) in skb mode
libbpf: Kernel error message: Underlying driver does not support XDP in native mode
[XDP] native mode failed on enp0s31f6, falling back to SKB mode
[XDP] Attached to enp0s31f6 (idx=3) in skb mode
[XDP] Attached to 3 of 3 discovered interfaces
XDP attached to 3 interfaces
[SOCKOPS] Using cgroup: /sys/fs/cgroup
[SOCKOPS] Attached socket cookie caching program
sock_ops attached for cookie caching
[XDP] Warm-up: Seeded 5 existing TCP connections
[DEBUG] Warmed up 5 existing connections
---
edit: formating is hard on my phone
- westurner 8mo ago> Me having a device with SmartNIC and full driver support to play with Same. I have a Pi Pico with PIO, though > but the current "Golden Thread" correlation architecture fundamentally requires userspace + kernel cooperation that can't be fully offloaded. Hard limit, I guess. (If you indent all lines of a block of text with two spaces (including blank newlines), HN will format it as monospace text and preserve line breaks.)
- spliffedr 8mo agoI've updated the Architecture diagrams to include everything: https://github.com/NoFear0411/spliff/blob/main/README.md#architecture https://github.com/NoFear0411/spliff/blob/main/README.md#arc... Thanks for the format tip.
- westurner 8mo agoSo I went looking for TLS accelerator cards again: /? TLS accelerators open: https://www.google.com/search?q=TLS+accelerators+open https://www.google.com/search?q=TLS+accelerators+open : - "AsyncGBP+: Bridging SSL/TLS and Heterogeneous Computing with GPU-Based Providers" https://ieeexplore.ieee.org/document/10713226 https://ieeexplore.ieee.org/document/10713226 .. https://news.ycombinator.com/item?id=46664295 https://news.ycombinator.com/item?id=46664295 /? XDP hardware offload to GPU: https://www.google.com/search?q=XDP+hardware+offload+to+a+GPU https://www.google.com/search?q=XDP+hardware+offload+to+a+GP... : - eunomia-bpf/XDP-on-GPU: https://github.com/eunomia-bpf/XDP-on-GPU https://github.com/eunomia-bpf/XDP-on-GPU Perhaps AsyncGBP+ + XDP-on-GPU would solve. The AsyncGBP+ article mentions support for PQ on GPU. But then process isolation on GPUs. And they removed support for vGPU unlock.
- spliffedr 8mo agoThat is a rabbit hole that I don't wanna go down to again.