<?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.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gage-quic-qort-01" category="exp" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="QUIC Over Reliable Transport">QUIC Over Reliable Transport</title>
    <seriesInfo name="Internet-Draft" value="draft-gage-quic-qort-01"/>
    <author initials="W." surname="Gage" fullname="Bill Gage">
      <organization>Unaffiliated</organization>
      <address>
        <postal>
          <city>Ottawa</city>
          <country>Canada</country>
        </postal>
        <email>billgage.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="24"/>
    <area>Internet</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 69?>

<t>This document defines QUIC operations when using an underlying reliable transport that, in contrast to UDP, can provide lossless in-order delivery of QUIC packets. The reliable transport may, for example, be TCP or SCTP or a reliable link such as that provided by the 5G radio link protocol.</t>
    </abstract>
  </front>
  <middle>
    <?line 74?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The initial design for QUIC, as defined in <xref target="RFC9000"/>, provides for the carriage of QUIC packets over UDP. Since UDP is an unreliable transport, <xref target="RFC9000"/> includes mechanisms for recovering lost packets and for ensuring in-order delivery of byte streams to upper-layer applications. And since UDP is a raw datagram transport, <xref target="RFC9000"/> also includes mechanisms for congestion control, flow control, integrity protection and privacy protection.</t>
      <t>In some deployments, an upper-layer application may wish to exploit QUIC capabilities such as light-weight stream management or connection migration in an environment that includes a reliable underlying transport.</t>
      <t>When QUIC packets are conveyed over a reliable transport such as <xref target="TCP"/> or <xref target="SCTP"/> or over a reliable link such as that provided by the 5G radio link protocol <xref target="NR-RLP"/>, some aspects of <xref target="RFC9000"/> may be redundant or undesirable due to added overhead, to added latencies or to negative interactions with mechanisms of the underlying reliable transport.</t>
      <t>This document defines <em>QUIC over a reliable transport (QORT)</em>, a set of procedures for conveying QUIC packets over a reliable transport where one or more of the reliability and protection mechanisms of <xref target="RFC9000"/> are replaced by those of the reliable transport.</t>
      <section anchor="conventions">
        <name>Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
        </t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>This document uses the following terminology:</t>
        <dl>
          <dt>QUIC:</dt>
          <dd>
            <t>the protocol defined by the streams, connections, packets and frames specified in <xref target="RFC9000"/>. Within the context of this document, the term "QUIC" does not include the cryptographic protection described in <xref target="RFC9001"/> nor the loss detection and congestion control procedures of <xref target="RFC9002"/>.</t>
          </dd>
          <dt>QORT:</dt>
          <dd>
            <t>QUIC over a reliable transport (as defined in this document).</t>
          </dd>
          <dt>RPT:</dt>
          <dd>
            <t>reliable and protected transport offering both cryptographic protection and error-free, in-order application data delivery (e.g. TLS/TCP, TLS/SCTP).</t>
          </dd>
          <dt>RT:</dt>
          <dd>
            <t>reliable transport offering error-free, in-order application data delivery but not offering cryptographic protection (e.g. SCTP).</t>
          </dd>
          <dt>session:</dt>
          <dd>
            <t>a collection of QUIC connections and paths used to exchange QUIC packets between two endpoints.</t>
          </dd>
        </dl>
      </section>
      <section anchor="notation">
        <name>Notation</name>
        <t>This document uses the field notation defined in <xref target="RFC9000"/> and quoted below:</t>
        <blockquote>
          <t>Individual fields use the following notational conventions, with all lengths in bits:</t>
          <t>x (A): Indicates that x is A bits long</t>
          <t>x (i): Indicates that x holds an integer value using the variable length encoding described in <xref section="16" sectionFormat="comma" target="RFC9000"/></t>
          <t>x (A..B): Indicates that x can be any length from A to B; A can be omitted to indicate a minimum of zero bits, and B can be omitted to indicate no set upper limit; values in this format always end on a byte boundary</t>
          <t>x (L) = C: Indicates that x has a fixed value of C; the length of x is described by L, which can use any of the length forms above</t>
          <t>x (L) = C..D: Indicates that x has a value in the range from C to D, inclusive, with the length described by L, as above</t>
          <t>x (L)...: Indicates that x is repeated zero or more times and that each instance has a length of L</t>
        </blockquote>
      </section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>The differences between the protocol stack of QORT and the protocol stack of <xref target="RFC9000"/> are illustrated in <xref target="fig-protocol-stacks"/>:</t>
      <figure anchor="fig-protocol-stacks">
        <name>RFC9000 and QORT Protocol Stacks</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="296" viewBox="0 0 296 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 8,112 L 8,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 8,224" fill="none" stroke="black"/>
              <path d="M 8,256 L 8,288" fill="none" stroke="black"/>
              <path d="M 64,80 L 64,112" fill="none" stroke="black"/>
              <path d="M 64,160 L 64,192" fill="none" stroke="black"/>
              <path d="M 64,224 L 64,256" fill="none" stroke="black"/>
              <path d="M 120,32 L 120,80" fill="none" stroke="black"/>
              <path d="M 120,112 L 120,160" fill="none" stroke="black"/>
              <path d="M 120,192 L 120,224" fill="none" stroke="black"/>
              <path d="M 120,256 L 120,288" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,80" fill="none" stroke="black"/>
              <path d="M 176,112 L 176,160" fill="none" stroke="black"/>
              <path d="M 176,192 L 176,288" fill="none" stroke="black"/>
              <path d="M 232,80 L 232,112" fill="none" stroke="black"/>
              <path d="M 232,160 L 232,192" fill="none" stroke="black"/>
              <path d="M 288,32 L 288,80" fill="none" stroke="black"/>
              <path d="M 288,112 L 288,160" fill="none" stroke="black"/>
              <path d="M 288,192 L 288,288" fill="none" stroke="black"/>
              <path d="M 8,32 L 120,32" fill="none" stroke="black"/>
              <path d="M 176,32 L 288,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 120,80" fill="none" stroke="black"/>
              <path d="M 176,80 L 288,80" fill="none" stroke="black"/>
              <path d="M 8,112 L 120,112" fill="none" stroke="black"/>
              <path d="M 176,112 L 288,112" fill="none" stroke="black"/>
              <path d="M 8,160 L 120,160" fill="none" stroke="black"/>
              <path d="M 176,160 L 288,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 120,192" fill="none" stroke="black"/>
              <path d="M 176,192 L 288,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 120,224" fill="none" stroke="black"/>
              <path d="M 8,256 L 120,256" fill="none" stroke="black"/>
              <path d="M 8,288 L 120,288" fill="none" stroke="black"/>
              <path d="M 176,288 L 288,288" fill="none" stroke="black"/>
              <g class="text">
                <text x="64" y="52">upper-layer</text>
                <text x="232" y="52">upper-layer</text>
                <text x="64" y="68">application</text>
                <text x="232" y="68">application</text>
                <text x="60" y="132">QUIC</text>
                <text x="228" y="132">QUIC</text>
                <text x="64" y="148">(RFC9000)</text>
                <text x="212" y="148">over</text>
                <text x="244" y="148">RT</text>
                <text x="64" y="212">UDP</text>
                <text x="236" y="228">Reliable</text>
                <text x="232" y="244">(Protected)</text>
                <text x="232" y="260">Transport</text>
                <text x="60" y="276">IP</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+-------------+      +-------------+
| upper-layer |      | upper-layer |
| application |      | application |
+------+------+      +------+------+
       |                    |       
+------+------+      +------+------+
|    QUIC     |      |    QUIC     |
|  (RFC9000)  |      |  over RT    |
+------+------+      +------+------+
       |                    |
+------+------+      +------+------+
|     UDP     |      |             |
+------+------+      |   Reliable  |
       |             | (Protected) |
+------+------+      |  Transport  |
|     IP      |      |             |
+-------------+      +-------------+
]]></artwork>
        </artset>
      </figure>
      <t><xref target="RFC9000"/> uses UDP/IP to convey QUIC packets between the endpoints of a QUIC session while QORT is designed to use a reliable transport between the endpoints. The reliable transport may include IP and may even include UDP (or it may not) so long as the requirements of <xref target="reliable_transport"/> are met.</t>
      <t>Depending on the characteristics of the reliable transport, one of two modes of QORT may be used by the upper-layer application:</t>
      <ul spacing="normal">
        <li>
          <t>CRYPTO-QORT includes the cryptographic mechanisms described in <xref section="7" sectionFormat="of" target="RFC9000"/> and is designed to operate over a reliable transport that does not provide integrity and privacy protection (i.e. an RT). For example, this mode may be used when operating QORT over SCTP <xref target="SCTP"/>.</t>
        </li>
        <li>
          <t>BASIC-QORT is designed to operate over a reliable transport that also provides integrity and privacy protection (i.e. an RPT). For example, this mode may be used when operating QORT over TLS <xref target="TLS"/> (over TCP or SCTP) or over a 5G radio link <xref target="NR-RLP"/>.</t>
        </li>
      </ul>
      <t>The mode selected by the client is indicated by the <tt>Version</tt> field in the long packet header of the QUIC INITIAL packet sent from the client to a server. Different QORT modes are distinguished by different version values (<xref target="mode_selection"/>).</t>
      <t>If CRYPTO-QORT mode is selected by the client, the QUIC INITIAL packet transmitted by an endpoint includes a QUIC CRYPTO frame for the initial cryptographic handshake and the transport parameters selected by the endpoint (<xref target="crypto_qort"/>).</t>
      <t>If BASIC-QORT mode is selected by the client, the QUIC INITIAL packet transmitted by an endpoint includes a new QORT_CONFIGURATION frame that contains the transport parameters selected by the endpoint (<xref target="basic_qort"/>).</t>
      <t>Once the initial handshake has been completed, the client and server may exchange QUIC packets containing any of the <xref target="RFC9000"/> QUIC frames that are not subject to restrictions imposed by the selected QORT mode (<xref target="deprecated_frames"/>).</t>
      <aside>
        <t>The differences between QORT and the proposal in <xref target="QMUX-DRAFT"/> are discussed in <xref target="appendix_qmux"/>.</t>
      </aside>
    </section>
    <section anchor="reliable_transport">
      <name>Reliable Transport Services</name>
      <t>QORT replaces the UDP/IP transport of <xref target="RFC9000"/> with a reliable transport that ensures the in-order exchange of error-free messages and may provide cryptographic protection.</t>
      <section anchor="message_delimiting">
        <name>Delimiting Messages</name>
        <t>Some reliable transports provide message delimitation (aka. "framing"), allowing a sequence of bytes conveyed by the reliable transport to be identified and treated as a self-contained <tt>message</tt>. For example, in <xref target="SCTP"/> message delimitation is provided by the SCTP packet protocol and in <xref target="NR-RLP"/> message delimitation is provided by the packet data convergence protocol (PDCP). When message delimitation is provided by the reliable transport, each transmitted QUIC packet MUST be treated as a separate message.</t>
        <t>Some reliable transports (e.g. TCP) only convey byte streams and do not (natively) provide message delimitation. When message delimitation is not provided by the reliable transport, each transmitted QUIC packet MUST be terminated by a QORT end-of-packet frame (<xref target="quic_packet_delimiting"/>).</t>
      </section>
      <section anchor="in_order_delivery">
        <name>In-Order Delivery</name>
        <t>A reliable transport MUST provide in-order delivery of messages, ensuring that messages are presented to a receiving QORT entity in the same order that they sent by a transmitting QORT entity.</t>
      </section>
      <section anchor="guaranteed_delivery">
        <name>Guaranteed Delivery</name>
        <t>A reliable transport MUST provide guaranteed delivery, ensuring that any bytes of a message lost in transmission between two endpoints are recovered, normally through retransmission. The reliable transport MUST buffer any bytes received out-of-order and MUST reorder any recovered bytes to ensure in-order delivery of the messages.</t>
      </section>
      <section anchor="congestion_control">
        <name>Congestion Control</name>
        <t>A reliable transport MUST provide congestion control that is applied to the aggregate of packets transmitted by an endpoint.</t>
      </section>
      <section anchor="crypto_protection">
        <name>Cryptographic Protection</name>
        <t>A reliable transport MAY also provide integrity protection (e.g. a cryptographic hash of packet contents) and privacy protection (i.e. encryption). The ability of a reliable transport to provide cryptographic protection may influence the QORT mode of operation selected by a client (<xref target="operation_modes"/>).</t>
      </section>
    </section>
    <section anchor="operation_modes">
      <name>Modes of Operation</name>
      <t>A client may choose one of two modes of operations for QUIC over a reliable transport -- CRYPTO-QORT mode or BASIC-QORT mode.</t>
      <t>If a reliable transport provides integrity and privacy protection, a client SHOULD select BASIC-QORT mode, otherwise the client SHOULD select CRYPTO-QORT mode. The choice of QORT mode is, however, ultimately based on the requirements of the upper-layer application (see <xref target="appendix_transports"/>).</t>
      <section anchor="mode_selection">
        <name>Mode Selection</name>
        <t>The QORT mode of operation selected by the client is indicated by the <tt>Version</tt> field in the long packet header of the QUIC INITIAL packet sent from the client to a server.</t>
        <t>If the server is able to support the QORT mode selected by the client, the server MUST respond with a QUIC INITIAL packet where the <tt>Version</tt> field in the long packet header is the same as the version indicated by the client.</t>
        <t>If the server is not able to support the QORT mode selected by the client, the server MUST close the connection with an Error_qortNotSupported (<xref target="connectionerrors"/>).</t>
        <t>Because the reliable transport has been established between the client and server before the start of QORT operations, there is no mode of operation negotiation -- the server either accepts the mode selected by the client or it closes the connection. Similarly, QORT does not support negotiation of the QUIC protocol version using a VERSION NEGOTIATION packet.</t>
        <t>In this document, the mode of operation <tt>Version</tt> dictates compatibility with Version 0x00000001 of QUIC; compatibility with other versions of QUIC are beyond the scope of this document.</t>
        <aside>
          <t>Note that the selected mode must be indicated in the <tt>Version</tt> field of all long QUIC packet headers.</t>
        </aside>
      </section>
      <section anchor="crypto_qort">
        <name>CRYPTO-QORT mode of operation</name>
        <t>The CRYPTO-QORT mode of operation is initiated using a cryptographic handshake sequence similar to that described in <xref section="7" sectionFormat="of" target="RFC9000"/>.</t>
        <t>The CRYPTO-QORT mode of operation differs from <xref target="RFC9000"/> in the following ways:</t>
        <ul spacing="normal">
          <li>
            <t>the <tt>Version</tt> field in a QUIC long header packet MUST be set to Version01_qortCrypto (<xref target="iana_version_numbers"/>).</t>
          </li>
          <li>
            <t>deprecated QUIC frames listed in <xref target="deprecated_frames"/> and in <xref target="deprecated_crypto_frames"/> MUST NOT be included in any QUIC packets.</t>
          </li>
        </ul>
        <t>In the CRYPTO-QORT mode of operation, a receiving endpoint must be able to detect the end of a QUIC packet before attempting to decrypt the packet. Therefore CRYPTO-QORT mode of operation can only be used with a reliable transport that provides message delimitation (<xref target="message_delimiting"/>).</t>
        <t>An exemplary CRYPTO-QORT handshake sequence is illustrated in <xref target="fig-crypto-handshake"/>.</t>
        <figure anchor="fig-crypto-handshake">
          <name>CRYPTO-QORT Handshake</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="512" width="568" viewBox="0 0 568 512" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                <path d="M 40,64 L 40,496" fill="none" stroke="black"/>
                <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
                <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
                <path d="M 528,64 L 528,496" fill="none" stroke="black"/>
                <path d="M 560,32 L 560,64" fill="none" stroke="black"/>
                <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
                <path d="M 488,32 L 560,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
                <path d="M 488,64 L 560,64" fill="none" stroke="black"/>
                <path d="M 40,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 48,176 L 528,176" fill="none" stroke="black"/>
                <path d="M 48,256 L 528,256" fill="none" stroke="black"/>
                <path d="M 40,336 L 520,336" fill="none" stroke="black"/>
                <path d="M 48,416 L 528,416" fill="none" stroke="black"/>
                <path d="M 48,478 L 520,478" fill="none" stroke="black"/>
                <path d="M 48,482 L 520,482" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="528,480 516,474.4 516,485.6" fill="black" transform="rotate(0,520,480)"/>
                <polygon class="arrowhead" points="528,336 516,330.4 516,341.6" fill="black" transform="rotate(0,520,336)"/>
                <polygon class="arrowhead" points="528,96 516,90.4 516,101.6" fill="black" transform="rotate(0,520,96)"/>
                <polygon class="arrowhead" points="56,480 44,474.4 44,485.6" fill="black" transform="rotate(180,48,480)"/>
                <polygon class="arrowhead" points="56,416 44,410.4 44,421.6" fill="black" transform="rotate(180,48,416)"/>
                <polygon class="arrowhead" points="56,256 44,250.4 44,261.6" fill="black" transform="rotate(180,48,256)"/>
                <polygon class="arrowhead" points="56,176 44,170.4 44,181.6" fill="black" transform="rotate(180,48,176)"/>
                <g class="text">
                  <text x="44" y="52">Client</text>
                  <text x="524" y="52">Server</text>
                  <text x="72" y="84">frame</text>
                  <text x="176" y="84">crypto(clientHello,</text>
                  <text x="320" y="84">client_options)</text>
                  <text x="392" y="84">+</text>
                  <text x="432" y="84">padding</text>
                  <text x="76" y="116">packet</text>
                  <text x="156" y="116">format=long,</text>
                  <text x="264" y="116">type=initial,</text>
                  <text x="396" y="116">version=qortCrypto</text>
                  <text x="128" y="164">frame</text>
                  <text x="232" y="164">crypto(serverHello,</text>
                  <text x="376" y="164">server_options)</text>
                  <text x="448" y="164">+</text>
                  <text x="488" y="164">padding</text>
                  <text x="124" y="196">packet</text>
                  <text x="204" y="196">format=long,</text>
                  <text x="312" y="196">type=initial,</text>
                  <text x="444" y="196">version=qortCrypto</text>
                  <text x="360" y="244">frame</text>
                  <text x="452" y="244">crypto(finished)</text>
                  <text x="108" y="276">packet</text>
                  <text x="188" y="276">format=long,</text>
                  <text x="304" y="276">type=handshake,</text>
                  <text x="444" y="276">version=qortCrypto</text>
                  <text x="72" y="324">frame</text>
                  <text x="164" y="324">crypto(finished)</text>
                  <text x="76" y="356">packet</text>
                  <text x="156" y="356">format=long,</text>
                  <text x="272" y="356">type=handshake,</text>
                  <text x="412" y="356">version=qortCrypto</text>
                  <text x="376" y="404">frame</text>
                  <text x="460" y="404">handshake_done</text>
                  <text x="388" y="436">packet</text>
                  <text x="468" y="436">format=short</text>
                  <text x="224" y="468">1-RTT</text>
                  <text x="268" y="468">data</text>
                  <text x="324" y="468">exchange</text>
                  <text x="228" y="500">packet</text>
                  <text x="308" y="500">format=short</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+--------+                                                  +--------+
| Client |                                                  | Server |
+---+----+                                                  +----+---+
    | frame crypto(clientHello, client_options) + padding        |
    +----------------------------------------------------------->|
    | packet format=long, type=initial, version=qortCrypto       |
    |                                                            |
    |                                                            |
    |        frame crypto(serverHello, server_options) + padding |
    |<-----------------------------------------------------------+
    |       packet format=long, type=initial, version=qortCrypto |
    |                                                            |
    |                                                            |
    |                                     frame crypto(finished) |
    |<-----------------------------------------------------------+
    |     packet format=long, type=handshake, version=qortCrypto |
    |                                                            |
    |                                                            |
    | frame crypto(finished)                                     |
    +----------------------------------------------------------->|
    | packet format=long, type=handshake, version=qortCrypto     |
    |                                                            |
    |                                                            |
    |                                       frame handshake_done |
    |<-----------------------------------------------------------+
    |                                        packet format=short |
    |                                                            |
    |                    1-RTT data exchange                     |
    |<==========================================================>|
    |                    packet format=short                     |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="basic_qort">
        <name>BASIC-QORT mode of operation</name>
        <t>The BASIC-QORT mode of operation assumes that cryptographic protection (if needed) has been established by the reliable transport before the QORT handshake between client and server begins. As a consequence, the BASIC-QORT mode of operation involves an initial exchange of transport parameters between the endpoints but does not include a cryptographic handshake.</t>
        <t>The BASIC-QORT mode of operation differs from <xref target="RFC9000"/> in the following ways:</t>
        <ul spacing="normal">
          <li>
            <t>the <tt>Version</tt> field in a QUIC long header packet MUST be set to Version01_qortBasic (<xref target="iana_version_numbers"/>).</t>
          </li>
          <li>
            <t>the QUIC INITIAL packets exchanged between endpoints MUST include a QORT_CONFIGURATION frame (<xref target="frame_configuration"/>).</t>
          </li>
          <li>
            <t>QUIC HANDSHAKE packets MUST NOT be exchanged between endpoints.</t>
          </li>
          <li>
            <t>deprecated QUIC frames listed in <xref target="deprecated_frames"/> and in <xref target="deprecated_basic_frames"/> MUST NOT be included in any QUIC packets.</t>
          </li>
        </ul>
        <t>The BASIC-QORT handshake sequence is illustrated in <xref target="fig-basic-handshake"/>.</t>
        <figure anchor="fig-basic-handshake">
          <name>BASIC-QORT Handshake</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="568" viewBox="0 0 568 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                <path d="M 40,64 L 40,336" fill="none" stroke="black"/>
                <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
                <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
                <path d="M 528,64 L 528,336" fill="none" stroke="black"/>
                <path d="M 560,32 L 560,64" fill="none" stroke="black"/>
                <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
                <path d="M 488,32 L 560,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
                <path d="M 488,64 L 560,64" fill="none" stroke="black"/>
                <path d="M 40,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 48,176 L 528,176" fill="none" stroke="black"/>
                <path d="M 48,256 L 528,256" fill="none" stroke="black"/>
                <path d="M 48,318 L 520,318" fill="none" stroke="black"/>
                <path d="M 48,322 L 520,322" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="528,320 516,314.4 516,325.6" fill="black" transform="rotate(0,520,320)"/>
                <polygon class="arrowhead" points="528,96 516,90.4 516,101.6" fill="black" transform="rotate(0,520,96)"/>
                <polygon class="arrowhead" points="56,320 44,314.4 44,325.6" fill="black" transform="rotate(180,48,320)"/>
                <polygon class="arrowhead" points="56,256 44,250.4 44,261.6" fill="black" transform="rotate(180,48,256)"/>
                <polygon class="arrowhead" points="56,176 44,170.4 44,181.6" fill="black" transform="rotate(180,48,176)"/>
                <g class="text">
                  <text x="44" y="52">Client</text>
                  <text x="524" y="52">Server</text>
                  <text x="72" y="84">frame</text>
                  <text x="208" y="84">qort_config(client_options)</text>
                  <text x="328" y="84">+</text>
                  <text x="368" y="84">padding</text>
                  <text x="76" y="116">packet</text>
                  <text x="156" y="116">format=long,</text>
                  <text x="264" y="116">type=initial,</text>
                  <text x="392" y="116">version=qortBasic</text>
                  <text x="192" y="164">frame</text>
                  <text x="328" y="164">qort_config(server_options)</text>
                  <text x="448" y="164">+</text>
                  <text x="488" y="164">padding</text>
                  <text x="132" y="196">packet</text>
                  <text x="212" y="196">format=long,</text>
                  <text x="320" y="196">type=initial,</text>
                  <text x="448" y="196">version=qortBasic</text>
                  <text x="376" y="244">frame</text>
                  <text x="460" y="244">handshake_done</text>
                  <text x="388" y="276">packet</text>
                  <text x="468" y="276">format=short</text>
                  <text x="224" y="308">1-RTT</text>
                  <text x="268" y="308">data</text>
                  <text x="324" y="308">exchange</text>
                  <text x="228" y="340">packet</text>
                  <text x="308" y="340">format=short</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+--------+                                                  +--------+
| Client |                                                  | Server |
+---+----+                                                  +----+---+
    | frame qort_config(client_options) + padding                |
    +----------------------------------------------------------->|
    | packet format=long, type=initial, version=qortBasic        |
    |                                                            |
    |                                                            |
    |                frame qort_config(server_options) + padding |
    |<-----------------------------------------------------------+
    |        packet format=long, type=initial, version=qortBasic |
    |                                                            |
    |                                                            |
    |                                       frame handshake_done |
    |<-----------------------------------------------------------+
    |                                        packet format=short |
    |                                                            |
    |                    1-RTT data exchange                     |
    |<==========================================================>|
    |                    packet format=short                     |
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="deprecated_frames">
      <name>Deprecated QUIC Frames</name>
      <t>When either QORT mode is enabled, the following QUIC frame types defined by <xref target="RFC9000"/> MUST NOT be transmitted by either endpoint in a session:</t>
      <ul spacing="normal">
        <li>
          <dl>
            <dt>ACK_ECN frames</dt>
            <dd>
              <t>are not needed because handling of ECN signals is a function of the reliable transport.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt>MAX_DATA frames</dt>
            <dd>
              <t>are not needed because restrictions (if any) on the amount of data to be exchanged must be negotiated and enforced by the reliable transport.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt>NEW_TOKEN frames</dt>
            <dd>
              <t>are not needed because à priori validation of the client address (if supported) is a function of the reliable transport.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <t>If an endpoint receives one of these frame types, it MUST close the connection with an error of type Error_qortInvalidFrame (<xref target="iana"/>).</t>
      <section anchor="deprecated_crypto_frames">
        <name>Deprecated QUIC Frames in CRYPTO-QORT Mode</name>
        <t>When CRYPTO-QORT mode is selected, the following additional QUIC frame types defined by <xref target="RFC9000"/> MUST NOT be transmitted by either endpoint in a connection:</t>
        <ul spacing="normal">
          <li>
            <t>(TBD)</t>
          </li>
        </ul>
        <t>If an endpoint receives one of these frame types when operating in CRYPTO-QORT mode, it MUST close the connection with an error of type Error_qortInvalidFrame (<xref target="iana"/>).</t>
      </section>
      <section anchor="deprecated_basic_frames">
        <name>Deprecated QUIC Frames in BASIC-QORT Mode</name>
        <t>When BASIC-QORT mode is selected, the following additional QUIC frame types defined by <xref target="RFC9000"/> MUST NOT be transmitted by either endpoint in a connection:</t>
        <ul spacing="normal">
          <li>
            <dl>
              <dt>CRYPTO frames</dt>
              <dd>
                <t>are not needed because cryptographic protection is provided by the reliable transport.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>If an endpoint receives one of these frame types when operating in BASIC-QORT mode, it MUST close the connection with an error of type Error_qortInvalidFrame (<xref target="iana"/>).</t>
      </section>
    </section>
    <section anchor="quic_ack_frame">
      <name>Use of QUIC ACK Frames</name>
      <t>QUIC ACK frames are not needed for error recovery nor are they needed for congestion control because the reliable transport provides both of these services (<xref target="reliable_transport"/>).</t>
      <t>However, in some instances, an ACK frame may be used as an indication that information previously transmitted in a packet by one QUIC endpoint has been processed by the peer endpoint in a QUIC connection. For this reason, QORT retains the use and processing of ACK frames (but not of ACK_ECN frames, <xref target="deprecated_frames"/>).</t>
    </section>
    <section anchor="quic_packet_delimiting">
      <name>Delimiting QUIC Packets</name>
      <t>When a reliable transport does not provide message delimitation (<xref target="message_delimiting"/>), a transmitting QORT endpoint MUST identify the end of a QUIC packet by including a QORT_ENDOFPACKET frame (<xref target="frame_endofpacket"/>) as the last QUIC frame in the packet. See example in <xref target="appendix_eop"/>.</t>
      <t>When a reliable transport does provide message delimitation, QORT_ENDOFPACKET frames MAY be used to identify the end of a QUIC packet even though this adds unnecessary overhead. It is RECOMMENDED that QORT_ENDOFPACKET frames not be used when the reliable transport provides message delimitation.</t>
      <t>When a receiving endpoint detects a QORT_ENDOFPACKET frame, it MUST stop processing the current QUIC packet. Any bytes remaining in the receive buffer of the endpoint MUST be treated as the start of a new QUIC packet.</t>
    </section>
    <section anchor="qort_frames">
      <name>New QORT Frame Types</name>
      <t>QORT procedures utilise one new QUIC frame type -- QORT_ENDOFPACKET -- when operating over a reliable transport that does not provide message delimitation (<xref target="quic_packet_delimiting"/>).</t>
      <t>In addition, QORT procedures utilise one additional new QUIC frame type -- QORT_CONFIGURATION -- when operating in BASIC-QORT mode. The QORT_CONFIGURATION frame type MUST NOT be used when operating in CRYPTO-QORT mode.</t>
      <t>The QORT_CONFIGURATION frame type is ack-eliciting; the QORT_ENDOFPACKET frame type is not ack-eliciting.</t>
      <t>Both QORT_CONFIGURATION and QORT_ENDOFPACKET are non-probing frames.</t>
      <section anchor="frame_configuration">
        <name>QORT_CONFIGURATION frame</name>
        <t>A QORT_CONFIGURATION frame contains transport parameters defined by the sending endpoint. As such, a QORT_CONFIGURATION frame is a direct replacement for the TLS <tt>quic_transport_parameters</tt> extension described in <xref section="8.2" sectionFormat="of" target="RFC9001"/>.</t>
        <t>When a client initiates the BASIC-QORT mode of operation, the client MUST include a QORT_CONFIGURATION frame in its QUIC INITIAL packet. See example in <xref target="appendix_config"/>.</t>
        <t>When a server agrees to use the BASIC-QORT mode of operation, the server MUST include a QORT_CONFIGURATION frame in its responding QUIC INITIAL packet.</t>
        <t>A QORT_CONFIGURATION frame (<xref target="fig-qort_configuration_frame"/>) includes the following fields:</t>
        <figure anchor="fig-qort_configuration_frame">
          <name>QORT_CONFIGURATION Frame Fields</name>
          <artwork><![CDATA[
   QORT_CONFIGURATION Frame {
     Type (i) = Type_qortConfiguration,
     Transport_Parameter_List_Length (i)
     Transport_Parameter_List (..) ...,
   }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_qortConfiguration</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Transport_Parameter_List_Length</tt></dt>
              <dd>
                <t>is set to the length of the <tt>Transport_Parameter_List</tt>, in number of octets.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt><tt>Transport_Parameter_List</tt></dt>
              <dd>
                <t>is a list of transport parameters.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>As defined in <xref section="18" sectionFormat="of" target="RFC9000"/>, each transport parameter in the list of transport parameters is encoded as an (identifier, length, value) tuple -- i.e.</t>
        <figure anchor="fig-transport_parameter">
          <name>RFC9000 Transport Parameter Fields</name>
          <artwork><![CDATA[
   Transport Parameter {
     Transport Parameter ID (i),
     Transport Parameter Length (i),
     Transport Parameter Value (..),
   }
]]></artwork>
        </figure>
        <t>The set of valid QORC transport parameters is described in <xref target="transport_parameters"/>.</t>
      </section>
      <section anchor="frame_endofpacket">
        <name>QORT_ENDOFPACKET frame</name>
        <t>A QORT_ENDOFPACKET frame is used to identify the end of a QUIC packet (<xref target="quic_packet_delimiting"/>). A QORT_ENDOFPACKET frame (<xref target="fig-qort_endofpacket_frame"/>) includes the following fields:</t>
        <figure anchor="fig-qort_endofpacket_frame">
          <name>QORT_ENDOFPACKET Frame Fields</name>
          <artwork><![CDATA[
   QORT_ENDOFPACKET Frame {
     Type (i) = Type_qortEndOfPacket,
   }
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <dl>
              <dt><tt>Type</tt></dt>
              <dd>
                <t>is set to <tt>Type_qortEndOfPacket</tt> (<xref target="iana_frame_types"/>).</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="transport_parameters">
      <name>Transport Parameters</name>
      <t>The different modes of QORT operation use different mechanisms for the exchange of transport parameters by the endpoints:</t>
      <ul spacing="normal">
        <li>
          <t>in CRYPTO-QORT mode of operation, transport parameters are exchanged as a TLS extension in a CRYPTO frame conveyed in an INITIAL packet (<xref target="crypto_qort"/>);</t>
        </li>
        <li>
          <t>in BASIC-QORT mode of operation, transport parameters are exchanged as in a QORT_CONFIGRATION frame conveyed in an INITIAL packet (<xref target="basic_qort"/>).</t>
        </li>
      </ul>
      <section anchor="quic_transport_parameters">
        <name>RFC9000 Transport Parameters</name>
        <t>Not all transport parameters defined in <xref target="RFC9000"/> are valid for use with QUIC over a reliable transport. When either QORT mode is enabled, a QUIC transport parameter with an 'x' in the "not allowed?" column of <xref target="_table-transport_parameters"/> MUST NOT be transmitted by either endpoint.</t>
        <table anchor="_table-transport_parameters">
          <name>Allowed/Not-allowed QUIC Transport Parameters</name>
          <thead>
            <tr>
              <th align="left">transport parameter</th>
              <th align="center">allowed?</th>
              <th align="center">not allowed?</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">original_destination_connection_id</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">max_idle_timeout</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">stateless_reset_token</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">max_udp_payload_size</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">initial_max_data</td>
              <td align="center"> </td>
              <td align="center">x</td>
            </tr>
            <tr>
              <td align="left">initial_max_stream_data_bidi_local</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">initial_max_stream_data_bidi_remote</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">initial_max_stream_data_uni</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">initial_max_streams_bidi</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">initial_max_streams_uni</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">ack_delay_exponent</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">max_ack_delay</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">disable_active_migration</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">preferred_address</td>
              <td align="center"> </td>
              <td align="center">x</td>
            </tr>
            <tr>
              <td align="left">active_connection_id_limit</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">initial_source_connection_id</td>
              <td align="center">x</td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">retry_source_connection_id</td>
              <td align="center"> </td>
              <td align="center">x</td>
            </tr>
          </tbody>
        </table>
        <t>If an endpoint receives one of the "not allowed?" transport parameters, it MUST close the connection with an error of type Error_qortInvalidParameter (<xref target="iana"/>).</t>
      </section>
    </section>
    <section anchor="connectionerrors">
      <name>QORT Connection Errors</name>
      <t>This document extends the QUIC Transport Error Codes of <xref section="22.5" sectionFormat="comma" target="RFC9000"/> with the following values (<xref target="iana_error_codes"/>):</t>
      <ul spacing="normal">
        <li>
          <dl>
            <dt><tt>Error_qortInvalidFrame</tt></dt>
            <dd>
              <t>indicates that an unknown frame type was received or that the QUIC frame type is not allowed in the QORT mode of operation (<xref target="deprecated_frames"/>).</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_qortInvalidParameter</tt></dt>
            <dd>
              <t>indicates that a received transport parameter was invalid (e.g. was badly formatted) or is not allowed in a QORT mode of operation (<xref target="transport_parameters"/>) .</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_qortNotSupported</tt></dt>
            <dd>
              <t>indicates that the QORT mode of operation selected by a client is not supported by the server.</t>
            </dd>
          </dl>
        </li>
        <li>
          <dl>
            <dt><tt>Error_qortProtocolViolation</tt></dt>
            <dd>
              <t>indicates an error with protocol compliance that is not covered by a more specific error code -- e.g. an endpoint received a QORT_CONFIGURATION frame when BASIC-QORT mode is not selected.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <t>QORT connection errors MUST be processed according to <xref section="11.1" sectionFormat="comma" target="RFC9000"/>.</t>
    </section>
    <section anchor="quic_extensions">
      <name>QUIC extensions</name>
      <t>In general, any extension to Version 0x00000001 of QUIC that does not rely on the deprecated QUIC frames of <xref target="deprecated_frames"/> may be used with QORT (e.g. <xref target="DATAGRAM"/>, <xref target="PMQUIC"/>).
However this must be be verified by the extension designers and is beyond the scope of this document.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>QORT does not change the operating principles of <xref target="RFC9000"/> and, as such,
is subject to the same security considerations as <xref section="21" sectionFormat="comma" target="RFC9000"/>.</t>
      <t>Specific security considerations associated with the use of QORT procedures include:</t>
      <ul spacing="normal">
        <li>
          <t>packet protection. When using BASIC-QORT mode. the reliable transport is also expected to provide cryptographic protection of its payload (i.e. QUIC packets). As a consequence, all bits of a QUIC packet are cryptographically protected. Therefore, in BASIC-QORT mode, it should not be possible to mount an attack that relies on unfettered visibility of bits in a QUIC packet header (<xref section="3" sectionFormat="of" target="RFC9312"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>If approved, the following <em>provisional</em> entries will be added to the IANA QUIC Protocol Registry <xref target="IANA"/>.</t>
      <aside>
        <t>The values in this section of the Internet Draft are preliminary, for testing purposes only.</t>
      </aside>
      <section anchor="iana_version_numbers">
        <name>QUIC version numbers</name>
        <t>This document defines two new (preliminary) QUIC version numbers that are bound to Version 0x00000001 of QUIC (<xref target="operation_modes"/>):</t>
        <ul spacing="normal">
          <li>
            <t>Version01_qortBasic (0x54e51e9e)</t>
          </li>
          <li>
            <t>Version01_qortCrypto (0x147214bd)</t>
          </li>
        </ul>
      </section>
      <section anchor="iana_error_codes">
        <name>QORT transport error codes</name>
        <t>This document extends the QUIC Transport Error Codes of <xref section="22.5" sectionFormat="comma" target="RFC9000"/> with the following (preliminary) values:</t>
        <ul spacing="normal">
          <li>
            <t>Error_qortInvalidFrame (0x2fc2ed12e1295ab1)</t>
          </li>
          <li>
            <t>Error_qortInvalidParameter (0x0b244a578d7dc6c4)</t>
          </li>
          <li>
            <t>Error_qortNotSupported (0x341b50c67a845ff4)</t>
          </li>
          <li>
            <t>Error_qortProtocolViolation (0x0ed79e3b4c52d445)</t>
          </li>
        </ul>
      </section>
      <section anchor="iana_frame_types">
        <name>New QUIC frame types</name>
        <t>This document defines two new (preliminary) QUIC frame types:</t>
        <ul spacing="normal">
          <li>
            <t>Type_qortConfiguration (0x27f72376051c5308) -- <xref target="frame_configuration"/></t>
          </li>
          <li>
            <t>Type_qortEndOfPacket (0x3b5690c1243618cd) -- <xref target="frame_endofpacket"/></t>
          </li>
        </ul>
      </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="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="IANA" target="https://www.iana.org/assignments/quic/">
          <front>
            <title>QUIC Protocol Registry</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date/>
          </front>
        </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="RFC9312">
          <front>
            <title>Manageability of the QUIC Transport Protocol</title>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document discusses manageability of the QUIC transport protocol and focuses on the implications of QUIC's design and wire image on network operations involving QUIC traffic. It is intended as a "user's manual" for the wire image to provide guidance for network operators and equipment vendors who rely on the use of transport-aware network functions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9312"/>
          <seriesInfo name="DOI" value="10.17487/RFC9312"/>
        </reference>
        <reference anchor="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>
        <reference anchor="PMQUIC">
          <front>
            <title>QUIC Path Management for Multi-Path Configurations</title>
            <author fullname="Bill Gage" initials="B." surname="Gage">
              <organization>Unaffiliated</organization>
            </author>
            <date day="3" month="August" year="2025"/>
            <abstract>
              <t>   This document defines path management procedures for QUIC that
   operate independently of the connection management procedures defined
   in RFC9000.  The path management procedures enable a multipath
   configuration between endpoints by allowing QUIC packets associated
   with any connection identifier to be transported over any of the
   paths established between the endpoints.  As a consequence, the
   principles and operations of RFC9000 are retained regardless of the
   path used to a convey QUIC packet.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gage-quic-pathmgmt-04"/>
        </reference>
        <reference anchor="QMUX-DRAFT">
          <front>
            <title>QMux</title>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Jana Iyengar" initials="J." surname="Iyengar">
              <organization>Netflix</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple</organization>
            </author>
            <date day="13" month="November" year="2025"/>
            <abstract>
              <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.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/kazuho/draft-opik-quic-qmux.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-opik-quic-qmux-01"/>
        </reference>
        <reference anchor="SCTP">
          <front>
            <title>Stream Control Transmission Protocol</title>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <author fullname="K. Nielsen" initials="K." surname="Nielsen"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document describes the Stream Control Transmission Protocol (SCTP) and obsoletes RFC 4960. It incorporates the specification of the chunk flags registry from RFC 6096 and the specification of the I bit of DATA chunks from RFC 7053. Therefore, RFCs 6096 and 7053 are also obsoleted by this document. In addition, RFCs 4460 and 8540, which describe errata for SCTP, are obsoleted by this document.</t>
              <t>SCTP was originally designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks. It is also suited to be used for other applications, for example, WebRTC.</t>
              <t>SCTP is a reliable transport protocol operating on top of a connectionless packet network, such as IP. It offers the following services to its users:</t>
              <t>The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9260"/>
          <seriesInfo name="DOI" value="10.17487/RFC9260"/>
        </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="TLS">
          <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="NR-RLP" target="https://www.3gpp.org/DynaReport/38300.htm">
          <front>
            <title>Technical Specification 38.300; NR and NG-RAN Overall Description; Stage 2</title>
            <author>
              <organization>3rd Generation Partnership Project (3GPP)</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 568?>

<section anchor="appendix_examples">
      <name>QORT Packet Examples</name>
      <t>This section contains examples of QUIC packets when using QORT procedures.</t>
      <section anchor="appendix_eop">
        <name>QUIC Packet with QORT_ENDOFPACKET Frame</name>
        <t>When message delimitation is not provided by the reliable transport, each transmitted QUIC packet must be terminated by a QORT_ENDOFPACKET frame. This is illustrated in <xref target="fig-end-of-packet-framing"/>.</t>
        <figure anchor="fig-end-of-packet-framing">
          <name>Packet with QORT_ENDOFPACKET Frame</name>
          <artwork type="json" align="center"><![CDATA[
{
  "name": "transport:packet_received",
  "data": {
    "header": {
      "packet_number": 1,
      "packet_type": "1RTT",
      "dcid": "faee8572bad88622",
      "spin_bit": 0
    },
    "frames": [
      {
        "frame_type": "ack",
        "ack_delay": 2.888,
        "acked_ranges": [
          [
            0,
            0
          ]
        ]
      },
      {
        "frame_type": "stream",
        "fin": false,
        "length": 21,
        "offset": 0,
        "stream_id": 3
      },
      {
        "frame_type": "stream",
        "fin": false,
        "length": 4,
        "offset": 0,
        "stream_id": 7
      },
      {
        "frame_type": "stream",
        "fin": false,
        "length": 1,
        "offset": 0,
        "stream_id": 11
      },
      {
        "frame_type": "rt end_of_packet"
      }
    ],
    "raw": {
      "length": 63
    }
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="appendix_config">
        <name>QUIC Initial Packet with QORT_CONFIGURATION Frame</name>
        <t>In BASIC-QORT mode of operation, the INITIAL QUIC packet must include a QORT_CONFIGURATION frame. This is illustrated in <xref target="fig-rt-configuration"/>.</t>
        <figure anchor="fig-rt-configuration">
          <name>INITIAL Packet with QORT_CONFIGURATION Frame</name>
          <artwork type="json" align="center"><![CDATA[
{
  "name": "transport:packet_sent",
  "data": {
    "header": {
      "packet_number": 0,
      "packet_type": "initial",
      "dcid": "48dc009224099b2c",
      "scid": "18657c1acd3e0c5e"
    },
    "frames": [
      {
        "frame_type": "rt configuration",
        "transport_parameters": {
          "max_idle_timeout": 10000,
          "max_udp_payload_size": 1200,
          "initial_max_data": 1048576,
          "initial_max_stream_data_bidi_local": 1048576,
          "initial_max_stream_data_bidi_remote": 1048576,
          "initial_max_stream_data_uni": 1048576,
          "initial_max_streams_bidi": 128,
          "initial_max_streams_uni": 128,
          "ack_delay_exponent": 3,
          "max_ack_delay": 25,
          "disable_active_migration": false,
          "active_connection_id_limit": 8,
          "initial_source_connection_id": "18657c1acd3e0c5e",
          "max_datagram_frame_size": 65536
        }
      },
      {
        "frame_type": "padding",
        "length": 1089
      },
      {
        "frame_type": "rt end_of_packet"
      }
    ],
    "raw": {
      "length": 1200
    }
  }
}
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="appendix_transports">
      <name>QORT use with reliable transports</name>
      <t><xref target="_table-transport_modes"/> indicates how QORT is expected to be used with several reliable transports. The "Mode" indicates the QORT mode of operation and whether a QORT_ENDOFPACKET frame ("eop") is used for packet delimitation.</t>
      <table anchor="_table-transport_modes">
        <name>QORT modes over various transports</name>
        <thead>
          <tr>
            <th align="left">Mode</th>
            <th align="center">TLS/TCP</th>
            <th align="center">TLS/SCTP</th>
            <th align="center">NR-RLP</th>
            <th align="center">TCP</th>
            <th align="center">SCTP</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">BASIC with eop</td>
            <td align="center">(1)</td>
            <td align="center">(2)</td>
            <td align="center">(2)</td>
            <td align="center">(3)</td>
            <td align="center">(3)</td>
          </tr>
          <tr>
            <td align="left">BASIC without eop</td>
            <td align="center">(x)</td>
            <td align="center">(1)</td>
            <td align="center">(1)</td>
            <td align="center">(x)</td>
            <td align="center">(3)</td>
          </tr>
          <tr>
            <td align="left">CRYPTO with eop</td>
            <td align="center">(x)</td>
            <td align="center">(2,4)</td>
            <td align="center">(2,4)</td>
            <td align="center">(x)</td>
            <td align="center">(2)</td>
          </tr>
          <tr>
            <td align="left">CRYPTO without eop</td>
            <td align="center">(x)</td>
            <td align="center">(4)</td>
            <td align="center">(4)</td>
            <td align="center">(x)</td>
            <td align="center">(1)</td>
          </tr>
        </tbody>
      </table>
      <t>(1) recommended mode of operation<br/>
(2) possible, but not recommended - redundant end-of-packet frames<br/>
(3) possible, but not recommended - no cryptographic protection<br/>
(4) possible, but not recommended - redundant cryptographic protection<br/>
(x) not possible - message delimitation required</t>
    </section>
    <section anchor="appendix_qmux">
      <name>Comparison to <xref target="QMUX-DRAFT"/></name>
      <aside>
        <t>This section is provided for information only.</t>
      </aside>
      <t><xref target="QMUX-DRAFT"/> proposes to convey QUIC frames over a reliable, bi-directional,
   byte-oriented stream. The following sections highlight key differences between <xref target="QMUX-DRAFT"/> and QORT.</t>
      <section anchor="use-of-quic-packets">
        <name>Use of QUIC packets</name>
        <t><xref target="QMUX-DRAFT"/> does not use QUIC packets for encapsulating QUIC frames. Instead, <xref target="QMUX-DRAFT"/> sends QUIC frames directly over the reliable transport.</t>
        <t>By contrast, QORT retains the use of QUIC packets to support QUIC operations that are dependent on information in the QUIC packet header as described in <xref section="17" sectionFormat="of" target="RFC9000"/> -- e.g. packet numbering, coalescence, cryptographic protection, connection identification and migration.</t>
      </section>
      <section anchor="connections-and-connection-identifiers">
        <name>Connections and connection identifiers</name>
        <t><xref target="QMUX-DRAFT"/> does not include mechanisms for identifying QUIC connections, for managing QUIC connection identifiers, or for path migration. Essentially, all QUIC frames are associated with a zero-length connection identifier.</t>
        <t>By contrast, QORT retains the concept of QUIC connections and associated connection identifiers to support connection management, path migration and multipath operations.</t>
      </section>
      <section anchor="cryptographic-protection">
        <name>Cryptographic protection</name>
        <t><xref target="QMUX-DRAFT"/> requires an underlying transport that provides cryptographic protection. As a consequence, <xref target="QMUX-DRAFT"/> offers no cryptographic capabilities.</t>
        <t>By contrast, QORT offers a CRYPTO-QORT mode of operation that reuses <xref target="RFC9000"/> cryptographic protection mechanisms such as a cryptographic handshake using QUIC CRYPTO frames and key rotation using the key phase bit of a QUIC packet header.</t>
      </section>
      <section anchor="stream-processing">
        <name>Stream processing</name>
        <t>While <xref target="QMUX-DRAFT"/> reuses QUIC STREAM frames for exchanging application data, <xref section="4.1" sectionFormat="of" target="QMUX-DRAFT"/> introduces some restrictions on STREAM frame use.</t>
        <t>By contrast, QORT does not change any <xref target="RFC9000"/> procedures related to stream processing.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
