processing - It delivers high throughput for lightweight tasks like Encap/Decap based on table lookups. - However, it has limitations with complex workloads - For example, QoS control, jumbo frame handling, and fragmentation are challenging. - Some protocols, such as GTP-U, make RSS-based load balancing difficult. While DPDK offers NIC control APIs, these are often unavailable on Linux. Still, alternatives like CPUMAP can be effective within eBPF. - Design can mitigate weaknesses - Rather than forcing XDP to handle everything, offload complex tasks to hardware or external systems. - Understanding XDP's characteristics in advance is key to determining if it's the right tool for the job. - Rich ecosystem and developer support - Official resources like samples in the Linux source tree and xdp-tutorial are great starting points. - If you're using a Go-based control plane, check out my goxdp-template for loading and managing XDP programs. cf. https://github.com/takehaya/goxdp-template