<?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-12" 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-12"/>
    <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="August" day="16"/>
    <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="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.</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>
        <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="40" y="68">R</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="280" 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
         .---.
         | R +---.    +----+    +---+        +--+
         |   |    \   |6LR +----+ J |........|P |
         '---'     `--+    |    |   |  clear |  |
                      +----+    +---+        +--+
       Registrar             Join Proxy     Pledge


]]></artwork>
        </artset>
      </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="jpy-encapsulation-protocol">
        <name>Stateless Join Proxy</name>
        <t>The JPY Encapsulation Protocol allows the stateless Join Proxy to minimize memory requirements on a constrained Join Proxy device.
The use of a stateless operation requires no memory in the Join Proxy device because it stores the state in a special encapsulation in the packet.  This 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 directly above UDP.
There is no CoAP or DTLS layer as both are within the relayed payload.</t>
        <t>Header and Contents fields together are consist of one CBOR <xref target="RFC8949"/> array of 2 elements, explained in CDDL <xref target="RFC8610"/>:</t>
        <ol spacing="normal" type="1"><li>The context payload.  This is a CBOR byte string. It SHOULD be between 8 and 32 bytes in size.</li>
          <li>Content field: containing the DTLS payload as a CBOR byte string.</li>
        </ol>
        <figure anchor="fig-cddl">
          <name>CDDL representation of JPY message</name>
          <artwork align="left"><![CDATA[
    JPY_message =
    [
       pledge_context_message : bstr,
       content   : bstr
    ]

]]></artwork>
        </figure>
        <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 context payload is to be reflected by the Registrar when sending reply packets to the Join Proxy.
The context payload is not standardized.
It is to be used by the Join Proxy to record which pledge the traffic came from.</t>
        <t>The Join Proxy SHOULD encrypt this context 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.
The considerations of  <xref section="5.2" sectionFormat="of" target="RFC8974"/> apply.</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 a CoAP proxy.</t>
        <t>A typical context parameter 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 context message.
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 JPY messages relayed to the Registrar, the Join Proxy SHOULD use the same UDP source port for the JPY messages related to all pledges.
A Join Proxy MAY change the UDP source port, but doing so creates more local state.
A Join Proxy with multiple CPUs (unlikely in a constrained system, but possible in the 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 JPY message by the Registrar, the Registrar MUST verify that the number of array elements is 2 or more.
The pledge_content field must be provided as input to a DTLS library <xref target="RFC9147"/>, which along with the 5-tuple of the UDP connection provides 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.
The pledge_context_message can be used to select an appropriate DTLS context, as DTLS headers do not contain any kind of of per session context.
The pledge_context_message needs to be linked to the DTLS context, and when DTLS records need to be sent, then the pledge_context_message needs to be prepended to the data that is sent.</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 JPY_message 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 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 /.well-known/core?rt=brski.rjp

  RES: 2.05 Content
  <coaps+jpy://[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 encapsulated JPY messages described in section <xref target="stateless-jpy"/>.
The scheme remains coaps, as the inside protocol is still CoAP and DTLS.</t>
          <t>An EST/Registrar server running at address <tt>2001:db8:0:abcd::52</tt>, with the JPY process 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
  <coaps+jpy://[2001:db8:0:abcd::52]:7634>;rt=brski.rjp,
  <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>
          <t>The coaps+jpy scheme is registered is defined in <xref target="jpyscheme"/>, as per <xref section="6.2" sectionFormat="comma" target="RFC7252"/></t>
        </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="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 5.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>
      <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="jpyscheme">
        <name>CoAPS+JPY Scheme Registration</name>
        <artwork><![CDATA[
Scheme name: coaps+jpy
Status: permanent
Applications/protocols that use this scheme name: Constrained BRSKI Join Proxy
Contact: ANIMA WG
Change controller: IESG
References: [THIS RFC]
Scheme syntax: identical to coaps
Scheme semantics: The encapsulation mechanism described in {{stateless-jpy}} is used with coaps.
Security considerations: The new encapsulation allows traffic to be returned to a calling node
   behind a proxy.  The form of the encapsulation can include privacy and integrity protection
   under the control of the proxy system.
]]></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-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="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="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="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">
              <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="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="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="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>
        <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="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">
	 </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>
        <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="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>
      </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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
A43ivwsa3YFFAoWiUafzvwG2eYTXYKAAAA==

-->

</rfc>
