<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sharma-moq-end-to-end-delivery-timeout-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="moq-e2e-delivery-timeout">End-to-End Delivery Timeouts for MOQT</title>
    <seriesInfo name="Internet-Draft" value="draft-sharma-moq-end-to-end-delivery-timeout-00"/>
    <author initials="A." surname="Sharma" fullname="Aman Sharma">
      <organization>Meta</organization>
      <address>
        <email>amsharma@meta.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="06"/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>media over quic</keyword>
    <keyword>delivery timeout</keyword>
    <keyword>timestamp</keyword>
    <abstract>
      <?line 40?>

<t>This document defines an end-to-end Object delivery timeout for Media over
QUIC Transport (MOQT).  It uses Object timestamps to include delay accumulated
across a chain of relays instead of restarting the timeout at each hop.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://sharmafb.github.io/draft-sharma-moq-end-to-end-delivery-timeout/draft-sharma-moq-end-to-end-delivery-timeout.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-sharma-moq-end-to-end-delivery-timeout/"/>.
      </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/sharmafb/draft-sharma-moq-end-to-end-delivery-timeout"/>.</t>
    </note>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The MOQT OBJECT_DELIVERY_TIMEOUT is measured from the time an Object reaches
the current publisher.  Consequently, an Object can receive a new timeout
budget at every relay.</t>
      <t>This document defines a subscription timeout measured against the Object
timeline from <xref target="TIMESTAMP"/>.  The first Object establishes a local reference.
Later Objects that fall more than the requested timeout behind that timeline
are no longer forwarded.  This includes upstream delay accumulated after the
reference is established and requires no synchronized clocks.</t>
    </section>
    <section anchor="conventions">
      <name>Conventions</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?>

<t>This document uses the terms Object, Publisher, Relay, Subscription, and
Message Parameter as defined in <xref target="MOQT"/>.  It uses Object Timestamp and
Timescale as defined in <xref target="TIMESTAMP"/>.</t>
      <t>This extension applies to version 22 of <xref target="MOQT"/>, identified by the <tt>moqt-22</tt>
protocol identifier.  Its use with other versions is undefined.</t>
    </section>
    <section anchor="negotiation">
      <name>Negotiation</name>
      <t>An endpoint supports this extension by including the zero-length
END_TO_END_DELIVERY_TIMEOUT Setup Option in SETUP.  The extension is negotiated
when both endpoints include the option.  An endpoint <bcp14>MUST NOT</bcp14> send the Message
Parameter defined below unless the extension was negotiated.</t>
    </section>
    <section anchor="end-to-end-object-delivery-timeout">
      <name>End-to-End Object Delivery Timeout</name>
      <t>The END_TO_END_OBJECT_DELIVERY_TIMEOUT Message Parameter is a variable-length
integer containing a timeout in milliseconds.  It <bcp14>MAY</bcp14> appear in SUBSCRIBE,
SUBSCRIBE_TRACKS, PUBLISH, or a REQUEST_UPDATE that updates a Subscription.  A
value of 0 disables the timeout.</t>
      <t>When included in SUBSCRIBE_TRACKS, the parameter is the initial value for each
resulting Subscription and is copied into PUBLISH as specified in <xref target="MOQT"/>.  A
publisher <bcp14>MUST</bcp14> send PUBLISH_SKIPPED instead of PUBLISH for a Track that cannot
provide the timestamps required by this extension.</t>
      <t>A publisher <bcp14>MUST NOT</bcp14> establish a Subscription with a non-zero value unless it
can compute an Object Timestamp for every Normal Object it might forward.  A
Normal Object without a computable timestamp while the timeout is active makes
the Track malformed.</t>
      <t>For each Subscription with a non-zero timeout, the publisher maintains a
reference timestamp and a reference time.  Immediately before forwarding the
first Normal Object after the timeout is enabled, it records the Object's
timestamp as the reference timestamp and its local monotonic time as the
reference time.  That Object is not expired by this extension.</t>
      <t>For a later Object with timestamp <tt>T</tt>, the publisher computes its deadline as:</t>
      <artwork><![CDATA[
deadline = reference_time
         + (T - reference_timestamp) / timescale
         + timeout
]]></artwork>
      <t>Conversions between ticks and time <bcp14>MUST NOT</bcp14> make the deadline earlier.  If the
publisher's current time is later than the deadline, it <bcp14>MUST</bcp14> apply the
expiration behavior specified for OBJECT_DELIVERY_TIMEOUT in <xref target="MOQT"/>.  This
comparison applies across all Subgroups in the Subscription.</t>
      <t>Changing one non-zero timeout to another preserves the reference.  Disabling
the timeout clears the reference; enabling it again establishes a new reference
with the next Normal Object.</t>
      <t>For example, if the reference Object has timestamp 10 seconds and a later
Object has timestamp 12 seconds, a 500 millisecond timeout expires the later
Object 2.5 seconds after the reference Object was forwarded.</t>
      <t>This timeout is independent of OBJECT_DELIVERY_TIMEOUT and
SUBGROUP_DELIVERY_TIMEOUT; the first applicable timeout to expire determines
the result.  As with all Message Parameters, a Relay <bcp14>MUST NOT</bcp14> copy this
parameter to an upstream request.  The local timestamp comparison already
includes delay accumulated upstream.</t>
    </section>
    <section anchor="limitations">
      <name>Limitations</name>
      <t>This extension bounds lateness relative to the first forwarded Object.  It
does not bound startup latency, delay Objects that arrive early, or guarantee
that an Object reaches the subscriber after it has been handed to the
underlying transport.  Accuracy depends on the relative stability of the
publisher's monotonic clock and the timestamp clock.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following entry in the "MOQ Setup Options"
registry:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Type</th>
            <th align="left">Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD1 (odd)</td>
            <td align="left">END_TO_END_DELIVERY_TIMEOUT</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
      <t>TBD1 uses the length-prefixed encoding and has a zero-length value.</t>
      <t>IANA is also requested to register the following entry in the "MOQ Message
Parameters" registry:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Parameter Type</th>
            <th align="left">Parameter Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD2</td>
            <td align="left">END_TO_END_OBJECT_DELIVERY_TIMEOUT</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Incorrect timestamps can cause useful Objects to be discarded or stale Objects
to be retained.  Publishers and subscribers <bcp14>SHOULD</bcp14> apply reasonable bounds to
timestamps and timeout values.  When timestamps need protection from an
untrusted Relay, the timestamp Properties <bcp14>SHOULD</bcp14> be carried in Immutable
Properties as described in <xref target="MOQT"/> and <xref target="TIMESTAMP"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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="1" month="October" year="2026"/>
          <abstract>
            <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-22"/>
      </reference>
      <reference anchor="TIMESTAMP">
        <front>
          <title>Timestamp Properties for MOQT</title>
          <author fullname="Alan Frindell" initials="A." surname="Frindell">
            <organization>Meta</organization>
          </author>
          <author fullname="Ian Swett" initials="I." surname="Swett">
            <organization>Google</organization>
          </author>
          <date day="5" month="October" year="2026"/>
          <abstract>
            <t>   This document defines a set of MOQT Properties for carrying per-
   Object timestamps efficiently.  The encoded timestamp is intended for
   use in MOQT, but can be referenced for application specific purposes.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-frindell-moq-timestamp-00"/>
      </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 180?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The relative-time algorithm in this document is based on a proposal by Martin
Duke.  The timestamp representation was defined by Alan Frindell and Ian Swett.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAHVoxWoAA51Z23IjtxF9x1cg9IPtRKRWil1x6Fu4EtdWrJtFKi5XKqUF
Z0ByopnBLICRll6tvyXfki/L6QbmQnLlKkdVW5zB4NI4ON19GjscDoXPfK7H
cjAt06E3Q/zIU51nD9pu5DwrtKm9k0tj5cXVj/OBUIuF1Q/oX5g3Q32sh2ns
PPSh80AkyuuVsZuxdD4VIjVJqQoskVq19EO3VrZQQx4elqSf3VmGL14IVy+K
zLnMlH5TYfzZdP5KlHWx0HYsUiwyFokpnS5d7cbS21oLGPZnoaxWMPAnvZAK
uzkrvbal9nJuVekqY2Hio7H3K2vqCv0udJopeYXV5Y+3ZycDca83+J6OhRzK
gj8a+vimzhJqakyV0VRqo0fnVVEJ8aDLGpZJ+ez8Uob9DH6CFVm5kt9RT2ov
VJYHaP+Wab8cGbuiZmWTNZrX3ldufHhIvagJVoyabofUcLiw5tHpQ4w/pHGr
zK/rBUYGzJeLw99zBDRDDpSd763dzDQKc48y87vm/F2dR2tf5AMhXKGsv3tT
G9gylqURQtV+bSwdEGyUMivRPhnJGU/LTcs6zwPrJoUq+18AliqzX5QHr8by
QvvQrAP2qgi2/a3Ah1FiCiFKg3cPy+hQyQnAxOEpI8878A2t8Hl+djGdzScX
16HP0mYldpWHfh1HhsOhVAuHkYkXYr7OnISX1IUuPei1zErtQF3ZYSOvFv/W
id/jXnDMlqOCCNbxXH5C5n46kvLMy9ph0jhNa4qT3gC+JK9TTZOrjVQJDKnp
4FOhEmscTJHJWmWlNEtpqY8jxL1WaWjBTNYTj/1at4YpL7VK1nJtqlHYcJGl
aa6F+Ig80pq0TugIaPuaYZVXL/8+PZnfnU7Pz/4xvfn5jsC8up1LoFNo5Wqr
U7m0pmjXIYzijiwtpp2gT0ltLSFZ1Ys8c2ttAcAJBYo3NZrzzUFvXIJHqxMN
VLHNUj+2Xr2o05UO+2DEeeejZ09LIlq5xGYVbapFobVbrRRhxqaHpQX1yTE4
7Ondu5Y779/DYEJlmVkMiZYSzGE/tFpuEpXDpqXGVhM9Euc4MBv74lTXsHup
8lwWxmp6LXlpSxjg6NLWwoVeg6NhQGMRRVD4GRYpV5gUHHtUNtUpm5W5hjBO
1hU4rFWxTx0JN8dQrClaI+kgu12kHJzJoAwUouXcpkzW1sA58THBDu/diOiC
s0NQJVxdYAsCtKQI7RBcb2fzwUH4lZdX/HwzhRvcTE/pefb95Py8fRCxx+z7
q9vz0+6pG3lydXExvTwNg9Eqt5rE4GLy8+CALR9cXc/Pri4n5wPggY32WUH4
wbEW2DIln8pqhsQJgAaOLPCCMS9Prv/7n6PPcPR/uHl1cnx09Nf37+PLF0d/
+Qwvj2tdhtVMmW/iKzDdCFVVWlmahQ45UVXmVe7Q10m3No+lBO3BCvHHfxIy
/xrLrxZJdfTZN7GBNrzV2GC21ciY7bfsDQ4gfqDpA8u0aG617yC9be/k5633
Bvde41ffsiMNj7749hux66Ic+DhkaFs0IfBAXjfR4UDeEHsP5KznwYy6uNDO
qZWW18oilxChgW9weT7Bd+8ocLG/7kTYeRNheR5+g8PqvfF9p4+G67cekoai
CA45zzTHaIQgbjo+ppjbrHsgs5Q8Y5lhvsWGd/kaucYPj49fi8oabxKTd50s
G+rIUvmIBC4NRthmckcOWpfRPna9Swg5n6kQqCeckSoDTiPaVZRhXCB+ZzKM
CNGhyQe/aGuGuS5Xfi1wtnfzqzv62QvyM+3rSl6F8AloZtP57XWMg930WKuM
JiE9kT/IBfbQ2tXGJl7b8GyYpG95Q3/pNMc9JJ9wyqI75eaIFjo3j4AkRw/u
2lnyqPqmMFg9BR1ZsCukQ/jqwfBcytsnXkZR/0HZDOFTN4BSdKEIDRnskV8I
c9VGdoBYZDk4rvE5dYGjcCbZxY7Z7cvZyc3Zy+mBaB/v5jeTkx9mcJDbl+dn
s+8PoJgwKwUIMPXu9vp0Mp+GfFFXpMLJsL7rEN7iQeW1Jqq+kGnmyGbXlwfA
6yc6vHha6ZYxrQU0oOojQA3YJjDPZViB9A+lfmQZV+esQvq2cOzEwMRUGa8C
V4r74lBZ6SQ4z7YzT0SrHQJfmCtx4N3sh7Pr6+lpXwQ1cy4ZKwiw5D5ABH1R
Gk+u+JBFVvbEV8x+0Xf7jgSAJnLHCCJtmz93QA/uDAVjyiG5XIQnUjfzgoQO
5GxV+75s6sIUA8lcvSS9mzc9MoiYbLX2jQpgdLa70NIs+eICdNrdLpG1slxv
aUPickKKGgXPfRRtATPMinUKdqhX8Wh/e59xzkiWFjCoeXYJrNQTIL4flTHL
9hfykIILPq+RbRd6Sdop7jvGMxE02TYArdbp71CXhEN6QAhCYbJc6dTfx070
jHFRnH3YzgxhLei9woBMEEhJlL9uR2DFXcyJec35kbSCenxbPUu0V0zavCcg
A8qdFa/nr3cBjlxybF0KN+AMrNxYiF9//VW0LV9327qjCbnY4r8/yU/mKJ23
P/N6n8rDsDilzP6ARpvTCoJlYUxcC+0ftSbdDdHIoDFArdsQz3gDrV2IgHlM
iEtGsd3ax66tIHgSoBWwaVV0MwmfLa9BmZrTr2CgOWGStFYPGcDtwgx52bNl
zlYIIikgCGSEfNfTAk1JBtUHv+A7BhcEqN6OwgAI9q6It6bUew5DokKVIf9D
nzptH/QODWHFKcduzCH67E5yoLfT+ctAeFoOoHC5s1OyUHHVdheBYZihBBW3
/anx/begQk4gL3fcI5J0TfxvOXr0QsZMF52bD018uO9x0xc6T37+4kU/U7bb
DD4T9rk12fHo826t1vf37COJ0NVOUd31IgTdDVRILMQ05JDneEECErnxu5ur
2+u9r1/y0iEoMUWSNvrGQw67AGdJ/lKtKoKxlC4pmLsYUkGoPdXB8LA67lwJ
qTTEENGlZuZSVw3GKjOqtxC6OvD7pM7RP92ItqDcryObSVlhnWcF6py2EtxW
nqam86BRJeU8qtc5x8C4DqP2PBqukSoSqdEhTPIkki80oEZ5rgSVQTBrq7hW
1tLkFEY2LJFWNeCAHtMifN+9mmAj4iXBgioJJk4WqLmg4AV3JcOCvYKEOObm
vNNc6NB5ARukyo0M3HHSNJV93C75XJZnfkOc2g1sXQLh+jpEyr4mCe0M9tnk
csL3JhAutgGdGzPXv0gweFllrnGDpckhmsls8Npumtg0QGTbEvluIMI4u0HO
eJLzTaXlk7wEpfAzCyEzCZH0STwN6W/8NObf+NP+PdH4l6dH8hOTpp9i+G9V
Gk9yuz58ApVobFsnBnE9RFRcZm+xQ3DAcP4ntOi0VL+qCUpr1EGDOtz8n/js
VSJuILdA6uqBCFfX8JvAdX/jXeyeA/N4G8bnotMH0PwI5wySEgX36AMokVq3
ryBZmiqqSfFvWeedo/EVCuqHJLgspVJPVXTsIEIHq0np8fVUW9SHJNC5m5Px
RiJkavgk4g+Hyhg3vBE9k1QvDfD5UvnEFUuvU6lhExXZmm8ywz2eKuG53tZ8
9vFiYdvDrq2ptPWUzKNN2ENC8STUIdCgQUOLXk++N+jdHTVKgS3dvUag29YF
5DQdxSS5L80jhOiKjseJd+PwPyg6/XqwBFX14H2oSpsAMgzSMl8ZnOC62L/c
wvNCOToOBHDaf2UcAjyU5QXfA4vT+l7H2N/t2mpWGWUI35wb2yp7Iyc5OPAq
3paH/7WhW/tH7aEG/gctsSHqphoAAA==

-->

</rfc>
