<?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  (Ruby 3.0.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-core-coap-over-gatt-02" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.4 -->
  <front>
    <title>CoAP over GATT (Bluetooth Low Energy Generic Attributes)</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-core-coap-over-gatt-02"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2022" month="July" day="12"/>
    <workgroup>CoRE</workgroup>
    <keyword>CoAP, bluetooth, gatt</keyword>
    <abstract>
      <t>Interaction from computers and cell phones to constrained devices is limited by the different network technologies used,
and by the available APIs.
This document describes a transport for the Constrained Application Protocol (CoAP) that uses Bluetooth GATT (Generic Attribute Profile)
and its use cases.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t>Discussion of this document takes place on the
  CORE Working Group mailing list (core@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/">https://mailarchive.ietf.org/arch/browse/core/</eref>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://gitlab.com/chrysn/coap-over-gatt/-/tree/master">https://gitlab.com/chrysn/coap-over-gatt/</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> can be used with different network and transport technologies,
for example UDP on 6LoWPAN networks.</t>
      <t>Not all those network technologies are available at end user devices in the vicinity of the constrained devices,
which inhibits direct communication and necessitates the use of gateway devices or cloud services.
In particular, 6LoWPAN is not available at all in typical end user devices,
and while 6LoWPAN-over-BLE (IPSP, the Internet Protocol Support Profile of Bluetooth Low Energy (BLE), <xref target="RFC7668"/>) might be compatible from a radio point of view,
many operating systems or platforms lack support for it,
especially in a user-accessible way.</t>
      <t>As a workaround to access constrained CoAP devices from end user devices,
this document describes a way encapsulate generic CoAP exchanges in Bluetooth GATT (Generic Attribute Profile).
This is explicitly not designed as means of communication between two devices in full control of themselves --
those should rather build an IP based network and transport CoAP as originally specified.
It is intended as a means for an application to escape the limitations of its environment,
with a special focus on web applications that use the Web Bluetooth <xref target="webbluetooth"/>.
In that, it is similar to CoAP-over-WebSockets <xref target="RFC8323"/>.
GATT, which has read and write semantics, is not a perfect match for CoAP's request/response semantics;
this specification bridges the gap in order to make CoAP transportable over what is sometimes the only available protocol.</t>
      <section anchor="application-example">
        <name>Application example</name>
        <t>Consider a network of home automation light bulbs and switches,
which internally uses CoAP on a 6LoWPAN network
and whose basic pairing configuration can be done without additional electronic devices.</t>
        <t>Without CoAP-over-GATT,
an application that offers advanced configuration requires the use of a dedicated gateway device
or a router that is equipped and configured to forward between the 6LoWPAN and the local network.
In practice, this is often delivered as a wired gateway device and a custom app.</t>
        <t>With CoAP-over-GATT,
the light bulbs can advertise themselves via BLE,
and the configuration application can run as a web site.
The user navigates to that web site, and it asks permission to contact the light bulbs using Web Bluetooth.
The web application can then exchange CoAP messages directly with the light bulb,
and have it proxy requests to other devices connected in the 6LoWPAN network.</t>
        <t>For browsers that do not support Web Bluetooth,
the same web application can be packaged into an native application
consisting of a proxy process that forwards requests received via CoAP-over-WebSockets on the loopback interface to CoAP-over-GATT,
and a browser view that runs the original web application in a configuration to use WebSockets rather than CoAP-over-GATT.</t>
        <t>That connection is no replacement when remote control of the system is desired
(in which case, again, a router is required that translates 6LoWPAN to the rest of the network),
but suffices for many commissioning tasks.</t>
      </section>
      <section anchor="alternatives">
        <name>Alternatives</name>
        <t>Several approaches were considered, but considered unsuitable for the intended use cases:</t>
        <ul spacing="normal">
          <li>CoAP over 6LoWPAN over BLE:
While this is the natural choice for transporting CoAP over BLE,
it is unavailable on typical end user devices.
There is no clear path toward how that would be integrated in platforms like Android or iOS,
and even if it were, creating a network connection to a nearby device from within an application might not be possible (if how WLAN networks are managed is any indication).</li>
          <li>
            <t>GoldenGate <xref target="goldengate"/>:
This introduces significant network overhead,
and burdens the end user device application with shipping a full network stack
that is executed in a position where it can not integrate fully with the operating system's network stack.  </t>
            <t>
Moreover, this places a retransmission layer on top of a reliable transport (GATT),
duplicating effort and possibly aggravating congestion situations.</t>
          </li>
          <li>
            <t>CoAP over UDP over SLIP over GATT UART <xref target="nefzger"/>:
This is similar to the GoldenGate approach,
but built on the GATT UART provided with Nordic Semiconductor's libraries<!-- https://learn.adafruit.com/introducing-adafruit-ble-bluetooth-low-energy-friend/uart-service -->.  </t>
            <t>
This shares the network stack duplication and retransmission concerns of GoldenGate.</t>
          </li>
          <li>slipmux <xref target="I-D.bormann-t2trg-slipmux"/> over BLE GATT UART service:
This is similar to the previous item;
the stack duplication concern is addressed,
but retransmissions are still active atop of a service that already provides reliability.</li>
        </ul>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
    </section>
    <section anchor="protocol-description">
      <name>Protocol description</name>
      <section anchor="requests-and-responses">
        <name>Requests and responses</name>
        <t>[ This section is not thought through or implemented yet,
and could probably end up very different. ]</t>
        <t>CoAP-over-GATT uses individual GATT Characteristics to model a reliable request-response mechanism.
Therefore, it has no message types or message IDs (in which it resembles CoAP-over-TCP <xref target="RFC8323"/>),
and no tokens.
In the place of tokens,
different Bluetooth characteristics (comparable to open ports in IP based networks) can be used.
All messages use GATT to ensure reliable transmission.</t>
        <t>A GATT server announces service of UUID 8df804b7-3300-496d-9dfa-f8fb40a236bc (abbreviated US in this document),
with one or more characteristics of UUID 2a58fc3f-3c62-4ecc-8167-d66d4d9410c2 (abbreviated UC).</t>
        <t>[ Right now, this only supports requests from the GATT client to the GATT server; role reversal might be added later. ]</t>
        <t>A client can start a CoAP request by writing to the UC characteristic
a sequence composed of a single code byte, any options encoded in the option format of <xref target="RFC7252"/> Section 3.1,
optionally followed by a payload marker and the request payload.</t>
        <t>After the successful write,
the client can read the response back from the server on the same characteristic.
The client may need to attempt reading the characteristic several times
until the response is ready,
and may subscribe to indications to get notifiied when the response is ready.</t>
        <t>The server does needs to keep the response readable after it has been read,
for the server can not know whether the read was completed by the client.</t>
        <t>If the request and initial response establish an observation,
the client may keep reading;
the server may keep the latest notification available indefinitely (especially if it turns out that "has been read successfully" is hard to determine)
or make it readable only once for each new state.</t>
        <t>Once the client writes a new request to a UC characteristic,
any later reads pertain to that request,
and any observation previously established is cancelled implicitly.</t>
        <t>Attribute values are limited to 512 Bytes (<xref target="bluetooth52"/> Part F Section 3.2.9),
practically limiting blockwise operation (<xref target="RFC7959"/>) to size exponents to 4 (resulting in a block size of 256 byte).
Even smaller messages might enhance the transfer efficiency
when they avoid fragmentation at the L2CAP level.</t>
        <t>If a server provides multiple OC typed characteristics,
parallel requests or observations are possible;
otherwise, this transport is limited to a single pending request.</t>
        <section anchor="development-directions">
          <name>Development directions</name>
          <t>Three major concerns may need addressing in future iterations of this protocol:</t>
          <ul spacing="normal">
            <li>
              <t>Role reversal.  </t>
              <t>
This may be implemented by adding a GATT server to the central,
or by multiplexing requests and responses onto a single read and write channel.</t>
            </li>
            <li>
              <t>Response reliability.  </t>
              <t>
When multiple responses are sent to a request
(e.g. when using <xref target="I-D.tiloca-core-groupcomm-proxy"/>, or more generally <xref target="I-D.bormann-core-responses"/>)
of which all need to be delivered,
or if role reversal is implemented by multiplexing,
the GATT server needs to know when a message has been read;
the GATT mechanisms do not provide that information.  </t>
              <t>
Previously, this was not deemed relevant, as for the original non-traditional responses,
observation notifications <xref target="RFC7641"/>,
only eventual consistency is relevant.  </t>
              <t>
One option is to replace reads with write-with-response operations,
and to introduce a flag that marks previously read messages as received.
This is essentially building a 1-bit message ID mechanism.
(No longer IDs are necessary, because messages on GATT are not reordered on the network).</t>
            </li>
            <li>
              <t>Fragmentation.
If the current approach of requiring devices to support large MTU sizes turns out to be impractical,
or if GATT level fragmentation vastly outperforms CoAP fragmentation,
it may be necessary to use composite reads and writes on GATT.  </t>
              <t>
Care has to be taken to use only operations supported by <xref target="webbluetooth"/>: that API does not expose reads with offsets.  </t>
              <t>
Offset based fragmentation may also be incompatible with the write-with-response approach suggested for reliability.</t>
            </li>
            <li>
              <t>Concurrent requests.
If a multiplexing approach is chosen for role reversal,
the current setup of multiple characteristics for multiple requests may become obsolete.  </t>
              <t>
A possible solution is to re-introduce tokens,
in a message format similar to that of CoAP-over-WebSockets <xref target="RFC8323"/>.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="addresses">
        <name>Addresses</name>
        <t>The URI scheme associated with CoAP over GATT is "coap+gatt".
The default value of Uri-Host is the MAC address of the CoAP server,
in hexadecimal encoding, with the dash character ("-") separating the bytes.
[ Some bikeshedding is expected on these details. ]</t>
        <t>User information and port are always absent with this scheme.</t>
        <t>Assembling the URI of a request for the discovery resource of a BLE device with the MAC address 00:11:22:33:44:55 would thus be assembled, under the rules of <xref section="6.4" sectionFormat="of" target="RFC7252"/>, to <tt>coap+gatt://00-11-22-33-44-55/.well-known/core</tt>.</t>
        <t>Locally defined host or service name registries may be used to create names
that are more suitable for human interaction.
For DNS, which is widely used for this purpose,
no record types are registered that map to Bluetooth MAC addresses at the time of writing.</t>
        <t>Note that on some platforms (e.g. Web Bluetooth <xref target="webbluetooth"/>),
the peer's or the own address may not be known application.
They may come up with an application-internal registered name component
(e. g. <tt>coap+gatt://id-SomeInternalIdentifier/.well-known/core</tt>),
but must be aware that those can not be expressed towards anything outside the local stack --
the same way they would avoid using IPv6 zone identifiers or URIs whose host name is <tt>localhost</tt>.</t>
        <section anchor="scheme-free-alternative">
          <name>Scheme-free alternative</name>
          <t>As an alternative to the abovementioned scheme,
a zone in .arpa could be registered to use addresses like</t>
          <artwork><![CDATA[
coap://001122334455.ble.arpa/.well-known/core
]]></artwork>
          <t>where the .ble.arpa address do not resolve to any IP addresses.</t>
          <t>[ Accepting this will require a .arpa registering IANA consideration to replace the URI one. ]</t>
        </section>
        <section anchor="use-with-persistent-addresses">
          <name>Use with persistent addresses</name>
          <t>When services are meant to provide long-lived and universally usable URIs,
addresses based on MAC addresses can be impractical,
because they fluctuate on hardware changes.
(Moreover, privacy mechanisms on the device or the platform can render them unusable even before hardware changes).</t>
          <t>In the absence of a usable host or service name registry,
implementers may opt for non-GATT addresses right away.
<xref target="I-D.ietf-core-transport-indication"/> provides the means to advertise a different canonical address,
and to announce availability of that advertised service on the present transport, CoAP-over-GATT.
If the device is not generally reachable,
the canonical address might also be unreachable (see <xref target="I-D.ietf-core-transport-indication"/> section "Unreachable canonical origin address").</t>
          <t>When long-lived addresses circumvent privacy preserving measures,
considerations concering the tracking of devices [ are TBD along the lines of "don't make it discoverable to unauthorized sources, and in case of doubt let the peer show its credentials first" ].</t>
        </section>
      </section>
      <section anchor="compression-and-reinterpretation-of-non-coap-characteristics">
        <name>Compression and reinterpretation of non-CoAP characteristics</name>
        <t>The use of SCHC is being evaluated in combination with CoAP-over-GATT;
the device can use the characteristic UUID to announce the static context used.</t>
        <t>Together with non-traditional response forms (<xref target="I-D.bormann-core-responses"/>
and contexts that expand, say, a numeric value 0x1234 to a message like</t>
        <t><tt>
2.05 Content
Response-For: GET /temperature
Content-Format: application/senml+cbor
Payload (in JSON-ish equivalent):
[
    {1 /* unit */: "K", 2 /* value */: 0x1234}
]
</tt></t>
        <t>This enables a different use case than dealing with limited environments:
Accessing BLE devices via CoAP without application specific gateways.
Any required information about the application can be expressed in the SCHC context.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA considerations</name>
      <section anchor="uniform-resource-identifier-uri-schemes">
        <name>Uniform Resource Identifier (URI) Schemes</name>
        <t>IANA is asked to enter a new scheme into the "Uniform Resource Identifier (URI) Schemes" registry set up in <xref target="RFC7595"/>:</t>
        <ul spacing="normal">
          <li>URI Scheme: "coap+gatt"</li>
          <li>Description: CoAP over Bluetooth GATT (sharing the footnote of coap+tcp)</li>
          <li>Well-Known URI Support: yes, analogous to <xref target="RFC7252"/></li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>All data received over GATT is considered untrusted;
secure communication can be achieved using OSCORE <xref target="RFC8613"/>.</t>
      <t>Physical proximity can not be inferred from this means of communication.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc7595">
          <front>
            <title>Guidelines and Registration Procedures for URI Schemes</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler">
              <organization/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization/>
            </author>
            <author fullname="T. Hardie" initials="T." surname="Hardie">
              <organization/>
            </author>
            <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7668" target="https://www.rfc-editor.org/info/rfc7668">
          <front>
            <title>IPv6 over BLUETOOTH(R) Low Energy</title>
            <author fullname="J. Nieminen" initials="J." surname="Nieminen">
              <organization/>
            </author>
            <author fullname="T. Savolainen" initials="T." surname="Savolainen">
              <organization/>
            </author>
            <author fullname="M. Isomaki" initials="M." surname="Isomaki">
              <organization/>
            </author>
            <author fullname="B. Patil" initials="B." surname="Patil">
              <organization/>
            </author>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="C. Gomez" initials="C." surname="Gomez">
              <organization/>
            </author>
            <date month="October" year="2015"/>
            <abstract>
              <t>Bluetooth Smart is the brand name for the Bluetooth low energy feature in the Bluetooth specification defined by the Bluetooth Special Interest Group.  The standard Bluetooth radio has been widely implemented and available in mobile phones, notebook computers, audio headsets, and many other devices.  The low-power version of Bluetooth is a specification that enables the use of this air interface with devices such as sensors, smart meters, appliances, etc.  The low-power variant of Bluetooth has been standardized since revision 4.0 of the Bluetooth specifications, although version 4.1 or newer is required for IPv6.  This document describes how IPv6 is transported over Bluetooth low energy using IPv6 over Low-power Wireless Personal Area Network (6LoWPAN) techniques.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7668"/>
          <seriesInfo name="DOI" value="10.17487/RFC7668"/>
        </reference>
        <reference anchor="webbluetooth" target="https://webbluetoothcg.github.io/web-bluetooth/">
          <front>
            <title>Web Bluetooth</title>
            <author initials="R." surname="Grant">
              <organization/>
            </author>
            <author initials="O." surname="Ruiz-Henríquez">
              <organization/>
            </author>
            <date year="2020" month="February" day="24"/>
          </front>
        </reference>
        <reference anchor="goldengate" target="https://fitbit.github.io/golden-gate/">
          <front>
            <title>Golden Gate</title>
            <author initials="" surname="Fitbit, Inc">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="nefzger" target="https://www.maibornwolff.de/en/blog/talk-coap-me-iot-over-bluetooth-low-energy">
          <front>
            <title>Talk CoAP to me – IoT over Bluetooth Low Energy</title>
            <author initials="" surname="Matthias Nefzger">
              <organization/>
            </author>
            <date year="2021" month="March" day="01"/>
          </front>
        </reference>
        <reference anchor="RFC8323" target="https://www.rfc-editor.org/info/rfc8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="S. Lemay" initials="S." surname="Lemay">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan">
              <organization/>
            </author>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor">
              <organization/>
            </author>
            <date month="February" year="2018"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP.  The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports.  It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson">
              <organization/>
            </author>
            <author fullname="F. Palombini" initials="F." surname="Palombini">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <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="RFC7959" target="https://www.rfc-editor.org/info/rfc7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby">
              <organization/>
            </author>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks.  Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates.  In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS).  These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs.  In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers.  Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations.  Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="bluetooth52" target="https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=478726">
          <front>
            <title>Bluetooth Core Specification v5.2</title>
            <author>
              <organization/>
            </author>
            <date year="2019" month="December" day="31"/>
          </front>
        </reference>
        <reference anchor="I-D.bormann-t2trg-slipmux" target="https://www.ietf.org/archive/id/draft-bormann-t2trg-slipmux-03.txt">
          <front>
            <title>Slipmux: Using an UART interface for diagnostics, configuration, and packet transfer</title>
            <author fullname="Carsten Bormann">
              <organization>Universitaet Bremen TZI</organization>
            </author>
            <author fullname="Tobias Kaupat">
              <organization>Lobaro UG</organization>
            </author>
            <date day="4" month="November" year="2019"/>
            <abstract>
              <t>   Many research and maker platforms for Internet of Things
   experimentation offer a serial interface.  This is often used for
   programming, diagnostic output, as well as a crude command interface
   ("AT interface").  Alternatively, it is often used with SLIP
   (RFC1055) to transfer IP packets only.

   The present report describes how to use a single serial interface for
   diagnostics, configuration commands and state readback, as well as
   packet transfer.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-slipmux-03"/>
        </reference>
        <reference anchor="I-D.tiloca-core-groupcomm-proxy" target="https://www.ietf.org/archive/id/draft-tiloca-core-groupcomm-proxy-06.txt">
          <front>
            <title>Proxy Operations for CoAP Group Communication</title>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Esko Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <abstract>
              <t>   This document specifies the operations performed by a proxy, when
   using the Constrained Application Protocol (CoAP) in group
   communication scenarios.  Such a proxy processes a single request
   sent by a client over unicast, and distributes the request over IP
   multicast to a group of servers.  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-tiloca-core-groupcomm-proxy-06"/>
        </reference>
        <reference anchor="I-D.bormann-core-responses" target="https://www.ietf.org/archive/id/draft-bormann-core-responses-01.txt">
          <front>
            <title>CoAP: Non-traditional response forms</title>
            <author fullname="Carsten Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Christian Amsüss">
	 </author>
            <date day="3" month="February" year="2022"/>
            <abstract>
              <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.  These descriptions 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>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-core-responses-01"/>
        </reference>
        <reference anchor="RFC7641" target="https://www.rfc-editor.org/info/rfc7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <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-transport-indication" target="https://www.ietf.org/archive/id/draft-ietf-core-transport-indication-01.txt">
          <front>
            <title>CoAP Protocol Indication</title>
            <author fullname="Christian Amsüss">
	 </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP, [RFC7252]) is available
   over different transports (UDP, DTLS, TCP, TLS, WebSockets), but
   lacks a way to unify these addresses.  This document provides
   terminology and provisions based on Web Linking [RFC8288] to express
   alternative transports available to a device, and to optimize
   exchanges using these.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-transport-indication-01"/>
        </reference>
      </references>
    </references>
    <section anchor="change-log">
      <name>Change log</name>
      <t>Since -01:</t>
      <ul spacing="normal">
        <li>Point out (possibly conflicting) development directions.</li>
        <li>Describe URI scheme more completely, including persistent addresses.</li>
        <li>Aim for standards track.</li>
        <li>Describe rejeced alternative approaches.</li>
      </ul>
      <t>Since -00:</t>
      <ul spacing="normal">
        <li>Add note on SCHC possibilities.</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
5CLj4/8PT7P73846AAA=

-->

</rfc>
