Skip to main content

Module profile

Module profile 

Available on crate feature quic only.
Expand description

Typed, invariant-preserving QUIC wire profiles.

A QuicProfile describes the parts of a connection’s wire image that an implementation is free to choose: which versions it offers, how it lays out its transport parameters, how long its connection IDs are, how large and how many its Initial datagrams are, and how frames are arranged inside them. Every knob is checked when it is set, so a profile can reproduce another implementation’s first flight but never an invalid one; there is no raw byte hook.

QuicProfile::standard() is what this crate does on its own. The browser profiles were taken from captures of the named browser versions and are verified against those captures in this crate’s tests; crate::capture is the parser that reads a first flight back.

Structs§

ConnectionIdProfile
Connection ID lengths.
OpaqueParameter
A transport parameter this crate does not interpret, written as given.
PacketizationProfile
How packets and datagrams are formed.
ParameterId
The identifier of a transport parameter (RFC 9000 §18.2 and the QUIC transport parameter registry), including ones this crate does not otherwise know.
QuicProfile
A complete wire profile; see the module documentation.
TransportLimits
The advertised flow-control and timing limits, as the transport parameters carry them.
TransportParameterProfile
How the transport parameters are laid out.

Enums§

GreaseParameter
The reserved parameter written to exercise the peer’s tolerance (RFC 9000 §18.1).
InitialFlightLayout
How the frames of a client’s Initial packets are arranged.
PacketNumberLength
How long packet numbers are encoded.
PaddingPlacement
Where the bytes that bring an Initial datagram up to size go.
ParameterOrder
The order transport parameters are written in.
ProfileError
A value this profile cannot hold.