<?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-11" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.4 -->
  <front>
    <title abbrev="Join Proxy">Constrained Join Proxy for Bootstrapping Protocols</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-11"/>
    <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="July" day="11"/>
    <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 Circuit-proxy between
Pledge and Registrar by a stateless/stateful 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>This document defines a protocol to securely assign a Pledge to a domain, represented by a Registrar, using an intermediary node between Pledge and Registrar. This intermediary node is known as a "constrained Join Proxy". An enrolled Pledge can act as a constrained Join Proxy.</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. In this document, BRSKI is extended such that a Pledge connects to "Registrars" via a constrained Join Proxy. In particular, the underlying IP network is assumed to be a mesh network as described in <xref target="RFC4944"/>, although other IP-over-foo networks are not excluded. An example network is shown in <xref target="fig-net"/>.</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="I-D.ietf-ace-coap-est"/>. The <xref target="I-D.ietf-anima-constrained-voucher"/> extends <xref target="I-D.ietf-ace-coap-est"/> with BRSKI artifacts such as voucher, request voucher, and the protocol extensions for constrained Pledges.</t>
      <t>DTLS is a client-server protocol relying on the underlying IP layer to perform the routing between the DTLS Client and the DTLS Server.
However, 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 constrained Join Proxy, which transmits the DTLS
protected request coming from the Pledge
to the 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>During enrollment, a DTLS connection is required between Pledge and Registrar.</t>
      <t>An enrolled Pledge can act as constrained Join Proxy between other Pledges and the enrolling Registrar.</t>
      <t>This document specifies a new form of constrained Join Proxy and protocol to act as intermediary between Pledge and Registrar to relay DTLS messages between Pledge and Registrar. Two modes of the constrained Join Proxy are specified:</t>
      <artwork><![CDATA[
1 A stateful Join Proxy that locally stores IP addresses
  during the connection.
2 A stateless Join Proxy where the connection state
 is stored in the messages.
]]></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.</t>
    </section>
    <section anchor="Terminology">
      <name>Terminology</name>
      <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 term "installation network" refers to all devices in the installation and the network connections between them. The term "installation IP_address" refers to an address out of the set of addresses which are routable over the whole installation network.</t>
      <t>The "Constrained Join Proxy" enables a pledge that is multiple hops away from the Registrar, to securely execute the BRSKI protocol <xref target="RFC8995"/> over a secure channel.</t>
      <t>The term "join Proxy" is used interchangeably with the term "constrained Join Proxy" throughout this document.</t>
    </section>
    <section anchor="reqlang">
      <name>Requirements Language</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>
    </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 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 their link-local IPv6 addresses.
However, the Pledge needs to communicate with end-to-end security with a Registrar to 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 Pledge for any returned messages from the Registrar.</t>
      <figure anchor="fig-net">
        <name>multi-hop enrollment.</name>
        <artwork align="left"><![CDATA[
          ++++ multi-hop mesh
          |R |----    +---+    +--+        +--+
          |  |    \   |6  |----|J |........|P |
          ++++     \--+ LR|    |  |        |  |
                      +---+    +--+        +--+
       Registrar             Join Proxy   Pledge


]]></artwork>
      </figure>
      <t>Without routing the Pledge cannot establish a secure connection to the Registrar over multiple hops in the network.</t>
      <t>Furthermore, the Pledge cannot 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/or discovery of the destination address of the Registrar, the constrained Join Proxy is introduced.
This constrained Join Proxy functionality is configured into all authenticated devices in the network which may act as a constrained Join Proxy for Pledges.
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. The wanted end-state is a network with a Registrar and a set of 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 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 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>
    </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>A Join Proxy MUST implement both. A Registrar MUST implement the stateful mode and SHOULD implement the Stateless mode.</t>
      <t>A mechanism to switch between modes is out of scope of this document. It is recommended that a Join Proxy uses only one of these modes at any given moment during an installation lifetime.</t>
      <t>The advantages and disadvantages of the two modes are presented in <xref target="jr-comp"/>.</t>
      <section anchor="stateful-join-proxy">
        <name>Stateful Join Proxy</name>
        <t>In stateful mode, the Join Proxy forwards the DTLS messages to the Registrar.</t>
        <t>Assume that the Pledge does not know the IP address of the Registrar it needs to contact.
The Join Proxy has been enrolled via the Registrar and learns the IP address and port of the Registrar, by using a discovery mechanism such as described in <xref target="jr-disc"/>. The Pledge first discovers (see <xref target="jr-disc"/>) and selects the most appropriate Join Proxy.
(Discovery can also be based upon <xref target="RFC8995"/> section 4.1).
The Pledge initiates its request as if the Join Proxy is the intended Registrar. The Join Proxy receives the message at a discoverable join-port.
The Join Proxy constructs an IP packet by copying the DTLS payload from the message received from the Pledge, and provides source and destination addresses to forward the message to the intended Registrar.
The Join Proxy stores the 4-tuple array of the messages received from the Registrar and copies it back to the header of the message returned to the Pledge.</t>
        <t>In <xref target="fig-statefull2"/> the various steps of the message flow are shown, with 5684 being the standard coaps port. The columns "SRc_IP:port" and "Dst_IP:port" show the IP address and port values for the source and destination of the message.</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>
      </section>
      <section anchor="stateless-join-proxy">
        <name>Stateless Join Proxy</name>
        <t>The stateless Join Proxy aims to minimize the requirements on the constrained Join Proxy device.
Stateless operation requires no memory in the Join Proxy device, and may also reduce the CPU impact as the device does not need to search through a state table.</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 Pledge attempts a DTLS connection to the Join Proxy, it uses its link-local IP address as its IP source address.
This message is transmitted one-hop to a neighboring (Join Proxy) node.
Under normal circumstances, this message would be dropped at the neighbor node since the Pledge is not yet IP routable or is not yet authenticated to send messages through the network.
However, if the neighbor device has the Join Proxy functionality enabled; it routes the DTLS message to its Registrar of choice.</t>
        <t>The Join Proxy transforms the DTLS message to a JPY message which includes the DTLS data as payload, and sends the JPY message to the join-port of the Registrar.</t>
        <t>The JPY message payload consists of two parts:</t>
        <ul spacing="normal">
          <li>Header (H) field: consisting of the source link-local address and port of the Pledge (P), and</li>
          <li>Contents (C) field: containing the original DTLS payload.</li>
        </ul>
        <t>On receiving the JPY message, the Registrar (or proxy) retrieves the two parts.</t>
        <t>The Registrar transiently stores the Header field information.
The Registrar uses the Contents field to execute the Registrar functionality.
However, when the Registrar replies, it also extends its DTLS message with the header field in a JPY message and sends it back to the Join Proxy.
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 JPY message, the Join Proxy retrieves the two parts.
It uses the Header field to route the DTLS message containing the DTLS payload retrieved from the Contents field to the Pledge.</t>
        <t>In this scenario, both the Registrar and the Join Proxy use discoverable join-ports, for the Join Proxy this may be a default CoAP port.</t>
        <t>The <xref target="fig-stateless"/> depicts the message flow diagram:</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>Stateless Message structure</name>
        <t>The JPY message is constructed as a payload with media-type application/cbor</t>
        <t>Header and Contents fields together are one CBOR array of 5 elements:</t>
        <ol spacing="normal" type="1"><li>header field: containing a CBOR array <xref target="RFC8949"/> with the Pledge IPv6 Link Local address as a CBOR byte string, the Pledge's UDP port number as a CBOR integer, the IP address family (IPv4/IPv6) as a CBOR integer, and the proxy's ifindex or other identifier for the physical port as CBOR integer. The header field is not DTLS encrypted.</li>
          <li>Content field: containing the DTLS payload as a CBOR byte string.</li>
        </ol>
        <t>The address family integer is defined in <xref target="family"/> with:</t>
        <artwork><![CDATA[
1   IP (IP version 4)
2   IP6 (IP version 6)
]]></artwork>
        <t>The Join Proxy cannot decrypt the DTLS payload and has no knowledge of the transported media type.</t>
        <figure anchor="fig-cddl">
          <name>CDDL representation of JPY message</name>
          <artwork align="left"><![CDATA[
    JPY_message =
    [
       ip        : bstr,
       port      : int,
       family    : int,
       ifindex   : int
       content   : bstr
    ]

]]></artwork>
        </figure>
        <t>The contents are DTLS encrypted. In CBOR diagnostic notation the payload JPY[H(IP_P:p_P)], will look like:</t>
        <artwork><![CDATA[
      [h'IP_p', p_P, family, ident, h'DTLS-payload']
]]></artwork>
        <t>On reception by the Registrar, the Registrar MUST verify that the number of array elements is larger than or equal to 5, and reject the message when the number of array elements is smaller than 5.
After replacing the 5th "content" element with the DTLS payload of the response message and leaving all other array elements unchanged, the Registrar returns the response message.</t>
        <t>Examples are shown in <xref target="examples"/>.</t>
        <t>The header field is completely opaque to the receiver. A Registrar MUST copy the header and return it unmodified in the return message.</t>
        <t>It is recommended to use the block option <xref target="RFC7959"/> and make sure that the block size allows the addition of the JPY header without violating MTU sizes.</t>
      </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 JPY encapsulation.</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 the join-port of the Registrar.</t>
          <artwork><![CDATA[
  REQ: GET coap://[IP_address]/.well-known/core?rt=brski.rjp

  RES: 2.05 Content
  <coaps://[IP_address]:join-port>; rt="brski.rjp"
]]></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 JPY-stateless and stateful ports, and may also announce an HTTPS/TLS service:</t>
          <figure anchor="fig-grasp-many">
            <name>Example of Registrar announcing two 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="tisch-discovery">
          <name>6tisch discovery</name>
          <t>The discovery of Join-Proxy by the Pledge uses the enhanced beacons as discussed in <xref target="I-D.ietf-6tisch-enrollment-enhanced-beacon"/>.
However, 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>
      <figure anchor="fig-comparison">
        <name>Comparison between stateful and stateless mode</name>
        <artwork align="left"><![CDATA[
+-------------+----------------------------+------------------------+
| Properties  |         Stateful mode      |     Stateless mode     |
+-------------+----------------------------+------------------------+
| State       |The Join Proxy needs        | No information is      |
| Information |additional storage to       | maintained by the Join |
|             |maintain mapping between    | Proxy. Registrar needs |
|             |the address and port number | to store the packet    |
|             |of the Pledge and those     | header.                |
|             |of the Registrar.           |                        |
+-------------+----------------------------+------------------------+
|Packet size  |The size of the forwarded   |Size of the forwarded   |
|             |message is the same as the  |message is bigger than  |
|             |original message.           |the original,it includes|
|             |                            |additional information  |
+-------------+----------------------------+------------------------+
|Specification|The Join Proxy needs        |New JPY message to      |
|complexity   |additional functionality    |encapsulate DTLS payload|
|             |to maintain state           |The Registrar           |
|             |information, and specify    |and the Join Proxy      |
|             |the source and destination  |have to understand the  |
|             |addresses of the DTLS       |JPY message in order    |
|             |handshake messages          |to process it.          |
+-------------+----------------------------+------------------------+
| Ports       | Join Proxy needs           |Join Proxy and Registrar|
|             | discoverable join-port     |need discoverable       |
|             |                            | join-ports             |
+-------------+----------------------------+------------------------+

]]></artwork>
      </figure>
    </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 in the source 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>
      <t>In some installations, layer 2 protection is provided between all member pairs of the mesh. In such an environment encryption of the CBOR array is unnecessary because the layer 2 protection already provide it.</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. Much text from their draft is copied over to this draft.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <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="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="I-D.ietf-ace-coap-est" target="https://www.ietf.org/archive/id/draft-ietf-ace-coap-est-18.txt">
          <front>
            <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
            <author fullname="Peter van der Stok">
              <organization>Consultant</organization>
            </author>
            <author fullname="Panos Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Michael C. Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Shahid Raza">
              <organization>RISE SICS</organization>
            </author>
            <date day="6" month="January" year="2020"/>
            <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="Internet-Draft" value="draft-ietf-ace-coap-est-18"/>
        </reference>
        <reference anchor="I-D.ietf-anima-constrained-voucher" target="https://www.ietf.org/archive/id/draft-ietf-anima-constrained-voucher-17.txt">
          <front>
            <title>Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Esko Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="7" month="April" 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-17"/>
        </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="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 C. 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="I-D.ietf-6tisch-enrollment-enhanced-beacon" target="https://www.ietf.org/archive/id/draft-ietf-6tisch-enrollment-enhanced-beacon-14.txt">
          <front>
            <title>Encapsulation of 6TiSCH Join and Enrollment Information Elements</title>
            <author fullname="Diego Dujovne (editor)">
              <organization>Universidad Diego Portales</organization>
            </author>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="21" month="February" year="2020"/>
            <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="Internet-Draft" value="draft-ietf-6tisch-enrollment-enhanced-beacon-14"/>
        </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="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="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">
	 </author>
            <author fullname="Sye Loong Keoh">
	 </author>
            <author fullname="Oscar Garcia-Morchon">
	 </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="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="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>
      </references>
    </references>
    <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>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>
