<?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-14" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.0 -->
  <front>
    <title abbrev="Join Proxy">Constrained Join Proxy for Bootstrapping Protocols</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-14"/>
    <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="2023" month="April" day="26"/>
    <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 key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>The following terms are defined in <xref target="RFC8366"/>, and are used
identically as in that document: artifact, imprint, domain, Join
Registrar/Coordinator (JRC), Pledge, and Voucher.</t>
      <t>In this document, the term "Registrar" is used throughout instead of "Join
Registrar/Coordinator (JRC)".</t>
      <t>The 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>
      <t>The <xref target="RFC8995"/> Circuit Proxy is referred to as a TCP circuit Join Proxy.</t>
    </section>
    <section anchor="constrained-join-proxy-functionality">
      <name>constrained Join Proxy functionality</name>
      <t>As depicted in the <xref target="fig-net"/>, the Pledge (P), in a 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://datatracker.ietf.org/doc/html/draft-ietf-anima-constrained-voucher-20">
          <front>
            <title>Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <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 uses 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.  This
   document Updates RFC 8366 and RFC 8995.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-20"/>
        </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://datatracker.ietf.org/doc/html/draft-richardson-anima-state-for-joinrouter-03">
          <front>
            <title>Considerations for stateful vs stateless join router in ANIMA bootstrap</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="22" month="September" year="2020"/>
            <abstract>
              <t>   This document explores a number of issues affecting the decision to
   use a stateful or stateless forwarding mechanism by the join router
   (aka join assistant) during the bootstrap process for ANIMA.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-richardson-anima-state-for-joinrouter-03"/>
        </reference>
        <reference anchor="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://datatracker.ietf.org/doc/html/draft-kumar-dice-dtls-relay-02">
          <front>
            <title>DTLS Relay for Constrained Environments</title>
            <author fullname="Sandeep S. Kumar" initials="S. S." surname="Kumar">
              <organization>Philips Research</organization>
            </author>
            <author fullname="Sye Loong Keoh" initials="S. L." surname="Keoh">
              <organization>University of Glasgow Singapore</organization>
            </author>
            <author fullname="Oscar Garcia-Morchon" initials="O." surname="Garcia-Morchon">
              <organization>Philips Research</organization>
            </author>
            <date day="20" month="October" year="2014"/>
            <abstract>
              <t>   The 6LoWPAN and CoAP standards defined for resource-constrained
   devices are fast emerging as the de-facto protocols for enabling the
   Internet-of-Things (IoTs).  Security is an important concern in IoTs
   and the DTLS protocol has been chosen as the preferred method for
   securing CoAP messages.  DTLS is a point-to-point protocol relying on
   IP routing to deliver messages between the client and the server.
   However in some low-power lossy networks (LLNs) with multi-hop, a new
   "joining" device may not be initially IP-routable.  Moreover, it
   exists in a separate, unauthenticated domain at the point of first
   contact and therefore cannot be initially trusted.  This puts
   limitations on the ability to use DTLS as an authentication and
   confidentiality protocol at this stage.  These devices being
   Resource-constrained often cannot accommodate more than one security
   protocol in their code memory.  To overcome this problem we suggest
   DTLS as the single protocol and therefore, we present a DTLS Relay
   solution for the non-IP routable "joining" device to enable it to
   establish a secure DTLS connection with a DTLS Server.  Furthermore
   we present a stateful and stateless mode of operation for the DTLS
   Relay.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kumar-dice-dtls-relay-02"/>
        </reference>
        <reference anchor="RFC4944" target="https://www.rfc-editor.org/info/rfc4944">
          <front>
            <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
            <author fullname="G. Montenegro" initials="G." surname="Montenegro">
              <organization/>
            </author>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar">
              <organization/>
            </author>
            <author fullname="J. Hui" initials="J." surname="Hui">
              <organization/>
            </author>
            <author fullname="D. Culler" initials="D." surname="Culler">
              <organization/>
            </author>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet delivery in IEEE 802.15.4 meshes.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4944"/>
          <seriesInfo name="DOI" value="10.17487/RFC4944"/>
        </reference>
        <reference anchor="RFC3610" target="https://www.rfc-editor.org/info/rfc3610">
          <front>
            <title>Counter with CBC-MAC (CCM)</title>
            <author fullname="D. Whiting" initials="D." surname="Whiting">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="N. Ferguson" initials="N." surname="Ferguson">
              <organization/>
            </author>
            <date month="September" year="2003"/>
            <abstract>
              <t>Counter with CBC-MAC (CCM) is a generic authenticated encryption block cipher mode.  CCM is defined for use with 128-bit block ciphers, such as the Advanced Encryption Standard (AES).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3610"/>
          <seriesInfo name="DOI" value="10.17487/RFC3610"/>
        </reference>
        <reference anchor="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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
0OgOLBIoFI06nf8NbAvk1IigAAA=

-->

</rfc>
