Module quic

Source
Expand description

All QUIC-related common structures.

Structs§

ACKFrame
Receivers send ACK frames (types 0x02 and 0x03) to inform senders of packets they have received and processed. The ACK frame contains one or more ACK Ranges. ACK Ranges identify acknowledged packets. If the frame type is 0x03, ACK frames also contain the sum of QUIC packets with associated ECN marks received on the connection up until this point. QUIC implementations MUST properly handle both types and, if they have enabled ECN for packets they send, they SHOULD use the information in the ECN section to manage their congestion state.
AckRange
Each ACK Range consists of alternating Gap and ACK Range values in descending packet number order. ACK Ranges can be repeated. The number of Gap and ACK Range values is determined by the ACK Range Count field; one of each value is present for each value in the ACK Range Count field.
Address
A QUIC address available over the connection.
ConnectionCloseFrame
An endpoint sends a CONNECTION_CLOSE frame (type=0x1c or 0x1d) to notify its peer that the connection is being closed. The CONNECTION_CLOSE with a frame type of 0x1c is used to signal errors at only the QUIC layer, or the absence of errors (with the NO_ERROR code). The CONNECTION_CLOSE frame with a type of 0x1d is used to signal an error with the application that uses QUIC.
ConnectionId
A Connection ID structure, exposed to the plugin.
CryptoFrame
A CRYPTO frame (type=0x06) is used to transmit cryptographic handshake messages. It can be sent in all packet types except 0-RTT. The CRYPTO frame offers the cryptographic protocol an in-order stream of bytes. CRYPTO frames are functionally identical to STREAM frames, except that they do not bear a stream identifier; they are not flow controlled; and they do not carry markers for optional offset, optional length, and the end of the stream.
DataBlockedFrame
A sender SHOULD send a DATA_BLOCKED frame (type=0x14) when it wishes to send data, but is unable to do so due to connection-level flow control. DATA_BLOCKED frames can be used as input to tuning of flow control algorithms.
EcnCount
The ACK frame uses the least significant bit (that is, type 0x03) to indicate ECN feedback and report receipt of QUIC packets with associated ECN codepoints of ECT(0), ECT(1), or CE in the packet’s IP header. ECN Counts are only present when the ACK frame type is 0x03.
ExtensionFrame
QUIC frames do not use a self-describing encoding. An endpoint therefore needs to understand the syntax of all frames before it can successfully process a packet. This allows for efficient encoding of frames, but it means that an endpoint cannot send a frame of a type that is unknown to its peer.
FrameRegistration
A registration, made by a plugin bytecode, to advertise to the host implementation its support of a specific frame type.
HandshakeDoneFrame
The server uses a HANDSHAKE_DONE frame (type=0x1e) to signal confirmation of the handshake to the client.
Header
A QUIC packet header structure, as close as it is encoded on the wire.
HeaderExt
Some additional fields that may be present in QUICv1, but are not ensure to be always present.
MaxDataFrame
A MAX_DATA frame (type=0x10) is used in flow control to inform the peer of the maximum amount of data that can be sent on the connection as a whole.
MaxStreamDataFrame
A MAX_STREAM_DATA frame (type=0x11) is used in flow control to inform a peer of the maximum amount of data that can be sent on a stream.
MaxStreamsFrame
A MAX_STREAMS frame (type=0x12 or 0x13) inform the peer of the cumulative number of streams of a given type it is permitted to open. A MAX_STREAMS frame with a type of 0x12 applies to bidirectional streams, and a MAX_STREAMS frame with a type of 0x13 applies to unidirectional streams.
NewConnectionIdFrame
An endpoint sends a NEW_CONNECTION_ID frame (type=0x18) to provide its peer with alternative connection IDs that can be used to break linkability when migrating connections.
NewTokenFrame
A server sends a NEW_TOKEN frame (type=0x07) to provide the client with a token to send in the header of an Initial packet for a future connection.
PaddingFrame
A PADDING frame (type=0x00) has no semantic value. PADDING frames can be used to increase the size of a packet. Padding can be used to increase an initial client packet to the minimum required size, or to provide protection against traffic analysis for protected packets.
PathChallengeFrame
Endpoints can use PATH_CHALLENGE frames (type=0x1a) to check reachability to the peer and for path validation during connection migration.
PathResponseFrame
A PATH_RESPONSE frame (type=0x1b) is sent in response to a PATH_CHALLENGE frame.
PingFrame
Endpoints can use PING frames (type=0x01) to verify that their peers are still alive or to check reachability to the peer.
RcvInfo
Network-layer information about the packet being received.
ResetStreamFrame
An endpoint uses a RESET_STREAM frame (type=0x04) to abruptly terminate the sending part of a stream.
RetireConnectionIdFrame
An endpoint sends a RETIRE_CONNECTION_ID frame (type=0x19) to indicate that it will no longer use a connection ID that was issued by its peer. This includes the connection ID provided during the handshake. Sending a RETIRE_CONNECTION_ID frame also serves as a request to the peer to send additional connection IDs for future use. New connection IDs can be delivered to a peer using the NEW_CONNECTION_ID frame.
SentPacket
A SentPacket as defined by quic-recovery, Section A.1.1. This has the difference that this structure is not only used for recovery purpose, but also during the whole process of packet sending.
StopSendingFrame
An endpoint uses a STOP_SENDING frame (type=0x05) to communicate that incoming data is being discarded on receipt at application request. STOP_SENDING requests that a peer cease transmission on a stream.
StreamDataBlockedFrame
A sender SHOULD send a STREAM_DATA_BLOCKED frame (type=0x15) when it wishes to send data, but is unable to do so due to stream-level flow control. This frame is analogous to DATA_BLOCKED.
StreamFrame
STREAM frames implicitly create a stream and carry stream data. The STREAM frame Type field takes the form 0b00001XXX (or the set of values from 0x08 to 0x0f). The three low-order bits of the frame type determine the fields that are present in the frame:
StreamsBlockedFrame
A sender SHOULD send a STREAMS_BLOCKED frame (type=0x16 or 0x17) when it wishes to open a stream, but is unable to due to the maximum stream limit set by its peer. A STREAMS_BLOCKED frame of type 0x16 is used to indicate reaching the bidirectional stream limit, and a STREAMS_BLOCKED frame of type 0x17 is used to indicate reaching the unidirectional stream limit.

Enums§

ConnectionField
Field of a connection.
Direction
Indicates if the info is about source or destination.
Frame
A QUIC frame structure, as close as it is encoded on the wire.
FrameSendKind
Define how many times a frame should be considered sending in a single packet.
FrameSendOrder
Determine in which order frames should be sent. The order may have some importance regarding the sending priority (an early scheduled frame would usually have more available bytes to write than a late one).
Host
Indicates if the info is local or remote.
IDList
A subfield used when a collection of elements using a monotonically increasing ID.
KPacketNumberSpace
An enum to enumerate the three packet number spaces, as defined by Section A.2 of quic-recovery.
PacketNumberSpaceField
Field of a packet number space.
PacketType
QUIC packet type.
QVal
Inputs that can be passed to protocol operations for the QUIC protocol.
RangeSetField
Field of a range set.
RcvPacketField
Fields of the RcvPacket, only available in receiving workflow.
RecoveryField
Fields for the Recovery as defined by quic-recovery, Section A.3. These fields also include the congestion control ones, as defined by quic-recovery, Section B.2.
Registration
A request from the plugin at initialization time.
SentPacketField
Fields of the SentPacket as defined by quic-recovery, Section A.1.1. Compared to the specification, additional fields are present.
TransportParameterField
Classical transport parameters.

Type Aliases§

PacketNumber
A QUIC packet number.