<?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.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-reliable-stream-reset-05" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title abbrev="QUIC Reliable Stream Reset">Reliable QUIC Stream Resets</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-reliable-stream-reset-05"/>
    <author initials="M." surname="Seemann" fullname="Marten Seemann">
      <organization>Protocol Labs</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="2024" month="January" day="24"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 41?>

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

<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 describes a QUIC extension defining a new frame type, the
RESET_STREAM_AT frame. This frame allows an endpoint to mark a portion at the
beginning of the stream which will then be reliably delivered, even if the
stream was reset.</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="negotiating-extension-use">
      <name>Negotiating Extension Use</name>
      <t>Endpoints advertise their support of the extension described in this document by
sending the reliable_stream_reset (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>
      <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>
      </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 reliable_stream_reset 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>reliable_stream_reset</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>
      <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="23" month="October" year="2023"/>
            <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-08"/>
        </reference>
      </references>
    </references>
    <?line 316?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
tyViFMcK4+ttmyP74TOioviZgOEORVCO9cSS6KbjGcvWtOF52TVU6jI1kAdK
DeqxbCzMZFG9M9/6LoOHcUrFwCknQoxozJd9vD3fCvZL3ZBOXxx7KOQOWtRi
HtLSxtZr8xtL7Xw9QTfPtppbCFdEg/7ihKpsLyQeq+LvgVSCF+8qN7xMfT9M
3dYx3SdB4qxK47aIKejSpfLXkVP7kTZ+HtwZ1LHBamy8zH9DRMV8/FFObW2/
eRJtjj77/NxkccLYLZ2lRKVmWwhLhtCE7xuWhhubap96mqbxHisGV/3+Wjfs
9wWXOr6ZUmryqEezBHBAiF5iox5Nxlffgl1hXcO3frdSlfVXzdhqsNyLZTbb
fGFWBmja278AO3O9FGgb/klWnpz61n1WoxdBxPR6umNdoF5kkPbzlbfNbV3n
cr7US2MbjOy/B+y7hvON18G+fezALw1+AmgNixq76jahjo+7HS+q3ru3IdRm
qwXVKcTrn7FNMhET2b2hFKKRQF7T94iT/kPhBYtylcUJb7HIsgzFL/O6qzOE
4ssUVChtqnlNA4bBXR99MkBdt02mfCzzhwz8nAs1AtXPTl6J1q3pW0vYODKF
EKfMzU85EQCe4JzL89mFfGm0XTZfvr6iGzlwNIcTyALRF7PyZfSh7KvWIfh6
Ci/T7H5HKHIdHIIN7b8uDt5v7Ss+ZN+TTkfzF9v3+ESIdtvGqN0A2mdOb6ME
O91vIX4Uf6bENDc8P4LeBsttnf5bTYWfPs4BQzC4pw0vpJaJeJ7whYZOvxws
VGY1XTHenN2EDHIs/h/7jesROy4AAA==

-->

</rfc>
