diff --git a/draft-ietf-moq-transport.md b/draft-ietf-moq-transport.md index d17a17db..0f70ad22 100644 --- a/draft-ietf-moq-transport.md +++ b/draft-ietf-moq-transport.md @@ -1314,6 +1314,16 @@ followed by a FETCH. Depending upon the application, one might want to send both messages at the same time or wait for the first to return before sending the second. +Subscribers can also request a publisher to not forward objects for a given +track by setting the `Forward` field to 0. This can reduce the latency of beginning delivery of +a track that is expected to be needed soon when a Relay is substantially closer to the +subscriber than the Original Publisher. Relays SHOULD always set the `Forward` +flag to 1 if a new subscription needs to be sent upstream, regardless of the +value of the `Forward` field from the downstream subscription. Subscriptions that +are not forwarded consume resources from the publisher, so a publisher might +deprioritize, reject, or close those subscriptions to ensure other subscriptions can +be delivered. + The format of SUBSCRIBE is as follows: ~~~ @@ -1327,6 +1337,7 @@ SUBSCRIBE Message { Track Name (..), Subscriber Priority (8), Group Order (8), + Forward (8), Filter Type (i), [StartGroup (i), StartObject (i)], @@ -1363,6 +1374,11 @@ Ascending (0x1) or Descending (0x2) order by group. See {{priorities}}. A value of 0x0 indicates the original publisher's Group Order SHOULD be used. Values larger than 0x2 are a protocol error. +* Forward: If 1, Objects matching the subscription are forwarded +to the subscriber. If 0, Objects are not forwarded to the subscriber. +Any other value is a protocol error and MUST terminate the +session with a Protocol Violation ({{session-termination}}). + * Filter Type: Identifies the type of filter, which also indicates whether the StartGroup/StartObject and EndGroup/EndObject fields will be present. @@ -1420,6 +1436,7 @@ SUBSCRIBE_UPDATE Message { StartObject (i), EndGroup (i), Subscriber Priority (8), + Forward (8), Number of Parameters (i), Subscribe Parameters (..) ... } @@ -1440,6 +1457,11 @@ open-ended. other subscriptions in the same session. Lower numbers get higher priority. See {{priorities}}. +* Forward: If 1, Objects matching the subscription are forwarded +to the subscriber. If 0, Objects are not forwarded to the subscriber. +Any other value is a protocol error and MUST terminate the +session with a Protocol Violation ({{session-termination}}). + * Subscribe Parameters: The parameters are defined in {{version-specific-params}}. ## UNSUBSCRIBE {#message-unsubscribe}