Visual RFC.
ALL RFCs / RFC 9221
Read the RFC ↗
RFC 9221 / UNRELIABLE QUIC DATAGRAMS

Keep datagrams connection-wide and application-defined

04

Reliable streams and unreliable datagrams can share one QUIC connection and its security context. A DATAGRAM has no QUIC stream ID; the application defines any identifiers inside the data.

RFC 9221 · § 5.1EXAMPLE
3 / 3
Keep datagrams connection-wide and application-definedTwo lanes carry reliable STREAM control and unreliable DATAGRAM updates within one protected QUIC connection. The next state dissects complete frame 31 02 05 41: its payload is05 41, where the chosen application interprets05 as flow 5 and41 as dataA. QUIC defines neither that application prefix nor a stream-ID field in DATAGRAM. The last state begins after receiver transport handling and stops delivery at an application-memory boundary, illustrating permitted receiver drop rather than guaranteed processing.Same connection, different delivery promisesFrame already transport-handledReceiver transportReceiver applicationcannot store: MAY dropNo DATAGRAM flow-control creditsTransport receipt ≠ application success
03
Allow a received datagram to be dropped before application processing.

The receiver has handled the frame but cannot store its data for the application. DATAGRAM has no explicit flow-control credit that would guarantee enough receiver memory.

Source for this drawing: RFC 9221 · Read RFC section 5.1 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Terms in this drawing
Application flow ID
A discriminator the application may define inside Datagram Data.
Flow control
Receiver-capacity signaling, distinct from congestion control of network load.
Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

DATAGRAM frames belong to the connection as a whole. Any identifiers used to distinguish datagram flows or data kinds are the application protocol’s responsibility, not an extra QUIC stream field.

  • DATAGRAM frames belong to the connection as a whole. Any identifiers used to distinguish datagram flows or data kinds are the application protocol’s responsibility, not an extra QUIC stream field.
  • An application can carry reliable control data in STREAM frames and time-sensitive updates in DATAGRAM frames. They share the connection but do not acquire the same delivery guarantees.
  • One recommended application pattern is a leading variable-length integer flow identifier. In the chosen application format, data05 41 means application flow 5 followed by ASCII A. Other formats are possible.
  • The complete chosen frame 31 02 05 41 has Length 2; the flow identifier is part of those two application-data bytes. It is not a QUIC stream ID or a field mandated by RFC 9221.
  • DATAGRAM provides no explicit flow-control signaling and does not count toward stream or connection-wide data limits. A receiver that cannot process a datagram MAY drop it, including when memory is unavailable.
  • A valid received DATAGRAM SHOULD be delivered to the application immediately when it can be processed and stored. That recommendation does not guarantee delivery under resource pressure.
DETAILS

Flow5 and payload A are fictional application choices, not a registered standard flow namespace. The memory-pressure scene depicts transport receipt followed by failure to deliver to the receiving application. It does not contradict transport acknowledgment. This guide does not implement a tunnel, game protocol or a real QUIC connection.

Read the RFC section ↗

All chapters in RFC 9221

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗