<?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.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-reliable-stream-reset-11" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title>QUIC Stream Resets with Partial Delivery</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-reliable-stream-reset-11"/>
    <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="2026" month="September" day="06"/>
    <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 does not 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 stream 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 to allow a receiver to rely on the delivery of
critical information to applications, even if the QUIC stream is reset before
this 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. For the receiving application, RESET_STREAM_AT remains an
abrupt termination: after providing the stream data guaranteed by the Reliable
Size, the QUIC implementation signals a stream reset rather than a clean end of
the stream; 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?>

<t>The frame format diagram uses the notation described in
<xref section="1.3" sectionFormat="of" target="RFC9000"/>.</t>
    </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 (0x1d) 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>An endpoint <bcp14>MUST NOT</bcp14> send a RESET_STREAM_AT frame unless the peer advertised
support using the reset_stream_at transport parameter.</t>
      <t>When using 0-RTT, both endpoints <bcp14>MUST</bcp14> remember whether this extension was
advertised by the server (<xref section="7.4.1" sectionFormat="of" target="RFC9000"/>). 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="reset-stream-at-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 minimum 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>As with RESET_STREAM (<xref section="19.4" sectionFormat="of" target="RFC9000"/>), Final Size is subject to
stream and connection-level flow control. An endpoint <bcp14>MUST NOT</bcp14> send a
RESET_STREAM_AT frame that exceeds the largest maximum stream data value
advertised by the receiver for the stream, or that violates the receiver's
maximum data limit. Consequently, the sender might need to defer sending
RESET_STREAM_AT until enough stream or connection-level flow control credit is
available. If an endpoint receives a RESET_STREAM_AT frame that violates either
flow control limit, it <bcp14>MUST</bcp14> close the connection with an error of type
FLOW_CONTROL_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 while retaining reliable delivery of
certain data 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"/>, an implementation might suppress or
withhold a stream reset signal from the application. 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. For purposes of data delivery,
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.</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
for purposes of data delivery is equivalent to sending a RESET_STREAM_AT frame
with a Reliable Size of zero. The Reliable Size can only decrease; when sending
multiple RESET_STREAM_AT or RESET_STREAM frames for the same stream, the
initiator <bcp14>MUST NOT</bcp14> increase the Reliable Size. The sender <bcp14>MUST</bcp14> retransmit the
information from the RESET_STREAM_AT frame carrying the current Reliable Size,
as well as stream data up to that size, until both have been acknowledged.</t>
        <t>When receiving a RESET_STREAM_AT frame with a lower Reliable Size, the receiver
only needs to provide data up to 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 the increase in Reliable Size and
continue to use the smallest Reliable Size received.</t>
        <t>For the same stream, the initiator <bcp14>MUST NOT</bcp14> change the Application Error Code
in subsequent RESET_STREAM_AT or RESET_STREAM frames, or the Final Size in any
such frame or a STREAM frame carrying the FIN bit. A receiver that detects a
change <bcp14>MUST</bcp14> close the connection with a connection error of type
STREAM_STATE_ERROR or FINAL_SIZE_ERROR, respectively.</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, if bytes below that offset
still need to be sent or acknowledged, the transition might take multiple
network roundtrips.</t>
        <t>Note that entering the "Data Sent" state might itself be deferred, because flow
control can prevent the sender from transmitting the RESET_STREAM_AT frame; see
<xref target="reset-stream-at-frame"/>.</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, the transition from "Size Known" to "Data Recvd"
might happen immediately, or might require additional network roundtrips while
the sender transmits remaining bytes up to the smallest Reliable Size.</t>
      </section>
      <section anchor="handling-stopsending">
        <name>Handling STOP_SENDING</name>
        <t>An endpoint responds to a STOP_SENDING frame as described in
<xref section="3.5" sectionFormat="of" target="RFC9000"/>. If it sends a RESET_STREAM_AT frame in
response, it <bcp14>SHOULD</bcp14> set the Reliable Size to zero, since the peer
has indicated that it does not intend to process further stream data.</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 do not cause data exchange to
terminate, endpoints need to continue to monitor for resource commitment and
exhaustion attacks even after sending or receiving RESET_STREAM_AT. This
persists until all data is delivered, similar to the handling of normal stream
termination; see <xref target="stream-states"/>.</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>0x1d</t>
          </dd>
          <dt>Parameter 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 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>Meta</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="6" month="July" year="2026"/>
            <abstract>
              <t>   WebTransport over HTTP/3 is a binding of the WebTransport protocol
   framework [OVERVIEW] to HTTP/3 [HTTP3].  It provides support for
   unidirectional streams, bidirectional streams, and datagrams, all
   multiplexed within the same HTTP/3 connection.  WebTransport enables
   application clients constrained by the Web security model to
   communicate with a remote application server using a secure
   multiplexed transport.

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

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document had reviews and input from many contributors in the IETF QUIC
Working Group, with substantive input from Lucas Pardue and Martin Thomson.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
bcCH8FSbTuPx0nUJiqrWFg+7/g9GSqI59zgAAA==

-->

</rfc>
