Cross-platform, C implementation of the IETF QUIC protocol, exposed to C, C++, C# and Rust.
Перейти к файлу
Yi Huang 22e14863c4
Add ECN support: ECN validation (#3168)
This PR implements 13.4.2. ECN Validation in RFC9000. The ECN validation algorithm implemented in this PR is very similar to the sample algorithm given in RFC9000 A.4. The details can be found at the top of path.h.

This PR also adds a new global QUIC setting, EcnEnabled and a flag, EcnCapable, in connection stats.

This PR does not implement CC ECN reaction, which will be done in a separate PR.
2022-10-24 15:38:52 -07:00
.azure Add option for some crude tracing on `stdout` (#3164) 2022-10-24 18:19:41 -04:00
.github Bump ossf/scorecard-action from 2.0.3 to 2.0.6 (#3183) 2022-10-22 17:11:55 -04:00
cmake Build and sign arm/arm64 Onebranch pipeline for linux (#2987) 2022-08-17 07:28:14 -04:00
docs Add ECN support: ECN validation (#3168) 2022-10-24 15:38:52 -07:00
scripts Add option for some crude tracing on `stdout` (#3164) 2022-10-24 18:19:41 -04:00
src Add ECN support: ECN validation (#3168) 2022-10-24 15:38:52 -07:00
submodules Bump submodules/googletest from `a9b2f04` to `e07617d` (#3178) 2022-10-22 17:09:13 -04:00
.dockerignore update msquic to clog 0.4.0 (#2260) 2022-01-04 10:11:46 -05:00
.gitattributes Fix jpg image file 2021-01-17 09:02:54 -08:00
.gitignore Add option for some crude tracing on `stdout` (#3164) 2022-10-24 18:19:41 -04:00
.gitmodules Update to OpenSSL 1.1.1q (#2868) 2022-07-05 15:18:15 -07:00
.sscignore use capital case for ignore CFS error (#2958) 2022-08-08 07:29:27 -04:00
CMakeLists.txt Add option for some crude tracing on `stdout` (#3164) 2022-10-24 18:19:41 -04:00
Cargo.toml Update main Version to v2.2 (#2948) 2022-08-05 10:59:45 -04:00
LICENSE Normalize Line Endings (#384) 2020-05-12 19:08:05 -07:00
README.md Update: Change Grease Quic Bit draft to RFC (#3011) 2022-08-24 06:57:26 -04:00
THIRD-PARTY-NOTICES Remove miTLS (#1398) 2021-03-29 17:21:54 -07:00
msquic.kernel.sln Completely remove 32 bit windows kernel mode (#2462) 2022-03-09 08:10:16 -05:00

README.md

MsQuic logo

Perf Dashboard Test Status Code Coverage CodeQL Language grade: C/C++ CII Best Practices Discord crates.io nuget

MsQuic is a Microsoft implementation of the IETF QUIC protocol. It is cross-platform, written in C and designed to be a general purpose QUIC library. MsQuic also has C++ API wrapper classes and exposes interop layers for both Rust and C#.

Protocol Features

QUIC has many benefits when compared to existing "TLS over TCP" scenarios:

  • All packets are encrypted and handshake is authenticated with TLS 1.3.
  • Parallel streams of (reliable and unreliable) application data.
  • Exchange application data in the first round trip (0-RTT).
  • Improved congestion control and loss recovery.
  • Survives a change in the clients IP address or port.
  • Stateless load balancing.
  • Easily extendable for new features and extensions.

Library Features

MsQuic has several features that differentiates it from other QUIC implementations:

  • Optimized for client and server.
  • Optimized for maximal throughput and minimal latency.
  • Asynchronous IO.
  • Receive side scaling (RSS) support.
  • UDP send and receive coalescing support.

Documentation

Contributing

For information on contributing, please see our contribution guidlines. Feel free to take a look at our Good First Issues list if you're looking for somewhere to start. If you'd just like to talk, come chat with us on Discord.