Microsoft is open sourcing our QUIC library, MsQuic, on GitHub under an MIT license. MsQuic is a cross-platform, general-purpose library that implements the QUIC transport protocol. QUIC is being standardized by the Internet Engineering Task Force (IETF). MsQuic is a client and server solution optimized for multiple usage patterns and is used by multiple Microsoft products and services. MsQuic is currently in preview and supports Windows and Linux.
We are open sourcing MsQuic on GitHub both to support internal partners and to share our solution with the community. GitHub is the primary workspace for MsQuic, containing all the product and test code. We’re using Azure Pipelines to provide cross-platform builds and to run over 4,000 test cases for every commit and pull request. We are still stabilizing our GitHub environment and not yet taking external contributions, but we will in the future.
There are several substantial benefits from moving to GitHub.
- Code reviews will be public via the GitHub’s pull request model, allowing for more external input during the development process.
- Issues will also be tracked on GitHub to allow for better public discussion and visibility.
- Documentation will be in the same place as the code.
We hope this increased public visibility into the overall development process of the product will help build a vibrant community around MsQuic.
MsQuic has consistently been one of the most interoperable implementations at the cross-industry IETF interop events. We have successfully validated interop of MsQuic with canary versions of browsers like Chrome and Edge.
Adoption and Deployment
Windows will ship with MsQuic in the kernel to support various inbox features. The Windows HTTP/3 stack is being built on top of MsQuic.
Microsoft 365 is testing a preview version of IIS using HTTP/3 to reduce tail loss latencies in the last mile. This is currently active in internal dogfood environments.
.NET Core has built HTTP/3 support into Kestrel and HttpClient on top of MsQuic. HTTP/3 support is in experimental preview for the 5.0 release of .NET Core.
SMB in Windows is also prototyping MsQuic usage. QUIC brings several benefits for SMB, such as better internet reachability, a secured connection based on industry standard TLS and server authentication with certificate validation. Best of all, this brings a completely different workload on top of MsQuic, strengthening the general-purpose nature of the transport.
There are several other Microsoft teams prototyping with user mode MsQuic, targeting a diverse set of use cases.
Microsoft is an active participant and driver of QUIC in the industry and is consequently open sourcing our implementation as a reference for others. MsQuic brings performance and security improvements to many important networking scenarios. Our online services benefit the most from performance improvements like reduced tail latency and faster connection setup. Our connections will be able to seamlessly switch networks because they can survive IP address/port changes. This equates to better user experience on our edge devices.
MsQuic, like the IETF QUIC standard, is a work in progress and does not have an official release yet, but it is ready for prototyping and testing. You can look forward to another blog with a technical deep dive into MsQuic.
For more info on MsQuic continue reading on GitHub.