<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-responses-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>CoAP: Non-traditional response forms</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-responses-00"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2026" month="January" day="12"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 44?>

<t>In CoAP as defined by RFC 7252, responses are always unicast back to a
client that posed a request.  The present memo describes two forms of
responses that go beyond that model.</t>
      <t>The design spaces for the new CoAP Options proposed to represent these
responses are now sufficiently understood that they can be developed
to standards-track specifications, either in this document or by
transferring the specification for an Option to a document that that
Option closely works with.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-responses/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Constrained RESTful Environments (CoRE) Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/core-responses"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="intro">
      <name>Introduction</name>
      <t>In CoAP as defined by RFC 7252, responses are always unicast back to a
client that posed a request.  A server may want to send a response to
a request that it did not receive, may want to multicast a response,
or both.</t>
      <t>The descriptions in this specification are not intended as advocacy
for adopting these approaches immediately, they are provided to point
out potential avenues for development that would have to be carefully
evaluated.</t>
      <section anchor="terms">
        <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 <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>The term "byte" is used in its now customary sense as a synonym for
"octet".</t>
        <t>Terms used in this draft:</t>
        <dl>
          <dt>Non-traditional response:</dt>
          <dd>
            <t>A response that is not the single response generated for a request received
on the same transport.</t>
          </dd>
          <dt>Non-matching response:</dt>
          <dd>
            <t>A response that has properties
(typically options) that make it incompatible with the original request,
and thus in particular unsuitable as a cached response to that request (but
possibly suitable to populate the cache for a similar request).
Options that make a response non-matching need to be proxy unsafe.
</t>
            <t>For example,
a Block2 response with a different value of block number <contact fullname="×"/> block size than indicated in the request is non-matching.</t>
          </dd>
          <dt>Configured request:</dt>
          <dd>
            <t>A request that reaches the server in another way than by
transmitting a usual CoAP request on the same communication channel
a response is expected on.</t>
          </dd>
          <dt>Embedded request:</dt>
          <dd>
            <t>A request that is provided by the server to the recipient of its
response by embedding it into the response.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sending-non-traditional-responses">
      <name>Sending non-traditional responses</name>
      <t>Non-traditional responses are sets of responses produced for a single request,
or responses sent without a transmitted request.</t>
      <t>Where tokens are involved,
all non-traditional responses use the request's token;
in any case, they are bound to the original request
(e.g. by using the same request_kid/request_piv pair in OSCORE <xref target="RFC8613"/>).
Where message IDs are involved,
one of the non-traditional responses (the first sent, not necessarily the first received as generally the network might reorder messages)
can be sent as a piggybacked response in an ACK (thus sharing the request's message ID);
the others are CON or NON responses.</t>
      <t>Some established responses
(observations defined in <xref target="RFC7641"/>,
and responses to multicast requests in <xref target="I-D.ietf-core-groupcomm-bis"/>)
match this definition and already follow the guidance set out here for non-traditional responses;
<xref target="extensions-explained"/> gives details for them.</t>
      <t>A second response differing from the first that can be sent by a non-deduplicating server
responding to a retransmission of a request
is not non-traditional because there is a second request --
that is probably the last corner case at the line separating traditional from non-traditional responses.</t>
      <section anchor="preconditions-to-sending-non-traditional-responses">
        <name>Preconditions to sending non-traditional responses</name>
        <t>A server may send multiple responses to a request if there is any
property in the request that indicates the client's intention to receive
them. This is typically indicated by a request option,
and rarely in external properties of the message
(in the multicast case, the destination address).</t>
        <t>A mechanism for eliciting multiple responses must specify the conditions
under which a token gets freed, as the traditional arrival of the
response is insufficient. It may also specify for which requests the
token can be reused immediately in follow-up requests. On unordered
transports, or when it's a client's follow-up request and not a response
that terminates the token, the client needs to wait with reuse until no reordered
non-traditional responses can be expected anymore.</t>
        <t>If a non-traditional response answers the original request, no further
action is required (this is the case of observation: ordering is added
on top of that to ensure that only the latest response is used). If
the response does not answer the original request,
it must be non-matching,
either by an option introduced with the eliciting option
or by a generic option like Response-For.</t>
      </section>
      <section anchor="responses-without-request">
        <name>Responses without request</name>
        <t>Endpoints may agree out of band on a token (or other request-matching
details). One way to do that is to agree on a "phantom request", which
is a request that the client might have sent and the server assumes to have received,
without it actually being sent between those
endpoints.</t>
        <t>As tokens are managed by the client, that request needs to be
generated by the client, or in close collaboration with the client (for
example by the client allowing a third party to use a subset of its
token values in order to set up non-traditional responses).</t>
      </section>
    </section>
    <section anchor="oscore-processing-for-non-traditional-responses">
      <name>OSCORE processing for non-traditional responses</name>
      <t>OSCORE <xref target="RFC8613"/> is built with the general assumption that requests
are processed into exactly one response.
The specification contains explicit provisions for Observe requests (<xref section="4.1.3.5" sectionFormat="of" target="RFC8613"/>),
and a whole protocol extension for multicast requests (<xref target="I-D.ietf-core-oscore-groupcomm"/>).</t>
      <t>OSCORE's binding between requests and responses remains unmodified:
Each response is cryptographically bound to an OSCORE request.
Therefore, any phantom request needs to be an OSCORE request as well,
and the parties need to agree on the sender and sequence number of the phantom request.
An easy way to do that securely is to deliver the phantom request in a
way that the server can do the full OSCORE request processing on it.
The server may process the OSCORE request into internal data structures at reception time,
or may process it whenever a response is to be sent.
In the latter case, it may need to relax the requirements of Section <xref target="RFC8613" section="8.2" sectionFormat="bare">Verifying the Request</xref> of <xref target="RFC8613"/> item 3.</t>
      <t>To avoid reinventing the same rules as for Observe requests for any other non-traditional response,
this document defines a set of processing instructions which can be referenced when specifying their options.
These rules generalize Sections <xref target="RFC8613" section="8.3" sectionFormat="bare">Protecting the Response</xref> and <xref target="RFC8613" section="8.4" sectionFormat="bare">Verifying the Response</xref> of <xref target="RFC8613"/>:</t>
      <ul spacing="normal">
        <li>
          <t>In 8.3 step 3, "use the AEAD nonce from the request" is only an option once,
i.e., after the sequence number expressed in that request was removed from the replay window.
This option is usually taken in the first response,
necessitating the use of encoded Sender Sequence Numbers in later responses.
(Non-traditional responses such as Observe that indicate the order
of responses by a sequence number
may require that the request's nonce is used either in the first response or not at all.)
<cref anchor="maybealwaysfirst">CA: We could also just mandate the "either the first or never" behavior. It is unclear why one would delay sending the one response that has the least overhead, but that may be lack of imagination. An approach where instances can not generally be duplicated and are used at most once (as in an affine type system) can make this doable in a safe way. In the end it's a tradeoff between implementer flexibility and specification simplicity.</cref>  </t>
          <t><!-- Conveniently, this is obsoleting some text that's rotting away in lwig-oscore. -->
          </t>
          <t>
As a convenient effect, this generalized rule also implies
that when a server performs Appendix <xref target="RFC8613" section="B.1.2" sectionFormat="bare">Replay Window</xref> of <xref target="RFC8613"/>,
it needs to use its own Partial IV for the nonce
(which without this generalized rule necessitated a "<bcp14>MUST</bcp14>" statement in the appendix).</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>
          <t>In 8.4 between steps 5 and 6,
the Sender Sequence Number of the response establishes an order in the received messages,
which users of non-traditional responses may rely on.
If an option specified that only the first response may use the request's nonce,
then the one response that uses it is ordered before all other responses to the same request.</t>
        </li>
      </ul>
      <!-- Unlike the other items which all correspond to the "Supporting Observe" sub-items of 8.3/8.4, this corresponds to 7.4.1. -->
<ul spacing="normal">
        <li>
          <t>If the handling of multiple responses is not idempotent,
then at 8.4 step 5:  </t>
          <ul spacing="normal">
            <li>
              <t>For responses that use a Sender Sequence Number from the server,
the client consults the replay window before decryption,
and removes its number from the replay window after successful decryption.</t>
            </li>
            <li>
              <t>For responses that use the request's Sender Sequence Number,
duplication is tracked for each request.</t>
            </li>
          </ul>
          <t>
As a simplification,
applications that only process the latest response
may track the latest sequence number for deduplication.</t>
        </li>
        <li>
          <t>In 8.4 step 8, the Option establishing the non-traditional responses may specify
that error conditions processing a response are not fatal for the whole request.
This should be done when an Option allows immediate follow-up requests.
This is the case for the Observe option:
When an observation is refreshed, a response encrypted with the earlier request's request_kid may still be in flight.
That in-flight response will fail decryption,
but responses generated after the server has received the refresh will be decryptable again.</t>
        </li>
      </ul>
    </section>
    <section anchor="response-with-embedded-request">
      <name>Response with embedded request</name>
      <t>A server can send a response to a request that it did not actually
receive by embedding the request which the response answers in the
response.</t>
      <t>The option "Response-For" contains a request packaged as in <xref section="5.3" sectionFormat="of" target="RFC8613"/>.  The response is then intended to serve as a
response to this request.</t>
      <table anchor="response-for-option">
        <name>The Response-For Option</name>
        <thead>
          <tr>
            <th align="right">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="right">Length</th>
            <th align="left">Default</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD</td>
            <td align="left">C</td>
            <td align="left">-</td>
            <td align="left">-</td>
            <td align="left">-</td>
            <td align="left">Response-For</td>
            <td align="left">opaque</td>
            <td align="right">0-1023</td>
            <td align="left">(none)</td>
          </tr>
        </tbody>
      </table>
      <t>The CoAP Token becomes meaningless for this form of response;
responses with embedded requests are therefore sent with a
zero-length Token.  (In essence, the "Response-For" option takes the
place of the request the Token usually stands for.)</t>
      <t>Note that block-wise transfer is not available for CoAP Options,
possibly limiting the size of the request that can be stored in a
"Response-For" Option.</t>
      <t>The congestion control considerations for confirmable and
non-confirmable messages apply unchanged.</t>
    </section>
    <section anchor="response-for-configured-request">
      <name>Response for configured request</name>
      <t>A request may reach the server using a different means than that used
for the response.  For instance, the request may be configured in the server.
Without limiting generality, we speak about <em>configured requests</em>.</t>
      <t>The client <bcp14>MUST</bcp14> be cognizant of that configuration as the request uses
a token from the token name space it controls.</t>
      <section anchor="examples-for-configured-requests">
        <name>Examples for configured requests</name>
        <section anchor="example-periodic-request">
          <name>Example: Periodic request</name>
          <t>A server may be configured to act on a configured request every day at 12:00.</t>
        </section>
        <section anchor="example-event-driven-request">
          <name>Example: Event driven request</name>
          <t>A server may be configured to act on a configured request each time it reboots.</t>
        </section>
        <section anchor="example-configured-observe">
          <name>Example: Configured observe</name>
          <t>A server may be configured with a GET request from a client that
includes an Observe option with value 0.  This means that the server
will send updates to the state of the resource addressed by the GET
request to the configured address of the client.</t>
          <t>The considerations of <xref section="4.5" sectionFormat="of" target="RFC7641"/> apply.  How losing
interest reflects back into the configuration and whether there is some
form of error notification to the source of the configuration is out
of scope of the present specification.</t>
        </section>
      </section>
      <section anchor="multicast-responses">
        <name>Multicast responses</name>
        <t>A server <bcp14>MAY</bcp14> send a response to a multicast address.
(This needs to be a response to a configured request as a normal
request cannot be sent <em>from</em> a multicast address.)</t>
        <t>Note that, as the originator of a multicast response is a unicast
address, the relaxation of matching rules described in <xref section="8.2" sectionFormat="of" target="RFC7252"/> does not apply.</t>
        <t>The token space in CoAP is owned by the client, which is identified by
a transport endpoint (address/port).  Here, the address is a multicast
address, so the token name space is shared by all nodes joined to that multicast
address.  The assumption for multicast responses is that, for each
multicast group, there is some form of management for the token space
(and the port number) that everyone can participate in that needs to
join that multicast group; the specific form of management is out of
the scope of this specification.  Note that this means that multicast
responses <bcp14>MUST NOT</bcp14> be sent to unmanaged multicast addresses such as
All CoAP Nodes (<xref section="12.8" sectionFormat="of" target="RFC7252"/>).</t>
        <t>Multicast responses are always non-confirmable.  The congestion
control considerations for non-confirmable multicast messages apply
unchanged.</t>
        <t>The draft <xref target="I-D.ietf-core-observe-multicast-notifications"/> provides a concrete way of communicating such a setup.</t>
      </section>
      <section anchor="respond-to-option">
        <name>Respond-To option</name>
        <t>What has been called "configured request" here may also be triggered
by a usual CoAP request that carries the Respond-To option.
(The term "configured request" is still appropriate as the server
ought to be configured to accept this option; see <xref target="seccons"/>.)</t>
        <t>If a single client wants to request a server to send the response to a
specific multicast address, it can include the "Respond-To" option.
This contains an opaque string with the port number as a 16-bit number
(in network byte order), followed by the IP address (4-byte IPv4 or
16-byte IPv6).</t>
        <table anchor="tbl-respond-to-option">
          <name>The Respond-To Option</name>
          <thead>
            <tr>
              <th align="right">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="right">Length</th>
              <th align="left">Default</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD</td>
              <td align="left">C</td>
              <td align="left">U</td>
              <td align="left">-</td>
              <td align="left">-</td>
              <td align="left">Respond-To</td>
              <td align="left">opaque</td>
              <td align="right">6-18</td>
              <td align="left">(none)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="leisure-for-responses-option">
        <name>Leisure-For-Responses Option</name>
        <t>This new option indicates a number expressed as a uint.
It allows the server to send that number of non-traditional response messages in
addition to the requested response. They are to be sent without undue delay
after the original response.</t>
        <table anchor="tbl-leisure-for-responses-option">
          <name>The Leisure-For-Responses Option</name>
          <thead>
            <tr>
              <th align="right">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="right">Length</th>
              <th align="left">Default</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD</td>
              <td align="left"> </td>
              <td align="left">U</td>
              <td align="left">-</td>
              <td align="left"> </td>
              <td align="left">Leisure-For-Responses</td>
              <td align="left">uint</td>
              <td align="right">1-4</td>
              <td align="left">0</td>
            </tr>
          </tbody>
        </table>
        <t>The option is elective, but unsafe for proxies
(as the option would otherwise cause multiple responses to a proxy that expects only one and that needs to be a matching response).
A proxy that chooses not to implement it may forward the request
with the Leisure-For-Responses option removed.</t>
        <t>On its own, the option does not indicate which kind of additional responses the client
would expect (though further elective proxy-safe no-cache-key options
can be added on top of that to give better guidance), and the server may
choose not to send any at all.</t>
        <t>Intermediaries may add or remove the option, and use incoming responses to
populate their cache. They may serve additional responses from their
cache, but in most cases the sensible course of action is to forward the
additional responses the origin server sends.</t>
        <t>Use cases for Leisure-For-Responses include sending further blocks in a
Block2 transfer (which are obviously non-matching and thus don't need a
Response-For), or serving follow-up documents (a response containing a
single link can be followed by a representation of the linked resource,
which needs a Request-For header that indicates the URI).
<!-- or just provide
the ETag of a freshly created resource (which would have a Request-For
option for a GET with the given path and an ETag, and be a 2.03 Valid
response). / but that probably already works as there is the concept of a "tagged representation" -->
        </t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This draft adds the following option numbers to the CoAP Option
Numbers registry of
<xref target="RFC7252"/>:</t>
      <table anchor="tab-option-registry">
        <name>CoAP Option Numbers</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">TBD</td>
            <td align="left">Response-For</td>
            <td align="left">RFCthis</td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">Respond-To</td>
            <td align="left">RFCthis</td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">Leisure-For-Responses</td>
            <td align="left">RFCthis</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="seccons">
      <name>Security Considerations</name>
      <t>TBD</t>
      <t>(Clearly, multicast responses pose a potential for amplification, in
particular if unverified sources can cause them via Respond-To.
Discuss how to mitigate.)</t>
      <t>A Respond-To option can be used to incite a server to send data to a
third party.  This ought not be done blindly, i.e., only with
considered application assent.</t>
      <t>The CoAP request/response mechanism allows the client to ascertain a
level of authentication (not resistant though to on-path attackers
unless the communication is protected) and freshness of the response:
The Token echoed in the response shows that the responder had
knowledge of the (fresh) request (<xref section="5.3.1" sectionFormat="of" target="RFC7252"/>).
Responses with embedded requests can not be authenticated or checked
for freshness this way.  Their content therefore is less trustworthy
than normal responses unless authenticated in another way (e.g., via
<xref target="RFC8613"/>).</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
            <front>
              <title>Key words for use in RFCs to Indicate Requirement Levels</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="March" year="1997"/>
              <abstract>
                <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
          </reference>
          <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
            <front>
              <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
              <author fullname="B. Leiba" initials="B." surname="Leiba"/>
              <date month="May" year="2017"/>
              <abstract>
                <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
          </reference>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="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-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="25" month="September" year="2025"/>
            <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-15"/>
        </reference>
        <reference anchor="I-D.ietf-core-observe-multicast-notifications">
          <front>
            <title>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="20" month="October" year="2025"/>
            <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.  In some use
   cases, such as 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 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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-observe-multicast-notifications-13"/>
        </reference>
        <reference anchor="I-D.ietf-core-groupcomm-proxy">
          <front>
            <title>Proxy Operations for CoAP Group Communication</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="3" month="September" year="2025"/>
            <abstract>
              <t>   This document defines a specific realization of proxy intended for
   scenarios that use group communication for the Constrained
   Application Protocol (CoAP).  Such a proxy processes a single request
   sent by a client typically over unicast and distributes the request
   to a group of servers, e.g., over UDP/IP multicast as the defined
   default transport protocol.  Then, the proxy collects the individual
   responses from those servers and relays those responses back to the
   client, in a way that allows the client to distinguish the responses
   and their origin servers through embedded addressing information.
   This document updates RFC7252 with respect to caching of response
   messages at proxies.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-proxy-05"/>
        </reference>
      </references>
    </references>
    <?line 436?>

<section anchor="extensions-explained">
      <name>CoAP extensions explained by non-traditional responses</name>
      <section anchor="observation">
        <name>Observation</name>
        <t>This section describes the Observe option <xref target="RFC7641"/> in the terms of this
document.
It does not intend to update the original specification,
merely to provide an alternative phrasing of its rules
which may be useful for implementors,
and which the authors believe to have the same effect.</t>
        <t>When Observe:0 is present in a request, this sets up non-traditional
responses until either of the following conditions is met:</t>
        <ul spacing="normal">
          <li>
            <t>A follow-up request on the same token carries an Observe:1 option.  </t>
            <t>
(This is primarily in here because; Observe:1 and No-Response:any
could be combined; otherwise, the other conditions suffice).</t>
          </li>
          <li>
            <t>Any response does not carry an Observe option.</t>
          </li>
          <li>
            <t>Any response has a non-successful status.</t>
          </li>
        </ul>
        <t>Follow-up requests are limited to extending the request ETag set.
Responses are obviously non-matching by their Observe option; each hop
discards the Observe option for the purpose of caching and refreshes its
cache with the most recent one as per the Observe value.</t>
      </section>
      <section anchor="responses-to-multicast-requests">
        <name>Responses to multicast requests</name>
        <t>As with observe, this just phrases the existing mechanism in the context
of this generalization.</t>
        <t>When the destination address of a CoAP request is a multicast address,
that token is valid for any member of that group (which, for the purpose
of the client, is any server at all) on any port.</t>
        <t>(Except for that the implications of having received a multicast request
still need to be followed, it might be seen as a template for creating a
phantom request to any endpoint, if that suits the reader's mental
model.)</t>
        <t>Responses can only be sent for up to the deployment's Leisure time
(see <xref section="8.2" sectionFormat="of" target="RFC7252"/>) plus
the application's timeout (in proxy situations, this needs to be
communicated explicitly in the Multicast-Timeout option of
<xref target="I-D.ietf-core-groupcomm-proxy"/>).</t>
      </section>
      <section anchor="triangular-responses-response-to">
        <name>Triangular responses (Response-To)</name>
        <t>The Response-To option can be viewed as a shorthand notation for
"Consider this a No-Response:any request, but take a copy of it, make it
into a CoAP-over-UDP request with that particular address as a source
and any address of yours as a response, and treat that as a phantom
request".</t>
        <t>[ It may make sense to add an explicit return token, and include a
No-Response option; that might allow it to be used even across proxies. ]</t>
      </section>
      <section anchor="other-current-documents">
        <name>Other current documents</name>
        <t><xref target="I-D.ietf-core-observe-multicast-notifications"/> is a
straightforward application of the phantom requests (the concept was
developed there); Leisure-For-Responses could help it around the topic
of joining a multicast group securely through a proxy.</t>
        <t><xref target="I-D.ietf-core-groupcomm-proxy"/> seems to fit well with the concepts
here as well, and might be simplified by it both in terminology and by
replacing Response-Forwarding with Response-For(Proxy-Scheme, Uri-Host).</t>
      </section>
    </section>
    <section numbered="false" anchor="list-of-tables">
      <name>List of Tables</name>
      <dl spacing="compact" indent="11">
        <dt><xref target="response-for-option"/>:</dt>
        <dd>
          <t><xref format="title" target="response-for-option"/></t>
        </dd>
        <dt><xref target="tbl-respond-to-option"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-respond-to-option"/></t>
        </dd>
        <dt><xref target="tbl-leisure-for-responses-option"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-leisure-for-responses-option"/></t>
        </dd>
        <dt><xref target="tab-option-registry"/>:</dt>
        <dd>
          <t><xref format="title" target="tab-option-registry"/></t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD</t>
      <!--  LocalWords:  CBOR extensibility IANA uint sint IEEE endian
 -->
<!--  LocalWords:  signedness endianness
 -->

</section>
  </back>
  <!-- ##markdown-source:
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
HlYAAA==

-->

</rfc>
