DPDK Welcomes Microsoft

By December 10, 2020Blog

To learn more about Microsoft, DPDK’s newest Gold member, and how they are working within the DPDK community, we sat down with Omar Cardona, Doug Stamper and Harini Ramakrishnan from the Core Networking team for a Q&A session.  Read below to see how Microsoft collaborates with DPDK. 

Can you tell us a little about your organization/department?

We are the Core Networking team in the Azure Edge + Platform (Azure E+P) group at Microsoft. Our organization has the charter to deliver platform innovation to support Microsoft Core OSes and bring services to modernize customer infrastructure. Our team is responsible for the L1-L7 networking stack including offloads, driver platform, transports, and HTTP across the cloud and edge. We are also responsible for SDN and container/Kubernetes networking. Key to our mission is a predictable, high bandwidth, low latency networking data plane that serves as the foundation for cloud and edge infrastructure and services. 

Why is your organization adopting an open source approach? 

Microsoft strongly believes in working with the open source communities on technological innovations to deliver transformational experiences. Multiple teams in our organization are contributing to and working with open source communities and standard bodies to innovate in the open, accelerating adoption and standardization. In fact, we have a sister team contributing to the Linux Kernel, and general Linux OS and tooling.  They work across Microsoft Cloud and On-Prem deployments, having a long-standing partnership with the DPDK community.

We have heard from our ecosystem partners and customers a desire in aligning Windows with Linux and Open Source on networking architecture and implementation. Towards this end, it was a natural progression for us to collaborate with the DPDK community and align our data plane investments. 

Why did you join DPDK and what sort of impact do you think DPDK has on the data plane?

Workloads today require an insatiable amount of network bandwidth with low latency performance. NICs are getting faster with 200GbE in the horizon, while single threaded performance of a CPU seems to be stagnating. Customers do not want to compromise their experience and are seamlessly moving workloads between the cloud and the edge deployments. The high packet rates of a cloud and a container world pose a significant challenge to the OS Kernel network stack, specifically for Virtual Networking and Network Function Virtualization. While the Windows network stack has evolved tremendously improving the cycles/per byte performance over the years, we are nearing the point of diminishing returns.  

DPDK successfully by-passes the limitations of the in-kernel network stack, while also providing a path to user mode processing. The ecosystem and ISVs are observing that DPDK allows them to enter a different realm of network performance, even at the cost of dedicating the hardware to the appliance.

We saw this with the MVP Windows DPDK port, back in 2017, when optimized l2fwd and l3fwd sample applications reached up to 70Mpps performance on Windows, Making networking apps scream on Windows with DPDK – YouTube. This is not possible today with native socket implementation on Windows. 

We believe that through our partnership with the DPDK community, we can bring this to more Windows users. 

  What do you see as the top benefits of being part of the DPDK community?

Significant effort has been underway over the last couple of years, to add Windows platform support to DPDK. Today, with v20.11 release, we have ~10 critical core libraries and drivers working on Windows platform. This would not have been possible without the support of our partners at Intel and Mellanox, under the guidance of the Techboard lead Thomas Monjalon. Not to forget critical contributions from DPDK end users and maintainers on memory management and stabilization. We would have likely not gotten the reach that we have today, but for the community. 

There is a long journey ahead to integrate Windows Platform support to ensure that each new version of DPDK libraries and APIs will build and run successfully on Windows (without forking) as validated by testing performed by the community lab. Monumental efforts are required to bring these solutions to work seamlessly with the Windows ecosystem. We hope that by working with the DPDK community, we can learn from the collective expertise and leverage the performance standardization that DPDK brings. We are deeply interested in enabling a kernel-bypass technology on Windows for devices and appliances ranging from IOT, to Client, to Cloud Based Servers. 

Aligning with the community on a high-performance packet processing model allows us to contribute and leverage mindshare, and co-engineer towards a common goal. 

What sort of contributions has your team made –or plans to make — to the community,ecosystem through DPDK participation?

One of the primary contributions from Microsoft has been bringing the ecosystem together to collectively consider DPDK as a viable kernel bypass technology on Windows. In addition, we have begun our contributions with the generic NetUIO driver for Windows. We have contributions in the pipeline which will bring support for applications such as testpmd and tools. This is just the beginning; we are looking forward to working with the UNH lab in standardizing testing on Windows SKUs and bringing our ability to get the most out of Windows to the community. We are experimenting with Network Virtualization for VM and Container performance, and increasingly leveraging DPDK tooling for Network performance profiling.

What do you think sets DPDK apart from other industry alliances or organizations?

DPDK brings unparalleled and extreme focus on network performance.  DPDK is very well organized, with good code structure and great documentation to simplify onboarding.  It has a sensible multi-platform strategy, feasible for Windows inclusion.  Specifically, the modularity and cohesion of the components and ease of combining the minimal necessary libraries to achieve application performance goals.

How will DPDK help your business?

Our team contributes to the multi-OS platform, foundational to operate and scale Microsoft’s businesses across Azure Cloud and Edge portfolio of products. Increasing application density and bandwidth requirements on our data plane, across Windows and Linux, necessitates an investment in a promising network stack bypass technology such as DPDK. DPDK’s user space poll-based, run-to-completion model allows for significant scaling of network performance in the face of stalled CPU speeds.

Working with the community on how DPDK lands on Windows Platform allows modernization of the network data path for future workloads.  Additionally, a common architecture increases the overall quality of the drivers and consumers, benefiting all DPDK high volume platforms.

What advice would you give to someone considering joining DPDK or getting involved in open source?

The first step would be to subscribe to the dev@dpdk.org email list and observe how the community functions. It’s good to start small and identify an area of expertise to contribute to. Something as simple as reviewing and testing incoming patches adds value. Beyond that, participating by submitting patches, contributing to tool chains, adding CI tests are all valuable ways to contribute. 

We are looking for contributions and expertise to bring DPDK Windows forward. Contribute patches under the guidelines, reference “dpdk-windows” in the email or write to dpdkwin@microsoft.com. We have a Windows working group that you can also join to learn how to help. 

What do you want to tell those members of the community that are interested in Windows Platform support?

Test the DPDK libraries on Windows and share your feedback! Head over to the getting started guide. A general roadmap has been published, however, we want to hear from the community to further influence our roadmap. Encourage everyone to participate in the survey below: