<?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.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-core-coap-over-gatt-05" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title>CoAP over GATT (Bluetooth Low Energy Generic Attributes)</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-core-coap-over-gatt-05"/>
    <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="2023" month="October" day="23"/>
    <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 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://gitlab.com/chrysn/coap-over-gatt"/>.</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>
            <t>CoAP over 6LoWPAN over BLE (BLE IPSP):
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).  </t>
            <t>
[ TBD: Illustrate how easy IPSP is when only working link-local like CoAP-over-GATT does,
see also <eref target="https://gitlab.com/chrysn/coap-over-gatt/-/issues/10">https://gitlab.com/chrysn/coap-over-gatt/-/issues/10</eref>. ]</t>
          </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 partially 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 some reliability.</li>
        </ul>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
    </section>
    <section anchor="protocol-description">
      <name>Protocol description</name>
      <section anchor="gatt-basics">
        <name>Boundary conditions: GATT properties</name>
        <t>[ This section may be shortened in later iterations,
but is kept around while the protocol is being developed
to easily fix mistakes made from wrong assumptions. ]</t>
        <t>CoAP-over-GATT has different properties than UDP transported over the Internet:</t>
        <ul spacing="normal">
          <li>
            <t>Messages sent by one party are received by the other party in the order in which they are sent.
There is no re-ordering.  </t>
            <t>
(There is also a total order on messages sent by any party,
but that property is not useful because it's often not accessible through the Bluetooth stacks.)</t>
          </li>
          <li>
            <t>There is limited reliabiliy built into the protocol.  </t>
            <t>
Data transmissions initiated by the data source can be
unreliable ("write without response", "notify")
or reliable ("write with response", "indicate").  </t>
            <t>
The caveat with their relability is that acknowledgements are sent by the BLE stack,
without consulting with the application.
(This is not only done for simplicity but also for power efficiency:
There is only a short time window in which the data source is listening for confirmations).
Thus, these confirmations can not serve to acknowledge that the a CoAP request contained in the event was read, understood and is being processed.  </t>
            <t>
The reliability mechanisms are still useful, though:
Both "write" and "notify"/"indicate" update the GATT characteristic's state,
and while a slow application may miss data when sent in fast succession,
it is reasonable to expect from the BLE stack to deliver the last data to the application
when no more data is sent.</t>
          </li>
          <li>
            <t>Reads and writes may be subtly confused:
When a characteristic is written to,
and it is read before the BLE server application has had time to interact with its BLE stack,
the written value may be echoed back at read time.  </t>
            <t>
This is likely not problematic when "notify"/"indicate" is used
instead of polling reads,
but it seems prudent to take precautions.</t>
          </li>
        </ul>
      </section>
      <section anchor="requests-and-responses">
        <name>Requests and responses</name>
        <t>CoAP-over-GATT uses a GATT Characteristics to transport requst and response messages.
Similar CoAP-over-UDP it offers both reliable and unreliable transfer and message deduplication,
but as GATT's properties (see <xref target="gatt-basics"/>) differ from UDP's,
it uses a different serialization and a different kind of message IDs.</t>
        <t>Tokens are used like with other CoAP transports,
and allow keeping multiple requests active at the same time.</t>
        <t>A GATT server announces service of UUID 8df804b7-3300-496d-9dfa-f8fb40a236bc (abbreviated US in this document),
with one or more pairs of characteristics of UUID 8bf52767-5625-43ca-a678-70883a366866 (the downstream characteristic, abbreviated UCD)
and ab3720c8-7fc0-41f8-aa2a-9a45c2c01a4b (the upstream characteristic, abbreviated UCU)
through BLE advertisements from a BLE peripheral (typically a constrained device),
which are discovered by a BLE central (typically an end user device).
The server and client roles of CoAP and GATT are independent of each other:
either BLE participant can send requests in a CoAP client role.</t>
        <t>It is expected that as this document matures,
shorter (16 or 32 bit) identifiers will be requested and assigned.
[ See also <eref target="https://gitlab.com/chrysn/coap-over-gatt/-/issues/7">https://gitlab.com/chrysn/coap-over-gatt/-/issues/7</eref>. ]</t>
        <section anchor="message-sub-layer">
          <name>Message sub-layer</name>
          <t>At the UCU/UCD pair of CoAP-over-GATT characteristics, each party maintains a single bit Message ID (initialized at 1 when a connection is created),
and the last Message ID sent by the peer (initialized at 0 when a connection is created).</t>
          <t>Messages are serialized as GATT values.
The GATT client sends a message by writing it to UCD (reliably using the "write with response" or unreliably using "write without response" operation);
the GATT server sends them reliably using an "indicate" or unreliably "notify" event on UCU.
The serialization format is the same for all, and illustrated in <xref target="fig-message"/>:</t>
          <figure anchor="fig-message">
            <name>Components of a message</name>
            <artwork><![CDATA[
0   1   2   3   4       8       16      varying
+---+---+---+---+-------+-------+-------+---------+----+---------+
| R | M | C | A |  TKL  |  Code | Token | Options | ff | Payload |
+---+---+---+---+-------+-------+-------+---------+----+---------+
]]></artwork>
          </figure>
          <ul spacing="normal">
            <li>a single message description byte,
compose of 4 bits R (reserved), M (Message ID), C (Confirm) and A (Acknowledge ID),
followed by 4 bits of token length (TKL).</li>
            <li>
              <t>Code, token, options, payload marker and payload as in <xref target="RFC7252"/>.  </t>
              <t>
Unlike there, there is no 16-bit Message ID field
(a similar role is taken by bits M and A),
and in empty messages,
the code is not sent.</t>
            </li>
          </ul>
          <t>The bits are set as follows:</t>
          <ul spacing="normal">
            <li>The R bit is reserved for future extensions;
it MUST be written as 0,
and writes with values of 1 MUST be ignored.</li>
            <li>The Message ID bit is always set to the current Message ID of the sender.</li>
            <li>The Confirm bit is set if the sender asks the peer to acknowledge that the message has been noted.</li>
            <li>The Acknowledge ID is always set to the peer's last sent Message ID that had the Confirm bit set.</li>
          </ul>
          <t>When receiving a message with the C bit set,
the recipient MUST eventually send a response message with radio reliability.</t>
        </section>
        <section anchor="using-the-message-sub-layer">
          <name>Using the message sub-layer</name>
          <t>[ This section reflects ongoing experimentation with the above serialization format and rules.
Senders may use other patterns as long as they do not stall their peer by not sending any messages after the Confirm bit was set. ]</t>
          <t>To send a message unreliably in terms of CoAP transmission,
a sender sets its latest Message ID in the M bit, sets C to 0, and populates the remaining bits per the rules above.
It then sends the message unreliably on the radio
(it may be sent reliably, especially when the peer set the C bit before).
After a CoAP-unreliable message, the sender may send more CoAP-unreliable messages.
It should avoid sending multiple messages in the same connection event
(because the peer's BLE stack would be likely to not pass on the earlier message).</t>
          <t>To send a message reliably in terms of CoAP transmission,
a sender sets its latest Message ID in the M bit, sets C to 1, and populates the remaining bits per the rules above.
It then sends the message reliably on the radio
(it may send unreliably if a message is expected from the peer soon, but then needs to be prepared to send the same message again).
After sending that message,
the sender does not send any other message until a message is received with A equal to the sent message's M bit.
The sender may need to send the very same message again if no earlier transmission of the message happened reliably.
[ Do we need to give timing guidance here? Probably not, because it only happens if there is some expectation in the first place. ]
The sender may cancel the transmission by sending an empty message with the same M and C bits,
or by sending different message with these bits (which are then all unreliable transmissions).</t>
          <t>When receiving a message with the C bit set,
it is up to the recipient when to send the radio-reliable message.
If it is expected that a radio-reliable message will be sent soon,
it is permissible and useful to send unrelated unreliable messages that already account for the set C bit in their A bit.</t>
        </section>
        <section anchor="message-deduplication">
          <name>Message deduplication</name>
          <t>CoAP-over-GATT participants MUST ignore a message arriving at a characteristic
if it is identical to the one received previously in the same connection.
(The first message is never ignored).</t>
          <t>Note that it is not possible to send two identical consecutive messages unreliably.
When sending identical requests, the sender may vary the token.
Sending identical responses generally is rarely significant, even with the generalized <xref target="I-D.bormann-core-responses"/>,
because the mechanism to make responses "non-matching" in that document's terminology typically incurs variation.
When it does not, but the repetition is still significant, sending the messages reliably becomes necessary.</t>
        </section>
        <section anchor="requests-and-responses-1">
          <name>Requests and responses</name>
          <t>CoAP requests and responses are built on the message sub-layer
as they are in <xref target="RFC7252"/>:
requests are sent with a token chosen by the CoAP client,
and the CoAP server sends a response with the same token.</t>
          <t>Responses and message-layer acknowledgments can happen in the same message.
Unlike in <xref target="RFC7252"/>, there is no association between a request and its message ID:
Any message may serve as an acknowledgement;
it is always only the token that matches requests to responses.</t>
        </section>
        <section anchor="fragmentation">
          <name>Fragmentation</name>
          <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. [ TBD: Verify: ]</t>
        </section>
        <section anchor="multiple-characteristics">
          <name>Multiple characteristics</name>
          <t>If a server provides multiple UCU and UCD typed characteristics,
they form pairs in the sequence in which they are listed.
By using them in parallel,
multiple messages can be sent without waiting for individual confirmation.
This is similar to using RFC7252 with NSTART &gt; 1,
and may be used by the GATT client if the GATT server lists multiple pairs of UCU/UCD characteristics.
The GATT server can send messages only through UCU characteristics on which the GATT client enabled "indicate" or "notify";
if the GATT client does not support multiple characteristics,
it will just pick any and only enable them on that one.</t>
          <t>Each characteristic has its independent message ID bits.
All characteristics of a service share a single token space,
and responses need not necessarily be sent on the characteristic the request was sent on.</t>
          <t>The use of muliple characteristics is primarily practical
when large amounts of data are to be transferred.
These transfers can utilize much of BLE's bandwidth
because they make it easy to send much data within a single BLE connection event.</t>
        </section>
        <section anchor="communication-example">
          <name>Communication example</name>
          <t>The example illustrated in <xref target="fig-communication"/>
shows an observation request
with reliable and unreliable responses.
It chooses the most typical configuration
where the GATT server is also the BLE peripheral
(and thus sends avertisements).
The GATT client is also the CoAP client here.</t>
          <figure anchor="fig-communication">
            <name>Example message flow</name>
            <artwork><![CDATA[
    GATT server                          GATT client

  Send BLE advertisement with one UCU and one UCD ---------->

(Pairing in Just-Works mode and discovery not illustrated)

  <----- Write+Resp. M=1 C=1 A=0 T="01" GET /temp, Observe: 0

(The server sends temperature values unreliably for some time)

  Notify M=1 C=0 A=1 T="01" 2.05 Content, Obs: 1, "22°C" --->

  Notify M=1 C=0 A=1 T="01" 2.05 Content, Obs: 2, "21°C" --->

  <----- Write+Resp. M=0 C=1 A=0 T="02" GET /model

  Indicate M=1 C=1 A=0 T="02" 2.05 Content, "ExampleScan" -->

  <----- Write+Resp. M=0 C=0 A=1 empty

  Notify M=0 C=0 A=0 T="01" 2.05 Content, Obs: 3, "20°C" --->

(At this point, the temperature isn't changing for some time,
and the server sends a reliable notification)

  Indicate M=0 C=1 A=0 T="01" 2.05 Content, Obs: 4, "20°C" ->

  <----- Write+Resp. M=0 C=0 A=0 empty
]]></artwork>
          </figure>
        </section>
        <section anchor="development-directions">
          <name>Development directions</name>
          <ul spacing="normal">
            <li>
              <t>Is there any good reason to allow read operations?  </t>
              <t>
A GATT client that is waiting for a Confirm bit to be acknowledged might attempt a Read
(for the case that the confirmation arrived in an unreliable message),
but might just as well perform the last write again.  </t>
              <t>
Reading would be more efficient (because it can happen without application intervention, and no data is sent),
but the added complexity might not be worth the enhancements.</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>Usability from WebBluetooth  </t>
              <t>
WebBluetooth clients may be unaware that two protocol instances
are running between the client and the server at the same time,
without any indication on the BLE side.  </t>
              <t>
Is there anything this protocol can do to help the clients discover
(or even resolve) the situation?  </t>
              <t>
See also <eref target="https://gitlab.com/chrysn/coap-over-gatt/-/issues/9">https://gitlab.com/chrysn/coap-over-gatt/-/issues/9</eref>.</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, followed by <tt>.ble.arpa</tt>.
<cref anchor="arpa-alt">The use of <tt>.ble.alt</tt> as defined in <xref target="RFC9476"/> was considered instead of <tt>.ble.arpa</tt>, but rejected for lack of management of its subdomains. Language from the <tt>.alt</tt> specification may be used when it comes to describing how this is not disturbing DNS operations.</cref></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://001122334455.ble.arpa/.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>
        <t>The interactions of different CoAP transports' schemes
is discussed at length in <xref target="I-D.ietf-core-transport-indication"/>.
There is currently no intention
to provide any DNS records for the <tt>.ble.arpa</tt> domain
that would enable the use of <tt>coap://001122334455.ble.arpa/</tt> addresses.
Local mechanisms may still enable their use.</t>
        <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>
        <artwork><![CDATA[
2.05 Content
Response-For: GET /temperature
Content-Format: application/senml+cbor
Payload (in JSON-ish equivalent):
[
    {1 /* unit */: "K", 2 /* value */: 0x1234}
]
]]></artwork>
        <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 anchor="additional-use-of-advertisements">
        <name>Additional use of advertisements</name>
        <t>In the current specification,
advertisements are used to indicate that CoAP-over-GATT is being used.</t>
        <t>If Service Data is transported in the advertisement,
it contains an identifier of the device in the <tt>ble-sd.arpa</tt> zone,
such that the lower case hexadecimal representation of the Service Data value is prepended to <tt>.ble-sd.arpa</tt>
to form a name for the device.
There is no expectation for these names to be globally unique:
considerations for beacon lengths may require them to be as short as 2 bytes.
They are local alias names,
comparable to <tt>hostname.local</tt>,
that help applications filter devices
rather than establishing a connection with several devices
just to find the intended one.</t>
        <t>The use of Service Data names has two upsides compared to filtering by MAC address:</t>
        <ul spacing="normal">
          <li>Service Data identifiers can be stable across changes in hardware.</li>
          <li>Service Data identifiers can be queried even on platforms
on which MAC addresses are not accessible,
such as on Web Bluetooth.</li>
        </ul>
        <t>Two more uses of them are being considered:</t>
        <ul spacing="normal">
          <li>
            <t>Some resource metadata might already be transported in advertisements.  </t>
            <t>
These would need to be compact (in the order of magnitude of 10 bytes or less),
and could contain data otherwise only discovered by querying the .well-known/core resource,
or (hashes of) AS and audience values for ACE
to facilitate connection creation with a device known by its managed identity.  </t>
            <t>
[ This is largely superseded by Service Data identifiers:
The level of per deployment customization for what would and would not be hashed
is likely so large that there would not be any interoperability exceeding plain identifiers anyway. ]</t>
          </li>
          <li>
            <t>Advertisements could contain broadcast CoAP messages.  </t>
            <t>
Given that these non-traditional responses can not have embedded requests (as defined in <xref target="I-D.bormann-core-responses"/>) due to size contraints,
a mechanism such as <xref target="I-D.ietf-core-observe-multicast-notifications"/> could be used to distribute some consensus request.</t>
          </li>
        </ul>
      </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 anchor="blearpa-ble-sdarpa">
        <name>ble.arpa, ble-sd.arpa</name>
        <t>IANA is asked to create two new reserved domain names in the .arpa name space as described in <xref target="rfc6761"/>:
the suffixes <tt>.ble.arpa</tt> and <tt>.ble-sd.arpa</tt>.</t>
        <t>The expectation for Application Software are
that no DNS resolution is attempted;
instead, the hexadecimal prefix is processed into a binary address
(6 bytes for <tt>.ble.arpa</tt>, arbitrary lengths for <tt>.ble-sd.arpa</tt>),
and any operation on that address is pointed to the Bluetooth Low Energy device
with the indicated MAC address or Service Data, respectively.</t>
      </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">
          <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="rfc6761">
          <front>
            <title>Special-Use Domain Names</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes what it means to say that a Domain Name (DNS name) is reserved for special use, when reserving such a name is appropriate, and the procedure for doing so. It establishes an IANA registry for such domain names, and seeds it with entries for some of the already established special domain names.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6761"/>
          <seriesInfo name="DOI" value="10.17487/RFC6761"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7668">
          <front>
            <title>IPv6 over BLUETOOTH(R) Low Energy</title>
            <author fullname="J. Nieminen" initials="J." surname="Nieminen"/>
            <author fullname="T. Savolainen" initials="T." surname="Savolainen"/>
            <author fullname="M. Isomaki" initials="M." surname="Isomaki"/>
            <author fullname="B. Patil" initials="B." surname="Patil"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <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">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <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">
          <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="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <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">
          <front>
            <title>Slipmux: Using an UART interface for diagnostics, configuration, and packet transfer</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universitaet Bremen TZI</organization>
            </author>
            <author fullname="Tobias Kaupat" initials="T." surname="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.bormann-core-responses">
          <front>
            <title>CoAP: Non-traditional response forms</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="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="RFC9476">
          <front>
            <title>The .alt Special-Use Top-Level Domain</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document reserves a Top-Level Domain (TLD) label "alt" to be used in non-DNS contexts. It also provides advice and guidance to developers creating alternative namespaces.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9476"/>
          <seriesInfo name="DOI" value="10.17487/RFC9476"/>
        </reference>
        <reference anchor="I-D.ietf-core-transport-indication">
          <front>
            <title>CoAP Protocol Indication</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="13" month="March" year="2023"/>
            <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-02"/>
        </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="23" month="October" year="2023"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) allows clients to
   "observe" resources at a server, and 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 a 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
   a same resource on a same shared Token value.  Besides, this document
   defines how 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-07"/>
        </reference>
      </references>
    </references>
    <section anchor="change-log">
      <name>Change log</name>
      <t>Since -04:</t>
      <ul spacing="normal">
        <li>Point out .arpa / .alt considerations.</li>
      </ul>
      <t>Since -03:</t>
      <ul spacing="normal">
        <li>Define semantics of service data field, define ble-sd.arpa for that purpose.</li>
        <li>Switch to .arpa names for MAC addresses for consistency with service data names.</li>
        <li>
          <t>Use one characteristic per data direction. This  </t>
          <ul spacing="normal">
            <li>simplifies implementations on platforms with little control over change
events,</li>
            <li>removes the necessity to process the R bit, and</li>
            <li>frees up that bit in messages.</li>
          </ul>
        </li>
        <li>Add communication example.</li>
        <li>Reference more open issues, including intention to get shorter IDs.</li>
      </ul>
      <t>Since -02:</t>
      <ul spacing="normal">
        <li>Message format extended by a leading byte, the option to have a token.
This enables role reversal and concurrent requests.</li>
        <li>The UC identifier was changed to reflect the incompatible change in protocol.</li>
        <li>A section on used BLE properties was added.</li>
        <li>A section providing outlook on other data for advertisements was added.</li>
      </ul>
      <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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
TfF4+2gAAA==

-->

</rfc>
