<?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-rfc2629 version 1.6.2 (Ruby 3.0.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-piraux-tcpls-01" category="exp" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="TCPLS">TCPLS: Modern Transport Services with TCP and TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-piraux-tcpls-01"/>
    <author initials="M." surname="Piraux" fullname="Maxime Piraux">
      <organization>UCLouvain</organization>
      <address>
        <email>maxime.piraux@uclouvain.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="F." surname="Rochet" fullname="Florentin Rochet">
      <organization>University of Edinburgh</organization>
      <address>
        <email>frochet@ed.ac.uk</email>
      </address>
    </author>
    <date year="2022" month="March" day="07"/>
    <area>Transport Area</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies a protocol leveraging TCP and TLS to provide modern
transport services such as multiplexing, connection migration and multipath
in a secure manner.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/mpiraux/draft-piraux-tcpls"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The TCP/IP protocol stack continuously evolves. In the early days, most
applications were interacting with the transport layer (mainly TCP, but
also UDP) using the socket API. This is illustrated in <xref target="fig-intro-old"/>.</t>
      <figure anchor="fig-intro-old">
        <name>The classical TCP/IP protocol stack</name>
        <artwork><![CDATA[
+------------------------------+
|          Application         |
+------------------------------+
|            TCP/UDP           |
+------------------------------+
|             IPv4             |
+------------------------------+
]]></artwork>
      </figure>
      <t>The TCP/IP stack has slowly evolved and the figure above does not
anymore describe current Internet applications. IPv6 is now widely
deployed next to IPv4 in the network layer. In the transport layer,
protocols such as SCTP <xref target="RFC4960"/> or DCCP <xref target="RFC6335"/> and TCP
extensions including Multipath TCP <xref target="RFC8684"/> or tcpcrypt <xref target="RFC8548"/>
have been specified. The security aspects of the TCP/IP protocol suite
are much more important today than in the past <xref target="RFC7258"/>. Many
applications rely on TLS <xref target="RFC8446"/> and their stack is
similar to the one shown in <xref target="fig-intro-today"/>.</t>
      <figure anchor="fig-intro-today">
        <name>Today's TCP/IP protocol stack</name>
        <artwork><![CDATA[
+------------------------------+
|          Application         |
+------------------------------+
|             TLS              |
+------------------------------+
|             TCP              |
+------------------------------+
|          IPv4/IPv6           |
+------------------------------+
]]></artwork>
      </figure>
      <t>Recently, the IETF went one step further in improving the transport
layer with the QUIC protocol <xref target="RFC9000"/>. QUIC is a new secure transport
protocol primarily designed for HTTP/3. It includes the reliability and
congestion control features that are part of TCP and integrates the
security features of TLS 1.3 <xref target="RFC8446"/>. This close integration between
the reliability and security features brings a lot of benefits in QUIC.
QUIC runs above UDP to be able to pass through most middleboxes and to be
implementable in user space. While QUIC reuses TLS, it does not strictly layer
TLS on top of UDP as DTLS <xref target="I-D.ietf-tls-dtls13"/>. This organization,
illustrated in <xref target="fig-intro-quic"/> provides much more flexibility than simply
layering TLS above UDP. For example, the QUIC migration capabilities enable
an application to migrate an existing QUIC session from an IPv4 path to an
IPv6 one.</t>
      <figure anchor="fig-intro-quic">
        <name>QUIC protocol stack</name>
        <artwork><![CDATA[
+------------------------------+
|          Application         |
+------------------------------+
|..........                    |
|   TLS   |   QUIC   ..........|
|..........          |   UDP   |
+------------------------------+
|          IPv4/IPv6           |
+------------------------------+
]]></artwork>
      </figure>
      <t>In this document, we revisit how TCP and TLS 1.3 can be used to
provide modern transport services to applications. We apply a similar principle
and combine TCP and TLS 1.3 in a protocol that we call TCPLS.
TCPLS leverages the security features of TLS 1.3 like QUIC, but without
begin simply layered above a single TCP connection. In addition,
TCPLS reuses the existing TCP stacks and TCP's wider support in current
networks. A preliminary version of the TCPLS protocol is described in <xref target="CONEXT21"/>.</t>
      <figure anchor="fig-intro-tcpls">
        <name>TCPLS in the TCP/IP protocol stack</name>
        <artwork><![CDATA[
+------------------------------+
|          Application         |
+------------------------------+
|..........                    |
|   TLS   |   TCPLS  ..........|
|..........          |   TCP   |
+------------------------------+
|          IPv4/IPv6           |
+------------------------------+
]]></artwork>
      </figure>
      <t>In this document, we use the term TLS/TCP to refer to the TLS 1.3
protocol running over one TCP connection. We reserve the word TCPLS for
the protocol proposed in this document.</t>
      <t>This document is organized as follows. First, <xref target="services"/> summarizes the
different types of services that modern transports expose to application.
<xref target="overview"/> gives an overview of TCPLS and how it supports these
services. Finally, <xref target="format"/> describes the TCPLS in more details
and the TLS Extensions introduced in this document.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <section anchor="notational-conventions">
        <name>Notational conventions</name>
        <t>This document uses the same conventions as defined in Section 1.3 of
<xref target="RFC9000"/>.</t>
        <t>This document uses network byte order (that is, big endian) values.
Fields are placed starting from the high-order bits of each byte.</t>
      </section>
    </section>
    <section anchor="services">
      <name>Modern Transport Services</name>
      <t>Application requirements and the devices they run on evolve over time. In
the early days, most applications involved single-file transfer and ran on
single-homed computers with a fixed-line network. Today, web-based applications
require exchanging multiple objects, with different priorities, on
devices that can move from one access network to another and that often
have multiple access networks available. Security is also a key requirement
of applications that evolved from only guaranteeing the confidentiality and
integrity of application messages to also preventing pervasive monitoring.</t>
      <t>With TCP and TLS/TCP, applications use a single connection that supports
a single bytestream in each direction.
Some TCP applications such as HTTP/2 <xref target="RFC7540"/> use multiple
streams, but these are mapped to a single TCP connection which leads
to Head-of-Line (HoL) blocking when packet losses occur. SCTP <xref target="RFC4960"/>
supports multiple truly-concurrent streams and QUIC adopted a similar
approach to prevent HoL blocking.</t>
      <t>Modern transport services also changed the utilization of the underlying network.
With TCP, when a host creates a connection, it is bound to the
IP addresses used by the client and the server during the handshake. When the
client moves and receives a different IP address, it has to reestablish all TCP
connections bound to the previous address.
When the client and the server are dual-stack, they cannot easily switch from
one address family to another. Happy Eyeballs <xref target="RFC8305"/> provides a partial
answer to this problem for web applications with heuristics that clients can
use to probe TCP connections with different address families.
With Multipath TCP, the client and the
server can learn other addresses of the remote host and combine several
TCP connections within a single Multipath TCP connection that is exposed to
the application. This supports various use cases <xref target="RFC8041"/>. QUIC <xref target="RFC9000"/>
enables applications to migrate from one network path to another, but not
to simultaneously use different paths.</t>
    </section>
    <section anchor="overview">
      <name>TCPLS Overview</name>
      <t>In order for TCPLS to be widely compatible with middleboxes that inspect TCP
segments and TLS records, TCPLS does not modify the TCP connection establishment
and only adds a TLS extension to the TLS handshake. <xref target="fig-overview-handshake"/>
illustrates the opening of a TCPLS session which starts with the TCP
3-way handshake, followed by the TLS handshake. In
the Extensions of the ClientHello and in the server EncryptedExtensions, the
tcpls TLS Extension is introduced to announce the support of TCPLS.</t>
      <figure anchor="fig-overview-handshake">
        <name>Starting a TCPLS session</name>
        <artwork><![CDATA[
Client                                   Server
 |                    SYN                    |
 |------------------------------------------>|
 |                  SYN+ACK                  |
 |<------------------------------------------|
 |       ACK, TLS ClientHello + tcpls        |
 |------------------------------------------>|
 |  TLS ServerHello, TLS EncryptedExtensions |
 |                          + tcpls, ...     |
 |<------------------------------------------|
 |               TLS Finished                |
 |------------------------------------------>|
 |                                           |
]]></artwork>
      </figure>
      <t>TCP/TLS offers a single encrypted bytestream service to the application. To
achieve this, TLS records are used to encrypt and secure chunks of the
application bytestream and are then sent through the TCP bytestream. TCPLS
leverages TLS records differently. TCPLS defines its own framing
mechanism that allows encoding both application data and control information.
A TCPLS frame is the basic unit of information for TCPLS. One or more
TCPLS frames can be placed inside a TLS record. A TCPLS frame always fits in
a single record. This TLS record is then reliably transported by a TCP
connection. <xref target="fig-tcpls-frames"/> illustrates the relationship
between TCPLS frames and TLS records.</t>
      <figure anchor="fig-tcpls-frames">
        <name>The first TLS record contains three TCPLS frames</name>
        <artwork><![CDATA[
  TCPLS Data     TCP Control   TCPLS Data     TCPLS Data
  abcdef         0010010       ghijkl         mnopq...
  <--------->   <----------->  <--------->   <------------>
 /                                        /
/                                      /
|                                   /
|                                /
|                             /
|                          /
|                       /
|                   /
+----------------+     +-----------------+
|   TLS record n |     | TLS record n+1  |  ....
+----------------+     +-----------------+
]]></artwork>
      </figure>
      <section anchor="multiple-streams">
        <name>Multiple Streams</name>
        <t>TCPLS extends the service provided by TCP with streams. Streams are
independent bidirectional bytestreams that can be used by applications to
concurrently convey several objects over a TCPLS session.
Streams can be opened by the client and by the server.</t>
        <t>Streams are identified by a 32-bit unsigned integer. The parity of this number
indicates the initiator of the stream. The client opens even-numbered
streams while the server opens odd-numbered streams. Streams are opened in
sequence, e.g. a client that has opened stream 0 will use stream 2 as the
next one.</t>
        <t>Data is exchanged using Stream frames whose format is
described in <xref target="stream-frame"/>. Each Stream frame carries a chunk of data of
a given stream. Applications can mark the end of a stream to close it.</t>
        <t>Similarly to HTTP/2 <xref target="RFC7540"/>, conveying several streams on a single TCP
connection introduces Head-of-Line (HoL) blocking between the streams. To
alleviate this, TCPLS provides means to the application to choose the degree
of HoL blocking resilience it needs for its application objects by spreading
streams among different underlying TCP connections.</t>
      </section>
      <section anchor="multiple-tcp-connections">
        <name>Multiple TCP connections</name>
        <t>TCPLS is not restricted to using a single TCP connection to exchange frames.
A TCPLS session starts with the TCP connection that was used to transport the
TLS handshake. After this handshake, other TCP connections can be added
to a TCPLS session, either to spread the load or for failover. TCPLS manages
the utilization of the underlying TCP connections within a TCPLS session.</t>
        <t>Multipath TCP enables both the client and the server to establish additional
TCP connections. However, experience has shown that additional subflows are only
established by the clients. TCPLS focuses on this deployment and only allows
clients to create additional TCP connections.</t>
        <t>Using Multipath TCP, a client can try establishing a new TCP connection at
any time. If a server wishes to restrict the number of TCP connections that
correspond to one Multipath TCP connection, it has to respond with RST to
the in excess connection attempts.</t>
        <t>TCPLS takes another approach. To control the number of connections that a
client can establish, a TCPLS server supplies unique tokens. A client includes
one of the server supplied tokens when it attaches a new TCP connection to a
TCPLS session. Each token can only be used once, hence limiting the amount of
additional TCP connections.</t>
        <t>TCPLS endpoints can advertise their local addresses, allowing new TCP
connections for a given TCPLS session to be established between new pairs of
addresses. When an endpoint is no more willing new TCP connections to use one
of its advertised addresses, it can remove this address from the TCPLS session.</t>
        <section anchor="joining-tcp-connections">
          <name>Joining TCP connections</name>
          <t>The TCPLS server provides tokens to the client in order to join new TCP
connections to the TCPLS session. <xref target="join-connections"/> illustrates a client
and server first establishing a new TCPLS session as described in <xref target="overview"/>.
Then the server sends a token over this connection using the New Token
frame. Each token has a sequence number (e.g. 1) and a value (e.g. "abc").
The client uses this token to open a new TCP connection and initiates the
TCPLS handshake. It adds the token inside the TCPLS Join TLS extension in the
ClientHello.</t>
          <figure anchor="join-connections">
            <name>Joining a new TCP connection</name>
            <artwork><![CDATA[
             <-1.TCPLS Handshake->
       .---------------------------------.
       |            <-2.New Token(1,abc) |
       v                                 v
+--------+                            +--------+
| Client |                            | Server |
+--------+                            +--------+
       ^                                 ^
       | 3.TCPLS Handshake + Join(abc)-> |      Legend:
       .---------------------------------.        --- TCP connection
]]></artwork>
          </figure>
          <t>When receiving a TCPLS Join Extension, the server validates the token and
associates the TCP connection to the TCPLS session.</t>
          <t>Each TCP connection that is part of a TCPLS session is identified by a 32-bit
unsigned integer called its Connection ID. The first TCP connection of a session
corresponds to Connection ID 0. When joining a new connection,
the sequence number of the token, i.e. 1 in our example, becomes the
Connection ID of the connection. The Connection ID enables the Client and
the Server to identify a specific TCP connection within a given TCPLS
session.</t>
        </section>
        <section anchor="failover">
          <name>Failover</name>
          <t>TCPLS supports two types of failover. In make-before-break, the client
creates a TCP connection using the procedure described in
<xref target="joining-tcp-connections"/> but only uses it once the initial connection fails.</t>
          <t>In break-before-make, the
client creates the initial TCP connection and uses it for the TCPLS handshake
and the data. The server advertises one or more tokens over this connection.
Upon failure of the initial TCP connection, the client initiates a
second TCP connection using the server-provided token.</t>
          <t>In both cases, some records sent by the client or the server might be
in transit when the failure occurs. Some of these records could have been
partially received but not yet delivered to the TCPLS layer when the
underlying TCP connection fails. Other records could have already been received,
decrypted and data of their frames could have been delivered to the
application. To prevent data losses and duplication, TCPLS includes its own
acknowledgments.</t>
          <t>A TCPLS receiver acknowledges the received records using the ACK
frame. Records are acknowledged after the record protection has been
successfully removed. This enables the sender to know which records have been
received. TCPLS enables the endpoint to send acknowledgments for a TCP
connection over any connections, e.g. not only the receiving connection.</t>
        </section>
        <section anchor="migration">
          <name>Migration</name>
          <t>To migrate from a given TCP connection, an endpoint stops transmitting
over this TCP connection and sends the following frames on other TCP
connections. It leverages the acknowledgments to retransmit the frames of
TLS records that have not been yet acknowledged.</t>
          <t>When an endpoint abortfully closes a TCP connection, its peer leverages the
acknowlegments to retransmit the TLS records that were not acknowlegded.</t>
        </section>
        <section anchor="multipath">
          <name>Multipath</name>
          <t>TCPLS also supports the utilization of different TCP connections, over
different paths or interfaces, to improve throughput or spread stream frames
over different TCP connections.
When the endpoints have opened several TCP connections, they can send frames
over the connections. TCPLS can send all the stream frames belonging to a
given stream over one or more underlying TCP connections. The latter enables
bandwidth aggregation by using TCP connections established over different
network paths.</t>
        </section>
      </section>
      <section anchor="record-protection">
        <name>Record protection</name>
        <t>When adding new TCP connections to a TCPLS session, an endpoint does not
complete the TLS handshake. TCPLS provides a nonce construction for TLS
record protection that is used for all connections of a session. This
reduces the cryptographic cost of adding connections. The endpoints <bcp14>SHOULD</bcp14> send
TLS messages to form an apparent complete TLS handshake to middleboxes.</t>
        <t>In order to use the TLS session over multiple connections, TCPLS adds a
record sequence number space per connection that is maintained independently at
both sides. Each record sent over a TCPLS session is identified by the
Connection ID of its connection and its record sequence number. Each record
nonce is constructed as defined in <xref target="fig-record-nonce"/>.</t>
        <figure anchor="fig-record-nonce">
          <name>TCPLS TLS record nonce construction</name>
          <artwork><![CDATA[
N                  N-32                   64                    0
+---------------------------------------------------------------+
|                    client/server_write_iv                     |
+---------------------------------------------------------------+
         XOR                                        XOR
+-------------------+                      +--------------------+
|   Connection ID   |                      | Conn. record sequ. |
+-------------------+                      +--------------------+
]]></artwork>
        </figure>
        <t>This construction guarantees that every TLS record sent over the TLS session
is protected with a unique nonce. As in TLS 1.3, the per-connection record
sequence is implicit.</t>
      </section>
      <section anchor="closing-a-tcpls-session">
        <name>Closing a TCPLS session</name>
        <t>Endpoints notify their peers that they do not intend to send more data over
a given TCPLS session by sending a TLS Alert "close_notify". The alert can
be sent over one or more TCP connections of the session. The alert <bcp14>MUST</bcp14> be
sent before closing the last TCP connection of the TCPLS session.
The endpoint <bcp14>MAY</bcp14> close its side of the TCP connections after sending the alert.</t>
        <t>When all TCP connections of a session are closed and the TLS Alert
"close_notify" was exchanged in both directions, the TCPLS session is
considered as closed.</t>
        <t>We leave defining an abortful and idle session closure mechanisms for future
versions of this document.</t>
      </section>
    </section>
    <section anchor="format">
      <name>TCPLS Protocol</name>
      <section anchor="tcpls-tls-extensions">
        <name>TCPLS TLS Extensions</name>
        <t>This document specifies two TLS extensions used by TCPLS. The first,
"tcpls", is used to announce the support of TCPLS. The second,
"tcpls_join", is used to join a TCP connection to a TCPLS session. Their types
are defined as follows.</t>
        <artwork><![CDATA[
enum {
    tcpls(TBD1),
    tcpls_join(TBD2),
    (65535)
} ExtensionType;
]]></artwork>
        <t>The table below indicates the TLS messages where these extensions can appear.
"CH" indicates ClientHello while "EE" indicates EncryptedExtensions.</t>
        <table anchor="tcpls-tls-extensions-allowed-tls-messages">
          <name>TLS messages allowed to carry TCPLS TLS Extensions</name>
          <thead>
            <tr>
              <th align="left">Extension</th>
              <th align="left">Allowed TLS messages</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">tcpls</td>
              <td align="left">CH, EE</td>
            </tr>
            <tr>
              <td align="left">tcpls_join</td>
              <td align="left">CH</td>
            </tr>
          </tbody>
        </table>
        <section anchor="tcpls">
          <name>TCPLS</name>
          <t>The "tcpls" extension is used by the client and the server to announce
their support of TCPLS. The extension contains no value. When it is present
in both the ClientHello and the EncryptedExtensions, the endpoints <bcp14>MUST</bcp14> use
TCPLS after completing the TLS handshake.</t>
        </section>
        <section anchor="tcpls-join">
          <name>TCPLS Join</name>
          <artwork><![CDATA[
struct {
    opaque token<32>;
} Join;
]]></artwork>
          <t>The "tcpls_join" extension is used by the client to join the TCP connection
on which it is sent to a TCPLS session. The extension contains a Token
provided by the server. The client <bcp14>MUST NOT</bcp14> send more than one
"tcpls_join" extension in its ClientHello. When receiving a ClientHello with
this extension, the server checks that the token is valid and joins the TCP
connection to the corresponding TCPLS session. When the token is not valid,
the server <bcp14>MUST</bcp14> abort the handshake with an illegal_parameter alert.</t>
          <t>By controlling the amount of tokens given to the client, the server can
control the number of active TCP connections of a TCPLS session. The server <bcp14>SHOULD</bcp14>
replenish the tokens when TCP connections are removed from the TCPLS session.</t>
        </section>
      </section>
      <section anchor="tcpls-frames">
        <name>TCPLS Frames</name>
        <t>TCPLS uses TLS Application Data records to exchange TCPLS frames. After
decryption, the record payload consists of a sequence of TCPLS frames. A
frame is a Type-Value unit, starting with a byte indicating its frame type
followed by type-specific fields. <xref target="tcpls-frame-types"/> lists the frames
specified in this document.</t>
        <table anchor="tcpls-frame-types">
          <name>TCPLS frames</name>
          <thead>
            <tr>
              <th align="left">Type value</th>
              <th align="left">Frame name</th>
              <th align="left">Rules</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">Padding</td>
              <td align="left">N</td>
              <td align="left">
                <xref target="padding-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">Ping</td>
              <td align="left"> </td>
              <td align="left">
                <xref target="ping-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x02-0x03</td>
              <td align="left">Stream</td>
              <td align="left"> </td>
              <td align="left">
                <xref target="stream-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">ACK</td>
              <td align="left">N</td>
              <td align="left">
                <xref target="ack-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">New Token</td>
              <td align="left">S</td>
              <td align="left">
                <xref target="new-token-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">Connection Reset</td>
              <td align="left"> </td>
              <td align="left">
                <xref target="connection-reset-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">New Address</td>
              <td align="left"> </td>
              <td align="left">
                <xref target="new-address-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x08</td>
              <td align="left">Remove Address</td>
              <td align="left"> </td>
              <td align="left">
                <xref target="remove-address-frame"/></td>
            </tr>
          </tbody>
        </table>
        <t>The "Rules" column in <xref target="tcpls-frame-types"/> indicates special requirements
regarding certain frames.</t>
        <dl>
          <dt>N:</dt>
          <dd>
            <t>Non-ack-eliciting. Receiving this frame does not elicit the sending of a
TCPLS acknowledgment.</t>
          </dd>
          <dt>S:</dt>
          <dd>
            <t>Server only. This frame <bcp14>MUST NOT</bcp14> be sent by the client.</t>
          </dd>
        </dl>
        <section anchor="padding-frame">
          <name>Padding frame</name>
          <t>This frame has no semantic value. It can be used to mitigate traffic
analysis on the TLS records of a TCPLS session. The Padding frame has no
content.</t>
          <figure anchor="padding-frame-format">
            <name>Padding frame format</name>
            <artwork><![CDATA[
Padding frame {
    Type (8) = 0x00,
}
]]></artwork>
          </figure>
        </section>
        <section anchor="ping-frame">
          <name>Ping frame</name>
          <t>This frame is used to elicit an acknowledgment from its peer. It has no
content. When an endpoint receives a Ping frame, it acknowledges the TLS
record that contains this frame. This frame can be used by an endpoint to check
that its peer can receive TLS records over a particular TCP connection.</t>
          <figure anchor="ping-frame-format">
            <name>Ping frame format</name>
            <artwork><![CDATA[
Ping frame {
    Type (8) = 0x01,
}
]]></artwork>
          </figure>
        </section>
        <section anchor="stream-frame">
          <name>Stream frame</name>
          <t>This frame is used to carry chunks of data of a given stream.</t>
          <figure anchor="stream-frame-format">
            <name>Stream frame format</name>
            <artwork><![CDATA[
Stream frame {
    Type (7) = 0x01,
    FIN (1),
    Stream ID (32),
    Offset (64),
    Length (16),
    Stream Data (...),
}
]]></artwork>
          </figure>
          <dl>
            <dt>FIN:</dt>
            <dd>
              <t>The last bit of the frame type bit indicates that this Stream frame
ends the stream when its value is 1. The last byte of the stream is at the sum of the
Offset and Length fields of this frame.</t>
            </dd>
            <dt>Stream ID:</dt>
            <dd>
              <t>A 32-bit unsigned integer indicating the ID of the stream this frame
relates to.</t>
            </dd>
            <dt>Offset:</dt>
            <dd>
              <t>A 64-bit unsigned integer indicating the offset in bytes of the carried
data in the stream.</t>
            </dd>
            <dt>Length:</dt>
            <dd>
              <t>A 16-bit unsigned integer indicating the length of the Stream Data field.</t>
            </dd>
          </dl>
        </section>
        <section anchor="ack-frame">
          <name>ACK frame</name>
          <t>This frame is sent by the receiver to acknowledge the receipt of TLS records on
a particular TCP connection of the TCPLS session. Although the reliability
of the data exchange on a connection is handled by TCP, there are situations
such as the failure of a TCP connection where a sender does not know whether the
TLS frames that it sent have been correctly received by the peer. The ACK frame
allows a TCPLS receiver to indicate the highest TLS record sequence number
received on a specific connection. The ACK frame can be sent over any TCP
connection of a TCPLS session.</t>
          <figure anchor="ack-frame-format">
            <name>ACK frame format</name>
            <artwork><![CDATA[
ACK frame {
    Type (8) = 0x04,
    Connection ID (32),
    Highest Record Sequence Received (64),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID:</dt>
            <dd>
              <t>A 32-bit unsigned integer indicating the TCP connection for which the
acknowledgment was sent.</t>
            </dd>
            <dt>Highest Record Sequence Received:</dt>
            <dd>
              <t>A 64-bit unsigned integer indicating the highest TLS record sequence
number received on the connection indicated by the Connection ID.</t>
            </dd>
          </dl>
        </section>
        <section anchor="new-token-frame">
          <name>New Token frame</name>
          <t>This frame is used by the server to provide tokens to the client. Each token
can be used to join a new TCP connection to the TCPLS session, as described
in <xref target="joining-tcp-connections"/>. Clients <bcp14>MUST NOT</bcp14> send New Token frames.</t>
          <figure anchor="new-token-frame-format">
            <name>New Token frame format</name>
            <artwork><![CDATA[
New Token frame {
    Type (8) = 0x05,
    Sequence (8),
    Token (256),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Sequence:</dt>
            <dd>
              <t>A 8-bit unsigned integer indicating the sequence number of this token</t>
            </dd>
            <dt>Token:</dt>
            <dd>
              <t>A 32-byte opaque value that can be used as a token by the client.</t>
            </dd>
          </dl>
        </section>
        <section anchor="connection-reset-frame">
          <name>Connection Reset frame</name>
          <t>This frame is used by the receiver to inform the sender that a TCP
connection has been reset.</t>
          <figure anchor="connection-reset-format">
            <name>Connection Reset format</name>
            <artwork><![CDATA[
Connection Reset frame {
    Type (8) = 0x06,
    Connection ID (32)
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID:</dt>
            <dd>
              <t>A 32-bit unsigned integer indicating the ID of the connection that failed.</t>
            </dd>
          </dl>
        </section>
        <section anchor="new-address-frame">
          <name>New Address frame</name>
          <t>This frame is used by an endpoint to add a new local address to the TCPLS
session. This address can then be used to establish new TCP connections.
The server advertises addresses that the client can use as destination when
adding TCP connections. The client advertises address that it can use as source
when adding TCP connections.</t>
          <figure anchor="new-address-format">
            <name>New Address format</name>
            <artwork><![CDATA[
New Address frame {
    Type (8) = 0x07,
    Address ID (8),
    Address Version (8),
    Address (..),
    Port (16),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Address ID:</dt>
            <dd>
              <t>A 8-bit identifier for this address. For a given Address ID, an endpoint
receiving a frame with a content that differs from previously received frames
<bcp14>MUST</bcp14> ignore the frame. An endpoint receiving a frame for an Address ID that was
previously removed <bcp14>MUST</bcp14> ignore the frame.</t>
            </dd>
            <dt>Address Version:</dt>
            <dd>
              <t>A 8-bit value identifying the Internet address version of this address. The
number 4 indicates IPv4 while 6 indicates IPv6.</t>
            </dd>
            <dt>Address:</dt>
            <dd>
              <t>The address value. Its size depends on its version. IPv4 addresses are 32-bit
long while IPv6 addresses are 128-bit long.</t>
            </dd>
            <dt>Port:</dt>
            <dd>
              <t>A 16-bit value indicating the TCP port used with this address.</t>
            </dd>
          </dl>
        </section>
        <section anchor="remove-address-frame">
          <name>Remove Address frame</name>
          <t>This frame is used by an endpoint to announce that it is not willing to use a
given address to establish new TCP connections. After receiving this frame, a
client <bcp14>MUST NOT</bcp14> establish new TCP connections to the given address. After
receiving this frame, an endpoint <bcp14>MUST</bcp14> close all TCP connections using the
given address.</t>
          <figure anchor="remove-address-format">
            <name>Remove Address format</name>
            <artwork><![CDATA[
Remove Address frame {
    Type (8) = 0x08,
    Address ID (8),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Address ID:</dt>
            <dd>
              <t>A 8-bit identifier for the address to remove. An endpoint receiving a frame
for an address that was nonexistent or already removed <bcp14>MUST</bcp14> ignore the frame.</t>
            </dd>
          </dl>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>When issuing tokens to the client as presented in <xref target="joining-tcp-connections"/>,
the server <bcp14>SHOULD</bcp14> ensure that their values appear as random to observers and
cannot be correlated together for a given TCPLS session.</t>
      <t>The security considerations for TLS apply to TCPLS.
The next versions of this document will elaborate on other security
considerations following the guidelines of <xref target="RFC3552"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to create a new "TCPLS" heading for the new registry
described in <xref target="tcpls-frames"/>. New registrations in TCPLS registries follow
the "Specification Required" policy of <xref target="RFC8126"/>.</t>
      <section anchor="tcpls-tls-extensions-1">
        <name>TCPLS TLS Extensions</name>
        <t>IANA is requested to add the following entries to the existing "TLS
ExtensionType Values" registry.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Extension Name</th>
              <th align="left">TLS 1.3</th>
              <th align="left">Recommended</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD1</td>
              <td align="left">tcpls</td>
              <td align="left">CH, EE</td>
              <td align="left">N</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">TBD2</td>
              <td align="left">tcpls_join</td>
              <td align="left">CH</td>
              <td align="left">N</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>Note that "Recommended" is set to N as these extensions are intended for
uses as described in this document.</t>
      </section>
      <section anchor="tcpls-frames-1">
        <name>TCPLS Frames</name>
        <t>IANA is requested to create a new registry "TCPLS Frames Types" under the
"TCPLS" heading.</t>
        <t>The registry governs an 8-bit space. Entries in this registry must include a
"Frame name" field containing a short mnemonic for the frame type. The
initial content of the registry is present in <xref target="tcpls-frame-types"/>, without
the "Rules" column.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <reference anchor="RFC4960">
          <front>
            <title>Stream Control Transmission Protocol</title>
            <author fullname="R. Stewart" initials="R." role="editor" surname="Stewart">
              <organization/>
            </author>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document obsoletes RFC 2960 and RFC 3309.  It describes the Stream Control Transmission Protocol (SCTP).  SCTP is designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks, but is capable of broader applications.</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>--  acknowledged error-free non-duplicated transfer of user data,</t>
              <t>--  data fragmentation to conform to discovered path MTU size,</t>
              <t>--  sequenced delivery of user messages within multiple streams, with an option for order-of-arrival delivery of individual user messages,</t>
              <t>--  optional bundling of multiple user messages into a single SCTP packet, and</t>
              <t>--  network-level fault tolerance through supporting of multi-homing at either or both ends of an association.</t>
              <t> The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4960"/>
          <seriesInfo name="DOI" value="10.17487/RFC4960"/>
        </reference>
        <reference anchor="RFC6335">
          <front>
            <title>Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="L. Eggert" initials="L." surname="Eggert">
              <organization/>
            </author>
            <author fullname="J. Touch" initials="J." surname="Touch">
              <organization/>
            </author>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund">
              <organization/>
            </author>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire">
              <organization/>
            </author>
            <date month="August" year="2011"/>
            <abstract>
              <t>This document defines the procedures that the Internet Assigned Numbers Authority (IANA) uses when handling assignment and other requests related to the Service Name and Transport Protocol Port Number registry.  It also discusses the rationale and principles behind these procedures and how they facilitate the long-term sustainability of the registry.</t>
              <t>This document updates IANA's procedures by obsoleting the previous UDP and TCP port assignment procedures defined in Sections 8 and 9.1 of the IANA Allocation Guidelines, and it updates the IANA service name and port assignment procedures for UDP-Lite, the Datagram Congestion Control Protocol (DCCP), and the Stream Control Transmission Protocol (SCTP).  It also updates the DNS SRV specification to clarify what a service name is and how it is registered.  This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="165"/>
          <seriesInfo name="RFC" value="6335"/>
          <seriesInfo name="DOI" value="10.17487/RFC6335"/>
        </reference>
        <reference anchor="RFC7258">
          <front>
            <title>Pervasive Monitoring Is an Attack</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="May" year="2014"/>
            <abstract>
              <t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="188"/>
          <seriesInfo name="RFC" value="7258"/>
          <seriesInfo name="DOI" value="10.17487/RFC7258"/>
        </reference>
        <reference anchor="RFC8041">
          <front>
            <title>Use Cases and Operational Experience with Multipath TCP</title>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure">
              <organization/>
            </author>
            <author fullname="C. Paasch" initials="C." surname="Paasch">
              <organization/>
            </author>
            <author fullname="G. Detal" initials="G." surname="Detal">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document discusses both use cases and operational experience with Multipath TCP (MPTCP) in real networks.  It lists several prominent use cases where Multipath TCP has been considered and is being used.  It also gives insight to some heuristics and decisions that have helped to realize these use cases and suggests possible improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8041"/>
          <seriesInfo name="DOI" value="10.17487/RFC8041"/>
        </reference>
        <reference anchor="RFC8305">
          <front>
            <title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <author fullname="T. Pauly" initials="T." surname="Pauly">
              <organization/>
            </author>
            <date month="December" year="2017"/>
            <abstract>
              <t>Many communication protocols operating over the modern Internet use hostnames.  These often resolve to multiple IP addresses, each of which may have different performance and connectivity characteristics.  Since specific addresses or address families (IPv4 or IPv6) may be blocked, broken, or sub-optimal on a network, clients that attempt multiple connections in parallel have a chance of establishing a connection more quickly.  This document specifies requirements for algorithms that reduce this user-visible delay and provides an example algorithm, referred to as "Happy Eyeballs".  This document obsoletes the original algorithm description in RFC 6555.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8305"/>
          <seriesInfo name="DOI" value="10.17487/RFC8305"/>
        </reference>
        <reference anchor="RFC8548">
          <front>
            <title>Cryptographic Protection of TCP Streams (tcpcrypt)</title>
            <author fullname="A. Bittau" initials="A." surname="Bittau">
              <organization/>
            </author>
            <author fullname="D. Giffin" initials="D." surname="Giffin">
              <organization/>
            </author>
            <author fullname="M. Handley" initials="M." surname="Handley">
              <organization/>
            </author>
            <author fullname="D. Mazieres" initials="D." surname="Mazieres">
              <organization/>
            </author>
            <author fullname="Q. Slack" initials="Q." surname="Slack">
              <organization/>
            </author>
            <author fullname="E. Smith" initials="E." surname="Smith">
              <organization/>
            </author>
            <date month="May" year="2019"/>
            <abstract>
              <t>This document specifies "tcpcrypt", a TCP encryption protocol designed for use in conjunction with the TCP Encryption Negotiation Option (TCP-ENO).  Tcpcrypt coexists with middleboxes by tolerating resegmentation, NATs, and other manipulations of the TCP header.  The protocol is self-contained and specifically tailored to TCP implementations, which often reside in kernels or other environments in which large external software dependencies can be undesirable. Because the size of TCP options is limited, the protocol requires one additional one-way message latency to perform key exchange before application data can be transmitted.  However, the extra latency can be avoided between two hosts that have recently established a previous tcpcrypt connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8548"/>
          <seriesInfo name="DOI" value="10.17487/RFC8548"/>
        </reference>
        <reference anchor="RFC8684">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="A. Ford" initials="A." surname="Ford">
              <organization/>
            </author>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu">
              <organization/>
            </author>
            <author fullname="M. Handley" initials="M." surname="Handley">
              <organization/>
            </author>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure">
              <organization/>
            </author>
            <author fullname="C. Paasch" initials="C." surname="Paasch">
              <organization/>
            </author>
            <date month="March" year="2020"/>
            <abstract>
              <t>TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers. The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and thus improve user experience through higher throughput and improved resilience to network failure.</t>
              <t>Multipath TCP provides the ability to simultaneously use multiple paths between peers. This document presents a set of extensions to traditional TCP to support multipath operation. The protocol offers the same type of service to applications as TCP (i.e., a reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths.</t>
              <t>This document specifies v1 of Multipath TCP, obsoleting v0 as specified in RFC 6824, through clarifications and modifications primarily driven by deployment experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8684"/>
          <seriesInfo name="DOI" value="10.17487/RFC8684"/>
        </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">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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="RFC7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <author fullname="M. Belshe" initials="M." surname="Belshe">
              <organization/>
            </author>
            <author fullname="R. Peon" initials="R." surname="Peon">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7540"/>
          <seriesInfo name="DOI" value="10.17487/RFC7540"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="B. Korver" initials="B." surname="Korver">
              <organization/>
            </author>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak.  This document provides guidelines to RFC authors on how to write a good Security Considerations section.   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="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="I-D.ietf-tls-dtls13">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Hannes Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Nagendra Modadugu">
              <organization>Google, Inc.</organization>
            </author>
            <date day="30" month="April" year="2021"/>
            <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.

   The DTLS 1.3 protocol is intentionally 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.

   This document obsoletes RFC 6347.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls13-43"/>
        </reference>
        <reference anchor="CONEXT21">
          <front>
            <title>TCPLS - Modern Transport Services with TCP and TLS</title>
            <author initials="F." surname="Rochet">
              <organization/>
            </author>
            <author initials="E." surname="Assogba">
              <organization/>
            </author>
            <author initials="M." surname="Piraux">
              <organization/>
            </author>
            <author initials="K." surname="Edeline">
              <organization/>
            </author>
            <author initials="B." surname="Donnet">
              <organization/>
            </author>
            <author initials="O." surname="Bonaventure">
              <organization/>
            </author>
            <date year="2021" month="December"/>
          </front>
          <seriesInfo name="Proceedings of the 17th International Conference on emerging Networking EXperiments and Technologies (CoNEXT'21)" value=""/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work has been partially supported by the ``Programme de
recherche d'interet general WALINNOV - MQUIC project (convention number
1810018)'' and European Union through the NGI Pointer programme for the TCPLS
project (Horizon 2020 Framework Programme, Grant agreement number 871528).
The authors thank Quentin De Coninck and Louis Navarre for their
comments on the first version of this draft.</t>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change log</name>
      <section numbered="false" anchor="since-draft-piraux-tcpls-00">
        <name>Since draft-piraux-tcpls-00</name>
        <ul spacing="normal">
          <li>Added the addresses exchange mechanism with New Address and Remove Address
frames.</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
