<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-reliable-stream-reset-10" 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-10"/>
    <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="August" day="09"/>
    <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?>

</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>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 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 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. 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. 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 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 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
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 that receives a STOP_SENDING frame is required to send a
RESET_STREAM frame in some stream states, as described in <xref section="3.5" sectionFormat="of" target="RFC9000"/>. While it is permissible to send a RESET_STREAM_AT frame in this case,
endpoints <bcp14>SHOULD</bcp14> send a RESET_STREAM frame, since the peer has already indicated
that it does not intend to process any further 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 361?>

<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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

-->

</rfc>
