An implementation of the IETF QUIC protocol
s2n-quic is a Rust implementation of the IETF QUIC protocol, featuring:
See the API documentation, examples, and s2n-quic Guide to get started with s2n-quic.
s2n-quic is available on crates.io and can be added to a project like so:
[dependencies]
s2n-quic = "1"NOTE: The default TLS provider depends on the platform. On unix-like systems, and on Windows
when building with the GNU/MinGW toolchain, s2n-tls is used as
the default TLS provider. On Windows with the MSVC toolchain,
rustls is the default, because s2n-tls does not build with
MSVC.
On linux systems, aws-lc-rs will be used for cryptographic
operations. A C compiler and CMake may be required on these systems for installation.
The following implements a basic echo server and client. The client connects to the server and pipes its stdin on a stream. The server listens for new streams and pipes any data it receives back to the client. The client will then pipe all stream data to stdout.
……s2n-quic will maintain a rolling MSRV (minimum supported rust version) policy of at least 6 months. The current s2n-quic version is not guaranteed to build on Rust versions earlier than the MSRV.
The current MSRV is 1.92.0.
s2n-quic can be built on Linux, MacOS, and Windows. s2n-quic requires Linux kernel version 5.0 or later. Earlier Linux kernel versions are not supported as they lack the Generic Segmentation Offload (GSO) capabilities required by s2n-quic.
If you discover a potential security issue in s2n-quic we ask that you notify AWS Security via our vulnerability reporting page. Please do not create a public github issue.
See our Security Reporting Policy for additional guidance on issues considered in-scope for our threat model.
If you package or distribute s2n-quic, or use s2n-quic as part of a large multi-user service, you may be eligible for pre-notification of future s2n-quic releases. Please contact [email protected].
This project is licensed under the Apache-2.0 License.
No open issues yet, or sync has not completed.