<?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.31 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-qmux-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>QMux</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qmux-00"/>
    <author fullname="Kazuho Oku">
      <organization>Fastly</organization>
      <address>
        <email>kazuhooku@gmail.com</email>
      </address>
    </author>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <author fullname="Jana Iyengar">
      <organization>Netflix</organization>
      <address>
        <email>jri.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Eric Kinnear">
      <organization>Apple</organization>
      <address>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="25"/>
    <workgroup>QUIC</workgroup>
    <keyword>internet-draft</keyword>
    <abstract>
      <?line 24?>

<t>This document specifies QMux version 1. QMux version 1 provides, over
bi-directional streams such as TLS, the same set of stream and datagram
operations that applications rely upon in QUIC version 1.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    QUIC Working Group mailing list (quic@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/quicwg/qmux"/>.</t>
    </note>
  </front>
  <middle>
    <?line 31?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC version 1 <xref target="QUIC"/> is a bi-directional, authenticated
transport-layer protocol built on top of UDP <xref target="UDP"/>. The protocol
provides multiplexed flow-controlled streams without head-of-line blocking as a
core service. It also offers low-latency connection establishment and efficient
loss recovery.</t>
      <t>However, there are downsides to QUIC.</t>
      <t>One downside is that QUIC, being based on UDP, is not as universally accessible
as TCP <xref target="TCP"/>, due to occasionally being blocked by middleboxes.</t>
      <t>Another downside is that QUIC is computationally more expensive compared to TLS
<xref target="TLS13"/> over TCP. This increased cost is partly because QUIC encrypts
each packet, which is smaller than the encryption unit of TLS, leading to more
overhead, and partly because UDP is less optimized within computing
infrastructures.</t>
      <t>Due to these limitations, applications are often served using both QUIC and TCP.
QUIC is employed to provide the optimal user experience, while TCP acts as a
fallback for ensuring network reachability and computational efficiency as
needed.</t>
      <t>One such example is HTTP, which has different bindings for QUIC (HTTP/3
<xref target="HTTP3"/>) and TCP (HTTP/2 <xref target="HTTP2"/>). Recently, security
concerns have prompted proposals to revise HTTP/2
(<xref target="h2-stream-limits"/>), which has sparked
discussions about the costs of maintaining multiple HTTP versions.</t>
      <t>Another example is WebTransport, a superset of HTTP. Because HTTP has different
bindings for QUIC and TCP, WebTransport defines its own extensions for the two
HTTP variants (<xref target="webtrans-h3"/>,
<xref target="webtrans-h2"/>).</t>
      <t>To reduce or eliminate the costs associated with duplicated efforts in providing
services on top of both transport protocols, this document specifies a polyfill
that allows application protocols built on QUIC to run on transport protocols
that provide single bi-directional, byte-oriented stream such as TCP or TLS.</t>
      <t>The specified polyfill provides a compatibility layer for the set of operations
(i.e., API) required by QUIC, as specified in Section <xref target="QUIC" section="2.4" sectionFormat="bare"/> and Section <xref target="QUIC" section="5.3" sectionFormat="bare"/> of <xref target="QUIC"/>.</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="the-protocol">
      <name>The Protocol</name>
      <t>QMux can be used on any transport that provides a bi-directional, byte-oriented
stream that is ordered and reliable; for details, see <xref target="transport-properties"/>.</t>
      <t>QUIC frames are sent directly on top of the transport.</t>
      <t>The frames are not encrypted. It is the task of the transport (e.g., TLS) to
provide confidentially and integrity.</t>
      <t>QUIC packet headers are not used.</t>
      <t>For exchanging the Transport Parameters, a new frame called
QX_TRANSPORT_PARAMETERS frame is defined.</t>
      <section anchor="transport-properties">
        <name>Properties of Underlying Transport</name>
        <t>QMux is designed to work on top of transport layer protocols that provide the
following capabilities:</t>
        <dl>
          <dt>In-order delivery of bytes in both direction:</dt>
          <dd>
            <t>Underlying transport provides a byte-oriented and bi-directional stream that
deliver the bytes in order; i.e., bytes that were sent in one order become
available to the receiving side in the same order.</t>
          </dd>
          <dt>Guaranteed delivery:</dt>
          <dd>
            <t>If the transport runs on top of a lossy network, that transport recovers the
bytes lost; e.g., by retransmitting them. This requires buffering and
reassembly, in order to achieve the first bullet point (in-order delivery).</t>
          </dd>
          <dt>Congestion control:</dt>
          <dd>
            <t>When used on a shared network, the transport is congestion controlled.
Implementations of QMux simply write outgoing frames to the transport when
that transport permits.</t>
          </dd>
          <dt>Confidentially and Integrity:</dt>
          <dd>
            <t>Unless used upon endpoints between which tampering or monitoring is a
non-concern, the transport provides confidentially and integrity protection.</t>
          </dd>
        </dl>
        <t>TLS over TCP provides all these capabilities.</t>
        <t>UNIX sockets are an example that provides only the first two. Congestion control
is not employed, as UNIX sockets do not face a shared bottleneck.
Confidentiality and integrity protection are deemed unnecessary in environments
where the operating system is trusted.</t>
      </section>
    </section>
    <section anchor="quic-frames">
      <name>QUIC Frames</name>
      <t>In QMux, the following QUIC frames can be used, as if they were sent or received
in the application packet number space:</t>
      <ul spacing="normal">
        <li>
          <t>PADDING</t>
        </li>
        <li>
          <t>RESET_STREAM</t>
        </li>
        <li>
          <t>STOP_SENDING</t>
        </li>
        <li>
          <t>STREAM</t>
        </li>
        <li>
          <t>MAX_DATA</t>
        </li>
        <li>
          <t>MAX_STREAM_DATA</t>
        </li>
        <li>
          <t>MAX_STREAMS</t>
        </li>
        <li>
          <t>DATA_BLOCKED</t>
        </li>
        <li>
          <t>STREAM_DATA_BLOCKED</t>
        </li>
        <li>
          <t>STREAMS_BLOCKED</t>
        </li>
        <li>
          <t>CONNECTION_CLOSE</t>
        </li>
      </ul>
      <t>The frame formats are identical to those in QUIC version 1. Likewise, the
meaning and requirements for the use of these frames are consistent with QUIC
version 1, with the exception to the specific changes made to the STREAM frames,
as detailed in <xref target="stream-frames"/>.</t>
      <t>Use of other frames defined in QUIC version 1 is prohibited for various reasons.
ACK frames are not used because the underlying transport guarantees delivery.
Frames related to the cryptographic handshake are not used because an underlying
security layer can provide equivalent features. Use of frames that communicate
Connection IDs and those related to path migration is forbidden.</t>
      <t>The full list of prohibited frames is:</t>
      <ul spacing="normal">
        <li>
          <t>PING</t>
        </li>
        <li>
          <t>ACK</t>
        </li>
        <li>
          <t>CRYPTO</t>
        </li>
        <li>
          <t>NEW_TOKEN</t>
        </li>
        <li>
          <t>NEW_CONNECTION_ID</t>
        </li>
        <li>
          <t>RETIRE_CONNECTION_ID</t>
        </li>
        <li>
          <t>PATH_CHALLENGE</t>
        </li>
        <li>
          <t>PATH_REPONSE</t>
        </li>
        <li>
          <t>HANDSHAKE_DONE</t>
        </li>
      </ul>
      <t>Endpoints <bcp14>MUST NOT</bcp14> send prohibited frames. If an endpoint receives one it <bcp14>MUST</bcp14>
close the connection with an error of type FRAME_ENCODING_ERROR.</t>
      <section anchor="stream-frames">
        <name>STREAM Frames</name>
        <t>While the frame format remains unchanged, there are two differences in the
handling of STREAM frames between QUIC version 1 and QMux.</t>
        <section anchor="stream-frames-without-the-length-field">
          <name>STREAM Frames without the Length Field</name>
          <t>In QMux, when a STREAM frame that omits the Length field is used, the size of
that STREAM frame is determined by the maximum frame size, as regulated by the
<tt>max_frame_size</tt> Transport Parameter (<xref target="max_frame_size"/>).</t>
          <t>This behavior contrasts with that of QUIC version 1, where the absence of the
Length field implies that the STREAM frame extends to the end of the QUIC packet
payload.</t>
          <t>This variation arises due to the characteristics of the underlying transports of
QMux, which may not have, or provide visibility into, the packet boundaries.</t>
        </section>
        <section anchor="ordering-of-stream-frames">
          <name>Ordering of STREAM frames</name>
          <t>For each stream being sent, senders <bcp14>MUST</bcp14> send stream payload in order.</t>
          <t>When receiving a STREAM frame that carries a payload not immediately following
the payload of the previous STREAM frame for the same Stream ID, receivers <bcp14>MUST</bcp14>
close connection with an error of type PROTOCOL_VIOLATION_ERROR.</t>
          <t>This change from QUIC version 1 eliminates the need for implementations to
buffer and reassemble the stream payload. As a result, the payload being
received can be directly passed to the application as it is read from the
transport. This efficiency is due to the underlying transport's guarantee of
in-order delivery.</t>
          <t>These changes do not impact the senders' capability to interleave STREAM frames
from multiple streams.</t>
        </section>
      </section>
      <section anchor="qxtransportparameters-frames">
        <name>QX_TRANSPORT_PARAMETERS Frames</name>
        <t>In QMux, Transport Parameters are exchanged as frames.</t>
        <t>QX_TRANSPORT_PARAMETERS frames are formatted as shown in
<xref target="fig-qx-transport-parameters"/>.</t>
        <figure anchor="fig-qx-transport-parameters">
          <name>QX_TRANSPORT_PARAMETERS Frame Format</name>
          <artwork><![CDATA[
QX_TRANSPORT_PARAMETERS Frame {
  Type (i) = 0x3f5153300d0a0d0a,
  Length (i),
  Transport Parameters (..),
}
]]></artwork>
        </figure>
        <t>QX_TRANSPORT_PARAMETERS frames contain the following fields:</t>
        <dl>
          <dt>Length:</dt>
          <dd>
            <t>A variable-length integer specifying the length of the Transport Parameters
field in this QX_TRANSPORT_PARAMETERS frame.</t>
          </dd>
          <dt>Transport Parameters:</dt>
          <dd>
            <t>The Transport Parameters. The encoding of the payload is as defined in
<xref section="18" sectionFormat="of" target="QUIC"/>.</t>
          </dd>
        </dl>
        <t>The QX_TRANSPORT_PARAMETERS frame is the first frame sent by endpoints.
Endpoints <bcp14>MUST</bcp14> send the QX_TRANSPORT_PARAMETERS frame as soon as the underlying
transport becomes available. Note neither endpoint needs to wait for the
peer's Transport Parameters before sending its own, as Transport Parameters are
a unilateral declaration of an endpoint's capabilities
(<xref section="7.4" sectionFormat="of" target="QUIC"/>).</t>
        <t>If the first frame being received by an endpoint is not a
QX_TRANSPORT_PARAMETERS frame, the endpoint <bcp14>MUST</bcp14> close the connection with an
error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>The frame type (0x3f5153300d0a0d0a; "\xffQMX\r\n\r\n" on wire) has been chosen
so that it can be used to disambiguate QMux from HTTP/1.1 <xref target="HTTP1"/> and
HTTP/2.</t>
      </section>
      <section anchor="qxping-frames">
        <name>QX_PING Frames</name>
        <t>In QMux, QX_PING frames allow endpoints to test peer reachability above the
underlying transport.</t>
        <t>QX_PING frames are formatted as shown in <xref target="fig-qx-ping"/>.</t>
        <figure anchor="fig-qx-ping">
          <name>QX_PING Frame Format</name>
          <artwork><![CDATA[
QX_PING Frame {
  Type (i) = 0xTBD..0xTBD+1,
  Sequence Number (i),
}
]]></artwork>
        </figure>
        <t>Type 0xTBD is used for sending a ping (i.e., request the peer to respond). Type
0xTBD+1 is used in response.</t>
        <t>QX_PING frames contain the following fields:</t>
        <dl>
          <dt>Sequence Number:</dt>
          <dd>
            <t>A variable-length integer used to identify the ping.</t>
          </dd>
        </dl>
        <t>When sending QX_PING frames of type 0xTBD, endpoints <bcp14>MUST</bcp14> send monotonically
increasing values in the Sequence Number field, since that allows the endpoints
to identify to which ping the peer has responded.</t>
        <t>When sending QX_PING frames of type 0xTBD+1 in response, endpoints <bcp14>MUST</bcp14> echo the
Sequence Number that they received.</t>
        <t>When receiving multiple QX_PING frames of type 0xTBD before having the chance to
respond, an endpoint <bcp14>MAY</bcp14> only respond with one QX_PING frame of type 0xTBD+1
carrying the largest Sequence Number that the endpoint has received.</t>
      </section>
    </section>
    <section anchor="transport-parameters">
      <name>Transport Parameters</name>
      <t>QMux uses a subset of Transport Parameters defined in QUIC version 1. Also, one
new Transport Parameter specific to QMux is defined.</t>
      <section anchor="permitted-tps">
        <name>Permitted and Forbidden Transport Parameters</name>
        <t>In QMux, use of the following Transport Parameters is allowed.</t>
        <ul spacing="normal">
          <li>
            <t>max_idle_timeout</t>
          </li>
          <li>
            <t>initial_max_data</t>
          </li>
          <li>
            <t>initial_max_stream_data_bidi_local</t>
          </li>
          <li>
            <t>initial_max_stream_data_bidi_remote</t>
          </li>
          <li>
            <t>initial_max_stream_data_uni</t>
          </li>
          <li>
            <t>initial_max_streams_bidi</t>
          </li>
          <li>
            <t>initial_max_streams_uni</t>
          </li>
        </ul>
        <t>The definition of these Transport Parameters are unchanged.</t>
        <t>Use of other Transport Parameters defined in QUIC version 1 is prohibited. When
an endpoint receives one of the prohibited Transport Parameters, the endpoint
<bcp14>MUST</bcp14> close the connection with an error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>Endpoints <bcp14>MUST NOT</bcp14> send Transport Parameters that extend QUIC version 1, unless
they are specified to be compatible with QMux.</t>
        <t>When receiving Transport Parameters not defined in QUIC version 1, receivers
<bcp14>MUST</bcp14> ignore them unless they are specified to be usable on QMux.</t>
      </section>
      <section anchor="max_frame_size">
        <name>max_frame_size Transport Parameter</name>
        <t>The <tt>max_frame_size</tt> Transport Parameter (0xTBD) is a variable-length integer
specifying the maximum size of the QUIC frame that the peer can send, in the
unit of bytes.</t>
        <t>The initial value of the <tt>max_frame_size</tt> Transport Parameter is 16384.</t>
        <t>By sending the Transport Parameter, the maximum frame size can only be
increased. When receiving a value below the initial value, receivers <bcp14>MUST</bcp14> close
the connection with an error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>Endpoints <bcp14>MUST NOT</bcp14> send QUIC frames that exceed the maximum declared by the
peer.</t>
        <t>When receiving QUIC frames that exceed the declared maximum, receivers <bcp14>MUST</bcp14>
close the connection with an error of type FRAME_ENCODING_ERROR.</t>
      </section>
    </section>
    <section anchor="closing-the-connection">
      <name>Closing the Connection</name>
      <t>As is with QUIC version 1, a connection can be closed either by a
CONNECTION_CLOSE frame or by an idle timeout.</t>
      <t>Unlike QUIC version 1, there is no draining period; once an endpoint sends or
receives the CONNECTION_CLOSE frame or reaches the idle timeout, all the
resources allocated for the Service are freed and the underlying transport is
closed immediately.</t>
    </section>
    <section anchor="using-0-rtt">
      <name>Using 0-RTT</name>
      <t>TLS 1.3 introduced the concept of early data (also knows as 0-RTT data).</t>
      <t>When using QMux on top of TLS that supports early data, clients <bcp14>MAY</bcp14> use early
data when resuming a connection, by reusing certain Transport Parameters as
defined in <xref section="7.4.1" sectionFormat="of" target="QUIC"/>.</t>
      <t>Similarly, when accepting early data, the servers <bcp14>MUST</bcp14> send Transport Parameters
that obey to the restrictions defined in <xref section="7.4.1" sectionFormat="of" target="QUIC"/>.</t>
    </section>
    <section anchor="extensions">
      <name>Extensions</name>
      <t>Not all the extensions of QUIC version 1 can be used. Each extension have to
define its mapping for QMux, or explicitly allow the use; see <xref target="permitted-tps"/>.</t>
      <t>As is the case with QUIC version 1, use of extension frames have to be
negotiated before use; see <xref section="19.21" sectionFormat="of" target="QUIC"/>.</t>
      <t>This specification defines the mapping of the Unreliable Datagram Extension.</t>
      <section anchor="unreliable-datagram-extension">
        <name>Unreliable Datagram Extension</name>
        <t>The use of the Unreliable Datagram Extension <xref target="QUIC_DATAGRAM"/> is
permitted, with one modification:</t>
        <t>Similar to STREAM frames, when employing DATAGRAM frames of type 0x30 (i.e.,
DATAGRAM frames without the Length field), their size is determined by the
<tt>max_frame_size</tt> Transport Parameter (<xref target="max_frame_size"/>).</t>
        <t>Apart from this, the encoding and semantics of the Unreliable Datagram Extension
remain unchanged. The use of the extension is negotiated via the Transport
Parameters.</t>
        <t>As discussed in <xref section="5" sectionFormat="of" target="QUIC_DATAGRAM"/>, senders can drop DATAGRAM frames
if the transport is blocked by flow or congestion control.</t>
      </section>
    </section>
    <section anchor="version-agility">
      <name>Version Agility</name>
      <t>As new versions of QUIC are specified, there may be a desire to define their
reliable-byte-stream counterparts as different versions of QMux, and to provide
ways of negotiating the version to be used.</t>
      <t>QUIC establishes connections using packets carrying an explicit version number.
Using that field, Version-Independent Properties of
QUIC <xref target="QUIC-INVARIANTS"/> defines a version negotiation mechanism that
involves a retry. Compatible Version Negotiation for QUIC
<xref target="QUIC-CVN"/> defines another negotiation mechanism for switching
between compatible versions during connection establishment without retrying.</t>
      <t>By contrast, QMux does not establish connections by itself; the connections are
set up by the underlying substrate, and QMux exchanges only the Transport
Parameters after they are established.</t>
      <t>Due to these differences, the negotiation mechanisms used by QUIC and QMux will
differ.</t>
      <t>This section explores some options that future versions of QMux might employ for
version negotiation and upgrade.</t>
      <section anchor="negotiation-using-alpn">
        <name>Negotiation Using ALPN</name>
        <t>When a new QUIC version that provides a different interface to applications is
specified, application protocols developed for that version might be assigned a
new identifier for the TLS Application-Layer Protocol Negotiation (ALPN)
extension <xref target="ALPN"/>.</t>
        <t>Similarly, when TLS is the underlying transport, application protocols built on
top of the QMux counterparts of such QUIC versions can rely on ALPN to negotiate
both the application protocol and the underlying QMux version.</t>
        <t>When TLS is not the underlying transport, endpoints can use the first 8 bytes
exchanged on the transport (i.e., the type field of the
QX_TRANSPORT_PARAMETERS frame in the encoded form) to identify whether QMux is
in use.</t>
        <t>[TODO: discuss how endpoints should behave when the first 8 bytes received are
not QX_TRANSPORT_PARAMETERS.]</t>
      </section>
      <section anchor="in-band-upgrade">
        <name>In-band Upgrade</name>
        <t>A new version of QMux might first start communication using QMux version 1 and
then switch versions in-band during the session. The advantage of this approach
is that, even when TLS is not in use, no additional round-trip is incurred for
version negotiation.</t>
        <t>While QMux version 1 does not specify a concrete method, new versions might use
the version_information Transport Parameter (<xref section="3" sectionFormat="of" target="QUIC-CVN"/>) to
discover supported versions and coordinate the switch.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>Similar to HTTP/3 with Extensible Priorities <xref target="HTTP_PRIORITY"/>,
application protocols using QUIC may employ stream multiplexing along with a
system to tune the delivery sequence of QUIC streams.</t>
      <t>To alternate between QUIC streams of varying priorities in a timely manner, it
is advisable for QMux implementations to avoid creating deep buffers holding
QUIC frames. Instead, endpoints should wait for the transport layer to be ready
for writing. Upon becoming writable, they should write QUIC frames according to
the latest prioritization signals.</t>
      <t>Additionally, implementations may consider monitoring or adjusting the flow and
congestion control parameters of the underlying transport. This approach aims to
minimize data buffering within the transport layer before transmission. However,
improper adjustment of these parameters could potentially lead to lower
throughput.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC">
          <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="TLS13">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
        <reference anchor="QUIC_DATAGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="UDP">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="TCP">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="HTTP2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="h2-stream-limits">
          <front>
            <title>Using HTTP/3 Stream Limits in HTTP/2</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="6" month="November" year="2023"/>
            <abstract>
              <t>   A variant mechanism for managing stream limits is described for
   HTTP/2.  This scheme is based on that used in QUIC and is more robust
   against certain patterns of abuse.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-thomson-httpbis-h2-stream-limits-00"/>
        </reference>
        <reference anchor="webtrans-h3">
          <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="20" month="October" year="2025"/>
            <abstract>
              <t>   WebTransport [OVERVIEW] is a protocol framework that enables
   application clients constrained by the Web security model to
   communicate with a remote application 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-14"/>
        </reference>
        <reference anchor="webtrans-h2">
          <front>
            <title>WebTransport over HTTP/2</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook Inc.</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Guowu Xie" initials="G." surname="Xie">
              <organization>Facebook Inc.</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   WebTransport defines a set of low-level communications features
   designed for client-server interactions that are initiated by Web
   clients.  This document describes a protocol that can provide many of
   the capabilities of WebTransport over HTTP/2.  This protocol enables
   the use of WebTransport when a UDP-based protocol is not available.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http2-13"/>
        </reference>
        <reference anchor="HTTP1">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="QUIC-INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <reference anchor="QUIC-CVN">
          <front>
            <title>Compatible Version Negotiation for QUIC</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>QUIC does not provide a complete version negotiation mechanism but instead only provides a way for the server to indicate that the version the client chose is unacceptable. This document describes a version negotiation mechanism that allows a client and server to select a mutually supported version. Optionally, if the client's chosen version and the negotiated version share a compatible first flight format, the negotiation can take place without incurring an extra round trip. This document updates RFC 8999.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9368"/>
          <seriesInfo name="DOI" value="10.17487/RFC9368"/>
        </reference>
        <reference anchor="ALPN">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="HTTP_PRIORITY">
          <front>
            <title>Extensible Prioritization Scheme for HTTP</title>
            <author fullname="K. Oku" initials="K." surname="Oku"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document describes a scheme that allows an HTTP client to communicate its preferences for how the upstream server prioritizes responses to its requests, and also allows a server to hint to a downstream intermediary how its responses should be prioritized when they are forwarded. This document defines the Priority header field for communicating the initial priority in an HTTP version-independent manner, as well as HTTP/2 and HTTP/3 frames for reprioritizing responses. These share a common format structure that is designed to provide future extensibility.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9218"/>
          <seriesInfo name="DOI" value="10.17487/RFC9218"/>
        </reference>
      </references>
    </references>
    <?line 501?>

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

-->

</rfc>
