<?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-00" 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-00"/>
    <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="10"/>
    <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.</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"/>).
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="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="23" month="July" year="2025"/>
            <abstract>
              <t>   This document specifies a polyfill of QUIC version 1 that runs on top
   of bi-directional streams such as TLS.

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-00"/>
        </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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
kn2lMcvy3DFuWftfEwj7XPyKAAA=

-->

</rfc>
