<?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 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vvv-moqt-object-acks-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="MOQT Object ACKs">Media over QUIC Transport (MOQT) Object Acknowledgements</title>
    <seriesInfo name="Internet-Draft" value="draft-vvv-moqt-object-acks-00"/>
    <author fullname="Victor Vasiliev">
      <organization>Google</organization>
      <address>
        <email>vasilvv@google.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <keyword>moqt</keyword>
    <keyword>object ack</keyword>
    <keyword>bitrate adaptation</keyword>
    <abstract>
      <?line 40?>

<t>This document defines an extension to Media over QUIC Transport (MOQT) that
allows a subscriber to explicitly acknowledge receiving and processing an
incoming object.  The acknowledgement includes a time delta indicating how
early or late the object arrived relative to an application-specified
deadline; the subscriber also provides the publisher with the reference
window size that can be used to interpret the time delta.  A mechanism to
negotiate support for the extension, both on the connection and the
subscription level, is also defined.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://vasilvv.github.io/object-ack/draft-vvv-moqt-object-acks.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-vvv-moqt-object-acks/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/vasilvv/object-ack"/>.</t>
    </note>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>MOQT <xref target="MOQT"/> delivers objects over QUIC streams and datagrams.  While QUIC
itself provides an acknowledgement mechanism on the transport level, those
acknowledgements are generally not used for application-level logic as they
are not available in all APIs; notably, the W3C WebTransport API does not expose
them.  Additionally, data being received by the QUIC layer does not necessarily
mean the application has read and processed it.  This document defines a
message, called OBJECT_ACK, that lets the subscriber acknowledge individual
objects.</t>
      <t>The main purpose of object ACKs is to provide a signal for bitrate
adaptation on the publisher side.  The object ACK is a hop-by-hop message; the
publisher can use it to adjust its bitrate directly on the encoder (if it is
the original publisher encoding the video), or to switch between different
pre-existing tracks encoding the same contents (if a scheme such as SSTS is
used to select tracks on a relay).</t>
      <t>The design described in this document is minimalist and similar in nature to
QUIC ACK frames: for every object the subscriber processes, it sends an
OBJECT_ACK on the Request Stream for the subscription in question.  For every
object, the subscriber also specifies a time delta from the deadline by which
the subscriber expected to receive the object.  A positive time delta
indicates that the object arrived early, and a negative time delta indicates
that the object arrived late.</t>
      <t>In addition to the time delta from deadline, the subscriber provides the
publisher with the ACK Window Size that allows it to interpret the time deltas
it receives.  Objects with time deltas greater than or equal to the Window Size are
considered to have arrived safely on time.  In a regular video player with a
fixed-size playback buffer, Window Size corresponds to the size of the buffer,
and the time delta corresponds to the amount of playback time left in the buffer
by the time the object is received.</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?>

<t>The terms Subscriber, Publisher, Original Publisher, End Subscriber, Relay,
Request Stream, and Subscription-Delivered are used as defined in <xref target="MOQT"/>.</t>
      <t>This document discusses subscribers "receiving and processing" objects.
"Receiving" here means receiving all of the bytes in the Object's payload.
"Processing" is application-specific; the applications define what that means,
and the effective behavior will vary accordingly.  For instance, if the
application includes fully decoding a video frame in the definition of
"processing", the mechanism described in this document would result in the
publisher reducing the video rate when it is too high for the video decoder to
handle.</t>
      <t>All of the time values in this document are expressed in microseconds.</t>
      <t>Additionally, this document uses a signed variable-length integer encoding
called <tt>(svi64)</tt>.  An <tt>(svi64)</tt> is a sign-magnitude-encoded variable-length
integer.  Its encoding is based on the <xref target="MOQT"/> varint encoding, not the
<xref target="RFC9000"/> varint encoding.  The lowest bit indicates the sign (<tt>1</tt> is
negative), and the upper bits indicate the magnitude, meaning that the value is
decoded as</t>
      <artwork><![CDATA[
value = (raw & 1) ? -(raw >> 1) : (raw >> 1)
]]></artwork>
      <t>Senders <bcp14>MUST</bcp14> encode <tt>0</tt> as a positive value (sign bit set to <tt>0</tt>), and
receivers <bcp14>MUST</bcp14> gracefully process both possible encodings as <tt>0</tt>.</t>
      <t>TODO: this is annoying to deal with; design a better encoding.</t>
    </section>
    <section anchor="overview">
      <name>Protocol Overview</name>
      <t>To use object ACKs, both endpoints have to negotiate the SUPPORT_OBJECT_ACKS
SETUP Option.  For each individual subscription, the Subscriber includes
OBJECT_ACK_WINDOW_SIZE in the SUBSCRIBE Parameters; if it is non-zero, the subscriber
sends OBJECT_ACK for every object it receives and processes.</t>
    </section>
    <section anchor="supportobjectacks-setup-option">
      <name>SUPPORT_OBJECT_ACKS Setup Option</name>
      <t>SUPPORT_OBJECT_ACKS (provisional code point 0xbbf1438) is a varint SETUP Option
that can be either <tt>0</tt> or <tt>1</tt>; any other value <bcp14>MUST</bcp14> be rejected by closing the
session with KEY_VALUE_FORMATTING_ERROR.  Duplicate instances of this option
are not allowed, and <bcp14>MUST</bcp14> be rejected as a PROTOCOL_VIOLATION.</t>
      <t>The option is assumed to be <tt>0</tt> by default; the extension is considered to be
enabled only if both endpoints specify the value of <tt>1</tt>.</t>
      <t>The extension is available both over native QUIC and over WebTransport.  This
document only defines the extension for MOQT version draft-22.</t>
    </section>
    <section anchor="window-parameter">
      <name>OBJECT_ACK_WINDOW_SIZE Parameter</name>
      <t>The OBJECT_ACK_WINDOW_SIZE Parameter (provisional code point 0xbbf1438) can appear in
SUBSCRIBE, in a PUBLISH_OK, and in REQUEST_UPDATE for a subscription.  It <bcp14>MUST
NOT</bcp14> appear in any other message.</t>
      <t>TODO: consider how this should work with SUBSCRIBE_TRACKS.</t>
      <t>TODO: since PUBLISH_OK no longer has Parameters other than EXPIRES, should we
require the subscriber to send a separate REQUEST_UPDATE?</t>
      <t>OBJECT_ACK_WINDOW_SIZE encodes the ACK Window Size (see <xref target="introduction"/> for
semantics) in microseconds.  The value of <tt>0</tt> is the default; it means object
ACK messages are not used in the subscription.  The Parameter is encoded as a
single varint (vi64).  It <bcp14>MUST NOT</bcp14> appear more than once in a single message.</t>
      <t>The Parameter <bcp14>MUST NOT</bcp14> be used unless the support has been explicitly
negotiated via SETUP Options; in particular, this means that an endpoint <bcp14>MUST
NOT</bcp14> send a request with this Parameter before it has received a SETUP message
from the peer.</t>
    </section>
    <section anchor="object-ack-message">
      <name>OBJECT_ACK Message</name>
      <artwork><![CDATA[
OBJECT_ACK Message {
  Type (vi64) = 0x3184,
  Length (16),
  Group ID (vi64),
  Object ID (vi64),
  Delta from Deadline (svi64),
}
]]></artwork>
      <t>The OBJECT_ACK message (provisional code point 0x3184) is sent by the
subscriber on the Request Stream for a subscription; sending it in any other
context is a PROTOCOL_VIOLATION.</t>
      <t>The subscriber <bcp14>MUST</bcp14> send OBJECT_ACK messages for every object it has received
and processed if it has sent a non-zero OBJECT_ACK_WINDOW_SIZE, and it <bcp14>MUST NOT</bcp14> send
any such messages if it has not done so.  If the subscriber indicates a
non-zero OBJECT_ACK_WINDOW_SIZE, but does not send any object ACKs, the publisher
will assume it is not receiving any objects.</t>
      <t>Note that MOQT typically allows the subscriber to immediately send FIN for
SUBSCRIBE requests or PUBLISH responses if it does not intend to send any
updates; a subscriber that has sent a non-zero OBJECT_ACK_WINDOW_SIZE <bcp14>MUST NOT</bcp14>
send a FIN until the subscription is over.</t>
      <t>OBJECT_ACK only applies to objects with Normal status; the subscriber <bcp14>MUST NOT</bcp14>
send OBJECT_ACK for any other objects, or for objects that do not exist.</t>
      <t>OBJECT_ACK only applies to Subscription-Delivered objects.</t>
      <t>OBJECT_ACK is a unilateral notification, not a request: it does not consume
Request IDs, and does not require a REQUEST_OK or a REQUEST_ERROR.</t>
      <t>This document does not provide any mechanism for coalescing object ACKs, or
otherwise reducing the ACK traffic; OBJECT_ACK only acknowledges one individual
object.</t>
      <t>Delta from Deadline indicates the duration between when the object was received
and processed, and an application-specific deadline (for example, the time at
which the video frame would appear on the screen). Positive values indicate
that the object arrived before the deadline; negative values indicate that it
arrived after.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO: discuss.  This should probably cover speculative ACKs at minimum.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>TODO: register SETUP Option (0xbbf1438), Message Parameter (0xbbf1438), message type (0x3184).</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <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="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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
    </references>
    <?line 232?>

<section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This specification is currently implemented in the Google QUICHE library, where it
is used for adjusting the sender's bitrate.</t>
    </section>
    <section anchor="open-issues">
      <name>Open Issues</name>
      <ul spacing="normal">
        <li>
          <t>Do we need OBJECT_ACKs without a pre-defined window size?</t>
        </li>
        <li>
          <t>Consider whether ACK deltas should be a fraction of window (-1 to +1) instead
of a microsecond number.</t>
        </li>
        <li>
          <t>Discuss missing object detection (both time-based approach and reordering-based).</t>
        </li>
        <li>
          <t>To locally detect missing objects, the publisher has to know its fixed group
structure; discuss that.</t>
        </li>
        <li>
          <t>MOQT uses milliseconds, this draft uses microseconds, QUIC receive timestamps
use scaled microseconds. Should we unify?</t>
        </li>
        <li>
          <t>Does the varint format here align with the MOQ Timestamp draft?</t>
        </li>
        <li>
          <t>Do we need to get rid of <tt>+0</tt>/<tt>-0</tt> encoding in the signed varint?</t>
        </li>
        <li>
          <t>Add text on relay handling.</t>
        </li>
        <li>
          <t>Consider allowing ACKs for fill-delivered objects.</t>
        </li>
        <li>
          <t>Discuss changing OBJECT_ACK_WINDOW_SIZE via REQUEST_UPDATE mid-subscription;
the ability to update it implies the publisher <bcp14>MUST</bcp14> ignore OBJECT_ACKs if it
doesn't know window size yet.</t>
        </li>
        <li>
          <t>Add text discussing whether having to ACK every individual object is an issue.</t>
        </li>
        <li>
          <t>Discuss ACKs for duplicate objects, ACKs for missing objects, etc.</t>
        </li>
        <li>
          <t>Discuss flow control and HOLB implications of OBJECT_ACKs.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO: acknowledge people.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
anM5psopAAA=

-->

</rfc>
