<?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-15" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <front>
    <title abbrev="Join Proxy">Join Proxy for Bootstrapping of Constrained Network Elements</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-15"/>
    <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="November" day="06"/>
    <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.</t>
      <t>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 challenged 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="RFC9147"/> 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 have been enrolled previously into the network, such that the message from the constrained Join Proxy to the 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 for the duration of the DTLS connection between Pledge and Registrar.
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, Pledge, and Voucher.</t>
      <t>The term "Registrar" is used throughout this document instead of
"Join Registrar/Coordinator (JRC)" as defined in <xref target="RFC8366"/>.</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="200" y="36">LLN</text>
                <text x="236" 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 LLN mesh
         .---.
         | R +---.    +----+    +---+        +--+
         |   |    \   |6LR +----+ J |........|P |
         '---'     `--+    |    |   |  clear |  |
                      +----+    +---+        +--+
       Registrar             Join Proxy     Pledge


]]></artwork>
        </artset>
      </figure>
      <t>Without multi-hop 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>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="stateless-message-structure-example-construction">
          <name>Stateless Message structure example construction</name>
          <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.</t>
          <t>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.</t>
          <t>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 Interface IDentifier (IID) is not 64-bits, a different arrangement will be necessary.</t>
        </section>
        <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 whether 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, "CMP"],
    [O_IPv6_LOCATOR,
     h'fda379a6f6ee00000200000064000001', IPPROTO_TCP, 8448],
    ["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>
            <li>the objective-value is "DTLS-EST"</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, "DTLS-EST"],
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_UDP, 5684]]]
]]></artwork>
          </figure>
        </section>
        <section anchor="tisch-discovery">
          <name>6tisch Discovery</name>
          <t>The discovery of CoJP <xref target="RFC9031"/> compatible 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>
          <t>The Enhanced Beason discovery mechanism used in 6tisch does not convey a method to the pledge, (equivalent to an objective value, as described above), so only the CoAP/OSCORE mechanism described in <xref target="RFC9031"/> is announced.</t>
          <t>A 6tisch network that wanted to use DTLS for security would need a new attribute for the enhanced beacon that announced the availability of a DTLS proxy as described in this document.
Future work could provide that capability.</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="extensions-to-the-brski-anproxy-objective-value-registry">
        <name>Extensions to the "BRSKI AN_Proxy Objective Value" Registry</name>
        <t><xref target="I-D.ietf-anima-constrained-voucher"/> previously registered the objective value DTLS-EST.
This document makes use of it, and the registry should be extended to reference this document as well.</t>
      </section>
      <section anchor="extensions-to-the-brski-anjoinregistrar-objective-value-registry">
        <name>Extensions to the "BRSKI AN_join_registrar Objective Value" Registry</name>
        <t>This document registers the objective-value: "BRSKI_RJP"</t>
      </section>
      <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="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"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <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="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"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <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"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <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"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <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="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"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Raza" initials="S." surname="Raza"/>
            <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-21">
          <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="7" month="July" 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-21"/>
        </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"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <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"/>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
            <author fullname="B. Liu" initials="B." role="editor" surname="Liu"/>
            <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"/>
            <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"/>
            <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"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <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"/>
            <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"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <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"/>
            <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"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <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ć"/>
            <author fullname="J. Simon" initials="J." surname="Simon"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <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"/>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar"/>
            <author fullname="J. Hui" initials="J." surname="Hui"/>
            <author fullname="D. Culler" initials="D." surname="Culler"/>
            <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"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="N. Ferguson" initials="N." surname="Ferguson"/>
            <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"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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"/>
            <author fullname="S. Chakrabarti" initials="S." surname="Chakrabarti"/>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <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"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <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"/>
            <author fullname="P. Thubert" initials="P." role="editor" surname="Thubert"/>
            <author fullname="A. Brandt" initials="A." surname="Brandt"/>
            <author fullname="J. Hui" initials="J." surname="Hui"/>
            <author fullname="R. Kelsey" initials="R." surname="Kelsey"/>
            <author fullname="P. Levis" initials="P." surname="Levis"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="R. Struik" initials="R." surname="Struik"/>
            <author fullname="JP. Vasseur" initials="JP." surname="Vasseur"/>
            <author fullname="R. Alexander" initials="R." surname="Alexander"/>
            <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"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="E. Guttman" initials="E." surname="Guttman"/>
            <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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
HM7sq0DLIJFhcxGEH+Rmq1mKnahV5/5oNO6jhds7xFnqlndBm8rerC7yYpJG
pkqdCCldp2eRrpXzcx6whLdmaTT3ss49rdgrn+DpwI47x8rzTgrA3qtXPMQb
qnrAy6U3LD3f2BwOnx/0g9dqyqQ8DUrV4EhcCb3m6BWQAeJMovyN8ZNbVE5d
5nBUUclZaGUfSuESk2TfkBBE4FjQle9Aw85vaAjo3GcI+C3tADJXFSZGCS3M
pWLGQtGsOxalxYKAmgQqKLq57+8wKdxnUbjDmhBAJ3ZtRJc5cd3Z5Mbxrjah
2UlUt7Yi1RQxh3Ia+WqAcOqkMYp4CcIcOjsr9aUNNvs71Ao+PDXIxNdArLHR
mTzOavrlHWJs7HcO3Kj0aRNqNdIb4wOC5RnE9PoP6fhfsvp3b0+PeqeJlFv+
l4v6d7aiFyMEFbOoTAjKwADNBuS1/hJF7dy1PZIPSS41I7DIkcCnOgdh+ej1
HipZbfcOhYZE6a0eC5TepBkcvAWywZCIQOQXhzHSFOg2STbud85s8QxnZlJZ
Aycz4zoRfL8Uh2TESY1XE/46VWP8j1A1PjA3bTzrMSVALQK5Se/w7HylmRjk
aXuwIqJ8or6rrnIElJeUn9mF1ZLni0zEK8vEHgFmK000aUgVSwxeW/0nzb1Z
og21K0NuMSpQgMnLCgIyl3NvlrWgE+3EEzqy9WDzydbG7mCbZOtkd+OOv4Zs
rdI1V7ol4Q4AsPvyXlstE+3uH21Rulyi6fz9ig6e950a9vDSGuIZs7yN3S9e
nogdlsPJuEZeTbFHuCc9Ixg4kpQ5zEl+ifiHbu0Q5bKA8EPOpHNjzMYTukJH
ADIREmirYJENdaxCfCFeNSzTlgLpOCtSzvWhDv5DEmJJv7YaQVLrOGiODMBe
YzyAVsP3SsB3g1X0S8DZpIpWVFK6YcXo+geBoibWKHjAVt0H0Wj9+Gz/+PRw
uZXIWXg6JryzMRmnBGZzARk557gioNh52DuMYrYptUuWWHKD8q0U1nSuPuvG
nmk4i4zMYtY1UE+nAKd41ad8PBsUoFEH+rm9NUDswjZEiLw54mXTOs+mIiNW
/mpXurmqFnkOqYiW4/BpvyTAN9a1RK5goAxeE5CWd5b26vscUiJiOHtXBig4
ug4vs0MfIiXoetGUtiwYF4fSC4ZkjTOTv25ZPxWOll0313C11tK5q2LOHQ8x
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
vTJ2LL8kylAua7ppjKelrEXw00Rte1EG5uBRLDsJ/4o/o+QyJYFoKhdqc0xH
ObG3O7mjRKTQcnYQKdIRIyqKgxcErWWCOoSlTrIbRu1mjKbCHHJzD4dRcvR3
05ljyNTnR3Fe9apY73G6lyhXTreVSy11vDc63rmqHrZGOJpxO28IBEsqhRi6
7wuZ6AmVWOxptVobBrOYH+9VVXoBYtowILwMfp8m1cX3yMT7RXnxBx+zlzfx
aNEPRVHjWWFn2mkywazoM9YwfgI95ygfl6EpadFyyWe7TPcgmtm2EuV/3KWw
MrM1smtNJqsBP5Cm37uAIBnuRaawFfHpTuc1hSADDbmqHCYyYS4+wuz7z/th
WWFW8g+or+b5F9Sf4OcfyhSOKTyc4h1Zpf58NsXhy+AgvLkCqVp/PqyuiuAg
/XilP5wXSUnTO0Q1tNafT2fw0wsUIJO5/naUw3k6xQtGTXenaMg+C7O/6g8v
//a/QITJkWj+7X/mN3/7H1lsYXodZun/+e9h8KfZv//XNE///b980Qvgsati
FPycZnWBM9Mr3pg1F2WFgu/nM2iaJNPgp9kktBOdY/oxFiL4KSku3R6Pqwi2
9MewjNKw97ooo0vqm8OLaX17nBdpBIsY6Gndu8LuezEgeC+us6pHVZV6G5uk
CqUltyKbNyULSo02qnsle+fdtfaabtOjUgein5s+qCTXNEXd+ppzsvldfMhL
QIwtKy6IYA6eYJPBJqHYNwHmoaluZTU8viqbCnJxQrMpOsZ9bFIfA+mDQ9/n
0wJry3zS8GAEtkx6cNqAqf1V8P2bAMNSbXwcV+nzgrInxbWxtTR0ErMgXfaK
2HPl5Waja5PhHBCcGzK0Ez/lG1ncSCXAPAW1GXg3m2Keuz7dOz2H/wLUkZIb
+e387E/ObwTCBoKw8UwaHJ+cHRyd+i+Riuf9cna4v9Dqx8M3ja43nlHXT5mQ
fMM7wE92/Cd7B/KeRlxyq21qtaOtoHfW5tSEVBhJnS/X9GRaeAFFCsNinfuo
cELaJp2gQotGAyeiHJFOjAikKjM4WwTOtr7ZMIlZqioGXaqtNU1IQNF3SP/P
+e42wiN9gDexC+mOnYhbfc0VP7Dx9LKk4CC2FWMklIpW2pQgpqO0sdUx5yD1
S5AbNZab06nZeKLNz0HOTfMCDmYTtc6wfhxW78rC0lpRAi+mjvq39zLLm54l
216fzOPTadjYFD/EgRt3uNz+iG5dfp0xeSCve6XuUamnixnQ9IP2F7QRQ7eH
VNgCk6H5pcPJFEgeUgM319EZ3BSNWwYQ9yPL5S5HhBVHMDVk7jdprUOACgsj
IDe23x3Zm8RrLIMmsEvsJxWux2I/sYSulyXZeN1F2pBFEsJMNPs65BiG4qrF
6MLYjbD14AR0er0e1eGHPm2gl6yQbK6WNwHZ1lQ68bINKnt/nLrJVjRrAMP9
B882+4Od3f6gv7mxMdx+trO9Dm3WI9jvFZb+G1caygJZU+S9xmu6xhbn7lmc
3eZuyRYJEqexfDyubIB/v6N51J7vz1eH7XDA1K8qqqjFiX9BNCpKWOik5iOz
u70ghS3+PWIqtbq9JjLb9sb9r1BNuNXBjr4Df88PFyOSn8Pf/sbe7sZgfzd4
JG0Hz4IfDvae3tn/LCcZOF7d2t3eHugocMbvhcy8OVgLjk70xQdMyby4YRZi
N9g8uOctXogtXrzfRyEiWKOyqu7lHzpaq4LMqAdpeJEXFejL7uZhpX/O6bt8
fN+KPu4GtDwUOr5hQsPvgeIxB4ELlom/Oq3+PwYtvPl3YtD2M2BHO3v3vcUL
sTPYVRiX7h/vVQON4n8IGt2BRQKFolGn838BIDayX2WlAAA=

-->

</rfc>
