ACK Frame (Type 0x02)
Acknowledges one or more packet ranges.
Based on QUIC ACK Frame (RFC 9000, Section 19.3).
Includes optional ECN counts for Explicit Congestion Notification.
The clock the transport's timing runs on: a monotonic instant for RTT
samples, send times, ACK delay, pacing and the idle check, and the timers
the PTO, the loss timer, the ACK timer and the watchdog are armed on.
CONNECTION_CLOSE Frame (Type 0x0b)
Signals graceful or error termination of the connection.
Contains error code, frame type that caused error (if applicable),
and a human-readable reason phrase.
DATA_BLOCKED Frame (Type 0x0e)
Indicates that the connection is blocked due to connection-level
flow control. Sent when the sender wants to send data but is blocked
by the connection-level MAX_DATA limit.
MTU_PROBE Frame (Type 0x08)
Used for DPLPMTUD (RFC 8899). This frame is used to pad a packet to a
specific size to probe if the path supports a larger MTU.
NEW_CONNECTION_ID Frame (Type 0x10)
Provides the peer with a new Connection ID that can be used for this connection.
This enables connection migration and prevents linkability attacks.
Manages packet sending and receiving for a UDXStream
Tracks sent packets, matches ACKs to them, and declares loss the way
RFC 9002 section 6.1 does: from acknowledgements, never from a per-packet
timer. The port of go-udx's PacketManager.
PATH_CHALLENGE Frame (Type 0x09)
Used to validate a new network path during connection migration.
Contains arbitrary data that the peer must echo back.
RETIRE_CONNECTION_ID Frame (Type 0x11)
Indicates that the endpoint will no longer use a Connection ID that was
issued by the peer. This also serves as a request for the peer to send
a new Connection ID.
A STATELESS_RESET packet that can be sent by a server that has lost
connection state. It looks like a regular packet but is identified by
the presence of a valid stateless reset token.
STOP_SENDING Frame (Type 0x0d)
Signals that the endpoint no longer wishes to receive data on a stream.
The peer should close the write side of the stream in response.
STREAM_DATA_BLOCKED Frame (Type 0x0f)
Indicates that a stream is blocked due to stream-level flow control.
Sent when the sender wants to send data on a stream but is blocked
by the stream-level flow control limit.
The smoothed RTT before the first sample (RFC 9002 section 6.2.2), with
initialRttVar its variation: the first PTO is about a second. The
estimate used to start at 100 ms, so on a slow path the first probe went
out before the handshake could answer.
The largest datagram stream data goes out in: what any internet path
carries, as QUIC's 1200 (RFC 9000 section 14), so it fits the 1280-byte
IPv6 minimum MTU with its headers. Mobile carriers' tunnels (464XLAT,
GTP) carry less than 1500 and drop a larger datagram that may not be
fragmented: a write of more than one full datagram then never arrives,
and the connection is given up. go-udx sends the same size.