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.
- Connection
Close Frame - 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.
- Connection
Id - A Connection ID structure, exposed to the plugin.
- Crypto
Frame - 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.
- Data
Blocked Frame - 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.
- Extension
Frame - 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.
- Frame
Registration - A registration, made by a plugin bytecode, to advertise to the host implementation its support of a specific frame type.
- Handshake
Done Frame - 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.
- Header
Ext - Some additional fields that may be present in QUICv1, but are not ensure to be always present.
- MaxData
Frame - 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.
- MaxStream
Data Frame - 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.
- MaxStreams
Frame - 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.
- NewConnection
IdFrame - 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.
- NewToken
Frame - 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.
- Padding
Frame - 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.
- Path
Challenge Frame - Endpoints can use PATH_CHALLENGE frames (type=0x1a) to check reachability to the peer and for path validation during connection migration.
- Path
Response Frame - A PATH_RESPONSE frame (type=0x1b) is sent in response to a PATH_CHALLENGE frame.
- Ping
Frame - 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.
- Reset
Stream Frame - An endpoint uses a RESET_STREAM frame (type=0x04) to abruptly terminate the sending part of a stream.
- Retire
Connection IdFrame - 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.
- Sent
Packet - 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.
- Stop
Sending Frame - 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.
- Stream
Data Blocked Frame - 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.
- Stream
Frame - 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:
- Streams
Blocked Frame - 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§
- Connection
Field - 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.
- Frame
Send Kind - Define how many times a frame should be considered sending in a single packet.
- Frame
Send Order - 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.
- KPacket
Number Space - An enum to enumerate the three packet number spaces, as defined by Section A.2 of quic-recovery.
- Packet
Number Space Field - Field of a packet number space.
- Packet
Type - QUIC packet type.
- QVal
- Inputs that can be passed to protocol operations for the QUIC protocol.
- Range
SetField - Field of a range set.
- RcvPacket
Field - Fields of the RcvPacket, only available in receiving workflow.
- Recovery
Field - 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.
- Sent
Packet Field - Fields of the SentPacket as defined by quic-recovery, Section A.1.1. Compared to the specification, additional fields are present.
- Transport
Parameter Field - Classical transport parameters.
Type Aliases§
- Packet
Number - A QUIC packet number.