<?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.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-reliable-stream-reset-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="QUIC Reliable Stream Reset">Reliable QUIC Stream Resets</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-reliable-stream-reset-02"/>
    <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="2023" month="September" day="15"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 41?>

<t>QUIC (RFC9000) defines a RESET_STREAM frame to reset a stream. When a
sender resets a stream, it stops retransmitting STREAM frames for this stream.
On the receiver side, there is no guarantee that any of the data sent on that
stream is delivered to the application.
This document defines a new QUIC frame, the CLOSE_STREAM frame, that allows
resetting of a stream, while guaranteeing reliable 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 51?>

<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 receiver side, the QUIC stack is free to surface the stream reset to the
application immediately, even if it has already received stream data for that
stream.</t>
      <t>Applications running on top of QUIC might need to send an identifier at the
beginning of the stream in order to associate that stream with a specific
subpart of the application. For example, WebTransport
(<xref target="WEBTRANSPORT"/>) uses a variable-length-encoded
integer (as defined in QUIC version 1) to transmit the ID of the WebTransport session to
the receiver. It is desirable that the receiver is able to associate incoming
streams with their respective subpart of the application, even if the QUIC stream
is reset before the identifier at the beginning of the stream was read.</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, at the same time making
sure that all data being read previously is delivered to the peer.</t>
      <t>This document describes a QUIC extension defining a new frame type, the
CLOSE_STREAM frame. This frame allows an endpoint to mark a portion at
the beginning of the stream which will then be guaranteed to be delivered to
receiver's application, 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 close_stream (0x17f7586d2cb570) transport parameter
(Section 7.4 of <xref 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>In order to allow reliable stream resets in 0-RTT packets, both endpoints <bcp14>MUST</bcp14>
remember the value of this transport parameter.  If 0-RTT data is
accepted by the server, the server <bcp14>MUST NOT</bcp14> disable this extension on the
resumed connection.</t>
    </section>
    <section anchor="closestream-frame">
      <name>CLOSE_STREAM Frame</name>
      <t>Conceptually, the CLOSE_STREAM frame is a RESET_STREAM frame with an
added Reliable Size field.</t>
      <artwork><![CDATA[
CLOSE_STREAM Frame {
  Type (i) = 0x20,
  Stream ID (i),
  Application Protocol Error Code (i),
  Final Size (i),
  Reliable Size (i),
}
]]></artwork>
      <t>The CLOSE_STREAM frames contain the following fields:</t>
      <t>Stream ID:  A variable-length integer encoding of the stream ID of
      the stream being terminated.</t>
      <t>Application Protocol Error Code:  A variable-length integer
    containing the application protocol error code (see Section 20.2)
    that indicates why the stream is being closed.</t>
      <t>Final Size:  A variable-length integer indicating the final size of
    the stream by the RESET_STREAM sender, in units of bytes; see
    (Section 4.5 of <xref target="RFC9000"/>).</t>
      <t>Reliable Size:  A variable-length integer indicating the amount of
    data that needs to be delivered to the application even though
    the stream is reset.</t>
      <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>CLOSE_STREAM frames are ack-eliciting. 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>When resetting a stream, the node has the choice between using a RESET_STREAM
frame and a CLOSE_STREAM frame. When using a RESET_STREAM frame, the behavior is
unchanged from the behavior described in (<xref target="RFC9000"/>).</t>
      <t>When using a CLOSE_STREAM 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 (Section 13.3 of <xref target="RFC9000"/>). Data sent beyond that byte offset
<bcp14>SHOULD NOT</bcp14> be retransmitted.</t>
      <t>As described in (Section 3.2 of <xref target="RFC9000"/>), it <bcp14>MAY</bcp14> deliver data beyond that
offset to the application.</t>
      <section anchor="multiple-frames">
        <name>Multiple CLOSE_STREAM / RESET_STREAM frames</name>
        <t>The initiator <bcp14>MAY</bcp14> send multiple CLOSE_STREAM 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 CLOSE_STREAM frame with a
Reliable Size of 0.</t>
        <t>When sending multiple frames for the same stream, the initiator <bcp14>MUST NOT</bcp14> increase
the Reliable Size.  When receiving a CLOSE_STREAM frame with a lower
Reliable Size, the receiver only needs to deliver data up the lower Reliable
Size to the application. It <bcp14>MUST NOT</bcp14> expect the delivery of any data beyond that
byte offset.</t>
        <t>Reordering of packets might lead to a CLOSE_STREAM frame with a higher
Reliable Size being received after a CLOSE_STREAM frame with a lower
Reliable Size.  The receiver <bcp14>MUST</bcp14> ignore any CLOSE_STREAM frame that
increases the Reliable Size.</t>
        <t>When sending another CLOSE_STREAM, 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>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</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 close_stream 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>0x17f7586d2cb570</t>
          </dd>
          <dt>Parameter Name:</dt>
          <dd>
            <t>close_stream</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Permanent</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 register 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>0x20</t>
          </dd>
          <dt>Frame Type Name:</dt>
          <dd>
            <t>CLOSE_STREAM</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Permanent</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>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="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="13" month="June" 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-07"/>
      </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>
    <?line 247?>

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

-->

</rfc>
