You've successfully subscribed to Nuvotex Blog
Great! Next, complete checkout for full access to Nuvotex Blog
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info is updated.
Billing info update failed.

XDP for Windows - and it's open source

XDP (eXpress Data Path) is a high performance, programmable network data path and Microsoft is working on an implementation for Windows.

Daniel Nachtrub
Daniel Nachtrub

One thing i've seen a few days ago is quite huge. Microsoft is working on an XDP implementation that is running on windows.

You might have heard about XDP (eXpress Data Path) in relation with eBPF/BPF on linux where it is already used on several projects, just like cilium CNI for kubernetes.

Why should you care about BPF/XDP?

Running network applications requires quite some performance due the fact, that packet processing is starting on the network interface, traversing through kernel space, drivers etc. If the main purpose of a system is to serve data and perform network I/O the goal is to maximize the throughput.

This is where XDP comes into play. XDP offers a very early hook on the packet handling and allows to bypass most of the network stack. XDP itself is executing eBPF program code to perform packet handling and is therefore obviously constrained to  a limited set of operations. This is especially important because some network cards allow offloading these programs even onto the network adapter itself - how huge is this?

The network path is shown here:

source: Express Data Path - Wikipedia

As you can see, XDP allows very fast packet handling. If you now think of an application like cilium which is basically performing basic network operations like routing and redirecting packets, XDP is a perfect fit.

And now for windows

Microsoft is working on providing XDP for windows. The reason is quite reasonable, as most server applications today are serving content to the network. As using XDP directly would require you to write an application with XDP directly in mind, you probably won't use XDP directly.

Here comes a very important side note from Microsoft: Besides the XDP implementation (https://github.com/microsoft/xdp-for-windows/) and eBPF for Windows (https://github.com/microsoft/ebpf-for-windows), Microsoft seems to be working on an XDP integration with MSQUIC (https://github.com/microsoft/msquic). If this is happening, I can't wait to get playing with this - this is networking on steroids.

On the latest blog post regarding this topic (Open Source XDP for Windows - Microsoft Tech Community) you can see that it's still in development. So hopefully we're seeing this soon, maybe on Windows Server 2022?

WindowsNetwork

Daniel Nachtrub

Kind of likes computers. Linux foundation certified: LFCS / CKA / CKAD / CKS. Microsoft certified: Cybersecurity Architect Expert & Azure Solutions Architect Expert.