DPDK has scoped support for specific NICs. If a NIC is unsupported through this avenue, current acceleration is limited to io_uring or raw sockets. Windows clients have no alternatives. Adding a new LibOS using Express Data Path could provide a fast alternative which does not require NIC support.
Proposed Solution
Add a new LibOS which uses XDP/BPF technologies to implement network I/O. OS-specific solutions are required: *nix platforms use BPF API and AF_XDP sockets (which may also benefit from io_uring). Windows platforms require XDP for Windows. Layering needs further consideration w.r.t. io_uring and BPF.
Alternative Solutions
RDMA/RoCE provide another avenue for acceleration, although the complexity is arguably much higher than XDP (not to mention NIC-specific support). Both solutions require OS-specific considerations: Windows supports a variant of libibverbs, but it's still divergent from the nix support. Registered I/O may provide an acceleration avenue on Windows with similar characteristics to io_uring or raw sockets on nix. "XDP for Windows" seems to be the spiritual successor to RIO. Viewing RIO as a companion to io_uring in providing acceleration alternatives to all OSes, XDP seems a more cogent/converged solution (even with different implementations for *nix/Windows).
Context
DPDK has scoped support for specific NICs. If a NIC is unsupported through this avenue, current acceleration is limited to io_uring or raw sockets. Windows clients have no alternatives. Adding a new LibOS using Express Data Path could provide a fast alternative which does not require NIC support.
Proposed Solution
Add a new LibOS which uses XDP/BPF technologies to implement network I/O. OS-specific solutions are required: *nix platforms use BPF API and AF_XDP sockets (which may also benefit from io_uring). Windows platforms require XDP for Windows. Layering needs further consideration w.r.t. io_uring and BPF.
Alternative Solutions
RDMA/RoCE provide another avenue for acceleration, although the complexity is arguably much higher than XDP (not to mention NIC-specific support). Both solutions require OS-specific considerations: Windows supports a variant of libibverbs, but it's still divergent from the nix support. Registered I/O may provide an acceleration avenue on Windows with similar characteristics to io_uring or raw sockets on nix. "XDP for Windows" seems to be the spiritual successor to RIO. Viewing RIO as a companion to io_uring in providing acceleration alternatives to all OSes, XDP seems a more cogent/converged solution (even with different implementations for *nix/Windows).