<?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-ietf-tls-super-jumbo-record-limit-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Large Record Sizes for TLS">Large Record Sizes for TLS and DTLS with Reduced Overhead</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-super-jumbo-record-limit-02"/>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="M." surname="Tüxen" fullname="Michael Tüxen">
      <organization>Münster Univ. of Applied Sciences</organization>
      <address>
        <email>tuexen@fh-muenster.de</email>
      </address>
    </author>
    <date year="2025" month="November" day="03"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 59?>

<t>TLS 1.3 records limit the inner plaintext (TLSInnerPlaintext) size to 2<sup>14</sup> + 1 bytes, which includes one byte for the content type. Records also have a 3-byte overhead due to the fixed opaque_type and legacy_record_version fields. This document defines a TLS extension that allows endpoints to negotiate a larger maximum inner plaintext size, up to 2<sup>30</sup> - 256 bytes, while reducing overhead.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://tlswg.github.io/super-jumbo-record-limit/draft-ietf-tls-super-jumbo-record-limit.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-tls-super-jumbo-record-limit/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/tlswg/super-jumbo-record-limit"/>.</t>
    </note>
  </front>
  <middle>
    <?line 63?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>TLS 1.3 records limit the inner plaintext (TLSInnerPlaintext) size to 2<sup>14</sup> + 1 bytes, which includes one byte for the content type. Records also have a 3-byte overhead due to the fixed opaque_type and legacy_record_version fields. TLS-based protocols are increasingly used to secure long-lived interfaces in critical infrastructure, such as telecommunication networks. In some infrastructure use cases, the upper layer of DTLS expects a message oriented service and uses message sizes much larger than 2<sup>14</sup>-bytes. In these cases, the 2<sup>14</sup>-byte limit in TLS necessitates an additional protocol layer for fragmentation, resulting in increased CPU and memory consumption and additional complexity. Allowing 2<sup>30</sup>-byte records would eliminate additional fragmentation in almost all use cases. In <xref target="RFC6083"/> (DTLS over SCTP), the 2<sup>14</sup>-byte limit is a severe restriction.</t>
      <t>This document defines a "large_record_size_limit" extension that allows endpoints to negotiate a larger maximum inner plaintext (TLSInnerPlaintext) size. This extension is valid in TLS 1.3 and DTLS 1.3. The extension works similarly to the "record_size_limit" extension defined in <xref target="RFC8449"/>. Additionally, this document defines new TLS 1.3 TLSLargeCiphertext and DTLS 1.3 unified_hdr structures to enable inner plaintexts up to 2<sup>30</sup> - 256 bytes with reduced overhead. For example, ciphertexts up to 64 bytes can be supported with 4 bytes less overhead and ciphertexts up to 2<sup>14</sup> bytes can be supported with 3 bytes less overhead, which is useful in constrained IoT environments. The "large_record_size_limit" extension is incompatible with middleboxes expecting TLS 1.2 records.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="the-largerecordsizelimit-extension">
      <name>The "large_record_size_limit" Extension</name>
      <t>The ExtensionData of the "large_record_size_limit" extension is LargeRecordSizeLimit:</t>
      <artwork><![CDATA[
   uint32 LargeRecordSizeLimit;
]]></artwork>
      <t>LargeRecordSizeLimit denotes the maximum size, in bytes, of inner plaintexts that the endpoint is willing to receive. It includes the content type and padding (i.e., the complete length of TLSInnerPlaintext). AEAD expansion is not included. This is the same value as RecordSizeLimit negotiated in the "record_size_limit" extension <xref target="RFC8449"/>.</t>
      <t>The large record size limit only applies to records sent toward the endpoint that advertises the limit. An endpoint can send records that are larger than the limit it advertises as its own limit. A TLS endpoint that receives a record larger than its advertised limit <bcp14>MUST</bcp14> generate a fatal "record_overflow" alert; a DTLS endpoint that receives a record larger than its advertised limit <bcp14>MAY</bcp14> either generate a fatal "record_overflow" alert or discard the record. An endpoint <bcp14>MUST NOT</bcp14> add padding to records that would cause the length of TLSInnerPlaintext to exceed the limit advertised by the other endpoint.</t>
      <t>Endpoints <bcp14>MUST NOT</bcp14> send a "large_record_size_limit" extension with a value smaller than 64 or larger than 2<sup>30</sup> - 256. An endpoint <bcp14>MUST</bcp14> treat receipt of a smaller or larger value as a fatal error and generate an "illegal_parameter" alert.</t>
      <t>The server sends the "large_record_size_limit" extension in the EncryptedExtensions message. During resumption, the limit is renegotiated. Records are subject to the limits that were set in the handshake that produces the keys that are used to protect those records. This admits the possibility that the extension might not be negotiated during resumption.</t>
      <t>Unprotected messages and records protected with early_traffic_secret or handshake_traffic_secret are not subject to the large record size limit.</t>
      <t>When the "large_record_size_limit" extension is negotiated:</t>
      <ul spacing="normal">
        <li>
          <t>All TLS 1.3 records protected with application_traffic_secret <bcp14>MUST</bcp14> use the TLSLargeCiphertext structure instead of the TLSCiphertext structure.  </t>
          <t>
Instead of using a fixed-length field, this specification defines a variable-length unsigned integer type, referred to as varuint, as specified in <xref section="2.1.2" sectionFormat="of" target="RFC9420"/>. The varuint encoding is similar to the variable-length integer encoding defined in <xref section="16" sectionFormat="of" target="RFC9000"/>, but requires minimum-size encoding. As defined in <xref section="2.1.2" sectionFormat="of" target="RFC9420"/>, the two most significant bits of the first byte indicate the base 2 logarithm of the integer encoding length in bytes. The remaining bits encode the integer value in network byte order. The encoded representation <bcp14>MUST</bcp14> use the smallest number of bits necessary to represent the integer value. When decoding, any value that uses more bits than necessary <bcp14>MUST</bcp14> be treated as malformed. This means that integers are encoded in 1, 2, or 4 bytes and can encode 6-, 14-, or 30-bit values, respectively. <xref target="fig-sizes"/> summarizes the encoding properties from <xref section="2.1.2" sectionFormat="of" target="RFC9420"/>.</t>
        </li>
      </ul>
      <artwork><![CDATA[
   struct {
       varuint length;
       opaque encrypted_record[TLSLargeCiphertext.length];
   } TLSLargeCiphertext;
]]></artwork>
      <table anchor="fig-sizes">
        <name>Summary of varuint Encodings.</name>
        <thead>
          <tr>
            <th align="left">Prefix</th>
            <th align="left">Length</th>
            <th align="left">Usable Bits</th>
            <th align="left">Min</th>
            <th align="left">Max</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">00</td>
            <td align="left">1</td>
            <td align="left">6</td>
            <td align="left">0</td>
            <td align="left">63</td>
          </tr>
          <tr>
            <td align="left">01</td>
            <td align="left">2</td>
            <td align="left">14</td>
            <td align="left">64</td>
            <td align="left">16383</td>
          </tr>
          <tr>
            <td align="left">10</td>
            <td align="left">4</td>
            <td align="left">30</td>
            <td align="left">16384</td>
            <td align="left">1073741823</td>
          </tr>
          <tr>
            <td align="left">11</td>
            <td align="left">invalid</td>
            <td align="left">-</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
        </tbody>
      </table>
      <ul spacing="normal">
        <li>
          <t>All DTLS 1.3 records protected with application_traffic_secret and with length present <bcp14>MUST</bcp14> use a unified_hdr structure with a length equal to the TLS 1.3 length field defined above.</t>
        </li>
      </ul>
      <artwork><![CDATA[
    0 1 2 3 4 5 6 7
   +-+-+-+-+-+-+-+-+
   |0|0|1|C|S|L|E E|
   +-+-+-+-+-+-+-+-+
   | Connection ID |   Legend:
   | (if any,      |
   /  length as    /   C   - Connection ID (CID) present
   |  negotiated)  |   S   - Sequence number length
   +-+-+-+-+-+-+-+-+   L   - Length present
   |  8 or 16 bit  |   E   - Epoch
   |Sequence Number|
   +-+-+-+-+-+-+-+-+
   | 8, 16, or 32  |
   | bit Length    |
   | (if present)  |
   +-+-+-+-+-+-+-+-+
]]></artwork>
      <ul spacing="normal">
        <li>
          <t>An endpoint <bcp14>MAY</bcp14> generate records protected with application_traffic_secret with inner plaintext that is equal to or smaller than the LargeRecordSizeLimit value it receives from its peer. An endpoint <bcp14>MUST NOT</bcp14> generate a protected record with inner plaintext that is larger than the LargeRecordSizeLimit value it receives from its peer.</t>
        </li>
      </ul>
      <t>The "large_record_size_limit" extension is not compatible with middleboxes expecting TLS 1.2 records and <bcp14>SHOULD NOT</bcp14> be negotiated where such middleboxes are expected. A server <bcp14>MUST NOT</bcp14> send extension responses to more than one of "large_record_size_limit", "record_size_limit", and "max_fragment_length". A client <bcp14>MUST</bcp14> treat receipt of more than one of "large_record_size_limit", "record_size_limit", and "max_fragment_length" as a fatal error, and it <bcp14>SHOULD</bcp14> generate an "illegal_parameter" alert.</t>
      <t>The Path Maximum Transmission Unit (PMTU) in DTLS also limits the size of records. The record size limit does not affect PMTU discovery and <bcp14>SHOULD</bcp14> be set independently. The record size limit is fixed during the handshake and so should be set based on constraints at the endpoint and not based on the current network environment. In comparison, the PMTU is determined by the network path and can change dynamically over time.</t>
    </section>
    <section anchor="limits-on-key-usage">
      <name>Limits on Key Usage</name>
      <t>TLS 1.3 <xref target="RFC8446bis"/> and DTLS 1.3 <xref target="RFC9147"/> limits the number of full-size records that may be encrypted under a given set of keys. Increasing the maximum record size to more than 2<sup>14</sup> + 256 bytes while keeping the same confidentiality and integrity advantage per write key therefore requires lower AEAD limits. When the "large_record_size" has been negotiated record size limit larger than 2<sup>14</sup> + 1 bytes, existing AEAD limits <bcp14>SHALL</bcp14> be decreased by a factor of (LargeRecordSizeLimit) / (2^14-256). For example, when AES-CGM is used in TLS 1.3 <xref target="RFC8446bis"/> with a 64 kB record limit, only around 2<sup>22.5</sup> full-size records (about 6 million) may be encrypted under a given set of keys. For ChaCha20/Poly1305, the record sequence number would still wrap before the safety limit is reached.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Large record sizes might require more memory allocation for senders and receivers. Additionally, larger record sizes also means that more processing is done before verification of non-authentic records fails. TLS implementations <bcp14>MUST NOT</bcp14> provide access to the decrypted message content until after its integrity is confirmed.</t>
      <t>The use of larger record sizes can either simplify or complicate traffic analysis, depending on the application. The LargeRecordSizeLimit is just an upper limit and it is still the sender that decides the size of the inner plaintexts up to that limit.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to assign a new value in the TLS ExtensionType Values registry defined by <xref target="RFC8447"/>:</t>
      <ul spacing="normal">
        <li>
          <t>The Extension Name should be large_record_size_limit</t>
        </li>
        <li>
          <t>The TLS 1.3 value should be CH, EE</t>
        </li>
        <li>
          <t>The DTLS-Only value should be N</t>
        </li>
        <li>
          <t>The Recommended value should be Y</t>
        </li>
        <li>
          <t>The Reference should be this document</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="RFC8446bis">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="13" month="September" year="2025"/>
            <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.

   This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
   RFCs 5077, 5246, 6961, 8422, and 8446.  This document also specifies
   new requirements for TLS 1.2 implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-14"/>
        </reference>
        <reference anchor="RFC8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
        <reference anchor="RFC8449">
          <front>
            <title>Record Size Limit Extension for TLS</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>An extension to Transport Layer Security (TLS) is defined that allows endpoints to negotiate the maximum size of protected records that each will send the other.</t>
              <t>This replaces the maximum fragment length extension defined in RFC 6066.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8449"/>
          <seriesInfo name="DOI" value="10.17487/RFC8449"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9420">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6083">
          <front>
            <title>Datagram Transport Layer Security (DTLS) for Stream Control Transmission Protocol (SCTP)</title>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document describes the usage of the Datagram Transport Layer Security (DTLS) protocol over the Stream Control Transmission Protocol (SCTP).</t>
              <t>DTLS over SCTP provides communications privacy for applications that use SCTP as their transport protocol and allows client/server applications to communicate in a way that is designed to prevent eavesdropping and detect tampering or message forgery.</t>
              <t>Applications using DTLS over SCTP can use almost all transport features provided by SCTP and its extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6083"/>
          <seriesInfo name="DOI" value="10.17487/RFC6083"/>
        </reference>
        <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>
      </references>
    </references>
    <?line 182?>

<section removeInRFC="true" numbered="false" anchor="change-log">
      <name>Change Log</name>
      <t>Changes from -01 to -02:</t>
      <ul spacing="normal">
        <li>
          <t>Variable length field equal to the one defined in MLS</t>
        </li>
        <li>
          <t>Clarification that the extension value is equal to RFC8449</t>
        </li>
        <li>
          <t>Clarification and corrections on AEAD limits</t>
        </li>
      </ul>
      <t>Changes from -00 to -01:</t>
      <ul spacing="normal">
        <li>
          <t>Keep alive</t>
        </li>
      </ul>
      <t>Changes from -05 to -00:</t>
      <ul spacing="normal">
        <li>
          <t>WG adoption</t>
        </li>
      </ul>
      <t>Changes from -04 to -05:</t>
      <ul spacing="normal">
        <li>
          <t>Grammar and comprehension tweaks.</t>
        </li>
        <li>
          <t>Added change log</t>
        </li>
      </ul>
      <t>Changes from -03 to -04:</t>
      <ul spacing="normal">
        <li>
          <t>Corrected uint24 to uint32.</t>
        </li>
      </ul>
      <t>Changes from -02 to -03:</t>
      <ul spacing="normal">
        <li>
          <t>Major rewrite based on discussions at IETF 119</t>
        </li>
        <li>
          <t>New independent extension instead of flag extension used together with record_size_limit</t>
        </li>
        <li>
          <t>New record format without opaque_type and legacy_record_version fields. This reduces overhead</t>
        </li>
        <li>
          <t>Support inner plaintext size up to 2^32 - 256 bytes</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank <contact fullname="Richard Barnes"/>, <contact fullname="Stephen Farrell"/>, <contact fullname="Benjamin Kaduk"/>, <contact fullname="Colm MacCárthaigh"/>, <contact fullname="Eric Rescorla"/>, <contact fullname="Benjamin Schwartz"/>, and <contact fullname="Martin Thomson"/> for their valuable comments and feedback. Some of the text were inspired by and borrowed from <xref target="RFC8449"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+VaWXcbN5Z+56/AMC9SWkWRlCw7ytKRJTlWt2R7TLlzcvp0
64BVIAmrti5UiWIsz1+Zmf/RT5M/Nt+9AGohKcfJ6XkaeVEVCsvFXb67AEEQ
9EpdxupY9C9lMVfirQqzIhIT/bMyYpYV4vpyImQaiTN6WOpygS5RFapIvL5T
xULJqN+T02mh7j45R78XylLNs2J1LEwZ9XpRFqYywcJRIWdloFU5C8rYBKbK
VRG8r5JpFhQ8URDrRJfBcNwz1TTRxugsLVc5hl6cX78Q4gshY5NhdZ1GKlf4
Ly37e6KvIl1mhZYxvVycPMcv0NK/eHv9ot9LsYAqjnsRqDruhVlqVGoqcyzK
olI97OWgJwslMetEhVWhy1W/t8yK23mRVTlarwuZmjwrSnEpV6oQTa9btULH
6LgnApGq+1LMVaoKWYJqaqpSjU3xo8llcRvrdC4ibcpCT6sSbI1VNFdF706l
FSgT4tdXFMKyo/8jCKTpfqAh1J5IHaMdfP2eGDzIijk1yyJcoHlRlrk53t+n
XtSk79TAd9unhv1pkS2N2sf4fRo3h/irqZ1wOd9/TFTUNQZfTdlahIcM7AwD
nT06eP8z9WGwKJO43+vJqlxkEGQgdKpLSBsy/NMAFJiqsAr2plDVL/8prmRZ
GkNCELb9T9ki3fIRmz8W54UO3buyTHyP3oPEdfteue+DMEs6S7/sLH1twkU2
U6me16u+lGkKs+h84SXfpeB/YSBRkc3ESZ7HGtowCbVKQwx4nqVp8HahdBpM
tKJR3upeBs/fThpC7QKDZoHv58n9IFVlh86rLp2//PNeNZy50uFCqrhpZgKv
fvlnakpoHlE62EZkQ0RZKYz8frYIkkrxqEGker00K8BC7PO4h75vX5yOR6Ov
ju3js9HTQ/94eHg01aDyIjgb1JpQzEL3oe71tBngp/lqVLd+dTgeYiGdztaX
PRo+O/CdhkPqFAQBGAorlGHZ6xHWjQYHwiqcEaxxolwocBDGLPJY6rQk495B
1wtqe+ObdoUB8IkyE+NvoLzfjQ6/IWX/TvxBjMR0BbPYE8sFOIy5wriKINss
VfyFwZJWAR6VQDG264HDU8MwJxbyTgkpDgIekDkMFlHFS9Lgmb6HTLJc/qNS
NzQD43es5jJc3dgd3bCmZSn6qjgyA3G90EYAkquElo3UTJOSSkZ/7AkipN7l
QpagIgYoCOBsnmHHhpZNgexQrJIoi8kHFICee51UyQbDiDl7osobBh0MHYMC
MX5y1GJRrCAA+BqCNL/RgRVVoqMohkJ9IS7SssjQifH1/6HgLifBVBqMy4us
zMIsxnIFbTeE+zJgXbwSFX3HIoZchhJxls4BondopJ0XM0kAo1MRwp/oUMZ4
nhUSxgC2YsAegAK7lhC1ikFGkpATY48GyZfkFkHJRSpMlqi1sbS2CEEgmEd7
rHLAOXSEPBgQ5MwqWK7CktQtUcZIRBBw2+Ai6DOquNOhZQRmMnUPw8FFQnQ5
hYNypmuSY1Zb0rB2l5AtPZ22gBFEVarAFcAxOTKsL2SEeAJbBns8q90+SPjY
85xsh7myB/0zVVyS4mI2Jwts5/TNO95KohJEQqQtpkpyZiQ1t5YAl/NY3cMb
DMQJWRzN1bUXS7PX9GVWxZFQtIWUDbGZq0MbESTjJDNsyY14mEsfPjhw/PhR
7LBsSE/F5PT6ze6vso0EaBT6E1EUz7BNwmAfA5c+S85rNkn0xsYP/2LIeczU
Hew1i+HlTsY68ipASFLHvnihAarVnzUfUyUUP8HOnB33P7kju39eg9lNvuvj
R0i5Fli8Il5v41mqljVh+M3h9qnOF6rgjbZppUATIBHdLKJC1ObIrFOpnMYb
iGh+FZRt+F+48L9GZPEC+q/uJSnsnghrcvyER4dueAgrmsJ0gQEIYzEFz+e/
xrC2BhZpK5tTrQHzp6Y92DZtDeCGFH9WxYx6sEL4fRbKRXYN9tzpIkuJ8cZK
/HMUVROCktXCyoi7TIR1U9PsXhmHcmTGVkJjb7oDcmPXqoDhZnE2X5HBKIE0
gvQLlt2/eje5phyGfotXr/n57fm/v7t4e35Gz5OXJ5eX9UPP9Zi8fP3u8qx5
akaevr66On91ZgejVXSaev2rk5/whSTQf/3m+uL1q5PLPjGqq5PkZSCSqbJO
JC8U8V6aHhwjHMnUqvjz0zf/81+jQ6j6v7lwD9BiXyjgw8tyoVK7WpbChuwr
zGjVk/AVsrCABUSUOcA4BnzDEZlFtkwFtEOBe1/+lTjzt2PxzTTMR4ffuQba
cKfR86zTyDzbbNkYbJm4pWnLMjU3O+1rnO7Se/JT593zvdX4zR+RKioRjJ79
8bseq8wnNfPca6ZVp/r1TJaSPG/5+XrNMGNjGcrpL6kLQub/cD+Io0UFHTgY
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
KCViw8gXOVtH1f8LPWBXK3MwAAA=

-->

</rfc>
