MsQuic

{{short description|Microsoft open source library}}

{{Infobox software

| name = MsQuic

| logo = MsQuic logo.png

| screenshot =

| screenshot size =

| caption =

| author =

| developer = Microsoft

| released = {{Start date and age|2019|11|27}}

| latest release version = v2.2.4

| latest release date = {{Start date and age|2023|10|16}}

| repo =

| programming language = C, C++

| operating system = Windows 11 and later, Windows Server, Linux, Xbox Series X/S software

| platform = Cross-platform

| genre = Software library

| license = MIT License

| website =

}}

MsQuic is a free and open source implementation of the IETF QUIC protocol written in C{{Cite web|url=https://www.zdnet.com/article/microsoft-open-sources-in-house-library-for-handling-quic-connections/|title=Microsoft open-sources in-house library for handling QUIC connections|first=Catalin|last=Cimpanu|website=ZDNet}} that is officially supported on the Microsoft Windows (including Server), Linux, and Xbox platforms. The project also provides libraries for macOS and Android, which are unsupported.{{Cite web|url=https://winbuzzer.com/2020/04/29/microsofts-in-house-quic-connections-library-is-now-open-source-xcxwbn/|title=Microsoft's In-House QUIC Connections Library is Now Open Source|first=Luke|last=Jones|date=April 29, 2020|website=WinBuzzer}} It is designed to be a cross-platform general purpose QUIC library optimized for client and server applications benefitting from maximal throughput and minimal latency. By the end of 2021 the codebase had over 200,000 lines of production code, with 50,000 lines of "core" code,{{Cite web |last=Banks |first=Nick |date=December 7, 2021 |title=QUIC @ Microsoft |url=https://epiq21.github.io |access-date=July 11, 2022 |website=EPIQ 2021}} sharable across platforms. The source code is licensed under MIT License and available on GitHub.{{Cite web |date=November 7, 2020 |title=microsoft/msquic |url=https://github.com/microsoft/msquic |via=GitHub}}

Among its features are, in part, support for asynchronous IO, receive-side scaling (RSS), UDP send and receive coalescing, and connection migrations that persist connections between client and server to overcome client IP or port changes,{{cite journal | doi=10.1051/epjconf/201921408026 | title=Integration and Evaluation of QUIC and TCP-BBR in longhaul Science Data Transfers | year=2019 | last1=Lopes | first1=Raul H. C. | last2=Franqueira | first2=Virginia N. L. | last3=Rand | first3=Duncan | journal=EPJ Web of Conferences | volume=214 | page=08026 | bibcode=2019EPJWC.21408026L | s2cid=203699308 | doi-access=free }} such as when moving throughout mobile networks.{{Cite web|url=https://github.com/microsoft/msquic#library-features|title=MsQuic Library Features|date=September 2020|via=GitHub}}

Both the HTTP/3{{Cite web|url=https://www.theregister.com/2020/05/04/microsoft_reveals_msquic_quic_implementation/|title=QUIC, dig in: Microsoft open-sources MsQuic, its implementation of Google-spawned TCP-killer QUIC|first=Simon|last=Sharwood|website=www.theregister.com}} and SMB stacks{{Cite web|url=https://docs.microsoft.com/en-us/windows-server/storage/file-server/smb-over-quic|title=SMB over QUIC|website=Microsoft Docs|date=18 May 2023 }} of Microsoft Windows leverage MsQuic, with msquic.sys providing kernel-mode functionality. Being dependent upon Schannel for TLS 1.3, kernel mode therefore does not support 0-RTT.{{Citation |title=msquic/Platforms.md |date=2022-07-11 |url=https://github.com/microsoft/msquic/blob/9f74f69d0c16fadb62a332246daabac704bc7db0/docs/Platforms.md |publisher=Microsoft |access-date=2022-07-12}}

User-mode programs can implement MsQuic, with support 0-RTT, through msquic.dll, which can be built from source code or downloaded as a shared library through binary releases on the repository.

Its support for the Microsoft Game Development Kit makes MsQuic usable on both Xbox and Windows.

See also

References

{{Reflist}}