<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-reliable-stream-reset-07" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title>QUIC Stream Resets with Partial Delivery</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-reliable-stream-reset-07"/>
    <author initials="M." surname="Seemann" fullname="Marten Seemann">
      <organization/>
      <address>
        <email>martenseemann@gmail.com</email>
      </address>
    </author>
    <author fullname="奥一穂" asciiFullname="Kazuho Oku">
      <organization>Fastly</organization>
      <address>
        <email>kazuhooku@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="15"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 39?>

<t>QUIC defines a RESET_STREAM frame to abort sending on a stream. When a sender
resets a stream, it also stops retransmitting STREAM frames for this stream in
the event of packet loss. On the receiving side, there is no guarantee that any
data sent on that stream is delivered.</t>
      <t>This document defines a new QUIC frame, the RESET_STREAM_AT frame, that allows
resetting a stream, while guaranteeing delivery of stream data up to a certain
byte offset.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://quicwg.github.io/reliable-stream-reset/draft-ietf-quic-reliable-stream-reset.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-quic-reliable-stream-reset/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/quicwg/reliable-stream-reset"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC version 1 (<xref target="RFC9000"/>) allows streams to be reset.  When a stream is
reset, the sender doesn't retransmit stream data for the respective stream. On
the receiving side, the QUIC stack is free to surface the stream reset to the
application immediately, without providing any stream data it has received for
that stream.</t>
      <t>Some applications running on top of QUIC use bytes at the beginning of the
stream to communicate critical information related to that stream.
For example, WebTransport (<xref target="WEBTRANSPORT"/>) uses a
variable-length encoded integer to associate a stream with a particular
WebTransport session.</t>
      <t>Since QUIC does not provide guaranteed delivery of steam data for reset streams,
it is possible that a receiver is unable to read critical information. In the
example above, a reset stream can cause the receiver to fail to associate
incoming streams with their respective subcomponent of the application.
Therefore, it is desirable that the receiver can rely on the delivery of
critical information to applications, even if the QUIC stream is reset before
data is read by the application.</t>
      <t>Another use case is relaying data from an external data source. When a relay is
sending data being read from an external source and encounters an error, it
might want to use a stream reset to signal that error, while at the same time
guaranteeing that all data received from the source is delivered to the peer.</t>
      <t>This document extends QUIC with a variant of stream resets that reliably
delivers the beginning of a stream up to a sender-specified offset, communicated
using the RESET_STREAM_AT frame. It can be considered a form of range-based
partial reliability. As a variant of reset, application protocols continue to
treat this stream function as an abrupt termination; see <xref section="2.4" sectionFormat="of" target="RFC9000"/>.</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="transport-parameter">
      <name>Transport Parameter</name>
      <t>Support for receiving RESET_STREAM_AT frames is advertised by sending the
reset_stream_at (0x17f7586d2cb571) transport parameter (<xref section="7.4" sectionFormat="of" target="RFC9000"/>) with an empty value. An implementation that understands this
transport parameter <bcp14>MUST</bcp14> treat the receipt of a non-empty value as a connection
error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>When using 0-RTT, both endpoints <bcp14>MUST</bcp14> remember the value of this transport
parameter. This allows use of this extension in 0-RTT packets. When the server
accepts 0-RTT data, the server <bcp14>MUST NOT</bcp14> disable this extension on the resumed
connection.</t>
    </section>
    <section anchor="resetstreamat-frame">
      <name>RESET_STREAM_AT Frame</name>
      <t>Conceptually, the RESET_STREAM_AT frame is a RESET_STREAM frame with an
added Reliable Size field.</t>
      <figure anchor="reset-stream-at-format">
        <name>RESET_STREAM_AT Frame Format</name>
        <artwork><![CDATA[
RESET_STREAM_AT Frame {
  Type (i) = 0x24,
  Stream ID (i),
  Application Protocol Error Code (i),
  Final Size (i),
  Reliable Size (i),
}
]]></artwork>
      </figure>
      <t>The RESET_STREAM_AT frame contains the following fields:</t>
      <dl>
        <dt>Stream ID:</dt>
        <dd>
          <t>A variable-length integer encoding of the stream ID of the stream being
terminated.</t>
        </dd>
        <dt>Application Protocol Error Code:</dt>
        <dd>
          <t>A variable-length integer containing the application protocol error code
(<xref section="20.2" sectionFormat="of" target="RFC9000"/>) that indicates why the stream is being closed.</t>
        </dd>
        <dt>Final Size:</dt>
        <dd>
          <t>A variable-length integer indicating the final size of the stream by the
sender, in units of bytes; see <xref section="4.5" sectionFormat="of" target="RFC9000"/>.</t>
        </dd>
        <dt>Reliable Size:</dt>
        <dd>
          <t>A variable-length integer indicating the amount of data that needs to be
delivered to the application even though the stream is reset.</t>
        </dd>
      </dl>
      <t>If the Reliable Size is larger than the Final Size, the receiver <bcp14>MUST</bcp14> close the
connection with a connection error of type FRAME_ENCODING_ERROR.</t>
      <t>RESET_STREAM_AT frames are ack-eliciting, and <bcp14>MUST</bcp14> only be sent in the
application data packet number space. When lost, they <bcp14>MUST</bcp14> be retransmitted,
unless the stream state has transitioned to "Data Recvd" or "Reset Recvd" due to
transmission and acknowledgement of other frames (see <xref target="multiple-frames"/>).</t>
    </section>
    <section anchor="resetting-streams">
      <name>Resetting Streams</name>
      <t>A sender that wants to reset a stream but also deliver some bytes to the
receiver sends a RESET_STREAM_AT frame with the Reliable Size field specifying
the amount of data to be delivered.</t>
      <t>When using a RESET_STREAM_AT frame, the initiator <bcp14>MUST</bcp14> guarantee reliable
delivery of stream data of at least Reliable Size bytes. If STREAM frames
containing data up to that byte offset are lost, the initiator <bcp14>MUST</bcp14> retransmit
this data, as described in <xref section="13.3" sectionFormat="of" target="RFC9000"/>. Data sent beyond that
byte offset <bcp14>SHOULD NOT</bcp14> be retransmitted.</t>
      <t>As described in <xref section="3.2" sectionFormat="of" target="RFC9000"/>, a stream reset signal might be
suppressed or withheld, and the same applies to a stream reset signal carried in
a RESET_STREAM_AT frame. Similarly, the Reliable Size of the RESET_STREAM_AT
frame does not prevent a QUIC stack from delivering data beyond the specified
offset to the receiving application.</t>
      <t>Note that a Reliable Size value of zero is valid. A RESET_STREAM_AT frame with
this value is logically equivalent to a RESET_STREAM frame (<xref section="3.2" sectionFormat="of" target="RFC9000"/>). When resetting a stream without the intent to deliver any data to
the receiver, the sender <bcp14>MAY</bcp14> use either RESET_STREAM or
RESET_STREAM_AT with a Reliable Size of zero.</t>
      <t>As stated in <xref section="4.5" sectionFormat="of" target="RFC9000"/>, the final size for a stream cannot
change once it is known. If a frame is received indicating a change in the final
size for the stream, an endpoint <bcp14>SHOULD</bcp14> respond with an error of type
FINAL_SIZE_ERROR.</t>
      <section anchor="sending-resetstreamat-after-fin">
        <name>Sending RESET_STREAM_AT after FIN</name>
        <t>Similar to how it is possible to send a RESET_STREAM frame after a STREAM frame
carrying the FIN bit, it is possible to send a RESET_STREAM_AT frame after a
STREAM frame carrying the FIN bit.</t>
        <t>Due to packet reordering, it is possible for a receiver to receive the
RESET_STREAM_AT frame before receiving the STREAM frame carrying the FIN bit.</t>
      </section>
      <section anchor="multiple-frames">
        <name>Multiple RESET_STREAM_AT / RESET_STREAM frames</name>
        <t>The initiator <bcp14>MAY</bcp14> send multiple RESET_STREAM_AT frames for the same stream in
order to reduce the Reliable Size.  It <bcp14>MAY</bcp14> also send a RESET_STREAM frame, which
is equivalent to sending a RESET_STREAM_AT frame with a Reliable Size of 0. When
reducing the Reliable Size, the sender <bcp14>MUST</bcp14> retransmit the RESET_STREAM_AT frame
carrying the smallest Reliable Size as well as stream data up to that size,
until all acknowledgements for the stream data and the RESET_STREAM_AT frame are
received.</t>
        <t>When sending multiple RESET_STREAM_AT or RESET_STREAM frames for the same
stream, the initiator <bcp14>MUST NOT</bcp14> increase the Reliable Size.</t>
        <t>When receiving a RESET_STREAM_AT frame with a lower Reliable Size, the receiver
only needs to provide data up the lower Reliable Size to the application. It
<bcp14>MUST NOT</bcp14> expect the sender to deliver any data beyond that byte offset.</t>
        <t>Reordering of packets might lead to a RESET_STREAM_AT frame with a higher
Reliable Size being received after a RESET_STREAM_AT frame with a lower
Reliable Size.  The receiver <bcp14>MUST</bcp14> ignore any RESET_STREAM_AT frame that
increases the Reliable Size.</t>
        <t>When sending another RESET_STREAM_AT, RESET_STREAM or STREAM frame carrying a FIN
bit for the same stream, the initiator <bcp14>MUST NOT</bcp14> change the Application Error
Code or the Final Size. If the receiver detects a change in those fields, it
<bcp14>MUST</bcp14> close the connection with a connection error of type STREAM_STATE_ERROR.</t>
        <t>While multiple RESET_STREAM_AT frames can reduce Reliable Size, some
applications might need to ensure that a minimum amount of data is always
delivered on a stream. Application protocols can establish rules for streams
that ensure that Reliable Size is not reduced below a certain threshold if that
is necessary to ensure correct operation of the protocol.</t>
      </section>
      <section anchor="stream-states">
        <name>Stream States</name>
        <t>In terms of stream state transitions (<xref section="3" sectionFormat="of" target="RFC9000"/>), the effect of a
RESET_STREAM_AT frame is equivalent to that of the FIN bit. Both the
RESET_STREAM_AT frame and the FIN bit on a STREAM frame serve the same role:
signaling the amount of data to be delivered.</t>
        <t>On the sending side, when the first RESET_STREAM_AT frame is sent, the sending
part of the stream enters the "Data Sent" state. Once the RESET_STREAM_AT frame
carrying the smallest Reliable Size and all stream data up to that byte offset
have been acknowledged, the sending part of the stream enters the "Data Recvd"
state. The transition from "Data Sent" to "Data Recvd" happens immediately if
the application resets a stream and all bytes up to the specified Reliable Size
have already been sent and acknowledged. Conversely, the transition might take
multiple network roundtrips or require additional flow control credit issued by
the receiver.</t>
        <t>On the receiving side, when a RESET_STREAM_AT frame is received, the receiving
part of the stream enters the "Size Known" state. Once all data up to the
smallest Reliable Size have been received, it enters the "Data Recvd" state.
Similarly to the sending side, transition from "Size Known" to "Data Recvd"
might happen immediately or involve issuance of additional flow control credit.</t>
      </section>
    </section>
    <section anchor="implementation-guidance">
      <name>Implementation Guidance</name>
      <t>In terms of transport machinery, the RESET_STREAM_AT frame is more akin to the
FIN bit than to the RESET_STREAM frame (see <xref target="stream-states"/>). By sending a
RESET_STREAM_AT frame, the sender commits to delivering all bytes up to the
Reliable Size.</t>
      <t>To the endpoints, the main differences from closing a stream by using the FIN
bit are:</t>
      <ul spacing="normal">
        <li>
          <t>the offset up to which the sender commits to sending might be smaller than
Final Size,</t>
        </li>
        <li>
          <t>this offset might get reduced by subsequent RESET_STREAM_AT frames, and</t>
        </li>
        <li>
          <t>the closure is accompanied by an error code.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As the RESET_STREAM_AT frame is an extension to the stream machinery defined in
QUIC version 1, the security considerations of <xref target="RFC9000"/> apply accordingly.
Specifically, given that RESET_STREAM_AT frames indicate the offset up to which
data is reliably transmitted, endpoints <bcp14>SHOULD</bcp14> remain vigilant against resource
commitment and exhaustion attacks even after sending or receiving RESET_STREAM_AT
frames, until the stream reaches the terminal state.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="quic-transport-parameter">
        <name>QUIC Transport Parameter</name>
        <t>This document registers the reset_stream_at transport parameter in the
"QUIC Transport Parameters" registry established in <xref section="22.3" sectionFormat="of" target="RFC9000"/>.
The following fields are registered:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0x17f7586d2cb571</t>
          </dd>
          <dt>Parameter Name:</dt>
          <dd>
            <t>reset_stream_at</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Provisional (note that, prior to publication, the value will be replaced by a new value lower than 64)</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
        </dl>
      </section>
      <section anchor="quic-frame-types">
        <name>QUIC Frame Types</name>
        <t>This document registers one new value in the "QUIC Frame Types" registry
established in <xref section="22.4" sectionFormat="of" target="RFC9000"/>. The following fields are registered:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0x24</t>
          </dd>
          <dt>Frame Type Name:</dt>
          <dd>
            <t>RESET_STREAM_AT</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Provisional (will become Permanent once this document is approved)</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative 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>
        <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="WEBTRANSPORT">
          <front>
            <title>WebTransport over HTTP/3</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   WebTransport [OVERVIEW] is a protocol framework that enables clients
   constrained by the Web security model to communicate with a remote
   server using a secure multiplexed transport.  This document describes
   a WebTransport protocol that is based on HTTP/3 [HTTP3] and provides
   support for unidirectional streams, bidirectional streams and
   datagrams, all multiplexed within the same HTTP/3 connection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-12"/>
        </reference>
      </references>
    </references>
    <?line 336?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
6DNIMgAA

-->

</rfc>
