XDP (eXpress Data Path) is a high performance, programmable network data path that is already a Linux Kernel project with a significant community (Google, Amazon, Intel, Mellanox, etc.) around it. “XDP for Windows” is our new open source XDP interface for Windows on GitHub. It consists of a network driver and a placeholder user mode API that allows apps to achieve extremely low latency and high throughput. Apps using the AF_XDP user mode interface can deliver packets directly to the Windows XDP driver and into NDIS or directly to a compatible network card driver, avoiding the overhead of going through the TCP/IP stack.
We are open sourcing XDP for Windows because we want to participate with the rest of the XDP community in making XDP cross-platform. Therefore, our first contribution to the community is XDP for Windows with an MIT license. We are happy to be joining the XDP community via this project.
Current Status XDP for Windows is still under development, but we wanted to open source it earlier in the development process to get feedback from the XDP community. In its current form, XDP for Windows is ready for testing and prototyping, and in fact we have already started integrating support into MsQuic (more on that in a future post). We have also been partnering with swXtch.io, who are working on several high-performance applications leveraging XDP for Windows as part of their cloudSwXtch networking technologies for Azure.
Since it is open source, anyone can clone the repo and build XDP for Windows, or they can simply download the development kit from the latest build. XDP for Windows was built to be a generic network accelerator for many scenarios. We expect many different groups will be able to make use of it, including the financial sector, media, and defense. If you have a need for speed and want to deliver millions of packets per second at low microsecond latencies on Windows, then go to GitHub repository and try it out.
Going Forward There is still a lot to do and a long road ahead for this project. There are still several features we are actively working on (for example, checksum offload). We are still analyzing and improving our performance numbers. We plan to integrate with eBPF for Windows in the future as well. Lots of things are still in flux, but we welcome feedback or even contributions from the community.
For the latest information please look on GitHub (and give us a star if you think this is good work)!