<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.9 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC1122 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1122.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3376 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3376.xml">
<!ENTITY RFC3810 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3810.xml">
<!ENTITY RFC4443 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4443.xml">
<!ENTITY RFC4944 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4944.xml">
<!ENTITY RFC6690 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6690.xml">
<!ENTITY RFC7049 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
<!ENTITY RFC7252 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
<!ENTITY RFC7641 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7641.xml">
<!ENTITY RFC7959 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7959.xml">
<!ENTITY RFC8075 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8075.xml">
<!ENTITY RFC8152 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8613 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
<!ENTITY I-D.ietf-core-oscore-groupcomm SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-groupcomm.xml">
<!ENTITY I-D.ietf-core-echo-request-tag SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-echo-request-tag.xml">
<!ENTITY I-D.ietf-ace-oauth-authz SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oauth-authz.xml">
<!ENTITY I-D.ietf-ace-key-groupcomm-oscore SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-key-groupcomm-oscore.xml">
<!ENTITY I-D.tiloca-core-oscore-discovery SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.tiloca-core-oscore-discovery.xml">
<!ENTITY I-D.ietf-core-resource-directory SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-resource-directory.xml">
<!ENTITY I-D.ietf-core-coap-pubsub SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-coap-pubsub.xml">
<!ENTITY I-D.ietf-tls-dtls13 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-dtls13.xml">
<!ENTITY RFC5246 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml">
<!ENTITY RFC6092 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6092.xml">
<!ENTITY RFC6347 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml">
<!ENTITY RFC6550 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6550.xml">
<!ENTITY RFC6636 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6636.xml">
<!ENTITY RFC7258 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7258.xml">
<!ENTITY RFC7346 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7346.xml">
<!ENTITY RFC7390 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7390.xml">
<!ENTITY RFC7731 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7731.xml">
<!ENTITY RFC7967 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7967.xml">
<!ENTITY RFC8323 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8323.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8710 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8710.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-core-groupcomm-bis-00" category="std" obsoletes="7390" updates="7252, 7641">

  <front>
    <title abbrev="Group Communication for CoAP">Group Communication for the Constrained Application Protocol (CoAP)</title>

    <author initials="E." surname="Dijk" fullname="Esko Dijk">
      <organization>IoTconsultancy.nl</organization>
      <address>
        <postal>
          <street>\________________\</street>
          <city>Utrecht</city>
          <country>The Netherlands</country>
        </postal>
        <email>esko.dijk@iotconsultancy.nl</email>
      </address>
    </author>
    <author initials="C." surname="Wang" fullname="Chonggang Wang">
      <organization>InterDigital</organization>
      <address>
        <postal>
          <street>1001 E Hector St, Suite 300</street>
          <city>Conshohocken</city>
          <code>PA 19428</code>
          <country>United States</country>
        </postal>
        <email>Chonggang.Wang@InterDigital.com</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>SE-16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>

    <date year="2020" month="March" day="30"/>

    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document specifies the use of the Constrained Application Protocol (CoAP) for group communication, using UDP/IP multicast as the underlying data transport. Both unsecured and secured CoAP group communication are specified. Security is achieved by use of the Group Object Security for Constrained RESTful Environments (Group OSCORE) protocol. The target application area of this specification is any group communication use cases that involve resource-constrained networks. The most common of such use cases are also discussed. This document replaces <xref target="RFC7390"/> and updates <xref target="RFC7252"/> and <xref target="RFC7641"/>.</t>



    </abstract>


  </front>

  <middle>


<section anchor="chap-intro" title="Introduction">
<t>This document specifies group communication using the Constrained Application Protocol (CoAP) <xref target="RFC7252"/> together with UDP/IP multicast. CoAP is a RESTful communication protocol that is used in resource-constrained nodes, and in resource-constrained networks where packet sizes should be small. This area of use is summarized as Constrained RESTful Environments (CoRE).</t>

<t>One-to-many group communication can be achieved in CoAP, by a client using UDP/IP multicast data transport to send multicast CoAP request messages. In response, each server in the addressed group sends a response message back to the client over UDP/IP unicast. Notable CoAP implementations supporting group communication include the framework "Eclipse Californium" 2.0.x <xref target="Californium"/> from the Eclipse Foundation and the "Implementation of CoAP Server &amp; Client in Go" <xref target="Go-OCF"/> from the Open Connectivity Foundation (OCF).</t>

<t>Both unsecured and secured CoAP group communication over UDP/IP multicast are specified in this document. Security is achieved by using Group Object Security for Constrained RESTful Environments (Group OSCORE) <xref target="I-D.ietf-core-oscore-groupcomm"/>, which in turn builds on Object Security for Constrained Restful Environments (OSCORE) <xref target="RFC8613"/>. This method provides end-to-end application-layer security protection of CoAP messages, by using CBOR Object Signing and Encryption (COSE) <xref target="RFC7049"/><xref target="RFC8152"/>.</t>

<t>All guidelines in <xref target="RFC7390"/> are updated by this document, which replaces and obsoletes <xref target="RFC7390"/>. Furthermore, this document updates <xref target="RFC7252"/>, by adding security for CoAP group communication and updates <xref target="RFC7641"/>, by adding the multicast usage of CoAP Observe.</t>

<t>All sections in the body of this document are normative, while appendices are informative. For additional background about use cases for CoAP group communication in resource-constrained devices and networks, see <xref target="appendix-usecases"/>.</t>

<section anchor="scope" title="Scope">
<t>For group communication, only solutions that use CoAP over UDP/IP multicast are in the scope of this document. There are alternative methods to achieve group communication using CoAP, for example Publish-Subscribe <xref target="I-D.ietf-core-coap-pubsub"/> which uses a central broker server that CoAP clients access via unicast communication. These methods may be usable for the same or similar use cases as are targeted in this document.</t>

<t>Furthermore, this document defines Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> as the default group communication security solution for CoAP. Security solutions for group communication and configuration other than Group OSCORE are not in scope. General principles for secure group configuration are in scope.</t>

<!--
This document entirely obsoletes RFC 7390. The expanation below is true and good, but not needed in the body of this document.

The experimental group configuration protocol in Section 2.6.2 of {{RFC7390}} is not in the scope of this document; thus, that remains an experimental protocol. Since application protocols defined on top of CoAP often define their own specific method of group configuration, the experimental protocol of {{RFC7390}} has not been subject to enough experimentation to warrant a change of this status.
-->

</section>
<section anchor="terminology" title="Terminology">
<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>This specification requires readers to be familiar with CoAP terminology <xref target="RFC7252"/>. Terminology related to group communication is defined in <xref target="sec-groupdef"/>.</t>

<t>Furthermore, "Security material" refers to any security keys, counters or parameters required to participate in secure group communication with other devices that share the same security material.</t>

</section>
</section>
<section anchor="chap-general-groupcomm" title="General Group Communication Operation">
<t>The general operation of group communication, applicable for both unsecured and secured operation, is specified in this section by going through the stack from top to bottom. First, different group types are defined in <xref target="sec-groupdef"/>. Group configuration (e.g. group creation and maintenance which are usually done by an application, user or commissioning entity) is considered next in <xref target="sec-groupconf"/>. Then the use of CoAP for group communication including support for protocol extensions (block-wise transfer, Observe) follows in <xref target="sec-coap-usage"/>. How CoAP group messages are carried over various transport layers is the subject of <xref target="sec-transport"/>. Finally, <xref target="sec-other-protocols"/> covers the interworking of CoAP group communication with other protocols that may operate in the same network.</t>

<section anchor="sec-groupdef" title="Group Definition">
<t>Three types of groups and their mutual relations are defined in this section: CoAP group, application group, and security group.</t>

<t>A CoAP group is defined as a set of CoAP endpoints, where each endpoint is configured to receive CoAP multicast messages that are sent to the group's associated IP multicast address and UDP port. An endpoint may be a member of multiple CoAP groups by subscribing to multiple IP multicast groups. Group membership(s) of an endpoint may dynamically change over time. A device sending a CoAP multicast message to a group is not necessarily itself a member of this group: it is a member only if it also has a CoAP endpoint listening to the group's associated IP multicast address and UDP port. A CoAP group can be encoded within a Group URI, i.e. a CoAP URI that has the "coap" scheme and includes in the authority part either an IP multicast address or a group hostname (e.g., a Group Fully Qualified Domain Name (FQDN)) that can be resolved to an IP multicast address. A Group URI also contains an optional UDP port number in the authority part. Group URIs follow the regular CoAP URI syntax (see Section 6 of <xref target="RFC7252"/>).</t>

<t>Besides CoAP groups, that have relevance at the level of IP networks and CoAP endpoints, there are also application groups. An application group is a set of CoAP endpoints that share a common set of CoAP resources. An endpoint may be a member of multiple application groups. An application group has relevance at the application level &#8211; for example an application group could denote all lights in an office room or all sensors in a hallway. There can be a one-to-one or a one-to-many relation between a CoAP group and application group(s). An application group is optionally identified explicitly in the path component or query component of a Group URI. If not explicitly identified, the application group is specified implicitly in a Group URI by choice of CoAP group and resource path.</t>

<t>For secure group communication, a security group is required. A security group is a group of endpoints that share the same security material, such that they can mutually exchange secured messages and verify secured messages. An endpoint may be a member of multiple security groups. There can be a one-to-one or a one-to-many relation between security groups and CoAP groups. Also, there can be a one-to-one or a one-to-many relation between security groups and application groups. Any two application groups associated to the same security group do not share any resource. A special security group named "NoSec" identifies group communication without any security at the transport layer and/or application layer.</t>

<t>Using the above group type definitions, a CoAP group communication message sent by an endpoint can be represented as a tuple that contains one instance of each group type:</t>

<figure><artwork><![CDATA[
(application group, CoAP group, security group)
]]></artwork></figure>

<t><xref target="fig-group-relation"/> summarizes the relations between the different types of groups described above in UML class diagram notation. The items in square brackets are optionally defined.</t>

<figure title="Relation Among Different Group Types" anchor="fig-group-relation"><artwork align="center"><![CDATA[
+------------------------+                 +------------------+
|   Application group    |                 |    CoAP group    |
|........................|                 |..................|
|                        |                 |                  |
| URI path / resource(s) +-----------------+ IP mcast address |
| [ URI query string ]   |  1...N       1  | UDP port         |
| [ group name ]         |                 |                  |
|                        |                 |                  |
+-------------+----------+                 +---------+--------+
              |  1...N                               |  1...N
              |                                      |
              |                                      |                
              |                                      |  1...N
              |                           +----------+----------+
              |                           |   Security group    |
              |                           |.....................|
              |                           |                     |
              \---------------------------+ Security group name |
                                   1...N  | Security material   |
                                          |                     |
                                          +---------------------+
]]></artwork></figure>

<t><xref target="fig-group-relation-example"/> provides a deployment example of the relations between the different types of groups. It shows six CoAP servers (Srv1-Srv6) and their respective resources hosted (/resX). There are three application groups (1, 2, 3) and two security groups (1, 2). Security Group 1 is used by both Application Group 1 and 2. Three clients (Cli1, Cli2, Cli3) are configured with security material for Security Group 1. One cient (Cli4) is configured with security material for Security Group 2. All the shown application groups use the same CoAP group (not shown in the figure), i.e. one specific multicast IP address and UDP port on which all the shown resources are hosted for each server.</t>

<figure title="Deployment Example of Different Group Types" anchor="fig-group-relation-example"><artwork align="center"><![CDATA[
 _________________________________    _________________________________
/                                 \  /                                 \
|        +---------------------+  |  |  +---------------------+        |
|        | Application Group 1 |  |  |  | Application Group 3 |        |
|        |                     |  |  |  |                     |        |
|  Cli1  | Srv1   Srv2   Srv3  |  |  |  | Srv5   Srv6         |  Cli4  |
|        | /resA  /resA  /resA |  |  |  | /resC  /resC        |        |
|  Cli2  +---------------------+  |  |  | /resD  /resD        |        |
|                                 |  |  +---------------------+        |
|  Cli3   Security Group 1        |  |                                 |
|                                 |  |    Security Group 2             | 
|        +---------------------+  |  \_________________________________/
|        | Application Group 2 |  |
|        |                     |  |
|        | Srv1   Srv4         |  |
|        | /resB  /resB        |  |
|        +---------------------+  |
\_________________________________/
]]></artwork></figure>

</section>
<section anchor="sec-groupconf" title="Group Configuration">

<section anchor="group-naming" title="Group Naming">
<t>A CoAP group is identified and named by the authority component in the Group URI, which includes host and optional port number. It is recommended to configure an endpoint by default with an IP multicast address literal, instead of a hostname. This is because DNS infrastructure may not be deployed in many constrained networks. In case a group hostname is configured, it can be uniquely mapped to an IP multicast address via DNS resolution - if DNS client functionality is available in the clients and the DNS service is supported in the network. Some examples of hierarchical CoAP group FQDN naming (and scoping) for a building control application are shown in Section 2.2 of <xref target="RFC7390"/>.</t>

<t>An application group can be named in many ways through different types of identifiers, such as numbers, URIs or other strings. An application group name or identifier, if explicitly encoded, is typically included in the path component or query component of a Group URI. Appendix A of <xref target="I-D.ietf-core-resource-directory"/> shows registration of application groups into a Resource Directory, along with the CoAP group it maps to.</t>

<t>A security group is identified by a stable and invariant string used as group name, which is generally not related with other kind of group identifiers, specific to the chosen security solution. The "NoSec" security group is typically identified by the absence of any name or identifier, and of any security-related data structures in the CoAP message.</t>

<!--
OLD TEXT

A security group is identified by a Group Identifier (Gid) specific to the chosen security solution, for example a key identifier. The "NoSec" security group is typically identified by the absence of any Gid or any security-related data structures in the CoAP message.
-->

</section>
<section anchor="group-creation-and-membership" title="Group Creation and Membership">
<t>To create a CoAP group, a configuring entity defines an IP multicast address (or hostname) for the group and optionally a UDP port number in case it differs from the default CoAP port 5683. Then, it configures one or more devices as listeners to that IP multicast address, with a CoAP endpoint listening on the group's associated UDP port. These endpoints/devices are the group members. The configuring entity can be, for example, a local application with pre-configuration, a user, a software developer, a cloud service, or a local commissioning tool. Also, the devices sending CoAP requests to the group in the role of CoAP client need to be configured with the same information, even though they are not necessarily group members. One way to configure a client is to supply it with a CoAP Group URI. The IETF does not define a mandatory, standardized protocol to accomplish CoAP group creation. <xref target="RFC7390"/> defines an experimental protocol for configuration of group membership for unsecured group communication, based on JSON-formatted configuration resources.</t>

<t>To create an application group, a configuring entity may configure a resource (name) or set of resources on a CoAP endpoint, such that a request sent by a configured CoAP client with a configured URI path will be processed by one or more CoAP servers that have the same URI path configured - i.e. the application group members.</t>

<t>To create a security group, selected CoAP endpoints are configured with the same security material in case communication is secured within the group. The part of the process that involves secure distribution of group keys MAY use standardized communication with a Group Manager as defined in <xref target="chap-oscore"/>. For unsecure group communication using the "NoSec" security group, any CoAP endpoint may become a group member at any time: there is no (central) configuring entity that needs to provide the security material for this group. This means that group creation and membership cannot be tightly controlled for the "NoSec" group.</t>

<t>The configuration of groups and membership may be performed at different moments in the life-cycle of a device; for example during product (software) creation, in the factory, at a reseller, on-site during first deployment, or on-site during a system reconfiguration operation.</t>

</section>
<section anchor="group-discovery" title="Group Discovery">

<t>It is possible for CoAP endpoints to discover application groups as well as CoAP groups, by using the RD-Groups usage pattern of the CoRE Resource Directory (RD), as defined in Appendix A of <xref target="I-D.ietf-core-resource-directory"/>.</t>

<t>In particular, an application group can be registered to the RD, specifying the reference IP multicast address, hence its associated CoAP group. The registration is typically performed by a Commissioning Tool. Later on, CoAP endpoints can discover the registered application groups and related CoAP group, by using the lookup interface of the RD.</t>

<t>When secure communication is provided with Group OSCORE (see <xref target="chap-oscore"/>), the approach described in <xref target="I-D.tiloca-core-oscore-discovery"/> and also based on the RD can be used, in order to discover the security group to join.</t>

<t>In particular, the responsible OSCORE Group Manager registers its own security groups to the RD, as links to its own corresponding resources for joining the security groups <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. Later on, CoAP endpoints can discover the registered security groups and related application groups, by using the lookup interface of the RD, and then join the security group through the respective Group Manager.</t>

</section>
<section anchor="group-maintenance" title="Group Maintenance">
<t>Maintenance of a group includes any necessary operations to cope with changes in a system, such as: adding group members, removing group members, changing group security material, reconfiguration of UDP port and/or IP multicast address, reconfiguration of the Group URI, renaming of application groups, splitting of groups, or merging of groups.</t>

<t>For unsecured group communication (see <xref target="chap-unsecured-groupcomm"/>), addition/removal of CoAP group members is simply done by configuring these devices to start/stop listening to the group IP multicast address, and to start/stop the CoAP server listening to the group IP multicast address and UDP port.</t>

<t>For secured group communication (see <xref target="chap-oscore"/>), the protocol Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> is mandatory to implement. When using Group OSCORE, CoAP endpoints participating in group communication are also members of a corresponding OSCORE security group, and thus share a common set of cryptographic material. Additional related maintenance operations are discussed in <xref target="chap-sec-group-maintenance"/>.</t>

</section>
</section>
<section anchor="sec-coap-usage" title="CoAP Usage">

<section anchor="sec-request-response" title="Request/Response Model">
<t>A CoAP client is an endpoint able to transmit CoAP requests and receive CoAP responses. Since the underlying UDP transport supports multiplexing by means of UDP port number, there can be multiple independent CoAP clients operational on a single host. On each UDP port, an independent CoAP client can be hosted. Each independent CoAP client sends requests that use the associated endpoint's UDP port number as the UDP source port of the request.</t>

<t>All CoAP requests that are sent via IP multicast MUST be Non-confirmable (Section 8.1 of <xref target="RFC7252"/>).  The Message ID in an IP multicast CoAP message is used for optional message deduplication by both clients and servers, as detailed in Section 4.5 of <xref target="RFC7252"/>.</t>

<t>A server sends back a unicast response to the CoAP group request - but the server MAY suppress the response if the server chooses so and if permitted by the rules in this document. The unicast responses received by the CoAP client may be a mixture of success (e.g., 2.05 Content) and failure (e.g., 4.04 Not Found) codes, depending on the individual server processing results.</t>

<t>The CoAP No-Response Option <xref target="RFC7967"/> can be used by a client to influence the default response suppression on the server side. It is RECOMMENDED for a server to implement this option only on selected resources where it is useful in the application context. If the Option is supported on a resource, it MUST override the default response suppression of that resource.</t>

<t>Any default response suppression by a server SHOULD be performed in a consistent way, such that if a request on a resource produces a Response Code and this response is not suppressed, then a later request on the same resource that produces a response with the same Response Code is also not suppressed.</t>

<t>A CoAP client MAY repeat a multicast request using the same Token value and same Message ID value, in order to ensure that enough (or all) group members have been reached with the request. This is useful in case a number of group members did not respond to the initial request and the client suspects that the request did not reach these group members. However, in case one or more servers did receive the initial request but the response to that request was lost, this repeat does not help to retrieve the lost response(s) if the server(s) implement the optional Message ID based deduplication (Section 4.5 of <xref target="RFC7252"/>).</t>

<t>A CoAP client MAY also repeat a multicast request using the same Token value and a different Message ID, in which case all servers that received the initial request will again process the repeated request since it appears within a new CoAP message. This is useful in case a client suspects that one or more response(s) to its original request were lost and the client needs to collect more, or even all, responses from group members, even if this comes at the cost of the overhead of certain group members responding twice (once to the original request, and once to the repeated request with different Message ID).</t>

<t>The CoAP client can distinguish the origin of multiple server responses by the source IP address of the UDP message containing the CoAP response and/or any other available application-specific source identifiers contained in the CoAP response, such as an application-level unique ID associated to the server. If secure communication is provided with Group OSCORE (see <xref target="chap-oscore"/>), additional security-related identifiers enable the client to retrieve the right security material for decrypting each response and authenticating its source.</t>

<t>While processing a response, the source endpoint of the response is not exactly matched to the destination endpoint of the request, since for a multicast request these will never match. This is specified in Section 8.2 of <xref target="RFC7252"/>. In case a single client has sent multiple group requests and concurrent CoAP transactions are ongoing, the responses received by that client are matched to a request using the Token value. Due to UDP level multiplexing, the UDP destination port of the response MUST match to the client endpoint's UDP port value, i.e. to the UDP source port of the client's request.</t>

<t>For multicast CoAP requests, there are additional constraints on the reuse of Token values at the client, compared to the unicast case. In the unicast case, receiving a response usually frees up its Token value, since no more responses to the same request will follow. Therefore, such value would become available for reuse. Note that <xref target="I-D.ietf-core-echo-request-tag"/> updates the Token processing of <xref target="RFC7252"/>, so that clients do not use Tokens in a way that risk associating responses with a wrong request. This holds especially when using a security protocol that does not provide bindings between requests and responses, e.g. DTLS <xref target="RFC6347"/><xref target="I-D.ietf-tls-dtls13"/> and TLS <xref target="RFC5246"/><xref target="RFC8446"/>. In such a case, a client should not reuse a (freed up) Token value within a secure connection, until this has been rekeyed.</t>

<t>However, for multicast CoAP, the number of responses is not bound a priori. Therefore, the client cannot use the reception of a response as a trigger to "free up" a Token value for reuse. Moreover, reusing a Token value too early could lead to incorrect response/request matching on the client, and would be a protocol error.  Therefore, the time between reuse of Token values used in multicast requests MUST be greater than:</t>

<figure><artwork><![CDATA[
MIN_TOKEN_REUSE_TIME = (NON_LIFETIME + MAX_LATENCY +
                        MAX_SERVER_RESPONSE_DELAY)
]]></artwork></figure>

<t>where NON_LIFETIME and MAX_LATENCY are defined in Section 4.8 of <xref target="RFC7252"/>.  This specification defines MAX_SERVER_RESPONSE_DELAY as in <xref target="RFC7390"/>, that is: the expected maximum response delay over all servers that the client can send a multicast request to.  This delay includes the maximum Leisure time period as defined in Section 8.2 of <xref target="RFC7252"/>. However, CoAP does not define a time limit for the server response delay.  Using the default CoAP parameters, the Token reuse time MUST be greater than 250 seconds plus MAX_SERVER_RESPONSE_DELAY.  A preferred solution to meet this requirement is to generate a new unique Token for every new multicast request, such that a Token value is never reused.  If a client has to reuse Token values for some reason, and also MAX_SERVER_RESPONSE_DELAY is unknown, then using MAX_SERVER_RESPONSE_DELAY = 250 seconds is a reasonable guideline. The time between Token reuses is in that case set to a value greater than 500 seconds.</t>

<t>When securing Group CoAP communications with Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>, secure binding between requests and responses is ensured (see <xref target="chap-oscore"/>). Thus, a client may reuse a Token value after it has been freed up, as discussed above for the multicast case and considering a reuse time greater than MIN_TOKEN_REUSE_TIME. If an alternative security protocol for Group CoAP is defined in the future and it does not ensure secure binding between requests and responses, a client MUST follow the Token processing requirements for the unicast case discussed above, as defined in <xref target="I-D.ietf-core-echo-request-tag"/>.</t>

<t>Another method to more easily meet the above constraint is to instantiate multiple CoAP clients at multiple UDP ports on the same host. The Token values only have to be unique within the context of a single CoAP client, so using multiple clients can make it easier to meet the constraint.</t>

<t>Since a client sending a multicast request with a Token T will accept multiple responses with the same Token T, there is a risk that the same server sends multiple responses with the same Token T back to the client. For example, this server might not implement the optional CoAP message deduplication based on Message ID, or it might be a malicious/compromised server acting out of specification. To mitigate issues with multiple responses from one server bound to a same multicast request, the client has to ensure that, as long as the the CoAP Token used for a multicast request is retained, at most one response to that request per server is accepted, with the exception of Observe notifications <xref target="RFC7641"/> (see <xref target="sec-observe"/>).</t>

<t>To this end, upon receiving a response corresponding to a multicast request, the client MUST perform the following actions. First, the client checks whether it previously received a valid response to this request from the same originating server of the just-received response. If the check yields a positive match and the response is not an Observe notification (i.e., it does not include an Observe option), the client SHALL stop processing the response. Upon eventually freeing up the Token value of a multicast request for possible reuse, the client MUST also delete the list of responding servers associated to that request.</t>

<!--
Note that, in case response messages are secured with Group OSCORE (see {{chap-oscore}}), the client has to first successfully decrypt and verify a response, before asserting it to be an Observe notification, i.e. a response including an Inner Observe option with value relevant to the two client and server endpoints (see Section 4.1.3.5 of {{RFC8613}}).
-->

</section>
<section anchor="port-and-uri-path-selection" title="Port and URI Path Selection">
<t>A server that is a member of a CoAP group listens for CoAP messages on the group's IP multicast address, usually on the CoAP default UDP port 5683, or another non-default UDP port if configured. Regardless of the method for selecting the port number, the same port number MUST be used across all CoAP servers that are members of a group and across all CoAP clients performing the requests to that group. The URI Path used in the request is preferably a path that is known to be supported across all group members. However there are valid use cases where a request is known to be successful for a subset of the CoAP group, for example only members of a specific application group, while those group members for which the request is unsuccessful (for example because they are outside the application group) either ignore the multicast request or respond with an error status code.</t>

<t>One way to create multiple CoAP groups is using different UDP ports with the same IP multicast address, in case the devices' network stack only supports a limited number of IP multicast group memberships. However, it must be taken into account that this incurs additional processing overhead on each CoAP server participating in at least one of these groups: messages to groups that are not of interest to the node are only discarded at the higher transport (UDP) layer instead of directly at the network (IP) layer.</t>

<t>Port 5684 is reserved for DTLS-secured CoAP and MUST NOT be used for any CoAP group communication.</t>

<t>For a CoAP server node that supports resource discovery as defined in Section 2.4 of <xref target="RFC7252"/>, the default port 5683 MUST be supported (see Section 7.1 of <xref target="RFC7252"/>) for the "All CoAP Nodes" multicast group as detailed in <xref target="sec-transport"/>.</t>

</section>
<section anchor="sec-proxy" title="Proxy Operation">

<t>CoAP enables a client to request a forward-proxy to process a CoAP request on its behalf, as described in Section 5.7.2 and 8.2.2 of <xref target="RFC7252"/>. For this purpose, the client specifies either the request group URI as a string in the Proxy-URI option or it uses the Proxy-Scheme option with the group URI constructed from the usual Uri-* options. The forward-proxy then resolves the group URI to a destination CoAP group, multicasts the CoAP request, receives the responses and forwards all the individual (unicast) responses back to the client.</t>

<t>However, there are certain issues and limitations with this approach:</t>

<t><list style="symbols">
  <t>The CoAP client component that sent a unicast CoAP request to the proxy may be expecting only one (unicast) response, as usual for a CoAP unicast request. Instead, it receives multiple (unicast) responses, potentially leading to fault conditions in the component or to discarding any received responses following the first one. This issue may occur even if the application calling the CoAP client component is aware that the forward-proxy is going to execute a CoAP group URI request.</t>
  <t>Each individual CoAP response received by the client will appear to originate (based on its IP source address) from the CoAP Proxy, and not from the server that produced the response.  This makes it impossible for the client to identify the server that produced each response, unless the server identity is contained as a part of the response payload or inside a CoAP Option in the response.</t>
</list></t>

<t>A solution to the above issues is for the proxy to collect all the individual (unicast) responses to a CoAP group request and then send back only a single (aggregated) response to the client. However, this solution brings up new issues:</t>

<t><list style="symbols">
  <t>The proxy does not know how many members there are in the group or how many group members will actually respond. Also, the proxy does not know for how long to collect responses before sending back the aggregated response to the client. A CoAP client that is not using a Proxy might face the same problems in collecting responses to a multicast request. However, the client itself would typically have application-specific rules or knowledge on how to handle this situation, while an application-agnostic CoAP Proxy would typically not have this knowledge.</t>
  <t>There is no default format defined in CoAP for aggregation of multiple responses into a single response. Such a format could be standardized based on, for example, the multipart content-format <xref target="RFC8710"/>.</t>
</list></t>

<t>Due to the above issues, it is RECOMMENDED that a CoAP Proxy only processes a group URI request if it is explicitly enabled to do so. The default response (if the function is not explicitly enabled) to a group URI request is 5.01 (Not Implemented). Furthermore, a proxy SHOULD be explicitly configured (e.g. by white-listing and/or client authentication) to allow proxied CoAP multicast requests only from specific client(s).</t>

<t>The operation of HTTP-to-CoAP proxies for multicast CoAP requests is specified in Section 8.4 and 10.1 of <xref target="RFC8075"/>. In this case, the "application/http" media type is used to let the proxy return multiple CoAP responses &#8211; each translated to a HTTP response &#8211; back to the HTTP client. Of course, in this case the HTTP client sending a group URI to the proxy needs to be aware that it is going to receive this format, and needs to be able to decode it into the responses of multiple CoAP servers. Also, the IP source address of each CoAP response cannot be determined anymore from the application/http response.</t>

</section>
<section anchor="sec-congestion" title="Congestion Control">
<t>CoAP group requests may result in a multitude of responses from different nodes, potentially causing congestion. Therefore, both the sending of IP multicast requests and the sending of the unicast CoAP responses to these multicast requests should be conservatively controlled.</t>

<t>CoAP <xref target="RFC7252"/> reduces IP multicast-specific congestion risks through the following measures:</t>

<t><list style="symbols">
  <t>A server may choose not to respond to an IP multicast request if there is nothing useful to respond to, e.g., error or empty response (see Section 8.2 of <xref target="RFC7252"/>).</t>
  <t>A server should limit the support for IP multicast requests to specific resources where multicast operation is required (Section 11.3 of <xref target="RFC7252"/>).</t>
  <t>An IP multicast request MUST be Non-confirmable (Section 8.1 of <xref target="RFC7252"/>).</t>
  <t>A response to an IP multicast request SHOULD be Non-confirmable (Section 5.2.3 of <xref target="RFC7252"/>).</t>
  <t>A server does not respond immediately to an IP multicast request and should first wait for a time that is randomly picked within a predetermined time interval called the Leisure (Section 8.2 of <xref target="RFC7252"/>).</t>
</list></t>

<t>Additional guidelines to reduce congestion risks defined in this document are as follows:</t>

<t><list style="symbols">
  <t>A server in a constrained network should only support group communication GET for resources that are small. This can consist, for example, in having the payload of the response as limited to approximately 5% of the IP Maximum Transmit Unit (MTU) size, so that it fits into a single link-layer frame in case IPv6 over Low-Power Wireless Personal Area Networks (6LoWPAN) (see Section 4 of <xref target="RFC4944"/>) is used.</t>
  <t>A server SHOULD minimize the payload size of a response to a multicast GET on "/.well-known/core" by using hierarchy in arranging link descriptions for the response. An example of this is given in Section 5 of <xref target="RFC6690"/>.</t>
  <t>A server MAY minimize the payload size of a response to a multicast GET (e.g., on "/.well-known/core") by using CoAP block-wise transfers <xref target="RFC7959"/> in case the payload is long, returning only a first block of the CoRE Link Format description.  For this reason, a CoAP client sending an IP multicast CoAP request to "/.well-known/core" SHOULD support block-wise transfers. See also <xref target="sec-block-wise"/>.</t>
  <t>A client SHOULD use CoAP group communication with the smallest possible IP multicast scope that fulfills the application needs. As an example, site-local scope is always preferred over global scope IP multicast if this fulfills the application needs. Similarly, realm-local scope is always preferred over site-local scope if this fulfills the application needs.</t>
</list></t>

</section>
<section anchor="sec-observe" title="Observing Resources">
<t>The CoAP Observe Option <xref target="RFC7641"/> is a protocol extension of CoAP, that allows a CoAP client to retrieve a representation of a resource and automatically keep this representation up-to-date over a longer period of time. The client gets notified when the representation has changed. <xref target="RFC7641"/> does not mention whether the Observe Option can be combined with CoAP multicast. This section updates <xref target="RFC7641"/> with the use of the Observe Option in a CoAP multicast GET request and defines normative behavior for both client and server.</t>

<t>Multicast Observe is a useful way to start observing a particular resource on all members of a (multicast) group at the same time. Group members that do not have this particular resource or do not allow the GET method on it will either respond with an error status &#8211; 4.04 Not Found or 4.05 Method Not Allowed, respectively &#8211; or will silently suppress the response following the rules of <xref target="sec-request-response"/>, depending on server-specific configuration.</t>

<t>A client that sends a multicast GET request with the Observe Option MAY repeat this request using the same Token value and the same Observe Option value, in order to ensure that enough (or all) group members have been reached with the request. This is useful in case a number of group members did not respond to the initial request. The client MAY additionally use the same Message ID in the repeated request to avoid that group members that had already received the initial request would respond again. Note that using the same Message ID in a repeated request will not be helpful in case of loss of a response message, since the server that responded already will consider the repeated request as a duplicate message. On the other hand, if the client uses a different, fresh Message ID in the repeated request, then all the group members that receive this new message will typically respond again, which increases the network load.</t>

<t>A client that sent a multicast GET request with the Observe Option MAY follow up by sending a new unicast CON request with the same Token value and same Observe Option value to a particular server, in order to ensure that the particular server receives the request. This is useful in case a specific group member, that was expected to respond to the initial group request, did not respond to the initial request. The client in this case always uses a Message ID that differs from the initial multicast message.</t>

<t>In the above client behaviors, the Token value is kept identical to the initial request to avoid that a client is included in more than one entry in the list of observers (Section 4.1 of <xref target="RFC7641"/>).</t>

<t>Before repeating a request as specified above, the client SHOULD wait for at least the expected round-trip time plus the Leisure time period defined in Section 8.2 of <xref target="RFC7252"/>, to give the server time to respond.</t>

<t>A server that receives a legitimate GET request with the Observe Option, for which request processing is successful, SHOULD NOT suppress the response to this request, because the client is obviously interested in the resource representation. A server that adds a client to the list of observers for a resource due to an Observe request MUST NOT suppress the response to this request.</t>

<t>A server SHOULD have a mechanism to verify liveness of its observing clients and the continued interest of these clients in receiving the observe notifications. This can be implemented by sending notifications occassionally using a Confirmable message. See Section 4.5 of <xref target="RFC7641"/> for details. This requirement overrides the regular behavior of sending Non-Confirmable notifications in response to a Non-Confirmable request.</t>

<t>For observing a group of servers through a CoAP-to-CoAP proxy or HTTP-CoAP proxy, the limitations stated in <xref target="sec-proxy"/> apply.</t>

</section>
<section anchor="sec-block-wise" title="Block-Wise Transfer">

<t>Section 2.8 of <xref target="RFC7959"/> specifies how a client can use block-wise transfer (Block2 Option) in a multicast GET request to limit the size of the initial response of each server. The client has to use unicast for any further requests, separately addressing each different server, in order to retrieve more blocks of the resource from that server, if any. Also, a server (group member) that needs to respond to a multicast request with a particularly large resource can use block-wise transfer (Block2 Option) at its own initiative, to limit the size of the initial response. Again, a client would have to use unicast for any further requests to retrieve more blocks of the resource.</t>

<t>A solution for multicast block-wise transfer using the Block1 Option is not specified in <xref target="RFC7959"/> nor in the present document. Such a solution would be useful for multicast PUT/POST/PATCH/iPATCH requests, to efficiently distribute a large request payload as multiple blocks to all members of a CoAP group. Multicast usage of Block1 is non-trivial due to potential message loss (leading to missing blocks or missing confirmations), and potential diverging block size preferences of different members of the multicast group.</t>

</section>
</section>
<section anchor="sec-transport" title="Transport">
<t>In this document only UDP is considered as a transport protocol, both over IPv4 and IPv6. Therefore, <xref target="RFC8323"/> (CoAP over TCP, TLS, and WebSockets) is not in scope as a transport for group communication.</t>

<section anchor="sec-udptransport" title="UDP/IPv6 Multicast Transport">
<t>CoAP group communication can use UDP over IPv6 as a transport protocol, provided that IPv6 multicast is enabled. IPv6 multicast MAY be supported in a network only for a limited scope. For example, <xref target="sec-rpl"/> describes the potential limited support of RPL for multicast, depending on how the protocol is configured.</t>

<t>For a CoAP server node that supports resource discovery as defined in Section 2.4 of <xref target="RFC7252"/>, the default port 5683 MUST be supported as per Section 7.1 and 12.8 of <xref target="RFC7252"/> for the "All CoAP Nodes" multicast group. An IPv6 CoAP server SHOULD support the "All CoAP Nodes" groups with at least link-local (2), admin-local (4) and site-local (5) scopes. An IPv6 CoAP server on a 6LoWPAN node (see <xref target="sec-6lowpan"/>) SHOULD also support the realm-local (3) scope.</t>

<t>Note that a client sending an IPv6 multicast CoAP message to a port that is not supported by the server will not receive an ICMPv6 Port Unreachable error message from that server, because the server does not send it in this case, per Section 2.4 of <xref target="RFC4443"/>.</t>

</section>
<section anchor="udpipv4-multicast-transport" title="UDP/IPv4 Multicast Transport">
<t>CoAP group communication can use UDP over IPv4 as a transport protocol, provided that IPv4 multicast is enabled. For a CoAP server node that supports resource discovery as defined in Section 2.4 of <xref target="RFC7252"/>, the default port 5683 MUST be supported as per Section 7.1 and 12.8 of <xref target="RFC7252"/>, for the "All CoAP Nodes" IPv4 multicast group.</t>

<t>Note that a client sending an IPv4 multicast CoAP message to a port that is not supported by the server will not receive an ICMP Port Unreachable error message from that server, because the server does not send it in this case, per Section 3.2.2 of <xref target="RFC1122"/>.</t>

</section>
<section anchor="sec-6lowpan" title="6LoWPAN">
<t>In 6LoWPAN <xref target="RFC4944"/> networks, IPv6 packets (up to 1280 bytes) may be fragmented into smaller IEEE 802.15.4 MAC frames (up to 127 bytes), if the packet size requires this. Every 6LoWPAN IPv6 router that receives a multi-fragment packet reassembles the packet and refragments it upon transmission. Since the loss of a single fragment implies the loss of the entire IPv6 packet, the performance in terms of packet loss and throughput of multi-fragment multicast IPv6 packets is typically far worse than the performance of single-fragment IPv6 multicast packets. For this reason, a CoAP request sent over multicast in 6LoWPAN networks SHOULD be sized in such a way that it fits in a single IEEE 802.15.4 MAC frame, if possible.</t>

<t>On 6LoWPAN networks, multicast groups can be defined with realm-local scope <xref target="RFC7346"/>. Such a realm-local group is restricted to the local 6LoWPAN network/subnet. In other words, a multicast request to that group does not propagate beyond the 6LoWPAN network segment where the request originated. For example, a multicast discovery request can be sent to the realm-local "All CoAP Nodes" IPv6 multicast group (see <xref target="sec-udptransport"/>) in order to discover only CoAP servers on the local 6LoWPAN network.</t>

</section>
</section>
<section anchor="sec-other-protocols" title="Interworking with Other Protocols">

<section anchor="mldmldv2igmpigmpv3" title="MLD/MLDv2/IGMP/IGMPv3">
<!-- Section 4.2 of {{RFC7390}} has the original content -->

<t>CoAP nodes that are IP hosts (i.e., not IP routers) are generally unaware of the specific IP multicast routing/forwarding protocol
being used in their network.  When such a host needs to join a specific (CoAP) multicast group, it requires a way to signal to IP multicast routers
which IP multicast address(es) it needs to listen to.</t>

<t>The MLDv2 protocol <xref target="RFC3810"/> is the standard IPv6 method to achieve this; therefore, this method SHOULD
be used by group members to subscribe to the multicast group IPv6 address, on IPv6 networks that support it. CoAP server nodes then act
in the role of MLD Multicast Address Listener. Constrained IPv6 networks that implement either RPL (see <xref target="sec-rpl"/>) or MPL (see <xref target="sec-mpl"/>) typically
do not support MLD as they have their own mechanisms defined.</t>

<t>The IGMPv3 protocol <xref target="RFC3376"/> is the standard IPv4 method to signal multicast group subscriptions.
This SHOULD be used by group members to subscribe to their multicast group IPv4 address on IPv4 networks.</t>

<t>The guidelines from <xref target="RFC6636"/> on the tuning of MLD for mobile and wireless networks may be useful when implementing MLD in constrained networks.</t>

</section>
<section anchor="sec-rpl" title="RPL">
<!-- see Section 4.3 of {{RFC7390}} for original content -->

<t>RPL <xref target="RFC6550"/> is an IPv6 based routing protocol suitable for low-power, lossy networks (LLNs). In such a context, CoAP is often used as an application protocol.</t>

<t>If only RPL is used in a network for routing and its optional multicast support is disabled, there will be no IP multicast routing available.  Any IPv6 multicast packets in this case will not propagate beyond a single hop (to direct neighbors in the LLN). This implies that any CoAP group request will be delivered to link-local nodes only, for any scope value &gt;= 2 used in the IPv6 destination address.</t>

<t>RPL supports (see Section 12 of <xref target="RFC6550"/>) advertisement of IP multicast destinations using Destination Advertisement Object (DAO) messages and subsequent routing of multicast IPv6 packets based on this.  It requires the RPL mode of operation to be 3 (Storing mode with multicast support).</t>

<t>In this mode, RPL DAO can be used by a CoAP node that is either an RPL router or RPL Leaf Node, to advertise its IP multicast group membership to parent RPL routers. Then, RPL will route any IP multicast CoAP requests over
multiple hops to those CoAP servers that are group members.</t>

<t>The same DAO mechanism can be used to convey IP multicast group membership information to an edge router (e.g., 6LBR), in case the edge router is also the root of the RPL Destination-Oriented Directed Acyclic Graph (DODAG).  This is useful because the edge router then learns which IP multicast traffic it needs to pass through from the backbone network into the LLN subnet.  In LLNs, such ingress filtering helps to avoid congestion of the resource-constrained network segment, due to IP multicast traffic from the high-speed backbone IP network.</t>

</section>
<section anchor="sec-mpl" title="MPL">
<t>The Multicast Protocol for Low-Power and Lossy Networks (MPL) <xref target="RFC7731"/> can be used for propagation of IPv6 multicast packets throughout a defined network domain, over multiple hops.  MPL is designed to work in LLNs and can operate alone or in combination with RPL. The protocol involves a predefined group of MPL Forwarders to collectively distribute IPv6 multicast packets throughout their MPL Domain. An MPL Forwarder may be associated to multiple MPL Domains at the same time. Non-Forwarders will receive IPv6 multicast packets from one or more of their neighboring Forwarders. Therefore, MPL can be used to propagate a CoAP multicast request to all group members.</t>

<t>However, a CoAP multicast request to a group that originated outside of the MPL Domain will not be propagated by MPL - unless an MPL Forwarder is explicitly configured as an ingress point that introduces external multicast packets into the MPL Domain. Such an ingress point could be located on an edge router (e.g., 6LBR). The method to configure which multicast groups are to be propagated into the MPL Domain could be:</t>

<t><list style="symbols">
  <t>Manual configuration on the ingress MPL Forwarder.</t>
  <t>A protocol to register multicast groups at an ingress MPL Forwarder. This could be a protocol offering features similar to MLDv2.</t>
</list></t>

</section>
</section>
</section>
<section anchor="chap-unsecured-groupcomm" title="Unsecured Group Communication">

<t>CoAP group communication can operate in CoAP NoSec (No Security) mode, without using application-layer and transport-layer security mechanisms. The NoSec mode uses the "coap" scheme, and is defined in Section 9 of <xref target="RFC7252"/>. The conceptual "NoSec" security group as defined in <xref target="sec-groupdef"/> is used for unsecured group communication. Before using this mode of operation, the security implications (<xref target="chap-security-considerations-nosec-mode"/>) must be well understood.</t>

</section>
<section anchor="chap-oscore" title="Secured Group Communication using Group OSCORE">

<t>The application-layer protocol Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/> provides end-to-end encryption, integrity and replay protection of CoAP messages exchanged between two CoAP endpoints. These can act both as CoAP Client as well as CoAP Server, and share an OSCORE Security Context used to protect and verify exchanged messages. The use of OSCORE does not affect the URI scheme and OSCORE can therefore be used with any URI scheme defined for CoAP.</t>

<t>OSCORE uses COSE <xref target="RFC8152"/> to perform encryption, signing and Message Authentication Code operations, and to efficiently encode the result as a COSE object. In particular, OSCORE takes as input an unprotected CoAP message and transforms it into a protected CoAP message, by using an Authenticated Encryption with Associated Data (AEAD) algorithm.</t>

<t>OSCORE makes it possible to selectively protect different parts of a CoAP message in different ways, while still allowing intermediaries (e.g., CoAP proxies) to perform their intended funtionalities. That is, some message parts are encrypted and integrity protected; other parts are only integrity protected to be accessible to, but not modifiable by, proxies; and some parts are kept as plain content to be both accessible to and modifiable by proxies. Such differences especially concern the CoAP options included in the unprotected message.</t>

<t>Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> builds on OSCORE, and provides end-to-end security of CoAP messages exchanged between members of an OSCORE group, while fulfilling the same security requirements.</t>

<t>In particular, Group OSCORE protects CoAP requests sent over IP multicast by a CoAP client, as well as multiple corresponding CoAP responses sent over IP unicast by different CoAP servers. However, the same keying material can also be used to protect CoAP requests sent over IP unicast to a single CoAP server in the OSCORE group, as well as the corresponding responses.</t>

<t>Group OSCORE uses digital signatures to ensure source authentication of all messages exchanged within the OSCORE group. That is, sender devices sign their outgoing messages by means of their own private key, and embed the signature in the protected CoAP message.</t>

<t>A Group Manager is responsible for one or multiple OSCORE groups. In particular, the Group Manager acts as repository of public keys of group members; manages, renews and provides keying material in the group; and handles the join process of new group members.</t>

<t>As recommended in <xref target="I-D.ietf-core-oscore-groupcomm"/>, a CoAP endpoint can join an OSCORE group by using the method described in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> and based on the ACE framework for Authentication and Authorization in constrained environments <xref target="I-D.ietf-ace-oauth-authz"/>.</t>

<t>A CoAP endpoint can discover OSCORE groups and retrieve information to join them through their Group Managers by using the method described in <xref target="I-D.tiloca-core-oscore-discovery"/> and based on the CoRE Resource Directory <xref target="I-D.ietf-core-resource-directory"/>.</t>

<t>If security is required, CoAP group communication as described in this specification MUST use Group OSCORE. In particular, a CoAP group as defined in <xref target="sec-groupdef"/> and using secure group communication is associated to an OSCORE security group, which includes:</t>

<t><list style="symbols">
  <t>All members of the CoAP group, i.e. the CoAP endpoints configured (also) as CoAP servers and listening to the group's multicast IP address.</t>
  <t>All further CoAP endpoints configured only as CoAP clients, that send (multicast) CoAP requests to the CoAP group.</t>
</list></t>

<section anchor="chap-sec-group-maintenance" title="Secure Group Maintenance">

<t>Additional key management operations on the OSCORE group are required, depending also on the security requirements of the application (see <xref target="chap-security-considerations-sec-mode"/>). That is:</t>

<t><list style="symbols">
  <t>Adding new members to a CoAP group or enabling new client-only endpoints to interact with that group require also that each of such members/endpoints join the corresponding OSCORE group. By doing so, they are securely provided with the necessary cryptographic material. In case backward security is needed, this also requires to first renew such material and distribute it to the current members/endpoints, before new ones are added and join the OSCORE group.</t>
  <t>In case forward security is needed, removing members from a CoAP group or stopping client-only endpoints from interacting with that group requires removing such members/endpoints from the corresponding OSCORE group. To this end, new cryptographic material is generated and securely distributed only to the remaining members/endpoints. This ensures that only the members/endpoints intended to remain are able to continue participating in secure group communication, while the evicted ones are not able to.</t>
</list></t>

<t>The key management operations mentioned above are entrusted to the Group Manager responsible for the OSCORE group <xref target="I-D.ietf-core-oscore-groupcomm"/>, and it is RECOMMENDED to perform them according to the approach described in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>

</section>
</section>
<section anchor="chap-security-considerations" title="Security Considerations">

<t>This section provides security considerations for CoAP group communication using IP multicast.</t>

<section anchor="chap-security-considerations-nosec-mode" title="CoAP NoSec Mode">

<t>CoAP group communication, if not protected, is vulnerable to all the attacks mentioned in Section 11 of <xref target="RFC7252"/> for IP multicast.</t>

<t>Thus, for sensitive and mission-critical applications (e.g., health monitoring systems and alarm monitoring systems), it is NOT RECOMMENDED to deploy CoAP group communication in NoSec mode.</t>

<t>Without application-layer security, CoAP group communication SHOULD only be deployed in applications that are non-critical, and that do not involve or may have an impact on sensitive data and personal sphere. These include, e.g., read-only temperature sensors deployed in non-sensitive environments, where the client reads out the values but does not use the data to control actuators or to base an important decision on.</t>

<t>Discovery of devices and resources is a typical use case where NoSec mode is applied, since the devices involved do not have yet configured any mutual security relations at the time the discovery takes place.</t>

</section>
<section anchor="chap-security-considerations-sec-mode" title="Group OSCORE">

<t>Group OSCORE provides end-to-end application-level security. This has many desirable properties, including maintaining security assurances while forwarding traffic through intermediaries (proxies). Application-level security also tends to more cleanly separate security from the dynamics of group membership (e.g., the problem of distributing security keys across large groups with many members that come and go).</t>

<t>For sensitive and mission-critical applications, CoAP group communication MUST be protected by using Group OSCORE as specified in <xref target="I-D.ietf-core-oscore-groupcomm"/>. The same security considerations from Section 10 of <xref target="I-D.ietf-core-oscore-groupcomm"/> hold for this specification.</t>

<section anchor="chap-security-considerations-sec-mode-key-mgmt" title="Group Key Management">

<t>A key management scheme for secure revocation and renewal of group keying material, namely group rekeying, should be adopted in OSCORE groups. In particular, the key management scheme should preserve backward and forward security in the OSCORE group, if the application requires so (see Section 2.4 of <xref target="I-D.ietf-core-oscore-groupcomm"/>).</t>

<t>Group policies should also take into account the time that the key management scheme requires to rekey the group, on one hand, and the expected frequency of group membership changes, i.e. nodes' joining and leaving, on the other hand.</t>

<t>In fact, it may be desirable to not rekey the group upon every single membership change, in case members' joining and leaving are frequent, and at the same time a single group rekeying instance takes a non negligible time to complete.</t>

<t>In such a case, the Group Manager may consider to rekey the group, e.g., after a minimum number of nodes has joined or left the group within a pre-defined time interval, or according to communication patterns with predictable intervals of network inactivity. This would prevent paralizing communications in the group, when a slow rekeying scheme is used and frequently invoked.</t>

<t>This comes at the cost of not continuously preserving backward and forward security, since group rekeying might not occur upon every single group membership change. That is, latest joined nodes would have access to the key material used prior to their join, and thus be able to access past group communications protected with that key material. Similarly, until the group is rekeyed, latest left nodes would preserve access to group communications protected with the retained key material.</t>

</section>
<section anchor="chap-security-considerations-sec-mode-sauth" title="Source Authentication">

<t>CoAP endpoints using Group OSCORE countersign their outgoing messages, by means of the countersignature algorithm used in the OSCORE group. This ensures source authentication of messages exchanged by CoAP endpoints through CoAP group communication. In fact, it allows to verify that a received message has actually been originated by a specific and identified member of the OSCORE group.</t>

<t>Appendix F of <xref target="I-D.ietf-core-oscore-groupcomm"/> discusses a number of cases where a recipient CoAP endpoint may skip the verification of countersignatures, possibly on a per-message basis. However, this is NOT RECOMMENDED. That is, a CoAP endpoint receiving a message secured with Group OSCORE SHOULD always verify the countersignature.</t>

</section>
<section anchor="chap-security-considerations-sec-mode-attacks" title="Countering Attacks">

<t>As discussed below, Group OSCORE addresses a number of security attacks mentioned in Section 11 of <xref target="RFC7252"/>, with particular reference to their execution over IP multicast.</t>

<t><list style="symbols">
  <t>Since Group OSCORE provides end-to-end confidentiality and integrity of request/response messages, proxies in multicast settings cannot break message protection, and thus cannot act as man-in-the-middle beyond their legitimate duties (see Section 11.2 of <xref target="RFC7252"/>). In fact, intermediaries such as proxies are not assumed to have access to the OSCORE Security Context used by group members. Also, with the notable addition of countersignatures, Group OSCORE protect messages using the same constructions of OSCORE (see Sections 7.1 and 7.3 of <xref target="I-D.ietf-core-oscore-groupcomm"/>), and especially processes CoAP options according to the same classification in U/I/E classes.</t>
  <t>Group OSCORE prevents to effectively mount amplification attacks (see Section 11.3 of <xref target="RFC7252"/>), e.g. by injecting (small) requests over IP multicast from the (spoofed) IP address of a victim client, and thus triggering the transmission of several (much bigger) responses back to that client. In fact, upon receiving a request protected with Group OSCORE, a server is able to verify whether the request is fresh and originated exactly by the alleged sender in the OSCORE group (see Section 7.2 of <xref target="I-D.ietf-core-oscore-groupcomm"/>). Furthermore, as also discussed in Section 7 of <xref target="I-D.ietf-core-oscore-groupcomm"/>, it is recommended that servers failing to decrypt and verify an incoming message do not send back any error message.</t>
  <t>Group OSCORE limits the impact of attacks based on IP spoofing also over IP multicast (see Section 11.4 of <xref target="RFC7252"/>). In fact, requests and corresponding responses sent in the OSCORE group are encrypted and countersigned (see Sections 7.1 and 7.3 of <xref target="I-D.ietf-core-oscore-groupcomm"/>), and thus can be correctly generated only by legitimate group members. Within an OSCORE group, although the shared symmetric key material used for encryption strictly provides only group-level authentication (see Section 10.1 of <xref target="I-D.ietf-core-oscore-groupcomm"/>), countersignatures ensure source authentication of messages, as originated from the alleged, identifiable sender in the OSCORE group. Note that the server may additionally rely on the Echo option for CoAP described in <xref target="I-D.ietf-core-echo-request-tag"/>, in order to verify the aliveness and reachability of the client sending a request from a particular IP address.</t>
  <t>Group OSCORE does not require group members to be equipped with a good source of entropy for generating key material (see Section 11.6 of <xref target="RFC7252"/>), and thus does not contribute to create an attack vector against such (constrained) CoAP endpoints. In particular, the symmetric keys used for message encryption and decryption are derived through the same HMAC-based HKDF scheme used for OSCORE (see Section 3.2 of <xref target="RFC8613"/>). Besides, the OSCORE Master Secret used in such derivation is securely generated by the Group Manager responsible for the OSCORE group, and securely provided to the CoAP endpoints when they join the group.</t>
  <t>Group OSCORE prevents to make any single group member a target for subverting security in the whole OSCORE group (see Section 11.6 of <xref target="RFC7252"/>), even though all group members share (and can derive) the same symmetric key material used for encrypting messages sent to the OSCORE group (see Section 10.1 of <xref target="I-D.ietf-core-oscore-groupcomm"/>). In fact, countersignatures computed with a node's individual private key ensure source authentication of exchanged CoAP messages, as originated from the alleged, identifiable sender in the OSCORE group.</t>
</list></t>

</section>
</section>
<section anchor="replay-of-non-confirmable-messages" title="Replay of Non Confirmable Messages">

<t>Since all requests sent over IP multicast are Non-confirmable, a client might not be able to know if an adversary has actually captured one of its trasmitted requests and later re-injected it in the group as a replay to the server nodes. In fact, even if the servers sent back responses to the replayed request, the client would not have a valid matching request anymore to suspect of the attack.</t>

<t>If Group OSCORE is used, such a replay attack on the servers is prevented, since a client protects every different request with a different Sequence Number value, which is in turn included as Partial IV in the protected message and takes part in the construction of the AEAD cipher nonce. Thus, a server would be able to detect the replayed request, by checking the conveyed Partial IV against its own replay window in the OSCORE Recipient Context associated to the client.</t>

<t>This requires a server to have a synchronized, up to date view of the sequence number used by the client. If such synchronization is lost, e.g. due to a reboot, or suspected so, the server should use one of the methods described in Appendix E of <xref target="I-D.ietf-core-oscore-groupcomm"/>, such as the one based on the Echo option for CoAP described in <xref target="I-D.ietf-core-echo-request-tag"/>, in order to (re-)synchronize with the client's sequence number.</t>

</section>
<section anchor="use-of-coap-no-response-option" title="Use of CoAP No-Response Option">

<t>The CoAP No-Response Option <xref target="RFC7967"/> could be misused by a malicious client to evoke as much responses from servers to a multicast request as possible, by using the value '0' - Interested in all responses. This even overrides the default behaviour of a CoAP server to suppress the response in case there is nothing of interest to respond with. Therefore, this option can be used to perform an amplification attack.
A proposed mitigation is to only allow this Option to relax the standard suppression rules for a resource in case the Option is sent by an authenticated client. If sent by an unauthenticated client, the Option can be used to expand the classes of responses suppressed compared to the default rules but not to reduce the classes of responses suppressed.</t>

</section>
<section anchor="lowpan" title="6LoWPAN">
<t>In a 6LoWPAN network, a multicast IPv6 packet may be fragmented prior to transmission. A 6LoWPAN Router that forwards a fragmented packet can have a relatively high impact on the occupation of the wireless channel and on the memory load of the local node due to packet buffer occupation. For example, the MPL <xref target="RFC7731"/> protocol requires an MPL Forwarder to store the packet for a longer duration, to allow multiple forwarding transmissions to neighboring Forwarders. If only one of the fragments is not received correctly by an MPL Forwarder, the receiver needs to discard all received fragments and it needs to receive all the packet fragments again on a future occasion.</t>

<t>For these reasons, a fragmented IPv6 multicast packet is a possible attack vector in a Denial of Service (DoS) amplification attack. See Section 11.3 of <xref target="RFC7252"/> for more details on amplification. To mitigate the risk, applications sending multicast IPv6 requests to 6LoWPAN hosted CoAP servers SHOULD limit the size of the request to avoid 6LoWPAN fragmentation. A 6LoWPAN Router or multicast forwarder SHOULD deprioritize forwarding for multi-fragment 6LoWPAN multicast packets. Also, a 6LoWPAN Border Router SHOULD implement multicast packet filtering to prevent unwanted multicast traffic from entering a 6LoWPAN network from the outside. For example, it could filter out all multicast packet for which there is no known multicast listener on the 6LoWPAN network.</t>

</section>
<section anchor="wi-fi" title="Wi-Fi">
<t>In a home automation scenario using Wi-Fi, Wi-Fi security
   should be enabled to prevent rogue nodes from joining.  The Customer
   Premises Equipment (CPE) that enables access to the Internet should
   also have its IP multicast filters set so that it enforces multicast
   scope boundaries to isolate local multicast groups from the rest of
   the Internet (e.g., as per <xref target="RFC6092"/>).  In addition, the scope of
   IP multicast transmissions and listeners should be site-local (5) or smaller.  For
   site-local scope, the CPE will be an appropriate multicast scope
   boundary point.</t>

</section>
<section anchor="monitoring" title="Monitoring">

<section anchor="general-monitoring" title="General Monitoring">

<t>CoAP group communication can be used to control a set of
   related devices: for example, simultaneously turn on all the lights in a
   room.  This intrinsically exposes the group to some unique
   monitoring risks that devices not in a group
   are not as vulnerable to.  For example, assume an attacker is able to
   physically see a set of lights turn on in a room.  Then the attacker
   can correlate an observed CoAP group communication message to the observed
   coordinated group action &#8211; even if the CoAP message is (partly) encrypted.<vspace />
   This will give the attacker side-channel information
   to plan further attacks (e.g., by determining the members of the
   group some network topology information may be deduced).</t>

</section>
<section anchor="pervasive-monitoring" title="Pervasive Monitoring">

<t>A key additional threat consideration for group communication is
   pervasive monitoring <xref target="RFC7258"/>.  CoAP group communication solutions that are built on top
   of IP multicast need to pay particular heed to these dangers.  This
   is because IP multicast is easier to intercept (and to secretly
   record) compared to IP unicast.  Also, CoAP traffic is meant for
   the Internet of Things.  This means that CoAP multicast may be used for
   the control and monitoring of critical infrastructure (e.g., lights,
   alarms, etc.) that may be prime targets for attack.</t>

<t>For example, an attacker may attempt to record all the CoAP traffic
   going over a smart grid (i.e., networked electrical utility)
   and try to determine critical nodes for further attacks.  For
   example, the source node (controller) sends out CoAP group
   communication messages which easily identifies it as a controller.<vspace />
   CoAP multicast traffic is inherently more
   vulnerable (compared to unicast) as the same packet may be
   replicated over many links, leading to a higher probability of
   packet capture by a pervasive monitoring system.</t>

<t>One mitigation is to restrict the
   scope of IP multicast to the minimal scope that fulfills the
   application need.  Thus, for example, site-local IP multicast scope
   is always preferred over global scope IP multicast if this fulfills
   the application needs.</t>

<t>Even if all CoAP multicast traffic is encrypted/protected,
   an attacker may still attempt to capture this traffic and perform an
   off-line attack in the future.</t>

</section>
</section>
</section>
<section anchor="iana" title="IANA Considerations">

<t>This document has no actions for IANA.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC1122;
&RFC2119;
&RFC3376;
&RFC3810;
&RFC4443;
&RFC4944;
&RFC6690;
&RFC7049;
&RFC7252;
&RFC7641;
&RFC7959;
&RFC8075;
&RFC8152;
&RFC8174;
&RFC8613;
&I-D.ietf-core-oscore-groupcomm;
&I-D.ietf-core-echo-request-tag;


    </references>

    <references title='Informative References'>

&I-D.ietf-ace-oauth-authz;
&I-D.ietf-ace-key-groupcomm-oscore;
&I-D.tiloca-core-oscore-discovery;
&I-D.ietf-core-resource-directory;
&I-D.ietf-core-coap-pubsub;
&I-D.ietf-tls-dtls13;
&RFC5246;
&RFC6092;
&RFC6347;
&RFC6550;
&RFC6636;
&RFC7258;
&RFC7346;
&RFC7390;
&RFC7731;
&RFC7967;
&RFC8323;
&RFC8446;
&RFC8710;
<reference anchor="Californium" target="https://github.com/eclipse/californium/tree/2.0.x/californium-core/src/main/java/org/eclipse/californium/core">
  <front>
    <title>Eclipse Californium</title>
    <author >
      <organization>Eclipse Foundation</organization>
    </author>
    <date year="2019" month="March"/>
  </front>
</reference>
<reference anchor="Go-OCF" target="https://github.com/go-ocf/go-coap">
  <front>
    <title>Implementation of CoAP Server &amp; Client in Go</title>
    <author >
      <organization>Open Connectivity Foundation (OCF)</organization>
    </author>
    <date year="2019" month="March"/>
  </front>
</reference>


    </references>


<section anchor="appendix-usecases" title="Use Cases">

<t>To illustrate where and how CoAP-based group communication can be used, this section summarizes the most common use cases. These use cases include both secured and non-secured CoAP usage. Each subsection below covers one particular category of use cases for CoRE. Within each category, a use case may cover multiple application areas such as home IoT, commercial building IoT (sensing and control), industrial IoT/control, or environmental sensing.</t>

<section anchor="discovery" title="Discovery">
<t>Discovery of physical devices in a network, or discovery of information entities hosted on network devices, are operations that are usually required in a system during the phases of setup or (re)configuration. When a discovery use case involves devices that need to interact without having been configured previously with a common security context, unsecured CoAP communication is typically used. Discovery may involve a request to a directory server, which provides services to aid clients in the discovery process. One particular type of directory server is the CoRE Resource Directory <xref target="I-D.ietf-core-resource-directory"/>; and there may be other types of directories that can be used with CoAP.</t>

<section anchor="sec-uc-dd" title="Distributed Device Discovery">
<t>Device discovery is the discovery and identification of networked devices &#8211; optionally only devices of a particular class, type, model, or brand. Group communication is used for distributed device discovery, if a central directory server is not used. Typically in distributed device discovery, a multicast request is sent to a particular address (or address range) and multicast scope of interest, and any devices configured to be discoverable will respond back. For the alternative solution of centralized device discovery a central directory server is accessed through unicast, in which case group communication is not needed. This requires that the address of the central directory is either preconfigured in each device or configured during operation using a protocol.</t>

<t>In CoAP, device discovery can be implemented by CoAP resource discovery requesting (GET) a particular resource that the sought device class, type, model or brand is known to respond to. It can also be implemented using CoAP resource discovery (Section 7 of <xref target="RFC7252"/>) and the CoAP query interface defined in Section 4 of <xref target="RFC6690"/> to find these particular resources. Also, a multicast GET request to /.well-known/core can be used to discover all CoAP devices.</t>

</section>
<section anchor="sec-uc-sd" title="Distributed Service Discovery">
<t>Service discovery is the discovery and identification of particular services hosted on network devices. Services can be identified by one or more parameters such as ID, name, protocol, version and/or type. Distributed service discovery involves group communication to reach individual devices hosting a particular service; with a central directory server not being used.</t>

<t>In CoAP, services are represented as resources and service discovery is implemented using resource discovery (Section 7 of <xref target="RFC7252"/>) and the CoAP query interface defined in Section 4 of <xref target="RFC6690"/>.</t>

</section>
<section anchor="sec-uc-dirdiscovery" title="Directory Discovery">
<t>This use case is a specific sub-case of Distributed Service Discovery (<xref target="sec-uc-sd"/>), in which a device needs to identify the location of a Directory on the network to which it
can e.g. register its own offered services, or to which it can perform queries to identify and locate other devices/services it needs to access on
the network. Section 3.3 of <xref target="RFC7390"/> shows an example of discovering a CoRE Resource Directory using CoAP group communication. As defined in <xref target="I-D.ietf-core-resource-directory"/>, a resource directory is a web entity that stores information about web resources and implements REST interfaces for registration and lookup of those resources. For example, a device can register itself to a resource directory to let it be found by other devices and/or applications.</t>

</section>
</section>
<section anchor="operational-phase" title="Operational Phase">
<t>Operational phase use cases describe those operations that occur most frequently in a networked system, during its operational lifetime and regular operation. Regular usage is when the applications on networked devices perform the tasks they were designed for and exchange of application-related data using group communication occurs. Processes like system reconfiguration, group changes, system/device setup, extra group security changes, etc. are not part of regular operation.</t>

<section anchor="actuator-group-control" title="Actuator Group Control">
<t>Group communication can be beneficial to control actuators that need to act in synchrony, as a group, with strict timing (latency) requirements. Examples are office lighting, stage lighting, street lighting, or audio alert/Public Address systems. Sections 3.4 and 3.5 of <xref target="RFC7390"/> show examples of lighting control of a group of 6LoWPAN-connected lights.</t>

</section>
<section anchor="device-group-status-request" title="Device Group Status Request">
<t>To properly monitor the status of systems, there may be a need for ad-hoc, unplanned status updates. Group communication can be used to quickly send out a request to a (potentially large) number of devices for specific information. Each device then responds back with the requested data. Those devices that did not respond to the request can optionally be polled again via reliable unicast communication to complete the dataset. The device group may be defined e.g. as "all temperature sensors on floor 3", or "all lights in wing B". For example, it could be a status request for device temperature, most recent sensor event detected, firmware version, network load, and/or battery level.</t>

</section>
<section anchor="network-wide-query" title="Network-wide Query">
<t>In some cases a whole network or subnet of multiple IP devices needs to be queried for status or other information. This is similar to the previous use case except that the device group is not defined in terms of its function/type but in terms of its network location. Technically this is also similar to distributed service discovery (<xref target="sec-uc-sd"/>) where a query is processed by all devices on a network - except that the query is not about services offered by the device, but rather specific operational data is requested.</t>

</section>
<section anchor="network-wide-group-notification" title="Network-wide / Group Notification">
<t>In some cases a whole network, or subnet of multiple IP devices, or a specific target group needs to be notified of a status change or other information. This is similar to the previous two use cases except that the recipients are not expected to respond with some information. Unreliable notification can be acceptable in some use cases, in which a recipient does not respond with a confirmation of having received the notification. In such a case, the receiving CoAP server does not have to create a CoAP response. If the sender needs confirmation of reception, the CoAP servers can be configured for that resource to respond with a 2.xx success status after processing a notification request successfully.</t>

</section>
</section>
<section anchor="software-update" title="Software Update">
<t>Multicast can be useful to efficiently distribute new software (firmware, image, application, etc.) to a group of multiple devices. In this case, the group is defined in terms of device type: all devices in the target group are known to be capable of installing and running the new software. The software is distributed as a series of smaller blocks that are collected by all devices and stored in memory. All devices in the target group are usually responsible for integrity verification of the received software; which can be done per-block or for the entire software image once all blocks have been received. Due to the inherent unreliability of CoAP multicast, there needs to be a backup mechanism (e.g. implemented using CoAP unicast) by which a device can individually request missing blocks of a whole software image/entity. Prior to multicast software update, the group of recipients can be separately notified that there is new software available and coming, using the above network-wide or group notification.</t>

</section>
</section>
<section numbered="no" anchor="acknowledgements" title="Acknowledgments">

<t>The authors sincerely thank Thomas Fossati and Jim Schaad for their comments and feedback.</t>

<t>The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAF6jgV4AA9V9e3PbWHbn/67yd8C6a7fFNElZsvxo904qakvdrcSvWHI6
qc3WFESCIsYgwACgZE6P97Pved9zAVCSe2ZTG+9m2ibBi/s49zx/55zJZPLw
QZu3RfYy+bmuNuvkVbVabcp8lrZ5VSaLqk7aZQaflk1bp3mZzZPj9brQ79/X
VVvNqiLZe1Udvx89fJBeXtbZ9e7B8LGHD+bVrExX8M55nS7aSZ61i8msqrPJ
Ff5sBr+aXObN5PHjhw/w/32TNG1azv+YFlUJP2rrTYYf5+ua/tG0h48ff//4
EN5eZ+nL5Kxss7rM2ocPbq5ewhs/nCa/VvWnvLziaT188OkmPDU5wTk8fACT
fAnvmT98UF02VZG1WfMyef7ke5jDZj1P+Z+HTw/HyfNnRwf4/lk1hzFfJptm
kjazPH/4YJ2/TODPN8ksLeHjLEnrOt0me/kiSYsi2WbNKIFNWKbNMllmNa0i
SWAHX+J3+Pemqts6WzQvaZh5tkg3RdvAI/bAdsXf079hyZt2WdUv8Sv8M8H/
0X8kSV7Ck6fT5CT/06fwKe/9afOp6nxR1Ve0gLPqYgYnDq9Oy9l2WhbhESCD
LIOd+vc/dv78e3hmlrfbl8lHeHK2bN3H1aZsa/jmAijqbQZ0VRdwrE14Ilul
efEyyWBm0znM7B/yqh2eyKSzxlfT5Ne0vOqu8dWyKq+u4IvOt7RQooCT/Cpv
04EFHjx+fJCcJr9ksxaO7LwdJ+ebvM2SJ0iV8UrxdiyrZTX7lJV+uXOYwfvj
5OD7o8MXA9vwsYTx5jA0EldvE2zqU5z6P/jJTuGG7NqIN9PkIi+qWdrdijdp
Pat639FGfDg7P02Of+zvwVmTLv5U1fPmKoUDSA4Puyv/pxxuZnfJ56eTg2dH
R49hZbAly6pYDSz+/Cab+92SVa9wltOWZvkPdT5t6I6UVb0CHnKdEZ1/+OnV
wcHhof798ODge/37kyfPn9nfXxw81r8fHR09sb9/f3Skf3/27Ht75vnjIxsH
L7r9Ha67/f37p/bMi8fPn9rfD8LzLw6e2/gvnh3we88mJ9PA5qom5nYDj8DV
qSZ19h+brGknbXr1kjheuYh2wn6SzmBQZAUT/J8/97/8lG0dc+X321O83dHU
5jn89zqDk+pPrc6aalPP8KGabsfQQ7MqXU/Wm8tmcxl/2xbNZA7/c2AH8vTw
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
yD5qLRpMb9XYwqblGkE27iUqgWnZBIsN4w/rOr9G9RN2nCkbCVPyEHUNAcA6
xMQFS8t7AYp+esW2kGyV1SNUo1FJyC+p6ckefF88ZIoknFKCM1b7r2q6aOvN
JbqGYPpNL0fxB6yKh2vHTNMyu2niq9slMl9WjzkcF3ZjOqCon5aThTdhdljf
JD2m5pPAOZivD3R8GeoHlMYaE5E7Rxlj3hDEZRvstqhyrXtbOssmsMTwJqvB
T2tzTlrQJ16dMpDAnP4dDQN/gR+BrP1zqgnV3j2Ved2zM4sKKX6C//Nn7W8z
sGCLd0eEIYqoQLo7fkjaI5jnKnFlivI6JpzmvrsGAh2s5uiUDAEwtGlUaUJL
Boi3Eqmye+LmzpvrI7IL2vRWampqpaDx7nIP3ULFbb9VHGHNUL31zKl3vaIS
mHeYZbhw3j/pqzQ0s7zbViKQbmwEutROahGn9XBi0LmJd42lUzdU/TD0WfCF
8VBAjMyCsGYXVO8XQ8ACN7c7/m0TBTCiCAxPSNMLdr+U65A0UfOAsULb4M0+
cz8WVDITh60X4Abbk0bDpCMSSsksRzufySp8/aVTtAiuvrA/jguZdaDkGzGW
tM4c/QUwMwld7Qs1pH3oYfkQo+/7scvCdva1yTMlhTkne1GusMWgI4pFxA6C
OvU53vkJnUY4Jyx7i2o5Gp2SUWhAIlmDhiQwhx5zdxAJhtqnvHg/DKa8pqMQ
xIL5RyynSjeFC+ZtXYcUNjtcK+uWUppRnqTANUihr64wxAHyTIVSaKCM7nv0
aEUsAwMWHGrV6EoItGlbFRJ9sioVdVTtIjiic0Mzabvl3vqt5QoOVpXS+wWu
jNggtj3RhvCB6hIEhTO4AiCn6pr1FWkWgY7m7qFjo511SETsHjj9Ro/ccE/9
U2/C63actgVQbjvtC9+gichw8AypKJM0cZxL5RAhiHAGwkoMVLaSdu69qYk/
k1VKif/xT5fZwELMxCT/Kflm6eDECtMEzn7Pht28PrT4AEP0muF+RhHkReHB
LQi5mxVJhRhNahbbtq03jcMQxmpgV63ssbJ7KVyCKO5Ul43s8xX1xKjnTmxo
hfjfoXN5Z6H4rhw7jHj7EL8UN6Grg2NqrN2m+Beh+8+QuGZ57g0/FT/OCf0G
HUbf3DU17yy9zdtNGFUBbbAZMcYDuN4UJbXHyTTQQzvdYtsTTyDO/XzQrXXY
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
d68+nF2cnZ++MrzAotgsFg8f/F+04cpVJzkBAA==

-->

</rfc>

