<?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.17 (Ruby 3.1.2) -->
<?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-07" category="std" consensus="true" submissionType="IETF" updates="6347, 9147" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.2 -->
  <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-07"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig" role="editor">
      <organization>Arm Limited</organization>
      <address>
        <email>hannes.tschofenig@arm.com</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>Arm Limited</organization>
      <address>
        <email>thomas.fossati@arm.com</email>
      </address>
    </author>
    <date year="2022" month="September" day="09"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>DTLS, RRC, CID</keyword>
    <abstract>
      <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>
    <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>
      <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">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="T. Fossati" initials="T." surname="Fossati">
              <organization/>
            </author>
            <author fullname="A. Kraus" initials="A." surname="Kraus">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <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">
              <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>
        <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="IANA.tls-parameters" target="https://www.iana.org/assignments/tls-parameters">
          <front>
            <title>Transport Layer Security (TLS) Parameters</title>
            <author>
              <organization abbrev="IANA">Internet Assigned Numbers Authority</organization>
            </author>
            <date day="23" month="August" year="2005"/>
          </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">
              <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>
      </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">
              <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="I-D.ietf-uta-tls13-iot-profile">
          <front>
            <title>TLS/DTLS 1.3 Profiles for the Internet of Things</title>
            <author fullname="Hannes Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Thomas Fossati">
              <organization>Arm Limited</organization>
            </author>
            <date day="6" month="July" year="2022"/>
            <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.

Discussion Venues

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

   Source for this draft and an issue tracker can be found at
   https://github.com/thomas-fossati/draft-tls13-iot.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls13-iot-profile-05"/>
        </reference>
      </references>
    </references>
    <section anchor="history">
      <name>History</name>
      <t><cref>RFC EDITOR: PLEASE REMOVE THIS SECTION</cref></t>
      <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:
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
fQAA

-->

</rfc>
