diff options
Diffstat (limited to 'doc/rfc/rfc7390.txt')
-rw-r--r-- | doc/rfc/rfc7390.txt | 2579 |
1 files changed, 2579 insertions, 0 deletions
diff --git a/doc/rfc/rfc7390.txt b/doc/rfc/rfc7390.txt new file mode 100644 index 0000000..b9c37eb --- /dev/null +++ b/doc/rfc/rfc7390.txt @@ -0,0 +1,2579 @@ + + + + + + +Internet Engineering Task Force (IETF) A. Rahman, Ed. +Request for Comments: 7390 InterDigital Communications, LLC +Category: Experimental E. Dijk, Ed. +ISSN: 2070-1721 Philips Research + October 2014 + + + Group Communication for the Constrained Application Protocol (CoAP) + +Abstract + + The Constrained Application Protocol (CoAP) is a specialized web + transfer protocol for constrained devices and constrained networks. + It is anticipated that constrained devices will often naturally + operate in groups (e.g., in a building automation scenario, all + lights in a given room may need to be switched on/off as a group). + This specification defines how CoAP should be used in a group + communication context. An approach for using CoAP on top of IP + multicast is detailed based on existing CoAP functionality as well as + new features introduced in this specification. Also, various use + cases and corresponding protocol flows are provided to illustrate + important concepts. Finally, guidance is provided for deployment in + various network topologies. + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for examination, experimental implementation, and + evaluation. + + This document defines an Experimental Protocol for the Internet + community. This document is a product of the Internet Engineering + Task Force (IETF). It represents the consensus of the IETF + community. It has received public review and has been approved for + publication by the Internet Engineering Steering Group (IESG). Not + all documents approved by the IESG are a candidate for any level of + Internet Standard; see Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc7390. + + + + + + + + + + +Rahman & Dijk Experimental [Page 1] + +RFC 7390 Group Communication for CoAP October 2014 + + +Copyright Notice + + Copyright (c) 2014 IETF Trust and the persons identified as the + document authors. All rights reserved. This document is subject to + BCP 78 and the IETF Trust's Legal Provisions Relating to IETF + Documents (http://trustee.ietf.org/license-info) in effect on the + date of publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 + 1.1. Background . . . . . . . . . . . . . . . . . . . . . . . 3 + 1.2. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 1.3. Conventions and Terminology . . . . . . . . . . . . . . . 4 + 2. Protocol Considerations . . . . . . . . . . . . . . . . . . . 5 + 2.1. IP Multicast Background . . . . . . . . . . . . . . . . . 5 + 2.2. Group Definition and Naming . . . . . . . . . . . . . . . 6 + 2.3. Port and URI Configuration . . . . . . . . . . . . . . . 7 + 2.4. RESTful Methods . . . . . . . . . . . . . . . . . . . . . 9 + 2.5. Request and Response Model . . . . . . . . . . . . . . . 9 + 2.6. Membership Configuration . . . . . . . . . . . . . . . . 10 + 2.6.1. Background . . . . . . . . . . . . . . . . . . . . . 10 + 2.6.2. Membership Configuration RESTful Interface . . . . . 11 + 2.7. Request Acceptance and Response Suppression Rules . . . . 17 + 2.8. Congestion Control . . . . . . . . . . . . . . . . . . . 19 + 2.9. Proxy Operation . . . . . . . . . . . . . . . . . . . . . 20 + 2.10. Exceptions . . . . . . . . . . . . . . . . . . . . . . . 21 + 3. Use Cases and Corresponding Protocol Flows . . . . . . . . . 22 + 3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 22 + 3.2. Network Configuration . . . . . . . . . . . . . . . . . . 22 + 3.3. Discovery of Resource Directory . . . . . . . . . . . . . 25 + 3.4. Lighting Control . . . . . . . . . . . . . . . . . . . . 26 + 3.5. Lighting Control in MLD-Enabled Network . . . . . . . . . 30 + 3.6. Commissioning the Network Based on Resource Directory . . 31 + 4. Deployment Guidelines . . . . . . . . . . . . . . . . . . . . 32 + 4.1. Target Network Topologies . . . . . . . . . . . . . . . . 32 + 4.2. Networks Using the MLD Protocol . . . . . . . . . . . . . 33 + 4.3. Networks Using RPL Multicast without MLD . . . . . . . . 33 + 4.4. Networks Using MPL Forwarding without MLD . . . . . . . . 34 + 4.5. 6LoWPAN Specific Guidelines for the 6LBR . . . . . . . . 35 + 5. Security Considerations . . . . . . . . . . . . . . . . . . . 35 + 5.1. Security Configuration . . . . . . . . . . . . . . . . . 35 + 5.2. Threats . . . . . . . . . . . . . . . . . . . . . . . . . 36 + + + +Rahman & Dijk Experimental [Page 2] + +RFC 7390 Group Communication for CoAP October 2014 + + + 5.3. Threat Mitigation . . . . . . . . . . . . . . . . . . . . 36 + 5.3.1. WiFi Scenario . . . . . . . . . . . . . . . . . . . . 37 + 5.3.2. 6LoWPAN Scenario . . . . . . . . . . . . . . . . . . 37 + 5.3.3. Future Evolution . . . . . . . . . . . . . . . . . . 37 + 5.4. Monitoring Considerations . . . . . . . . . . . . . . . . 38 + 5.4.1. General Monitoring . . . . . . . . . . . . . . . . . 38 + 5.4.2. Pervasive Monitoring . . . . . . . . . . . . . . . . 38 + 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 + 6.1. New 'core.gp' Resource Type . . . . . . . . . . . . . . . 39 + 6.2. New 'coap-group+json' Internet Media Type . . . . . . . . 39 + 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 + 7.1. Normative References . . . . . . . . . . . . . . . . . . 41 + 7.2. Informative References . . . . . . . . . . . . . . . . . 43 + Appendix A. Multicast Listener Discovery (MLD) . . . . . . . . . 45 + Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 45 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 + +1. Introduction + +1.1. Background + + CoAP is a web transfer protocol based on Representational State + Transfer (REST) for resource constrained devices operating in an IP + network [RFC7252]. CoAP has many similarities to HTTP [RFC7230] but + also some key differences. Constrained devices can be large in + numbers but are often related to each other in function or by + location. For example, all the light switches in a building may + belong to one group, and all the thermostats may belong to another + group. Groups may be preconfigured before deployment or dynamically + formed during operation. If information needs to be sent to or + received from a group of devices, group communication mechanisms can + improve efficiency and latency of communication and reduce bandwidth + requirements for a given application. HTTP does not support any + equivalent functionality to CoAP group communication. + +1.2. Scope + + Group communication involves a one-to-many relationship between CoAP + endpoints. Specifically, a single CoAP client can simultaneously get + (or set) resources from multiple CoAP servers using CoAP over IP + multicast. An example would be a CoAP light switch turning on/off + multiple lights in a room with a single CoAP group communication PUT + request and handling the potential multitude of (unicast) responses. + + The base protocol aspects of sending CoAP requests on top of IP + multicast and processing the (unicast IP) responses are given in + Section 8 of [RFC7252]. To provide a more complete CoAP group + communication functionality, this specification introduces new CoAP + + + +Rahman & Dijk Experimental [Page 3] + +RFC 7390 Group Communication for CoAP October 2014 + + + processing functionality (e.g., new rules for reuse of Token values, + request suppression, and proxy operation) and a new management + interface for RESTful group membership configuration. + + CoAP group communication will run in the Any Source Multicast (ASM) + mode [RFC5110] of IP multicast operation. This means that there is + no restriction on the source node that sends (originates) the CoAP + messages to the IP multicast group. For example, the source node may + or may not be part of the IP multicast group. Also, there is no + restriction on the number of source nodes. + + While Section 9.1 of [RFC7252] supports various modes of security + based on Datagram Transport Layer Security (DTLS) for CoAP over + unicast IP, it does not specify any security modes for CoAP over IP + multicast. That is, it is assumed per [RFC7252] that CoAP over IP + multicast is not encrypted, nor authenticated, nor access controlled. + This document assumes the same security model (see Section 5.1). + However, there are several promising security approaches being + developed that should be considered in the future for protecting CoAP + group communications (see Section 5.3.3). + +1.3. Conventions and Terminology + + 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 + [RFC2119] when they appear in ALL CAPS. When these words are not in + ALL CAPS (such as "should" or "Should"), they have their usual + English meanings and are not to be interpreted as [RFC2119] key + words. + + Note that this document refers back to other RFCs, and especially + [RFC7252], to help explain overall CoAP group communication features. + However, use of [RFC2119] key words is reserved for new CoAP + functionality introduced by this specification. + + This document assumes readers are familiar with the terms and + concepts that are used in [RFC7252]. In addition, this document + defines the following terminology: + + Group Communication: + A source node sends a single application-layer (e.g., CoAP) + message that is delivered to multiple destination nodes, where all + destinations are identified to belong to a specific group. The + source node itself may be part of the group. The underlying + mechanisms for CoAP group communication are UDP/IP multicast for + + + + + +Rahman & Dijk Experimental [Page 4] + +RFC 7390 Group Communication for CoAP October 2014 + + + the requests and unicast UDP/IP for the responses. The network + involved may be a constrained network such as a low-power, lossy + network. + + Reliable Group Communication: + A special case of group communication where for each destination + node, it is guaranteed that the node either 1) eventually receives + the message sent by the source node or 2) does not receive the + message and the source node is notified of the non-reception + event. An example of a reliable group communication protocol is + [RFC5740]. + + Multicast: + Sending a message to multiple destination nodes with one network + invocation. There are various options to implement multicast, + including layer 2 (Media Access Control) and layer 3 (IP) + mechanisms. + + IP Multicast: + A specific multicast approach based on the use of IP multicast + addresses as defined in "IANA Guidelines for IPv4 Multicast + Address Assignments" [RFC5771] and "IP Version 6 Addressing + Architecture" [RFC4291]. A complete IP multicast solution may + include support for managing group memberships and IP multicast + routing/forwarding (see Section 2.1). + + Low-Power and Lossy Network (LLN): + A type of constrained IP network where devices are interconnected + by low-power and lossy links. The links may be composed of one or + more technologies such as IEEE 802.15.4, Bluetooth Low Energy + (BLE), Digital Enhanced Cordless Telecommunication (DECT), and + IEEE P1901.2 power-line communication. + +2. Protocol Considerations + +2.1. IP Multicast Background + + IP multicast protocols have been evolving for decades, resulting in + standards such as Protocol Independent Multicast - Sparse Mode (PIM- + SM) [RFC4601]. IP multicast is very popular in specific deployments + such as in enterprise networks (e.g., for video conferencing), smart + home networks (e.g., Universal Plug and Play (UPnP)), and carrier + IPTV deployments. The packet economy and minimal host complexity of + IP multicast make it attractive for group communication in + constrained environments. + + + + + + +Rahman & Dijk Experimental [Page 5] + +RFC 7390 Group Communication for CoAP October 2014 + + + To achieve IP multicast beyond link-local (LL) scope, an IP multicast + routing or forwarding protocol needs to be active on IP routers. An + example of a routing protocol specifically for LLNs is the IPv6 + Routing Protocol for Low-Power and Lossy Networks (RPL) (Section 12 + of [RFC6550]), and an example of a forwarding protocol for LLNs is + the Multicast Protocol for Low-Power and Lossy Networks (MPL) + [MCAST-MPL]. RPL and MPL do not depend on each other; each can be + used in isolation, and both can be used in combination in a network. + Finally, PIM-SM [RFC4601] is often used for multicast routing in + traditional IP networks (i.e., networks that are not constrained). + + IP multicast can also be run in an LL scope. This means that there + is no routing involved, and an IP multicast message is only received + over the link on which it was sent. + + For a complete IP multicast solution, in addition to a routing/ + forwarding protocol, a "listener" protocol may be needed for the + devices to subscribe to groups (see Section 4.2). Also, a multicast + forwarding proxy node [RFC4605] may be required. + + IP multicast is generally classified as an unreliable service in that + packets are not guaranteed to be delivered to each and every member + of the group. In other words, it cannot be directly used as a basis + for "reliable group communication" as defined in Section 1.3. + However, the level of reliability can be increased by employing a + multicast protocol that performs periodic retransmissions as is done, + for example, in MPL. + +2.2. Group Definition and Naming + + A CoAP group is defined as a set of CoAP endpoints, where each + endpoint is configured to receive CoAP group communication requests + that are sent to the group's associated IP multicast address. The + individual response by each endpoint receiver to a CoAP group + communication request is always sent back as unicast. An endpoint + may be a member of multiple groups. Group membership of an endpoint + may dynamically change over time. + + All CoAP server nodes SHOULD join the "All CoAP Nodes" multicast + group (Section 12.8 of [RFC7252]) by default to enable CoAP + discovery. For IPv4, the address is 224.0.1.187, and for IPv6, a + server node joins at least both the link-local scoped address + ff02::fd and the site-local scoped address ff05::fd. IPv6 addresses + of other scopes MAY be enabled. + + A CoAP group URI has the scheme 'coap' and includes in the authority + part either a group IP multicast address or a hostname (e.g., Group + Fully Qualified Domain Name (FQDN)) that can be resolved to the group + + + +Rahman & Dijk Experimental [Page 6] + +RFC 7390 Group Communication for CoAP October 2014 + + + IP multicast address. A group URI also contains an optional CoAP + port number in the authority part. Group URIs follow the regular + CoAP URI syntax (Section 6 of [RFC7252]). + + Note: A group URI is needed to initiate CoAP group communications. + For CoAP client implementations, it is recommended to use the URI + decomposition method of Section 6.4 of [RFC7252] in such a way that, + from a group URI, a CoAP group communication request is generated. + + For sending nodes, it is recommended to use the IP multicast address + literal in a group URI. (This is because DNS infrastructure may not + be deployed in many constrained network deployments.) However, in + case a group hostname is used, it can be uniquely mapped to an IP + multicast address via DNS resolution (if supported). Some examples + of hierarchical group FQDN naming (and scoping) for a building + control application are shown below: + + URI authority Targeted group of nodes + --------------------------------------- -------------------------- + all.bldg6.example.com "all nodes in building 6" + all.west.bldg6.example.com "all nodes in west wing, + building 6" + all.floor1.west.bldg6.example.com "all nodes in floor 1, + west wing, building 6" + all.bu036.floor1.west.bldg6.example.com "all nodes in office bu036, + floor 1, west wing, + building 6" + + Similarly, if supported, reverse mapping (from IP multicast address + to Group FQDN) is possible using the reverse DNS resolution technique + ([RFC1033]). Reverse mapping is important, for example, in + troubleshooting to translate IP multicast addresses back to human- + readable hostnames to show in a diagnostics user interface. + +2.3. Port and URI Configuration + + A CoAP server that is a member of a group listens for CoAP messages + on the group's IP multicast address, usually on the CoAP default UDP + port, 5683. If the group uses a specified non-default UDP port, be + careful to ensure that all group members are configured to use that + same port. + + Different ports for the same IP multicast address are preferably not + used to specify different CoAP groups. If disjoint groups share the + same IP multicast address, then all the devices interested in one + group will accept IP traffic also for the other disjoint groups, only + to ultimately discard the traffic higher in their IP stack (based on + UDP port discrimination). + + + +Rahman & Dijk Experimental [Page 7] + +RFC 7390 Group Communication for CoAP October 2014 + + + CoAP group communication will not work if there is diversity in the + authority port (e.g., different dynamic port addresses across the + group) or if other parts of the group URI such as the path, or the + query, differ on different endpoints. Therefore, some measures must + be present to ensure uniformity in port number and resource names/ + locations within a group. All CoAP group communication requests MUST + be sent using a port number according to one of the below options: + + 1. A preconfigured port number. + + 2. If the client is configured to use service discovery including + URI and port discovery, it uses the port number obtained via a + service discovery lookup operation for the targeted CoAP group. + + 3. Use the default CoAP UDP port (5683). + + For a CoAP server node that supports resource discovery, the default + port 5683 must be supported (Section 7.1 of [RFC7252]) for the "All + CoAP Nodes" group. Regardless of the method of selecting the port + number, the same port MUST be used across all CoAP servers in a group + and across all CoAP clients performing the group requests. + + All CoAP group communication requests SHOULD operate on group URI + paths in one of the following ways: + + 1. Preconfigured group URI paths, if available. Implementers are + free to define the paths as they see fit. However, note that + [RFC7320] prescribes that a specification must not constrain or + define the structure or semantics for any path component. So for + this reason, a predefined URI path is not specified in this + document and also must not be provided in other specifications. + + 2. If the client is configured to use default Constrained RESTful + Environments (CoRE) resource discovery, it uses URI paths + retrieved from a "/.well-known/core" lookup on a group member. + The URI paths the client will use MUST be known to be available + also in all other endpoints in the group. The URI path + configuration mechanism on servers MUST ensure that these URIs + (identified as being supported by the group) are configured on + all group endpoints. + + 3. If the client is configured to use another form of service + discovery, it uses group URI paths from an equivalent service + discovery lookup that returns the resources supported by all + group members. + + + + + + +Rahman & Dijk Experimental [Page 8] + +RFC 7390 Group Communication for CoAP October 2014 + + + 4. If the client has received a group URI through a previous RESTful + interaction with a trusted server, it can use this URI in a CoAP + group communication request. For example, a commissioning tool + may instruct a sensor device in this way to which target group + (group URI) it should report sensor events. + + However, when the URI path is selected, the same path MUST be used + across all CoAP servers in a group and all CoAP clients performing + the group requests. + +2.4. RESTful Methods + + Group communication most often uses the idempotent CoAP methods GET + and PUT. The idempotent method DELETE can also be used. The non- + idempotent CoAP method POST may only be used for group communication + if the resource being POSTed to has been designed to cope with the + unreliable and lossy nature of IP multicast. For example, a client + may resend a multicast POST request for additional reliability. Some + servers will receive the request two times while others may receive + it only once. For idempotent methods, all these servers will be in + the same state while for POST, this is not guaranteed; so, the + resource POST operation must be specifically designed to take message + loss into account. + +2.5. Request and Response Model + + All CoAP requests that are sent via IP multicast must be Non- + confirmable (Section 8.1 of [RFC7252]). The Message ID in an IP + multicast CoAP message is used for optional message deduplication as + detailed in Section 4.5 of [RFC7252]. + + A server optionally sends back a unicast response to the CoAP group + communication request (e.g., response "2.05 Content" to a group GET + request). 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. + Detailed processing rules for IP multicast request acceptance and + unicast response suppression are given in Section 2.7. + + A CoAP request sent over IP multicast and any unicast response it + causes must take into account the congestion control rules defined in + Section 2.8. + + The CoAP client can distinguish the origin of multiple server + responses by the source IP address of the UDP message containing the + CoAP response or any other available unique identifier (e.g., + + + + + +Rahman & Dijk Experimental [Page 9] + +RFC 7390 Group Communication for CoAP October 2014 + + + contained in the CoAP payload). In case a CoAP client sent multiple + group requests, the responses are as usual matched to a request using + the CoAP Token. + + For multicast CoAP requests, there are additional constraints on the + reuse of Token values, compared to the unicast case. In the unicast + case, receiving a response effectively frees up its Token value for + reuse since no more responses will follow. However, for multicast + CoAP, the number of responses is not bounded a priori. Therefore, + the reception of a response cannot be used as a trigger to "free up" + a Token value for reuse. Reusing a Token value too early could lead + to incorrect response/request matching in the client and would be a + protocol error. Therefore, the time between reuse of Token values + used in multicast requests MUST be greater than: + + NON_LIFETIME + MAX_LATENCY + MAX_SERVER_RESPONSE_DELAY + + where NON_LIFETIME and MAX_LATENCY are defined in Section 4.8 of + [RFC7252]. MAX_SERVER_RESPONSE_DELAY is defined here as 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 [RFC7252]. 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 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. + +2.6. Membership Configuration + +2.6.1. Background + +2.6.1.1. Member Discovery + + CoAP groups, and the membership of these groups, can be discovered + via the lookup interfaces in the Resource Directory (RD) defined in + [CoRE-RD]. This discovery interface is not required to invoke CoAP + group communications. However, it is a potential complementary + interface useful for overall management of CoAP groups. Other + methods to discover groups (e.g., proprietary management systems) can + also be used. An example of doing some of the RD-based lookups is + given in Section 3.6. + + + + +Rahman & Dijk Experimental [Page 10] + +RFC 7390 Group Communication for CoAP October 2014 + + +2.6.1.2. Configuring Members + + The group membership of a CoAP endpoint may be configured in one of + the following ways. First, the group membership may be preconfigured + before node deployment. Second, a node may be programmed to discover + (query) its group membership using a specific service discovery + means. Third, it may be configured by another node (e.g., a + commissioning device). + + In the first case, the preconfigured group information may be either + an IP multicast address or a hostname (FQDN) that is resolved later + (during operation) to an IP multicast address by the endpoint using + DNS (if supported). + + For the second case, a CoAP endpoint may look up its group membership + using techniques such as DNS-based Service Discovery (DNS-SD) and RD + [CoRE-RD]. + + In the third case, typical in scenarios such as building control, a + dynamic commissioning tool determines to which group(s) a sensor or + actuator node belongs, and writes this information to the node, which + can subsequently join the correct IP multicast group(s) on its + network interface. The information written per group may again be an + IP multicast address or a hostname. + +2.6.2. Membership Configuration RESTful Interface + + To achieve better interoperability between endpoints from different + manufacturers, an OPTIONAL CoAP membership configuration RESTful + interface for configuring endpoints with relevant group information + is described here. This interface provides a solution for the third + case mentioned above. To access this interface, a client will use + unicast CoAP methods (GET/PUT/POST/DELETE). This interface is a + method of configuring group information in individual endpoints. + + Also, a form of authorization (preferably making use of unicast DTLS- + secured CoAP per Section 9.1 of [RFC7252]) should be used such that + only authorized controllers are allowed by an endpoint to configure + its group membership. + + It is important to note that other approaches may be used to + configure CoAP endpoints with relevant group information. These + alternative approaches may support a subset or superset of the + membership configuration RESTful interface described in this + document. For example, a simple interface to just read the endpoint + group information may be implemented via a classical Management + Information Base (MIB) approach (e.g., following the approach of + [RFC3433]). + + + +Rahman & Dijk Experimental [Page 11] + +RFC 7390 Group Communication for CoAP October 2014 + + +2.6.2.1. CoAP-Group Resource Type and Media Type + + CoAP endpoints implementing the membership configuration RESTful + interface MUST support the CoAP group configuration Internet Media + Type "application/coap-group+json" (Section 6.2). + + A resource offering this representation can be annotated for direct + discovery [RFC6690] using the Resource Type (rt=) Link Target + Attribute "core.gp", where "gp" is shorthand for "group" + (Section 6.1). An authorized client uses this media type to query/ + manage group membership of a CoAP endpoint as defined in the + following subsections. + + The Group Configuration resource and its sub-resources have a content + format based on JavaScript Object Notation (JSON) (as indicated by + the "application/coap-group+json" media type). The resource includes + zero or more group membership JSON objects [RFC7159] in a format as + defined in Section 2.6.2.4. A group membership JSON object contains + one or more key/value pairs as defined below, and represents a single + IP multicast group membership for the CoAP endpoint. Each key/value + pair is encoded as a member of the JSON object, where the key is the + member name and the value is the member's value. + + Examples of four different group membership objects are as follows: + + { "n": "All-Devices.floor1.west.bldg6.example.com", + "a": "[ff15::4200:f7fe:ed37:abcd]:4567" } + + { "n": "sensors.floor2.east.bldg6.example.com" } + + { "n": "coap-test", + "a": "224.0.1.187:56789" } + + { "a": "[ff15::c0a7:15:c001]" } + + The OPTIONAL "n" key/value pair stands for "name" and identifies the + group with a hostname (and optionally the port number), for example, + an FQDN. The OPTIONAL "a" key/value pair specifies the IP multicast + address (and optionally the port number) of the group. It contains + an IPv4 address (in dotted-decimal notation) or an IPv6 address. The + following ABNF rule can be used for parsing the address, referring to + the definitions in Section 3.2.2 of [RFC3986] that are also used in + the base CoAP (Section 6 of [RFC7252]. + + group-address = IPv4address [ ":" port ] + / "[" IPv6address "]" [":" port ] + + + + + +Rahman & Dijk Experimental [Page 12] + +RFC 7390 Group Communication for CoAP October 2014 + + + In any group membership object, if the IP address is known when the + object is created, it is included in the "a" key/value pair. If the + "a" value cannot be provided, the "n" value MUST be included, + containing a valid hostname with an optional port number that can be + translated to an IP multicast address via DNS. + + group-name = host [ ":" port ] + + If the port number is not provided, then the endpoint will attempt to + look up the port number from DNS if it supports a method to do this. + The possible DNS methods include DNS SRV [RFC2782] or DNS-SD + [RFC6763]. If port lookup is not supported or not provided by DNS, + the default CoAP port (5683) is assumed. + + After any change on a Group Configuration resource, the endpoint MUST + effect registration/deregistration from the corresponding IP + multicast group(s) by making use of APIs such as IPV6_RECVPKTINFO + [RFC3542]. + +2.6.2.2. Creating a New Multicast Group Membership (POST) + + Method: POST + URI Template: /{+gp} + Location-URI Template: /{+gp}/{index} + URI Template Variables: + gp - Group Configuration Function Set path (mandatory). + index - Group index. Index MUST be a string of maximum two (2) + alphanumeric ASCII characters (case insensitive). It MUST be + locally unique to the endpoint server. It indexes the particular + endpoint's list of group memberships. + + Example: + Req: POST /coap-group + Content-Format: application/coap-group+json + { "n": "All-Devices.floor1.west.bldg6.example.com", + "a": "[ff15::4200:f7fe:ed37:abcd]:4567" } + Res: 2.01 Created + Location-Path: /coap-group/12 + + For the 'gp' variable, it is recommended to use the path "coap-group" + by default. The "a" key/value pair is always used if it is given. + The "n" pair is only used when there is no "a" pair. If only the "n" + pair is given, the CoAP endpoint performs DNS resolution to obtain + the IP multicast address from the hostname in the "n" pair. If DNS + resolution is not successful, then the endpoint does not attempt + joining or listening to any multicast group for this case since the + IP multicast address is unknown. + + + + +Rahman & Dijk Experimental [Page 13] + +RFC 7390 Group Communication for CoAP October 2014 + + + After any change on a Group Configuration resource, the endpoint MUST + effect registration/deregistration from the corresponding IP + multicast group(s) by making use of APIs such as IPV6_RECVPKTINFO + [RFC3542]. When a POST payload contains an "a", an IP multicast + address to which the endpoint is already subscribed, no change to + that subscription is needed. + +2.6.2.3. Deleting a Single Group Membership (DELETE) + + Method: DELETE + URI Template: {+location} + URI Template Variables: + location - The Location-Path returned by the CoAP server + as a result of a successful group creation. + + Example: + Req: DELETE /coap-group/12 + Res: 2.02 Deleted + +2.6.2.4. Reading All Group Memberships at Once (GET) + + A (unicast) GET on the CoAP-group resource returns a JSON object + containing multiple keys and values. The keys (member names) are + group indices, and the values (member values) are the corresponding + group membership objects. Each group membership object describes one + IP multicast group membership. If no group memberships are + configured, then an empty JSON object is returned. + + Method: GET + + URI Template: /{+gp} + + URI Template Variables: + + gp - see Section 2.6.2.2 + + Example: + Req: GET /coap-group + Res: 2.05 Content + Content-Format: application/coap-group+json + { "8" :{ "a": "[ff15::4200:f7fe:ed37:14ca]" }, + "11":{ "n": "sensors.floor1.west.bldg6.example.com", + "a": "[ff15::4200:f7fe:ed37:25cb]" }, + "12":{ "n": "All-Devices.floor1.west.bldg6.example.com", + "a": "[ff15::4200:f7fe:ed37:abcd]:4567" } + } + + + + + +Rahman & Dijk Experimental [Page 14] + +RFC 7390 Group Communication for CoAP October 2014 + + + Note: the returned IPv6 address string will represent the same IPv6 + address that was originally submitted in group membership creation, + though it might be a different string because of different choices in + IPv6 string representation formatting that may be allowed for the + same address (see [RFC5952]). + +2.6.2.5. Reading a Single Group Membership (GET) + + Similar to Section 2.6.2.4, but only a single group membership is + read. If the requested group index does not exist, then a 4.04 Not + Found response is returned. + + Method: GET + + URI Template 1: {+location} + + URI Template 2: /{+gp}/{index} + + URI Template Variables: + + location - see Section 2.6.2.3 + + gp, index - see Section 2.6.2.2 + + Example: + Req: GET /coap-group/12 + Res: 2.05 Content + Content-Format: application/coap-group+json + {"n": "All-Devices.floor1.west.bldg6.example.com", + "a": "[ff15::4200:f7fe:ed37:abcd]:4567"} + +2.6.2.6. Creating/Updating All Group Memberships at Once (PUT) + + A (unicast) PUT with a group configuration media type as payload will + replace all current group memberships in the endpoint with the new + ones defined in the PUT request. This operation MUST only be used to + delete or update group membership objects for which the CoAP client, + invoking this operation, is responsible. The responsibility is based + on application-level knowledge. For example, a commissioning tool + will be responsible for any group membership objects that it created. + + Method: PUT + + URI Template: /{+gp} + + URI Template Variables: + + gp - see Section 2.6.2.2 + + + +Rahman & Dijk Experimental [Page 15] + +RFC 7390 Group Communication for CoAP October 2014 + + + Example: (replacing all existing group memberships with two new + group memberships) + Req: PUT /coap-group + Content-Format: application/coap-group+json + { "1":{ "a": "[ff15::4200:f7fe:ed37:1234]" }, + "2":{ "a": "[ff15::4200:f7fe:ed37:5678]" } + } + Res: 2.04 Changed + + Example: (clearing all group memberships at once) + Req: PUT /coap-group + Content-Format: application/coap-group+json + {} + Res: 2.04 Changed + + After a successful PUT on the Group Configuration resource, the + endpoint MUST effect registration to any new IP multicast group(s) + and deregistration from any previous IP multicast group(s), i.e., not + any more present in the new memberships. An API such as + IPV6_RECVPKTINFO [RFC3542] should be used for this purpose. Also, it + MUST take into account the group indices present in the new resource + during the generation of any new unique group indices in the future. + +2.6.2.7. Updating a Single Group Membership (PUT) + + A (unicast) PUT with a group membership JSON object will replace an + existing group membership in the endpoint with the new one defined in + the PUT request. This can be used to update the group membership. + + Method: PUT + + URI Template 1: {+location} + + URI Template 2: /{+gp}/{index} + + URI Template Variables: + + location - see Section 2.6.2.3 + + gp, index - see Section 2.6.2.2 + + Example: (group name and IP multicast port change) + Req: PUT /coap-group/12 + Content-Format: application/coap-group+json + {"n": "All-My-Devices.floor1.west.bldg6.example.com", + "a": "[ff15::4200:f7fe:ed37:abcd]"} + Res: 2.04 Changed + + + + +Rahman & Dijk Experimental [Page 16] + +RFC 7390 Group Communication for CoAP October 2014 + + + After a successful PUT on the Group Configuration resource, the + endpoint MUST effect registration to any new IP multicast group(s) + and deregistration from any previous IP multicast group(s), i.e., not + any more present in the new membership. An API such as + IPV6_RECVPKTINFO [RFC3542] should be used for this purpose. + +2.7. Request Acceptance and Response Suppression Rules + + CoRE Link Format [RFC6690] and Section 8 of CoAP [RFC7252] define + behaviors for the following: + + 1. IP multicast request acceptance -- in which cases a CoAP request + is accepted and executed, and when it is not. + + 2. IP multicast response suppression -- in which cases the CoAP + response to an already executed request is returned to the + requesting endpoint, and when it is not. + + A CoAP response differs from a CoAP ACK; ACKs are never sent by + servers in response to an IP multicast CoAP request. This section + first summarizes these behaviors and then presents additional + guidelines for response suppression. Also, a number of IP multicast + example applications are given to illustrate the overall approach. + + To apply any rules for request and/or response suppression, a CoAP + server must be aware that an incoming request arrived via IP + multicast by making use of APIs such as IPV6_RECVPKTINFO [RFC3542]. + + For IP multicast request acceptance, the behaviors are as follows: + + o A server should not accept an IP multicast request that cannot be + "authenticated" in some way (i.e, cryptographically or by some + multicast boundary limiting the potential sources); see + Section 11.3 of [RFC7252]. See Section 5.3 for examples of + multicast boundary limiting methods. + + o A server should not accept an IP multicast discovery request with + a query string (as defined in CoRE Link Format [RFC6690]) if + filtering [RFC6690] is not supported by the server. + + o A server should not accept an IP multicast request that acts on a + specific resource for which IP multicast support is not required. + (Note that for the resource "/.well-known/core", IP multicast + support is required if "multicast resource discovery" is supported + as specified in Section 1.2.1 of [RFC6690].) Implementers are + advised to disable IP multicast support by default on any other + resource, until explicitly enabled by an application or by + configuration. + + + +Rahman & Dijk Experimental [Page 17] + +RFC 7390 Group Communication for CoAP October 2014 + + + o Otherwise, accept the IP multicast request. + + For IP multicast response suppression, the behaviors are as follows: + + o A server should not respond to an IP multicast discovery request + if the filter specified by the request's query string does not + match. + + o A server may choose not to respond to an IP multicast request if + there's nothing useful to respond back (e.g., error or empty + response). + + The above response suppression behaviors are complemented by the + following guidelines. CoAP servers should implement configurable + response suppression, enabling at least the following options per + resource that supports IP multicast requests: + + o Suppression of all 2.xx success responses; + + o Suppression of all 4.xx client errors; + + o Suppression of all 5.xx server errors; and + + o Suppression of all 2.05 responses with empty payload. + + A number of CoAP group communication example applications are given + below to illustrate how to make use of response suppression: + + o CoAP resource discovery: Suppress 2.05 responses with empty + payload and all 4.xx and 5.xx errors. + + o Lighting control: Suppress all 2.xx responses after a lighting + change command. + + o Update configuration data in a group of devices using group + communication PUT: No suppression at all. The client uses + collected responses to identify which group members did not + receive the new configuration and then attempts using CoAP CON + unicast to update those specific group members. Note that in this + case, the client implements a "reliable group communication" (as + defined in Section 1.3) function using additional, non- + standardized functions above the CoAP layer. + + o IP multicast firmware update by sending blocks of data: Suppress + all 2.xx and 5.xx responses. After having sent all IP multicast + blocks, the client checks each endpoint by unicast to identify + which data blocks are still missing in each endpoint. + + + + +Rahman & Dijk Experimental [Page 18] + +RFC 7390 Group Communication for CoAP October 2014 + + + o Conditional reporting for a group (e.g., sensors) based on a group + URI query: Suppress all 2.05 responses with empty payload (i.e., + if a query produces no matching results). + +2.8. Congestion Control + + CoAP group communication 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. + + CoAP [RFC7252] reduces IP multicast-specific congestion risks through + the following measures: + + o A server may choose not to respond to an IP multicast request if + there's nothing useful to respond to (e.g., error or empty + response); see Section 8.2 of [RFC7252]. See Section 2.7 for more + detailed guidelines on response suppression. + + o A server should limit the support for IP multicast requests to + specific resources where multicast operation is required + (Section 11.3 of [RFC7252]). + + o An IP multicast request must be Non-confirmable (Section 8.1 of + [RFC7252]). + + o A response to an IP multicast request should be Non-confirmable + (Section 5.2.3 of [RFC7252]). + + o 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 + [RFC7252]). + + Additional guidelines to reduce congestion risks defined in this + document are as follows: + + o A server in an LLN should only support group communication GET for + resources that are small. For example, the payload of the + response is limited to approximately 5% of the IP Maximum Transmit + Unit (MTU) size, so it fits into a single link-layer frame in case + IPv6 over Low-Power Wireless Personal Area Networks (6LoWPAN) (see + Section 4 of [RFC4944]) is used. + + + + + + + +Rahman & Dijk Experimental [Page 19] + +RFC 7390 Group Communication for CoAP October 2014 + + + o A server can minimize the payload length in response to a group + communication 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 [RFC6690]. + + o A server can also minimize the payload length of a response to a + group communication GET (e.g., on "/.well-known/core") using CoAP + blockwise transfers [BLOCKWISE-CoAP], 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 core-block. + + o 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. + + More guidelines specific to the use of CoAP in 6LoWPAN networks + [RFC4919] are given in Section 4.5 of this document. + +2.9. Proxy Operation + + CoAP (Section 5.7.2 of [RFC7252]) allows a client to request a + forward-proxy to process its CoAP request. For this purpose, the + client specifies either the request group URI as a string in the + Proxy-URI option or the Proxy-Scheme option with the group URI + constructed from the usual Uri-* options. This approach works well + for unicast requests. However, there are certain issues and + limitations of processing the (unicast) responses to a CoAP group + communication request made in this manner through a proxy. + + A proxy may buffer all the individual (unicast) responses to a CoAP + group communication request and then send back only a single + (aggregated) response to the client. However, there are some issues + with this aggregation approach: + + o Aggregation of (unicast) responses to a CoAP group communication + request in a proxy is difficult. This is because 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 how + long to wait before deciding to send back the aggregated response + to the client. + + o There is no default format defined in CoAP for aggregation of + multiple responses into a single response. + + + + +Rahman & Dijk Experimental [Page 20] + +RFC 7390 Group Communication for CoAP October 2014 + + + Alternatively, if a proxy follows directly the specification for a + CoAP Proxy (Section 5.7.2 of [RFC7252]), the proxy would simply + forward all the individual (unicast) responses to a CoAP group + communication request to the client (i.e., no aggregation). There + are also issues with this approach: + + o The client may be confused as it may not have known that the + Proxy-URI contained a group URI target. That is, the client may + be expecting only one (unicast) response but instead receives + multiple (unicast) responses, potentially leading to fault + conditions in the application. + + o Each individual CoAP response will appear to originate (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. + + Due to the above issues, a CoAP Proxy SHOULD NOT support processing + an IP multicast CoAP request but rather return a 501 (Not + Implemented) response in such case. The exception case here (i.e., + to process it) is allowed if all the following conditions are met: + + o The CoAP Proxy MUST be explicitly configured (whitelist) to allow + proxied IP multicast requests by a specific client(s). + + o The proxy SHOULD return individual (unicast) CoAP responses to the + client (i.e., not aggregated). The exception case here occurs + when a (future) standardized aggregation format is being used. + + o It MUST be known to the person/entity doing the configuration of + the proxy, or otherwise verified in some way, that the client + configured in the whitelist supports receiving multiple responses + to a proxied unicast CoAP request. + +2.10. Exceptions + + CoAP group communication using IP multicast offers improved network + efficiency and latency among other benefits. However, group + communication may not always be implementable in a given network. + The primary reason for this will be that IP multicast is not (fully) + supported in the network. + + For example, if only RPL [RFC6550] is used in a network with its + optional multicast support disabled, there will be no IP multicast + routing at all. The only multicast that works in this case is link- + local IPv6 multicast. This implies that any CoAP group communication + request will be delivered to nodes on the local link only, regardless + of the scope value used in the IPv6 destination address. + + + +Rahman & Dijk Experimental [Page 21] + +RFC 7390 Group Communication for CoAP October 2014 + + + CoAP Observe [OBSERVE-CoAP] is a feature for a client to "observe" + resources (i.e., to retrieve a representation of a resource and keep + this representation updated by the server over a period of time). + CoAP Observe does not support a group communication mode. CoAP + Observe only supports a unicast mode of operation. + +3. Use Cases and Corresponding Protocol Flows + +3.1. Introduction + + The use of CoAP group communication is shown in the context of the + following two use cases and corresponding protocol flows: + + o Discovery of RD [CoRE-RD]: discovering the local CoAP RD, which + contains links to resources stored on other CoAP servers + [RFC6690]. + + o Lighting Control: synchronous operation of a group of + IPv6-connected lights (e.g., 6LoWPAN [RFC4944] lights). + +3.2. Network Configuration + + To illustrate the use cases, we define two IPv6 network + configurations. Both are based on the topology as shown in Figure 1. + The two configurations using this topology are as follows: + + 1. Subnets are 6LoWPAN networks; the routers Rtr-1 and Rtr-2 are + 6LoWPAN Border Routers (6LBRs) [RFC6775]. + + 2. Subnets are Ethernet links; the routers Rtr-1 and Rtr-2 are + multicast-capable Ethernet routers. + + Both configurations are further specified by the following: + + o A large room (Room-A) with three lights (Light-1, Light-2, Light- + 3) controlled by a light switch (Light Switch). The devices are + organized into two subnets. In reality, there could be more + lights (up to several hundreds) but, for clarity, only three are + shown. + + o Light-1 and the light switch are connected to a router (Rtr-1). + + o Light-2 and Light-3 are connected to another router (Rtr-2). + + + + + + + + +Rahman & Dijk Experimental [Page 22] + +RFC 7390 Group Communication for CoAP October 2014 + + + o The routers are connected to an IPv6 network backbone (Network + Backbone) that is also multicast enabled. In the general case, + this means the network backbone and Rtr-1/Rtr-2 support a PIM- + based multicast routing protocol and Multicast Listener Discovery + (MLD) for forming groups. + + o A CoAP RD is connected to the network backbone. + + o The DNS server (DNS Server) is optional. If the server is there + (connected to the network backbone), then certain DNS-based + features are available (e.g., DNS resolution of the hostname to + the IP multicast address). If the DNS server is not there, then + different provisioning of the network is required (e.g., IP + multicast addresses are hard-coded into devices, or manually + configured, or obtained via a service discovery method). + + o A controller (CoAP client) is connected to the backbone, which is + able to control various building functions including lighting. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 23] + +RFC 7390 Group Communication for CoAP October 2014 + + + ################################################ + # ********************** Room-A # + # ** Subnet-1 ** # Network + # * ** # Backbone + # * +----------+ * # | + # * | Light |-------+ * # | + # * | Switch | | * # | + # * +----------+ +---------+ * # | + # * | Rtr-1 |-----------------------------+ + # * +---------+ * # | + # * +----------+ | * # | + # * | Light-1 |--------+ * # | + # * +----------+ * # | + # ** ** # | + # ************************** # | + # # | + # ********************** # +------------+ | + # ** Subnet-2 ** # | DNS Server | | + # * ** # | (Optional) |--+ + # * +----------+ * # +------------+ | + # * | Light-2 |-------+ * # | + # * | | | * # | + # * +----------+ +---------+ * # | + # * | Rtr-2 |-----------------------------+ + # * +---------+ * # | + # * +----------+ | * # | + # * | Light-3 |--------+ * # | + # * +----------+ * # +------------+ | + # ** ** # | Controller |--+ + # ************************** # | Client | | + ################################################ +------------+ | + +------------+ | + | CoAP | | + | Resource |-----------------+ + | Directory | + +------------+ + + + Figure 1: Network Topology of a Large Room (Room-A) + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 24] + +RFC 7390 Group Communication for CoAP October 2014 + + +3.3. Discovery of Resource Directory + + The protocol flow for discovery of the CoAP RD for the given network + (of Figure 1) is shown in Figure 2: + + o Light-2 is installed and powered on for the first time. + + o Light-2 will then search for the local CoAP RD by sending out a + group communication GET request (with the "/.well-known/ + core?rt=core.rd" request URI) to the site-local "All CoAP Nodes" + multicast address (ff05:::fd). + + o This multicast message will then go to each node in Subnet-2. + Rtr-2 will then forward it into the network backbone where it will + be received by the CoAP RD. All other nodes in Subnet-2 will + ignore the group communication GET request because it is qualified + by the query string "?rt=core.rd" (which indicates it should only + be processed by the endpoint if it contains a resource of type + "core.rd"). + + o The CoAP RD will then send back a unicast response containing the + requested content, which is a CoRE Link Format representation of a + resource of type "core.rd". + + o Note that the flow is shown only for Light-2 for clarity. Similar + flows will happen for Light-1, Light-3, and light switch when they + are first installed. + + The CoAP RD may also be discovered by other means such as by assuming + a default location (e.g., on a 6LBR), using DHCP, anycast address, + etc. However, these approaches do not invoke CoAP group + communication so are not further discussed here. (See [CoRE-RD] for + more details.) + + For other discovery use cases such as discovering local CoAP servers, + services, or resources, CoAP group communication can be used in a + similar fashion as in the above use case. For example, link-local, + realm-local, admin-local, or site-local scoped discovery can be done + this way. + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 25] + +RFC 7390 Group Communication for CoAP October 2014 + + + Light CoAP + Light-1 Light-2 Light-3 Switch Rtr-1 Rtr-2 RD + | | | | | | | + | | | | | | | + ********************************** | | | + * Light-2 is installed * | | | + * and powers on for first time * | | | + ********************************** | | | + | | | | | | | + | | | | | | | + | | COAP NON Mcast(GET | | + | | /.well-known/core?rt=core.rd) | | + | |--------->-------------------------------->| | + | | | | | |--------->| + | | | | | | | + | | | | | | | + | | COAP NON (2.05 Content | | + | | </rd>;rt="core.rd";ins="Primary") |<---------| + | |<------------------------------------------| | + | | | | | | | + + + Figure 2: Resource Directory Discovery via Multicast Request + +3.4. Lighting Control + + The protocol flow for a building automation lighting control scenario + for the network (Figure 1) is shown in Figure 3. The network is + assumed to be in a 6LoWPAN configuration. Also, it is assumed that + the CoAP servers in each light are configured to suppress CoAP + responses for any IP multicast CoAP requests related to lighting + control. (See Section 2.7 for more details on response suppression + by a server.) + + In addition, Figure 4 shows a protocol flow example for the case that + servers do respond to a lighting control IP multicast request with + (unicast) CoAP NON responses. There are two success responses and + one 5.00 error response. In this particular case, the light switch + does not check that all lights in the group received the IP multicast + request by examining the responses. This is because the light switch + is not configured with an exhaustive list of the IP addresses of all + lights belonging to the group. However, based on received error + responses, it could take additional action such as logging a fault or + alerting the user via its LCD display. In case a CoAP message is + delivered multiple times to a light, the subsequent CoAP messages can + be filtered out as duplicates, based on the CoAP Message ID. + + + + + +Rahman & Dijk Experimental [Page 26] + +RFC 7390 Group Communication for CoAP October 2014 + + + Reliability of IP multicast is not guaranteed. Therefore, one or + more lights in the group may not have received the CoAP control + request due to packet loss. In this use case, there is no detection + nor correction of such situations: the application layer expects that + the IP multicast forwarding/routing will be of sufficient quality to + provide on average a very high probability of packet delivery to all + CoAP endpoints in an IP multicast group. An example protocol to + accomplish this using randomized retransmission is the MPL forwarding + protocol for LLNs [MCAST-MPL]. + + We assume the following steps have already occurred before the + illustrated flows: + + 1) Startup phase: 6LoWPANs are formed. IPv6 addresses are assigned + to all devices. The CoAP network is formed. + + 2) Network configuration (application independent): 6LBRs are + configured with IP multicast addresses, or address blocks, to + filter out or to pass through to/from the 6LoWPAN. + + 3a) Commissioning phase (application related): The IP multicast + address of the group (Room-A-Lights) has been configured in all + the lights and in the light switch. + + 3b) As an alternative to the previous step, when a DNS server is + available, the light switch and/or the lights have been + configured with a group hostname that each node resolves to the + above IP multicast address of the group. + + Note for the Commissioning phase: the switch's 6LoWPAN/CoAP software + stack supports sending unicast, multicast, or proxied unicast CoAP + requests, including processing of the multiple responses that may be + generated by an IP multicast CoAP request. + + + + + + + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 27] + +RFC 7390 Group Communication for CoAP October 2014 + + + Light Network + Light-1 Light-2 Light-3 Switch Rtr-1 Rtr-2 Backbone + | | | | | | | + | | | | | | | + | | *********************** | | + | | * User flips on * | | + | | * light switch to * | | + | | * turn on all the * | | + | | * lights in Room-A * | | + | | *********************** | | + | | | | | | | + | | | | | | | + | | | COAP NON Mcast(PUT, | | + | | | Payload=lights ON) | | + |<-------------------------------+--------->| | | + ON | | | |-------------------->| + | | | | | |<---------| + | |<---------|<-------------------------------| | + | ON ON | | | | + ^ ^ ^ | | | | + *********************** | | | | + * Lights in Room-A * | | | | + * turn on (nearly * | | | | + * simultaneously) * | | | | + *********************** | | | | + | | | | | | | + + + Figure 3: Light Switch Sends Multicast Control Message + + + + + + + + + + + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 28] + +RFC 7390 Group Communication for CoAP October 2014 + + + Light Network + Light-1 Light-2 Light-3 Switch Rtr-1 Rtr-2 Backbone + | | | | | | | + | COAP NON (2.04 Changed) | | | | + |------------------------------->| | | | + | | | | | | | + | | | | | | | + | COAP NON (2.04 Changed) | | | + | |------------------------------------------>| | + | | | | | |--------->| + | | | | |<--------------------| + | | | |<---------| | | + | | | | | | | + | | COAP NON (5.00 Internal Server Error) | + | | |------------------------------->| | + | | | | | |--------->| + | | | | |<--------------------| + | | | |<---------| | | + | | | | | | | + + + Figure 4: Lights (Optionally) Respond to Multicast CoAP Request + + Another, but similar, lighting control use case is shown in Figure 5. + In this case, a controller connected to the network backbone sends a + CoAP group communication request to turn on all lights in Room-A. + Every light sends back a CoAP response to the controller after being + turned on. + + + + + + + + + + + + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 29] + +RFC 7390 Group Communication for CoAP October 2014 + + + Network + Light-1 Light-2 Light-3 Rtr-1 Rtr-2 Backbone Controller + | | | | | | | + | | | | | COAP NON Mcast(PUT, + | | | | | Payload=lights ON) + | | | | | |<-------| + | | | |<----------<---------| | + |<--------------------------------| | | | + ON | | | | | | + | |<----------<---------------------| | | + | ON ON | | | | + ^ ^ ^ | | | | + *********************** | | | | + * Lights in Room-A * | | | | + * turn on (nearly * | | | | + * simultaneously) * | | | | + *********************** | | | | + | | | | | | | + | | | | | | | + | COAP NON (2.04 Changed) | | | | + |-------------------------------->| | | | + | | | |-------------------->| | + | | COAP NON (2.04 Changed) | |------->| + | |-------------------------------->| | | + | | | | |--------->| | + | | | COAP NON (2.04 Changed) |------->| + | | |--------------------->| | | + | | | | |--------->| | + | | | | | |------->| + | | | | | | | + + + Figure 5: Controller on Backbone Sends Multicast Control Message + +3.5. Lighting Control in MLD-Enabled Network + + The use case in the previous section can also apply in networks where + nodes support the MLD protocol [RFC3810]. The lights then take on + the role of MLDv2 listener, and the routers (Rtr-1 and Rtr-2) are + MLDv2 routers. In the Ethernet-based network configuration, MLD may + be available on all involved network interfaces. Use of MLD in the + 6LoWPAN-based configuration is also possible but requires MLD support + in all nodes in the 6LoWPAN. In current 6LoWPAN implementations, MLD + is, however, not supported. + + The resulting protocol flow is shown in Figure 6. This flow is + executed after the commissioning phase, as soon as lights are + configured with a group address to listen to. The (unicast) MLD + + + +Rahman & Dijk Experimental [Page 30] + +RFC 7390 Group Communication for CoAP October 2014 + + + Reports may require periodic refresh activity as specified by the MLD + protocol. In the figure, 'LL' denotes link-local communication. + + After the shown sequence of MLD Report messages has been executed, + both Rtr-1 and Rtr-2 are automatically configured to forward IP + multicast traffic destined to Room-A-Lights onto their connected + subnet. Hence, no manual network configuration of routers, as + previously indicated in Section 3.4, step 2, is needed anymore. + + Light Network + Light-1 Light-2 Light-3 Switch Rtr-1 Rtr-2 Backbone + | | | | | | | + | | | | | | | + | | | | | | | + | MLD Report: Join | | | | | + | Group (Room-A-Lights) | | | | + |---LL------------------------------------->| | | + | | | | |MLD Report: Join | + | | | | |Group (Room-A-Lights)| + | | | | |---LL---->----LL---->| + | | | | | | | + | | MLD Report: Join | | | | + | | Group (Room-A-Lights) | | | + | |---LL------------------------------------->| | + | | | | | | | + | | | MLD Report: Join | | | + | | | Group (Room-A-Lights) | | + | | |---LL-------------------------->| | + | | | | | | | + | | | | |MLD Report: Join | + | | | | |Group (Room-A-Lights)| + | | | | |<--LL-----+---LL---->| + | | | | | | | + | | | | | | | + + + Figure 6: Joining Lighting Groups Using MLD + +3.6. Commissioning the Network Based on Resource Directory + + This section outlines how devices in the lighting use case (both + switches and lights) can be commissioned, making use of the RD + [CoRE-RD] and its group configuration feature. + + Once the RD is discovered, the Switches and lights need to be + discovered and their groups need to be defined. For the + commissioning of these devices, a commissioning tool can be used that + + + + +Rahman & Dijk Experimental [Page 31] + +RFC 7390 Group Communication for CoAP October 2014 + + + defines the entries in the RD. The commissioning tool has the + authority to change the contents of the RD and the light/switch + nodes. DTLS-based unicast security is used by the commissioning tool + to modify operational data in RD, switches, and lights. + + In our particular use case, a group of three lights is defined with + one IP multicast address and hostname: + + "Room-A-Lights.floor1.west.bldg6.example.com" + + The commissioning tool has a list of the three lights and the + associated IP multicast address. For each light in the list, the + tool learns the IP address of the light and instructs the RD with + three (unicast) POST commands to store the endpoints associated with + the three lights as prescribed by the RD specification [CoRE-RD]. + Finally, the commissioning tool defines the group in the RD to + contain these three endpoints. Also the commissioning tool writes + the IP multicast address in the light endpoints with, for example, + the (unicast) POST command discussed in Section 2.6.2.2. + + The light switch can discover the group in RD and thus learn the IP + multicast address of the group. The light switch will use this + address to send CoAP group communication requests to the members of + the group. When the message arrives, the lights should recognize the + IP multicast address and accept the message. + +4. Deployment Guidelines + + This section provides guidelines on how IP multicast-based CoAP group + communication can be deployed in various network configurations. + +4.1. Target Network Topologies + + CoAP group communication can be deployed in various network + topologies. First, the target network may be a traditional IP + network, or an LLN such as a 6LoWPAN network, or consist of mixed + traditional/constrained network segments. Second, it may be a single + subnet only or a multi-subnet, e.g., multiple 6LoWPAN networks joined + by a single backbone LAN. Third, a wireless network segment may have + all its nodes reachable in a single IP hop (fully connected), or it + may require multiple IP hops for some pairs of nodes to reach each + other. + + Each topology may pose different requirements on the configuration of + routers and protocol(s), in order to enable efficient CoAP group + communication. To enable all the above target network topologies, an + implementation of CoAP group communication needs to allow the + following: + + + +Rahman & Dijk Experimental [Page 32] + +RFC 7390 Group Communication for CoAP October 2014 + + + 1. Routing/forwarding of IP multicast packets over multiple hops. + + 2. Routing/forwarding of IP multicast packets over subnet boundaries + between traditional and constrained (e.g., LLN) networks. + + The remainder of this section discusses solutions to enable both + features. + +4.2. Networks Using the MLD Protocol + + CoAP nodes that are IP hosts (i.e., not IP routers) are generally + unaware of the specific IP multicast routing/forwarding protocol + being used. 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 traffic it wants to receive. + + The MLD protocol [RFC3810] (see Appendix A of this document) is the + standard IPv6 method to achieve this; therefore, this approach should + be used on traditional IP networks. CoAP server nodes would then act + in the role of MLD Multicast Address Listener. + + The guidelines from [RFC6636] on the tuning of MLD for mobile and + wireless networks may be useful when implementing MLD in LLNs. + However, on LLNs and 6LoWPAN networks, the use of MLD may not be + feasible at all due to constraints on code size, memory, or network + capacity. + +4.3. Networks Using RPL Multicast without MLD + + It is assumed in this section that the MLD protocol is not + implemented in a network, for example, due to resource constraints. + The RPL routing protocol (see Section 12 of [RFC6550]) defines the + advertisement of IP multicast destinations using Destination + Advertisement Object (DAO) messages and routing of multicast IPv6 + packets based on this. It requires the RPL mode of operation to be 3 + (Storing mode with multicast support). + + Hence, RPL DAO can be used by CoAP nodes that are RPL routers, or are + RPL Leaf Nodes, to advertise IP multicast group membership to parent + routers. Then, RPL is used to route IP multicast CoAP requests over + multiple hops to the correct CoAP servers. + + 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 6LoWPAN networks, such + + + +Rahman & Dijk Experimental [Page 33] + +RFC 7390 Group Communication for CoAP October 2014 + + + selective "filtering" helps to avoid congestion of a 6LoWPAN subnet + by IP multicast traffic from the traditional backbone IP network. + +4.4. Networks Using MPL Forwarding without MLD + + The MPL forwarding protocol [MCAST-MPL] can be used for propagation + of IPv6 multicast packets to all MPL Forwarders within a predefined + network domain, over multiple hops. MPL is designed to work in LLNs. + In this section, it is again assumed that MLD is not implemented in + the network, for example, due to resource limitations in an LLN. + + The purpose of MPL is to let a predefined group of Forwarders + collectively work towards the goal of distributing an IPv6 multicast + packet throughout an MPL Domain. (A Forwarder node may be associated + to multiple MPL Domains at the same time.) So, it would appear that + there is no need for CoAP servers to advertise their multicast group + membership, since any IP multicast packet that enters the MPL Domain + is distributed to all MPL Forwarders without regard to what multicast + addresses the individual nodes are listening to. + + However, if an IP multicast request originates just outside the MPL + Domain, the request will not be propagated by MPL. An example of + such a case is the network topology of Figure 1 where the subnets are + 6LoWPAN subnets and for each 6LoWPAN subnet, one Realm-Local + ([RFC7346]) MPL Domain is defined. The backbone network in this case + is not part of any MPL Domain. + + This situation can become a problem in building control use cases, + for example, when the controller client needs to send a single IP + multicast request to the group Room-A-Lights. By default, the + request would be blocked by Rtr-1 and by Rtr-2 and not enter the + Realm-Local MPL Domains associated to Subnet-1 and Subnet-2. The + reason is that Rtr-1 and Rtr-2 do not have the knowledge that devices + in Subnet-1/2 want to listen for IP packets destined to IP multicast + group Room-A-Lights. + + To solve the above issue, the following solutions could be applied: + + 1. Extend the MPL Domain, e.g., in the above example, include the + network backbone to be part of each of the two MPL Domains. Or, + in the above example, create just a single MPL Domain that + includes both 6LoWPAN subnets plus the backbone link, which is + possible since MPL is not tied to a single link-layer technology. + + 2. Manual configuration of an edge router(s) as an MPL Seed(s) for + specific IP multicast traffic. In the above example, this could + be done through the following three steps: First, configure Rtr-1 + and Rtr-2 to act as MLD Address Listeners for the Room-A-Lights + + + +Rahman & Dijk Experimental [Page 34] + +RFC 7390 Group Communication for CoAP October 2014 + + + IP multicast group. This step allows any (other) routers on the + backbone to learn that at least one node on the backbone link is + interested in receiving any IP multicast traffic to + Room-A-Lights. Second, configure both routers to "inject" any IP + multicast packets destined to group Room-A-Lights into the + (Realm-Local) MPL Domain that is associated to that router. + Third, configure both routers to propagate any IPv6 multicast + packets originating from within their associated MPL Domain to + the backbone, if at least one node on the backbone has indicated + interest in receiving such IPv6 packets (for which MLD is used on + the backbone). + + 3. Use an additional protocol/mechanism for injection of IP + multicast traffic from outside an MPL Domain into that MPL + Domain, based on IP multicast group subscriptions of Forwarders + within the MPL Domain. Such a protocol is currently not defined + in [MCAST-MPL]. + + In conclusion, MPL can be used directly in case all sources of IP + multicast CoAP requests (CoAP clients) and also all the destinations + (CoAP servers) are inside a single MPL Domain. Then, each source + node acts as an MPL Seed. In all other cases, MPL can only be used + with additional protocols and/or configuration on how IP multicast + packets can be injected from outside into an MPL Domain. + +4.5. 6LoWPAN Specific Guidelines for the 6LBR + + To support multi-subnet scenarios for CoAP group communication, it is + recommended that a 6LBR will act in an MLD router role on the + backbone link. If this is not possible, then the 6LBR should be + configured to act as an MLD Multicast Address Listener (see + Appendix A) on the backbone link. + +5. Security Considerations + + This section describes the relevant security configuration for CoAP + group communication using IP multicast. The threats to CoAP group + communication are also identified, and various approaches to mitigate + these threats are summarized. + +5.1. Security Configuration + + As defined in Sections 8.1 and 9.1 of [RFC7252], CoAP group + communication based on IP multicast will do the following: + + o Operate in CoAP NoSec (No Security) mode, until a future group + security solution is developed (see also Section 5.3.3). + + + + +Rahman & Dijk Experimental [Page 35] + +RFC 7390 Group Communication for CoAP October 2014 + + + o Use the "coap" scheme. The "coaps" scheme should only be used + when a future group security solution is developed (see also + Section 5.3.3). + + Essentially, the above configuration means that there is currently no + security at the CoAP layer for group communication. Therefore, for + sensitive and mission-critical applications (e.g., health monitoring + systems and alarm monitoring systems), it is currently recommended to + deploy CoAP group communication with an application-layer security + mechanism (e.g., data object security) for improved security. + + Application-level security has many desirable properties, including + maintaining security properties 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). + + Without application-layer security, CoAP group communication should + only be currently deployed in non-critical applications (e.g., read- + only temperature sensors). Only when security solutions at the CoAP + layer are mature enough (see Section 5.3.3) should CoAP group + communication without application-layer security be considered for + sensitive and mission-critical applications. + +5.2. Threats + + As noted above, there is currently no security at the CoAP layer for + group communication. This is due to the fact that the current DTLS- + based approach for CoAP is exclusively unicast oriented and does not + support group security features such as group key exchange and group + authentication. As a direct consequence of this, CoAP group + communication is vulnerable to all attacks mentioned in Section 11 of + [RFC7252] for IP multicast. + +5.3. Threat Mitigation + + Section 11 of [RFC7252] identifies various threat mitigation + techniques for CoAP group communication. In addition to those + guidelines, it is recommended that for sensitive data or safety- + critical control, a combination of appropriate link-layer security + and administrative control of IP multicast boundaries should be used. + Some examples are given below. + + + + + + + + +Rahman & Dijk Experimental [Page 36] + +RFC 7390 Group Communication for CoAP October 2014 + + +5.3.1. WiFi Scenario + + In a home automation scenario (using WiFi), the WiFi encryption + 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 [RFC6092]). In addition, the scope of the + IP multicast should be set to be site-local or smaller scope. For + site-local scope, the CPE will be an appropriate multicast scope + boundary point. + +5.3.2. 6LoWPAN Scenario + + In a building automation scenario, a particular room may have a + single 6LoWPAN network with a single edge router (6LBR). Nodes on + the subnet can use link-layer encryption to prevent rogue nodes from + joining. The 6LBR can be configured so that it blocks any incoming + (6LoWPAN-bound) IP multicast traffic. Another example topology could + be a multi-subnet 6LoWPAN in a large conference room. In this case, + the backbone can implement port authentication (IEEE 802.1X) to + ensure only authorized devices can join the Ethernet backbone. The + access router to this secured network segment can also be configured + to block incoming IP multicast traffic. + +5.3.3. Future Evolution + + In the future, to further mitigate the threats, security enhancements + need to be developed at the IETF for group communications. This will + allow introduction of a secure mode of CoAP group communication and + use of the "coaps" scheme for that purpose. + + At the time of writing this specification, there are various + approaches being considered for security enhancements for group + communications. Specifically, a lot of the current effort at the + IETF is geared towards developing DTLS-based group communication. + This is primarily motivated by the fact that unicast CoAP security is + DTLS based (Section 9.1 of [RFC7252]. For example, [MCAST-SECURITY] + proposes DTLS-based IP multicast security. However, it is too early + to conclude if this is the best approach. Alternatively, + [IPSEC-PAYLOAD] proposes IPsec-based IP multicast security. This + approach also needs further investigation and validation. + + + + + + + + + +Rahman & Dijk Experimental [Page 37] + +RFC 7390 Group Communication for CoAP October 2014 + + +5.4. Monitoring Considerations + +5.4.1. General Monitoring + + CoAP group communication is meant to be used to control a set of + related devices (e.g., simultaneously turn on all the lights in a + room). This intrinsically exposes the group to some unique + monitoring risks that solitary devices (i.e., 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 a CoAP group communication message to that easily + observable coordinated group action even if the contents of the + message are encrypted by a future security solution (see + Section 5.3.3). This will give the attacker side-channel information + to plan further attacks (e.g., by determining the members of the + group, then some network topology information may be deduced). + + One mitigation to group communication monitoring risks that should be + explored in the future is methods to decorrelate coordinated group + actions. For example, if a CoAP group communication GET is sent to + all the alarm sensors in a house, then their (unicast) responses + should be as decorrelated as possible. This will introduce greater + entropy into the system and will make it harder for an attacker to + monitor and gather side-channel information. + +5.4.2. Pervasive Monitoring + + A key additional threat consideration for group communication is + pointed to by [RFC7258], which warns of the dangers of pervasive + monitoring. 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 (e.g., and to secretly + record) compared to unicast traffic. Also, CoAP traffic is meant for + the Internet of Things. This means that CoAP traffic (once future + security solutions are developed as in Section 5.3.3) may be used for + the control and monitoring of critical infrastructure (e.g., lights, + alarms, etc.) that may be prime targets for attack. + + For example, an attacker may attempt to record all the CoAP traffic + going over the smart grid (i.e., networked electrical utility) of a + country and try to determine critical nodes for further attacks. For + example, the source node (controller) sends out the CoAP group + communication messages. CoAP multicast traffic is inherently more + vulnerable (compared to a unicast packet) as the same packet may be + replicated over many links, so there is a much higher probability of + it getting captured by a pervasive monitoring system. + + + + + +Rahman & Dijk Experimental [Page 38] + +RFC 7390 Group Communication for CoAP October 2014 + + + One useful mitigation to pervasive monitoring is to restrict the + scope of the 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. This approach has the added advantage that it + coincides with the guidelines for minimizing congestion control (see + Section 2.8). + + In the future, even if all the CoAP multicast traffic is encrypted, + an attacker may still attempt to capture the traffic and perform an + off-line attack, though of course having the multicast traffic + protected is always desirable as it significantly raises the cost to + an attacker (e.g., to break the encryption) versus unprotected + multicast traffic. + +6. IANA Considerations + +6.1. New 'core.gp' Resource Type + + This memo registers a new Resource Type (rt=) Link Target Attribute, + 'core.gp', in the "Resource Type (rt=) Link Target Attribute Values" + subregistry under the "Constrained RESTful Environments (CoRE) + Parameters" registry. + + Attribute Value: core.gp + + Description: Group Configuration resource. This resource is used to + query/manage the group membership of a CoAP server. + + Reference: See Section 2.6.2. + +6.2. New 'coap-group+json' Internet Media Type + + This memo registers a new Internet media type for the CoAP Group + Configuration resource called 'application/coap-group+json'. + + Type name: application + + Subtype name: coap-group+json + + Required parameters: None + + Optional parameters: None + + Encoding considerations: 8-bit UTF-8. + + JSON to be represented using UTF-8, which is 8-bit compatible (and + most efficient for resource constrained implementations). + + + +Rahman & Dijk Experimental [Page 39] + +RFC 7390 Group Communication for CoAP October 2014 + + + Security considerations: + + Denial-of-Service attacks could be performed by constantly + (re-)setting the Group Configuration resource of a CoAP endpoint to + different values. This will cause the endpoint to register (or + deregister) from the related IP multicast group. To prevent this, it + is recommended that a form of authorization (making use of unicast + DTLS-secured CoAP) be used such that only authorized controllers are + allowed by an endpoint to configure its group membership. + + Interoperability considerations: None + + Published specification: RFC 7390 + + Applications that use this media type: + + CoAP client and server implementations that wish to set/read the + Group Configuration resource via the 'application/coap-group+json' + payload as described in Section 2.6.2. + + Fragment identifier considerations: N/A + + Additional Information: + + Deprecated alias names for this type: None + + Magic number(s): None + + File extension(s): *.json + + Macintosh file type code(s): TEXT + + Person and email address to contact for further information: + + Esko Dijk ("Esko.Dijk@Philips.com") + + Intended usage: COMMON + + Restrictions on usage: None + + Author: CoRE WG + + Change controller: IETF + + Provisional registration? (standards tree only): N/A + + + + + + +Rahman & Dijk Experimental [Page 40] + +RFC 7390 Group Communication for CoAP October 2014 + + +7. References + +7.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997, + <http://www.rfc-editor.org/info/rfc2119>. + + [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for + specifying the location of services (DNS SRV)", RFC 2782, + February 2000, <http://www.rfc-editor.org/info/rfc2782>. + + [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. + Thyagarajan, "Internet Group Management Protocol, Version + 3", RFC 3376, October 2002, + <http://www.rfc-editor.org/info/rfc3376>. + + [RFC3433] Bierman, A., Romascanu, D., and K. Norseth, "Entity Sensor + Management Information Base", RFC 3433, December 2002, + <http://www.rfc-editor.org/info/rfc3433>. + + [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, + "Advanced Sockets Application Program Interface (API) for + IPv6", RFC 3542, May 2003, + <http://www.rfc-editor.org/info/rfc3542>. + + [RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery + Version 2 (MLDv2) for IPv6", RFC 3810, June 2004, + <http://www.rfc-editor.org/info/rfc3810>. + + [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform + Resource Identifier (URI): Generic Syntax", STD 66, RFC + 3986, January 2005, + <http://www.rfc-editor.org/info/rfc3986>. + + [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 4291, February 2006, + <http://www.rfc-editor.org/info/rfc4291>. + + [RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, + "Protocol Independent Multicast - Sparse Mode (PIM-SM): + Protocol Specification (Revised)", RFC 4601, August 2006, + <http://www.rfc-editor.org/info/rfc4601>. + + + + + + + + +Rahman & Dijk Experimental [Page 41] + +RFC 7390 Group Communication for CoAP October 2014 + + + [RFC4919] Kushalnagar, N., Montenegro, G., and C. Schumacher, "IPv6 + over Low-Power Wireless Personal Area Networks (6LoWPANs): + Overview, Assumptions, Problem Statement, and Goals", RFC + 4919, August 2007, + <http://www.rfc-editor.org/info/rfc4919>. + + [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, + "Transmission of IPv6 Packets over IEEE 802.15.4 + Networks", RFC 4944, September 2007, + <http://www.rfc-editor.org/info/rfc4944>. + + [RFC5110] Savola, P., "Overview of the Internet Multicast Routing + Architecture", RFC 5110, January 2008, + <http://www.rfc-editor.org/info/rfc5110>. + + [RFC5771] Cotton, M., Vegoda, L., and D. Meyer, "IANA Guidelines for + IPv4 Multicast Address Assignments", BCP 51, RFC 5771, + March 2010, <http://www.rfc-editor.org/info/rfc5771>. + + [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 + Address Text Representation", RFC 5952, August 2010, + <http://www.rfc-editor.org/info/rfc5952>. + + [RFC6092] Woodyatt, J., "Recommended Simple Security Capabilities in + Customer Premises Equipment (CPE) for Providing + Residential IPv6 Internet Service", RFC 6092, January + 2011, <http://www.rfc-editor.org/info/rfc6092>. + + [RFC6550] Winter, T., Thubert, P., Brandt, A., Hui, J., Kelsey, R., + Levis, P., Pister, K., Struik, R., Vasseur, JP., and R. + Alexander, "RPL: IPv6 Routing Protocol for Low-Power and + Lossy Networks", RFC 6550, March 2012, + <http://www.rfc-editor.org/info/rfc6550>. + + [RFC6636] Asaeda, H., Liu, H., and Q. Wu, "Tuning the Behavior of + the Internet Group Management Protocol (IGMP) and + Multicast Listener Discovery (MLD) for Routers in Mobile + and Wireless Networks", RFC 6636, May 2012, + <http://www.rfc-editor.org/info/rfc6636>. + + [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link + Format", RFC 6690, August 2012, + <http://www.rfc-editor.org/info/rfc6690>. + + [RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service + Discovery", RFC 6763, February 2013, + <http://www.rfc-editor.org/info/rfc6763>. + + + + +Rahman & Dijk Experimental [Page 42] + +RFC 7390 Group Communication for CoAP October 2014 + + + [RFC6775] Shelby, Z., Chakrabarti, S., Nordmark, E., and C. Bormann, + "Neighbor Discovery Optimization for IPv6 over Low-Power + Wireless Personal Area Networks (6LoWPANs)", RFC 6775, + November 2012, <http://www.rfc-editor.org/info/rfc6775>. + + [RFC7159] Bray, T., "The JavaScript Object Notation (JSON) Data + Interchange Format", RFC 7159, March 2014, + <http://www.rfc-editor.org/info/rfc7159>. + + [RFC7230] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol + (HTTP/1.1): Message Syntax and Routing", RFC 7230, June + 2014, <http://www.rfc-editor.org/info/rfc7230>. + + [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained + Application Protocol (CoAP)", RFC 7252, June 2014, + <http://www.rfc-editor.org/info/rfc7252>. + + [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an + Attack", BCP 188, RFC 7258, May 2014, + <http://www.rfc-editor.org/info/rfc7258>. + + [RFC7320] Nottingham, M., "URI Design and Ownership", BCP 190, RFC + 7320, July 2014, <http://www.rfc-editor.org/info/rfc7320>. + +7.2. Informative References + + [RFC1033] Lottor, M., "Domain administrators operations guide", RFC + 1033, November 1987, + <http://www.rfc-editor.org/info/rfc1033>. + + [RFC4605] Fenner, B., He, H., Haberman, B., and H. Sandick, + "Internet Group Management Protocol (IGMP) / Multicast + Listener Discovery (MLD)-Based Multicast Forwarding + ("IGMP/MLD Proxying")", RFC 4605, August 2006, + <http://www.rfc-editor.org/info/rfc4605>. + + [RFC5740] Adamson, B., Bormann, C., Handley, M., and J. Macker, + "NACK-Oriented Reliable Multicast (NORM) Transport + Protocol", RFC 5740, November 2009, + <http://www.rfc-editor.org/info/rfc5740>. + + [RFC7346] Droms, R., "IPv6 Multicast Address Scopes", RFC 7346, + August 2014, <http://www.rfc-editor.org/info/rfc7346>. + + [BLOCKWISE-CoAP] + Bormann, C. and Z. Shelby, "Blockwise transfers in CoAP", + Work in Progress, draft-ietf-core-block-15, July 2014. + + + + +Rahman & Dijk Experimental [Page 43] + +RFC 7390 Group Communication for CoAP October 2014 + + + [CoRE-RD] Shelby, Z., Bormann, C., and S. Krco, "CoRE Resource + Directory", Work in Progress, draft-ietf-core-resource- + directory-01, December 2013. + + [OBSERVE-CoAP] + Hartke, K., "Observing Resources in CoAP", Work in + Progress, draft-ietf-core-observe-14, June 2014. + + [MCAST-MPL] + Hui, J. and R. Kelsey, "Multicast Protocol for Low power + and Lossy Networks (MPL)", Work in Progress, draft-ietf- + roll-trickle-mcast-09, April 2014. + + [MCAST-SECURITY] + Keoh, S., Kumar, S., Garcia-Morchon, O., Dijk, E., and A. + Rahman, "DTLS-based Multicast Security in Constrained + Environments", Work in Progress, draft-keoh-dice- + multicast-security-08, July 2014. + + [IPSEC-PAYLOAD] + Migault, D. and C. Bormann, "IPsec/ESP for Application + Payload", Work in Progress, draft-mglt-dice-ipsec-for- + application-payload-00, July 2014. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 44] + +RFC 7390 Group Communication for CoAP October 2014 + + +Appendix A. Multicast Listener Discovery (MLD) + + In order to extend the scope of IP multicast beyond link-local scope, + an IP multicast routing or forwarding protocol has to be active in + routers on an LLN. To achieve efficient IP multicast routing (i.e., + avoid always flooding IP multicast packets), routers have to learn + which hosts need to receive packets addressed to specific IP + multicast destinations. + + The MLD protocol [RFC3810] (or its IPv4 equivalent, IGMP [RFC3376]) + is today the method of choice used by a (IP multicast-enabled) router + to discover the presence of IP multicast listeners on directly + attached links, and to discover which IP multicast addresses are of + interest to those listening nodes. MLD was specifically designed to + cope with fairly dynamic situations in which IP multicast listeners + may join and leave at any time. + + Optimal tuning of the parameters of MLD/IGMP for routers for mobile + and wireless networks is discussed in [RFC6636]. These guidelines + may be useful when implementing MLD in LLNs. + +Acknowledgements + + Thanks to Jari Arkko, Peter Bigot, Anders Brandt, Ben Campbell, + Angelo Castellani, Alissa Cooper, Spencer Dawkins, Badis Djamaa, + Adrian Farrel, Stephen Farrell, Thomas Fossati, Brian Haberman, + Bjoern Hoehrmann, Matthias Kovatsch, Guang Lu, Salvatore Loreto, + Kerry Lynn, Andrew McGregor, Kathleen Moriarty, Pete Resnick, Dale + Seed, Zach Shelby, Martin Stiemerling, Peter van der Stok, Gengyu + Wei, and Juan Carlos Zuniga for their helpful comments and + discussions that have helped shape this document. + + Special thanks to Carsten Bormann and Barry Leiba for their extensive + and thoughtful Chair and AD reviews of the document. Their reviews + helped to immeasurably improve the document quality. + + + + + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 45] + +RFC 7390 Group Communication for CoAP October 2014 + + +Authors' Addresses + + Akbar Rahman (editor) + InterDigital Communications, LLC + 1000 Sherbrooke Street West + Montreal, Quebec H3A 3G4 + Canada + + EMail: Akbar.Rahman@InterDigital.com + + + Esko Dijk (editor) + Philips Research + High Tech Campus 34 + Eindhoven 5656AE + Netherlands + + EMail: esko.dijk@philips.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rahman & Dijk Experimental [Page 46] + |