<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.4 (Ruby 2.6.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-constrained-join-proxy-13" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.1 -->
  <front>
    <title abbrev="Join Proxy">Constrained Join Proxy for Bootstrapping Protocols</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-13"/>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="P." surname="van der Stok" fullname="Peter van der Stok">
      <organization>vanderstok consultancy</organization>
      <address>
        <email>stokcons@bbhmail.nl</email>
      </address>
    </author>
    <author initials="P." surname="Kampanakis" fullname="Panos Kampanakis">
      <organization>Cisco Systems</organization>
      <address>
        <email>pkampana@cisco.com</email>
      </address>
    </author>
    <date year="2022" month="October" day="24"/>
    <area>Internet</area>
    <workgroup>anima Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document extends the work of Bootstrapping Remote Secure Key
Infrastructures (BRSKI) by replacing the (stateful) TLS Circuit proxy between
Pledge and Registrar with a stateless or stateful Circuit proxy using CoAP
which is called the constrained Join Proxy. The constrained Join Proxy is a mesh neighbor of the
Pledge and can relay a DTLS session originating from a Pledge with only link-local
addresses to a Registrar which is not a mesh neighbor of the
Pledge.</t>
      <t>Like the BRSKI Circuit proxy, this constrained Join Proxy eliminates the need of
Pledges to have routeable IP addresses before enrolment by utilizing link-local
addresses. Use of the constrained Join Proxy also eliminates the need of the Pledge
to authenticate to the network or perform network-wide Registrar discover before enrolment.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-anima-constrained-join-proxy/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        anima Working Group mailing list (<eref target="mailto:anima@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/anima/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/anima-wg/constrained-join-proxy"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol described in <xref target="RFC8995"/>
provides a solution for a secure zero-touch (automated) bootstrap of new (unconfigured) devices.
In the context of BRSKI, new devices, called "Pledges", are equipped with a factory-installed Initial Device Identifier (IDevID) (see <xref target="ieee802-1AR"/>), and are enrolled into a network.
BRSKI makes use of Enrollment over Secure Transport (EST) <xref target="RFC7030"/>
with <xref target="RFC8366"/> vouchers to securely enroll devices. A Registrar provides the security anchor of the network to which a Pledge enrolls.</t>
      <t>In this document, BRSKI is extended such that a Pledge connects to "Registrars" via a constrained Join Proxy.
In particular, this solution is intended to support mesh networks as described in <xref target="RFC4944"/>.</t>
      <t>The constrained Join Proxy as specified in this document is one of the Join Proxy
options referred to in <xref target="RFC8995"/> section 2.5.2 as future work.</t>
      <t>A complete specification of the terminology is pointed at in <xref target="Terminology"/>.</t>
      <t>The specified solutions in <xref target="RFC8995"/> and <xref target="RFC7030"/> are based on POST or GET requests to the EST resources (/cacerts, /simpleenroll, /simplereenroll, /serverkeygen, and /csrattrs), and the brski resources (/requestvoucher, /voucher_status, and /enrollstatus). These requests use https and may be too large in terms of code space or bandwidth required for constrained devices.
Constrained devices which may be part of constrained networks <xref target="RFC7228"/>, typically implement the IPv6 over Low-Power Wireless personal Area Networks (6LoWPAN) <xref target="RFC4944"/> and Constrained Application Protocol (CoAP) <xref target="RFC7252"/>.</t>
      <t>CoAP can be run with the Datagram Transport Layer Security (DTLS) <xref target="RFC6347"/> as a security protocol for authenticity and confidentiality of the messages.
This is known as the "coaps" scheme.
A constrained version of EST, using CoAP and DTLS, is described in <xref target="RFC9148"/>.</t>
      <t>The <xref target="I-D.ietf-anima-constrained-voucher"/> extends <xref target="RFC9148"/> with BRSKI artifacts such as voucher, request voucher, and the protocol extensions for constrained Pledges that use CoAP.</t>
      <t>However, in networks that require authentication, such as those using <xref target="RFC4944"/>,
the Pledge will not be IP routable over the mesh network
until it is authenticated to the mesh network. A new Pledge can only
initially use a link-local IPv6 address to communicate with a
mesh neighbor <xref target="RFC6775"/> until it receives the necessary network
configuration parameters. The Pledge receives these configuration
parameters from the Registrar. When the Registrar is not a direct
neighbor of the Registrar but several hops away, the Pledge
discovers a neighbor that is operating the constrained Join Proxy, which
forwards DTLS protected messages between Pledge and Registrar.
The constrained Join Proxy must be enrolled
previously such that the
message from constrained Join Proxy to Registrar can be routed over
one or more hops.</t>
      <t>An enrolled Pledge can act as constrained Join Proxy between other Pledges and the enrolling Registrar.</t>
      <t>Two modes of the constrained Join Proxy are specified:</t>
      <artwork><![CDATA[
1 A stateful Join Proxy that locally stores UDP connection state:
  IP addresses (link-local with interface and non-link-local and UDP port-numbers)
  during the connection.

2 A stateless Join Proxy where the connection state
  is replaced by a second layer of CoAP header in the
  UDP messages between constrained Join Proxy and Registrar.
]]></artwork>
      <t>This document is very much inspired by text published earlier in <xref target="I-D.kumar-dice-dtls-relay"/>.
<xref target="I-D.richardson-anima-state-for-joinrouter"/> outlined the various options for building a constrained Join Proxy.
<xref target="RFC8995"/> adopted only the Circuit Proxy method (1), leaving the other methods as future work.</t>
      <t>Similar to the difference between storing and non-storing Modes of
Operations (MOP) in RPL <xref target="RFC6550"/>, the stateful and stateless modes differ in the way that they store
the state required to forward the return packet to the Pledge.
In the stateful method, the
return forward state is stored in the Join Proxy.
In the stateless method, the return forward state is stored in the network using the CoAP extended token in a way identical to that described in <xref target="RFC9031"/>.</t>
    </section>
    <section anchor="Terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>The following terms are defined in <xref target="RFC8366"/>, and are used
identically as in that document: artifact, imprint, domain, Join
Registrar/Coordinator (JRC), Pledge, and Voucher.</t>
      <t>In this document, the term "Registrar" is used throughout instead of "Join
Registrar/Coordinator (JRC)".</t>
      <t>The "Constrained Join Proxy" enables a Pledge that is multiple hops away from the Registrar, to execute the BRSKI protocol <xref target="RFC8995"/> using a secure channel.</t>
      <t>The term "Join Proxy" is used interchangeably with the term "constrained Join Proxy" throughout this document.</t>
      <t>The <xref target="RFC8995"/> Circuit Proxy is referred to as a TCP circuit Join Proxy.</t>
    </section>
    <section anchor="constrained-join-proxy-functionality">
      <name>constrained Join Proxy functionality</name>
      <t>As depicted in the <xref target="fig-net"/>, the Pledge (P), in a network such as a Low-Power and Lossy Network (LLN) mesh
 <xref target="RFC7102"/> can be more than one hop away from the Registrar (R) and not yet authenticated into the network.</t>
      <t>In this situation, the Pledge can only communicate one-hop to its nearest neighbor, the constrained Join Proxy (J) using link-local IPv6 addresses.
However, the Pledge needs to communicate using end-to-end security with a Registrar in order to onboard, authenticate and get the relevant system/network parameters.
If the Pledge, knowing the IP-address of the Registrar, initiates a DTLS connection to the Registrar, then the packets are dropped at the constrained Join Proxy since the Pledge is not yet admitted to the network or there is no IP routability to the Pledge for any returned messages from the Registrar.</t>
      <figure anchor="fig-net">
        <name>multi-hop enrollment.</name>
        <artset>
          <artwork type="svg" align="left"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="352" viewBox="0 0 352 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 24,48 L 24,96" fill="none" stroke="black"/>
              <path d="M 56,48 L 56,96" fill="none" stroke="black"/>
              <path d="M 128,64 L 128,112" fill="none" stroke="black"/>
              <path d="M 168,64 L 168,112" fill="none" stroke="black"/>
              <path d="M 208,64 L 208,112" fill="none" stroke="black"/>
              <path d="M 240,64 L 240,112" fill="none" stroke="black"/>
              <path d="M 312,64 L 312,112" fill="none" stroke="black"/>
              <path d="M 336,64 L 336,112" fill="none" stroke="black"/>
              <path d="M 24,48 L 56,48" fill="none" stroke="black"/>
              <path d="M 56,64 L 88,64" fill="none" stroke="black"/>
              <path d="M 128,64 L 168,64" fill="none" stroke="black"/>
              <path d="M 208,64 L 240,64" fill="none" stroke="black"/>
              <path d="M 312,64 L 336,64" fill="none" stroke="black"/>
              <path d="M 168,80 L 208,80" fill="none" stroke="black"/>
              <path d="M 24,96 L 56,96" fill="none" stroke="black"/>
              <path d="M 104,96 L 128,96" fill="none" stroke="black"/>
              <path d="M 128,112 L 168,112" fill="none" stroke="black"/>
              <path d="M 208,112 L 240,112" fill="none" stroke="black"/>
              <path d="M 312,112 L 336,112" fill="none" stroke="black"/>
              <path d="M 88,64 L 104,96" fill="none" stroke="black"/>
              <g class="text">
                <text x="144" y="36">multi-hop</text>
                <text x="204" y="36">mesh</text>
                <text x="276" y="52">IPv6</text>
                <text x="40" y="68">R</text>
                <text x="276" y="68">subnet</text>
                <text x="144" y="84">6LR</text>
                <text x="224" y="84">J</text>
                <text x="276" y="84">........</text>
                <text x="320" y="84">P</text>
                <text x="272" y="100">clear</text>
                <text x="40" y="132">Registrar</text>
                <text x="196" y="132">Join</text>
                <text x="240" y="132">Proxy</text>
                <text x="324" y="132">Pledge</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                    multi-hop mesh
         .---.                         IPv6
         | R +---.    +----+    +---+ subnet +--+
         |   |    \   |6LR +----+ J |........|P |
         '---'     `--+    |    |   | clear  |  |
                      +----+    +---+        +--+
       Registrar             Join Proxy     Pledge


]]></artwork>
        </artset>
      </figure>
      <t>Without a routeable IPv6 address, the Pledge (P) cannot exchange IPv6/UDP/DTLS traffic
with the Registrar (R), over multiple hops in the network.</t>
      <t>Furthermore, the Pledge may not even be able to discover the IP address of the Registrar over multiple hops to initiate a DTLS connection and perform authentication.</t>
      <t>To overcome the problems with non-routability of DTLS packets and the discovery of the destination address of the Registrar, the constrained Join Proxy is introduced.
This constrained Join Proxy functionality is also (auto) configured into all authenticated devices in the network which may act as a constrained Join Proxy for
Pledges.</t>
      <t>The constrained Join Proxy allows for routing of the packets from the Pledge using IP routing to the intended Registrar.
An authenticated constrained Join Proxy can discover the routable IP address of the Registrar over multiple hops.
The following <xref target="jr-spec"/> specifies the two constrained Join Proxy modes.
A comparison is presented in <xref target="jr-comp"/>.</t>
      <t>When a mesh network is set up, it consists of a Registrar and a set of connected Pledges.
No constrained Join Proxies are present.
Only some of these Pledges may be neighbors of the Registrar.
Others would need for their traffic to be routed across one or more enrolled devices to reach the Registrar.</t>
      <t>The desired state of the installation is a network with a Registrar and all Pledges becoming enrolled devices.
Some of these enrolled devices can act as constrained Join Proxies.
Pledges can only employ link-local communication until they are enrolled.
A Pledge will regularly try to discover a constrained Join Proxy or a Registrar with link-local discovery requests.
The Pledges which are neighbors of the Registrar will discover the Registrar and be enrolled following the constrained BRSKI protocol.
An enrolled device can act as constrained Join Proxy.
The Pledges which are not a neighbor of the Registrar will eventually discover a constrained Join Proxy and follow the constrained BRSKI protocol to be enrolled.
While this goes on, more and more constrained Join Proxies with a larger hop distance to the Registrar will emerge.
The network should be configured such that at the end of the enrollment process, all Pledges have discovered a neighboring constrained Join Proxy or the Registrar, and all Pledges are enrolled.</t>
      <t>The constrained Join Proxy is as a packet-by-packet proxy for UDP packets between Pledge and Registrar.
The constrained BRSKI protocol between Pledge and Registrar described in <xref target="I-D.ietf-anima-constrained-voucher"/> which this Join Proxy supports uses UDP messages with DTLS payload, but the Join Proxy as described here is unaware of this payload.
It can therefore potentially also work for other UDP based protocols as long as they are agnostic to (or can be made to work with) the change of IP header by the constrained Join Proxy.</t>
      <t>In both Stateless and Stateful mode, the Join Proxy needs to be configured with
or dynamically discover a Registrar to perform its service.
This specification does not discuss how a constrained Join Proxy selects a Registrar when it discovers 2 or more.</t>
    </section>
    <section anchor="jr-spec">
      <name>constrained Join Proxy specification</name>
      <t>A Join Proxy can operate in two modes:</t>
      <ul spacing="normal">
        <li>Stateful mode</li>
        <li>Stateless mode</li>
      </ul>
      <t>The advantages and disadvantages of the two modes are presented in <xref target="jr-comp"/>.</t>
      <t>A Registrar MUST implement both the stateful mode and the Stateless mode, but an operator MAY configure it to announce only one.
A Join Proxy MUST implement the stateless mode, but SHOULD implement the stateful mode if it has sufficient memory.</t>
      <t>For a Join Proxy to be operational, the node on which it is running has to be
able to talk to a Registrar (exchange UDP messages with it).
This can happen fully automatically by the Join Proxy node first enrolling itself as a Pledge, and then learning the IP address, the UDP port and the mode(s) (Stateful and/or Stateless) of the Registrar, through a discovery mechanism such as those described in Section 6.</t>
      <t>In mesh LLN networks like those based upon RPL (<xref target="RFC6550"/>), it would not be unusual for the 6LBR (the DODAG root) to have a wired network interface on which the Registrar can be found.
Or the Registrar may in fact be co-located with the 6LBR.
This 6LBR then becomes the first Join Proxy, and additional nodes attach to it in a concentric fashion.</t>
      <t>Other methods, such as provisioning the Join Proxy are out of scope of this document but equally feasible.</t>
      <t>Once the Join Proxy is operational, its mode is determined by the mode of the Registrar.
If the Registrar offers both Stateful and Stateless mode, the Join Proxy MUST use the stateless mode.</t>
      <t>Independent of the mode of the Join Proxy, the Pledge first discovers (see Section 6) and selects the most appropriate Join Proxy.
From the discovery, the Pledge learns the Join Proxies link-local scope IP address and UDP (join) port.
This discovery can also be based upon <xref target="RFC8995"/> section 4.1.
If the discovery method does not support discovery of the join-port, then the Pledge assumes the default CoAP over DTLS UDP port (5683).</t>
      <section anchor="stateful">
        <name>Stateful Join Proxy</name>
        <t>In stateful mode, the Join Proxy acts as a UDP "circuit" proxy that does not change the UDP payload (data octets according to <xref target="RFC768"/>) but only rewrites the IP and UDP headers of each packet it receives from Pledge and Registrar.</t>
        <t>The stateful Join Proxy operates as a 'pseudo' UDP circuit proxy creating and utilizing connection mapping state to rewrite the IP address and UDP port number packet header fields of UDP packets that it forwards between Pledge and Registrar.
<xref target="fig-statefull2"/> depiects how this state is used.</t>
        <figure anchor="fig-statefull2">
          <name>constrained stateful joining message flow with Registrar address known to Join Proxy.</name>
          <artwork align="left"><![CDATA[
+------------+------------+-------------+--------------------------+
|   Pledge   | Join Proxy |  Registrar  |          Message         |
|    (P)     |     (J)    |    (R)      | Src_IP:port | Dst_IP:port|
+------------+------------+-------------+-------------+------------+
|      --ClientHello-->                 |   IP_P:p_P  | IP_Jl:p_Jl |
|                    --ClientHello-->   |   IP_Jr:p_Jr| IP_R:5684  |
|                                       |             |            |
|                    <--ServerHello--   |   IP_R:5684 | IP_Jr:p_Jr |
|                            :          |             |            |
|       <--ServerHello--     :          |   IP_Jl:p_Jl| IP_P:p_P   |
|               :            :          |             |            |
|              [DTLS messages]          |       :     |    :       |
|               :            :          |       :     |    :       |
|        --Finished-->       :          |   IP_P:p_P  | IP_Jl:p_Jl |
|                      --Finished-->    |   IP_Jr:p_Jr| IP_R:5684  |
|                                       |             |            |
|                      <--Finished--    |   IP_R:5684 | IP_Jr:p_Jr |
|        <--Finished--                  |   IP_Jl:p_Jl| IP_P:p_P   |
|              :             :          |      :      |     :      |
+---------------------------------------+-------------+------------+
IP_P:p_P = Link-local IP address and port of Pledge (DTLS Client)
IP_R:5684 = Routable IP address and coaps port of Registrar
IP_Jl:p_Jl = Link-local IP address and join-port of Join Proxy
IP_Jr:p_Jr = Routable IP address and client port of Join Proxy
]]></artwork>
        </figure>
        <t>Because UDP does not have the notion of a connection, this document calls this a 'pseudo' connection, whose establishment is solely triggered by receipt of a packet from a Pledge with an IP_p%IF:p_P source for which no mapping state exists, and that is
termined by a connection expiry timer E.</t>
        <t>If an untrusted Pledge that can only use link-local addressing wants to contact a trusted Registrar, and the Registrar is more than one hop away, it sends its DTLS messages to the Join Proxy.</t>
        <t>When a proxy receives an ICMP error message from the Registrar or Plege, for which mapping state exist, the proxy SHOULD map the ICMP message as it would map a UDP message and forward the ICMP message to the Registrar / Pledge.
Processing of ICMP messages SHOULD NOT reset the connection expiry timer.</t>
        <t>To protect itself and the Registrar against malfunctioning Pledges and or denial of service attacks, the join proxy SHOULD limit the number of simultaneous mapping states on per ip address to 2 and the number of simultaneous mapping states per interface to 10.
When mapping state can not be built due to exhausted state, the proxy SHOULD return an  ICMP error (1), "Destination Port Unreachable" message with code (1), "Communication with destination  administratively prohibited".</t>
      </section>
      <section anchor="jpy-encapsulation-protocol">
        <name>Stateless Join Proxy</name>
        <t>Stateless Join Proxy operation eliminates the need and complexity to maintain per UDP connection mapping state on the proxy and the state machinery to build, maintain and
remove this mapping state.
It also removes the need to protect this mapping state against DoS attacks and may also reduce memory and CPU requirements on the proxy.</t>
        <t>Stateless Join Proxy operations works by encapsulating the DTLS messages into a new CoAP header <xref target="RFC7252"/>.
This new CoAP header is designed to be as minimalistic as possible.
The use of CoAP here costs a XXX bytes more than a custom encapsulation, but simplies much of the operation, as well as permitting the result to pass through CoAP proxies, CoAP to HTTP proxies, and other mechanisms that might be introduced into a network.
This also eliminates custom code that is only rarely used, which may reduce bugs.</t>
        <t>The CoAP payload is configured much as <xref section="8.1.1" sectionFormat="comma" target="RFC9031"/> specifies:</t>
        <ul spacing="normal">
          <li>The request method is POST.</li>
          <li>The type is Confirmable (CON).</li>
          <li>The Proxy-Scheme option is set to "coap".</li>
          <li>No Uri_Host option is included, as none is technically required.</li>
          <li>No Uri-Path option is included.</li>
          <li>The payload is the DTLS payload as received from the Pledge.</li>
          <li>An extended token <xref target="RFC8974"/> is included to contain some encrypted state that allows replies to be returned to the Pledge.</li>
        </ul>
        <t><xref target="coap-breakout"/> shows an example CoAP header, assuming a 16-byte extended token, with the resulting overhead of 28 bytes.</t>
        <t>When the Join Proxy receives a UDP message from a Pledge, it encodes the Pledges link-local IP address, interface and UDP (source) port of the packet into the extended token.
The result is sent to the Registrar from a fixed source UDP port.</t>
        <t>As described in <xref section="5.3.1" sectionFormat="comma" target="RFC7252"/>, when the Registrar sends packets for the Pledge, it MUST return the token field unchanged.
This allows the Join Proxy to decode the saved Pledge state, and reconstruct the Pledges link-local IP address, interace and UDP (destination) port for the return packet.
<xref target="fig-stateless"/> shows this per-packet mapping on the Join Proxy.</t>
        <t>The Registrar transiently stores the extended token field information in case it needs to generate additional messages as a result of DTLS processing.</t>
        <t>The Registrar uses the payload field to execute the Registrar functionality.</t>
        <t>The Registrar SHOULD NOT assume that it can decode the Header Field, it should simply repeat it when responding.
The Header contains the original source link-local address and port of the Pledge from the transient state stored earlier and the Contents field contains the DTLS payload.</t>
        <t>On receiving the CoAP message, the Join Proxy processes the CoAP header.
It uses the extended token field to route the payload as a DTLS message to the Pledge.</t>
        <t>In the stateless Join Proxy mode, both the Registrar and the Join Proxy use discoverable UDP join-ports.
For the Join Proxy this may be a default CoAP port.</t>
        <figure anchor="fig-stateless">
          <name>constrained stateless joining message flow.</name>
          <artwork align="left"><![CDATA[
+--------------+------------+---------------+-----------------------+
|    Pledge    | Join Proxy |    Registrar  |        Message        |
|     (P)      |     (J)    |      (R)      |Src_IP:port|Dst_IP:port|
+--------------+------------+---------------+-----------+-----------+
|      --ClientHello-->                     | IP_P:p_P  |IP_Jl:p_Jl |
|                    --JPY[H(IP_P:p_P),-->  | IP_Jr:p_Jr|IP_R:p_Ra  |
|                          C(ClientHello)]  |           |           |
|                    <--JPY[H(IP_P:p_P),--  | IP_R:p_Ra |IP_Jr:p_Jr |
|                         C(ServerHello)]   |           |           |
|      <--ServerHello--                     | IP_Jl:p_Jl|IP_P:p_P   |
|              :                            |           |           |
|          [ DTLS messages ]                |     :     |    :      |
|              :                            |     :     |    :      |
|      --Finished-->                        | IP_P:p_P  |IP_Jr:p_Jr |
|                    --JPY[H(IP_P:p_P),-->  | IP_Jl:p_Jl|IP_R:p_Ra  |
|                          C(Finished)]     |           |           |
|                    <--JPY[H(IP_P:p_P),--  | IP_R:p_Ra |IP_Jr:p_Jr |
|                         C(Finished)]      |           |           |
|      <--Finished--                        | IP_Jl:p_Jl|IP_P:p_P   |
|              :                            |     :     |    :      |
+-------------------------------------------+-----------+-----------+
IP_P:p_P = Link-local IP address and port of the Pledge
IP_R:p_Ra = Routable IP address and join-port of Registrar
IP_Jl:p_Jl = Link-local IP address and join-port of Join Proxy
IP_Jr:p_Jr = Routable IP address and port of Join Proxy

JPY[H(),C()] = Join Proxy message with header H and content C

]]></artwork>
        </figure>
      </section>
      <section anchor="stateless-jpy">
        <name>Constraucting the extended token</name>
        <t>The Join Proxy cannot decrypt the DTLS payload and has no knowledge of the transported media type.
The contents are DTLS encrypted.</t>
        <t>The extended token payload is to be reflected by the Registrar when sending reply packets to the Join Proxy.
The extended token content is not standardized, but this section provides an non-normative example.</t>
        <t>As explained in <xref section="5.2" sectionFormat="comma" target="RFC8974"/>, the Join Proxy SHOULD encrypt the extended token with a symmetric key known only to the Join Proxy.
This key need not persist on a long term basis, and MAY be changed periodically.</t>
        <t>This is intended to be identical to the mechanism described in <xref section="7.1" sectionFormat="of" target="RFC9031"/>.
However, since the CoAP layer is inside of the DTLS layer (which is between the Pledge and the Registrar), it is not possible for the Join Proxy to act as an actual CoAP proxy.</t>
        <t>The context that is stored into the extended token might be constructed with the following CDDL grammar:
(This is illustrative only: the contents are not subject to standardization)</t>
        <artwork><![CDATA[
    pledge_context_message = [
      family:  uint .bits 1,
      ifindex: uint .bits 8,
      srcport: uint .bits 16,
      iid:     bstr .bits 64,
    ]
]]></artwork>
        <t>This results in a total of 96 bits, or 12 bytes.
The structure stores the srcport, the originating IPv6 Link-Local address, the IPv4/IPv6 family (as a single bit) and an ifindex to provide the link-local scope.
This fits nicely into a single AES128 CBC block for instance, resulting in a 16 byte token.
The Join Proxy MUST maintain the same context block for all communications from the same Pledge.
This implies that any encryption key either does not change during the communication, or that when it does, it is acceptable to break any onboarding connections which have not yet completed.
If using a context parameter like defined above, it should be easy for the Join Proxy to meet this requirement without maintaining any local state about the Pledge.</t>
        <t>Note: when IPv6 is used only the lower 64-bits of the origin IP need to be recorded, because they are all IPv6 Link-Local addresses, so the upper 64-bits are just "fe80::". For IPv4, a Link-Local IPv4 address <xref target="RFC3927"/> would be used, and it would fit into 64-bits.
On media where the IID is not 64-bits, a different arrangement will be necessary.</t>
        <t>For the join messages relayed to a particular Registrar, the Join Proxy SHOULD use the same UDP source port for all messages related to all Pledges.
A Join Proxy MAY change the UDP source port, but doing so creates more local state.
But, a Join Proxy with multiple CPUs (unlikely in a constrained system, but possible in some future) could, for instance, use different source port numbers to demultiplex connections across CPUs.</t>
        <section anchor="processing-by-registrar">
          <name>Processing by Registrar</name>
          <t>On reception of a CoAP encapsulated join message by the Registrar, the Registrar processes the CoAP header and extracts the extended token.
The extended token will need to be provided as input to a DTLS library <xref target="RFC9147"/>, as the 5-tuple of the UDP connection alone does not provide enough context for the Registrar to pick an appropriate context.
Note that the socket will need to be used for multiple DTLS flows, which is atypical for how DTLS usually uses sockets.</t>
          <t>As an alternative, the Registrar could split out the state processing from the DTLS processing, creating new sockets that it maintains, but this just duplicates state across many places.
It may still be an advantage for some architectures.</t>
          <t>Examples are shown in <xref target="examples"/>.</t>
          <t>At the CoAP level, within the Constrained BRSKI and the EST-COAP <xref target="RFC9148"/> level, the block option <xref target="RFC7959"/> is often used.
The Registrar and the Pledge MUST select a block size that would allow the addition of the additional CoAP header without violating MTU sizes.</t>
        </section>
      </section>
    </section>
    <section anchor="jr-disc">
      <name>Discovery</name>
      <section anchor="discovery-operations-by-join-proxy">
        <name>Discovery operations by Join-Proxy</name>
        <t>In order to accomodate automatic configuration of the Join-Proxy, it must discover the location and a capabilities of the Registar.
<xref section="10.2" sectionFormat="of" target="I-D.ietf-anima-constrained-voucher"/> explains the basic mechanism, and this section explains the extensions required to discover if stateless operation is supported.</t>
        <section anchor="coap-disc">
          <name>CoAP discovery</name>
          <t><xref section="10.2.2" sectionFormat="of" target="I-D.ietf-anima-constrained-voucher"/> describes how to use CoAP Discovery.
The stateless Join Proxy requires a different end point that can accept the second CoAP header encapsulation and extended token.</t>
          <t>The stateless Join Proxy can discover the join-port of the Registrar by sending a GET request to "/.well-known/core" including a resource type (rt) parameter with the value "brski.rjp" <xref target="RFC6690"/>.
Upon success, the return payload will contain a port that contain process the CoAP encalsulated DTLS messages.</t>
          <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski.rjp

  RES: 2.05 Content
  <coap://[IP_address]:join-port>;rt=brski.rjp
]]></artwork>
          <t>In the <xref target="RFC6690"/> link format, and <xref section="3.2" sectionFormat="comma" target="RFC3986"/>, the authority attribute can not include a port number unless it also includes the IP address.</t>
          <t>The returned join-port is expected to process the CoAP encapsulated DTLS messages described in section <xref target="stateless-jpy"/>.
The scheme is now CoAP, as the outside protocol is CoAP and could be subject to further CoAP operations.</t>
          <t>An EST/Registrar server running at address <tt>2001:db8:0:abcd::52</tt>, with the
CoAP processing on port 7634, and the stateful Registrar on port 5683 could reply to a multicast query as follows:</t>
          <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski*

  RES: 2.05 Content
  <coap://[2001:db8:0:abcd::52]:7634>;rt=brski.rjp,
  <coaps://[2001:db8:0:abcd::52]/.well-known/brski>;rt=brski,
  <coaps://[2001:db8:0:abcd::52]/.well-known/brski/rv>;rt=brski.rv;ct=836,
  <coaps://[2001:db8:0:abcd::52]/.well-known/brski/vs>;rt=brski.vs;ct="50 60",
  <coaps://[2001:db8:0:abcd::52]/.well-known/brski/es>;rt=brski.es;ct="50 60",
]]></artwork>
        </section>
        <section anchor="grasp-discovery">
          <name>GRASP discovery</name>
          <t><xref section="10.2.1" sectionFormat="of" target="I-D.ietf-anima-constrained-voucher"/> describes how to use GRASP <xref target="RFC8990"/> discovery within the ACP to locate the stateful port of the Registrar.</t>
          <t>A Join Proxy which supports a stateless mode of operation using the mechanism described in <xref target="stateless-jpy"/> must know where to send the encoded content from the Pledge.
The Registrar announces its willingness to use the stateless mechanism by including an additional objective in it's M_FLOOD'ed <tt>AN_join_registrar</tt> announcements, but with a different objective value.</t>
          <t>The following changes are necessary with respect to figure 10 of <xref target="RFC8995"/>:</t>
          <ul spacing="normal">
            <li>The transport-proto is IPPROTO_UDP</li>
            <li>the objective is AN_join_registrar, identical to <xref target="RFC8995"/>.</li>
            <li>the objective name is "BRSKI_RJP".</li>
          </ul>
          <t>Here is an example M_FLOOD announcing the Registrar on example port 5685, which is a port number chosen by the Registrar.</t>
          <figure anchor="fig-grasp-rgj">
            <name>Example of Registrar announcement message</name>
            <artwork align="left"><![CDATA[
   [M_FLOOD, 51804231, h'fda379a6f6ee00000200000064000001', 180000,
   [["AN_join_registrar", 4, 255, "BRSKI_RJP"],
    [O_IPv6_LOCATOR,
     h'fda379a6f6ee00000200000064000001', IPPROTO_UDP, 5685]]]
]]></artwork>
          </figure>
          <t>Most Registrars will announce both a CoAP-stateless and stateful ports, and may also announce an HTTPS/TLS service:</t>
          <figure anchor="fig-grasp-many">
            <name>Example of Registrar announcing three services</name>
            <artwork align="left"><![CDATA[
   [M_FLOOD, 51840231, h'fda379a6f6ee00000200000064000001', 180000,
   [["AN_join_registrar", 4, 255, ""],
    [O_IPv6_LOCATOR,
     h'fda379a6f6ee00000200000064000001', IPPROTO_TCP, 8443],
    ["AN_join_registrar", 4, 255, "BRSKI_JP"],
    [O_IPv6_LOCATOR,
     h'fda379a6f6ee00000200000064000001', IPPROTO_UDP, 5684],
    ["AN_join_registrar", 4, 255, "BRSKI_RJP"],
    [O_IPv6_LOCATOR,
     h'fda379a6f6ee00000200000064000001', IPPROTO_UDP, 5685]]]
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="pledge-discovers-join-proxy">
        <name>Pledge discovers Join-Proxy</name>
        <t>Regardless of whether the Join Proxy operates in stateful or stateless mode, the Join Proxy is discovered by the Pledge identically.
When doing constrained onboarding with DTLS as security, the Pledge will always see an IPv6 Link-Local destination, with a single UDP port to which DTLS messages are to be sent.</t>
        <section anchor="jp-disc">
          <name>CoAP discovery</name>
          <t>In the context of a CoAP network without Autonomic Network support, discovery follows the standard CoAP policy.
The Pledge can discover a Join Proxy by sending a link-local multicast message to ALL CoAP Nodes with address FF02::FD. Multiple or no nodes may respond.
The handling of multiple responses and the absence of responses follow section 4 of <xref target="RFC8995"/>.</t>
          <t>The join-port of the Join Proxy is discovered by sending a GET request to "/.well-known/core" including a resource type (rt) parameter with the value "brski.jp" <xref target="RFC6690"/>.
Upon success, the return payload will contain the join-port.</t>
          <t>The example below shows the discovery of the join-port of the Join Proxy.</t>
          <artwork><![CDATA[
  REQ: GET coap://[FF02::FD]/.well-known/core?rt=brski.jp

  RES: 2.05 Content
  <coaps://[IP_address]:join-port>; rt="brski.jp"
]]></artwork>
          <t>Port numbers are assumed to be the default numbers 5683 and 5684 for coap and coaps respectively (sections 12.6 and 12.7 of <xref target="RFC7252"/>) when not shown in the response.
Discoverable port numbers are usually returned for Join Proxy resources in the &lt;URI-Reference&gt; of the payload (see section 4.1 of <xref target="RFC9148"/>).</t>
        </section>
        <section anchor="grasp-discovery-1">
          <name>GRASP discovery</name>
          <t>This section is normative for uses with an ANIMA ACP.
In the context of autonomic networks, the Join-Proxy uses the DULL GRASP M_FLOOD mechanism to announce itself.
Section 4.1.1 of <xref target="RFC8995"/> discusses this in more detail.</t>
          <t>The following changes are necessary with respect to figure 10 of <xref target="RFC8995"/>:</t>
          <ul spacing="normal">
            <li>The transport-proto is IPPROTO_UDP</li>
            <li>the objective is AN_Proxy</li>
          </ul>
          <t>The Registrar announces itself using ACP instance of GRASP using M_FLOOD messages.
Autonomic Network Join Proxies MUST support GRASP discovery of Registrar as described in section 4.3 of <xref target="RFC8995"/> .</t>
          <t>Here is an example M_FLOOD announcing the Join-Proxy at fe80::1, on standard coaps port 5684.</t>
          <figure anchor="fig-grasp-rg">
            <name>Example of Registrar announcement message</name>
            <artwork align="left"><![CDATA[
     [M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000,
     [["AN_Proxy", 4, 1, ""],
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_UDP, 5684]]]
]]></artwork>
          </figure>
        </section>
        <section anchor="tisch-discovery">
          <name>6tisch discovery</name>
          <t>The discovery of Join-Proxy by the Pledge uses the enhanced beacons as discussed in <xref target="RFC9032"/>.
6tisch does not use DTLS and so this specification does not apply to it.</t>
        </section>
      </section>
    </section>
    <section anchor="jr-comp">
      <name>Comparison of stateless and stateful modes</name>
      <t>The stateful and stateless mode of operation for the Join Proxy have their advantages and disadvantages.
This section should enable operators to make a choice between the two modes based on the available device resources and network bandwidth.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Properties</th>
            <th align="left">Stateful mode</th>
            <th align="left">Stateless mode</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">State Information</td>
            <td align="left">The Join Proxy needs additional storage to maintain mapping between the address and port number of the Pledge and those of the Registrar.</td>
            <td align="left">No information is maintained by the Join Proxy. Registrar needs to store the packet  header.</td>
          </tr>
          <tr>
            <td align="left">Packet size</td>
            <td align="left">The size of the forwarded message is the same as the original message.</td>
            <td align="left">Size of the forwarded message is bigger than the original, it includes additional information</td>
          </tr>
          <tr>
            <td align="left">Specification complexity</td>
            <td align="left">The Join Proxy needs additional functionality to maintain state information, and specify the source and destination addresses of the DTLS handshake messages</td>
            <td align="left">CoAP message to encapsulate DTLS payload. The Registrar and the Join Proxy have to understand the CoAP header in order to process it.</td>
          </tr>
          <tr>
            <td align="left">Ports</td>
            <td align="left">Join Proxy needs discoverable join-port</td>
            <td align="left">Join Proxy and Registrar need discoverable join-ports</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>All the concerns in <xref target="RFC8995"/> section 4.1 apply.
The Pledge can be deceived by malicious Join Proxy announcements.
The Pledge will only join a network to which it receives a valid <xref target="RFC8366"/> voucher <xref target="I-D.ietf-anima-constrained-voucher"/>. Once the Pledge joined, the payload between Pledge and Registrar is protected by DTLS.</t>
      <t>A malicious constrained Join Proxy has a number of routing possibilities:</t>
      <ul spacing="normal">
        <li>It sends the message on to a malicious Registrar. This is the same case as the presence of a malicious Registrar discussed in RFC 8995.</li>
        <li>It does not send on the request or does not return the response from the Registrar. This is the case of the not responding or crashing Registrar discussed in RFC 8995.</li>
        <li>It uses the returned response of the Registrar to enroll itself in the network. With very low probability it can decrypt the response because successful enrollment is deemed  unlikely.</li>
        <li>It uses the request from the Pledge to appropriate the Pledge certificate, but then it still needs to acquire the private key of the Pledge. This, too, is assumed to be highly unlikely.</li>
        <li>A malicious node can construct an invalid Join Proxy message.
Suppose, the destination port is the coaps port.
In that case, a Join Proxy can accept the message and add the routing addresses without checking the payload.
The Join Proxy then routes it to the Registrar.
In all cases, the Registrar needs to receive the message at the join-port, checks that the message consists of two parts and uses the DTLS payload to start the BRSKI procedure.
It is highly unlikely that this malicious payload will lead to node acceptance.</li>
        <li>A malicious node can sniff the messages routed by the constrained Join Proxy.
It is very unlikely that the malicious node can decrypt the DTLS payload.
A malicious node can read the header field of the message sent by the stateless Join Proxy.
This ability does not yield much more information than the visible addresses transported in the network packets.</li>
      </ul>
      <t>It should be noted here that the contents of the CBOR array used to convey return address information is not DTLS protected.
When the communication between Join Proxy and Registrar passes over an unsecure network, an attacker can change the CBOR array, causing the Registrar to deviate traffic from the intended Pledge.
These concerns are also expressed in <xref target="RFC8974"/>.
It is also pointed out that the encryption by the Join Proxy is a local matter.
Similarly to <xref target="RFC8974"/>, the use of AES-CCM <xref target="RFC3610"/> with a 64-bit tag is recommended, combined with a sequence number and a replay window.</t>
      <t>If such scenario needs to be avoided, the constrained Join Proxy MUST encrypt the CBOR array using a locally generated symmetric key.
The Registrar is not able to examine the encrypted result, but does not need to.
The Registrar stores the encrypted header in the return packet without modifications.
The constrained Join Proxy can decrypt the contents to route the message to the right destination.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="resource-type-attributes-registry">
        <name>Resource Type Attributes registry</name>
        <t>This specification registers two new Resource Type (rt=) Link Target Attributes in the "Resource Type (rt=) Link Target Attribute Values" subregistry under the "Constrained RESTful Environments (CoRE)
Parameters" registry per the <xref target="RFC6690"/> procedure.</t>
        <artwork><![CDATA[
Attribute Value: brski.jp
Description: This BRSKI resource type is used to query and return
             the supported BRSKI resources of the constrained
             Join Proxy.
Reference: [this document]

Attribute Value: brski.rjp
Description: This BRSKI resource type is used for the constrained
             Join Proxy to query and return Join Proxy specific
             BRSKI resources of a Registrar.
Reference: [this document]
]]></artwork>
      </section>
      <section anchor="dns-sd-spec">
        <name>service name and port number registry</name>
        <t>This specification registers two service names under the "Service Name and Transport Protocol Port Number" registry.</t>
        <artwork><![CDATA[
Service Name: brski-jp
Transport Protocol(s): udp
Assignee:  IESG <iesg@ietf.org>
Contact:  IESG <iesg@ietf.org>
Description: Bootstrapping Remote Secure Key Infrastructure
              constrained Join Proxy
Reference: [this document]

Service Name: brski-rjp
Transport Protocol(s): udp
Assignee:  IESG <iesg@ietf.org>
Contact:  IESG <iesg@ietf.org>
Description: Bootstrapping Remote Secure Key Infrastructure
             Registrar join-port used by stateless constrained
             Join Proxy
Reference: [this document]
]]></artwork>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Many thanks for the comments by <contact fullname="Carsten Bormann"/>, <contact fullname="Brian Carpenter"/>,
<contact fullname="Spencer Dawkins"/>, <contact fullname="Esko Dijk"/>, <contact fullname="Toerless Eckert"/>, <contact fullname="Russ Housley"/>, <contact fullname="Ines Robles"/>, <contact fullname="Rich Salz"/>, <contact fullname="Jürgen Schönwälder"/>, <contact fullname="Mališa Vučinić"/>, and <contact fullname="Rob Wilton"/>.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t><contact fullname="Sandeep Kumar"/>, <contact fullname="Sye loong Keoh"/>, and <contact fullname="Oscar Garcia-Morchon"/> are the co-authors of the draft-kumar-dice-dtls-relay-02.
Their draft has served as a basis for this document.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <section anchor="to-13">
        <name>14 to 13</name>
        <ul spacing="normal">
          <li>incorporated review comments from TTE</li>
          <li>jpy message changed to CoAP header</li>
        </ul>
      </section>
      <section anchor="to-12">
        <name>13 to 12</name>
        <artwork><![CDATA[
* jpy message encrypted and no longer standardized
]]></artwork>
      </section>
      <section anchor="to-11">
        <name>12 to 11</name>
        <artwork><![CDATA[
* many typos fixes and text re-organized
* core of GRASP and CoAP discovery moved to contrained-voucher document, only stateless extensions remain
]]></artwork>
      </section>
      <section anchor="to-10">
        <name>11 to 10</name>
        <artwork><![CDATA[
* Join-Proxy and Registrar discovery merged
* GRASP discovery updated
* ARTART review
* TSVART review
]]></artwork>
      </section>
      <section anchor="to-09">
        <name>10 to 09</name>
        <artwork><![CDATA[
* OPSDIR review
* IANA review
* SECDIR review
* GENART review
]]></artwork>
      </section>
      <section anchor="to-07">
        <name>09 to 07</name>
        <artwork><![CDATA[
 * typos
]]></artwork>
      </section>
      <section anchor="to-07-1">
        <name>06 to 07</name>
        <artwork><![CDATA[
 * AD review changes
]]></artwork>
      </section>
      <section anchor="to-06">
        <name>05 to 06</name>
        <artwork><![CDATA[
 * RT value change to brski.jp and brski.rjp
 * new registry values for IANA
 * improved handling of jpy header array
]]></artwork>
      </section>
      <section anchor="to-05">
        <name>04 to 05</name>
        <artwork><![CDATA[
 * Join Proxy and join-port consistent spelling
 * some nits removed
 * restructured discovery
 * section
 * rephrased parts of security section
]]></artwork>
      </section>
      <section anchor="to-04">
        <name>03 to 04</name>
        <artwork><![CDATA[
* mail address and reference
]]></artwork>
      </section>
      <section anchor="to-03">
        <name>02 to 03</name>
        <artwork><![CDATA[
* Terminology updated
* Several clarifications on discovery and routability
* DTLS payload introduced
]]></artwork>
      </section>
      <section anchor="to-02">
        <name>01 to 02</name>
        <ul spacing="normal">
          <li>Discovery of Join Proxy and Registrar ports</li>
        </ul>
      </section>
      <section anchor="to-01">
        <name>00 to 01</name>
        <ul spacing="normal">
          <li>Registrar used throughout instead of EST server</li>
          <li>Emphasized additional Join Proxy port for Join Proxy and Registrar</li>
          <li>updated discovery accordingly</li>
          <li>updated stateless Join Proxy JPY header</li>
          <li>JPY header described with CDDL</li>
          <li>Example simplified and corrected</li>
        </ul>
      </section>
      <section anchor="to-00">
        <name>00 to 00</name>
        <ul spacing="normal">
          <li>copied from vanderstok-anima-constrained-join-proxy-05</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC768" target="https://www.rfc-editor.org/info/rfc768">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="RFC6347" target="https://www.rfc-editor.org/info/rfc6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC8366" target="https://www.rfc-editor.org/info/rfc8366">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin">
              <organization/>
            </author>
            <author fullname="T. Eckert" initials="T." surname="Eckert">
              <organization/>
            </author>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer.  This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure.  Other YANG-derived formats are possible.  The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="RFC8995" target="https://www.rfc-editor.org/info/rfc8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="T. Eckert" initials="T." surname="Eckert">
              <organization/>
            </author>
            <author fullname="M. Behringer" initials="M." surname="Behringer">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane.  To do this, a Secure Key Infrastructure is bootstrapped.  This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline.  We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device.  The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/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="RFC9148" target="https://www.rfc-editor.org/info/rfc9148">
          <front>
            <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok">
              <organization/>
            </author>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="S. Raza" initials="S." surname="Raza">
              <organization/>
            </author>
            <date month="April" year="2022"/>
            <abstract>
              <t>Enrollment over Secure Transport (EST) is used as a certificate provisioning protocol over HTTPS. Low-resource devices often use the lightweight Constrained Application Protocol (CoAP) for message exchanges. This document defines how to transport EST payloads over secure CoAP (EST-coaps), which allows constrained devices to use existing EST functionality for provisioning certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9148"/>
          <seriesInfo name="DOI" value="10.17487/RFC9148"/>
        </reference>
        <reference anchor="I-D.ietf-anima-constrained-voucher" target="https://www.ietf.org/archive/id/draft-ietf-anima-constrained-voucher-18.txt">
          <front>
            <title>Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   This document defines the Constrained Bootstrapping Remote Secure Key
   Infrastructure (Constrained BRSKI) protocol, which provides a
   solution for secure zero-touch bootstrapping of resource-constrained
   (IoT) devices into the network of a domain owner.  This protocol is
   designed for constrained networks, which may have limited data
   throughput or may experience frequent packet loss.  Constrained BRSKI
   is a variant of the BRSKI protocol, which uses an artifact signed by
   the device manufacturer called the "voucher" which enables a new
   device and the owner's network to mutually authenticate.  While the
   BRSKI voucher is typically encoded in JSON, Constrained BRSKI defines
   a compact CBOR-encoded voucher.  The BRSKI voucher is extended with
   new data types that allow for smaller voucher sizes.  The Enrollment
   over Secure Transport (EST) protocol, used in BRSKI, is replaced with
   EST-over-CoAPS; and HTTPS used in BRSKI is replaced with CoAPS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-18"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8990" target="https://www.rfc-editor.org/info/rfc8990">
          <front>
            <title>GeneRic Autonomic Signaling Protocol (GRASP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter">
              <organization/>
            </author>
            <author fullname="B. Liu" initials="B." role="editor" surname="Liu">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies the GeneRic Autonomic Signaling Protocol (GRASP), which enables autonomic nodes and Autonomic Service Agents to dynamically discover peers, to synchronize state with each other, and to negotiate parameter settings with each other. GRASP depends on an external security environment that is described elsewhere. The technical objectives and parameters for specific application scenarios are to be described in separate documents. Appendices briefly discuss requirements for the protocol and existing protocols with comparable features.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8990"/>
          <seriesInfo name="DOI" value="10.17487/RFC8990"/>
        </reference>
        <reference anchor="ieee802-1AR" target="https://standards.ieee.org/standard/802.1AR-2009.html">
          <front>
            <title>IEEE 802.1AR Secure Device Identifier</title>
            <author>
              <organization/>
            </author>
            <date year="2009"/>
          </front>
          <refcontent>IEEE Standard</refcontent>
        </reference>
        <reference anchor="family" target="https://www.iana.org/assignments/address-family-numbers/address-family-numbers.xhtml">
          <front>
            <title>Address Family Numbers</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="October" day="19"/>
          </front>
          <refcontent>IANA</refcontent>
        </reference>
        <reference anchor="RFC6690" target="https://www.rfc-editor.org/info/rfc6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links.  Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type.  "RESTful" refers to the Representational State Transfer (REST) architecture.  A well-known URI is defined as a default entry point for requesting the links hosted by a server.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.richardson-anima-state-for-joinrouter" target="https://www.ietf.org/archive/id/draft-richardson-anima-state-for-joinrouter-03.txt">
          <front>
            <title>Considerations for stateful vs stateless join router in ANIMA bootstrap</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="22" month="September" year="2020"/>
            <abstract>
              <t>   This document explores a number of issues affecting the decision to
   use a stateful or stateless forwarding mechanism by the join router
   (aka join assistant) during the bootstrap process for ANIMA.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-richardson-anima-state-for-joinrouter-03"/>
        </reference>
        <reference anchor="RFC7030" target="https://www.rfc-editor.org/info/rfc7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin">
              <organization/>
            </author>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee">
              <organization/>
            </author>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins">
              <organization/>
            </author>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport.  This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates.  It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC7102" target="https://www.rfc-editor.org/info/rfc7102">
          <front>
            <title>Terms Used in Routing for Low-Power and Lossy Networks</title>
            <author fullname="JP. Vasseur" initials="JP." surname="Vasseur">
              <organization/>
            </author>
            <date month="January" year="2014"/>
            <abstract>
              <t>This document provides a glossary of terminology used in routing requirements and solutions for networks referred to as Low-Power and Lossy Networks (LLNs).  An LLN is typically composed of many embedded devices with limited power, memory, and processing resources interconnected by a variety of links.  There is a wide scope of application areas for LLNs, including industrial monitoring, building automation (e.g., heating, ventilation, air conditioning, lighting, access control, fire), connected home, health care, environmental monitoring, urban sensor networks, energy management, assets tracking, and refrigeration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7102"/>
          <seriesInfo name="DOI" value="10.17487/RFC7102"/>
        </reference>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="M. Ersue" initials="M." surname="Ersue">
              <organization/>
            </author>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks.  This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC9031" target="https://www.rfc-editor.org/info/rfc9031">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić">
              <organization/>
            </author>
            <author fullname="J. Simon" initials="J." surname="Simon">
              <organization/>
            </author>
            <author fullname="K. Pister" initials="K." surname="Pister">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes the minimal framework required for a new device, called a "pledge", to securely join a 6TiSCH (IPv6 over the Time-Slotted Channel Hopping mode of IEEE 802.15.4) network. The framework requires that the pledge and the JRC (Join Registrar/Coordinator, a central entity), share a symmetric key. How this key is provisioned is out of scope of this document. Through a single CoAP (Constrained Application Protocol) request-response exchange secured by OSCORE (Object Security for Constrained RESTful Environments), the pledge requests admission into the network, and the JRC configures it with link-layer keying material and other parameters. The JRC may at any time update the parameters through another request-response exchange secured by OSCORE. This specification defines the Constrained Join Protocol and its CBOR (Concise Binary Object Representation) data structures, and it describes how to configure the rest of the 6TiSCH communication stack for this join process to occur in a secure manner. Additional security mechanisms may be added on top of this minimal framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9031"/>
          <seriesInfo name="DOI" value="10.17487/RFC9031"/>
        </reference>
        <reference anchor="I-D.kumar-dice-dtls-relay" target="https://www.ietf.org/archive/id/draft-kumar-dice-dtls-relay-02.txt">
          <front>
            <title>DTLS Relay for Constrained Environments</title>
            <author fullname="Sandeep S. Kumar" initials="S. S." surname="Kumar">
              <organization>Philips Research</organization>
            </author>
            <author fullname="Sye Loong Keoh" initials="S. L." surname="Keoh">
              <organization>University of Glasgow Singapore</organization>
            </author>
            <author fullname="Oscar Garcia-Morchon" initials="O." surname="Garcia-Morchon">
              <organization>Philips Research</organization>
            </author>
            <date day="20" month="October" year="2014"/>
            <abstract>
              <t>   The 6LoWPAN and CoAP standards defined for resource-constrained
   devices are fast emerging as the de-facto protocols for enabling the
   Internet-of-Things (IoTs).  Security is an important concern in IoTs
   and the DTLS protocol has been chosen as the preferred method for
   securing CoAP messages.  DTLS is a point-to-point protocol relying on
   IP routing to deliver messages between the client and the server.
   However in some low-power lossy networks (LLNs) with multi-hop, a new
   "joining" device may not be initially IP-routable.  Moreover, it
   exists in a separate, unauthenticated domain at the point of first
   contact and therefore cannot be initially trusted.  This puts
   limitations on the ability to use DTLS as an authentication and
   confidentiality protocol at this stage.  These devices being
   Resource-constrained often cannot accommodate more than one security
   protocol in their code memory.  To overcome this problem we suggest
   DTLS as the single protocol and therefore, we present a DTLS Relay
   solution for the non-IP routable "joining" device to enable it to
   establish a secure DTLS connection with a DTLS Server.  Furthermore
   we present a stateful and stateless mode of operation for the DTLS
   Relay.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kumar-dice-dtls-relay-02"/>
        </reference>
        <reference anchor="RFC4944" target="https://www.rfc-editor.org/info/rfc4944">
          <front>
            <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
            <author fullname="G. Montenegro" initials="G." surname="Montenegro">
              <organization/>
            </author>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar">
              <organization/>
            </author>
            <author fullname="J. Hui" initials="J." surname="Hui">
              <organization/>
            </author>
            <author fullname="D. Culler" initials="D." surname="Culler">
              <organization/>
            </author>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet delivery in IEEE 802.15.4 meshes.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4944"/>
          <seriesInfo name="DOI" value="10.17487/RFC4944"/>
        </reference>
        <reference anchor="RFC3610" target="https://www.rfc-editor.org/info/rfc3610">
          <front>
            <title>Counter with CBC-MAC (CCM)</title>
            <author fullname="D. Whiting" initials="D." surname="Whiting">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="N. Ferguson" initials="N." surname="Ferguson">
              <organization/>
            </author>
            <date month="September" year="2003"/>
            <abstract>
              <t>Counter with CBC-MAC (CCM) is a generic authenticated encryption block cipher mode.  CCM is defined for use with 128-bit block ciphers, such as the Advanced Encryption Standard (AES).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3610"/>
          <seriesInfo name="DOI" value="10.17487/RFC3610"/>
        </reference>
        <reference anchor="RFC6775" target="https://www.rfc-editor.org/info/rfc6775">
          <front>
            <title>Neighbor Discovery Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)</title>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby">
              <organization/>
            </author>
            <author fullname="S. Chakrabarti" initials="S." surname="Chakrabarti">
              <organization/>
            </author>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="November" year="2012"/>
            <abstract>
              <t>The IETF work in IPv6 over Low-power Wireless Personal Area Network (6LoWPAN) defines 6LoWPANs such as IEEE 802.15.4.  This and other similar link technologies have limited or no usage of multicast signaling due to energy conservation.  In addition, the wireless network may not strictly follow the traditional concept of IP subnets and IP links.  IPv6 Neighbor Discovery was not designed for non- transitive wireless links, as its reliance on the traditional IPv6 link concept and its heavy use of multicast make it inefficient and sometimes impractical in a low-power and lossy network.  This document describes simple optimizations to IPv6 Neighbor Discovery, its addressing mechanisms, and duplicate address detection for Low- power Wireless Personal Area Networks and similar networks.  The document thus updates RFC 4944 to specify the use of the optimizations defined here.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6775"/>
          <seriesInfo name="DOI" value="10.17487/RFC6775"/>
        </reference>
        <reference anchor="RFC7959" target="https://www.rfc-editor.org/info/rfc7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby">
              <organization/>
            </author>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks.  Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates.  In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS).  These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs.  In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers.  Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations.  Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC8974" target="https://www.rfc-editor.org/info/rfc8974">
          <front>
            <title>Extended Tokens and Stateless Clients in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document provides considerations for alleviating Constrained Application Protocol (CoAP) clients and intermediaries of keeping per-request state. To facilitate this, this document additionally introduces a new, optional CoAP protocol extension for extended token lengths. </t>
              <t>This document updates RFCs 7252 and 8323 with an extended definition of the "TKL" field in the CoAP message header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8974"/>
          <seriesInfo name="DOI" value="10.17487/RFC8974"/>
        </reference>
        <reference anchor="RFC6550" target="https://www.rfc-editor.org/info/rfc6550">
          <front>
            <title>RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks</title>
            <author fullname="T. Winter" initials="T." role="editor" surname="Winter">
              <organization/>
            </author>
            <author fullname="P. Thubert" initials="P." role="editor" surname="Thubert">
              <organization/>
            </author>
            <author fullname="A. Brandt" initials="A." surname="Brandt">
              <organization/>
            </author>
            <author fullname="J. Hui" initials="J." surname="Hui">
              <organization/>
            </author>
            <author fullname="R. Kelsey" initials="R." surname="Kelsey">
              <organization/>
            </author>
            <author fullname="P. Levis" initials="P." surname="Levis">
              <organization/>
            </author>
            <author fullname="K. Pister" initials="K." surname="Pister">
              <organization/>
            </author>
            <author fullname="R. Struik" initials="R." surname="Struik">
              <organization/>
            </author>
            <author fullname="JP. Vasseur" initials="JP." surname="Vasseur">
              <organization/>
            </author>
            <author fullname="R. Alexander" initials="R." surname="Alexander">
              <organization/>
            </author>
            <date month="March" year="2012"/>
            <abstract>
              <t>Low-Power and Lossy Networks (LLNs) are a class of network in which both the routers and their interconnect are constrained.  LLN routers typically operate with constraints on processing power, memory, and energy (battery power).  Their interconnects are characterized by high loss rates, low data rates, and instability.  LLNs are comprised of anything from a few dozen to thousands of routers.  Supported traffic flows include point-to-point (between devices inside the LLN), point-to-multipoint (from a central control point to a subset of devices inside the LLN), and multipoint-to-point (from devices inside the LLN towards a central control point).  This document specifies the IPv6 Routing Protocol for Low-Power and Lossy Networks (RPL), which provides a mechanism whereby multipoint-to-point traffic from devices inside the LLN towards a central control point as well as point-to-multipoint traffic from the central control point to the devices inside the LLN are supported.  Support for point-to-point traffic is also available.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6550"/>
          <seriesInfo name="DOI" value="10.17487/RFC6550"/>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9032" target="https://www.rfc-editor.org/info/rfc9032">
          <front>
            <title>Encapsulation of 6TiSCH Join and Enrollment Information Elements</title>
            <author fullname="D. Dujovne" initials="D." role="editor" surname="Dujovne">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>In the Time-Slotted Channel Hopping (TSCH) mode of IEEE Std 802.15.4, opportunities for broadcasts are limited to specific times and specific channels.  Routers in a TSCH network transmit Enhanced Beacon (EB) frames to announce the presence of the network.  This document provides a mechanism by which additional information critical for new nodes (pledges) and long-sleeping nodes may be carried within the EB in order to conserve use of broadcast opportunities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9032"/>
          <seriesInfo name="DOI" value="10.17487/RFC9032"/>
        </reference>
        <reference anchor="RFC3927" target="https://www.rfc-editor.org/info/rfc3927">
          <front>
            <title>Dynamic Configuration of IPv4 Link-Local Addresses</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire">
              <organization/>
            </author>
            <author fullname="B. Aboba" initials="B." surname="Aboba">
              <organization/>
            </author>
            <author fullname="E. Guttman" initials="E." surname="Guttman">
              <organization/>
            </author>
            <date month="May" year="2005"/>
            <abstract>
              <t>To participate in wide-area IP networking, a host needs to be configured with IP addresses for its interfaces, either manually by the user or automatically from a source on the network such as a Dynamic Host Configuration Protocol (DHCP) server.  Unfortunately, such address configuration information may not always be available. It is therefore beneficial for a host to be able to depend on a useful subset of IP networking functions even when no address configuration is available.  This document describes how a host may automatically configure an interface with an IPv4 address within the 169.254/16 prefix that is valid for communication with other devices connected to the same physical (or logical) link.</t>
              <t>IPv4 Link-Local addresses are not suitable for communication with devices not directly connected to the same physical (or logical) link, and are only used where stable, routable addresses are not available (such as on ad hoc or isolated networks).  This document does not recommend that IPv4 Link-Local addresses and routable addresses be configured simultaneously on the same interface.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3927"/>
          <seriesInfo name="DOI" value="10.17487/RFC3927"/>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
      </references>
    </references>
    <section anchor="coap-breakout">
      <name>Stateless CoAP payload examples</name>
      <t>This section shows how the CoAP header is arranged by the stateless proxy.</t>
      <artwork><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver|T=0|TKL=13 | Code=0.02 POST|          Message ID           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0 0 0 0 0 0 1 1|
   |               16-bytes of extended token                      |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |1 1 0 1 0 1 0 0|0 0 0 1 1 0 1 0| four bytes: "coap"            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |1 1 1 1 1 1 1 1|    Payload (DTLS contents)
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <t>The Option is Proxy-Scheme, with a value 39, and must be encoded as an Option Delta of 13, followed by a single byte of (39-13=) 26.</t>
      <t>The total size of the header is 4,1+16,6,1 is 28 bytes.
A CBOR header would have taken 4+16 bytes or 20 bytes, for a difference of 8 bytes.</t>
    </section>
    <section anchor="examples">
      <name>Stateless Proxy payload examples</name>
      <t>The examples show the request "GET coaps://192.168.1.200:5965/est/crts" to a Registrar. The header generated between Join Proxy and Registrar and from Registrar to Join Proxy are shown in detail. The DTLS payload is not shown.</t>
      <t>NOTE THESE ARE OLD.</t>
      <t>The request from Join Proxy to Registrar looks like:</t>
      <sourcecode type="cbor-pretty"><![CDATA[
   85                                   # array(5)
      50                                # bytes(16)
         FE800000000000000000FFFFC0A801C8 #
      19 BDA7                           # unsigned(48551)
      01                                # unsigned(1) IP
      00                                # unsigned(0)
      58 2D                             # bytes(45)
   <cacrts DTLS encrypted request>
]]></sourcecode>
      <t>In CBOR Diagnostic:</t>
      <sourcecode type="cbor-diag"><![CDATA[
    [h'FE800000000000000000FFFFC0A801C8', 48551, 1, 0,
     h'<cacrts DTLS encrypted request>']
]]></sourcecode>
      <t>The response is:</t>
      <sourcecode type="cbor-pretty"><![CDATA[
   85                                   # array(5)
      50                                # bytes(16)
         FE800000000000000000FFFFC0A801C8 #
      19 BDA7                           # unsigned(48551)
      01                                # unsigned(1) IP
      00                                # unsigned(0)
   59 026A                              # bytes(618)
      <cacrts DTLS encrypted response>
]]></sourcecode>
      <t>In CBOR diagnostic:</t>
      <sourcecode type="cbor-diag"><![CDATA[
    [h'FE800000000000000000FFFFC0A801C8', 48551, 1, 0,
    h'<cacrts DTLS encrypted response>']
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
