<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.14 (Ruby 3.3.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-duke-moq-subscribe-rewind-00" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="moq-subscribe-rewind">The Rewind Subscription Filter</title>

    <author fullname="Martin Duke">
      <organization>Google</organization>
      <address>
        <email>martin.h.duke@gmail.com</email>
      </address>
    </author>

    <date />

    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>media over quic</keyword> <keyword>subscribe</keyword>

    <abstract>


<?line 36?>

<t>This document proposes a Media Over Quic Transport (MOQT) extension that enables
a new Subscription Filter, so that a subscriber can request that a finite number
of past groups be delivered with SUBSCRIBE semantics (multiple streams,
potentially incomplete) rather than FETCH semantics (single stream, complete,
head-of-line-blocking). Service of this request is best-effort by the publisher.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://martinduke.github.io/draft-duke-moq-subscribe-rewind/draft-duke-moq-subscribe-rewind.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-duke-moq-subscribe/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Media Over Quic Working Group mailing list (<eref target="mailto:moq@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/moq/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinduke/draft-duke-moq-subscribe-rewind"/>.</t>
    </note>


  </front>

  <middle>


<?line 44?>

<section anchor="introduction"><name>Introduction</name>

<t>In MOQT <xref target="MOQT"/>, tracks are delivered via atomic Objects that are organized
into Groups, which serve as join points, and Subgroups, that imply dependency
between Objects and serve as the units to be fed into QUIC or Webtransport
streams.</t>

<t>Subscribers can send SUBSCRIBE messages to receive messages that arrive at, or
are created by, the publisher in the future. Such messages are delivered either
one stream per Subgroup, or in QUIC Datagrams, as dictated by the original
publisher. The stream mapping allows Objects that are no longer of use to the
subscriber to not be sent or retransmitted without blocking later Objects.</t>

<t>Subscribers can also send FETCH messages to retrieve Objects from the past. The
requested Object range is delivered on a single stream and cannot omit Objects
that exist at the original pulbsher. If the entirely of the Object range is not
in cache, a relay will have to issue its own FETCH upstream to satisfy the
subscriber.</t>

<t>Because the subscriber may not know the live edge at request time, a variant of
FETCH known as "Joining FETCH" instructs the publisher to use the current live
edge as the end of the Object range. A "Relative Joining FETCH" defines the
start of the Object range relative to the live edge. For instance, a Relative
Joining FETCH might request two Groups prior to the live edge, which would
deliver the two latest complete Groups as well as all Objects in the current
Group before the live edge. Joining FETCH uses the same delivery semantics as
other FETCH: all Objects are delivered in order on a single stream.</t>

<t>In some use cases, this behavior is not optimal. The subscriber might not need
the delivery guarantees associated with FETCH if Objects will arrive too late
to be useful. Furthermore, if some of the FETCHed Objects are available in
cache, they might have to wait for other, blocking Objects to be delivered from
upstream.</t>

<t>This document describes the Subscribe Rewind extension, which specifies a new
Subscription Filter type "Rewind", allowing the subscriber to request SUBSCRIBE
semantics for some groups before the live edge. The publisher only honors the
request if it is able to do so from cache.</t>

</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="overview"><name>Overview</name>

<t>Each endpoint sends the MAX_REWIND option in its SETUP message. The MAX_REWIND
option contains an integer that indicates the maximum number of groups that
the peer migth request in a Rewind subscription filter. If zero, the peer may
only request the current group. If absent, the peer <bcp14>MUST NOT</bcp14> send the Rewind
subscription filter. This option is half-duplex; if an endpoint does not send
the option, but receives it, it <bcp14>MAY</bcp14> use the Rewind Subscription Filter.</t>

<t>An endpoint might populate the MAX_REWIND option by reporting how many Groups
it habitually stores in cache to answer FETCH or service subscribers that are
behind on delivery. Other heuristics are also possible.</t>

<t>A subscriber sends a SUBSCRIBE message and can include a Rewind Subscription
Filter instead of some other Subscription filter type. A value of zero
indicates it would like to receive the entire current group; a larger value
indicates it would also like to receive the most recent complete groups as well.</t>

<t>If the subscriber wants the Groups even if SUBSCRIBE semantics are not
available, it <bcp14>MAY</bcp14> also send a Joining FETCH message. The object range <bcp14>MAY</bcp14> be
larger or smaller than specified in the Rewind filter.</t>

<t>Upon receipt of a Rewind filter, the publisher <bcp14>MAY</bcp14> treat it as a Largest Object
filter. It will typically do so if the track is not in cache. If it does not
do so, it sends a "StartGroup" parameter in the SUBSCRIBE_OK. StartGroup
is an integer that indicates the number of Groups before the LargestObject
parameter that will be served via SUBSCRIBE.</t>

<t>Groups included in the StartGroup range will be delivered using SUBSCRIBE
semantics: datagrams or Subgroup streams, subject to the delivery timeout
and group order specified in the SUBSCRIBE negotiation. Groups serviced via
the Rewind filter are not delivered by any Joining FETCH associated with this
SUBSCRIBE, though can be delivered by Standalone FETCH messages. In some cases,
this means the Joining FETCH delivers an empty range.</t>

</section>
<section anchor="publisher-restrictions"><name>Publisher restrictions</name>

<t>The publisher <bcp14>MUST NOT</bcp14> include a Group in a range defined by the StartGroup
unless:</t>

<t><list style="symbols">
  <t>There are objects in cache for the group.</t>
  <t>The DELIVERY_TIMEOUT parameters for the SUBSCRIBE indicate the Group can
still be sent.</t>
</list></t>

<t>If the publisher is a Relay, it must also meet one of the following conditions
for the objects populating the cache from that Group:</t>

<t><list style="symbols">
  <t>The cache was fully populated by FETCH message(s) that cover the entire
Object ID range of the Group;</t>
  <t>The cache was fully populated by an active upstream SUBSCRIBE with a Largest
Object before the Group;</t>
  <t>The cache was populated by FETCH message(s) that continuously covers a range
starting at Object ID 0, and an active upstream SUBSCRIBE has Largest Object
equal to or less than the end of that range.</t>
</list></t>

<t>The publisher is not required to verify that it has all objects in the Group to
include it a StartGroup range. In particular, Groups delivered via SUBSCRIBE
might be missing objects and are still eligible for Rewind.</t>

<t>The publisher <bcp14>MAY</bcp14> choose to report fewer groups than what meet these conditions.
It might do so because the volume of data implied would consume too many
resources, because it knows the current group is about to end, or due to any
other policy.</t>

<t>As with any other SUBSCRIBE, if a publisher receives two streams for the same
Subgroup from upstream, and cannot account for all object IDs between the end
of one and the beginning of another, it <bcp14>MUST NOT</bcp14> deliver them on the same
stream. It <bcp14>MAY</bcp14> simply omit the stream with higher object IDs.</t>

<t>The publisher <bcp14>MUST NOT</bcp14> send StartGroup &gt; 0 if it knows it is servicing a track
with Group IDs that are not strictly increasing.</t>

</section>
<section anchor="options-and-parameters"><name>Options and Parameters</name>

<section anchor="setup-option-maxrewind"><name>Setup Option MAX_REWIND</name>

<t>In addition to the Setup Options in Sec 9.3.1 of <xref target="MOQT"/>, the Setup Option
MAX_REWIND (0x16) contains an integer that indicates the largest value that can
be used in a Rewind Subscription Filter. If it is missing, the peer <bcp14>MUST NOT</bcp14>
send a Rewind Subscription Filter.</t>

</section>
<section anchor="subscription-filter-rewind"><name>Subscription Filter Rewind</name>

<t>In addition to the Subscription Filter Types in Sec 5.1.2. of <xref target="MOQT"/>, add
filter type Rewind (0x16). The format is as follows:</t>

<figure><artwork><![CDATA[
Subscription Filter {
  Filter Type (vi64) = 0x16,
  Start Group (vi64),
}
]]></artwork></figure>

<t>A StartGroup of zero means that the subscriber requests SUBSCRIBE semantics
from the beginning of the current group. A larger integer value includes that
many past Groups in addition to the current Group.</t>

<t>The StartGroup field <bcp14>MUST NOT</bcp14> exceed the value in the peer's MAX_REWIND Setup
Option and the filter type <bcp14>MUST NOT</bcp14> be sent if the Option was absent. In either,
case, the publisher should terminate the session with error PROTOCOL_VIOLATION.</t>

</section>
<section anchor="startgroup-message-parameter"><name>START_GROUP Message Parameter</name>

<t>In addition to the MessageParameters in Sec 9.2 of <xref target="MOQT"/>, add StartGroup
(0x16).</t>

<t>It represents the number of groups before the LargestObject that will be
delivered via SUBSCRIBE semantics.</t>

<t>If the parameter is sent in response to a Subscription Filter other than
Rewind, has a value greater than the Group ID of Largest Location, or exceeeds
the Start Group field of the filter, the subscriber <bcp14>MUST</bcp14> close the session
with error PROTOCOL_VIOLATION.</t>

<t>The publisher <bcp14>MUST</bcp14> truncate the end of any Joining FETCH related to this
SUBSCRIBE to end before Object zero of the Group encoded by START_GROUP. This
might result in empty object ranges. The Subscriber <bcp14>MUST</bcp14> close the session
with error PROTOCOL_VIOLATION if the ranges overlap.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>To the extent this reduces head-of-line-blocking and replaces upstream FETCHes
to satisfy Joining FETCH at the relay, it can reduce resource consumption at
publishers.</t>

<t>However, SUBSCRIBE semantics consume more QUIC or Webtransport streams. Past
Groups might contain a lot of data, and FETCH delivery is contained on a
single stream to simplify the flow control of this data. Publishers, who are
aware of the content of their cache, <bcp14>SHOULD</bcp14> limit the range encoded by the
START_GROUP parameter when is likely to overwhelm the channel or the subscriber.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>Please add 0x16 (START_GROUP) to the Message Parameters registry.</t>

<t>There is no Setup Option registry, but if one arises, please add 0x16
(MAX_REWIND) to it.</t>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">




<reference anchor="MOQT">
   <front>
      <title>Media over QUIC Transport</title>
      <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
         <organization>Cisco</organization>
      </author>
      <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
         <organization>Google</organization>
      </author>
      <author fullname="Ian Swett" initials="I." surname="Swett">
         <organization>Google</organization>
      </author>
      <author fullname="Alan Frindell" initials="A." surname="Frindell">
         <organization>Meta</organization>
      </author>
      <date day="13" month="January" year="2026"/>
      <abstract>
	 <t>   This document defines the core behavior for Media over QUIC Transport
   (MOQT), a media transport protocol designed to operate over QUIC and
   WebTransport, which have similar functionality.  MOQT allows a
   producer of media to publish data and have it consumed via
   subscription by a multiplicity of endpoints.  It supports
   intermediate content distribution networks and is designed for high
   scale and low latency distribution.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-16"/>
   
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>



<?line 247?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>Ian Swett designed many components of this proposal. Numerous members of the
MOQ Working Group provided comments that refined our thinking.</t>

</section>


  </back>

<!-- ##markdown-source:
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
16xV/we1YMKAWygAAA==

-->

</rfc>

