MoQT draft-18 Control Message Types
MoQT draft-18 defines 19 control message types and marks 5 code points reserved — 24 rows in all. The type code is the first field of every control message, so this is the table a decoder dispatches on.
The rows come from the draft's own Control Messages table, not from a hand-kept list. For the field layout of a message, follow its section link into the draft-18 text.
What changed since draft-17
Section titled “What changed since draft-17”Added
0x51SUBSCRIBE_TRACKS
Renumbered
0x50SUBSCRIBE_NAMESPACE— was0x11in draft-17
Control message types
Section titled “Control message types”| Type | Message | Stream | Defined in | Test vectors |
|---|---|---|---|---|
0x01 | RESERVED — SETUP for version 00 | — | — | — |
0x40 | RESERVED — CLIENT_SETUP for <= 10 | — | — | — |
0x41 | RESERVED — SERVER_SETUP for <= 10 | — | — | — |
0x20 | RESERVED — CLIENT_SETUP in <= 16 | — | — | — |
0x21 | RESERVED — SERVER_SETUP in <= 16 | — | — | — |
0x2F00 | SETUP | Control | §10.3 | 10 |
0x10 | GOAWAY | Control, Request | §10.4 | 6 |
0x3 | SUBSCRIBE | Request, First | §10.7 | 20 |
0x4 | SUBSCRIBE_OK | Request | §10.8 | 11 |
0x1D | PUBLISH | Request, First | §10.10 | 10 |
0x1E | PUBLISH_OK | Request | §10.5 | — |
0xB | PUBLISH_DONE | Request | §10.11 | 11 |
0x16 | FETCH | Request, First | §10.12 | 10 |
0x18 | FETCH_OK | Request | §10.13 | 5 |
0xD | TRACK_STATUS | Request, First | §10.14 | 3 |
0x6 | PUBLISH_NAMESPACE | Request, First | §10.15 | 4 |
0x50 | SUBSCRIBE_NAMESPACE | Request, First | §10.18 | 5 |
0x51 | SUBSCRIBE_TRACKS | Request, First | §10.19 | 6 |
0x8 | NAMESPACE | Request | §10.16 | 4 |
0xE | NAMESPACE_DONE | Request | §10.17 | 3 |
0xF | PUBLISH_BLOCKED | Request | §10.20 | 4 |
0x2 | REQUEST_UPDATE | Request | §10.9 | 10 |
0x7 | REQUEST_OK | Request | §10.5 | 19 |
0x5 | REQUEST_ERROR | Request | §10.6 | 22 |
24 rows from the Control Messages table of draft-18. The test-vector column counts the encode/decode vectors moqtap publishes for that type; it is a cross-check, not part of the registry.
The Stream column is the draft's own: Control for messages on the session control
stream, Request for messages on a per-request bidirectional stream, and First for a message that must open one.
Cross-check against the test-vector corpus
Section titled “Cross-check against the test-vector corpus”moqtap publishes 163 encode/decode vectors for draft-18 across 19 message types, and all three moqtap implementations validate against them. Comparing that corpus with the draft's table is an independent check on this page: 18 of the 19 assigned types have vectors.
In the draft's table but with no vectors: PUBLISH_OK (0x1E).
Where these numbers come from
Section titled “Where these numbers come from”
The table is parsed from table-5 of draft-ietf-moq-transport-18,
in the frozen rendering this site keeps at spec-sources/draft-18.html.
That file hashes to 45d10e235e796c0c63c0d7cbacc6fb49697316021fa9277b478af6459d771a52, which
is the same source_sha256 the moqtap codec's committed registry extraction
records for draft-18 — the two inputs are provably the same document.
Control message types are not an IANA registry in the drafts, so they are not part of the codec's registry extraction; the table id above is taken from that extraction's record of the tables it deliberately excluded, which is how this page finds the right table without guessing.
draft-18 error codes · Read draft-18 section by section
Control message types in other drafts
Section titled “Control message types in other drafts”moqtap covers drafts 07 through 20.
- draft-20 — 25 types
- draft-19 — 24 types
- draft-18 — 24 types
- draft-17 — 23 types
- draft-16 — 27 types
- draft-15 — 26 types
- draft-14 — 33 types
- draft-13 — 33 types
- draft-12 — 32 types
- draft-11 — 29 types
- draft-10 — 26 types
- draft-09 — 26 types
- draft-08 — 26 types
- draft-07 — 25 types
All MoQT control message types, draft by draft · How control messages work