approaches
DPDK, XDP (using eBPF in kernel)
Solarflare TCPDirect (L3/4 network stack)
OpenOnload (no change required, just need to attach a shared libraries → will detect UNIX network syscall and override…)

Xillinx
https://blog.cloudflare.com/kernel-bypass/
https://lambdafunc.medium.com/kernel-bypass-techniques-in-linux-for-high-frequency-trading-a-deep-dive-de347ccd5407
Solarflare NIC can connect with any server motherboard with standard PCIe slot
vs io_uring
kernel bypass is faster:
- zero overhead:
- if use io_uring, packets still goes into the kernel through routing tables, firewall rules (iptables/nftables), socket buffer management (sk_buff), and security checks
- io_uring still requires kernel to manage page tables to store data and map between kernel space and user space…!
- Kernel bypass uses DMA (iommu, vfio) to write straight to application memory
- kernel scheduling:
- io_uring depends on kernel to schedule background helper threads (SQPOLL, io_wq) → if these threads are migrated to another CPU core due to heavy load → cache locality lost → spike!
- kernel bypass tends to isolate CPU (only DPDK or????) → no deschdule, etc. → better perf
- cache locality:
- io_uring jumps between application threads and the kernel's asynchronous workers → invalidate caches…
- kernel bypass executes the hardware driver logic inside the exact same CPU instruction loop as the application logic, the data remains entirely within the CPU's local L1/L2 caches.