<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-observe-multicast-notifications-17" category="std" consensus="true" submissionType="IETF" updates="7252, 7641" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Observe Multicast Notifications">Observe Notifications as CoAP Multicast Responses</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-observe-multicast-notifications-17"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <street>Hollandstr. 12/4</street>
          <city>Vienna</city>
          <code>1020</code>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>WIT</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 157?>

<t>The Constrained Application Protocol (CoAP) allows clients to "observe" resources at a server and to receive notifications as unicast responses upon changes of the resource state. In some use cases, such as those based on publish-subscribe, it would be convenient for the server to send a single notification addressed to all the clients observing the same target resource. This document updates RFC7252 and RFC7641, and it defines how a server sends observe notifications as response messages over multicast, synchronizing  all the observers of the same resource on the same shared Token value. Besides, this document defines how the security protocol Group Object Security for Constrained RESTful Environments (Group OSCORE) can be used to protect multicast notifications end-to-end between the server and the observer clients.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Constrained RESTful Environments Working Group mailing list (core@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/core-wg/observe-multicast-notifications"/>.</t>
    </note>
  </front>
  <middle>
    <?line 161?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> has been extended with a number of mechanisms, including resource Observation <xref target="RFC7641"/>. This enables CoAP clients to register at a CoAP server as "observers" of a resource, and hence to be automatically notified with an unsolicited response upon changes of the resource state.</t>
      <t>CoAP supports group communication <xref target="I-D.ietf-core-groupcomm-bis"/>, e.g., over IP multicast. This includes support for Observe registration requests over multicast, in order for clients to efficiently register as observers of a resource hosted at multiple servers.</t>
      <t>However, in a number of use cases, using multicast messages for responses would also be desirable. That is, it would be useful that a server sends observe notifications for the same target resource to multiple observers as responses over IP multicast.</t>
      <t>For instance, in the publish-subscribe architecture for CoAP <xref target="I-D.ietf-core-coap-pubsub"/>, multiple clients can subscribe to a topic, by observing the related resource hosted at the responsible broker. When new data is published on that topic, it would be convenient for the broker to send a single multicast notification at once, addressed to all the subscriber clients observing the resource related to that topic.</t>
      <t>A different use case concerns clients observing the same registration resource at the CoRE Resource Directory <xref target="RFC9176"/>. For example, multiple clients can benefit from observation for discovering (to-be-created) groups that use the security protocol Group Object Security for Constrained RESTful Environments (Group OSCORE) <xref target="I-D.ietf-core-oscore-groupcomm"/>, by retrieving from the Resource Directory updated links and descriptions to join those groups through the respective Group Manager <xref target="I-D.tiloca-core-oscore-discovery"/>.</t>
      <t>More in general, multicast notifications would be beneficial whenever several CoAP clients observe the same target resource at a CoAP server, and thus they could all be notified at once by means of a single response message. However, CoAP does not originally define response messages addressed to multiple clients, e.g., over IP multicast. This document fills this gap and provides the following twofold contribution.</t>
      <t>First, it updates <xref target="RFC7252"/> and <xref target="RFC7641"/>, by defining a method to deliver observe notifications as CoAP responses addressed to multiple clients, e.g., over IP multicast. In particular, the group of potential observers entrusts the server to manage the Token space for multicast notifications. Building on that, the server provides all the observers of a target resource with the same Token value to bind to their own observation, by sending a unicast informative response to each observer client. That Token value is then used in every multicast notification for the target resource under that observation.</t>
      <t>Second, this document defines how to use Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> to protect multicast notifications end-to-end between the server and the observer clients. This is also achieved by means of the unicast informative response mentioned above, which additionally includes parameter values used by the server to protect every multicast notification for the target resource by using Group OSCORE. This provides a secure binding between each of such notifications and the observation of each of the clients.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>Readers are expected to be familiar with terms and concepts described in CoAP <xref target="RFC7252"/>, group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/>, Observe <xref target="RFC7641"/>, Concise Data Definition Language (CDDL) <xref target="RFC8610"/>, Concise Binary Object Representation (CBOR) <xref target="RFC8949"/>, Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/>, Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>, and Constrained Resource Identifiers (CRIs) <xref target="I-D.ietf-core-href"/>.</t>
        <t>This document additionally defines the following terminology.</t>
        <ul spacing="normal">
          <li>
            <t>Traditional observation: a resource observation associated with a single observer client, as defined in <xref target="RFC7641"/>.</t>
          </li>
          <li>
            <t>Group observation: a resource observation associated with a group of clients. The server sends multicast notifications for the group-observed resource to all the observer clients at once. For example, such notifications can be transported over UDP and IP multicast.</t>
          </li>
          <li>
            <t>Phantom request: the CoAP request message that the server would have received to start a group observation on one of its resources. A phantom request is generated inside the server and does not hit the wire.</t>
          </li>
          <li>
            <t>Informative response: a CoAP response message that the server sends to a given client via unicast, providing the client with information on a group observation.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-prereq">
      <name>Prerequisites</name>
      <t>In order to use multicast notifications as defined in this document, the following prerequisites have to be fulfilled.</t>
      <ul spacing="normal">
        <li>
          <t>The server and the clients need to be on a network where multicast notifications can reach a sufficiently large portion of the clients.  </t>
          <t>
This document focuses on a network setup where the clients are capable of listening to multicast traffic and can directly receive multicast notifications.  </t>
          <t>
Alternative network setups may leverage intermediaries such as proxies, e.g., in order to accommodate clients that are not able to directly listen to multicast traffic. How the method specified in this document can be used in such setups is discussed in <xref target="I-D.ietf-core-multicast-notifications-proxy"/>.</t>
        </li>
        <li>
          <t>The server needs to be provisioned with multicast addresses whose Token space is placed under its control. On general purpose networks, unmanaged multicast addresses such as "All CoAP Nodes" (see <xref section="12.8" sectionFormat="of" target="RFC7252"/>) are not suitable for this purpose.</t>
        </li>
        <li>
          <t>The server and the clients need to agree out-of-band that multicast notifications may be used.  </t>
          <t>
This document does not describe a way for a client to influence the server's decision to start group observations and thus to use multicast notifications. This is done on purpose.  </t>
          <t>
That is, the method specified in this document is expected to be used in situations where sending individual notifications is not feasible, or is not preferred beyond a certain number of clients observing a target resource.  </t>
          <t>
If applications arise where a negotiation between the clients and the server does make sense, those applications can specify additional means for clients to opt in for receiving multicast notifications.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-variants">
      <name>High-Level Overview of Available Variants</name>
      <t>The method defined in this document fundamentally enables a server to set up a group observation. This is associated with a phantom observation request that is generated by the server and to which the multicast notifications of the group observation are bound.</t>
      <t>Consistent with the scope of this document, the following assumes a network setup where the clients participating in the group observation are capable of listening to multicast traffic. In such a setup, the clients directly receive multicast notifications from the server. Alternative network setups that rely on intermediaries such as proxies are discussed in <xref target="I-D.ietf-core-multicast-notifications-proxy"/>.</t>
      <t>While the server can provide the phantom request in question to the interested clients as they reach out for registering to the group observation, the server may alternatively distribute the phantom request in advance by alternative means (e.g., see <xref target="appendix-different-sources"/>). Clients that have already retrieved the phantom request can immediately start listening to multicast notifications.</t>
      <t>The rest of this section provides an overview of the available variants to enforce a group observation, which differ as to whether exchanged messages are protected end-to-end between the observer clients and the server.</t>
      <ul spacing="normal">
        <li>
          <t>Variant without end-to-end security - Messages pertaining to the group observation are not protected. This basic case is defined in <xref target="sec-server-side"/> and <xref target="sec-client-side"/> from the server and the client side, respectively. An example is provided in <xref target="sec-example-no-security"/>.</t>
        </li>
        <li>
          <t>Variant with end-to-end security - Messages pertaining to the group observation are protected end-to-end between the clients and the server, by using the security protocol Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>. This case is defined in <xref target="sec-secured-notifications"/>. An example is provided in <xref target="sec-example-with-security"/>.  </t>
          <t>
If the participating endpoints using Group OSCORE also support the concept of Deterministic Client <xref target="I-D.ietf-core-cacheable-oscore"/>, then the possible early distribution of the phantom request can specifically make available its smaller, plain version. Consequently, all the clients are able to produce the same protected phantom request to use (see <xref target="deterministic-phantom-Request"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-server-side">
      <name>Server-Side Requirements</name>
      <t>The server can, at any time, start a group observation on one of its resources. Practically, the server may want to do that under the following circumstances:</t>
      <ul spacing="normal">
        <li>
          <t>In the absence of observations for the target resource, the server receives a registration request from a first client wishing to start a traditional observation on that resource.</t>
        </li>
        <li>
          <t>When a certain number of traditional observations has been established on the target resource, the server decides to make the corresponding observer clients part of a group observation on that resource.</t>
        </li>
      </ul>
      <t>The server maintains an observer counter for each group observation to a target resource, as a rough estimation of the observers actively taking part in the group observation.</t>
      <t>The server initializes the counter to 0 when starting the group observation and increments it after a new client starts taking part in that group observation. The server is expected to keep the counter up-to-date over time, for instance by using the method described in <xref target="sec-rough-counting"/>. This allows the server to possibly terminate a group observation if, at some point in time, not enough clients are estimated to be still active and interested.</t>
      <section anchor="ssec-server-side-request">
        <name>Request</name>
        <t>Assuming that the server is reachable at the address SRV_ADDR and port number SRV_PORT, the server starts a group observation on one of its resources as defined below. The server intends to send multicast notifications for the target resource to the multicast IP address GRP_ADDR and port number GRP_PORT.</t>
        <ol spacing="normal" type="1"><li>
            <t>The server composes a phantom observation request, i.e., a GET request with an Observe Option set to 0 (register).</t>
          </li>
          <li>
            <t>The server selects an available value T, from the Token space of a CoAP endpoint used for messages that have:  </t>
            <ul spacing="normal">
              <li>
                <t>As source address and port number, the IP multicast address GRP_ADDR and port number GRP_PORT.</t>
              </li>
              <li>
                <t>As destination address and port number, the server address SRV_ADDR and port number SRV_PORT, intended for accessing the target resource.</t>
              </li>
            </ul>
            <t>
This Token space is under exclusive control of the server.</t>
          </li>
          <li>
            <t>The server processes the phantom observation request above, without transmitting it on the wire. The request is addressed to the resource for which the server wants to start the group observation, as if it was sent by the group of observers, i.e., with GRP_ADDR as source address and GRP_PORT as source port.</t>
          </li>
          <li>
            <t>Upon processing the self-generated phantom registration request, the server interprets it as an Observe registration request from the group of potential observer clients. In particular, from then on, the server <bcp14>MUST</bcp14> use T as its own local Token value associated with that observation, with respect to the (previous hop towards the) clients.</t>
          </li>
          <li>
            <t>The server does not immediately reply to the phantom observation request with a multicast notification sent on the wire. The server stores the phantom observation request as is, throughout the lifetime of the group observation.</t>
          </li>
          <li>
            <t>The server composes a CoAP response message INIT_NOTIF as the initial multicast notification for the target resource, in response to the phantom observation request. This message is formatted like other multicast notifications (see <xref target="ssec-server-side-notifications"/>) and <bcp14>MUST</bcp14> include the current representation of the target resource as its payload.  </t>
            <t>
The server stores the message INIT_NOTIF and does not transmit it. The server considers this message as the latest multicast notification for the target resource, until it transmits a new multicast notification for that resource as a CoAP message on the wire, after which the server deletes the message INIT_NOTIF from its local storage.</t>
          </li>
        </ol>
      </section>
      <section anchor="ssec-server-side-informative">
        <name>Informative Response</name>
        <t>After having started a group observation for a target resource, the server proceeds as follows.</t>
        <t>For each traditional observation ongoing on the target resource, the server <bcp14>MAY</bcp14> cancel that observation. Then, the server considers the corresponding clients as now taking part in the group observation, for which it increases the corresponding observer counter accordingly.</t>
        <t>The server sends to each of such clients an informative response message, encoded as a unicast response with response code 5.03 (Service Unavailable). As per <xref target="RFC7641"/>, such a response does not include an Observe Option. The response <bcp14>MUST</bcp14> be a Confirmable message sent as a separate response (see <xref section="5.2.2" sectionFormat="of" target="RFC7252"/>), <bcp14>MUST NOT</bcp14> have link-local source or destination addresses, and <bcp14>MUST NOT</bcp14> provide link-local or site-local addresses in the transport-specific information specified in its payload (see below).</t>
        <t>The Content-Format of the informative response is set to "application/informative-response+cbor", which is registered in <xref target="content-format"/>. The payload of the informative response is a CBOR map, whose fields use the CBOR abbreviations that are defined in <xref target="informative-response-params"/>.</t>
        <t>When using the method specified in this document, the CBOR map conveyed as the payload of the informative response includes the following parameters with the semantics defined below. Other specifications may define different uses of the informative response for providing alternative information that is relevant to other protocols and applications.</t>
        <ul spacing="normal">
          <li>
            <t>'tp_info', with value a CBOR array. This includes the transport-specific information required to correctly receive multicast notifications that are bound to the phantom observation request. Typically, this comprises the Token value associated with the group observation, as well as the source and destination addressing information of the related multicast notifications. The CBOR array is formatted as defined in <xref target="sssec-transport-specific-encoding"/>.  </t>
            <t>
This parameter <bcp14>MAY</bcp14> be omitted in particular setups where the server is aware that effective transport-specific information is available to clients through alternative means than the 'tp_info' parameter of the informative response. For example, this could be the case in particular scenarios where notifications are protected end-to-end between the server and clients using Group OSCORE (hence, in a way suitable to send those over multicast), but they are ultimately delivered to observer clients over a unicast transport, e.g., through a proxy.  </t>
            <t>
Otherwise, such as in the setup considered in this document, this parameter <bcp14>MUST</bcp14> be included.</t>
          </li>
          <li>
            <t>'ph_req', with value the byte serialization of the transport-independent information of the phantom observation request (see <xref target="ssec-server-side-request"/>), encoded as a CBOR byte string. The value of the CBOR byte string is formatted as defined in <xref target="sssec-transport-independent-encoding"/>.  </t>
            <t>
This parameter <bcp14>MAY</bcp14> be omitted if the phantom request is, in terms of transport-independent information, identical to the registration request from the client. Otherwise, this parameter <bcp14>MUST</bcp14> be included.  </t>
            <t>
Note that the registration request from the client can indeed differ from the phantom observation request in terms of transport-independent information, but still be acceptable for the server to register the client as taking part in the group observation.</t>
          </li>
          <li>
            <t>'last_notif', with value the byte serialization of the transport-independent information of the latest multicast notification for the target resource, encoded as a CBOR byte string. The value of the CBOR byte string is formatted as defined in <xref target="sssec-transport-independent-encoding"/>.  </t>
            <t>
This parameter <bcp14>SHOULD</bcp14> be included, in order to avoid unnecessary delays for the client in obtaining a first multicast notification and possibly populating its cache.  </t>
            <t>
In network setups where a proxy is deployed between the clients and the server (see <xref target="I-D.ietf-core-multicast-notifications-proxy"/>), this avoids such unnecessary delays at the proxy if the proxy is the intended recipient and consumer of the informative response, in turn avoiding delays for the clients in obtaining a first multicast notification.</t>
          </li>
          <li>
            <t>'next_not_before', with value the number of seconds that will minimally elapse before the server sends the next multicast notification for the group observation of the target resource, encoded as a CBOR unsigned integer. This parameter <bcp14>MAY</bcp14> be included.  </t>
            <t>
This information can help a new client to align itself with the server's timeline, especially in scenarios where multicast notifications are regularly sent. Also, it can help synchronizing different clients when orchestrating content distribution through multicast notifications.</t>
          </li>
          <li>
            <t>'ending', with value the time when the group observation of the target resource is planned to be canceled, encoded as a CBOR integer or as a CBOR floating-point number. The value is the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds, analogous to what is specified for NumericDate in <xref section="2" sectionFormat="of" target="RFC7519"/>. This parameter <bcp14>MAY</bcp14> be included.</t>
          </li>
        </ul>
        <t>The CBOR map conveyed as the payload of the informative response <bcp14>MAY</bcp14> include further parameters.</t>
        <t>The CDDL notation <xref target="RFC8610"/> provided below describes the payload of the informative response.</t>
        <figure anchor="informative-response-payload">
          <name>Format of the Informative Response Payload</name>
          <sourcecode type="cddl"><![CDATA[
informative_response_payload = {
 ? 0 => [1* tp_info_element],  ; 'tp_info'    (transport-specific
                               ;               information)
 ? 1 => bstr,                  ; 'ph_req'     (transport-independent
                               ;               information)
 ? 2 => bstr,                  ; 'last_notif' (transport-independent
                               ;               information)
 ? 3 => uint,                  ; 'next_not_before'
 ? 4 => ~time                  ; 'ending'
 * (int / tstr) => any
}

tp_info_element = any
]]></sourcecode>
        </figure>
        <t>Upon receiving a registration request to observe the target resource, the server does not create a corresponding individual observation for the requesting client. Instead, the server considers that client as now taking part in the group observation of the target resource, of which it increments the observer counter by 1. Then, the server replies to the client with the same informative response message defined above, which <bcp14>MUST</bcp14> be a Confirmable message sent as a separate response (see <xref section="5.2.2" sectionFormat="of" target="RFC7252"/>).</t>
        <t>Note that this also applies when, with no ongoing traditional observations on the target resource, the server receives a registration request from a first client and decides to start a group observation on the target resource.</t>
        <section anchor="sssec-transport-specific-encoding">
          <name>Transport-Specific Message Information</name>
          <t>The CBOR array specified in the 'tp_info' parameter of an informative response is formatted according to the following CDDL notation.</t>
          <figure anchor="tp-info-general">
            <name>General Format of 'tp_info'</name>
            <sourcecode type="cddl"><![CDATA[
tp_info = [
    tpi_server: CRI-no-local,  ; Addressing information of the server
  ? tpi_details                ; Further information about the request
]

tpi_details = (
  + elements  ; The number, format, and encoding of the elements
              ; depend on the scheme-id and authority of the CRI
              ; specified by tpi_server
)

CRI-no-local = [
  scheme-id,
  authority
]

scheme-id = nint  ; -1 - scheme-number

authority = [?userinfo, host, ?port]
userinfo  = (false, text .feature "userinfo")
host      = (host-ip // host-name)
host-name = (*text) ; lowercase, NFC labels
host-ip   = (bytes .size 4 //
               (bytes .size 16, ?zone-id))
zone-id   = text
port      = 0..65535
]]></sourcecode>
          </figure>
          <t>The following holds for the two elements 'tpi_server' and 'tpi_details'.</t>
          <ul spacing="normal">
            <li>
              <t>The 'tpi_server' element <bcp14>MUST</bcp14> be present and specifies:  </t>
              <ul spacing="normal">
                <li>
                  <t>The transport protocol used to transport a CoAP response from the server, i.e., a multicast notification in this document; and</t>
                </li>
                <li>
                  <t>The addressing information of the server, i.e., the source addressing information of the multicast notifications that are sent for the group observation.      </t>
                  <t>
Such addressing information <bcp14>MUST</bcp14> be equal to the source addressing information of the informative response sent by the server (see <xref target="ssec-server-side-notifications"/>).</t>
                </li>
              </ul>
              <t>
This element specifies a CRI <xref target="I-D.ietf-core-href"/>, of which both 'scheme' and 'authority' are given, while 'path', 'query', and 'fragment' are not given.  </t>
              <t>
Consistent with <xref section="5.1.1" sectionFormat="of" target="I-D.ietf-core-href"/>, the CRI scheme is given as a negative integer 'scheme-id'. In particular, a 'scheme-id' with value ID denotes the CRI scheme that has CRI scheme number equal to (-1 - ID). The latter identifies the corresponding registered URI scheme, per the associated entry in the "Uniform Resource Identifier (URI) Schemes" registry <xref target="IANA.URI.Schemes"/> defined in <xref target="RFC7595"/> and updated in <xref section="11.1" sectionFormat="of" target="I-D.ietf-core-href"/>.  </t>
              <t>
The combination of URI scheme and 'authority' component determines the CoAP transport used to distribute multicast notifications for the group observation. Note that:  </t>
              <ul spacing="normal">
                <li>
                  <t>If the 'authority' component specifies a host-ip, then the 'scheme-id' (hence the URI scheme) is sufficient to identify the transport.</t>
                </li>
                <li>
                  <t>If the 'authority' component specifies a host-name, then the consumer of the CRI has to resolve the host-name and consider the result together with the 'scheme-id' (hence the URI scheme) in order to identify the transport. For instance, DNS resolution can be used (e.g., as defined in <xref target="RFC9953"/>).</t>
                </li>
              </ul>
              <t>
The identified transport determines what elements are required in the 'tpi_details' element of the 'tp_info' array, as well as what information they convey, their encoding, and their semantics. Those elements are specified in the 'Transport Information Details' column of the "CoAP Transport Information" registry for the entry associated with the identified CoAP transport (see <xref target="iana-coap-transport-information"/>)</t>
            </li>
            <li>
              <t>The 'tpi_details' element <bcp14>MAY</bcp14> be present and specifies transport-specific information related to a pertinent request message, i.e., the phantom observation request in this document.  </t>
              <t>
The exact format of 'tpi_details' depends on the CoAP transport, which is identified according to the CRI conveyed by the 'tpi_server' element, as described above.  </t>
              <t>
In the "CoAP Transport Information" registry defined in <xref target="iana-coap-transport-information"/>, the entry corresponding to the identified CoAP transport specifies the list of elements composing 'tpi_details' for that transport, as indicated in the 'Transport Information Details' column. Within 'tpi_details', its elements <bcp14>MUST</bcp14> be ordered according to what is specified in the 'Transport Information Details' column of the "CoAP Transport Information" registry.</t>
            </li>
          </ul>
          <t><xref target="transport-protocol-identifiers"/> defines an entry to be registered in the "CoAP Transport Information" registry, for the transport "CoAP over UDP". When such a transport is used, i.e., CoAP responses are transported over UDP as per <xref target="RFC7252"/> and <xref target="I-D.ietf-core-groupcomm-bis"/>, the full encoding of the 'tp_info' CBOR array is defined in <xref target="ssssec-udp-transport-specific"/>.</t>
          <t>If a future specification defines the use of CoAP multicast notifications transported over different transport protocols, then that specification must perform the following actions, unless those have been already performed for different reasons:</t>
          <ul spacing="normal">
            <li>
              <t>Define the elements in 'tpi_details', as to what information they convey, their encoding, and their semantics.</t>
            </li>
            <li>
              <t>Register an entry in the "CoAP Transport Information" registry defined in <xref target="iana-coap-transport-information"/> of this document.</t>
            </li>
            <li>
              <t>Register an entry in the "Uniform Resource Identifier (URI) Schemes" registry <xref target="IANA.URI.Schemes"/> defined in <xref target="RFC7595"/> and updated in <xref section="11.1" sectionFormat="of" target="I-D.ietf-core-href"/>, where the value in the 'CRI Scheme Number' column is (-1 - ID). In particular, ID is the negative integer to be used as 'scheme-id' for CRIs conveyed by the 'tpi_server' element and possibly by elements in 'tpi_details'.</t>
            </li>
          </ul>
          <section anchor="ssssec-udp-transport-specific">
            <name>UDP Transport-Specific Information</name>
            <t>When CoAP multicast notifications are transported over UDP as per <xref target="RFC7252"/> and <xref target="I-D.ietf-core-groupcomm-bis"/>, the server specifies the 'tp_info' CBOR array as follows.</t>
            <ul spacing="normal">
              <li>
                <t>In the 'tpi_server' element, the CRI has 'scheme-id' with value -1 ("coap"), while 'authority' conveys addressing information pertaining to the server, i.e., the source addressing information of the multicast notifications that are sent for the group observation.  </t>
                <t>
This information consists of the IP address SRV_ADDR (expressed as a literal or as a host-name to be resolved) and the port number SRV_PORT of the server hosting the target resource, from where the server will send multicast notifications for the target resource.</t>
              </li>
              <li>
                <t>The 'tpi_details' element <bcp14>MAY</bcp14> be omitted in particular setups where the server is aware that effective client-side transport-specific information is available to clients through alternative means than the 'tp_info' parameter of the informative response.  </t>
                <t>
Otherwise, such as in the setup considered in this document, this element <bcp14>MUST</bcp14> be present and it includes the following two elements:  </t>
                <ul spacing="normal">
                  <li>
                    <t>'tpi_client' is a CRI, with the same format of 'tpi_server' (see <xref target="sssec-transport-specific-encoding"/>). In particular, the CRI has 'scheme-id' with value -1 ("coap"), while 'authority' conveys the destination addressing information of the multicast notifications that the server sends for the group observation.      </t>
                    <t>
This information consists of the IP multicast address GRP_ADDR (expressed as a literal or as a host-name to be resolved) and the port number GRP_PORT, where the server will send multicast notifications for the target resource.</t>
                  </li>
                  <li>
                    <t>'tpi_token' is a CBOR byte string, whose value is the Token value of the phantom observation request generated by the server (see <xref target="ssec-server-side-request"/>). Note that the same Token value is used for the multicast notifications bound to that phantom observation request (see <xref target="ssec-server-side-notifications"/>).</t>
                  </li>
                </ul>
              </li>
            </ul>
            <t>The CDDL notation in <xref target="tp-info-udp"/> describes the format of the 'tp_info' CBOR array when CoAP is transported over UDP, according to this document. The definition of 'scheme-id' and 'authority' is the same as in <xref target="tp-info-general"/>.</t>
            <figure anchor="tp-info-udp">
              <name>Format of 'tp_info' with UDP as Transport Protocol</name>
              <sourcecode type="cddl"><![CDATA[
tp_info_coap_udp = [
  tpi_server: CRI-no-local, ; Source addressing information
                            ; of the multicast notifications
  tpi_client: CRI-no-local, ; Destination addressing information
                            ; of the multicast notifications
  tpi_token: bstr           ; Token value of the phantom request and
                            ; associated multicast notifications
]

CRI-no-local = [
  scheme-id,
  authority
]
]]></sourcecode>
            </figure>
            <t>The CBOR diagnostic notation in <xref target="tp-info-udp-example"/> provides an example of the 'tp_info' CBOR array when CoAP is transported over UDP, according to this document.</t>
            <t>In the example, SRV_ADDR is 2001:db8::ab, SRV_PORT is 5683 (omitted in the CRI of 'tpi_server' as it is the default port number when CoAP is transported over UDP), GRP_ADDR is ff35:30:2001:db8::23, and GRP_PORT is 61616.</t>
            <figure anchor="tp-info-udp-example">
              <name>Example of 'tp_info' with UDP as Transport Protocol</name>
              <sourcecode type="cbor-diag"><![CDATA[
[/ tp_info /
 [/ tpi_server /
  -1,         / scheme-id -- equivalent to "coap" /
  [h'20010db80000000000000000000000ab'  / host-ip /]
 ],
 [/ tpi_client /
  -1,         / scheme-id -- equivalent to "coap" /
  [h'ff35003020010db80000000000000023', / host-ip /
   61616                                   / port /]
 ],
 h'7b'                                / tpi_token /
]
]]></sourcecode>
            </figure>
          </section>
        </section>
        <section anchor="sssec-transport-independent-encoding">
          <name>Transport-Independent Message Information</name>
          <t>For both the parameters 'ph_req' and 'last_notif' in the informative response, the value of the CBOR byte string is the concatenation of the following components defined in <xref section="3" sectionFormat="of" target="RFC7252"/>, in the order specified below.</t>
          <t>When defining the value of each component, "CoAP message" refers to the phantom observation request for the 'ph_req' parameter and to the corresponding latest multicast notification for the 'last_notif' parameter.</t>
          <ul spacing="normal">
            <li>
              <t>A single byte, with value the content of the Code field in the CoAP message.</t>
            </li>
            <li>
              <t>The byte serialization of the complete sequence of CoAP options in the CoAP message.</t>
            </li>
            <li>
              <t>If the CoAP message includes a non-zero length payload, the one-byte Payload Marker (0xff) followed by the payload.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="ssec-server-side-notifications">
        <name>Notifications</name>
        <t>Given an ongoing group observation for a target resource, the server sends multicast notifications intended to all the clients taking part in the group observation. In particular, each such multicast notification is formatted as follows.</t>
        <ul spacing="normal">
          <li>
            <t>It <bcp14>MUST</bcp14> be a Non-confirmable message.</t>
          </li>
          <li>
            <t>It <bcp14>MUST</bcp14> include an Observe Option, as per <xref target="RFC7641"/>.</t>
          </li>
          <li>
            <t>It <bcp14>MUST</bcp14> have the same Token value T of the phantom registration request that started the group observation.  </t>
            <t>
That is, every multicast notification for a target resource is not bound to the observation requests from the different clients, but instead to the phantom registration request associated with the whole set of clients taking part in the group observation of that resource.  </t>
            <t>
The Token value T is specified by an element of 'tpi_details', within the 'tp_info' parameter of the informative response sent to the observer clients. In particular, when transporting CoAP over UDP, the Token value is specified by the element 'tpi_token' (see <xref target="ssssec-udp-transport-specific"/>).</t>
          </li>
          <li>
            <t>It <bcp14>MUST</bcp14> be sent from the same IP address SRV_ADDR and port number SRV_PORT where the corresponding informative responses are sent from by the server (see <xref target="ssec-server-side-informative"/>). That is, redirection <bcp14>MUST NOT</bcp14> be used.  </t>
            <t>
Note that, in most cases, such SRV_ADDR and SRV_PORT are those to which original observation requests are sent to by clients (see <xref target="ssec-client-side-request"/>), unless those requests are sent to a multicast address (see <xref target="I-D.ietf-core-groupcomm-bis"/>).  </t>
            <t>
The addressing information above is conveyed through the CRI specified by the element 'tpi_server', within the 'tp_info' parameter of the informative response (see <xref target="sssec-transport-specific-encoding"/>).</t>
          </li>
          <li>
            <t>It <bcp14>MUST</bcp14> be sent to the IP multicast address GRP_ADDR and port number GRP_PORT.  </t>
            <t>
The addressing information above is conveyed through the CRI specified by an element of 'tpi_details', within the 'tp_info' parameter of the informative response. In particular, when transporting CoAP over UDP, the CRI is conveyed by the element 'tpi_client' (see <xref target="ssssec-udp-transport-specific"/>).</t>
          </li>
        </ul>
        <t>For each target resource with an active group observation, the server <bcp14>MUST</bcp14> store the latest multicast notification. This applies also to the initial multicast notification INIT_NOTIF composed at Step 6 of <xref target="ssec-server-side-request"/>.</t>
        <t>It can happen that the stored latest multicast notification for a group observation reaches an age that is greater than its indicated maximum age, i.e., the option value of its Inner Max-Age Option, if present, or 60 seconds otherwise (see <xref section="5.6.1" sectionFormat="of" target="RFC7252"/>). When this happens, the server <bcp14>MUST</bcp14> compose and send a new multicast notification for the same group observation, whose payload specifies the current representation of the target resource.</t>
      </section>
      <section anchor="ssec-server-side-congestion">
        <name>Congestion Control</name>
        <t>In order to not cause congestion, the server ought to conservatively control the sending of multicast notifications. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>The multicast notifications <bcp14>MUST</bcp14> be Non-confirmable messages.</t>
          </li>
          <li>
            <t>In constrained environments such as low-power, lossy networks (LLNs), the server <bcp14>SHOULD</bcp14> only support multicast notifications for resources whose representation is small in size. Following related guidelines from <xref section="3.6" sectionFormat="of" target="I-D.ietf-core-groupcomm-bis"/>, this can consist, for example, in having the payload of multicast notifications as limited to approximately 5% of the IP Maximum Transmit Unit (MTU) size, so that it fits into a single link-layer frame when using IPv6 over Low-Power Wireless Personal Area Networks (6LoWPAN) (see <xref section="4" sectionFormat="of" target="RFC4944"/>).</t>
          </li>
          <li>
            <t>The server <bcp14>SHOULD</bcp14> provide multicast notifications with the smallest possible IP multicast scope that fulfills the application needs. For example, following related guidelines from <xref section="3.6" sectionFormat="of" target="I-D.ietf-core-groupcomm-bis"/>, 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. Ultimately, it is up to the server administrator to explicitly configure the most appropriate IP multicast scope.</t>
          </li>
          <li>
            <t>Following related guidelines from <xref section="4.5.1" sectionFormat="of" target="RFC7641"/>, the server <bcp14>SHOULD NOT</bcp14> send more than one multicast notification every 3 seconds and <bcp14>SHOULD</bcp14> use an even less aggressive rate when possible (see also <xref section="3.1.2" sectionFormat="of" target="RFC8085"/>). Furthermore, a goal for an appropriate transmission rate of multicast notifications is the avoidance of a possible "broadcast storm" problem <xref target="MOBICOM99"/>. This prevents a following considerable increase of the channel load, whose origin would be likely attributed to a router rather than to the server.</t>
          </li>
        </ul>
      </section>
      <section anchor="ssec-server-side-cancellation">
        <name>Cancellation</name>
        <t>At a certain point in time, the server might want to cancel a group observation of a target resource. For instance, the server realizes that no clients or not enough clients are interested in taking part in the group observation anymore. <xref target="sec-rough-counting"/> defines a possible approach that the server can use to make an assessment in this respect. Another reason is that the group observation has reached its ending time, as originally scheduled by the server.</t>
        <t>In order to cancel the group observation, the server sends a multicast response with response code 5.03 (Service Unavailable), signaling that the group observation has been terminated. The response is effectively a reply to the phantom registration request, hence it has the same Token value T of the phantom registration request. The response has no payload and does not include an Observe Option.</t>
        <t>The server sends the response to the same multicast IP address GRP_ADDR and port number GRP_PORT used to send the multicast notifications related to the target resource. Finally, the server releases the memory and network resources allocated for the group observation, and it especially frees up the Token value T used at its CoAP endpoint.</t>
      </section>
    </section>
    <section anchor="sec-client-side">
      <name>Client-Side Requirements</name>
      <section anchor="ssec-client-side-request">
        <name>Request</name>
        <t>A client sends an observation request to the server as described in <xref target="RFC7641"/>, i.e., a GET request with an Observe Option set to 0 (register). The request <bcp14>MUST NOT</bcp14> have link-local source or destination addresses. If the server is not configured to accept registrations on that target resource specifically for a group observation, this would still result in a positive notification response to the client as described in <xref target="RFC7641"/>, in the case that the server is able and willing to add the client to the list of observers.</t>
        <t>In a particular setup, the information typically specified in the 'tp_info' parameter of the informative response (see <xref target="ssec-server-side-informative"/>) can be pre-configured on the server and the clients. For example, the destination multicast address and port number where to send multicast notifications for a group observation, as well as the associated Token value to use, can be set aside for particular tasks (e.g., enforcing observations of a specific resource). Alternative mechanisms can rely on using some bytes from the hash of the observation request as the last bytes of the multicast address or as part of the Token value.</t>
        <t>In such a particular setup, the client might also have an early knowledge of the phantom request, hence it would be possible for the server to safely omit the parameter 'ph_req' from the informative response to the observation request (see <xref target="ssec-server-side-informative"/>). In this case, the client can include a No-Response Option <xref target="RFC7967"/> with value 16 in its Observe registration request, which results in the server suppressing the informative response. As a consequence, the observation request only informs the server that there is one additional client interested to take part in the group observation.</t>
        <t>While the considered client is able to simply set up its multicast address and start receiving multicast notifications for the group observation, sending an observation request as above allows the server to increment the observer counter. This helps the server to assess the current number of clients interested in the group observation over time (e.g., by using the method defined in <xref target="sec-rough-counting"/>), which in turn can play a role in deciding to cancel the group observation (see <xref target="ssec-server-side-cancellation"/>).</t>
      </section>
      <section anchor="ssec-client-side-informative">
        <name>Informative Response</name>
        <t>Upon receiving the informative response defined in <xref target="ssec-server-side-informative"/>, the client has to identify the CoAP transport used to distribute multicast notifications for the group observation.</t>
        <t>To this end, the client relies on the element 'tpi_server' within the 'tp_info' parameter of the informative response (see <xref target="sssec-transport-specific-encoding"/>).</t>
        <t>In particular, the client considers the CRI conveyed by 'tpi_server' and identifies the CoAP transport, by assessing together the 'authority' component and the URI scheme determined from 'scheme-id' (see <xref target="sssec-transport-specific-encoding"/>).</t>
        <t>After that, the client parses the remainder of the 'tp_info' array, i.e., the information conveyed by 'tpi_details', according to what is specified in the 'Transport Information Details' column of the "CoAP Transport Information" registry for the entry associated with the identified CoAP transport (see <xref target="iana-coap-transport-information"/>).</t>
        <t>Then, the client performs the following steps.</t>
        <ol spacing="normal" type="1"><li>
            <t>The client configures an observation of the target resource. To this end, it relies on a CoAP endpoint used for messages having:  </t>
            <ul spacing="normal">
              <li>
                <t>As source address and port number, the server address SRV_ADDR and port number SRV_PORT intended for accessing the target resource. These are conveyed through the CRI specified by the element 'tpi_server', within the 'tp_info' parameter of the informative response (see <xref target="sssec-transport-specific-encoding"/>).      </t>
                <t>
If the port number is not present in the CRI, the client <bcp14>MUST</bcp14> use as SRV_PORT the default port number defined for the identified CoAP transport (e.g., the default port number is 5683 when the transport is CoAP over UDP).</t>
              </li>
              <li>
                <t>As destination address and port number, the IP multicast address GRP_ADDR and port number GRP_PORT. These are conveyed through the CRI specified by a dedicated element of 'tpi_details', within the 'tp_info' parameter of the informative response. In particular, when transporting CoAP over UDP, such an element is 'tpi_client' (see <xref target="ssssec-udp-transport-specific"/>).      </t>
                <t>
If the port number is not present in the CRI, the client <bcp14>MUST</bcp14> use as GRP_PORT the default port number defined for the identified CoAP transport (e.g., the default port number is 5683 when the transport is CoAP over UDP).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The client rebuilds the phantom registration request as follows.  </t>
            <ul spacing="normal">
              <li>
                <t>The client uses the Token value T that is specified by a dedicated element of 'tpi_details', within the 'tp_info' parameter of the informative response. In particular, when transporting CoAP over UDP, such an element is 'tpi_token' (see <xref target="ssssec-udp-transport-specific"/>).</t>
              </li>
              <li>
                <t>If the 'ph_req' parameter is not present in the informative response, the client uses the transport-independent information from its original Observe registration request.</t>
              </li>
              <li>
                <t>If the 'ph_req' parameter is present in the informative response, the client uses the transport-independent information specified in the parameter.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the informative response includes the parameter 'ph_req' and the transport-independent information specified therein differs from the one in the original Observe registration request, then the client checks whether a response to the rebuilt phantom registration request can, if available in a cache entry, be used to satisfy the original observation request. If this is not the case, the client <bcp14>SHOULD</bcp14> explicitly withdraw from the group observation.</t>
          </li>
          <li>
            <t>The client stores the phantom registration request, as associated with the observation of the target resource. In particular, the client <bcp14>MUST</bcp14> use the Token value T of this phantom registration request as its own local Token value associated with that group observation, with respect to the server. The particular way to achieve this is implementation specific.</t>
          </li>
          <li>
            <t>If the informative response includes the parameter 'last_notif', the client rebuilds the latest multicast notification, by using:  </t>
            <ul spacing="normal">
              <li>
                <t>The same Token value T used at Step 2; and</t>
              </li>
              <li>
                <t>The transport-independent information specified in the 'last_notif' parameter of the informative response.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the informative response includes the parameter 'last_notif', the client processes the multicast notification rebuilt at Step 5 as defined in <xref section="3.2" sectionFormat="of" target="RFC7641"/>. In particular, the value of the Observe Option is used as initial baseline for notification reordering in this group observation.  </t>
            <t>
Note that the multicast notification rebuilt at Step 5 specifies a maximum age that is relative to the time when the server composed the notification, i.e., not to the time when the server sent the present informative response. Consequently, the client could consider the rebuilt multicast notification fresh beyond the point in time that was intended by the server. However, the next multicast notification sent for the group observation will supersede the rebuilt one and will indicate a reliable maximum age that the client can refer to.</t>
          </li>
          <li>
            <t>If a traditional observation to the target resource is ongoing, the client <bcp14>MAY</bcp14> silently cancel it without notifying the server.</t>
          </li>
        </ol>
        <t>In addition to 'tpi_server', further elements of the 'tp_info' array can convey a CRI. The client <bcp14>MUST</bcp14> treat any CRI within the 'tp_info' array as invalid, if the 'authority' component is a host-name such that, when resolved, its combination with the URI scheme indicates multiple transports (see <xref target="sssec-transport-specific-encoding"/>). As a possible way to verify if that is the case, the client can rely on DNS resolution (e.g., as defined in <xref target="RFC9953"/>).</t>
        <t>If any of the expected fields in the informative response are absent, malformed, or invalid, the client <bcp14>MAY</bcp14> try sending a new registration request to the server (see <xref target="ssec-client-side-request"/>). If the client chooses not to, then the client <bcp14>SHOULD</bcp14> explicitly withdraw from the group observation. Exceptions apply, for example, in particular setups where effective transport-specific information is available to clients through alternative means than the 'tp_info' parameter of the informative response.</t>
        <t><xref target="appendix-different-sources"/> describes possible alternative ways for clients to retrieve the phantom registration request and other information related to a group observation.</t>
      </section>
      <section anchor="ssec-client-side-notifications">
        <name>Notifications</name>
        <t>After having successfully processed the informative response as defined in <xref target="ssec-client-side-informative"/>, the client will receive, accept, and process multicast notifications about the state of the target resource from the server, as responses to the phantom registration request and with Token value T.</t>
        <t>The client relies on the value of the Observe Option for notification reordering, as defined in <xref section="3.4" sectionFormat="of" target="RFC7641"/>.</t>
      </section>
      <section anchor="ssec-client-side-cancellation">
        <name>Cancellation</name>
        <t>At a certain point in time, a client might no longer be interested in receiving further multicast notifications about a target resource. When this happens, the client can simply "forget" about being part of the group observation for that target resource, as per <xref section="3.6" sectionFormat="of" target="RFC7641"/>.</t>
        <t>When, later on, the server sends the next multicast notification, the client will not recognize the Token value T in the message. Since the multicast notification is a Non-confirmable message, it is optional for the client to reject it with a Reset message (see <xref section="3.5" sectionFormat="of" target="RFC7641"/>).</t>
        <t>If the server has canceled a group observation as defined in <xref target="ssec-server-side-cancellation"/>, the client simply forgets about the group observation and frees up the used Token value T for that endpoint, upon receiving the multicast error response defined in <xref target="ssec-server-side-cancellation"/>.</t>
      </section>
    </section>
    <section anchor="sec-web-linking">
      <name>Web Linking</name>
      <t>The possible use of multicast notifications in a group observation <bcp14>MAY</bcp14> be indicated by a target attribute "gp-obs" in a web link <xref target="RFC8288"/> to a resource, e.g., using a CoRE link-format document <xref target="RFC6690"/>.</t>
      <t>The "gp-obs" attribute is a hint, indicating that the server might send multicast notifications for observations of the resource targeted by the link. Note that this is simply a hint, i.e., it does not include any information required to participate in a group observation and to receive and process multicast notifications.</t>
      <t>A value <bcp14>MUST NOT</bcp14> be given for the "gp-obs" attribute and any present value <bcp14>MUST</bcp14> be ignored by the recipient.  The "gp-obs" attribute <bcp14>MUST NOT</bcp14> appear more than once in a given link-value; occurrences after the first <bcp14>MUST</bcp14> be ignored by the recipient.</t>
      <t>The example in <xref target="example-web-link"/> shows a use of the "gp-obs" attribute: the client does resource discovery on a server and gets back a list of resources, one of which includes the "gp-obs" attribute indicating that the server might send multicast notifications for observations of that resource. The CoRE Link-Format notation from <xref section="5" sectionFormat="of" target="RFC6690"/> is used.</t>
      <figure anchor="example-web-link">
        <name>The Web Link</name>
        <artwork><![CDATA[
REQ: GET /.well-known/core

RES: 2.05 Content
    </sensors/temp>;gp-obs,
    </sensors/light>;if="sensor"
]]></artwork>
      </figure>
    </section>
    <section anchor="sec-example-no-security">
      <name>Example</name>
      <t>The following example refers to two clients C1 and C2 that register to observe a resource /r at a server S, which has address SRV_ADDR and listens to the port number SRV_PORT. Before the following exchanges occur, no clients are observing the resource /r , whose representation has value "1234".</t>
      <t>The server S sends multicast notifications to the IP multicast address GRP_ADDR and port number GRP_PORT. The server starts the group observation upon receiving a registration request from a first client that wishes to start a traditional observation on the resource /r.</t>
      <t>The following notation is used for the payload of the informative responses:</t>
      <ul spacing="normal">
        <li>
          <t>cri'X' denotes a CRI corresponding to the URI X, i.e., a CRI that can be converted to the URI X using the procedure defined in <xref section="6.1" sectionFormat="of" target="I-D.ietf-core-href"/>.</t>
        </li>
        <li>
          <t>bstr(X) denotes a CBOR byte string with value the byte serialization of X, with '|' denoting byte concatenation.</t>
        </li>
        <li>
          <t>OPT denotes a sequence of CoAP options. This refers to the phantom registration request specified by the 'ph_req' parameter, or to the corresponding latest multicast notification specified by the 'last_notif' parameter.</t>
        </li>
        <li>
          <t>PAYLOAD denotes a CoAP payload. This refers to the latest multicast notification specified by the 'last_notif' parameter.</t>
        </li>
      </ul>
      <figure anchor="example-no-oscore">
        <name>Example of Group Observation</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1504" width="552" viewBox="0 0 552 1504" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,592" fill="none" stroke="black"/>
              <path d="M 8,624 L 8,848" fill="none" stroke="black"/>
              <path d="M 8,880 L 8,1008" fill="none" stroke="black"/>
              <path d="M 8,1040 L 8,1312" fill="none" stroke="black"/>
              <path d="M 8,1376 L 8,1488" fill="none" stroke="black"/>
              <path d="M 32,1312 L 32,1376" fill="none" stroke="black"/>
              <path d="M 512,48 L 512,592" fill="none" stroke="black"/>
              <path d="M 512,624 L 512,848" fill="none" stroke="black"/>
              <path d="M 512,880 L 512,1008" fill="none" stroke="black"/>
              <path d="M 512,1040 L 512,1328" fill="none" stroke="black"/>
              <path d="M 512,1360 L 512,1488" fill="none" stroke="black"/>
              <path d="M 32,32 L 192,32" fill="none" stroke="black"/>
              <path d="M 304,32 L 496,32" fill="none" stroke="black"/>
              <path d="M 80,208 L 496,208" fill="none" stroke="black"/>
              <path d="M 80,256 L 496,256" fill="none" stroke="black"/>
              <path d="M 32,608 L 192,608" fill="none" stroke="black"/>
              <path d="M 304,608 L 496,608" fill="none" stroke="black"/>
              <path d="M 32,864 L 192,864" fill="none" stroke="black"/>
              <path d="M 304,864 L 496,864" fill="none" stroke="black"/>
              <path d="M 32,1024 L 192,1024" fill="none" stroke="black"/>
              <path d="M 304,1024 L 496,1024" fill="none" stroke="black"/>
              <path d="M 8,1312 L 32,1312" fill="none" stroke="black"/>
              <path d="M 48,1344 L 192,1344" fill="none" stroke="black"/>
              <path d="M 320,1344 L 496,1344" fill="none" stroke="black"/>
              <path d="M 8,1376 L 32,1376" fill="none" stroke="black"/>
              <path d="M 68,232 L 80,256" fill="none" stroke="black"/>
              <path d="M 68,232 L 80,208" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="504,864 492,858.4 492,869.6" fill="black" transform="rotate(0,496,864)"/>
              <polygon class="arrowhead" points="504,256 492,250.4 492,261.6" fill="black" transform="rotate(0,496,256)"/>
              <polygon class="arrowhead" points="504,32 492,26.4 492,37.6" fill="black" transform="rotate(0,496,32)"/>
              <polygon class="arrowhead" points="56,1344 44,1338.4 44,1349.6" fill="black" transform="rotate(180,48,1344)"/>
              <polygon class="arrowhead" points="40,1024 28,1018.4 28,1029.6" fill="black" transform="rotate(180,32,1024)"/>
              <polygon class="arrowhead" points="40,608 28,602.4 28,613.6" fill="black" transform="rotate(180,32,608)"/>
              <g class="text">
                <text x="12" y="36">C1</text>
                <text x="208" y="36">[</text>
                <text x="248" y="36">Unicast</text>
                <text x="288" y="36">]</text>
                <text x="512" y="36">S</text>
                <text x="540" y="36">/r</text>
                <text x="44" y="52">0.01</text>
                <text x="88" y="52">(GET)</text>
                <text x="52" y="68">Token:</text>
                <text x="100" y="68">0x4a</text>
                <text x="60" y="84">Observe:</text>
                <text x="104" y="84">0</text>
                <text x="156" y="84">(register)</text>
                <text x="64" y="100">Uri-Path:</text>
                <text x="120" y="100">"r"</text>
                <text x="52" y="116">&lt;Other</text>
                <text x="116" y="116">options&gt;</text>
                <text x="136" y="148">(</text>
                <text x="152" y="148">S</text>
                <text x="200" y="148">allocates</text>
                <text x="256" y="148">the</text>
                <text x="312" y="148">available</text>
                <text x="376" y="148">Token</text>
                <text x="424" y="148">value</text>
                <text x="468" y="148">0x7b</text>
                <text x="496" y="148">)</text>
                <text x="56" y="180">(</text>
                <text x="72" y="180">S</text>
                <text x="104" y="180">sends</text>
                <text x="140" y="180">to</text>
                <text x="180" y="180">itself</text>
                <text x="216" y="180">a</text>
                <text x="256" y="180">phantom</text>
                <text x="336" y="180">observation</text>
                <text x="416" y="180">request</text>
                <text x="476" y="180">PH_REQ</text>
                <text x="76" y="196">as</text>
                <text x="116" y="196">coming</text>
                <text x="164" y="196">from</text>
                <text x="200" y="196">the</text>
                <text x="228" y="196">IP</text>
                <text x="280" y="196">multicast</text>
                <text x="352" y="196">address</text>
                <text x="420" y="196">GRP_ADDR</text>
                <text x="464" y="196">)</text>
                <text x="540" y="260">/r</text>
                <text x="340" y="276">0.01</text>
                <text x="384" y="276">(GET)</text>
                <text x="348" y="292">Token:</text>
                <text x="396" y="292">0x7b</text>
                <text x="356" y="308">Observe:</text>
                <text x="400" y="308">0</text>
                <text x="452" y="308">(register)</text>
                <text x="360" y="324">Uri-Path:</text>
                <text x="416" y="324">"r"</text>
                <text x="348" y="340">&lt;Other</text>
                <text x="412" y="340">options&gt;</text>
                <text x="192" y="372">(</text>
                <text x="208" y="372">S</text>
                <text x="248" y="372">creates</text>
                <text x="288" y="372">a</text>
                <text x="320" y="372">group</text>
                <text x="392" y="372">observation</text>
                <text x="452" y="372">of</text>
                <text x="476" y="372">/r</text>
                <text x="496" y="372">)</text>
                <text x="232" y="404">(</text>
                <text x="248" y="404">S</text>
                <text x="292" y="404">prepares</text>
                <text x="344" y="404">the</text>
                <text x="392" y="404">initial</text>
                <text x="464" y="404">multicast</text>
                <text x="300" y="420">notification</text>
                <text x="396" y="420">INIT_NOTIF</text>
                <text x="464" y="420">below</text>
                <text x="496" y="420">)</text>
                <text x="396" y="452">2.05</text>
                <text x="456" y="452">(Content)</text>
                <text x="404" y="468">Token:</text>
                <text x="452" y="468">0x7b</text>
                <text x="412" y="484">Observe:</text>
                <text x="456" y="484">0</text>
                <text x="404" y="500">&lt;Other</text>
                <text x="468" y="500">options&gt;</text>
                <text x="396" y="516">0xff</text>
                <text x="412" y="532">Payload:</text>
                <text x="476" y="532">"1234"</text>
                <text x="224" y="564">(</text>
                <text x="240" y="564">S</text>
                <text x="292" y="564">increments</text>
                <text x="352" y="564">the</text>
                <text x="404" y="564">observer</text>
                <text x="472" y="564">counter</text>
                <text x="248" y="580">for</text>
                <text x="280" y="580">the</text>
                <text x="320" y="580">group</text>
                <text x="392" y="580">observation</text>
                <text x="452" y="580">of</text>
                <text x="476" y="580">/r</text>
                <text x="496" y="580">)</text>
                <text x="12" y="612">C1</text>
                <text x="208" y="612">[</text>
                <text x="248" y="612">Unicast</text>
                <text x="288" y="612">]</text>
                <text x="512" y="612">S</text>
                <text x="44" y="628">5.03</text>
                <text x="100" y="628">(Service</text>
                <text x="188" y="628">Unavailable)</text>
                <text x="52" y="644">Token:</text>
                <text x="100" y="644">0x4a</text>
                <text x="88" y="660">Content-Format:</text>
                <text x="304" y="660">application/informative-response+cbor</text>
                <text x="60" y="676">Max-Age:</text>
                <text x="104" y="676">0</text>
                <text x="52" y="692">&lt;Other</text>
                <text x="116" y="692">options&gt;</text>
                <text x="44" y="708">0xff</text>
                <text x="60" y="724">Payload:</text>
                <text x="104" y="724">{</text>
                <text x="48" y="740">/</text>
                <text x="88" y="740">tp_info</text>
                <text x="128" y="740">/</text>
                <text x="168" y="740">0</text>
                <text x="184" y="740">:</text>
                <text x="200" y="740">[</text>
                <text x="328" y="756">cri'coap://SRV_ADDR:SRV_PORT/',</text>
                <text x="344" y="772">cri'coap://GRP_ADDR:GRP_PORT/',</text>
                <text x="252" y="788">0x7b</text>
                <text x="204" y="804">],</text>
                <text x="48" y="820">/</text>
                <text x="100" y="820">last_notif</text>
                <text x="152" y="820">/</text>
                <text x="168" y="820">2</text>
                <text x="184" y="820">:</text>
                <text x="232" y="820">bstr(0x45</text>
                <text x="280" y="820">|</text>
                <text x="304" y="820">OPT</text>
                <text x="328" y="820">|</text>
                <text x="356" y="820">0xff</text>
                <text x="384" y="820">|</text>
                <text x="428" y="820">PAYLOAD)</text>
                <text x="32" y="836">}</text>
                <text x="12" y="868">C2</text>
                <text x="208" y="868">[</text>
                <text x="248" y="868">Unicast</text>
                <text x="288" y="868">]</text>
                <text x="512" y="868">S</text>
                <text x="540" y="868">/r</text>
                <text x="44" y="884">0.01</text>
                <text x="88" y="884">(GET)</text>
                <text x="52" y="900">Token:</text>
                <text x="100" y="900">0x01</text>
                <text x="60" y="916">Observe:</text>
                <text x="104" y="916">0</text>
                <text x="156" y="916">(register)</text>
                <text x="64" y="932">Uri-Path:</text>
                <text x="120" y="932">"r"</text>
                <text x="52" y="948">&lt;Other</text>
                <text x="116" y="948">options&gt;</text>
                <text x="216" y="980">(</text>
                <text x="232" y="980">S</text>
                <text x="284" y="980">increments</text>
                <text x="344" y="980">the</text>
                <text x="396" y="980">observer</text>
                <text x="464" y="980">counter</text>
                <text x="240" y="996">for</text>
                <text x="272" y="996">the</text>
                <text x="312" y="996">group</text>
                <text x="384" y="996">observation</text>
                <text x="444" y="996">of</text>
                <text x="468" y="996">/r</text>
                <text x="488" y="996">)</text>
                <text x="12" y="1028">C2</text>
                <text x="208" y="1028">[</text>
                <text x="248" y="1028">Unicast</text>
                <text x="288" y="1028">]</text>
                <text x="512" y="1028">S</text>
                <text x="44" y="1044">5.03</text>
                <text x="100" y="1044">(Service</text>
                <text x="188" y="1044">Unavailable)</text>
                <text x="52" y="1060">Token:</text>
                <text x="100" y="1060">0x01</text>
                <text x="88" y="1076">Content-Format:</text>
                <text x="304" y="1076">application/informative-response+cbor</text>
                <text x="60" y="1092">Max-Age:</text>
                <text x="104" y="1092">0</text>
                <text x="52" y="1108">&lt;Other</text>
                <text x="116" y="1108">options&gt;</text>
                <text x="44" y="1124">0xff</text>
                <text x="60" y="1140">Payload:</text>
                <text x="104" y="1140">{</text>
                <text x="48" y="1156">/</text>
                <text x="88" y="1156">tp_info</text>
                <text x="128" y="1156">/</text>
                <text x="168" y="1156">0</text>
                <text x="184" y="1156">:</text>
                <text x="200" y="1156">[</text>
                <text x="328" y="1172">cri'coap://SRV_ADDR:SRV_PORT/',</text>
                <text x="344" y="1188">cri'coap://GRP_ADDR:GRP_PORT/',</text>
                <text x="252" y="1204">0x7b</text>
                <text x="204" y="1220">],</text>
                <text x="48" y="1236">/</text>
                <text x="100" y="1236">last_notif</text>
                <text x="152" y="1236">/</text>
                <text x="168" y="1236">2</text>
                <text x="184" y="1236">:</text>
                <text x="232" y="1236">bstr(0x45</text>
                <text x="280" y="1236">|</text>
                <text x="304" y="1236">OPT</text>
                <text x="328" y="1236">|</text>
                <text x="356" y="1236">0xff</text>
                <text x="384" y="1236">|</text>
                <text x="428" y="1236">PAYLOAD)</text>
                <text x="32" y="1252">}</text>
                <text x="32" y="1284">(</text>
                <text x="56" y="1284">The</text>
                <text x="132" y="1284">representation</text>
                <text x="204" y="1284">of</text>
                <text x="232" y="1284">the</text>
                <text x="284" y="1284">resource</text>
                <text x="332" y="1284">/r</text>
                <text x="376" y="1284">changes</text>
                <text x="420" y="1284">to</text>
                <text x="460" y="1284">"5678"</text>
                <text x="496" y="1284">)</text>
                <text x="12" y="1332">C1</text>
                <text x="208" y="1348">[</text>
                <text x="256" y="1348">Multicast</text>
                <text x="304" y="1348">]</text>
                <text x="512" y="1348">S</text>
                <text x="12" y="1364">C2</text>
                <text x="88" y="1364">(</text>
                <text x="144" y="1364">Destination</text>
                <text x="248" y="1364">address/port:</text>
                <text x="376" y="1364">GRP_ADDR/GRP_PORT</text>
                <text x="456" y="1364">)</text>
                <text x="60" y="1396">2.05</text>
                <text x="120" y="1396">(Content)</text>
                <text x="68" y="1412">Token:</text>
                <text x="116" y="1412">0x7b</text>
                <text x="76" y="1428">Observe:</text>
                <text x="120" y="1428">1</text>
                <text x="68" y="1444">&lt;Other</text>
                <text x="132" y="1444">options&gt;</text>
                <text x="60" y="1460">0xff</text>
                <text x="76" y="1476">Payload:</text>
                <text x="140" y="1476">"5678"</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
C1 --------------------- [ Unicast ] ------------------------> S  /r
|  0.01 (GET)                                                  |
|  Token: 0x4a                                                 |
|  Observe: 0 (register)                                       |
|  Uri-Path: "r"                                               |
|  <Other options>                                             |
|                                                              |
|               ( S allocates the available Token value 0x7b ) |
|                                                              |
|     ( S sends to itself a phantom observation request PH_REQ |
|       as coming from the IP multicast address GRP_ADDR )     |
|        .---------------------------------------------------- |
|       /                                                      |
|       \                                                      |
|        `---------------------------------------------------> |  /r
|                                       0.01 (GET)             |
|                                       Token: 0x7b            |
|                                       Observe: 0 (register)  |
|                                       Uri-Path: "r"          |
|                                       <Other options>        |
|                                                              |
|                      ( S creates a group observation of /r ) |
|                                                              |
|                           ( S prepares the initial multicast |
|                              notification INIT_NOTIF below ) |
|                                                              |
|                                              2.05 (Content)  |
|                                              Token: 0x7b     |
|                                              Observe: 0      |
|                                              <Other options> |
|                                              0xff            |
|                                              Payload: "1234" |
|                                                              |
|                          ( S increments the observer counter |
|                            for the group observation of /r ) |
|                                                              |
C1 <-------------------- [ Unicast ] ------------------------- S
|  5.03 (Service Unavailable)                                  |
|  Token: 0x4a                                                 |
|  Content-Format: application/informative-response+cbor       |
|  Max-Age: 0                                                  |
|  <Other options>                                             |
|  0xff                                                        |
|  Payload: {                                                  |
|    / tp_info /    0 : [                                      |
|                        cri'coap://SRV_ADDR:SRV_PORT/',       |
|                          cri'coap://GRP_ADDR:GRP_PORT/',     |
|                            0x7b                              |
|                       ],                                     |
|    / last_notif / 2 : bstr(0x45 | OPT | 0xff | PAYLOAD)      |
|  }                                                           |
|                                                              |
C2 --------------------- [ Unicast ] ------------------------> S  /r
|  0.01 (GET)                                                  |
|  Token: 0x01                                                 |
|  Observe: 0 (register)                                       |
|  Uri-Path: "r"                                               |
|  <Other options>                                             |
|                                                              |
|                         ( S increments the observer counter  |
|                           for the group observation of /r )  |
|                                                              |
C2 <-------------------- [ Unicast ] ------------------------- S
|  5.03 (Service Unavailable)                                  |
|  Token: 0x01                                                 |
|  Content-Format: application/informative-response+cbor       |
|  Max-Age: 0                                                  |
|  <Other options>                                             |
|  0xff                                                        |
|  Payload: {                                                  |
|    / tp_info /    0 : [                                      |
|                        cri'coap://SRV_ADDR:SRV_PORT/',       |
|                          cri'coap://GRP_ADDR:GRP_PORT/',     |
|                            0x7b                              |
|                       ],                                     |
|    / last_notif / 2 : bstr(0x45 | OPT | 0xff | PAYLOAD)      |
|  }                                                           |
|                                                              |
|  ( The representation of the resource /r changes to "5678" ) |
|                                                              |
+--+                                                           |
C1 |                                                           |
   | <------------------ [ Multicast ] ----------------------- S
C2 |      ( Destination address/port: GRP_ADDR/GRP_PORT )      |
+--+                                                           |
|    2.05 (Content)                                            |
|    Token: 0x7b                                               |
|    Observe: 1                                                |
|    <Other options>                                           |
|    0xff                                                      |
|    Payload: "5678"                                           |
|                                                              |
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="sec-rough-counting">
      <name>Rough Counting of Clients in the Group Observation</name>
      <t>This section specifies a method that the server can use to keep an estimate of still active and interested clients, without creating undue traffic on the network.</t>
      <section anchor="feedback-divider-option">
        <name>Feedback-Divider Option</name>
        <t>This section defines the new CoAP option Feedback-Divider. By including the option in an outgoing message, a sender endpoint elicits a stochastic reaction and thereby a feedback from the message recipient(s) that would otherwise not react.</t>
        <t>If the sender endpoint triggering a feedback is a client sending a request, the Feedback-Divider Option included in the request triggers the recipient server(s) to send a response with some probability. In particular, the Feedback-Divider Option stochastically overrides the possible response suppression performed by the server(s). Such an influence affects response suppression that can otherwise be performed, e.g., according to: default processing; the No-Response Option <xref target="RFC7967"/>, if present in the request; an unmatching filter from the URI query component, when the request is sent over multicast and targets the /.well-known/core resource (see <xref section="4.1" sectionFormat="of" target="RFC6690"/>).</t>
        <t>If the sender endpoint triggering a feedback is a server sending a response, the feedback elicitation is currently limited to using observe notifications. In particular, the Feedback-Divider Option included in an observe notification triggers the recipient client(s) to send with some probability a new request to the server. Such a request includes the Observe Option set to 0 (register) and is addressed to the same target resource for which the observe notification was sent. That is, a reacting client (re-)registers a regular unicast observation on the same target resource.</t>
        <t>This document specifically defines how the Feedback-Divider Option is used when the sender endpoint triggering a feedback is a server sending multicast notifications. Note that it is not so useful to include the Feedback-Divider Option in an observe notification sent over unicast to a single client. That is, the server can more efficiently query a single client by means of an observe notification sent as a Confirmable message, thereby eliciting an Acknowledgement message in return.</t>
        <t>The Feedback-Divider Option has the properties summarized in <xref target="fd-table"/>, which extends Table 4 of <xref target="RFC7252"/>. The option is not Critical, not Safe-to-Forward, and integer valued. Since the option is not Safe-to-Forward, the 'N' column indicates a dash for "not applicable".</t>
        <table align="center" anchor="fd-table">
          <name>The Feedback-Divider Option. C=Critical, U=Unsafe, N=NoCacheKey, R=Repeatable</name>
          <thead>
            <tr>
              <th align="left">No.</th>
              <th align="left">C</th>
              <th align="left">U</th>
              <th align="left">N</th>
              <th align="left">R</th>
              <th align="left">Name</th>
              <th align="left">Format</th>
              <th align="left">Length</th>
              <th align="left">Default</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD18</td>
              <td align="left"> </td>
              <td align="left">x</td>
              <td align="left">-</td>
              <td align="left"> </td>
              <td align="left">Feedback-Divider</td>
              <td align="left">uint</td>
              <td align="left">0-1</td>
              <td align="left">(none)</td>
            </tr>
          </tbody>
        </table>
        <t>Note to RFC Editor: In the table above, please replace TBD18 with the registered option number. Then, please delete this paragraph.</t>
        <t>The Feedback-Divider Option is of class E for OSCORE <xref target="RFC8613"/><xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
      </section>
      <section anchor="ssec-rough-counting-client-side">
        <name>Processing on the Client Side</name>
        <t>Upon receiving a response with a Feedback-Divider Option, a client that supports the option and is interested in continuing receiving multicast notifications for the target resource <bcp14>SHOULD</bcp14> acknowledge its interest, as described below.</t>
        <t>The client picks an integer random number I, from 0 inclusive to Z = (2<sup>Q</sup>) exclusive, where Q is the value specified in the option. If I is different from 0, the client takes no further action. Otherwise, the client should wait a random fraction of the Leisure time (see <xref section="8.2" sectionFormat="of" target="RFC7252"/>) and then registers a regular observation on the same target resource.</t>
        <t>To this end, the client essentially follows the steps that got it originally subscribed to group notifications for the target resource. In particular, the client sends an observation request to the server, i.e., a GET request with an Observe Option set to 0 (register). The request <bcp14>MUST</bcp14> be addressed to the same target resource and <bcp14>MUST</bcp14> have the same destination IP address and port number used for the original registration request, regardless of the source IP address and port number of the received multicast notification.</t>
        <t>Since this Observe registration is only done for its side effect of looking as an attempted observation at the server, the client <bcp14>MUST</bcp14> send the unicast request as a Non-confirmable message and with the maximum No-Response setting <xref target="RFC7967"/>. In the request, the client <bcp14>MUST</bcp14> include a Feedback-Divider Option, whose value <bcp14>MUST</bcp14> be set to 0. As per <xref section="3.2" sectionFormat="of" target="RFC7252"/>, this is represented with an empty option value (a zero-length sequence of bytes). The client does not need to wait for responses and can keep processing further notifications on the same Token.</t>
        <t>The client <bcp14>MUST</bcp14> ignore the Feedback-Divider Option, if the multicast notification is retrieved from the 'last_notif' parameter of an informative response (see <xref target="ssec-server-side-informative"/>). A client includes the Feedback-Divider Option only in a re-registration request triggered by the server as described above and <bcp14>MUST NOT</bcp14> include it in any other request.</t>
        <t><xref target="appendix-pseudo-code-counting-client"/> and <xref target="appendix-pseudo-code-counting-client-constrained"/> provide a description in pseudo-code of the operations above performed by the client.</t>
      </section>
      <section anchor="processing-on-the-server-side">
        <name>Processing on the Server Side</name>
        <t>In order to avoid needless use of network resources, a server <bcp14>SHOULD</bcp14> keep a rough, updated count of the number of clients taking part in the group observation of a target resource. To this end, the server updates the value COUNT of the associated observer counter (see <xref target="sec-server-side"/>), for instance by using the method described below.</t>
        <section anchor="request-for-feedback">
          <name>Request for Feedback</name>
          <t>When it wants to obtain a new estimated count, the server considers a number M of confirmations that it would like to receive from the clients. It is up to applications to define policies about how the server determines and possibly adjusts the value of M.</t>
          <t>Then, the server computes the value Q = max(L, 0), where:</t>
          <ul spacing="normal">
            <li>
              <t>L is computed as L = ceil(log2(N / M)).</t>
            </li>
            <li>
              <t>N is the current value of the observer counter, possibly rounded up to 1, i.e., N = max(COUNT, 1).</t>
            </li>
          </ul>
          <t>Finally, the server sets Q as the value of the Feedback-Divider Option, which is sent within a successful multicast notification.</t>
          <t>If several multicast notifications for the same group observation are sent in a burst fashion, it is <bcp14>RECOMMENDED</bcp14> for the server to include the Feedback-Divider Option only in the first notification of such a burst.</t>
        </section>
        <section anchor="collection-of-feedback">
          <name>Collection of Feedback</name>
          <t>The server collects observation requests from the clients, for an amount of time of MAX_CONFIRMATION_WAIT seconds. During this time, the server regularly increments the observer counter when adding a new client to the group observation (see <xref target="ssec-server-side-informative"/>).</t>
          <t>It is up to applications to define the value of MAX_CONFIRMATION_WAIT, which has to take into account the transmission time of the multicast notification and of observation requests, as well as the leisure time of the clients, which may be hard to know or estimate for the server.</t>
          <t>If this information is not known to the server, it is <bcp14>RECOMMENDED</bcp14> to define MAX_CONFIRMATION_WAIT as follows.</t>
          <t>MAX_CONFIRMATION_WAIT = MAX_RTT + MAX_CLIENT_REQUEST_DELAY</t>
          <t>where MAX_RTT is as defined in <xref section="4.8.2" sectionFormat="of" target="RFC7252"/> and has default value 202 seconds, while MAX_CLIENT_REQUEST_DELAY is equivalent to MAX_SERVER_RESPONSE_DELAY defined in <xref section="3.1.5" sectionFormat="of" target="I-D.ietf-core-groupcomm-bis"/> and has default value 250 seconds. In the absence of more specific information, the server can thus consider a conservative MAX_CONFIRMATION_WAIT of 452 seconds.</t>
          <t>If more information is available in deployments, a much shorter MAX_CONFIRMATION_WAIT can be set. This can be based on a realistic round trip time (replacing MAX_RTT) and on the largest leisure time configured on the clients (replacing MAX_CLIENT_REQUEST_DELAY), e.g., DEFAULT_LEISURE = 5 seconds, thus shortening MAX_CONFIRMATION_WAIT to a few seconds.</t>
        </section>
        <section anchor="processing-of-feedback">
          <name>Processing of Feedback</name>
          <t>Once MAX_CONFIRMATION_WAIT seconds have passed, the server counts the R confirmations that have arrived as observation requests to the target resource, since the time when the latest multicast notification with the Feedback-Divider Option has been sent. In particular, the server considers an observation request as a confirmation from a client only if the request includes a Feedback-Divider Option with value 0.</t>
          <t>Then, the server computes a feedback indicator as E = R * (2<sup>Q</sup>). According to what is defined by application policies, the server determines the next time when to ask clients for their confirmation, e.g., after a certain number of multicast notifications has been sent. For example, the decision can be influenced by the reception of no confirmations from the clients, i.e., R = 0, or by the value of the ratios (E/N) and (N/E).</t>
          <t>Finally, the server computes a new estimated count of the observers. To this end, the server first considers COUNT' as the current value of the observer counter at this point in time. Note that COUNT' could be greater than the value COUNT used at the beginning of this process, if the server has incremented the observer counter upon adding new clients to the group observation (see <xref target="ssec-server-side-informative"/>).</t>
          <t>In particular, the server computes the new estimated count value as COUNT' + ((E - N) / D), where D &gt; 0 is an integer value used as dampener. This step has to be performed atomically. That is, until this step is completed, the server <bcp14>MUST</bcp14> hold the processing of an observation request for the same target resource from a new client. Finally, the server considers the result as the current observer counter, which can be taken into account for possibly canceling the group observation (see <xref target="ssec-server-side-cancellation"/>).</t>
          <t>This estimate is skewed by packet loss, but it gives the server a sufficiently good estimation for further counts and for deciding when to cancel the group observation. It is up to applications to define policies about how the server takes the newly updated estimate into account and determines whether to cancel the group observation.</t>
          <t>As an example, if the server currently estimates that N = COUNT = 32 observers are active and considers a constant M = 8, it sends a notification with Feedback-Divider with value Q = 2. Then, out of 18 actually active clients, 5 send a re-registration request based on their random draw, of which one request gets lost, thus leaving 4 re-registration requests received by the server. Also, no new clients have been added to the group observation during this time, i.e., COUNT' is equal to COUNT. As a consequence, assuming that a dampener value D = 1 is used, the server computes the new estimated count value as 32 + (16 - 32) = 16 and keeps the group observation active.</t>
          <t>To produce a most accurate updated counter, a server can include a Feedback-Divider Option with value Q = 0 in its multicast notifications, as if M is equal to N. This will trigger all the active clients to state their interest in continuing receiving notifications for the target resource. Thus, the amount R of arrived confirmations is affected only by possible packet loss.</t>
          <t><xref target="appendix-pseudo-code-counting-server"/> provides a description in pseudo-code of the operations above performed by the server, including example behaviors for scheduling the next count update and deciding whether to cancel the group observation.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-secured-notifications">
      <name>Protection of Multicast Notifications with Group OSCORE</name>
      <t>A server can protect multicast notifications by using the security protocol Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>, thus ensuring that they are protected end-to-end for the observer clients. This requires that both the server and the clients interested in receiving multicast notifications from that server are members of the same OSCORE group.</t>
      <t>In some settings, the OSCORE group to refer to can be pre-configured on the clients and the server. In such a case, a server which is aware of such pre-configuration can simply assume a client to already be a member of the correct OSCORE group.</t>
      <t>In any other case, the server <bcp14>MAY</bcp14> communicate to clients what OSCORE group they are required to join, by providing additional guidance in the informative response as described in <xref target="sec-inf-response"/>. Note that clients could already be members of the right OSCORE group, if they previously joined it to securely communicate with the same server or with other servers to access their resources.</t>
      <t>Both the clients and the server <bcp14>MAY</bcp14> join the OSCORE group by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> and based on the ACE framework for Authentication and Authorization in constrained environments <xref target="RFC9200"/>. When doing so, the server has to join the group (also) with the roles of Requester and Responder. Instead, a client can join the group with any permitted role or combination of roles, unless it intends to send its original observation requests (see <xref target="ssec-client-side-request"/>) protected with Group OSCORE. In such a case, the client has to join the group (also) as a Requester. Further details on how to discover the OSCORE group and join it are out of the scope of this document.</t>
      <t>If multicast notifications are protected using Group OSCORE, then the original registration requests and related unicast (notification) responses <bcp14>MUST</bcp14> also be protected, including and especially the informative responses from the server. An exception is the case discussed in <xref target="deterministic-phantom-Request"/>, where the informative response from the server is not protected.</t>
      <t>In order to protect unicast messages exchanged between the server and each client, including the original client registration (see <xref target="sec-client-side"/>), alternative security protocols than Group OSCORE can be used, such as OSCORE <xref target="RFC8613"/> and/or DTLS <xref target="RFC9147"/>. However, it is <bcp14>RECOMMENDED</bcp14> to use OSCORE or Group OSCORE, in order to reduce the number of libraries that the clients and the server have to support.</t>
      <section anchor="sec-inf-response">
        <name>Signaling the OSCORE Group in the Informative Response</name>
        <t>This section describes a mechanism for the server to communicate to the client what OSCORE group to join, in order to decrypt and verify the multicast notifications protected with Group OSCORE. The client <bcp14>MAY</bcp14> use the information provided by the server to start the ACE joining procedure described in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. The mechanism defined in this section is <bcp14>OPTIONAL</bcp14> to support for the client and server.</t>
        <t>In addition to what is defined in <xref target="sec-server-side"/>, the CBOR map in the informative response payload contains the following fields, whose CBOR abbreviations are defined in <xref target="informative-response-params"/>.</t>
        <ul spacing="normal">
          <li>
            <t>'join_uri', with value the URI for joining the OSCORE group at the respective Group Manager, encoded as a CBOR text string. If the procedure described in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> is used for joining, this field specifically indicates the URI of the group-membership resource at the Group Manager.</t>
          </li>
          <li>
            <t>'sec_gp', with value the name of the OSCORE group, encoded as a CBOR text string.</t>
          </li>
          <li>
            <t>Optionally, 'as_uri', with value the URI of the authorization server associated with the Group Manager for the OSCORE group, encoded as a CBOR text string.</t>
          </li>
          <li>
            <t>Optionally, 'hkdf', with value the HKDF Algorithm used in the OSCORE group, encoded as a CBOR text string or integer. The HKDF Algorithm is specified by the HMAC Algorithm value, which is taken from the 'Value' column of the "COSE Algorithms" registry <xref target="IANA.COSE.Algorithms"/>. For example, the HKDF Algorithm HKDF SHA-256 is specified as the HMAC Algorithm HMAC 256/256.</t>
          </li>
          <li>
            <t>Optionally, 'cred_fmt', with value the format of the authentication credentials used in the OSCORE group, encoded as a CBOR integer. The value is taken from the 'Label' column of the "COSE Header Parameters" Registry <xref target="IANA.COSE.Header.Parameters"/>. Consistent with <xref section="2.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, acceptable values denote a format that provides the public key and a comprehensive set of information related to the public key algorithm, including, e.g., the used elliptic curve (when applicable).  </t>
            <t>
At the time of writing this specification, acceptable formats of authentication credentials are CBOR Web Tokens (CWTs) and CWT Claim Sets (CCSs) <xref target="RFC8392"/>, X.509 certificates <xref target="RFC5280"/>, and C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. Further formats may be available in the future, and they would be acceptable to use as long as they comply with the criteria above.  </t>
            <t>
[ As to C509 certificates, there is a pending registration requested by draft-ietf-cose-cbor-encoded-cert. ]</t>
          </li>
          <li>
            <t>Optionally, 'gp_enc_alg', with value the Group Encryption Algorithm used in the OSCORE group to encrypt messages protected with the group mode, encoded as a CBOR text string or integer. The value is taken from the 'Value' column of the "COSE Algorithms" registry <xref target="IANA.COSE.Algorithms"/>.</t>
          </li>
          <li>
            <t>Optionally, 'sign_alg', with value the Signature Algorithm used to sign messages in the OSCORE group, encoded as a CBOR text string or integer. The value is taken from the 'Value' column of the "COSE Algorithms" registry <xref target="IANA.COSE.Algorithms"/>.</t>
          </li>
          <li>
            <t>Optionally, 'sign_params', encoded as a CBOR array and including the following two elements:  </t>
            <ul spacing="normal">
              <li>
                <t>'sign_alg_capab': a CBOR array, with the same format and value of the COSE capabilities array for the algorithm indicated in 'sign_alg', as specified for that algorithm in the 'Capabilities' column of the "COSE Algorithms" Registry <xref target="IANA.COSE.Algorithms"/>.</t>
              </li>
              <li>
                <t>'sign_key_type_capab': a CBOR array, with the same format and value of the COSE capabilities array for the COSE key type of the keys used with the algorithm indicated in 'sign_alg', as specified for that key type in the 'Capabilities' column of the "COSE Key Types" Registry <xref target="IANA.COSE.Key.Types"/>.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>The values of 'sign_alg', 'sign_params', and 'cred_fmt' provide an early knowledge of the format of authentication credentials as well as of the type of public keys used in the OSCORE group. Thus, the client does not need to ask the Group Manager for this information as a preliminary step before the (ACE) join process, or to perform a trial-and-error exchange with the Group Manager upon joining the group. Hence, the client is able to provide the Group Manager with its own authentication credential in the correct expected format and including a public key of the correct expected type, at the very first step of the (ACE) join process.</t>
        <t>The values of 'hkdf', 'gp_enc_alg', and 'sign_alg' provide an early knowledge of the algorithms used in the OSCORE group. Thus, the client is able to decide whether to actually proceed with the (ACE) join process, depending on its support for the indicated algorithms.</t>
        <t>As mentioned above, since this mechanism is <bcp14>OPTIONAL</bcp14>, all the corresponding fields are <bcp14>OPTIONAL</bcp14> in the informative response. However, the 'join_uri' and 'sec_gp' fields <bcp14>MUST</bcp14> be present if this mechanism is used. If any of the fields are present without the 'join_uri' and 'sec_gp' fields present, the client <bcp14>MUST</bcp14> ignore these fields, since they would not be sufficient to start the (ACE) join procedure. When this happens, the client <bcp14>MAY</bcp14> try sending a new registration request to the server (see <xref target="ssec-client-side-request"/>). If the client chooses not to, then the client <bcp14>SHOULD</bcp14> explicitly withdraw from the group observation.</t>
        <t><xref target="self-managed-oscore-group"/> describes a possible alternative approach, where the server self-manages the OSCORE group, and provides the observer clients with the necessary keying material in the informative response. The approach in <xref target="self-managed-oscore-group"/> <bcp14>MUST NOT</bcp14> be used together with the mechanism defined in this section for indicating what OSCORE group to join.</t>
      </section>
      <section anchor="sec-server-side-with-security">
        <name>Server-Side Requirements</name>
        <t>When using Group OSCORE to protect multicast notifications, the server performs the operations described in <xref target="sec-server-side"/>, with the following differences.</t>
        <section anchor="ssec-server-side-request-oscore">
          <name>Registration</name>
          <t>The phantom registration request <bcp14>MUST</bcp14> be protected with Group OSCORE, using the group mode of Group OSCORE (see <xref section="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
          <t>An exception is the case discussed in <xref target="deterministic-phantom-Request"/>, where the participating endpoints using Group OSCORE also support the concept of Deterministic Client <xref target="I-D.ietf-core-cacheable-oscore"/> and the protected phantom request is computed using the pairwise mode of Group OSCORE.</t>
          <t>In accordance with the group mode of Group OSCORE, the server protects the phantom registration request as defined in <xref section="7.1" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> by using its own Sender Context, i.e., like if it was the actual sender. As a consequence, the server consumes the current value of its Sender Sequence Number SN in the OSCORE group and hence updates it to SN* = (SN + 1).</t>
          <t>Consistent with that, the OSCORE Option value in the phantom registration request specifies:</t>
          <ul spacing="normal">
            <li>
              <t>In the 'kid' field, the Sender ID of the server in the OSCORE group.</t>
            </li>
            <li>
              <t>In the 'Partial IV' field, the Partial IV encoding the previously consumed Sender Sequence Number value SN of the server in the OSCORE group, i.e., (SN* - 1).</t>
            </li>
          </ul>
        </section>
        <section anchor="ssec-server-side-informative-oscore">
          <name>Informative Response</name>
          <t>The value of the CBOR byte string in the 'ph_req' parameter encodes the phantom observation request as a message protected with Group OSCORE (see <xref target="ssec-server-side-request-oscore"/>). Consequently, the following applies:</t>
          <ul spacing="normal">
            <li>
              <t>The specified Code is 0.05 (FETCH) <xref target="RFC8132"/>.</t>
            </li>
            <li>
              <t>The sequence of CoAP options will be limited to the outer, non encrypted options.</t>
            </li>
            <li>
              <t>A payload is always present, as the ciphertext followed by the countersignature.</t>
            </li>
          </ul>
          <t>Note that, in terms of transport-independent information, the registration request from the client typically differs from the phantom request. Thus, the server has to include the 'ph_req' parameter of the informative response. An exception is the case discussed in <xref target="deterministic-phantom-Request"/>.</t>
          <t>Similarly, the value of the CBOR byte string in the 'last_notif' parameter encodes the latest multicast notification as a message protected with Group OSCORE (see <xref target="ssec-server-side-notifications-oscore"/>). This applies also to the initial multicast notification INIT_NOTIF composed at Step 6 of <xref target="ssec-server-side-request"/>.</t>
          <t>Optionally, the informative response includes additional parameters that provide information about the OSCORE group to join (see <xref target="sec-inf-response"/>).</t>
        </section>
        <section anchor="ssec-server-side-notifications-oscore">
          <name>Notifications</name>
          <t>The server <bcp14>MUST</bcp14> protect every multicast notification for the target resource with Group OSCORE.</t>
          <t>The group mode of Group OSCORE defined in <xref section="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> <bcp14>MUST</bcp14> be used. In particular, the process described in <xref section="7.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> applies, with the following additions when building the two OSCORE external_aad structures to encrypt and sign the multicast notification (see <xref section="3.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
          <ul spacing="normal">
            <li>
              <t>The 'request_kid' element contains the value of the 'kid' field in the OSCORE Option value of the protected phantom registration request.</t>
            </li>
            <li>
              <t>The 'request_piv' element contains the value of the 'Partial IV' field in the OSCORE Option value of the protected phantom registration request.</t>
            </li>
            <li>
              <t>The 'request_kid_context' element contains the value of the 'kid context' field in the OSCORE Option value of the protected phantom registration request, i.e., the Group Identifier value (Gid) of the OSCORE group used as ID Context.</t>
            </li>
          </ul>
          <t>Note that these same values are used to protect each and every multicast notification sent for the target resource under this group observation.</t>
        </section>
        <section anchor="ssec-server-side-cancellation-oscore">
          <name>Cancellation</name>
          <t>When canceling a group observation as defined in <xref target="ssec-server-side-cancellation"/>, the multicast response with error code 5.03 (Service Unavailable) is protected with the group mode of Group OSCORE, as per <xref section="7.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>. The server <bcp14>MUST</bcp14> use its own Sender Sequence Number as Partial IV to protect the error response and <bcp14>MUST</bcp14> include the Partial IV in the OSCORE Option value of the response.</t>
          <t>Upon leaving or before re-joining an OSCORE group, the server <bcp14>MUST</bcp14> cancel all the ongoing group observations on its resources such that the related phantom observation requests were protected for that group.</t>
        </section>
      </section>
      <section anchor="sec-client-side-with-security">
        <name>Client-Side Requirements</name>
        <t>When using Group OSCORE to protect multicast notifications, the client performs as described in <xref target="sec-client-side"/>, with the following differences.</t>
        <section anchor="ssec-client-side-informative-oscore">
          <name>Informative Response</name>
          <t>Upon receiving the informative response from the server, the client performs the same steps defined in <xref target="ssec-client-side-informative"/>, with the following additions.</t>
          <t>When performing Step 2, the client expects the 'ph_req' parameter to be included in the informative response, which is otherwise considered malformed. An exception is the case discussed in <xref target="deterministic-phantom-Request"/>.</t>
          <t>After completing Step 2, in any other case than the one discussed in <xref target="deterministic-phantom-Request"/>, the client decrypts and verifies the rebuilt phantom registration request as defined in <xref section="7.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, with the following differences.</t>
          <ul spacing="normal">
            <li>
              <t>The client <bcp14>MUST NOT</bcp14> perform any replay check. That is, the client skips Step 3 in <xref section="8.2" sectionFormat="of" target="RFC8613"/>.</t>
            </li>
            <li>
              <t>If decryption and verification of the phantom registration request succeed:  </t>
              <ul spacing="normal">
                <li>
                  <t>The client <bcp14>MUST NOT</bcp14> update the Replay Window in the Recipient Context associated with the server. That is, the client skips the second bullet of Step 6 in <xref section="8.2" sectionFormat="of" target="RFC8613"/>.</t>
                </li>
                <li>
                  <t>The client <bcp14>MUST NOT</bcp14> take any further process as normally expected according to <xref target="RFC7252"/>. That is, the client skips Step 8 in <xref section="8.2" sectionFormat="of" target="RFC8613"/>. In particular, the client <bcp14>MUST NOT</bcp14> deliver the phantom registration request to the application and <bcp14>MUST NOT</bcp14> take any action in the Token space of its unicast endpoint where the informative response has been received.</t>
                </li>
                <li>
                  <t>The client stores the values of the 'kid', 'Partial IV', and 'kid context' fields from the OSCORE Option value of the phantom registration request.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If decryption and verification of the phantom registration request fail, the client <bcp14>MAY</bcp14> try sending a new registration request to the server (see <xref target="ssec-client-side-request"/>). If the client chooses not to, then the client <bcp14>SHOULD</bcp14> explicitly withdraw from the group observation.</t>
            </li>
          </ul>
          <t>After successful decryption and verification, the client performs Step 3 in <xref target="ssec-client-side-informative"/>, considering the decrypted phantom registration request.</t>
          <t>If the informative response includes the parameter 'last_notif', the client also decrypts and verifies the latest multicast notification rebuilt at Step 5 in <xref target="ssec-client-side-informative"/>, just like it would for the multicast notifications transmitted as CoAP messages on the wire (see <xref target="ssec-client-side-notifications-oscore"/>). If decryption and verification succeed, the client proceeds with Step 6, considering the decrypted latest multicast notification. Otherwise, the client proceeds to Step 7.</t>
        </section>
        <section anchor="ssec-client-side-notifications-oscore">
          <name>Notifications</name>
          <t>After having successfully processed the informative response as defined in <xref target="ssec-client-side-informative-oscore"/>, the client will decrypt and verify every multicast notification for the target resource as defined in <xref section="7.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, with the following difference.</t>
          <t>For both decryption and signature verification, the client <bcp14>MUST</bcp14> set the external_aad structure defined in <xref section="3.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> as follows. The particular way to achieve this is implementation specific.</t>
          <ul spacing="normal">
            <li>
              <t>The 'request_kid' element takes the value of the 'kid' field from the OSCORE Option value of the phantom registration request (see <xref target="ssec-client-side-informative-oscore"/>).</t>
            </li>
            <li>
              <t>The 'request_piv' element takes the value of the 'Partial IV' field from the OSCORE Option value of the phantom registration request (see <xref target="ssec-client-side-informative-oscore"/>).</t>
            </li>
            <li>
              <t>The 'request_kid_context' element takes the value of the 'kid context' field from the OSCORE Option value of the phantom registration request (see <xref target="ssec-client-side-informative-oscore"/>).</t>
            </li>
          </ul>
          <t>Note that these same values are used to decrypt and verify each and every multicast notification received for the target resource under this group observation.</t>
        </section>
        <section anchor="ssec-client-side-cancellation-oscore">
          <name>Cancellation</name>
          <t>Upon leaving or before re-joining an OSCORE group, the client <bcp14>MUST</bcp14> terminate all the ongoing group observations that it is participating in and such that the related phantom observation requests were protected for that group.</t>
          <t>In particular, the client simply "forgets" about being part of those group observations, as per <xref section="3.6" sectionFormat="of" target="RFC7641"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-example-with-security">
      <name>Example with Group OSCORE</name>
      <t>The following example refers to two clients C1 and C2 that register to observe a resource /r at a server S, which has address SRV_ADDR and listens to the port number SRV_PORT. Before the following exchanges occur, no clients are observing the resource /r , whose representation has value "1234".</t>
      <t>The server S sends multicast notifications to the IP multicast address GRP_ADDR and port number GRP_PORT. The server starts the group observation upon receiving a registration request from a first client that wishes to start a traditional observation on the resource /r.</t>
      <t>Pairwise communication over unicast is protected with OSCORE, while S protects multicast notifications with Group OSCORE. Specifically:</t>
      <ul spacing="normal">
        <li>
          <t>C1 and S have a pairwise OSCORE Security Context. In particular, C1 has 'kid' = 0x01 as Sender ID and SN_1 = 101 (i.e., 0x65) as Sender Sequence Number.</t>
        </li>
        <li>
          <t>C2 and S have a pairwise OSCORE Security Context. In particular, C2 has 'kid' = 0x02 as Sender ID and SN_2 = 201 (i.e., 0xc9) as Sender Sequence Number.</t>
        </li>
        <li>
          <t>C1, C2, and S are members of the OSCORE group with name "myGroup" and with 'kid context' = 0x57ab2e as Group ID.  </t>
          <t>
In the OSCORE group, S has 'kid' = 0x05 as Sender ID and SN_5 = 501 (i.e., 0x01f5) as Sender Sequence Number.</t>
        </li>
      </ul>
      <t>The following notation is used for the payload of the informative responses:</t>
      <ul spacing="normal">
        <li>
          <t>cri'X' denotes a CRI corresponding to the URI X, i.e., a CRI that can be converted to the URI X using the procedure defined in <xref section="6.1" sectionFormat="of" target="I-D.ietf-core-href"/>.</t>
        </li>
        <li>
          <t>bstr(X) denotes a CBOR byte string with value the byte serialization of X, with '|' denoting byte concatenation.</t>
        </li>
        <li>
          <t>OPT denotes a sequence of CoAP options. This refers to the phantom registration request specified by the 'ph_req' parameter, or to the corresponding latest multicast notification specified by the 'last_notif' parameter.</t>
        </li>
        <li>
          <t>PAYLOAD denotes an encrypted CoAP payload. This refers to the phantom registration request specified by the 'ph_req' parameter, or to the corresponding latest multicast notification specified by the 'last_notif' parameter.</t>
        </li>
        <li>
          <t>SIGN denotes the countersignature appended to an encrypted CoAP payload. This refers to the phantom registration request specified by the 'ph_req' parameter, or to the corresponding latest multicast notification specified by the 'last_notif' parameter.</t>
        </li>
      </ul>
      <figure anchor="example-oscore">
        <name>Example of Group Observation with Group OSCORE</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="2576" width="552" viewBox="0 0 552 2576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,1088" fill="none" stroke="black"/>
              <path d="M 8,1120 L 8,1504" fill="none" stroke="black"/>
              <path d="M 8,1536 L 8,1776" fill="none" stroke="black"/>
              <path d="M 8,1808 L 8,2240" fill="none" stroke="black"/>
              <path d="M 8,2304 L 8,2560" fill="none" stroke="black"/>
              <path d="M 32,2240 L 32,2304" fill="none" stroke="black"/>
              <path d="M 512,48 L 512,1088" fill="none" stroke="black"/>
              <path d="M 512,1120 L 512,1504" fill="none" stroke="black"/>
              <path d="M 512,1536 L 512,1776" fill="none" stroke="black"/>
              <path d="M 512,1808 L 512,2256" fill="none" stroke="black"/>
              <path d="M 512,2288 L 512,2560" fill="none" stroke="black"/>
              <path d="M 32,32 L 152,32" fill="none" stroke="black"/>
              <path d="M 352,32 L 496,32" fill="none" stroke="black"/>
              <path d="M 56,320 L 496,320" fill="none" stroke="black"/>
              <path d="M 56,368 L 496,368" fill="none" stroke="black"/>
              <path d="M 432,640 L 448,640" fill="none" stroke="black"/>
              <path d="M 432,1024 L 448,1024" fill="none" stroke="black"/>
              <path d="M 32,1104 L 152,1104" fill="none" stroke="black"/>
              <path d="M 344,1104 L 496,1104" fill="none" stroke="black"/>
              <path d="M 32,1520 L 152,1520" fill="none" stroke="black"/>
              <path d="M 352,1520 L 496,1520" fill="none" stroke="black"/>
              <path d="M 32,1792 L 152,1792" fill="none" stroke="black"/>
              <path d="M 344,1792 L 496,1792" fill="none" stroke="black"/>
              <path d="M 8,2240 L 32,2240" fill="none" stroke="black"/>
              <path d="M 48,2272 L 136,2272" fill="none" stroke="black"/>
              <path d="M 392,2272 L 496,2272" fill="none" stroke="black"/>
              <path d="M 8,2304 L 32,2304" fill="none" stroke="black"/>
              <path d="M 44,344 L 56,368" fill="none" stroke="black"/>
              <path d="M 44,344 L 56,320" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="504,1520 492,1514.4 492,1525.6" fill="black" transform="rotate(0,496,1520)"/>
              <polygon class="arrowhead" points="504,368 492,362.4 492,373.6" fill="black" transform="rotate(0,496,368)"/>
              <polygon class="arrowhead" points="504,32 492,26.4 492,37.6" fill="black" transform="rotate(0,496,32)"/>
              <polygon class="arrowhead" points="440,1024 428,1018.4 428,1029.6" fill="black" transform="rotate(180,432,1024)"/>
              <polygon class="arrowhead" points="440,640 428,634.4 428,645.6" fill="black" transform="rotate(180,432,640)"/>
              <polygon class="arrowhead" points="56,2272 44,2266.4 44,2277.6" fill="black" transform="rotate(180,48,2272)"/>
              <polygon class="arrowhead" points="40,1792 28,1786.4 28,1797.6" fill="black" transform="rotate(180,32,1792)"/>
              <polygon class="arrowhead" points="40,1104 28,1098.4 28,1109.6" fill="black" transform="rotate(180,32,1104)"/>
              <g class="text">
                <text x="12" y="36">C1</text>
                <text x="168" y="36">[</text>
                <text x="208" y="36">Unicast</text>
                <text x="252" y="36">w/</text>
                <text x="292" y="36">OSCORE</text>
                <text x="328" y="36">]</text>
                <text x="512" y="36">S</text>
                <text x="540" y="36">/r</text>
                <text x="44" y="52">0.05</text>
                <text x="96" y="52">(FETCH)</text>
                <text x="52" y="68">Token:</text>
                <text x="100" y="68">0x4a</text>
                <text x="60" y="84">Observe:</text>
                <text x="104" y="84">0</text>
                <text x="156" y="84">(register)</text>
                <text x="56" y="100">OSCORE:</text>
                <text x="132" y="100">[kid:0x01,</text>
                <text x="208" y="100">Partial</text>
                <text x="276" y="100">IV:0x65]</text>
                <text x="52" y="116">&lt;Other</text>
                <text x="104" y="116">class</text>
                <text x="144" y="116">U/I</text>
                <text x="196" y="116">options&gt;</text>
                <text x="44" y="132">0xff</text>
                <text x="96" y="148">Encrypted_payload</text>
                <text x="176" y="148">{</text>
                <text x="60" y="164">0.01</text>
                <text x="108" y="164">(GET),</text>
                <text x="76" y="180">Observe:</text>
                <text x="120" y="180">0</text>
                <text x="176" y="180">(register),</text>
                <text x="80" y="196">Uri-Path:</text>
                <text x="140" y="196">"r",</text>
                <text x="68" y="212">&lt;Other</text>
                <text x="120" y="212">class</text>
                <text x="152" y="212">E</text>
                <text x="196" y="212">options&gt;</text>
                <text x="32" y="228">}</text>
                <text x="136" y="260">(</text>
                <text x="152" y="260">S</text>
                <text x="200" y="260">allocates</text>
                <text x="256" y="260">the</text>
                <text x="312" y="260">available</text>
                <text x="376" y="260">Token</text>
                <text x="424" y="260">value</text>
                <text x="468" y="260">0x7b</text>
                <text x="496" y="260">)</text>
                <text x="56" y="292">(</text>
                <text x="72" y="292">S</text>
                <text x="104" y="292">sends</text>
                <text x="140" y="292">to</text>
                <text x="180" y="292">itself</text>
                <text x="216" y="292">a</text>
                <text x="256" y="292">phantom</text>
                <text x="336" y="292">observation</text>
                <text x="416" y="292">request</text>
                <text x="476" y="292">PH_REQ</text>
                <text x="76" y="308">as</text>
                <text x="116" y="308">coming</text>
                <text x="164" y="308">from</text>
                <text x="200" y="308">the</text>
                <text x="228" y="308">IP</text>
                <text x="280" y="308">multicast</text>
                <text x="352" y="308">address</text>
                <text x="420" y="308">GRP_ADDR</text>
                <text x="472" y="308">)</text>
                <text x="540" y="372">/r</text>
                <text x="220" y="388">0.05</text>
                <text x="272" y="388">(FETCH)</text>
                <text x="228" y="404">Token:</text>
                <text x="276" y="404">0x7b</text>
                <text x="236" y="420">Observe:</text>
                <text x="280" y="420">0</text>
                <text x="332" y="420">(register)</text>
                <text x="232" y="436">OSCORE:</text>
                <text x="308" y="436">[kid:0x05,</text>
                <text x="384" y="436">Partial</text>
                <text x="460" y="436">IV:0x01f5,</text>
                <text x="288" y="452">kid</text>
                <text x="376" y="452">context:0x57ab2e]</text>
                <text x="228" y="468">&lt;Other</text>
                <text x="280" y="468">class</text>
                <text x="320" y="468">U/I</text>
                <text x="372" y="468">options&gt;</text>
                <text x="220" y="484">0xff</text>
                <text x="272" y="500">Encrypted_payload</text>
                <text x="352" y="500">{</text>
                <text x="236" y="516">0.01</text>
                <text x="284" y="516">(GET),</text>
                <text x="252" y="532">Observe:</text>
                <text x="296" y="532">0</text>
                <text x="352" y="532">(register),</text>
                <text x="256" y="548">Uri-Path:</text>
                <text x="316" y="548">"r",</text>
                <text x="244" y="564">&lt;Other</text>
                <text x="296" y="564">class</text>
                <text x="328" y="564">E</text>
                <text x="372" y="564">options&gt;</text>
                <text x="208" y="580">}</text>
                <text x="276" y="596">&lt;Countersignature&gt;</text>
                <text x="232" y="628">(</text>
                <text x="248" y="628">S</text>
                <text x="280" y="628">steps</text>
                <text x="324" y="628">SN_5</text>
                <text x="356" y="628">in</text>
                <text x="384" y="628">the</text>
                <text x="424" y="628">Group</text>
                <text x="476" y="628">OSCORE</text>
                <text x="276" y="644">Security</text>
                <text x="348" y="644">Context:</text>
                <text x="404" y="644">SN_5</text>
                <text x="472" y="644">502</text>
                <text x="496" y="644">)</text>
                <text x="192" y="692">(</text>
                <text x="208" y="692">S</text>
                <text x="248" y="692">creates</text>
                <text x="288" y="692">a</text>
                <text x="320" y="692">group</text>
                <text x="392" y="692">observation</text>
                <text x="452" y="692">of</text>
                <text x="476" y="692">/r</text>
                <text x="496" y="692">)</text>
                <text x="232" y="724">(</text>
                <text x="248" y="724">S</text>
                <text x="292" y="724">prepares</text>
                <text x="344" y="724">the</text>
                <text x="392" y="724">initial</text>
                <text x="464" y="724">multicast</text>
                <text x="300" y="740">notification</text>
                <text x="396" y="740">INIT_NOTIF</text>
                <text x="464" y="740">below</text>
                <text x="496" y="740">)</text>
                <text x="220" y="772">2.05</text>
                <text x="280" y="772">(Content)</text>
                <text x="228" y="788">Token:</text>
                <text x="276" y="788">0x7b</text>
                <text x="236" y="804">Observe:</text>
                <text x="280" y="804">0</text>
                <text x="232" y="820">OSCORE:</text>
                <text x="308" y="820">[kid:0x05,</text>
                <text x="384" y="820">Partial</text>
                <text x="460" y="820">IV:0x01f6]</text>
                <text x="228" y="836">&lt;Other</text>
                <text x="280" y="836">class</text>
                <text x="320" y="836">U/I</text>
                <text x="372" y="836">options&gt;</text>
                <text x="220" y="852">0xff</text>
                <text x="272" y="868">Encrypted_payload</text>
                <text x="352" y="868">{</text>
                <text x="236" y="884">2.05</text>
                <text x="300" y="884">(Content),</text>
                <text x="252" y="900">Observe:</text>
                <text x="296" y="900">-</text>
                <text x="340" y="900">(empty),</text>
                <text x="244" y="916">&lt;Other</text>
                <text x="296" y="916">class</text>
                <text x="328" y="916">E</text>
                <text x="376" y="916">options&gt;,</text>
                <text x="240" y="932">0xff,</text>
                <text x="252" y="948">Payload:</text>
                <text x="316" y="948">"1234"</text>
                <text x="208" y="964">}</text>
                <text x="276" y="980">&lt;Countersignature&gt;</text>
                <text x="232" y="1012">(</text>
                <text x="248" y="1012">S</text>
                <text x="280" y="1012">steps</text>
                <text x="324" y="1012">SN_5</text>
                <text x="356" y="1012">in</text>
                <text x="384" y="1012">the</text>
                <text x="424" y="1012">Group</text>
                <text x="476" y="1012">OSCORE</text>
                <text x="276" y="1028">Security</text>
                <text x="348" y="1028">Context:</text>
                <text x="404" y="1028">SN_5</text>
                <text x="472" y="1028">503</text>
                <text x="496" y="1028">)</text>
                <text x="224" y="1060">(</text>
                <text x="240" y="1060">S</text>
                <text x="292" y="1060">increments</text>
                <text x="352" y="1060">the</text>
                <text x="404" y="1060">observer</text>
                <text x="472" y="1060">counter</text>
                <text x="248" y="1076">for</text>
                <text x="280" y="1076">the</text>
                <text x="320" y="1076">group</text>
                <text x="392" y="1076">observation</text>
                <text x="452" y="1076">of</text>
                <text x="476" y="1076">/r</text>
                <text x="496" y="1076">)</text>
                <text x="12" y="1108">C1</text>
                <text x="168" y="1108">[</text>
                <text x="208" y="1108">Unicast</text>
                <text x="252" y="1108">w/</text>
                <text x="292" y="1108">OSCORE</text>
                <text x="328" y="1108">]</text>
                <text x="512" y="1108">S</text>
                <text x="44" y="1124">2.04</text>
                <text x="104" y="1124">(Changed)</text>
                <text x="52" y="1140">Token:</text>
                <text x="100" y="1140">0x4a</text>
                <text x="56" y="1156">OSCORE:</text>
                <text x="96" y="1156">-</text>
                <text x="136" y="1156">(empty)</text>
                <text x="52" y="1172">&lt;Other</text>
                <text x="104" y="1172">class</text>
                <text x="144" y="1172">U/I</text>
                <text x="196" y="1172">options&gt;</text>
                <text x="44" y="1188">0xff</text>
                <text x="96" y="1204">Encrypted_payload</text>
                <text x="176" y="1204">{</text>
                <text x="60" y="1220">5.03</text>
                <text x="116" y="1220">(Service</text>
                <text x="208" y="1220">Unavailable),</text>
                <text x="104" y="1236">Content-Format:</text>
                <text x="324" y="1236">application/informative-response+cbor,</text>
                <text x="68" y="1252">&lt;Other</text>
                <text x="120" y="1252">class</text>
                <text x="152" y="1252">E</text>
                <text x="200" y="1252">options&gt;,</text>
                <text x="64" y="1268">0xff,</text>
                <text x="72" y="1284">Payload</text>
                <text x="112" y="1284">{</text>
                <text x="64" y="1300">/</text>
                <text x="104" y="1300">tp_info</text>
                <text x="144" y="1300">/</text>
                <text x="184" y="1300">0</text>
                <text x="200" y="1300">:</text>
                <text x="216" y="1300">[</text>
                <text x="344" y="1316">cri'coap://SRV_ADDR:SRV_PORT/',</text>
                <text x="360" y="1332">cri'coap://GRP_ADDR:GRP_PORT/',</text>
                <text x="268" y="1348">0x7b</text>
                <text x="220" y="1364">],</text>
                <text x="64" y="1380">/</text>
                <text x="100" y="1380">ph_req</text>
                <text x="136" y="1380">/</text>
                <text x="184" y="1380">1</text>
                <text x="200" y="1380">:</text>
                <text x="248" y="1380">bstr(0x05</text>
                <text x="296" y="1380">|</text>
                <text x="320" y="1380">OPT</text>
                <text x="344" y="1380">|</text>
                <text x="372" y="1380">0xff</text>
                <text x="400" y="1380">|</text>
                <text x="280" y="1396">PAYLOAD</text>
                <text x="320" y="1396">|</text>
                <text x="356" y="1396">SIGN),</text>
                <text x="64" y="1412">/</text>
                <text x="116" y="1412">last_notif</text>
                <text x="168" y="1412">/</text>
                <text x="184" y="1412">2</text>
                <text x="200" y="1412">:</text>
                <text x="248" y="1412">bstr(0x45</text>
                <text x="296" y="1412">|</text>
                <text x="320" y="1412">OPT</text>
                <text x="344" y="1412">|</text>
                <text x="372" y="1412">0xff</text>
                <text x="400" y="1412">|</text>
                <text x="280" y="1428">PAYLOAD</text>
                <text x="320" y="1428">|</text>
                <text x="356" y="1428">SIGN),</text>
                <text x="64" y="1444">/</text>
                <text x="108" y="1444">join_uri</text>
                <text x="152" y="1444">/</text>
                <text x="184" y="1444">5</text>
                <text x="200" y="1444">:</text>
                <text x="340" y="1444">"coap://myGM/ace-group/myGroup",</text>
                <text x="64" y="1460">/</text>
                <text x="100" y="1460">sec_gp</text>
                <text x="136" y="1460">/</text>
                <text x="184" y="1460">6</text>
                <text x="200" y="1460">:</text>
                <text x="248" y="1460">"myGroup"</text>
                <text x="48" y="1476">}</text>
                <text x="32" y="1492">}</text>
                <text x="12" y="1524">C2</text>
                <text x="168" y="1524">[</text>
                <text x="208" y="1524">Unicast</text>
                <text x="252" y="1524">w/</text>
                <text x="292" y="1524">OSCORE</text>
                <text x="328" y="1524">]</text>
                <text x="512" y="1524">S</text>
                <text x="540" y="1524">/r</text>
                <text x="44" y="1540">0.05</text>
                <text x="96" y="1540">(FETCH)</text>
                <text x="52" y="1556">Token:</text>
                <text x="100" y="1556">0x01</text>
                <text x="60" y="1572">Observe:</text>
                <text x="104" y="1572">0</text>
                <text x="156" y="1572">(register)</text>
                <text x="56" y="1588">OSCORE:</text>
                <text x="132" y="1588">[kid:0x02,</text>
                <text x="208" y="1588">Partial</text>
                <text x="276" y="1588">IV:0xc9]</text>
                <text x="52" y="1604">&lt;Other</text>
                <text x="104" y="1604">class</text>
                <text x="144" y="1604">U/I</text>
                <text x="196" y="1604">options&gt;</text>
                <text x="44" y="1620">0xff</text>
                <text x="96" y="1636">Encrypted_payload</text>
                <text x="176" y="1636">{</text>
                <text x="60" y="1652">0.01</text>
                <text x="108" y="1652">(GET),</text>
                <text x="76" y="1668">Observe:</text>
                <text x="120" y="1668">0</text>
                <text x="176" y="1668">(register),</text>
                <text x="80" y="1684">Uri-Path:</text>
                <text x="140" y="1684">"r",</text>
                <text x="68" y="1700">&lt;Other</text>
                <text x="120" y="1700">class</text>
                <text x="152" y="1700">E</text>
                <text x="196" y="1700">options&gt;</text>
                <text x="32" y="1716">}</text>
                <text x="224" y="1748">(</text>
                <text x="240" y="1748">S</text>
                <text x="292" y="1748">increments</text>
                <text x="352" y="1748">the</text>
                <text x="404" y="1748">observer</text>
                <text x="472" y="1748">counter</text>
                <text x="248" y="1764">for</text>
                <text x="280" y="1764">the</text>
                <text x="320" y="1764">group</text>
                <text x="392" y="1764">observation</text>
                <text x="452" y="1764">of</text>
                <text x="476" y="1764">/r</text>
                <text x="496" y="1764">)</text>
                <text x="12" y="1796">C2</text>
                <text x="168" y="1796">[</text>
                <text x="208" y="1796">Unicast</text>
                <text x="252" y="1796">w/</text>
                <text x="292" y="1796">OSCORE</text>
                <text x="328" y="1796">]</text>
                <text x="512" y="1796">S</text>
                <text x="44" y="1812">2.04</text>
                <text x="104" y="1812">(Changed)</text>
                <text x="52" y="1828">Token:</text>
                <text x="100" y="1828">0x01</text>
                <text x="56" y="1844">OSCORE:</text>
                <text x="96" y="1844">-</text>
                <text x="136" y="1844">(empty)</text>
                <text x="52" y="1860">&lt;Other</text>
                <text x="104" y="1860">class</text>
                <text x="144" y="1860">U/I</text>
                <text x="196" y="1860">options&gt;</text>
                <text x="48" y="1876">0xff,</text>
                <text x="96" y="1892">Encrypted_payload</text>
                <text x="176" y="1892">{</text>
                <text x="60" y="1908">5.03</text>
                <text x="116" y="1908">(Service</text>
                <text x="208" y="1908">Unavailable),</text>
                <text x="104" y="1924">Content-Format:</text>
                <text x="324" y="1924">application/informative-response+cbor,</text>
                <text x="68" y="1940">&lt;Other</text>
                <text x="120" y="1940">class</text>
                <text x="152" y="1940">E</text>
                <text x="200" y="1940">options&gt;,</text>
                <text x="64" y="1956">0xff,</text>
                <text x="72" y="1972">Payload</text>
                <text x="112" y="1972">{</text>
                <text x="64" y="1988">/</text>
                <text x="104" y="1988">tp_info</text>
                <text x="144" y="1988">/</text>
                <text x="184" y="1988">0</text>
                <text x="200" y="1988">:</text>
                <text x="216" y="1988">[</text>
                <text x="344" y="2004">cri'coap://SRV_ADDR:SRV_PORT/',</text>
                <text x="360" y="2020">cri'coap://GRP_ADDR:GRP_PORT/',</text>
                <text x="268" y="2036">0x7b</text>
                <text x="220" y="2052">],</text>
                <text x="64" y="2068">/</text>
                <text x="100" y="2068">ph_req</text>
                <text x="136" y="2068">/</text>
                <text x="184" y="2068">1</text>
                <text x="200" y="2068">:</text>
                <text x="248" y="2068">bstr(0x05</text>
                <text x="296" y="2068">|</text>
                <text x="320" y="2068">OPT</text>
                <text x="344" y="2068">|</text>
                <text x="372" y="2068">0xff</text>
                <text x="400" y="2068">|</text>
                <text x="280" y="2084">PAYLOAD</text>
                <text x="320" y="2084">|</text>
                <text x="356" y="2084">SIGN),</text>
                <text x="64" y="2100">/</text>
                <text x="116" y="2100">last_notif</text>
                <text x="168" y="2100">/</text>
                <text x="184" y="2100">2</text>
                <text x="200" y="2100">:</text>
                <text x="248" y="2100">bstr(0x45</text>
                <text x="296" y="2100">|</text>
                <text x="320" y="2100">OPT</text>
                <text x="344" y="2100">|</text>
                <text x="372" y="2100">0xff</text>
                <text x="400" y="2100">|</text>
                <text x="280" y="2116">PAYLOAD</text>
                <text x="320" y="2116">|</text>
                <text x="356" y="2116">SIGN),</text>
                <text x="64" y="2132">/</text>
                <text x="108" y="2132">join_uri</text>
                <text x="152" y="2132">/</text>
                <text x="184" y="2132">5</text>
                <text x="200" y="2132">:</text>
                <text x="340" y="2132">"coap://myGM/ace-group/myGroup",</text>
                <text x="64" y="2148">/</text>
                <text x="100" y="2148">sec_gp</text>
                <text x="136" y="2148">/</text>
                <text x="184" y="2148">6</text>
                <text x="200" y="2148">:</text>
                <text x="248" y="2148">"myGroup"</text>
                <text x="48" y="2164">}</text>
                <text x="32" y="2180">}</text>
                <text x="32" y="2212">(</text>
                <text x="56" y="2212">The</text>
                <text x="132" y="2212">representation</text>
                <text x="204" y="2212">of</text>
                <text x="232" y="2212">the</text>
                <text x="284" y="2212">resource</text>
                <text x="332" y="2212">/r</text>
                <text x="376" y="2212">changes</text>
                <text x="420" y="2212">to</text>
                <text x="460" y="2212">"5678"</text>
                <text x="496" y="2212">)</text>
                <text x="12" y="2260">C1</text>
                <text x="152" y="2276">[</text>
                <text x="200" y="2276">Multicast</text>
                <text x="252" y="2276">w/</text>
                <text x="288" y="2276">Group</text>
                <text x="340" y="2276">OSCORE</text>
                <text x="376" y="2276">]</text>
                <text x="512" y="2276">S</text>
                <text x="12" y="2292">C2</text>
                <text x="140" y="2292">(Destination</text>
                <text x="248" y="2292">address/port:</text>
                <text x="380" y="2292">GRP_ADDR/GRP_PORT)</text>
                <text x="60" y="2324">2.05</text>
                <text x="120" y="2324">(Content)</text>
                <text x="68" y="2340">Token:</text>
                <text x="116" y="2340">0x7b</text>
                <text x="76" y="2356">Observe:</text>
                <text x="120" y="2356">1</text>
                <text x="72" y="2372">OSCORE:</text>
                <text x="148" y="2372">[kid:0x05,</text>
                <text x="224" y="2372">Partial</text>
                <text x="300" y="2372">IV:0x01f7]</text>
                <text x="76" y="2388">Max-Age:</text>
                <text x="120" y="2388">0</text>
                <text x="68" y="2404">&lt;Other</text>
                <text x="120" y="2404">class</text>
                <text x="160" y="2404">U/I</text>
                <text x="212" y="2404">options&gt;</text>
                <text x="60" y="2420">0xff</text>
                <text x="112" y="2436">Encrypted_payload</text>
                <text x="192" y="2436">{</text>
                <text x="76" y="2452">2.05</text>
                <text x="140" y="2452">(Content),</text>
                <text x="92" y="2468">Observe:</text>
                <text x="136" y="2468">-</text>
                <text x="180" y="2468">(empty),</text>
                <text x="84" y="2484">&lt;Other</text>
                <text x="136" y="2484">class</text>
                <text x="168" y="2484">E</text>
                <text x="216" y="2484">options&gt;,</text>
                <text x="80" y="2500">0xff,</text>
                <text x="92" y="2516">Payload:</text>
                <text x="156" y="2516">"5678"</text>
                <text x="48" y="2532">}</text>
                <text x="88" y="2548">&lt;Signature&gt;</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
C1 ---------------- [ Unicast w/ OSCORE ]  ------------------> S  /r
|  0.05 (FETCH)                                                |
|  Token: 0x4a                                                 |
|  Observe: 0 (register)                                       |
|  OSCORE: [kid:0x01, Partial IV:0x65]                         |
|  <Other class U/I options>                                   |
|  0xff                                                        |
|  Encrypted_payload {                                         |
|    0.01 (GET),                                               |
|    Observe: 0 (register),                                    |
|    Uri-Path: "r",                                            |
|    <Other class E options>                                   |
|  }                                                           |
|                                                              |
|               ( S allocates the available Token value 0x7b ) |
|                                                              |
|     ( S sends to itself a phantom observation request PH_REQ |
|       as coming from the IP multicast address GRP_ADDR  )    |
|     .------------------------------------------------------- |
|    /                                                         |
|    \                                                         |
|     `------------------------------------------------------> |  /r
|                        0.05 (FETCH)                          |
|                        Token: 0x7b                           |
|                        Observe: 0 (register)                 |
|                        OSCORE: [kid:0x05, Partial IV:0x01f5, |
|                                 kid context:0x57ab2e]        |
|                        <Other class U/I options>             |
|                        0xff                                  |
|                        Encrypted_payload {                   |
|                          0.01 (GET),                         |
|                          Observe: 0 (register),              |
|                          Uri-Path: "r",                      |
|                          <Other class E options>             |
|                        }                                     |
|                        <Countersignature>                    |
|                                                              |
|                           ( S steps SN_5 in the Group OSCORE |
|                             Security Context: SN_5 <-- 502 ) |
|                                                              |
|                                                              |
|                      ( S creates a group observation of /r ) |
|                                                              |
|                           ( S prepares the initial multicast |
|                              notification INIT_NOTIF below ) |
|                                                              |
|                        2.05 (Content)                        |
|                        Token: 0x7b                           |
|                        Observe: 0                            |
|                        OSCORE: [kid:0x05, Partial IV:0x01f6] |
|                        <Other class U/I options>             |
|                        0xff                                  |
|                        Encrypted_payload {                   |
|                          2.05 (Content),                     |
|                          Observe: - (empty),                 |
|                          <Other class E options>,            |
|                          0xff,                               |
|                          Payload: "1234"                     |
|                        }                                     |
|                        <Countersignature>                    |
|                                                              |
|                           ( S steps SN_5 in the Group OSCORE |
|                             Security Context: SN_5 <-- 503 ) |
|                                                              |
|                          ( S increments the observer counter |
|                            for the group observation of /r ) |
|                                                              |
C1 <--------------- [ Unicast w/ OSCORE ] -------------------- S
|  2.04 (Changed)                                              |
|  Token: 0x4a                                                 |
|  OSCORE: - (empty)                                           |
|  <Other class U/I options>                                   |
|  0xff                                                        |
|  Encrypted_payload {                                         |
|    5.03 (Service Unavailable),                               |
|    Content-Format: application/informative-response+cbor,    |
|    <Other class E options>,                                  |
|    0xff,                                                     |
|    Payload {                                                 |
|      / tp_info /    0 : [                                    |
|                          cri'coap://SRV_ADDR:SRV_PORT/',     |
|                            cri'coap://GRP_ADDR:GRP_PORT/',   |
|                              0x7b                            |
|                         ],                                   |
|      / ph_req /     1 : bstr(0x05 | OPT | 0xff |             |
|                              PAYLOAD | SIGN),                |
|      / last_notif / 2 : bstr(0x45 | OPT | 0xff |             |
|                              PAYLOAD | SIGN),                |
|      / join_uri /   5 : "coap://myGM/ace-group/myGroup",     |
|      / sec_gp /     6 : "myGroup"                            |
|    }                                                         |
|  }                                                           |
|                                                              |
C2 ---------------- [ Unicast w/ OSCORE ]  ------------------> S  /r
|  0.05 (FETCH)                                                |
|  Token: 0x01                                                 |
|  Observe: 0 (register)                                       |
|  OSCORE: [kid:0x02, Partial IV:0xc9]                         |
|  <Other class U/I options>                                   |
|  0xff                                                        |
|  Encrypted_payload {                                         |
|    0.01 (GET),                                               |
|    Observe: 0 (register),                                    |
|    Uri-Path: "r",                                            |
|    <Other class E options>                                   |
|  }                                                           |
|                                                              |
|                          ( S increments the observer counter |
|                            for the group observation of /r ) |
|                                                              |
C2 <--------------- [ Unicast w/ OSCORE ] -------------------- S
|  2.04 (Changed)                                              |
|  Token: 0x01                                                 |
|  OSCORE: - (empty)                                           |
|  <Other class U/I options>                                   |
|  0xff,                                                       |
|  Encrypted_payload {                                         |
|    5.03 (Service Unavailable),                               |
|    Content-Format: application/informative-response+cbor,    |
|    <Other class E options>,                                  |
|    0xff,                                                     |
|    Payload {                                                 |
|      / tp_info /    0 : [                                    |
|                          cri'coap://SRV_ADDR:SRV_PORT/',     |
|                            cri'coap://GRP_ADDR:GRP_PORT/',   |
|                              0x7b                            |
|                         ],                                   |
|      / ph_req /     1 : bstr(0x05 | OPT | 0xff |             |
|                              PAYLOAD | SIGN),                |
|      / last_notif / 2 : bstr(0x45 | OPT | 0xff |             |
|                              PAYLOAD | SIGN),                |
|      / join_uri /   5 : "coap://myGM/ace-group/myGroup",     |
|      / sec_gp /     6 : "myGroup"                            |
|    }                                                         |
|  }                                                           |
|                                                              |
|  ( The representation of the resource /r changes to "5678" ) |
|                                                              |
+--+                                                           |
C1 |                                                           |
   | <----------- [ Multicast w/ Group OSCORE ] -------------- S
C2 |       (Destination address/port: GRP_ADDR/GRP_PORT)       |
+--+                                                           |
|    2.05 (Content)                                            |
|    Token: 0x7b                                               |
|    Observe: 1                                                |
|    OSCORE: [kid:0x05, Partial IV:0x01f7]                     |
|    Max-Age: 0                                                |
|    <Other class U/I options>                                 |
|    0xff                                                      |
|    Encrypted_payload {                                       |
|      2.05 (Content),                                         |
|      Observe: - (empty),                                     |
|      <Other class E options>,                                |
|      0xff,                                                   |
|      Payload: "5678"                                         |
|    }                                                         |
|    <Signature>                                               |
|                                                              |
]]></artwork>
        </artset>
      </figure>
      <t>The two external_aad structures used to encrypt and sign the multicast notification above include 'request_kid' = 0x05, 'request_piv' = 0x01f5, and 'request_kid_context' = 0x57ab2e. These values are specified in the 'kid', 'Partial IV', and 'kid context' fields of the OSCORE Option value of the phantom observation request, which is encoded in the 'ph_req' parameter of the unicast informative response to the two clients. Thus, the two clients can build the two same external_aad structures for decrypting and verifying this multicast notification and the following ones in the group observation.</t>
    </section>
    <section anchor="informative-response-params">
      <name>Informative Response Parameters</name>
      <t>This document defines a number of fields used in the informative response specified in <xref target="ssec-server-side-informative"/>.</t>
      <t>The table below summarizes them and specifies the CBOR key to use as abbreviation, instead of the full descriptive name. Note that the media type "application/informative-response+cbor" <bcp14>MUST</bcp14> be used when these fields are transported.</t>
      <table align="center" anchor="_table-informative-response-params">
        <name>Informative Response Parameters.</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">CBOR Key</th>
            <th align="left">CBOR Type</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">tp_info</td>
            <td align="left">0</td>
            <td align="left">array</td>
            <td align="left">
              <xref target="ssec-server-side-informative"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">ph_req</td>
            <td align="left">1</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="ssec-server-side-informative"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">last_notif</td>
            <td align="left">2</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="ssec-server-side-informative"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">next_not_before</td>
            <td align="left">3</td>
            <td align="left">unsigned integer</td>
            <td align="left">
              <xref target="ssec-server-side-informative"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">ending</td>
            <td align="left">4</td>
            <td align="left">integer or float</td>
            <td align="left">
              <xref target="ssec-server-side-informative"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">join_uri</td>
            <td align="left">5</td>
            <td align="left">text string</td>
            <td align="left">
              <xref target="sec-inf-response"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">sec_gp</td>
            <td align="left">6</td>
            <td align="left">text string</td>
            <td align="left">
              <xref target="sec-inf-response"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">as_uri</td>
            <td align="left">7</td>
            <td align="left">text string</td>
            <td align="left">
              <xref target="sec-inf-response"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">hkdf</td>
            <td align="left">8</td>
            <td align="left">integer or text string</td>
            <td align="left">
              <xref target="sec-inf-response"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">cred_fmt</td>
            <td align="left">9</td>
            <td align="left">integer</td>
            <td align="left">
              <xref target="sec-inf-response"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">gp_enc_alg</td>
            <td align="left">10</td>
            <td align="left">integer or text string</td>
            <td align="left">
              <xref target="sec-inf-response"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">sign_alg</td>
            <td align="left">11</td>
            <td align="left">integer or text string</td>
            <td align="left">
              <xref target="sec-inf-response"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">sign_params</td>
            <td align="left">12</td>
            <td align="left">array</td>
            <td align="left">
              <xref target="sec-inf-response"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">gp_material</td>
            <td align="left">13</td>
            <td align="left">map</td>
            <td align="left">
              <xref target="self-managed-oscore-group"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">srv_cred</td>
            <td align="left">14</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="self-managed-oscore-group"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">srv_identifier</td>
            <td align="left">15</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="self-managed-oscore-group"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">exi</td>
            <td align="left">16</td>
            <td align="left">unsigned integer</td>
            <td align="left">
              <xref target="self-managed-oscore-group"/> of [RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">exp</td>
            <td align="left">17</td>
            <td align="left">integer or float</td>
            <td align="left">
              <xref target="self-managed-oscore-group"/> of [RFC-XXXX]</td>
          </tr>
        </tbody>
      </table>
      <t>Note to RFC Editor: In the table above, please replace "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
    </section>
    <section anchor="transport-protocol-identifiers">
      <name>Transport Protocol Information</name>
      <t><xref target="ssssec-udp-transport-specific"/> defines the transport-specific information that the server specifies as elements of 'tpi_details' within the 'tp_info' parameter of the informative response defined in <xref target="ssec-server-side-informative"/>, when CoAP responses are transported over UDP.</t>
      <t><xref target="_table-transport-information"/> defines the corresponding entry that <xref target="iana-coap-transport-information"/> registers in the "CoAP Transport Information" registry defined in this document.</t>
      <table align="center" anchor="_table-transport-information">
        <name>CoAP Transport Information for CoAP over UDP.</name>
        <thead>
          <tr>
            <th align="left">CoAP Transport</th>
            <th align="left">Transport Information Details</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CoAP over UDP</td>
            <td align="left">tpi_client,tpi_token</td>
            <td align="left">
              <xref target="ssssec-udp-transport-specific"/> of [RFC-XXXX]</td>
          </tr>
        </tbody>
      </table>
      <t>Note to RFC Editor: In the table above, please replace "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
    </section>
    <section removeInRFC="true" anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: when deleting this section, please also delete RFC 7942 from the references of this document.</t>
      <t>(Boilerplate as per <xref section="2.1" sectionFormat="of" target="RFC7942"/>:)</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -22?>
      </t>
      <section anchor="sec-implementation-1">
        <name>Implementation #1</name>
        <ul spacing="normal">
          <li>
            <t>Author: Adrian Kastrati</t>
          </li>
          <li>
            <t>Responsible organization: RISE Research Institutes of Sweden AB</t>
          </li>
          <li>
            <t>Implementation's name: CoAP Observe Multicast Notifications for Eclipse Californium</t>
          </li>
          <li>
            <t>Available at: https://github.com/rikard-sics/californium/tree/multicast-notifications</t>
          </li>
          <li>
            <t>Description: Implementation in Java, building on Eclipse Californium, see:  </t>
            <ul spacing="normal">
              <li>
                <t>https://github.com/eclipse-californium/californium</t>
              </li>
              <li>
                <t>https://eclipse.dev/californium/</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Implementation's level of maturity: prototype</t>
          </li>
          <li>
            <t>The implementation supports:  </t>
            <ul spacing="normal">
              <li>
                <t>Server side:      </t>
                <ul spacing="normal">
                  <li>
                    <t>Self-sending of a phantom registration request to start a group observation, upon receiving a first traditional Observe registration request from any client.</t>
                  </li>
                  <li>
                    <t>Sending of a 5.03 informative response in reply to traditional Observe registration requests from any client.</t>
                  </li>
                  <li>
                    <t>Sending of multicast notifications to the clients participating in an ongoing group observation.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Client side:      </t>
                <ul spacing="normal">
                  <li>
                    <t>Dynamic setup as a participant in a group observation, per the information received in a 5.03 informative response.</t>
                  </li>
                  <li>
                    <t>Reception and processing of multicast notifications pertaining to an ongoing and set group observation.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Possible use of secure communication:      </t>
                <ul spacing="normal">
                  <li>
                    <t>OSCORE to protect the original registration requests and the corresponding 5.03 error responses.</t>
                  </li>
                  <li>
                    <t>Group OSCORE to protect the phantom registration request and the corresponding multicast notifications.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <t>Version compatibility: From version -14 onwards.</t>
          </li>
          <li>
            <t>Licensing: according to the same dual license of Eclipse Californium, i.e., according to the "Eclipse Distribution License 1.0" and the "Eclipse Public License 2.0". See:  </t>
            <ul spacing="normal">
              <li>
                <t>https://github.com/eclipse-californium/californium/blob/main/LICENSE</t>
              </li>
              <li>
                <t>https://www.eclipse.org/org/documents/edl-v10.php</t>
              </li>
              <li>
                <t>https://www.eclipse.org/legal/epl-2.0/</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Contact information: Rikard Höglund - rikard.hoglund@ri.se</t>
          </li>
          <li>
            <t>Information last updated on: 2026-11-02</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-implementation-2">
        <name>Implementation #2</name>
        <ul spacing="normal">
          <li>
            <t>Author: Alexander Pelov</t>
          </li>
          <li>
            <t>Responsible organization: IMT Atlantique</t>
          </li>
          <li>
            <t>Implementation's name: CoAP Observe Multicast Notifications for libcoap</t>
          </li>
          <li>
            <t>Available at: https://github.com/apelov/coap-multicast-notifications</t>
          </li>
          <li>
            <t>Description: Implementation in C, building on libcoap, see:  </t>
            <ul spacing="normal">
              <li>
                <t>https://github.com/obgm/libcoap</t>
              </li>
              <li>
                <t>https://libcoap.net/</t>
              </li>
            </ul>
            <t>
Group OSCORE support is taken from the libcoap fork at https://github.com/mrdeep1/libcoap (branch "oscore_group", mirrored at https://github.com/apelov/libcoap), with local patches included in the repository of the implementation.</t>
          </li>
          <li>
            <t>Implementation's level of maturity: prototype</t>
          </li>
          <li>
            <t>The implementation supports:  </t>
            <ul spacing="normal">
              <li>
                <t>Server side:      </t>
                <ul spacing="normal">
                  <li>
                    <t>Self-sending of a phantom registration request to start a group observation, upon receiving a first traditional Observe registration request from any client.</t>
                  </li>
                  <li>
                    <t>Sending of a 5.03 informative response in reply to traditional Observe registration requests from any client.</t>
                  </li>
                  <li>
                    <t>Sending of multicast notifications to the clients participating in an ongoing group observation.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Client side:      </t>
                <ul spacing="normal">
                  <li>
                    <t>Dynamic setup as a participant in a group observation, per the information received in a 5.03 informative response.</t>
                  </li>
                  <li>
                    <t>Reception and processing of multicast notifications pertaining to an ongoing and set group observation.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Possible use of secure communication:      </t>
                <ul spacing="normal">
                  <li>
                    <t>OSCORE to protect the original registration requests and the corresponding 5.03 error responses.</t>
                  </li>
                  <li>
                    <t>Group OSCORE to protect the phantom registration request and the corresponding multicast notifications.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <t>Version compatibility: From version -15 onwards.</t>
          </li>
          <li>
            <t>Licensing: according to the MIT License, see:  </t>
            <ul spacing="normal">
              <li>
                <t>https://github.com/apelov/coap-multicast-notifications/blob/main/LICENSE</t>
              </li>
            </ul>
            <t>
The patches to libcoap included in the repository are offered under the same license of libcoap, i.e., the simplified BSD 2-Clause license, see:  </t>
            <ul spacing="normal">
              <li>
                <t>https://github.com/obgm/libcoap/blob/develop/LICENSE</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Contact information: Alexander Pelov - alexander.pelov@imt-atlantique.fr</t>
          </li>
          <li>
            <t>Information last updated on: 2026-11-02</t>
          </li>
        </ul>
      </section>
      <section anchor="interoperability">
        <name>Interoperability</name>
        <t>The two implementations mentioned in <xref target="sec-implementation-1"/> and <xref target="sec-implementation-2"/> have successfully completed interoperability tests.</t>
        <t>A first round of interoperability tests occurred specifically for version -15 of the Internet-Draft during the IETF 126 meeting in Vienna (Austria) in July 2026, limited to a test scenario without secure communication.</t>
        <t>Latest rounds of interoperability tests occurred specifically for version -15 in the following months, considering test scenarios with and without secure communication.</t>
        <t>The scenarios considered during the interoperability tests are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The server hosts a single resource that supports group observation.</t>
          </li>
          <li>
            <t>Within the payload of the 5.03 informative response, the CBOR map conveys the parameters 'tp_info', 'ph_req', and 'last_notif'.</t>
          </li>
          <li>
            <t>Test scenarios:  </t>
            <ul spacing="normal">
              <li>
                <t>Without secure communication.</t>
              </li>
              <li>
                <t>With secure communication.      </t>
                <ul spacing="normal">
                  <li>
                    <t>OSCORE protects the original registration requests and the corresponding 5.03 error responses.</t>
                  </li>
                  <li>
                    <t>Group OSCORE protects the phantom registration request and the corresponding multicast notifications.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <t>For both test scenarios with and without secure communication, the following setups were considered:  </t>
            <ul spacing="normal">
              <li>
                <t>1 Java server and 3 Java clients</t>
              </li>
              <li>
                <t>1 Java server and 3 C clients</t>
              </li>
              <li>
                <t>1 C server and 3 C clients</t>
              </li>
              <li>
                <t>1 C server and 3 Java clients</t>
              </li>
            </ul>
            <t>
For both test scenarios, further setups were also considered, where some of the 3 clients were C clients and some were Java clients.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-operational-considerations">
      <name>Operational Considerations</name>
      <t>This section compiles the operational considerations that hold for this document.</t>
      <section anchor="logging">
        <name>Logging</name>
        <t>When performing its normal operations, it is desirable that the server produces timestamped logs about the following, to the extent afforded by its available memory, computing, and energy resources:</t>
        <ul spacing="normal">
          <li>
            <t>The start of a group observation, as corresponding to the issue and local processing of a phantom observation request (see <xref target="ssec-server-side-request"/>).</t>
          </li>
          <li>
            <t>The release and retraction of group observation data as available through different means (see <xref target="appendix-different-sources"/>).</t>
          </li>
          <li>
            <t>The addition of a new client as a participant in a group observation, with the consequent sending of an informative response (see <xref target="ssec-server-side-informative"/>).</t>
          </li>
          <li>
            <t>The execution of a procedure to (roughly) assess the number of clients that are still participating in a group observation, together with the settings and the outcome of such procedure (e.g., see <xref target="sec-rough-counting"/>).</t>
          </li>
          <li>
            <t>The evolution of the (rough) number of clients participating in a group observation throughout its duration.</t>
          </li>
          <li>
            <t>The termination of a group observation (see <xref target="ssec-server-side-cancellation"/>).</t>
          </li>
        </ul>
        <t>A group observation can be effectively characterized by the target resource, the phantom registration request, and the transport-specific information according to which multicast notifications are sent for that group observation.</t>
        <t>Although log entries are produced by the server, the storage, management, controlled sharing, and disposal of logs are entrusted to a designated storage point that can be the server itself or instead a separate trusted entity.</t>
        <t>Besides what is compiled above, the server could produce additional information to log. Further details about what the server logs, with what granularity, and based on what triggering events and conditions are application-specific and left to operators to define.</t>
        <t>The server <bcp14>MUST NOT</bcp14> log any secret or confidential information pertaining to a group observation. For example, if Group OSCORE is used to protect multicast notifications (see <xref target="sec-secured-notifications"/>), such information includes:</t>
        <ul spacing="normal">
          <li>
            <t>The OSCORE Master Secret used in the OSCORE group.</t>
          </li>
          <li>
            <t>The symmetric keying material derived from the OSCORE Master Secret and used in the OSCORE group, i.e., the Sender/Recipient Keys.</t>
          </li>
          <li>
            <t>The Signature Encryption Key used in the OSCORE group.</t>
          </li>
          <li>
            <t>The private key associated with the server's authentication credential used in the group.</t>
          </li>
          <li>
            <t>Rekeying messages that are exchanged in the group.</t>
          </li>
          <li>
            <t>If applicable, administrative keying material used to protect the group rekeying process.</t>
          </li>
        </ul>
        <t>It is up to the application to specify for how long a log entry is retained from the time of its creation and until its deletion. Different retention policies could be enforced for different group observations. For a given group observation, the oldest log entries are expected to be those deleted first, and different retention policies could be enforced depending on whether the group observation is currently ongoing or has been terminated.</t>
        <t>It is out of the scope of this document what specific semantics and data model are used by the server for producing and processing the logs. Specific semantics and data models can be defined by applications and future specifications.</t>
        <t>It is expected that the logs produced are made available for secure access by authorized external management applications and operators.</t>
        <t>In particular, logged information could be retrieved in the following ways.</t>
        <ul spacing="normal">
          <li>
            <t>By accessing logs at the designated storage point through polling. This can occur in an occasional, regular, or event-driven way.</t>
          </li>
          <li>
            <t>Through notifications sent by the designated storage point according to an operator-defined frequency.</t>
          </li>
          <li>
            <t>Through notifications asynchronously sent by the designated storage point, throttling them in order to prevent congestion and duplication and to not create attack vectors.</t>
          </li>
        </ul>
        <t>From the perspective of an individual management application or network operator, knowledge gained from the logged information can be useful for planning, adjusting, and (fine-)tuning the allocation of network resources. Also, it can help understand how to (re-)configure the server in terms of which pre-conditions have to be met for starting a group observation for a target resource.</t>
        <t>Some of the logged information can be privacy-sensitive. This especially holds for the metadata about a client, i.e., addressing information of the client and, when applicable, (an identifier of) the client's authentication credential that is used to authenticate with the server when using secure communication. If external management applications and operators obtain such metadata, they become able to track a given client, as to its interactions with one or multiple servers and its participation in group observations under such servers.</t>
        <t>Therefore, the logged information that is effectively provided to external management applications and operators <bcp14>SHOULD</bcp14> be redacted by the designated storage point, by omitting any privacy-sensitive information element that could enable or facilitate the impairment of clients' privacy, e.g., by tracking clients across different group observations and different servers. Exceptions could apply, e.g., if the designated storage point can verify that the management application or operator in question is specifically authorized to obtain such privacy-sensitive information and appropriately entitled to obtain it according to enforced privacy policies.</t>
      </section>
      <section anchor="management-and-distribution-of-keying-material">
        <name>Management and Distribution of Keying Material</name>
        <t>When using Group OSCORE to protect multicast notifications, the management and distribution of the keying material used in the OSCORE group is entrusted to the Group Manager that is responsible for the group.</t>
        <t>A possible realization of Group Manager is the one defined <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. In such case, the server can optionally help clients, by including in the informative response additional information for joining the group through the responsible Group Manager (see <xref target="sec-inf-response"/>).</t>
        <t><xref target="self-managed-oscore-group"/> describes how, in simple settings, the server can be responsible to set up and manage the OSCORE group, acting as the corresponding Group Manager.</t>
      </section>
      <section anchor="access-control">
        <name>Access Control</name>
        <t>In order to enforce access control for a client accessing a target resource, it is fundamentally required that secure communication is used between the client and the server hosting the resource, with the server authenticating the client.</t>
        <t>This particularly applies to traditional observation requests that are sent protected to the server and result in a protected response like the informative response.</t>
        <t>When receiving such a protected request, the server can enforce access control after having successfully authenticated the requesting client, according to the access rights that are granted to the client's identity.</t>
        <t>In particular, access control can be enforced by using the ACE framework <xref target="RFC9200"/>, with a granularity that takes into account the resource specifically targeted at the server, the operation requested by sending a request to that resource, and the specific permission(s) that the requesting client is authorized to have according to its corresponding access token. Furthermore, the interactions between a client and the server are secured as per the specific transport profile of ACE used, for example <xref target="RFC9203"/> or <xref target="I-D.ietf-ace-group-oscore-profile"/>.</t>
      </section>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>In addition to the security considerations from <xref target="RFC7252"/>, <xref target="RFC7641"/>, <xref target="I-D.ietf-core-groupcomm-bis"/>, <xref target="RFC8613"/>, and <xref target="I-D.ietf-core-oscore-groupcomm"/>, the following considerations hold for this document.</t>
      <section anchor="unprotected-communications">
        <name>Unprotected Communications</name>
        <t>If communications are not protected, the server might not be able to effectively authenticate a new client when it registers as an observer. <xref section="7" sectionFormat="of" target="RFC7641"/> specifies how, in such a case, the server must strictly limit the number of notifications sent between receiving acknowledgements from the client, as confirming to be still interested in the observation; i.e., any notifications sent in Non-confirmable messages must be interspersed with confirmable messages.</t>
        <t>This is not possible to achieve by the same means when using the communication model defined in this document, since multicast notifications are sent as Non-confirmable messages. Nonetheless, the server might obtain such acknowledgements by other means.</t>
        <t>For instance, the method defined in <xref target="sec-rough-counting"/> to perform the rough counting of still interested clients triggers (some of) them to explicitly send a new observation request to acknowledge their interest. Then, the server can decide to terminate the group observation altogether, in the case that not enough clients are estimated to be still active.</t>
        <t>If the method defined in <xref target="sec-rough-counting"/> is used, the server <bcp14>SHOULD NOT</bcp14> send more than a strict number of multicast notifications for a given group observation, without having first performed a new rough counting of active clients. Note that, when using the method defined in <xref target="sec-rough-counting"/> with unprotected communications, an adversary can craft and inject multiple new observation requests including the Feedback-Divider Option, hence inducing the server to overestimate the number of still interested clients and thus to inappropriately continue the group observation.</t>
      </section>
      <section anchor="protected-communications">
        <name>Protected Communications</name>
        <t>If multicast notifications for an observed resource are protected using Group OSCORE (see <xref target="sec-secured-notifications"/>), it is ensured that those are securely bound to the phantom registration request that started the group observation of that resource. Furthermore, the following applies.</t>
        <ul spacing="normal">
          <li>
            <t>The original registration requests and related unicast (notification) responses are also protected, including and especially the informative responses from the server. An exception is the case discussed in <xref target="deterministic-phantom-Request"/>, where the informative response from the server is not protected.  </t>
            <t>
Protecting informative responses from the server prevents on-path active adversaries from altering the conveyed IP multicast address and serialized phantom registration request.</t>
          </li>
          <li>
            <t>A re-registration request, possibly including the Feedback-Divider Option to support the rough counting of clients (see <xref target="sec-rough-counting"/>), is also protected.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <section anchor="media-type">
        <name>Media Type Registrations</name>
        <t>This document registers the media type "application/informative-response+cbor" for error messages as informative response defined in <xref target="ssec-server-side-informative"/>, when carrying parameters encoded in CBOR. This registration follows the procedures specified in <xref target="RFC6838"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Type name: application</t>
          </li>
          <li>
            <t>Subtype name: informative-response+cbor</t>
          </li>
          <li>
            <t>Required parameters: N/A</t>
          </li>
          <li>
            <t>Optional parameters: N/A</t>
          </li>
          <li>
            <t>Encoding considerations: Must be encoded as a CBOR map containing the parameters defined in <xref target="ssec-server-side-informative"/> of [RFC-XXXX].</t>
          </li>
          <li>
            <t>Security considerations: See <xref target="sec-security-considerations"/> of [RFC-XXXX].</t>
          </li>
          <li>
            <t>Interoperability considerations: N/A</t>
          </li>
          <li>
            <t>Published specification: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Applications that use this media type: The type is used by CoAP servers and clients that support error messages as informative response defined in <xref target="ssec-server-side-informative"/> of [RFC-XXXX].</t>
          </li>
          <li>
            <t>Fragment identifier considerations: N/A</t>
          </li>
          <li>
            <t>Additional information: N/A</t>
          </li>
          <li>
            <t>Person &amp; email address to contact for further information: CoRE WG mailing list (core@ietf.org) or IETF Applications and Real-Time Area (art@ietf.org)</t>
          </li>
          <li>
            <t>Intended usage: COMMON</t>
          </li>
          <li>
            <t>Restrictions on usage: None</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Provisional registration:  No</t>
          </li>
        </ul>
      </section>
      <section anchor="content-format">
        <name>CoAP Content-Formats Registry</name>
        <t>IANA is asked to add the following entry to the "CoAP Content-Formats" registry <xref target="IANA.CoAP.Content.Formats"/> within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <t>Content Type: application/informative-response+cbor</t>
        <t>Content Coding: -</t>
        <t>ID: TBD (value between 0 and 255)</t>
        <t>Reference: [RFC-XXXX]</t>
      </section>
      <section anchor="iana-coap-options">
        <name>CoAP Option Numbers Registry</name>
        <t>IANA is asked to enter the following option number to the "CoAP Option Numbers" registry <xref target="IANA.CoAP.Option.Numbers"/> within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <table align="center">
          <name>Registration in the CoAP Option Numbers Registry</name>
          <thead>
            <tr>
              <th align="left">Number</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD18</td>
              <td align="left">Feedback-Divider</td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
          </tbody>
        </table>
        <t>For the Feedback-Divider Option, the preferred value range is 0-255. In particular, 18 is the preferred option number.</t>
        <t>Note to RFC Editor: In the table above, please replace TBD18 with the registered option number. Then, please delete this paragraph and the previous paragraph.</t>
      </section>
      <section anchor="iana-target-attributes">
        <name>Target Attributes Registry</name>
        <t>IANA is asked to register the following entry in the "Target Attributes" registry <xref target="IANA.Target.Attributes"/> within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Attribute Name: gp-obs</t>
          </li>
          <li>
            <t>Brief Description: Observable resource supporting group observation</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="sec-web-linking"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-informative-response-params">
        <name>Informative Response Parameters Registry</name>
        <t>This document establishes the "Informative Response Parameters" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <t>The registration policy is either "Private Use", "Standards Action with Expert Review", or "Specification Required" or "Expert Review" per <xref target="RFC8126"/>. "Expert Review" guidelines are provided in <xref target="iana-review"/>.</t>
        <t>All assignments according to "Standards Action with Expert Review" are made on a "Standards Action" basis per <xref section="4.9" sectionFormat="of" target="RFC8126"/> with "Expert Review" additionally required per <xref section="4.5" sectionFormat="of" target="RFC8126"/>. The procedure for early IANA allocation of "standards track code points" defined in <xref target="RFC7120"/> also applies. When such a procedure is used, IANA will ask the designated expert(s) to approve the early allocation before registration. In addition, working group chairs are encouraged to consult the expert(s) early during the process outlined in <xref section="3.1" sectionFormat="of" target="RFC7120"/>.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>
            <t>Name: This is a descriptive name that enables easier reference to the item. The name <bcp14>MUST</bcp14> be unique. It is not used in the encoding of the item.</t>
          </li>
          <li>
            <t>CBOR Key: This is the value used as the CBOR map key of the item. These values <bcp14>MUST</bcp14> be unique. The value can be a positive integer, a negative integer, or a text string. Different ranges of values use different registration policies <xref target="RFC8126"/>. Integer values from -256 to 255 as well as text strings of length 1 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535 as well as text strings of length 2 are designated as "Specification Required". Integer values greater than 65535 as well as text strings of length greater than 2 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</t>
          </li>
          <li>
            <t>CBOR Type: This contains the CBOR type of the item, or a pointer to the registry that defines its type, when that depends on another item.</t>
          </li>
          <li>
            <t>Reference: This contains a pointer to the public specification for the item, if one exists.</t>
          </li>
        </ul>
        <t>This registry has been initially populated by the entries in <xref target="_table-informative-response-params"/>.</t>
      </section>
      <section anchor="iana-coap-transport-information">
        <name>CoAP Transport Information Registry</name>
        <t>This document establishes the "CoAP Transport Information" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <t>The registration policy is "Expert Review" <xref target="RFC8126"/>. "Expert Review" guidelines are provided in <xref target="iana-review"/>.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>
            <t>CoAP Transport: This field contains a text string. The value <bcp14>MUST</bcp14> be unique and it uniquely identifies the transport used for CoAP messages.</t>
          </li>
          <li>
            <t>Transport Information Details: This field contains a list of text strings, where two adjacent strings are separated by a single comma character. Each text string is the name of an element that provides transport-specific information related to a pertinent CoAP request. Optional elements are prepended by '?' and <bcp14>MUST</bcp14> be specified next to each other as last ones.</t>
          </li>
          <li>
            <t>Reference: This contains a pointer to the public specification for the item, if one exists.</t>
          </li>
        </ul>
        <t>This registry has been initially populated by the entry in <xref target="_table-transport-information"/>.</t>
      </section>
      <section anchor="iana-review">
        <name>Expert Review Instructions</name>
        <t>"Standards Action with Expert Review", "Specification Required", and "Expert Review" are three of the registration policies defined for the IANA registries established in this document. This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason, so they should be given substantial latitude.</t>
        <t>Expert reviewers should take into consideration the following points:</t>
        <ul spacing="normal">
          <li>
            <t>Point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered and that the point is likely to be used in deployments. The zones tagged as "Private Use" are intended for testing purposes and closed environments. Code points in other ranges should not be assigned for testing.</t>
          </li>
          <li>
            <t>Specifications are required for the "Standards Action With Expert Review" range of point assignment. Specifications should exist for "Specification Required" ranges, but early assignment before a specification is available is considered to be permissible. When specifications are not provided, the description provided needs to have sufficient information to identify what the point is being used for.</t>
          </li>
          <li>
            <t>Experts should take into account the expected usage of fields when approving point assignment. The fact that there is a range for Standards Track documents does not mean that a Standards Track document cannot have points assigned outside of that range. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-core-groupcomm-bis">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="February" year="2026"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) is a web transfer
   protocol for constrained devices and constrained networks.  In a
   number of use cases, constrained devices 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 document
   specifies the use of CoAP for group communication, including the use
   of UDP/IP multicast as the default underlying data transport.  Both
   unsecured and secured CoAP group communication are specified.
   Security is achieved by use of the Group Object Security for
   Constrained RESTful Environments (Group OSCORE) protocol.  The target
   application area of this specification is any group communication use
   cases that involve resource-constrained devices or networks that
   support CoAP.  This document replaces and obsoletes RFC 7390, while
   it updates RFC 7252 and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-18"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="23" month="December" year="2025"/>
            <abstract>
              <t>   This document defines the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE), providing end-to-end
   security of messages exchanged with the Constrained Application
   Protocol (CoAP) between members of a group, e.g., sent over IP
   multicast.  In particular, the described protocol defines how OSCORE
   is used in a group communication setting to provide source
   authentication for CoAP group requests, sent by a client to multiple
   servers, and for protection of the corresponding CoAP responses.
   Group OSCORE also defines a pairwise mode where each member of the
   group can efficiently derive a symmetric pairwise key with each other
   member of the group for pairwise OSCORE communication.  Group OSCORE
   can be used between endpoints communicating with CoAP or CoAP-
   mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-28"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm-oscore">
          <front>
            <title>Key Management for Group Object Security for Constrained RESTful Environments (Group OSCORE) Using Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="14" month="March" year="2026"/>
            <abstract>
              <t>   This document defines an application profile of the Authentication
   and Authorization for Constrained Environments (ACE) framework, to
   request and provision keying material in group communication
   scenarios that are based on the Constrained Application Protocol
   (CoAP) and are secured with Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  This application profile
   delegates the authentication and authorization of Clients, which join
   an OSCORE group through a Resource Server acting as Group Manager for
   that group.  This application profile leverages protocol-specific
   transport profiles of ACE to achieve communication security, server
   authentication, and proof of possession of a key owned by the Client
   and bound to an OAuth 2.0 access token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-21"/>
        </reference>
        <reference anchor="I-D.ietf-core-href">
          <front>
            <title>Constrained Resource Identifiers</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="21" month="November" year="2025"/>
            <abstract>
              <t>   The Constrained Resource Identifier (CRI) is a complement to the
   Uniform Resource Identifier (URI) that represents the URI components
   in Concise Binary Object Representation (CBOR) rather than as a
   sequence of characters.  This approach simplifies parsing,
   comparison, and reference resolution in environments with severe
   limitations on processing power, code size, and memory size.

   This RFC updates RFC 7595 by adding a column on the "URI Schemes"
   registry.


   // (This "cref" paragraph will be removed by the RFC editor:) After
   // approval of -28 and nit fixes in -29, the present revision -30
   // contains two more small fixes for nits that were uncovered in the
   // RPC intake process.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-30"/>
        </reference>
        <reference anchor="RFC4944">
          <front>
            <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
            <author fullname="G. Montenegro" initials="G." surname="Montenegro"/>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar"/>
            <author fullname="J. Hui" initials="J." surname="Hui"/>
            <author fullname="D. Culler" initials="D." surname="Culler"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet delivery in IEEE 802.15.4 meshes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4944"/>
          <seriesInfo name="DOI" value="10.17487/RFC4944"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC7120">
          <front>
            <title>Early IANA Allocation of Standards Track Code Points</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <date month="January" year="2014"/>
            <abstract>
              <t>This memo describes the process for early allocation of code points by IANA from registries for which "Specification Required", "RFC Required", "IETF Review", or "Standards Action" policies apply. This process can be used to alleviate the problem where code point allocation is needed to facilitate desired or required implementation and deployment experience prior to publication of an RFC, which would normally trigger code point allocation. The procedures in this document are intended to apply only to IETF Stream documents.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="100"/>
          <seriesInfo name="RFC" value="7120"/>
          <seriesInfo name="DOI" value="10.17487/RFC7120"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7595">
          <front>
            <title>Guidelines and Registration Procedures for URI Schemes</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>This document updates the guidelines and recommendations, as well as the IANA registration processes, for the definition of Uniform Resource Identifier (URI) schemes. It obsoletes RFC 4395.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="35"/>
          <seriesInfo name="RFC" value="7595"/>
          <seriesInfo name="DOI" value="10.17487/RFC7595"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients 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. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7967">
          <front>
            <title>Constrained Application Protocol (CoAP) Option for No Server Response</title>
            <author fullname="A. Bhattacharyya" initials="A." surname="Bhattacharyya"/>
            <author fullname="S. Bandyopadhyay" initials="S." surname="Bandyopadhyay"/>
            <author fullname="A. Pal" initials="A." surname="Pal"/>
            <author fullname="T. Bose" initials="T." surname="Bose"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>There can be machine-to-machine (M2M) scenarios where server responses to client requests are redundant. This kind of open-loop exchange (with no response path from the server to the client) may be desired to minimize resource consumption in constrained systems while updating many resources simultaneously or performing high-frequency updates. CoAP already provides Non-confirmable (NON) messages that are not acknowledged by the recipient. However, the request/response semantics still require the server to respond with a status code indicating "the result of the attempt to understand and satisfy the request", per RFC 7252.</t>
              <t>This specification introduces a CoAP option called 'No-Response'. Using this option, the client can explicitly express to the server its disinterest in all responses against the particular request. This option also provides granular control to enable expression of disinterest to a particular response class or a combination of response classes. The server MAY decide to suppress the response by not transmitting it back to the client according to the value of the No-Response option in the request. This option may be effective for both unicast and multicast requests. This document also discusses a few examples of applications that benefit from this option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7967"/>
          <seriesInfo name="DOI" value="10.17487/RFC7967"/>
        </reference>
        <reference anchor="RFC8085">
          <front>
            <title>UDP Usage Guidelines</title>
            <author fullname="L. Eggert" initials="L." surname="Eggert"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="G. Shepherd" initials="G." surname="Shepherd"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms. This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP. Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t>Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic. They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t>Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t>This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="145"/>
          <seriesInfo name="RFC" value="8085"/>
          <seriesInfo name="DOI" value="10.17487/RFC8085"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource. In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable. Several applications using CoAP need to access parts of the resources.</t>
              <t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8132"/>
          <seriesInfo name="DOI" value="10.17487/RFC8132"/>
        </reference>
        <reference anchor="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9203">
          <front>
            <title>The Object Security for Constrained RESTful Environments (OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9203"/>
          <seriesInfo name="DOI" value="10.17487/RFC9203"/>
        </reference>
        <reference anchor="IANA.COSE.Algorithms" target="https://www.iana.org/assignments/cose/cose.xhtml#algorithms">
          <front>
            <title>COSE Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.COSE.Key.Types" target="https://www.iana.org/assignments/cose/cose.xhtml#key-type">
          <front>
            <title>COSE Key Types</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.COSE.Header.Parameters" target="https://www.iana.org/assignments/cose/cose.xhtml#header-parameters">
          <front>
            <title>COSE Header Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.CoAP.Content.Formats" target="https://www.iana.org/assignments/core-parameters/core-parameters.xhtml#content-formats">
          <front>
            <title>CoAP Content-Formats</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.CoAP.Option.Numbers" target="https://www.iana.org/assignments/core-parameters/core-parameters.xhtml#option-numbers">
          <front>
            <title>CoAP Option Numbers</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.Target.Attributes" target="https://www.iana.org/assignments/core-parameters/core-parameters.xhtml#target-attributes">
          <front>
            <title>Target Attributes</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.URI.Schemes" target="https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml#uri-schemes-1">
          <front>
            <title>Uniform Resource Identifier (URI) Schemes</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="2" month="July" year="2026"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for the
   Constrained Application Protocol (CoAP), extending the capabilities
   of CoAP communications for supporting endpoints with long breaks in
   connectivity and/or up-time.  CoAP clients publish on and subscribe
   to a topic via a corresponding topic resource at a CoAP server acting
   as broker.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-21"/>
        </reference>
        <reference anchor="I-D.tiloca-core-oscore-discovery">
          <front>
            <title>Discovery of OSCORE Groups with the CoRE Resource Directory</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         </author>
            <date day="2" month="September" year="2026"/>
            <abstract>
              <t>   Group communication over the Constrained Application Protocol (CoAP)
   can be secured by means of Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  At deployment time, devices
   might not know the exact security groups to join, the respective
   Group Managers responsible for those groups, or other information
   required to perform the joining process.  This document defines how a
   CoAP endpoint can use descriptions and links of resources registered
   at the CoRE Resource Directory to discover security groups and to
   acquire information for joining them through the respective Group
   Managers.  A given security group can be used to protect
   communications in multiple application groups, which are separately
   announced in the Resource Directory as sets of endpoints sharing a
   pool of resources.  This approach is consistent with, but not limited
   to, the joining of security groups based on the Authentication and
   Authorization for Constrained Environments (ACE) framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-discovery-20"/>
        </reference>
        <reference anchor="I-D.ietf-core-coral">
          <front>
            <title>The Constrained RESTful Application Language (CoRAL)</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>ARM</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   The Constrained RESTful Application Language (CoRAL) defines a data
   model and interaction model as well as a compact serialization
   formats for the description of typed connections between resources on
   the Web ("links"), possible operations on such resources ("forms"),
   and simple resource metadata.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coral-06"/>
        </reference>
        <reference anchor="I-D.ietf-core-cacheable-oscore">
          <front>
            <title>End-to-End Protected and Cacheable CoAP Responses using Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   When using the Constrained Application Protocol (CoAP), exchanged
   messages can be protected end-to-end also across untrusted
   intermediary proxies.  This can be achieved with Object Security for
   Constrained RESTful Environments (OSCORE) or, in the case of group
   communication, with Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  However, this sidesteps the proxies'
   abilities to cache responses from the origin server(s).  This
   document restores cacheability of end-to-end protected responses at
   proxies, by using Group OSCORE and introducing consensus requests,
   which any client in an OSCORE group can send to one server or
   multiple servers in the same group.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-cacheable-oscore-02"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>University of Glasgow</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>IN Groupe</organization>
            </author>
            <author fullname="Lijun Liao" initials="L." surname="Liao">
              <organization>NIO Inc.</organization>
            </author>
            <date day="24" month="September" year="2026"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and common certificate
   profiles, and it is extensible.

   Two types of C509 certificates are defined.  One type is an
   invertible CBOR re-encoding of DER-encoded X.509 certificates with
   the signature field copied from the DER encoding.  The other type is
   identical except that the signature is computed over the CBOR
   encoding instead of the DER encoding, thereby avoiding the use of
   ASN.1.  Both types of certificates have the same semantics as X.509
   while providing comparable size reduction.

   This document also specifies CBOR-encoded data structures for
   certification requests and certification request templates, new COSE
   headers, as well as a TLS certificate type and a file format for
   C509.  This document updates RFC 6698 by extending the TLSA selectors
   registry to include C509 certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-21"/>
        </reference>
        <reference anchor="I-D.ietf-core-multicast-notifications-proxy">
          <front>
            <title>Using Proxies for Observe Notifications as CoAP Multicast Responses</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) allows clients to
   "observe" resources at a server and to receive notifications as
   unicast responses upon changes of the resource state.  Instead of
   sending a distinct unicast notification to each different client, a
   server can alternatively send a single notification as a response
   message over multicast, to all the clients observing the same target
   resource.  When doing so, the security protocol Group Object Security
   for Constrained RESTful Environments (Group OSCORE) can be used to
   protect multicast notifications end-to-end between the server and the
   observer clients.  This document describes how multicast
   notifications can be used in network setups that leverage a proxy,
   e.g., in order to accommodate clients that are not able to directly
   listen to multicast traffic.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-multicast-notifications-proxy-02"/>
        </reference>
        <reference anchor="I-D.ietf-ace-group-oscore-profile">
          <front>
            <title>The Group Object Security for Constrained RESTful Environments (Group OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document specifies a profile for the Authentication and
   Authorization for Constrained Environments (ACE) framework.  The
   profile uses Group Object Security for Constrained RESTful
   Environments (Group OSCORE) to provide communication security between
   a client and one or multiple resource servers that are members of an
   OSCORE group.  The profile securely binds an OAuth 2.0 access token
   to the public key of the client associated with the private key used
   by that client in the OSCORE group.  The profile uses Group OSCORE to
   achieve server authentication and proof of possession of the client's
   private key.  Also, it provides proof of the client's membership to
   the OSCORE group by binding the access token to information that
   pertains to the Group OSCORE Security Context, thus allowing the
   resource server(s) to verify the client's membership upon receiving
   the access token.  Effectively, the profile enables fine-grained
   access control paired with secure group communication, in accordance
   with the Zero Trust principles.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-group-oscore-profile-07"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9176">
          <front>
            <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
            <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="M. Koster" initials="M." surname="Koster"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9176"/>
          <seriesInfo name="DOI" value="10.17487/RFC9176"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9953">
          <front>
            <title>DNS over CoAP (DoC)</title>
            <author fullname="M. S. Lenders" initials="M. S." surname="Lenders"/>
            <author fullname="C. Amsüss" initials="C." surname="Amsüss"/>
            <author fullname="C. Gündoğan" initials="C." surname="Gündoğan"/>
            <author fullname="T. C. Schmidt" initials="T. C." surname="Schmidt"/>
            <author fullname="M. Wählisch" initials="M." surname="Wählisch"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>This document defines a protocol for exchanging DNS queries (OPCODE 0) over the Constrained Application Protocol (CoAP). These CoAP messages can be protected by (D)TLS-Secured CoAP or Object Security for Constrained RESTful Environments (OSCORE) to provide encrypted DNS message exchange for constrained devices in the Internet of Things (IoT).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9953"/>
          <seriesInfo name="DOI" value="10.17487/RFC9953"/>
        </reference>
        <reference anchor="MOBICOM99" target="https://people.eecs.berkeley.edu/~culler/cs294-f03/papers/bcast-storm.pdf">
          <front>
            <title>The Broadcast Storm Problem in a Mobile Ad Hoc Network</title>
            <author initials="S." surname="Ni" fullname="Sze-Yao Ni">
              <organization/>
            </author>
            <author initials="Y." surname="Tseng" fullname="Yu-Chee Tseng">
              <organization/>
            </author>
            <author initials="Y." surname="Chen" fullname="Yuh-Shyan Chen">
              <organization/>
            </author>
            <author initials="J." surname="Sheu" fullname="Jang-Ping Sheu">
              <organization/>
            </author>
            <date year="1999" month="August"/>
          </front>
          <seriesInfo name="Proceedings of the 5th annual ACM/IEEE international conference on Mobile computing and networking" value=""/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 1619?>

<section anchor="appendix-different-sources">
      <name>Different Sources for Group Observation Data</name>
      <t>While the clients usually receive the phantom registration request and other information related to the group observation through an informative response (see <xref target="ssec-server-side-informative"/>), the server can also make the same group observation data available through different means, such as those described in <xref target="appendix-different-sources-pubsub"/> and <xref target="appendix-different-sources-introspection"/>.</t>
      <t>In such a case, the server has to first start the group observation (see <xref target="ssec-server-side-request"/>), before making the corresponding data available.</t>
      <t>When distributed through different means than informative responses, the group observation data has to specify the time when the group observation is planned to be canceled by the server. In particular, the server commits to keeping the group observation ongoing until the scheduled cancellation time is reached. Before that time, the server might however retract the advertised group observation data and thus make it not available to new clients.</t>
      <t>After a client has obtained the group observation data from different sources than an informative response, the client can simply set up the right multicast address and start receiving multicast notifications for the group observation. Consequently, the server will not receive an observation request from that client, will not follow-up with a corresponding informative response, and thus its observer counter (see <xref target="sec-server-side"/>) is not incremented to reflect the presence of the new client.</t>
      <section anchor="appendix-different-sources-pubsub">
        <name>Topic Discovery in Publish-Subscribe Settings</name>
        <t>In a Publish-Subscribe scenario (e.g., see <xref target="I-D.ietf-core-coap-pubsub"/>), a group observation can be discovered along with topic metadata.</t>
        <t>To this end, together with the topic metadata, the server has to publish the same information associated with the group observation that would be conveyed in the informative response returned to observer clients (see <xref target="ssec-server-side-informative"/>).</t>
        <t>This information especially includes the phantom observation request associated with the group observation, as well as the addressing information of the server and the addressing information where multicast notifications are sent to.</t>
        <t><xref target="discovery-pub-sub"/> provides an example where a group observation is discovered. The example assumes a CoRAL namespace <xref target="I-D.ietf-core-coral"/> that contains properties analogous to those in the Content-Format "application/informative-response+cbor".</t>
        <t>Note that the information about the transport protocol used for the group observation is not expressed through a dedicated element equivalent to 'tp_id' of the informative response (see <xref target="sssec-transport-specific-encoding"/>). Instead, it is expressed through the scheme and authority components of the two URIs specified as 'tp_info_server' and 'tp_info_client', where the former specifies the addressing information of the server (like 'tpi_server' in <xref target="ssssec-udp-transport-specific"/>), and the latter specifies the addressing information where multicast notifications are sent to (like 'tpi_client' in <xref target="ssssec-udp-transport-specific"/>).</t>
        <figure anchor="discovery-pub-sub">
          <name>Group Observation Discovery in a Pub-Sub Scenario</name>
          <artwork><![CDATA[
Request:

    GET </ps/topics?rt=oic.r.temperature>
    Accept: 65087 (application/coral+cbor)

Response:

    2.05 Content
    Content-Format: 65087 (application/coral+cbor)

    rdf:type [ = <http://example.org/pubsub/topic-list>,
           topic [ = </ps/topics/1234>,
               tp_info_server <coap://[2001:db8::1]>,
               tp_info_client <coap://[ff35:30:2001:db8::123]>,
               tp_info_token "7b"^^xsd::hexBinary,
               ph_req "0160.."^^xsd::hexBinary,
               last_notif "456105.."^^xsd::hexBinary,
               ending "2051251201"^^xsd::unsignedLong,
           ]
    ]
]]></artwork>
        </figure>
        <t>With this information from the topic discovery step, the client can already set up its multicast address and start receiving multicast notifications for the group observation in question.</t>
        <t>In heavily asymmetric networks like municipal notification services, discovery and notifications do not necessarily need to use the same network link. For example, a departure monitor could use its (costly and usually switched off) cellular uplink to discover the topics it needs to update its display to, and then listen on a LoRaWAN interface for receiving the actual multicast notifications.</t>
      </section>
      <section anchor="appendix-different-sources-introspection">
        <name>Introspection at the Multicast Notification Sender</name>
        <t>For network debugging purposes, it can be useful to query a server that sends multicast responses as matching a phantom registration request.</t>
        <t>Such an interface is left for other documents to specify on demand. <xref target="discovery-introspection"/> shows an example of a possible interface, as relying on the already known Token value of intercepted multicast notifications associated with a phantom registration request.</t>
        <figure anchor="discovery-introspection">
          <name>Group Observation Discovery with Server Introspection</name>
          <artwork><![CDATA[
Request:

GET </.well-known/core/mc-sender?token=6464>

Response:

2.05 Content
Content-Format: application/informative-response+cbor

{
  / tp_info /    0 : [
    [/ tpi_server /
     -1,         / scheme-id -- equivalent to "coap" /
     [h'20010db80000000000000000000000ab'  / host-ip /]
    ],
    [/ tpi_client /
     -1,          / scheme-id -- equivalent to "coap" /
     [h'ff35003020010db80000000000000023',  / host-ip /
      61616                                    / port /]
    ],
    h'7b' / tpi_token /
  ],
  / ph_req /     1 : h'0160...528c', / elided for brevity /
  / last_notif / 2 : h'456105...4fa1', / elided for brevity /
  / ending /     4 : 2051251201
}
]]></artwork>
        </figure>
        <t>For example, a network sniffer could offer sending such a request when unknown multicast notifications are seen in the network. Consequently, it can associate those notifications with a URI, or decrypt them if it is a member of the correct OSCORE group.</t>
      </section>
    </section>
    <section anchor="appendix-pseudo-code-counting">
      <name>Pseudo-Code for Rough Counting of Clients</name>
      <t>This appendix provides a description in pseudo-code of the two algorithms used for the rough counting of active observers, as defined in <xref target="sec-rough-counting"/>.</t>
      <t>In particular, <xref target="appendix-pseudo-code-counting-client"/> describes the algorithm for the client side and <xref target="appendix-pseudo-code-counting-client-constrained"/> describes an optimized version for constrained clients. Finally, <xref target="appendix-pseudo-code-counting-server"/> describes the algorithm for the server side.</t>
      <section anchor="appendix-pseudo-code-counting-client">
        <name>Client Side</name>
        <artwork><![CDATA[
input:  int Q, // Value of the FEEDBACK-DIVIDER Option
        int LEISURE_TIME, // DEFAULT_LEISURE from RFC 7252,
                          // unless overridden

output: None


int RAND_MIN = 0;
int RAND_MAX = (2^Q) - 1;
int I = randomInteger(RAND_MIN, RAND_MAX);

if (I == 0) {
    float fraction = randomFloat(0, 1);

    Timer t = new Timer();
    t.setAndStart(fraction * LEISURE_TIME);
    while(!t.isExpired());

    Request req = new Request();
    // Initialize as NON and with maximum
    // No-Response settings, set options ...

    Option opt = new Option(OBSERVE);
    opt.set(0);
    req.setOption(opt);

    opt = new Option(FEEDBACK-DIVIDER);
    opt.set(0);
    req.setOption(opt);

    req.send(SRV_ADDR, SRV_PORT);
}
]]></artwork>
      </section>
      <section anchor="appendix-pseudo-code-counting-client-constrained">
        <name>Client Side (Optimized Version)</name>
        <artwork><![CDATA[
input:  int Q, // Value of the FEEDBACK-DIVIDER Option
        int LEISURE_TIME, // DEFAULT_LEISURE from RFC 7252,
                          // unless overridden

output: None


const unsigned int UINT_BIT = CHAR_BIT * sizeof(unsigned int);

if (respond_to(Q) == true) {
    float fraction = randomFloat(0, 1);

    Timer t = new Timer();
    t.setAndStart(fraction * LEISURE_TIME);
    while(!t.isExpired());

    Request req = new Request();
    // Initialize as NON and with maximum
    // No-Response settings, set options ...

    Option opt = new Option(OBSERVE);
    opt.set(0);
    req.setOption(opt);

    opt = new Option(FEEDBACK-DIVIDER);
    opt.set(0);
    req.setOption(opt);

    req.send(SRV_ADDR, SRV_PORT);
}

bool respond_to(int Q) {
    while (Q >= UINT_BIT) {
        if (rand() != 0) return false;
        Q -= UINT_BIT;
    }
    unsigned int mask = ~((~0u) << Q);
    unsigned int masked = mask & rand();
    return masked == 0;
}
]]></artwork>
      </section>
      <section anchor="appendix-pseudo-code-counting-server">
        <name>Server Side</name>
        <artwork><![CDATA[
input:  int COUNT, // Current observer counter
        int M, // Desired number of confirmations
        int MAX_CONFIRMATION_WAIT,
        Response notification, // Multicast notification to send

output: int NEW_COUNT // Updated observer counter


int D = 4; // Dampener value
int RETRY_NEXT_THRESHOLD = 4;
float CANCEL_THRESHOLD = 0.2;

int N = max(COUNT, 1);
int Q = max(ceil(log2(N / M)), 0);
Option opt = new Option(FEEDBACK-DIVIDER);
opt.set(Q);

notification.setOption(opt);
<Finalize the notification message>
notification.send(GRP_ADDR, GRP_PORT);

Timer t = new Timer();
t.setAndStart(MAX_CONFIRMATION_WAIT); // Time t1
while(!t.isExpired());

// Time t2

int R = <number of requests to the target resource
         received between t1 and t2, and including
         the FEEDBACK-DIVIDER Option with value 0>;

int E = R * (2^Q);

// Determine after how many multicast notifications
// the next count update will be performed
if ((R == 0) || (max(E/N, N/E) > RETRY_NEXT_THRESHOLD)) {
    <Next count update with the next multicast notification>
}
else {
    <Next count update after 10 multicast notifications>
}

// Compute the new count estimate
int COUNT_PRIME = <current value of the observer counter>;
int NEW_COUNT = COUNT_PRIME + ((E - N) / D);

// Determine whether to cancel the group observation
if (NEW_COUNT < CANCEL_THRESHOLD) {
    <Cancel the group observation>;
    return 0;
}

return NEW_COUNT;
]]></artwork>
      </section>
    </section>
    <section anchor="self-managed-oscore-group">
      <name>OSCORE Group Self-Managed by the Server</name>
      <t>For simple settings, where no pre-arranged group with suitable memberships is available, the server can be responsible to set up and manage the OSCORE group used to protect the group observation.</t>
      <t>In such a case, a client would implicitly request to join the OSCORE group when sending the observe registration request to the server. When replying, the server includes the group keying material and related information in the informative response (see <xref target="ssec-server-side-informative"/>).</t>
      <t>In addition to what is defined in <xref target="sec-server-side"/>, the CBOR map in the informative response payload contains the following fields, whose CBOR abbreviations are defined in <xref target="informative-response-params"/>.</t>
      <ul spacing="normal">
        <li>
          <t>'gp_material': this element is a CBOR map, which includes what the client needs in order to set up the Group OSCORE Security Context.  </t>
          <t>
This parameter has as value a subset of the Group_OSCORE_Input_Material object, which is defined in <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> and extends the OSCORE_Input_Material object encoded in CBOR as defined in <xref section="3.2.1" sectionFormat="of" target="RFC9203"/>.  </t>
          <t>
In particular, the following elements of the Group_OSCORE_Input_Material object are included, using the same CBOR abbreviations from the OSCORE Security Context Parameters Registry, as in <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>.  </t>
          <ul spacing="normal">
            <li>
              <t>'ms', 'contexId', 'cred_fmt', 'gp_enc_alg', 'sign_alg', and 'sign_params'. These elements <bcp14>MUST</bcp14> be included.</t>
            </li>
            <li>
              <t>'hkdf' and 'salt'. These elements <bcp14>MAY</bcp14> be included.</t>
            </li>
          </ul>
          <t>
The 'group_senderId' element of the Group_OSCORE_Input_Material object <bcp14>MUST NOT</bcp14> be included.  </t>
          <t>
Note that no information is provided as related to the AEAD Algorithm, or to the Pairwise Key Agreement Algorithm and its parameters. In fact, the clients and the server do not need to use the pairwise mode of Group OSCORE as per <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> and do not need to compute a shared secret in this OSCORE group.  </t>
          <t>
It follows that:  </t>
          <ul spacing="normal">
            <li>
              <t>In the Common Context of the Group OSCORE Security Context, the parameter AEAD Algorithm and the parameter Pairwise Key Agreement Algorithm are not set (see <xref section="2.1.1" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> and <xref section="2.1.10" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
            </li>
            <li>
              <t>Aligned with the previous point, when building the two OSCORE external_aad structures to process messages protected with Group OSCORE in this OSCORE group, (see <xref section="3.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), the elements 'alg_aead' and 'alg_pairwise_key_agreement' within the 'algorithms' arrays are set to the CBOR simple value <tt>null</tt> (0xf6).</t>
            </li>
          </ul>
        </li>
        <li>
          <t>'srv_cred': this element is a CBOR byte string, with value the original byte serialization of the server's authentication credential used in the OSCORE group. In particular, the original byte serialization complies with the format specified by the 'cred_fmt' element of 'gp_material'.</t>
        </li>
        <li>
          <t>'srv_identifier': this element is encoded as a CBOR byte string, with value the Sender ID that the server has in the OSCORE group.</t>
        </li>
        <li>
          <t>'exi': this element has as value the residual lifetime of the keying material of the OSCORE group specified in the 'gp_material' parameter, encoded as a CBOR unsigned integer.  </t>
          <t>
The value represents the residual lifetime of the keying material in seconds, i.e., the number of seconds between the current time at the server and the time when the keying material expires. Upon receiving the informative response containing the 'exi' parameter, a client determines the expiration time of the keying material by adding the number of seconds specified in the 'exi' parameter to its current time.</t>
        </li>
      </ul>
      <t>If the server has a reliable way to synchronize its internal clock with UTC, then the server includes also the following field:</t>
      <ul spacing="normal">
        <li>
          <t>'exp': this element has as value the expiration time of the keying material of the OSCORE group specified in the 'gp_material' parameter, encoded as a CBOR integer or as a CBOR floating-point number.  </t>
          <t>
The value is the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds, analogous to what is specified for NumericDate in <xref section="2" sectionFormat="of" target="RFC7519"/>.</t>
        </li>
      </ul>
      <t>If a client has a reliable way to synchronize its internal clock with UTC and the 'exp' parameter is present in the informative response, then the client <bcp14>MUST</bcp14> use the 'exp' parameter value as expiration time for the group keying material.</t>
      <t>Note that the informative response does not require to include an explicit proof of possession of the server's private key. Although the server is also acting as Group Manager and a proof-of-possession evidence of the Group Manager's private key is included in a full-fledged Join Response (see <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), such proof of possession will be achieved through every multicast notification that the server sends, as protected with the group mode of Group OSCORE and including a signature computed with its private key.</t>
      <t>A client receiving an informative response uses the information above to set up the Group OSCORE Security Context, as described in <xref section="2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>. Note that the client does not obtain a Sender ID of its own, hence it installs the Security Context like a "silent server" would, i.e., without a Sender Context. From then on, the client uses the received keying material to process the incoming multicast notifications from the server.</t>
      <t>Since the server is also acting as the Group Manager, the authentication credential of the server provided in the 'srv_cred' element of the informative response is also used in the 'gm_cred' element of the external_aad structure for encrypting and signing the phantom request and multicast notifications (see <xref section="3.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
      <t>Furthermore, the server complies with the following points.</t>
      <ul spacing="normal">
        <li>
          <t>The server <bcp14>MUST NOT</bcp14> self-manage OSCORE groups and provide the related keying material in the informative response for any other purpose than the protection of the phantom requests and the multicast notifications in group observations that it hosts, according to the method defined in this document.  </t>
          <t>
The server <bcp14>MAY</bcp14> use the same self-managed OSCORE group to protect the phantom request and the multicast notifications of multiple group observations that it hosts.</t>
        </li>
        <li>
          <t>The server <bcp14>MUST NOT</bcp14> provide in the informative response the keying material of other OSCORE groups it is or has been a member of.</t>
        </li>
      </ul>
      <t>Upon expiration of the group keying material as indicated in the informative response by the 'exp' parameter (if present) and the 'exi' parameter:</t>
      <ul spacing="normal">
        <li>
          <t>The server <bcp14>MUST</bcp14> stop using the keying material and <bcp14>MUST</bcp14> cancel the group observations for which that keying material is used (see <xref target="ssec-server-side-cancellation"/> and <xref target="ssec-server-side-cancellation-oscore"/>). If the server creates a new group observation as a replacement or follow-up using the same OSCORE group, then the following applies:  </t>
          <ul spacing="normal">
            <li>
              <t>The server <bcp14>MUST</bcp14> update the OSCORE Master Secret.</t>
            </li>
            <li>
              <t>The server <bcp14>MUST</bcp14> update the ID Context used as Group Identifier (Gid), consistent with <xref section="12.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>.</t>
            </li>
            <li>
              <t>The server <bcp14>MAY</bcp14> update the OSCORE Master Salt.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>The client <bcp14>MUST</bcp14> stop using the keying material and <bcp14>MAY</bcp14> re-register the observation at the server.</t>
        </li>
      </ul>
      <t>Before the keying material has expired, the server can send a multicast response with response code 5.03 (Service Unavailable) to the observing clients, protected with the current keying material. In particular, while it is analogous to the informative response defined in <xref target="ssec-server-side-informative"/>, this response has the following differences:</t>
      <ul spacing="normal">
        <li>
          <t>It additionally contains the parameters mentioned above, for the next group keying material to be used; and</t>
        </li>
        <li>
          <t>It <bcp14>MAY</bcp14> omit the 'tp_info' and 'ph_req' parameters, since the associated information is immutable throughout the observation lifetime.</t>
        </li>
      </ul>
      <t>The response is effectively a reply to the phantom registration request, hence it has the same Token value T of the phantom registration request and it does not include an Observe Option. The server <bcp14>MUST</bcp14> use its own Sender Sequence Number as Partial IV to protect the error response and <bcp14>MUST</bcp14> include the Partial IV in the OSCORE Option value of the response.</t>
      <t>When some clients leave the OSCORE group and forget about the group observation, the server does not have to provide the remaining clients with any stale Sender IDs, as normally required for Group OSCORE (see <xref section="12.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>). In fact, only two entities in the group have a Sender ID, i.e., the server and possibly the Deterministic Client, if the optimization defined in this appendix is combined with the use of phantom requests as Deterministic Requests (see <xref target="deterministic-phantom-Request"/>). In particular, both of them never change their Sender ID during the group lifetime and they both remain part of the group until the group ceases to exist.</t>
      <t>As an alternative to renewing the keying material before it expires, the server can simply cancel the group observation (see <xref target="ssec-server-side-cancellation"/> and <xref target="ssec-server-side-cancellation-oscore"/>), which results in the eventual re-registration of the clients that are still interested in the group observation.</t>
      <t>For applications that require backward security or forward security, it is <bcp14>REQUIRED</bcp14> to use an actual group joining process through a dedicated Group Manager, e.g., the ACE joining procedure defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. The server can facilitate the clients by providing them with information about the OSCORE group to join, as described in <xref target="sec-inf-response"/>.</t>
    </section>
    <section anchor="deterministic-phantom-Request">
      <name>Phantom Request as Deterministic Request</name>
      <t>In some settings, the server can assume that all the approaching clients already have the exact phantom observation request to use, together with the transport-specific information required to listen to corresponding multicast notifications.</t>
      <t>For instance, the clients can be pre-configured with the phantom observation request, or they may be expected to retrieve it through dedicated means (see <xref target="appendix-different-sources"/>). In either case, the server would already have started the group observation, before the associated phantom observation request was disseminated.</t>
      <t>Then, the clients can set up the multicast address and group observation for listening to multicast notifications.</t>
      <t>If Group OSCORE is used to protect the group observation (see <xref target="sec-secured-notifications"/>) and the OSCORE group supports the concept of Deterministic Client <xref target="I-D.ietf-core-cacheable-oscore"/>, then the server and clients in the OSCORE group can also independently produce the protected phantom observation request.</t>
      <t>In such a case, the unprotected version of the phantom observation request can be made available to the clients as a smaller, plain CoAP message. As above, this can be pre-configured on the clients, or they can obtain it through dedicated means (see <xref target="appendix-different-sources"/>). In either case, the clients and the server can independently protect the plain CoAP message by using the approach defined in <xref target="I-D.ietf-core-cacheable-oscore"/>, thus all produce the same protected Deterministic Request. The latter is used as the actual phantom observation request that the protected multicast notifications will match under the group observation in question.</t>
      <t>When receiving the Deterministic Request, the server can clearly understand what is happening. In fact, as the result of an early check, the server recognizes the phantom request among the stored ones. This relies on a byte-by-byte comparison of the incoming message minus the transport-related fields, i.e., by considering only: i) the outer REST code; ii) the outer options; and iii) the ciphertext from the message payload.</t>
      <t>If the server recognizes the received Deterministic Request as one of its self-generated deterministic phantom requests, then the server does not perform any Group OSCORE processing on it. This opens for replying with an unprotected response, although not indicating any OSCORE-related error. In particular, the server replies with an informative response that is not protected.</t>
      <t>Note that the phantom registration request is, in terms of transport-independent information, identical to the same Deterministic Request sent by any client that wishes to take part in the group observation. Thus, if the server receives such a phantom registration request, the informative response may omit the 'ph_req' parameter (see <xref target="ssec-server-side-informative"/>). If a client receives an informative response that includes the 'ph_req' parameter and this specifies transport-independent information different from the one of the sent Deterministic Request, then the client considers the informative response malformed.</t>
      <t>When using a Deterministic Request as a phantom observation request, the observer counter at the server (see <xref target="sec-server-side"/>) is not reliably incremented when new clients start participating in the group observation.</t>
      <t>That is, the clients can simply set up the right multicast address and port number, and then start listening to multicast notifications bound to the Deterministic Request. Hence, the observer counter at the server is not incremented as new clients start listening to multicast notifications.</t>
      <t>Furthermore, the security identity associated with the sender of any Deterministic Request in the OSCORE group is exactly the same one, i.e., the pair (SID, OSCORE ID Context), where SID is the OSCORE Sender ID of the Deterministic Client in the OSCORE group, which clients in the group rely on to produce Deterministic Requests.</t>
      <t>The setting described above requires the server and all the clients interested in taking part in the group observation to support the approach defined in <xref target="I-D.ietf-core-cacheable-oscore"/>. On the other hand, its use allows clients to start from a smaller, unprotected version of the phantom observation request, which does not need to be verified as a request generated by the server. Therefore, in applications where the OSCORE group is configured for the use of Deterministic Requests and observer clients are expected to support the approach defined in <xref target="I-D.ietf-core-cacheable-oscore"/>, servers that start group observations are encouraged to do so by using Deterministic Requests as corresponding phantom observation requests.</t>
      <t>If the optimization defined in <xref target="self-managed-oscore-group"/> is also used, the 'gp_material' element in the informative response from the server also includes the following elements from the Group_OSCORE_Input_Material object:</t>
      <ul spacing="normal">
        <li>
          <t>'alg', as per <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
        </li>
        <li>
          <t>'det_senderId', encoded as a CBOR byte string. This parameter specifies the Sender ID of the Deterministic Client in the OSCORE group.</t>
        </li>
        <li>
          <t>'det_hash_alg', encoded as a CBOR integer or text string. This parameter specifies the hash algorithm used in the OSCORE group to produce Deterministic Requests. This parameter takes values from the "Value" column of the "COSE Algorithms" Registry <xref target="IANA.COSE.Algorithms"/>.</t>
        </li>
      </ul>
      <t>Note that, like in <xref target="self-managed-oscore-group"/>, no information is provided as related to the Pairwise Key Agreement Algorithm and its parameters. In fact, the clients and the server will not need to compute a shared secret in this OSCORE group. It follows that:</t>
      <ul spacing="normal">
        <li>
          <t>In the Common Context of the Group OSCORE Security Context, the parameter Pairwise Key Agreement Algorithm is not set (see <xref section="2.1.10" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
        </li>
        <li>
          <t>Aligned with the previous point, when building the two OSCORE external_aad structures to process messages protected with Group OSCORE in this OSCORE group, (see <xref section="3.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), the element 'alg_pairwise_key_agreement' within the 'algorithms' arrays is set to the CBOR simple value <tt>null</tt> (0xf6).</t>
        </li>
      </ul>
      <t>If a Deterministic Request is used as a phantom observation request for a group observation, the server does not assist clients that are interested in taking part in the group observation but do not support Deterministic Requests. This is consistent with the fact that the setup in question already relies on a lot of agreed pre-configuration.</t>
      <t>Therefore, the following holds when a group observation for a target resource relies on a Deterministic Request as a phantom observation request.</t>
      <ul spacing="normal">
        <li>
          <t>Every client that is interested to take part in such a group observation: has to support Deterministic Requests; and has to know the phantom observation request, as a result of pre-configuration or following its retrieval through dedicated means (see <xref target="appendix-different-sources"/>).</t>
        </li>
        <li>
          <t>The server does not simultaneously run a parallel group observation for the same target resource, as associated with a different phantom observation request and intended to clients that do not support Deterministic Requests.</t>
        </li>
        <li>
          <t>If the server receives an observation request for the target resource that differs from the specific Deterministic Request associated with the group observation for that target resource, then the server replies as usual with an informative response, including: the transport-specific information, the phantom request (i.e., the expected Deterministic Request), and (optionally) the latest notification.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-16-17">
        <name>Version -16 to -17</name>
        <ul spacing="normal">
          <li>
            <t>Fixes in the "Implementation Status" section.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-15-16">
        <name>Version -15 to -16</name>
        <ul spacing="normal">
          <li>
            <t>Defined cri'X' as custom notation.</t>
          </li>
          <li>
            <t>If Group OSCORE is used, group observations are canceled when leaving or re-joining an OSCORE group.</t>
          </li>
          <li>
            <t>Clarifications:  </t>
            <ul spacing="normal">
              <li>
                <t>The 5.03 termination response is a reply to the phantom request.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Fixed examples in CBOR diagnostic notation and of discovery in a pub-sub scenario.</t>
          </li>
          <li>
            <t>Fixes and notation improvement in the example of unsecured message exchange.</t>
          </li>
          <li>
            <t>Fixes in the example of message exchange with Group OSCORE:  </t>
            <ul spacing="normal">
              <li>
                <t>Integer abbreviations of 'join_uri' and 'sec_gp'.</t>
              </li>
              <li>
                <t>Outer response code of the informative responses.</t>
              </li>
              <li>
                <t>The server consumes a Partial IV when producing INIT_NOTIF.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Added "Implementation Status" section.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-14-15">
        <name>Version -14 to -15</name>
        <ul spacing="normal">
          <li>
            <t>Updated semantics of informative response:  </t>
            <ul spacing="normal">
              <li>
                <t>Admit absence of 'tp_info' in particular setups.</t>
              </li>
              <li>
                <t>When using CoAP over UDP, admit the absence of 'tpi_details' in particular setups.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Behavior/considerations related to the maximum age of notifications conveyed in the 'last_notif' parameter of an informative response.</t>
          </li>
          <li>
            <t>The 'last_notif' parameter should be included in the informative response.</t>
          </li>
          <li>
            <t>Clarifications:  </t>
            <ul spacing="normal">
              <li>
                <t>Message processing with Group OSCORE: the phantom registration request is typically protected with the group mode, with the exceptional case of Deterministic Requests.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Fixed CDDL notations of  </t>
            <ul spacing="normal">
              <li>
                <t>Payload of the informative response.</t>
              </li>
              <li>
                <t>'tp_info_coap_udp'.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Added Operational Considerations.</t>
          </li>
          <li>
            <t>Update references.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-13-14">
        <name>Version -13 to -14</name>
        <ul spacing="normal">
          <li>
            <t>Clarified expected roles in the OSCORE group for clients and server.</t>
          </li>
          <li>
            <t>The HKDF Algorithm of Group OSCORE is specified as the corresponding HMAC Algorithm.</t>
          </li>
          <li>
            <t>Generalized semantics of the Multicast-Response-Feedback-Divider Option and renamed it as Feedback-Divider.</t>
          </li>
          <li>
            <t>Clarified pre-conditions and advantages of using deterministic phantom requests.</t>
          </li>
          <li>
            <t>Removed unnecessary normative language.</t>
          </li>
          <li>
            <t>Fixes and simplifications in the example with Group OSCORE.</t>
          </li>
          <li>
            <t>Updated references.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-12-13">
        <name>Version -12 to -13</name>
        <ul spacing="normal">
          <li>
            <t>Content on proxies moved out to the new document draft-ietf-core-multicast-notifications-proxy.</t>
          </li>
          <li>
            <t>Clarified avoidance of link-local addresses.</t>
          </li>
          <li>
            <t>Alignment with the update to the "Uniform Resource Identifier (URI) Schemes" IANA registry made by draft-ietf-core-href-26.</t>
          </li>
          <li>
            <t>Revised value syntax for the 'Transport Information Details' column of the new IANA registry "CoAP Transport Information".</t>
          </li>
          <li>
            <t>Suggested range and value for the registration in the IANA registry "CoAP Option Numbers".</t>
          </li>
          <li>
            <t>Updated references.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-11-12">
        <name>Version -11 to -12</name>
        <ul spacing="normal">
          <li>
            <t>Changed CBOR type of 'ending' and 'exp' to be integer or float.</t>
          </li>
          <li>
            <t>Avoid limiting the informative response to this protocol.</t>
          </li>
          <li>
            <t>Transport identified by (scheme-id, authority) in the CRI of 'tpi_server'.</t>
          </li>
          <li>
            <t>Renamed 'sign_enc_alg' to 'gp_enc_alg', now aligned with draft-ietf-ace-key-groupcomm-oscore.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-10-11">
        <name>Version -10 to -11</name>
        <ul spacing="normal">
          <li>
            <t>Do not rule out original observation requests sent over multicast.</t>
          </li>
          <li>
            <t>Defined 'ending' parameter for the informative response payload.</t>
          </li>
          <li>
            <t>Group observation data available on different sources can be removed.</t>
          </li>
          <li>
            <t>Initial description of a scenario with a reverse-proxy.</t>
          </li>
          <li>
            <t>Minor fixes in examples.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-09-10">
        <name>Version -09 to -10</name>
        <ul spacing="normal">
          <li>
            <t>Fixed section numbers of referred documents.</t>
          </li>
          <li>
            <t>Revised registration policies in the IANA considerations.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-08-09">
        <name>Version -08 to -09</name>
        <ul spacing="normal">
          <li>
            <t>Revised 'tp_info' also to use CRIs for transport information.</t>
          </li>
          <li>
            <t>Section restructuring: impact from proxies on rough counting of clients.</t>
          </li>
          <li>
            <t>Revised and repositioned text on deterministic phantom requests.</t>
          </li>
          <li>
            <t>Fixes in the examples with message exchanges.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-07-08">
        <name>Version -07 to -08</name>
        <ul spacing="normal">
          <li>
            <t>Fixed the CDDL definition 'srv_addr' in 'tp_info'.</t>
          </li>
          <li>
            <t>Early mentioning that 'srv_addr' cannot instruct redirection.</t>
          </li>
          <li>
            <t>The replay protection of multicast notifications is as per Group OSCORE.</t>
          </li>
          <li>
            <t>Consistently use the format uint for the Multicast-Response-Feedback-Divider Option.</t>
          </li>
          <li>
            <t>Fixed consumption of proxy-related options in a ticket request sent to the proxy.</t>
          </li>
          <li>
            <t>Possible use of the option Proxy-Cri or Proxy-Scheme-Number in a ticket request.</t>
          </li>
          <li>
            <t>Explained non-provisioning of some parameters in self-managed OSCORE groups.</t>
          </li>
          <li>
            <t>Use of 'exi' for relative expiration time in self-managed OSCORE groups.</t>
          </li>
          <li>
            <t>Improved notation in the examples of message exchanges with proxy.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-06-07">
        <name>Version -06 to -07</name>
        <ul spacing="normal">
          <li>
            <t>Added more details on proxies that do not support the Multicast-Response-Feedback-Divider Option.</t>
          </li>
          <li>
            <t>Added more details on the reliability of the client rough counting.</t>
          </li>
          <li>
            <t>Added more details on the unreliability of counting new clients, when the phantom request is obtained from other sources or is an OSCORE Deterministic Request.</t>
          </li>
          <li>
            <t>Revised parameter naming.</t>
          </li>
          <li>
            <t>Fixes in IANA considerations.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-05-06">
        <name>Version -05 to -06</name>
        <ul spacing="normal">
          <li>
            <t>Clarified rough counting of clients when a proxy is used</t>
          </li>
          <li>
            <t>IANA considerations: registration of target attribute "gp-obs"</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-04-05">
        <name>Version -04 to -05</name>
        <ul spacing="normal">
          <li>
            <t>If the phantom request is an OSCORE Deterministic Request, there is no parallel group observation for clients that lack support.</t>
          </li>
          <li>
            <t>Clarification on pre-configured clients.</t>
          </li>
          <li>
            <t>Clarified early publication of phantom request.</t>
          </li>
          <li>
            <t>Fixes in IANA considerations.</t>
          </li>
          <li>
            <t>Fixed example with proxy and Group OSCORE.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-03-04">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>
            <t>Added a new section on prerequisites.</t>
          </li>
          <li>
            <t>Added a new section overviewing alternative variants.</t>
          </li>
          <li>
            <t>Consistent renaming of 'cli_addr' to 'cli_host' in 'tp_info'.</t>
          </li>
          <li>
            <t>Added pre-requirements for early retrieval of phantom request.</t>
          </li>
          <li>
            <t>Revised example with early retrieval of phantom request.</t>
          </li>
          <li>
            <t>Clarified use, rationale and example of phantom request as Deterministic Request.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-02-03">
        <name>Version -02 to -03</name>
        <ul spacing="normal">
          <li>
            <t>Distinction between authentication credential and public key.</t>
          </li>
          <li>
            <t>Fixed processing of informative response at the client, when Group OSCORE is used.</t>
          </li>
          <li>
            <t>Discussed scenarios with pre-configured address/port and Token value.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>
            <t>Clarifications on client rough counting and IP multicast scope.</t>
          </li>
          <li>
            <t>The 'ph_req' parameter is optional in the informative response.</t>
          </li>
          <li>
            <t>New parameter 'next_not_before' for the informative response.</t>
          </li>
          <li>
            <t>Optimization when rekeying the self-managed OSCORE group.</t>
          </li>
          <li>
            <t>Security considerations on unsecured multicast notifications.</t>
          </li>
          <li>
            <t>Protection of the ticket request sent to a proxy.</t>
          </li>
          <li>
            <t>RFC8126 terminology in IANA considerations.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Simplified cancellation of the group observation, without using a phantom cancellation request.</t>
          </li>
          <li>
            <t>Aligned parameter semantics with core-oscore-groupcomm and ace-key-groupcomm-oscore.</t>
          </li>
          <li>
            <t>Clarifications about self-managed OSCORE group and use of Deterministic Requests for cacheable OSCORE.</t>
          </li>
          <li>
            <t>New example with a proxy, Group OSCORE and a deterministic phantom request.</t>
          </li>
          <li>
            <t>Fixes in the examples and editorial improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowldegment">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Carsten Bormann"/>, <contact fullname="Klaus Hartke"/>, <contact fullname="Jaime Jiménez"/>, <contact fullname="Adrian Kastrati"/>, <contact fullname="Matthias Kovatsch⁩"/>, <contact fullname="Alexander Pelov"/>, <contact fullname="John Preuß Mattsson"/>, <contact fullname="Jim Schaad"/>, <contact fullname="Ludwig Seitz"/>, and <contact fullname="Göran Selander"/> for their comments and feedback.</t>
      <t>The work on this document has been partly supported by the Sweden's Innovation Agency VINNOVA and the Celtic-Next projects CRITISEC and CYPRESS; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
f7u78d8jvl0K+4oCAA==

-->

</rfc>
