<?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.6.39 (Ruby 3.1.3) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-dtls-rrc-09" category="std" consensus="true" submissionType="IETF" updates="6347, 9147" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="DTLS Return Routability Check">Return Routability Check for DTLS 1.2 and DTLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls-rrc-09"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig" role="editor">
      <organization/>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="A." surname="Kraus" fullname="Achim Kraus">
      <organization/>
      <address>
        <email>achimkraus@gmx.net</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date year="2023" month="August" day="31"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>DTLS, RRC, CID</keyword>
    <abstract>
      <?line 45?>

<t>This document specifies a return routability check for use in context of the
Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS)
protocol versions 1.2 and 1.3.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Transport Layer Security Working Group mailing list (tls@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/tlswg/dtls-rrc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In "classical" DTLS, selecting a security context of an incoming DTLS record is
accomplished with the help of the 5-tuple, i.e. source IP address, source port,
transport protocol, destination IP address, and destination port.  Changes to
this 5 tuple can happen for a variety reasons over the lifetime of the DTLS
session.  In the IoT context, NAT rebinding is common with sleepy devices.
Other examples include end host mobility and multi-homing.  Without CID, if the
source IP address and/or source port changes during the lifetime of an ongoing
DTLS session then the receiver will be unable to locate the correct security
context.  As a result, the DTLS handshake has to be re-run.  Of course, it is
not necessary to re-run the full handshake if session resumption is supported
and negotiated.</t>
      <t>A CID is an identifier carried in the record layer header of a DTLS datagram
that gives the receiver additional information for selecting the appropriate
security context.  The CID mechanism has been specified in <xref target="RFC9146"/> for
DTLS 1.2 and in <xref target="RFC9147"/> for DTLS 1.3.</t>
      <t>Section 6 of <xref target="RFC9146"/> describes how the use of CID increases the attack
surface by providing both on-path and off-path attackers an opportunity for
(D)DoS.  It then goes on describing the steps a DTLS principal must take when a
record with a CID is received that has a source address (and/or port) different
from the one currently associated with the DTLS connection.  However, the
actual mechanism for ensuring that the new peer address is willing to receive
and process DTLS records is left open.  This document standardizes a return
routability check (RRC) as part of the DTLS protocol itself.</t>
      <t>The return routability check is performed by the receiving peer before the
CID-to-IP address/port binding is updated in that peer's session state
database.  This is done in order to provide more confidence to the receiving
peer that the sending peer is reachable at the indicated address and port.</t>
      <t>Note however that, irrespective of CID, if RRC has been successfully negotiated
by the peers, path validation can be used at any time by either endpoint. For
instance, an endpoint might use RRC to check that a peer is still in possession
of its address after a period of quiescence.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and 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?>

<t>This document assumes familiarity with the CID format and protocol defined for
DTLS 1.2 <xref target="RFC9146"/> and for DTLS 1.3 <xref target="RFC9147"/>.  The presentation language
used in this document is described in Section 4 of <xref target="RFC8446"/>.</t>
      <t>This document reuses the definition of "anti-amplification limit" from
<xref target="RFC9000"/> to mean three times the amount of data received from an
unvalidated address.  This includes all DTLS records originating from that
source address, excluding discarded ones.</t>
    </section>
    <section anchor="rrc-extension">
      <name>RRC Extension</name>
      <t>The use of RRC is negotiated via the <tt>rrc</tt> DTLS-only extension.  On connecting,
the client includes the <tt>rrc</tt> extension in its ClientHello if it wishes to use
RRC.  If the server is capable of meeting this requirement, it responds with a
<tt>rrc</tt> extension in its ServerHello.  The <tt>extension_type</tt> value for this
extension is TBD1 and the <tt>extension_data</tt> field of this extension is empty.
The client and server <bcp14>MUST NOT</bcp14> use RRC unless both sides have successfully
exchanged <tt>rrc</tt> extensions.</t>
      <t>Note that the RRC extension applies to both DTLS 1.2 and DTLS 1.3.</t>
    </section>
    <section anchor="return-routability-check-message-types">
      <name>Return Routability Check Message Types</name>
      <t>This document defines the <tt>return_routability_check</tt> content type
(<xref target="fig-rrc-msg"/>) to carry Return Routability Check protocol messages.</t>
      <t>The protocol consists of three message types: <tt>path_challenge</tt>, <tt>path_response</tt>
and <tt>path_drop</tt> that are used for path validation and selection as described in
<xref target="path-validation"/>.</t>
      <t>Each message carries a Cookie, a 8-byte field containing arbitrary data.</t>
      <t>The <tt>return_routability_check</tt> message <bcp14>MUST</bcp14> be authenticated and encrypted
using the currently active security context.</t>
      <figure anchor="fig-rrc-msg">
        <name>Return Routability Check Message</name>
        <sourcecode type="tls-msg"><![CDATA[
enum {
    invalid(0),
    change_cipher_spec(20),
    alert(21),
    handshake(22),
    application_data(23),
    heartbeat(24),  /* RFC 6520 */
    tls12_cid(25),  /* RFC 9146, DTLS 1.2 only */
    return_routability_check(TBD2), /* NEW */
    (255)
} ContentType;

uint64 Cookie;

enum {
    path_challenge(0),
    path_response(1),
    path_drop(2),
    (255)
} rrc_msg_type;

struct {
    rrc_msg_type msg_type;
    select (return_routability_check.msg_type) {
        case path_challenge: Cookie;
        case path_response:  Cookie;
        case path_drop:      Cookie;
    };
} return_routability_check;
]]></sourcecode>
      </figure>
      <t>Future extensions or additions to the Return Routability Check protocol may
define new message types.  Implementations <bcp14>MUST</bcp14> be able to parse and ignore
messages with an unknown <tt>msg_type</tt>.</t>
    </section>
    <section anchor="rrc-and-cid-interplay">
      <name>RRC and CID Interplay</name>
      <t>RRC offers an in-protocol mechanism to perform peer address validation that
complements the "peer address update" procedure described in <xref section="6" sectionFormat="of" target="RFC9146"/>.  Specifically, when both CID <xref target="RFC9146"/> and RRC have been
successfully negotiated for the session, if a record with CID is received that
has the source address of the enclosing UDP datagram different from the one
currently associated with that CID value, the receiver <bcp14>SHOULD</bcp14> perform a return
routability check as described in <xref target="path-validation"/>, unless an application
layer specific address validation mechanism can be triggered instead.</t>
    </section>
    <section anchor="attacker-model">
      <name>Attacker Model</name>
      <t>We define two classes of attackers, off-path and on-path, with increasing
capabilities (see <xref target="fig-attacker-capabilities"/>) partly following terminology
introduced in QUIC <xref target="RFC9000"/>:</t>
      <ul spacing="normal">
        <li>An off-path attacker is not on the original path between the DTLS peers, but
is able to observe packets on the original path and has faster routing
compared to the DTLS peers, which allows it to make copies of the observed
packets, race its copies to either peer and consistently win the race.</li>
        <li>An on-path attacker is on the original path between the DTLS peers and is
therefore capable, compared to the off-path attacker, to also drop and delay
records at will.</li>
      </ul>
      <t>Note that in general, attackers cannot craft DTLS records in a way that would
successfully pass verification due to the cryptographic protections applied by
the DTLS record layer.</t>
      <figure anchor="fig-attacker-capabilities">
        <name>Attackers capabilities</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="448" viewBox="0 0 448 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 40,32 L 40,80" fill="none" stroke="black"/>
              <path d="M 40,112 L 40,160" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,256" fill="none" stroke="black"/>
              <path d="M 376,32 L 376,256" fill="none" stroke="black"/>
              <path d="M 416,32 L 416,128" fill="none" stroke="black"/>
              <path d="M 416,160 L 416,256" fill="none" stroke="black"/>
              <path d="M 40,32 L 64,32" fill="none" stroke="black"/>
              <path d="M 80,32 L 376,32" fill="none" stroke="black"/>
              <path d="M 392,32 L 416,32" fill="none" stroke="black"/>
              <path d="M 80,64 L 376,64" fill="none" stroke="black"/>
              <path d="M 80,96 L 376,96" fill="none" stroke="black"/>
              <path d="M 80,128 L 376,128" fill="none" stroke="black"/>
              <path d="M 40,160 L 64,160" fill="none" stroke="black"/>
              <path d="M 80,160 L 376,160" fill="none" stroke="black"/>
              <path d="M 80,192 L 376,192" fill="none" stroke="black"/>
              <path d="M 80,224 L 376,224" fill="none" stroke="black"/>
              <path d="M 80,256 L 376,256" fill="none" stroke="black"/>
              <path d="M 392,256 L 416,256" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="400,256 388,250.4 388,261.6 " fill="black" transform="rotate(180,392,256)"/>
              <polygon class="arrowhead" points="400,32 388,26.4 388,37.6 " fill="black" transform="rotate(180,392,32)"/>
              <polygon class="arrowhead" points="72,160 60,154.4 60,165.6 " fill="black" transform="rotate(0,64,160)"/>
              <polygon class="arrowhead" points="72,32 60,26.4 60,37.6 " fill="black" transform="rotate(0,64,32)"/>
              <g class="text">
                <text x="120" y="52">Inspect</text>
                <text x="204" y="52">un-encrypted</text>
                <text x="292" y="52">portions</text>
                <text x="116" y="84">Inject</text>
                <text x="36" y="100">off-path</text>
                <text x="120" y="116">Reorder</text>
                <text x="116" y="148">Modify</text>
                <text x="212" y="148">un-authenticated</text>
                <text x="316" y="148">portions</text>
                <text x="416" y="148">on-path</text>
                <text x="112" y="180">Delay</text>
                <text x="108" y="212">Drop</text>
                <text x="132" y="244">Manipulate</text>
                <text x="192" y="244">the</text>
                <text x="264" y="244">packetization</text>
                <text x="344" y="244">layer</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
    .--> .------------------------------------. <--.
    |    | Inspect un-encrypted portions      |    |
    |    +------------------------------------+    |
    |    | Inject                             |    |
off-path +------------------------------------+    |
    |    | Reorder                            |    |
    |    +------------------------------------+    |
    |    | Modify un-authenticated portions   | on-path
    '--> +------------------------------------+    |
         | Delay                              |    |
         +------------------------------------+    |
         | Drop                               |    |
         +------------------------------------+    |
         | Manipulate the packetization layer |    |
         '------------------------------------' <--'
]]></artwork>
        </artset>
      </figure>
      <t>RRC is designed to defend against the following attacks:</t>
      <ul spacing="normal">
        <li>On-path and off-path attackers that try to create an amplification attack by
spoofing the source address of the victim (<xref target="sec-amplification"/>).</li>
        <li>Off-path attackers that try to put themselves on-path (<xref target="off-path"/>),
provided that the enhanced path validation algorithm is used (<xref target="enhanced"/>).</li>
      </ul>
      <section anchor="sec-amplification">
        <name>Amplification</name>
        <t>Both on-path and off-path attackers can send a packet (either by modifying it
on the fly, or by copying, injecting and racing it, respectively) with the
source address modified to that of a victim host.  If the traffic generated by
the server in response is larger compared to the received packet (e.g., a CoAP
server returning an MTU's worth of data from a 20-bytes GET request) the
attacker can use the server as a traffic amplifier toward the victim.</t>
        <t>When receiving a packet with a known CID and a spoofed source address, an
RRC-capable endpoint will not send a (potentially large) response but instead a
small <tt>path_challenge</tt> message to the victim host.  Since the host is not able
to decrypt it and generate a valid <tt>path_response</tt>, the address validation
fails, which in turn keeps the original address binding unaltered.</t>
        <t>Note that in case of an off-path attacker, the original packet still reaches
the intended destination; therefore, an implementation could use a different
strategy to mitigate the attack.</t>
      </section>
      <section anchor="off-path">
        <name>Off-Path Packet Forwarding</name>
        <t>An off-path attacker that can observe packets might forward copies of
genuine packets to endpoints over a different path. If the copied packet arrives before
the genuine packet, this will appear as a path change, like in a genuine NAT rebinding occurrence. Any genuine
packet will be discarded as a duplicate. If the attacker is able to
continue forwarding packets, it might be able to cause migration to a
path via the attacker. This places the attacker on-path, giving it
the ability to observe or drop all subsequent packets.</t>
        <t>This style of attack relies on the attacker using a path that has
the same or better characteristics (e.g., due to a more favourable service level agreements) as the direct path between
endpoints. The attack is more reliable if relatively few packets are
sent or if packet loss coincides with the attempted attack.</t>
        <t>A data packet received on the original path that increases the
maximum received packet number will cause the endpoint to move back
to that path. Therefore, eliciting packets on this path increases the
likelihood that the attack is unsuccessful. Note however that, unlike QUIC,
DTLS has no "non-probing" packets so this would require application specific
mechanisms.</t>
        <t><xref target="fig-off-path"/> illustrates the case where a receiver receives a
packet with a new source IP address and/or new port number. In order
to determine whether this path change was not triggered
by an off-path attacker, the receiver will send a RRC message of type
<tt>path_challenge</tt> (1) on the old path.</t>
        <figure anchor="fig-off-path">
          <name>Off-Path Packet Forwarding Scenario</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="256" viewBox="0 0 256 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 64,80 L 64,176" fill="none" stroke="black"/>
                <path d="M 64,208 L 64,304" fill="none" stroke="black"/>
                <path d="M 112,48 L 112,112" fill="none" stroke="black"/>
                <path d="M 112,272 L 112,336" fill="none" stroke="black"/>
                <path d="M 200,48 L 200,112" fill="none" stroke="black"/>
                <path d="M 200,272 L 200,336" fill="none" stroke="black"/>
                <path d="M 248,80 L 248,304" fill="none" stroke="black"/>
                <path d="M 112,48 L 200,48" fill="none" stroke="black"/>
                <path d="M 64,80 L 112,80" fill="none" stroke="black"/>
                <path d="M 200,80 L 248,80" fill="none" stroke="black"/>
                <path d="M 112,112 L 200,112" fill="none" stroke="black"/>
                <path d="M 24,176 L 120,176" fill="none" stroke="black"/>
                <path d="M 8,208 L 104,208" fill="none" stroke="black"/>
                <path d="M 112,272 L 200,272" fill="none" stroke="black"/>
                <path d="M 64,304 L 112,304" fill="none" stroke="black"/>
                <path d="M 200,304 L 248,304" fill="none" stroke="black"/>
                <path d="M 112,336 L 200,336" fill="none" stroke="black"/>
                <path d="M 8,208 L 24,176" fill="none" stroke="black"/>
                <path d="M 104,208 L 120,176" fill="none" stroke="black"/>
                <g class="text">
                  <text x="72" y="36">new</text>
                  <text x="240" y="36">old</text>
                  <text x="76" y="52">path</text>
                  <text x="236" y="52">path</text>
                  <text x="156" y="84">Receiver</text>
                  <text x="64" y="196">Attacker?</text>
                  <text x="156" y="308">Sender</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
        new                  old
        path  .----------.  path
              |          |
        .-----+ Receiver +-----.
        |     |          |     |
        |     '----------'     |
        |                      |
        |                      |
        |                      |
   .----+------.               |
  / Attacker? /                |
 '------+----'                 |
        |                      |
        |                      |
        |                      |
        |     .----------.     |
        |     |          |     |
        '-----+  Sender  +-----'
              |          |
              '----------'
]]></artwork>
          </artset>
        </figure>
        <t>Three cases need to be considered:</t>
        <t>Case 1: The old path is dead (e.g., due to a NAT rebinding), which leads to a
timeout of (1).</t>
        <t>As shown in <xref target="fig-old-path-dead"/>, a <tt>path_challenge</tt> (2) needs to be sent on
the new path.  If the sender replies with a <tt>path_response</tt> on the new path
(3), the switch to the new path is considered legitimate.</t>
        <figure anchor="fig-old-path-dead">
          <name>Old path is dead</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="384" viewBox="0 0 384 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 80,64 L 80,112" fill="none" stroke="black"/>
                <path d="M 80,144 L 80,320" fill="none" stroke="black"/>
                <path d="M 96,80 L 96,176" fill="none" stroke="black"/>
                <path d="M 96,208 L 96,304" fill="none" stroke="black"/>
                <path d="M 112,96 L 112,224" fill="none" stroke="black"/>
                <path d="M 112,256 L 112,288" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,112" fill="none" stroke="black"/>
                <path d="M 144,272 L 144,336" fill="none" stroke="black"/>
                <path d="M 232,48 L 232,112" fill="none" stroke="black"/>
                <path d="M 232,272 L 232,336" fill="none" stroke="black"/>
                <path d="M 296,64 L 296,112" fill="none" stroke="black"/>
                <path d="M 296,144 L 296,176" fill="none" stroke="black"/>
                <path d="M 144,48 L 232,48" fill="none" stroke="black"/>
                <path d="M 80,64 L 136,64" fill="none" stroke="black"/>
                <path d="M 232,64 L 296,64" fill="none" stroke="black"/>
                <path d="M 96,80 L 144,80" fill="none" stroke="black"/>
                <path d="M 112,96 L 144,96" fill="none" stroke="black"/>
                <path d="M 144,112 L 232,112" fill="none" stroke="black"/>
                <path d="M 56,176 L 72,176" fill="none" stroke="black"/>
                <path d="M 88,176 L 104,176" fill="none" stroke="black"/>
                <path d="M 120,176 L 288,176" fill="none" stroke="black"/>
                <path d="M 304,176 L 320,176" fill="none" stroke="black"/>
                <path d="M 40,208 L 72,208" fill="none" stroke="black"/>
                <path d="M 88,208 L 104,208" fill="none" stroke="black"/>
                <path d="M 120,208 L 304,208" fill="none" stroke="black"/>
                <path d="M 144,272 L 232,272" fill="none" stroke="black"/>
                <path d="M 112,288 L 136,288" fill="none" stroke="black"/>
                <path d="M 96,304 L 144,304" fill="none" stroke="black"/>
                <path d="M 80,320 L 144,320" fill="none" stroke="black"/>
                <path d="M 144,336 L 232,336" fill="none" stroke="black"/>
                <path d="M 40,208 L 56,176" fill="none" stroke="black"/>
                <path d="M 304,208 L 320,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="304,176 292,170.4 292,181.6 " fill="black" transform="rotate(90,296,176)"/>
                <polygon class="arrowhead" points="144,288 132,282.4 132,293.6 " fill="black" transform="rotate(0,136,288)"/>
                <polygon class="arrowhead" points="144,64 132,58.4 132,69.6 " fill="black" transform="rotate(0,136,64)"/>
                <g class="text">
                  <text x="88" y="36">new</text>
                  <text x="288" y="36">old</text>
                  <text x="92" y="52">path</text>
                  <text x="284" y="52">path</text>
                  <text x="188" y="84">Receiver</text>
                  <text x="260" y="84">......</text>
                  <text x="280" y="100">.</text>
                  <text x="280" y="116">.</text>
                  <text x="24" y="132">path-</text>
                  <text x="80" y="132">3</text>
                  <text x="280" y="132">.</text>
                  <text x="296" y="132">1</text>
                  <text x="328" y="132">path-</text>
                  <text x="36" y="148">response</text>
                  <text x="280" y="148">.</text>
                  <text x="344" y="148">challenge</text>
                  <text x="280" y="164">.</text>
                  <text x="184" y="196">NAT</text>
                  <text x="296" y="196">X</text>
                  <text x="352" y="196">timeout</text>
                  <text x="280" y="228">.</text>
                  <text x="112" y="244">2</text>
                  <text x="144" y="244">path-</text>
                  <text x="280" y="244">.</text>
                  <text x="160" y="260">challenge</text>
                  <text x="280" y="260">.</text>
                  <text x="280" y="276">.</text>
                  <text x="280" y="292">.</text>
                  <text x="188" y="308">Sender</text>
                  <text x="260" y="308">.....'</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
          new                      old
          path    .----------.    path
          .------>|          +-------.
          | .-----+ Receiver +...... |
          | | .---+          |     . |
          | | |   '----------'     . |
 path-    3 | |                    . 1 path-
 response | | |                    . | challenge
          | | |                    . |
       .--|-+-|----------------------v--.
      /   |   |       NAT            X / timeout
     '----|-+-|-----------------------'
          | | |                    .
          | | 2 path-              .
          | | | challenge          .
          | | |   .----------.     .
          | | '-->|          |     .
          | '-----+  Sender  +.....'
          '-------+          |
                  '----------'
]]></artwork>
          </artset>
        </figure>
        <t>Case 2: The old path is alive but not preferred.</t>
        <t>This case is shown in <xref target="fig-old-path-not-preferred"/> whereby the sender
replies with a <tt>path_drop</tt> message (2) on the old path.  This triggers
the receiver to send a <tt>path_challenge</tt> (3) on the new path. The sender
will reply with a <tt>path_response</tt> (4) on the new path, thus providing
confirmation for the path migration.</t>
        <figure anchor="fig-old-path-not-preferred">
          <name>Old path is not preferred</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="424" viewBox="0 0 424 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 104,64 L 104,112" fill="none" stroke="black"/>
                <path d="M 104,144 L 104,320" fill="none" stroke="black"/>
                <path d="M 120,80 L 120,176" fill="none" stroke="black"/>
                <path d="M 120,216 L 120,304" fill="none" stroke="black"/>
                <path d="M 136,96 L 136,224" fill="none" stroke="black"/>
                <path d="M 136,256 L 136,288" fill="none" stroke="black"/>
                <path d="M 168,48 L 168,112" fill="none" stroke="black"/>
                <path d="M 168,272 L 168,336" fill="none" stroke="black"/>
                <path d="M 256,48 L 256,112" fill="none" stroke="black"/>
                <path d="M 256,272 L 256,336" fill="none" stroke="black"/>
                <path d="M 288,96 L 288,112" fill="none" stroke="black"/>
                <path d="M 288,144 L 288,288" fill="none" stroke="black"/>
                <path d="M 304,80 L 304,176" fill="none" stroke="black"/>
                <path d="M 304,208 L 304,304" fill="none" stroke="black"/>
                <path d="M 320,64 L 320,224" fill="none" stroke="black"/>
                <path d="M 320,256 L 320,320" fill="none" stroke="black"/>
                <path d="M 168,48 L 256,48" fill="none" stroke="black"/>
                <path d="M 104,64 L 160,64" fill="none" stroke="black"/>
                <path d="M 264,64 L 320,64" fill="none" stroke="black"/>
                <path d="M 120,80 L 168,80" fill="none" stroke="black"/>
                <path d="M 256,80 L 304,80" fill="none" stroke="black"/>
                <path d="M 136,96 L 168,96" fill="none" stroke="black"/>
                <path d="M 256,96 L 288,96" fill="none" stroke="black"/>
                <path d="M 168,112 L 256,112" fill="none" stroke="black"/>
                <path d="M 24,176 L 96,176" fill="none" stroke="black"/>
                <path d="M 112,176 L 128,176" fill="none" stroke="black"/>
                <path d="M 144,176 L 176,176" fill="none" stroke="black"/>
                <path d="M 264,176 L 280,176" fill="none" stroke="black"/>
                <path d="M 296,176 L 312,176" fill="none" stroke="black"/>
                <path d="M 328,176 L 416,176" fill="none" stroke="black"/>
                <path d="M 8,208 L 96,208" fill="none" stroke="black"/>
                <path d="M 112,208 L 128,208" fill="none" stroke="black"/>
                <path d="M 144,208 L 160,208" fill="none" stroke="black"/>
                <path d="M 248,208 L 280,208" fill="none" stroke="black"/>
                <path d="M 296,208 L 312,208" fill="none" stroke="black"/>
                <path d="M 328,208 L 400,208" fill="none" stroke="black"/>
                <path d="M 168,272 L 256,272" fill="none" stroke="black"/>
                <path d="M 136,288 L 160,288" fill="none" stroke="black"/>
                <path d="M 264,288 L 288,288" fill="none" stroke="black"/>
                <path d="M 120,304 L 168,304" fill="none" stroke="black"/>
                <path d="M 256,304 L 304,304" fill="none" stroke="black"/>
                <path d="M 104,320 L 168,320" fill="none" stroke="black"/>
                <path d="M 264,320 L 320,320" fill="none" stroke="black"/>
                <path d="M 168,336 L 256,336" fill="none" stroke="black"/>
                <path d="M 8,208 L 24,176" fill="none" stroke="black"/>
                <path d="M 160,208 L 176,176" fill="none" stroke="black"/>
                <path d="M 248,208 L 264,176" fill="none" stroke="black"/>
                <path d="M 400,208 L 416,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="272,320 260,314.4 260,325.6 " fill="black" transform="rotate(180,264,320)"/>
                <polygon class="arrowhead" points="272,288 260,282.4 260,293.6 " fill="black" transform="rotate(180,264,288)"/>
                <polygon class="arrowhead" points="272,64 260,58.4 260,69.6 " fill="black" transform="rotate(180,264,64)"/>
                <polygon class="arrowhead" points="168,288 156,282.4 156,293.6 " fill="black" transform="rotate(0,160,288)"/>
                <polygon class="arrowhead" points="168,64 156,58.4 156,69.6 " fill="black" transform="rotate(0,160,64)"/>
                <g class="text">
                  <text x="112" y="36">new</text>
                  <text x="312" y="36">old</text>
                  <text x="116" y="52">path</text>
                  <text x="308" y="52">path</text>
                  <text x="212" y="84">Receiver</text>
                  <text x="48" y="132">path-</text>
                  <text x="104" y="132">4</text>
                  <text x="224" y="132">path-</text>
                  <text x="288" y="132">1</text>
                  <text x="60" y="148">response</text>
                  <text x="240" y="148">challenge</text>
                  <text x="52" y="196">AP/NAT</text>
                  <text x="88" y="196">A</text>
                  <text x="356" y="196">AP/NAT</text>
                  <text x="392" y="196">B</text>
                  <text x="136" y="244">3</text>
                  <text x="168" y="244">path-</text>
                  <text x="320" y="244">2</text>
                  <text x="352" y="244">path-</text>
                  <text x="184" y="260">challenge</text>
                  <text x="348" y="260">drop</text>
                  <text x="212" y="308">Sender</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
            new                      old
            path    .----------.    path
            .------>|          |<------.
            | .-----+ Receiver +-----. |
            | | .---+          +---. | |
            | | |   '----------'   | | |
   path-    4 | |        path-     1 | |
   response | | |        challenge | | |
            | | |                  | | |
  .---------|-+-|----.          .--|-+-|-----------.
 / AP/NAT A |   |   /          /   |   | AP/NAT B /
'-----------|---|--'          '----|-+-|---------'
            | | |                  | | |
            | | 3 path-            | | 2 path-
            | | | challenge        | | | drop
            | | |   .----------.   | | |
            | | '-->|          |<--' | |
            | '-----+  Sender  +-----' |
            '-------+          |<------'
                    '----------'
]]></artwork>
          </artset>
        </figure>
        <t>Case 3: The old path is alive and preferred.</t>
        <t>This is most likely the result of an off-path attacker trying to place itself
on path.  The receiver sends a <tt>path_challenge</tt> on the old path and the sender
replies with a <tt>path_response</tt> (2) on the old path. The interaction is shown in
<xref target="fig-old-path-preferred"/>. This results in the connection not being migrated
to the new path, thus thwarting the attack.</t>
        <figure anchor="fig-old-path-preferred">
          <name>Old path is preferred</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="352" viewBox="0 0 352 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 64,80 L 64,176" fill="none" stroke="black"/>
                <path d="M 64,224 L 64,320" fill="none" stroke="black"/>
                <path d="M 112,48 L 112,112" fill="none" stroke="black"/>
                <path d="M 112,288 L 112,352" fill="none" stroke="black"/>
                <path d="M 200,48 L 200,112" fill="none" stroke="black"/>
                <path d="M 200,288 L 200,352" fill="none" stroke="black"/>
                <path d="M 232,96 L 232,240" fill="none" stroke="black"/>
                <path d="M 232,272 L 232,304" fill="none" stroke="black"/>
                <path d="M 248,80 L 248,176" fill="none" stroke="black"/>
                <path d="M 248,208 L 248,320" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,112" fill="none" stroke="black"/>
                <path d="M 264,144 L 264,336" fill="none" stroke="black"/>
                <path d="M 112,48 L 200,48" fill="none" stroke="black"/>
                <path d="M 200,64 L 264,64" fill="none" stroke="black"/>
                <path d="M 64,80 L 112,80" fill="none" stroke="black"/>
                <path d="M 200,80 L 248,80" fill="none" stroke="black"/>
                <path d="M 208,96 L 232,96" fill="none" stroke="black"/>
                <path d="M 112,112 L 200,112" fill="none" stroke="black"/>
                <path d="M 32,176 L 120,176" fill="none" stroke="black"/>
                <path d="M 208,176 L 224,176" fill="none" stroke="black"/>
                <path d="M 240,176 L 256,176" fill="none" stroke="black"/>
                <path d="M 272,176 L 312,176" fill="none" stroke="black"/>
                <path d="M 192,208 L 224,208" fill="none" stroke="black"/>
                <path d="M 240,208 L 256,208" fill="none" stroke="black"/>
                <path d="M 272,208 L 296,208" fill="none" stroke="black"/>
                <path d="M 8,224 L 96,224" fill="none" stroke="black"/>
                <path d="M 112,288 L 200,288" fill="none" stroke="black"/>
                <path d="M 200,304 L 232,304" fill="none" stroke="black"/>
                <path d="M 64,320 L 112,320" fill="none" stroke="black"/>
                <path d="M 200,320 L 248,320" fill="none" stroke="black"/>
                <path d="M 208,336 L 264,336" fill="none" stroke="black"/>
                <path d="M 112,352 L 200,352" fill="none" stroke="black"/>
                <path d="M 8,224 L 32,176" fill="none" stroke="black"/>
                <path d="M 96,224 L 120,176" fill="none" stroke="black"/>
                <path d="M 192,208 L 208,176" fill="none" stroke="black"/>
                <path d="M 296,208 L 312,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="216,336 204,330.4 204,341.6 " fill="black" transform="rotate(180,208,336)"/>
                <polygon class="arrowhead" points="216,96 204,90.4 204,101.6 " fill="black" transform="rotate(180,208,96)"/>
                <g class="text">
                  <text x="72" y="36">new</text>
                  <text x="256" y="36">old</text>
                  <text x="76" y="52">path</text>
                  <text x="252" y="52">path</text>
                  <text x="156" y="84">Receiver</text>
                  <text x="264" y="132">1</text>
                  <text x="296" y="132">path-</text>
                  <text x="312" y="148">challenge</text>
                  <text x="68" y="196">off-path</text>
                  <text x="220" y="196">AP</text>
                  <text x="248" y="196">/</text>
                  <text x="280" y="196">NAT</text>
                  <text x="60" y="212">attacker</text>
                  <text x="176" y="260">path-</text>
                  <text x="232" y="260">2</text>
                  <text x="188" y="276">response</text>
                  <text x="156" y="324">Sender</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
        new                    old
        path  .----------.    path
              |          +-------.
        .-----+ Receiver +-----. |
        |     |          |<--. | |
        |     '----------'   | | |
        |                    | | 1 path-
        |                    | | | challenge
        |                    | | |
    .---+------.          .--|-+-|-----.
   / off-path /          / AP| / |NAT /
  / attacker /          '----|-+-|---'
 '------+---'                | | |
        |                    | | |
        |           path-    2 | |
        |           response | | |
        |     .----------.   | | |
        |     |          +---' | |
        '-----+  Sender  +-----' |
              |          |<------'
              '----------'
]]></artwork>
          </artset>
        </figure>
        <t>Note that this defense is imperfect, but this is not considered a serious
problem. If the path via the attack is reliably faster than the
old path despite multiple attempts to use that old path, it
is not possible to distinguish between an attack and an improvement
in routing.</t>
        <t>An endpoint could also use heuristics to improve detection of this
style of attack. For instance, NAT rebinding is improbable if
packets were recently received on the old path; similarly, rebinding
is rare on IPv6 paths. Endpoints can also look for duplicated
packets. Conversely, a change in connection ID is more likely to
indicate an intentional migration rather than an attack. Note that
changes in connection IDs are supported in DTLS 1.3 but not in
DTLS 1.2.</t>
      </section>
    </section>
    <section anchor="path-validation">
      <name>Path Validation Procedure</name>
      <t>The receiver that observes the peer's address or port update <bcp14>MUST</bcp14> stop sending
any buffered application data, or limit the data sent to the unvalidated
address to the anti-amplification limit.</t>
      <t>It then initiates the return routability check that proceeds as described
either in <xref target="enhanced"/> or <xref target="regular"/>, depending on whether the off-path
attacker scenario described in <xref target="off-path"/> is to be taken into account or not.</t>
      <t>(The decision on what strategy to choose depends mainly on the threat model, but
may also be influenced by other considerations.  Examples of impacting factors
include: the need to minimise implementation complexity, privacy concerns, the
need to reduce the time it takes to switch path.  The choice may be offered as
a configuration option to the user.)</t>
      <t>After the path validation procedure is completed, any pending send operation is
resumed to the bound peer address.</t>
      <t><xref target="path-challenge-reqs"/> and <xref target="path-response-reqs"/> list the requirements for
the initiator and responder roles, broken down per protocol phase.</t>
      <section anchor="regular">
        <name>Basic</name>
        <ol spacing="normal" type="1"><li>The receiver creates a <tt>return_routability_check</tt> message of
type <tt>path_challenge</tt> and places the unpredictable cookie into the message.</li>
          <li>The message is sent to the observed new address and a timer T (see
<xref target="timer-choice"/>) is started.</li>
          <li>The peer endpoint cryptographically verifies the received
<tt>return_routability_check</tt> message of
type <tt>path_challenge</tt> and responds by echoing the cookie value in a
<tt>return_routability_check</tt> message of type <tt>path_response</tt>.</li>
          <li>When the initiator receives the <tt>return_routability_check</tt>
message  of type <tt>path_response</tt> and verifies that it contains the sent cookie, it updates the peer
address binding.</li>
          <li>If T expires the peer address binding is not updated.</li>
        </ol>
      </section>
      <section anchor="enhanced">
        <name>Enhanced</name>
        <ol spacing="normal" type="1"><li>The receiver creates a <tt>return_routability_check</tt> message of
type <tt>path_challenge</tt> and places the unpredictable cookie into the message.</li>
          <li>The message is sent to the previously valid address, which corresponds to the
old path. Additionally, a timer T, see <xref target="timer-choice"/>, is started.</li>
          <li>
            <t>If the path is still functional, the peer endpoint cryptographically verifies the received
<tt>return_routability_check</tt> message of
type <tt>path_challenge</tt>.
The action to be taken depends on whether the path through which
the message was received is the preferred one or not anymore:
            </t>
            <ul spacing="normal">
              <li>If the path through which the message was received is preferred,
a <tt>return_routability_check</tt> message of type <tt>path_response</tt> <bcp14>MUST</bcp14> be returned.</li>
              <li>If the path through which the message was received is not preferred,
a <tt>return_routability_check</tt> message of type <tt>path_drop</tt> <bcp14>MUST</bcp14> be returned.
In either case, the peer endpoint echoes the cookie value in the response.</li>
            </ul>
          </li>
          <li>
            <t>The initiator receives and verifies that the <tt>return_routability_check</tt>
message contains the previously sent cookie. The actions taken by the
initiator differ based on the received message:
            </t>
            <ul spacing="normal">
              <li>When a <tt>return_routability_check</tt> message of type <tt>path_response</tt> was received,
the initiator <bcp14>MUST</bcp14> continue using the previously valid address, i.e. no switch
to the new path takes place and the peer address binding is not updated.</li>
              <li>When a <tt>return_routability_check</tt> message of type <tt>path_drop</tt> was received,
the initiator <bcp14>MUST</bcp14> perform a return routability check on the observed new
address, as described in <xref target="regular"/>.</li>
            </ul>
          </li>
          <li>If T expires the peer address binding is not updated. In this case, the
initiator <bcp14>MUST</bcp14> perform a return routability check on the observed new
address, as described in <xref target="regular"/>.</li>
        </ol>
      </section>
      <section anchor="path-challenge-reqs">
        <name> Path Challenge Requirements</name>
        <ul spacing="normal">
          <li>
            <t>The initiator <bcp14>MAY</bcp14> send multiple <tt>return_routability_check</tt> messages of type
<tt>path_challenge</tt> to cater for packet loss on the probed path.
            </t>
            <ul spacing="normal">
              <li>Each <tt>path_challenge</tt> <bcp14>SHOULD</bcp14> go into different transport packets.  (Note that
the DTLS implementation may not have control over the packetization done by
the transport layer.)</li>
              <li>The transmission of subsequent <tt>path_challenge</tt> messages <bcp14>SHOULD</bcp14> be paced to
decrease the chance of loss.</li>
              <li>Each <tt>path_challenge</tt> message <bcp14>MUST</bcp14> contain random data.</li>
            </ul>
          </li>
          <li>The initiator <bcp14>MAY</bcp14> use padding using the record padding mechanism available in
DTLS 1.3 (and in DTLS 1.2, when CID is enabled on the sending direction) up
to the anti-amplification limit to probe if the path MTU (PMTU) for the new
path is still acceptable.</li>
        </ul>
      </section>
      <section anchor="path-response-reqs">
        <name>Path Response/Drop Requirements</name>
        <ul spacing="normal">
          <li>The responder <bcp14>MUST NOT</bcp14> delay sending an elicited <tt>path_response</tt> or
<tt>path_drop</tt> messages.</li>
          <li>The responder <bcp14>MUST</bcp14> send exactly one <tt>path_response</tt> or <tt>path_drop</tt> message
for each received <tt>path_challenge</tt>.</li>
          <li>The responder <bcp14>MUST</bcp14> send the <tt>path_response</tt> or the <tt>path_drop</tt> on the path
where the corresponding <tt>path_challenge</tt> has been received, so that validation
succeeds only if the path is functional in both directions. The initiator
<bcp14>MUST NOT</bcp14> enforce this behaviour.</li>
          <li>The initiator <bcp14>MUST</bcp14> silently discard any invalid <tt>path_response</tt> or
<tt>path_drop</tt> it receives.</li>
        </ul>
        <t>Note that RRC does not cater for PMTU discovery on the reverse path.  If the
responder wants to do PMTU discovery using RRC, it should initiate a new path
validation procedure.</t>
      </section>
      <section anchor="timer-choice">
        <name>Timer Choice</name>
        <t>When setting T, implementations are cautioned that the new path could have a
longer round-trip time (RTT) than the original.</t>
        <t>In settings where there is external information about the RTT of the active
path, implementations <bcp14>SHOULD</bcp14> use T = 3xRTT.</t>
        <t>If an implementation has no way to obtain information regarding the RTT of the
active path, T <bcp14>SHOULD</bcp14> be set to 1s.</t>
        <t>Profiles for specific deployment environments -- for example, constrained
networks <xref target="I-D.ietf-uta-tls13-iot-profile"/> -- <bcp14>MAY</bcp14> specify a different, more
suitable value.</t>
      </section>
    </section>
    <section anchor="example">
      <name>Example</name>
      <t>In the example TLS 1.3 handshake shown in <xref target="fig-handshake"/>, a client
and a server successfully negotiate support for CID as well as the RRC
extension.</t>
      <figure anchor="fig-handshake">
        <name>Message Flow for Full TLS Handshake</name>
        <artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + key_share
     | + signature_algorithms
     | + rrc
     v + connection_id=empty
                               -------->
                                                  ServerHello  ^ Key
                                                 +  key_share  | Exch
                                          + connection_id=100  |
                                                        + rrc  v
                                        {EncryptedExtensions}  ^  Server
                                         {CertificateRequest}  v  Params
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                               <--------           {Finished}  v

     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]

              +  Indicates noteworthy extensions sent in the
                 previously noted message.

              *  Indicates optional or situation-dependent
                 messages/extensions that are not always sent.

              {} Indicates messages protected using keys
                 derived from a [sender]_handshake_traffic_secret.

              [] Indicates messages protected using keys
                 derived from [sender]_application_traffic_secret_N.
]]></artwork>
      </figure>
      <t>Once a connection has been established the client and the server
exchange application payloads protected by DTLS with a unilaterally used
CID. In our case, the client is requested to use CID 100 for records
sent to the server.</t>
      <t>At some point in the communication interaction the IP address used by
the client changes and, thanks to the CID usage, the security context to
interpret the record is successfully located by the server.  However, the
server wants to test the reachability of the client at its new IP address.</t>
      <t><xref target="fig-rrc-example"/> shows the server initiating a "basic" RRC exchange
(see <xref target="regular"/>) that establishes reachability of the client at the new
IP address.</t>
      <figure anchor="fig-rrc-example">
        <name>"Basic" Return Routability Example</name>
        <artwork><![CDATA[
      Client                                             Server
      ------                                             ------

      Application Data            ========>
      <CID=100>
      Src-IP=A
      Dst-IP=Z
                                  <========        Application Data
                                                       Src-IP=Z
                                                       Dst-IP=A


                              <<------------->>
                              <<   Some      >>
                              <<   Time      >>
                              <<   Later     >>
                              <<------------->>


      Application Data            ========>
      <CID=100>
      Src-IP=B
      Dst-IP=Z

                                             <<< Unverified IP
                                                 Address B >>

                                  <--------  Return Routability Check
                                             path_challenge(cookie)
                                                    Src-IP=Z
                                                    Dst-IP=B

      Return Routability Check    -------->
      path_response(cookie)
      Src-IP=B
      Dst-IP=Z

                                             <<< IP Address B
                                                 Verified >>


                                  <========        Application Data
                                                       Src-IP=Z
                                                       Dst-IP=B
]]></artwork>
      </figure>
    </section>
    <section anchor="security-and-privacy-considerations">
      <name>Security and Privacy Considerations</name>
      <t>Note that the return routability checks do not protect against flooding of
third-parties if the attacker is on-path, as the attacker can redirect the
return routability checks to the real peer (even if those datagrams are
cryptographically authenticated).  On-path adversaries can, in general, pose a
harm to connectivity.</t>
      <t>When using DTLS 1.3, peers <bcp14>SHOULD</bcp14> avoid using the same CID on multiple network
paths, in particular when initiating connection migration or when probing a new
network path, as described in <xref target="path-validation"/>, as an adversary can otherwise
correlate the communication interaction across those different paths.  DTLS 1.3
provides mechanisms to ensure that a new CID can always be used.  In
general, an endpoint should proactively send a RequestConnectionId message to ask for new
CIDs as soon as the pool of spare CIDs is depleted (or goes below a threshold).
Also, in case a peer might have exhausted available CIDs, a migrating endpoint
could include NewConnectionId in packets sent on the new path to make sure that
the subsequent path validation can use fresh CIDs.</t>
      <t>Note that DTLS 1.2 does not offer the ability to request new CIDs during the session lifetime since CIDs have the same life-span
of the connection.  Therefore, deployments that use DTLS in multihoming
environments <bcp14>SHOULD</bcp14> refuse to use CIDs with DTLS 1.2
and switch to DTLS 1.3 if the correlation privacy threat is a concern.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t><cref anchor="to-be-removed">RFC Editor: please replace RFCthis with this RFC number and remove this note.</cref></t>
      <section anchor="new-tls-contenttype">
        <name>New TLS ContentType</name>
        <t>IANA is requested to allocate an entry to the TLS <tt>ContentType</tt>
registry, for the <tt>return_routability_check(TBD2)</tt> message defined in
this document. The <tt>return_routability_check</tt> content type is only
applicable to DTLS 1.2 and 1.3.</t>
      </section>
      <section anchor="new-tls-extensiontype">
        <name> New TLS ExtensionType</name>
        <t>IANA is requested to allocate the extension code point (TBD1) for the <tt>rrc</tt>
extension to the <tt>TLS ExtensionType Values</tt> registry as described in
<xref target="tbl-ext"/>.</t>
        <table align="left" anchor="tbl-ext">
          <name>rrc entry in the TLS ExtensionType Values registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Extension Name</th>
              <th align="left">TLS 1.3</th>
              <th align="left">DTLS-Only</th>
              <th align="left">Recommended</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD1</td>
              <td align="left">rrc</td>
              <td align="left">CH, SH</td>
              <td align="left">Y</td>
              <td align="left">N</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="new-rrc-message-type-sub-registry">
        <name>New RRC Message Type Sub-registry</name>
        <t>IANA is requested to create a new sub-registry for RRC Message Types in the TLS
Parameters registry <xref target="IANA.tls-parameters"/>, with the policy "expert review"
<xref target="RFC8126"/>.</t>
        <t>Each entry in the registry must include:</t>
        <dl newline="true">
          <dt>Value:</dt>
          <dd>
            <t>A number in the range from 0 to 255 (decimal)</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>a brief description of the message</t>
          </dd>
          <dt>DTLS-Only:</dt>
          <dd>
            <t>RRC is only available in DTLS, therefore this column will be set to <tt>Y</tt> for
all the entries in this registry</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>a reference document</t>
          </dd>
        </dl>
        <t>The initial state of this sub-registry is as follows:</t>
        <table align="left" anchor="tbl-rrc-mt">
          <name>Initial Entries in RRC Message Type registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">DTLS-Only</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">path_challenge</td>
              <td align="left">Y</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">path_response</td>
              <td align="left">Y</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">path_drop</td>
              <td align="left">Y</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="open-issues">
      <name>Open Issues</name>
      <t>Issues against this document are tracked at https://github.com/tlswg/dtls-rrc/issues</t>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank
Hanno Becker,
<contact fullname="Hanno Böck"/>,
<contact fullname="Manuel Pégourié-Gonnard"/>,
Martin Thomson,
Mohit Sahni and
Rich Salz
for their input to this document.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC9146">
          <front>
            <title>Connection Identifier for DTLS 1.2</title>
            <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="A. Kraus" initials="A." surname="Kraus"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document specifies the Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS) protocol version 1.2.</t>
              <t>A CID is an identifier carried in the record layer header that gives the recipient additional information for selecting the appropriate security association. In "classical" DTLS, selecting a security association of an incoming DTLS record is accomplished with the help of the 5-tuple. If the source IP address and/or source port changes during the lifetime of an ongoing DTLS session, then the receiver will be unable to locate the correct security context.</t>
              <t>The new ciphertext record format with the CID also provides content type encryption and record layer padding.</t>
              <t>This document updates RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9146"/>
          <seriesInfo name="DOI" value="10.17487/RFC9146"/>
        </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="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="RFC8446">
          <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="IANA.tls-parameters" target="http://www.iana.org/assignments/tls-parameters">
          <front>
            <title>Transport Layer Security (TLS) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <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>
      </references>
      <references>
        <name>Informative 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="I-D.ietf-uta-tls13-iot-profile">
          <front>
            <title>TLS/DTLS 1.3 Profiles for the Internet of Things</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Limited</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This document is a companion to RFC 7925 and defines TLS/DTLS 1.3
   profiles for Internet of Things devices.  It also updates RFC 7925
   with regards to the X.509 certificate profile.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls13-iot-profile-06"/>
        </reference>
      </references>
    </references>
    <?line 749?>

<section anchor="history">
      <name>History</name>
      <t><cref>RFC EDITOR: PLEASE REMOVE THIS SECTION</cref></t>
      <t>draft-ietf-tls-dtls-rrc-08</t>
      <ul spacing="normal">
        <li>Refresh document while queueing for WGLC</li>
      </ul>
      <t>draft-ietf-tls-dtls-rrc-07</t>
      <ul spacing="normal">
        <li>Fix ambiguous wording around timer settings</li>
        <li>Clarify that the detailed protocol flow describes "basic" RRC</li>
      </ul>
      <t>draft-ietf-tls-dtls-rrc-06</t>
      <ul spacing="normal">
        <li>Add Achim as co-author</li>
        <li>Added IANA registry for RRC message types (#14)</li>
        <li>Small fix in the path validation algorithm (#15)</li>
        <li>Renamed <tt>path_delete</tt> to <tt>path_drop</tt> (#16)</li>
        <li>Added an "attacker model" section (#17, #31, #44, #45, #48)</li>
        <li>Add criteria for choosing between basic and enhanced path validation (#18)</li>
        <li>Reorganise Section 4 a bit (#19)</li>
        <li>Small fix in Path Response/Drop Requirements section (#20)</li>
        <li>Add privacy considerations wrt CID reuse (#30)</li>
      </ul>
      <t>draft-ietf-tls-dtls-rrc-05</t>
      <ul spacing="normal">
        <li>Added text about off-path packet forwarding</li>
      </ul>
      <t>draft-ietf-tls-dtls-rrc-04</t>
      <ul spacing="normal">
        <li>Re-submitted draft to fix references</li>
      </ul>
      <t>draft-ietf-tls-dtls-rrc-03</t>
      <ul spacing="normal">
        <li>Added details for challenge-response exchange</li>
      </ul>
      <t>draft-ietf-tls-dtls-rrc-02</t>
      <ul spacing="normal">
        <li>Undo the TLS flags extension for negotiating RRC, use a new extension type</li>
      </ul>
      <t>draft-ietf-tls-dtls-rrc-01</t>
      <ul spacing="normal">
        <li>Use the TLS flags extension for negotiating RRC</li>
        <li>Enhanced IANA consideration section</li>
        <li>Expanded example section</li>
        <li>
          <t>Revamp message layout:
          </t>
          <ul spacing="normal">
            <li>Use 8-byte fixed size cookies</li>
            <li>Explicitly separate path challenge from response</li>
          </ul>
        </li>
      </ul>
      <t>draft-ietf-tls-dtls-rrc-00</t>
      <ul spacing="normal">
        <li>Draft name changed after WG adoption</li>
      </ul>
      <t>draft-tschofenig-tls-dtls-rrc-01</t>
      <ul spacing="normal">
        <li>Removed text that overlapped with draft-ietf-tls-dtls-connection-id</li>
      </ul>
      <t>draft-tschofenig-tls-dtls-rrc-00</t>
      <ul spacing="normal">
        <li>Initial version</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V923IbR7Lge31FLRWxIm0AEinJ9tCy51AUNWIc3Vakx+t1
eMQCugD2UaMbp6ubFIbUfMu8nh/YD5j5sc1bVVdfQFG2d2IXEZaJRl2ysvJe
Wdnj8Vhd7OsHSlVpldl9/dZWdZnrt0VdmWmapdVaH57b2Xs9L0r99PTFid6d
7GmTJ/7LA2Wm09LCIPRgU3+VFLPcLGGGpDTzapzaaj6uMjdO8J+ynI0zU1lX
qRn8b1GU633tqkTNitzZ3NVuX1dlbZWrp8vUubTIq/UKBjs+On2m6lWCfff1
Vw8efj3Sf9h9+LVS6aqkPq7au3//D/f3lCmt2dcndlaXAJW6LMr3i7KoV/sa
4Fbv7RqeJLyKkX779nCkD4+fKuUqWOw7kxU5TLe2Tq3SfaV1OZ/ZxFXrTJ5q
XRWz6M80T2xe+QeuKKvSzl34vl62vlZlOguNZ8VyCX3Dr2mepXmYBvC4NKtV
mi/4iTJ1dV6UCNMYmkKv5xN96mbnxdzm6QIea82If27y3Lrub2WBS7BJWhUl
PbBLk2b7+pxaT6rQ+t8Wyw+T3FbNRAcT/e+lqV00x8HsPF1GT2Uwg4/f49P+
KKcT/axwzlRpNM7pebE0rvVDUS5Mnv4Vvhb5vn6R5qYs4jkq6jKZc5d/y6jB
BHopBdiELUcUnRy9eLavt94+O6zOU7el1Hg81mYKG2BmlVKn8BAxXOMGaLey
s3SeAs6MLpmuy4iuZ4EvamdhLbBxeWU/VLqYAzBWHRaAwRmCq4+f6m2gph1s
AnPVs4r6QSv91FRmUZqlPi1N7lZAKPqFWdsyUKreRpLcUauyALoqMn1hS2QA
FzgRmHDCK1mmSZJZpe7o47wqi6Sm6ZU6zvXWLDPAODOTbQmNO5shePkCluf8
ZNEaTA6LAmLEFsTbpZ0Bi+jUKTOD56ssdec20ZdpdU5LObfZShavH42repXZ
kU4ndgL0X5czq4/faJMkpXVu5B/hgkeqCmv3qxzpBKQB7CHjL+qIK45/w24T
DVLG5AvYqqpQuLX6kSYA9AyWcQ4MY3NCudEXpgThs4bVGIdYLACfBHKWzm2V
Lq1fAq5ZOUvSBiYAHOLT4+LUI2mkXx2cwjhTYHZEEsyKvAswEUpcZu1qDbBe
pDPgJPUaupfafjCAOQAUcJvVidUW1nNeuEovCyEsXOGyzqp0fE7Yh8l/hAGB
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

-->

</rfc>
