To ensure that implementations correctly handle unknown values and do not fail when encountering protocol extensions they do not understand, this document reserves a range of values for the purpose of greasing; see Section 3.3 of [RFC9170].
Grease values follow the pattern 0x7f * N + 0x9D for non-negative
integer values of N (that is, 0x9D, 0x11C, ..., 0x3fffffffffffffde).
The following registries include GREASE reservations:
-
Setup Options (Section 15.4)
-
Properties (Section 15.8)
-
Session Termination Error Codes (Section 15.11.1)
-
REQUEST_ERROR Codes (Section 15.11.2)
-
PUBLISH_DONE Codes (Section 15.11.3)
-
Stream Reset Error Codes (Section 15.11.4)
-
MOQT Auth Token Type
Because new values in these registries can be defined without negotiation, implementations MUST handle unknown values gracefully. Endpoints MUST NOT close the session solely because they received an unknown value. The following rules apply:
Setup Options with reserved identifiers have no semantics and can carry arbitrary values. Endpoints MUST ignore unknown Setup Options as specified in Section 10.3.
Unknown Properties MUST be handled as specified in Section 2.5.
Receipt of an unknown error code in any error context (Session Termination,
REQUEST_ERROR, PUBLISH_DONE, or Data Stream Reset) MUST be treated as
equivalent to INTERNAL_ERROR for that context. An endpoint MUST NOT close
the session because it received an unknown error code in a REQUEST_ERROR
or PUBLISH_DONE.