Skip to content

Control Messages

MoQT control messages are exchanged on a single bidirectional QUIC stream (stream #0). The exact message set and type IDs vary by draft version — the tables below show draft-17 (latest) with draft-14 equivalents noted where they differ.

MessageType ID (draft-17)DirectionDraft-14 equivalent
SETUP0x2F00BothCLIENT_SETUP (0x20) + SERVER_SETUP (0x21)
GOAWAY0x10BothSame

In draft-17, the separate CLIENT_SETUP and SERVER_SETUP messages are replaced by a single unified SETUP message sent by both sides. Setup options use delta-encoded key-value pairs.

Draft-14 also includes MAX_REQUEST_ID (0x15) and REQUESTS_BLOCKED (0x1A) which are removed in draft-17.

MessageType ID (draft-17)DirectionDraft-14 equivalent
SUBSCRIBE0x03Client → RelaySame
SUBSCRIBE_OK0x04Relay → ClientSame
REQUEST_UPDATE0x02Client → RelaySUBSCRIBE_UPDATE (0x02)
REQUEST_OK0x07Relay → Client(new — replaces per-message OK types)
REQUEST_ERROR0x05Relay → ClientSUBSCRIBE_ERROR (0x05)
PUBLISH_DONE0x0BRelay → ClientSame

In draft-17, UNSUBSCRIBE is removed. The consolidated REQUEST_OK / REQUEST_ERROR pattern replaces the separate per-message response types from draft-14.

MessageType ID (draft-17)DirectionDraft-14 equivalent
PUBLISH0x1DClient → RelaySame
PUBLISH_OK0x1ERelay → ClientSame
PUBLISH_BLOCKED0x0FClient → Relay(new in draft-17)
MessageType ID (draft-17)DirectionDraft-14 equivalent
FETCH0x16Client → RelaySame
FETCH_OK0x18Relay → ClientSame

In draft-14, FETCH_ERROR (0x19) and FETCH_CANCEL (0x17) are separate messages. In draft-17, errors use the consolidated REQUEST_ERROR pattern.

MessageType ID (draft-17)DirectionDraft-14 equivalent
SUBSCRIBE_NAMESPACE0x11Client → RelaySame
PUBLISH_NAMESPACE0x06Relay → ClientSame
NAMESPACE0x08Relay → Client(new in draft-17)
NAMESPACE_DONE0x0ERelay → Client(new in draft-17)

In draft-14, SUBSCRIBE_NAMESPACE_OK (0x12), SUBSCRIBE_NAMESPACE_ERROR (0x13), and UNSUBSCRIBE_NAMESPACE (0x14) are separate messages. Draft-17 consolidates these.

MessageType ID (draft-17)DirectionDraft-14 equivalent
TRACK_STATUS0x0DBothSame ID, different format

Draft-07 uses SUBSCRIBE_ANNOUNCES instead of SUBSCRIBE_NAMESPACE for namespace discovery, and has a different set of message type IDs overall.

See the full reference for complete field descriptions across all supported drafts.