RFC 9159

IPv6 Mesh over BLUETOOTH(R) Low Energy Using the Internet Protocol Support Profile (IPSP)

๐Ÿ“… published December 2021, from ietf

IPv6 Mesh over BLUETOOTH(R) Low Energy Using the Internet Protocol Support Profile (IPSP) ๐Ÿ’–

  • RFC: 9159 ๐Ÿ“œ
  • Authors: C. Gomez, S.M. Darroudi, and M. Spoerk (C. Gomez and S.M. Darroudi are from Universitat Politecnica de Catalunya, M. Spoerk is from Graz University of Technology), and T. Savolainen (Unaffiliated) ๐Ÿซถ
  • Category: Standards Track ๐ŸŽ€
  • ISSN: 2070-1721
  • Date: December 2021 ๐Ÿ“
  • Obsoletes / Updates: the title block doesn't list anything this one obsoletes or updates โœจ

Abstract โœจ

okay so bestie, RFC 7668 explains how to squeeze IPv6 over 6LoWPAN techniques into Bluetooth Low Energy (Bluetooth LE) networks that use the star topology ๐ŸŒŸ. BUT newer Bluetooth specs also let you build extended topologies, which is so iconic ๐Ÿ”ฅ. This doc lays out the mechanisms you need to get an IPv6 mesh running over Bluetooth LE links that are set up with the Bluetooth Internet Protocol Support Profile (IPSP) ๐Ÿ’…. It does NOT specify which routing protocol you should use in that mesh, so that's a separate question ๐Ÿ™ˆ.

Status of This Memo ๐Ÿ’œ

This is an Internet Standards Track document ๐ŸŽ€.

This document is a product of the Internet Engineering Task Force (IETF) ๐ŸŒˆ. It represents the consensus of the IETF community, it got public review, and the Internet Engineering Steering Group (IESG) approved it for publication ๐Ÿ‘‘. If you want more info on Internet Standards, check out Section 2 of RFC 7841 ๐Ÿ“–.

For the current status of this document, any errata, and how to send feedback on it, go to https://www.rfc-editor.org/info/rfc9159 ๐Ÿฆ‹.

Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved ๐Ÿ’–.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info), as they're in effect on the date this document was published. Please actually read these, bestie, because they spell out your rights and restrictions for this document ๐Ÿ™. Code Components pulled out of this document must include Revised BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as described in the Revised BSD License โš–๏ธ.

Table of Contents ๐Ÿงš

   1.  Introduction
     1.1.  Terminology and Requirements Language
   2.  Bluetooth LE Networks and the IPSP
   3.  Specification of IPv6 Mesh over Bluetooth LE Links
     3.1.  Protocol Stack
     3.2.  Subnet Model
     3.3.  Link Model
       3.3.1.  Stateless Address Autoconfiguration
       3.3.2.  Neighbor Discovery
       3.3.3.  Header Compression
       3.3.4.  Unicast and Multicast Mapping
   4.  IANA Considerations
   5.  Security Considerations
   6.  References
     6.1.  Normative References
     6.2.  Informative References
   Appendix A.  Bluetooth LE Connection Establishment Example
   Appendix B.  Node-Joining Procedure
   Acknowledgements
   Contributors
   Authors' Addresses

1. Introduction ๐ŸŒŸ

okay so Bluetooth Low Energy (also called Bluetooth LE) first showed up in the Bluetooth 4.0 spec ๐Ÿ’™. It's a low-power wireless tech built for short-range control and monitoring, and it's been marketed as Bluetooth Smart ๐Ÿฆ‹. It's already everywhere in consumer electronics, like smartphones and wearables ๐Ÿ“ฑ. Since it's SO promising for the Internet of Things, the Bluetooth Special Interest Group (Bluetooth SIG) and the IETF both made specs to get IPv6 running over Bluetooth LE: the Internet Protocol Support Profile (IPSP) [IPSP] from the SIG, and RFC 7668 [RFC7668] from the IETF ๐ŸŽ€. Bluetooth 4.0 only supports Bluetooth LE networks in the star topology, so RFC 7668 [RFC7668] was built and tuned specifically for that layout ๐Ÿ’…. BUT the stuff in RFC 7668 [RFC7668] isn't enough, and it would fail to give you an IPv6 mesh over Bluetooth LE links ๐Ÿ˜ญ. This document fills that gap by specifying the mechanisms needed for an IPv6 mesh over Bluetooth LE links ๐Ÿซถ. It still doesn't specify the routing protocol for that mesh, just like I said before โœจ.

1.1. Terminology and Requirements Language ๐Ÿ“š

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here ๐Ÿ”ฅ.

The terms "6LoWPAN Node" (6LN), "6LoWPAN Router" (6LR), and "6LoWPAN Border Router" (6LBR) are defined as in [RFC6775] ๐Ÿงš, with one addition: Bluetooth LE central and Bluetooth LE peripheral (see Section 2) can both be adopted by a 6LN, a 6LR, or a 6LBR ๐Ÿฆ‹.

2. Bluetooth LE Networks and the IPSP ๐Ÿ•ธ๏ธ

Bluetooth LE has two Generic Access Profile (GAP) roles that matter here: the Bluetooth LE central role and the Bluetooth LE peripheral role ๐Ÿ’œ. In Bluetooth 4.0, a device in the central role (which I'll just call "central" from now on) could manage multiple simultaneous connections with a bunch of devices in the peripheral role (called "peripherals" from here on) ๐Ÿ‘‘. Then Bluetooth 4.1 (now deprecated) let a peripheral connect to more than one central at the same time, so extended topologies beyond the star became possible for a Bluetooth LE network [BTCorev4.1] ๐ŸŒˆ. On top of that, a device can be a central in some link-layer connections and a peripheral in others at the same time ๐Ÿซถ.

Now the IPSP is what lets you discover IP-enabled devices and set up a link-layer connection for carrying IPv6 packets ๐ŸŽ€. It defines the Node and Router roles: the Node role is for devices that consume or originate IPv6 packets, and the Router role is for devices that can route IPv6 packets ๐Ÿ’…. Consistent with Bluetooth 4.1, Bluetooth 4.2 [BTCorev4.2], and later Bluetooth versions, one device can implement both roles at once ๐Ÿฆ‹.

This document assumes a mesh made of Bluetooth LE links, where link-layer connections are set up between neighboring IPv6-enabled devices (see Section 3.3.2, item 3.b, and the example in Appendix A) ๐ŸŒธ. The IPv6 forwarding devices in the mesh have to implement both the IPSP Node and Router roles, while simpler leaf-only nodes can get away with only the Node role ๐Ÿงš. In an IPv6 mesh over Bluetooth LE links, one node is a neighbor of another node (and vice versa) if a link-layer connection has been set up between them, using the IPSP for discovery and connection setup and for carrying IPv6 packets ๐Ÿ’–.

3.1. Protocol Stack ๐Ÿฅž

Figure 1 shows the protocol stack for IPv6 mesh over Bluetooth LE links ๐Ÿ–ผ๏ธ. The core Bluetooth LE protocol stack has two main sections: the Controller and the Host. The Controller holds the Physical Layer and the Link Layer, and the Host is made up of the Logical Link Control and Adaptation Protocol (L2CAP), the Attribute Protocol (ATT), and the Generic Attribute Profile (GATT) ๐Ÿ’œ. The Host and the Controller talk to each other through the Host-Controller Interface (HCI) ๐Ÿ”Œ. A device that supports the IPSP Node role runs one Internet Protocol Support Service (IPSS), which sits on top of GATT ๐Ÿ‘‘. The stack in Figure 1 has two main differences from the IPv6 over Bluetooth LE stack in [RFC7668] ๐ŸŒˆ:

  • a) the adaptation layer below IPv6 (labeled "6Lo for IPv6 mesh over Bluetooth LE") is now adapted for IPv6 mesh over Bluetooth LE links, and
  • b) the protocol stack for IPv6 mesh over Bluetooth LE links includes IPv6 routing functionality ๐Ÿฆ‹.
                          +------------------------------------+
                          |             Application            |
             +---------+  +------------------------------------+
             |  IPSS   |  |            UDP/TCP/other           |
             +---------+  +------------------------------------+
             |  GATT   |  |             IPv6  |routing|        |
             +---------+  +------------------------------------+
             |  ATT    |  | 6Lo for IPv6 mesh over Bluetooth LE|
             +---------+--+------------------------------------+
             |                 Bluetooth LE L2CAP              |
     HCI - - +-------------------------------------------------+ - -
             |               Bluetooth LE Link Layer           |
             +-------------------------------------------------+
             |             Bluetooth LE Physical Layer         |
             +-------------------------------------------------+

       Figure 1: Protocol Stack for IPv6 Mesh over Bluetooth LE Links

Bluetooth 4.2 sets a default MTU for Bluetooth LE of 251 bytes ๐Ÿ“. If you leave out the 4-byte L2CAP header, that leaves a protocol data unit (PDU) size of 247 bytes for the layer above L2CAP ๐Ÿงฎ. (Side note: earlier Bluetooth LE versions only gave you 23 bytes for the layer on top of L2CAP ๐Ÿ™ˆ.) L2CAP handles fragmentation and reassembly for sending or receiving bigger PDUs ๐Ÿงฉ. For each link, the IPSP defines ways to negotiate a link-layer connection that gives an MTU of 1280 octets or higher for the IPv6 layer [IPSP] โœจ. As per this specification, the MTU size for IPv6 mesh over BLE links is 1280 octets ๐Ÿ’….

Just like [RFC7668], fragmentation from the 6LoWPAN standards is NOT used for IPv6 mesh over Bluetooth LE links ๐Ÿ™…. Instead, the fragmentation support that Bluetooth LE gets from L2CAP is what gets used ๐Ÿซถ.

3.2. Subnet Model ๐Ÿฆ‹

Okay so for IPv6 mesh over Bluetooth LE links, the spec picks a multilink model ๐Ÿ’… (check out Figure 2 below, it's giving diagram energy). IPv6 over BLE is built for constrained nodes and IoT use cases, and giving every peripheral-central link its own subnet plus routing between all those subnets is lowkey way too much work ๐Ÿ˜ญ. So the spec treats the whole collection of point-to-point links between a central and its connected peripherals as a single multilink subnet instead of a bunch of separate ones ๐ŸŽ€. Yes, the multilink model has drawbacks, which are described in [RFC4903], but the benefits win here โœจ. With this model, the routers have to handle tracking multicast state and forwarding multicast without creating loops ๐Ÿ”. Also, the route-over functionality from [RFC6775] is essential for making the multilink subnet model work for IPv6 mesh over Bluetooth LE links ๐Ÿ’–.

                                                       /
                                                      /
         6LR           6LN        6LN                /
            \             \          \              /
             \             \          \            /
    6LN ----- 6LR --------- 6LR ------ 6LBR ----- |  Internet
     <--Link--> <---Link--->/<--Link->/           |
                           /         /             \
               6LN ---- 6LR ----- 6LR               \
                                                     \
                                                      \

  <------------ Subnet -----------------><---- IPv6 connection -->
                                               to the Internet

    Figure 2: Example of an IPv6 Mesh over a Bluetooth LE Network
                      Connected to the Internet

One or more 6LBRs connect to the Internet ๐ŸŒ. 6LNs connect to the network through a 6LR or a 6LBR. In some scenarios and/or for some time intervals, a 6LR might chill at the edge of the network (like the top left node in Figure 2) ๐Ÿงš. That can happen when a 6LR has no neighboring 6LNs. The whole subnet uses a single global unicast prefix ๐Ÿ“.

IPv6 mesh over Bluetooth LE links MUST follow a route-over approach ๐Ÿ‘‘. This document doesn't specify which routing protocol to use in an IPv6 mesh over Bluetooth LE links, so that's a separate convo ๐Ÿซถ.

3.3.1. Stateless Address Autoconfiguration

6LN, 6LR, and 6LBR IPv6 addresses in an IPv6 mesh over Bluetooth LE links get configured as per Section 3.2.2 of [RFC7668] โœจ.

Multihop Duplicate Address Detection (DAD) from Section 8.2 of [RFC6775], as updated by [RFC8505], or some substitute mechanism (see Section 3.3.2) MAY be supported ๐Ÿ’œ. It's optional, so no pressure ๐Ÿ™ˆ.

3.3.2. Neighbor Discovery

"Neighbor Discovery Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)" [RFC6775], later updated by "Registration Extensions for IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) Neighbor Discovery" [RFC8505], describes neighbor discovery functionality adapted for several 6LoWPAN topologies, including mesh ๐Ÿ•ธ๏ธ. The route-over functionality of [RFC6775] and [RFC8505] MUST be supported ๐Ÿ’….

These are the Neighbor Discovery optimizations for 6LoWPAN [RFC6775] [RFC8505] that apply to Bluetooth LE 6LNs, and they're lowkey the heart of this whole section ๐Ÿ’–:

  1. A Bluetooth LE 6LN MUST register its non-link-local addresses with its routers by sending a Neighbor Solicitation (NS) message with the Extended Address Registration Option (EARO), then process the Neighbor Advertisement (NA) accordingly ๐Ÿ“จ. The EARO option includes a Registration Ownership Verifier (ROVR) field [RFC8505] ๐Ÿ”. For Bluetooth LE, the ROVR field is filled by default with the 48-bit device address used by the Bluetooth LE node, converted into 64-bit Modified EUI-64 format [RFC4291] โœจ. Optionally, a cryptographic ID (see RFC 8928 [RFC8928]) MAY be placed in the ROVR field ๐Ÿฆ‹. If a cryptographic ID is used, the address registration and multihop DAD formats and procedures defined in [RFC8928] MUST be used, unless an alternative mechanism offering equivalent protection is used ๐Ÿ›ก๏ธ.

As per [RFC8505], a 6LN link-local address does not need to be unique in the multilink subnet ๐ŸŒˆ. It only needs to be unique from the perspective of the two nodes using it to communicate (for example, the 6LN and the 6LR in an NS/NA exchange) ๐Ÿซถ. So the exchange of Extended Duplicate Address Request (EDAR) and Extended Duplicate Address Confirmation (EDAC) messages between the 6LR and a 6LBR, which makes sure an address is unique across the domain covered by the 6LBR, doesn't need to happen for link-local addresses ๐Ÿ™…โ€โ™€๏ธ.

If the 6LN registers multiple addresses that are not based on the Bluetooth device address using the same compression context, header compression efficiency may drop, since only the last registered address can be fully elided (see Section 3.2.4 of [RFC7668]) ๐Ÿ˜ฌ.

  1. For sending Router Solicitations and processing Router Advertisements, the hosts that participate in an IPv6 mesh over BLE MUST, respectively, follow Sections 5.3 and 5.4 of [RFC6775], and Section 5.6 of [RFC8505] ๐Ÿ“ก.
  2. Router behavior for 6LRs and 6LBRs is described in Section 6 of [RFC6775] and updated by [RFC8505]. However, as per this specification:
    • a. Routers SHALL NOT use multicast NSs to discover other routers' link-layer addresses ๐Ÿšซ.
    • b. As per Section 6.2 of [RFC6775], in a dynamic configuration scenario, a 6LR comes up as a non-router and waits to receive a Router Advertisement to configure its own interface address first. Only then does it set its interfaces to advertising interfaces and turn into a router ๐ŸŒฑ. To support this in an IPv6 mesh over Bluetooth LE links, a 6LR first uses the IPSP Node role only. Once the 6LR has connected with another node currently running as a router and receives a Router Advertisement from that router, it configures its own interface address, turns into a router, and runs as an IPSP Router ๐ŸŽ‰. A 6LBR, on the other hand, uses the IPSP Router role from the moment it's initialized. That means the 6LBR uses both the IPSP Node and IPSP Router roles at all times ๐Ÿ‘‘. See an example in Appendix B ๐Ÿ“–.
  3. Border router behavior is described in Section 7 of [RFC6775] and updated by [RFC8505] ๐ŸŒ‰.

[RFC6775] defines substitutable mechanisms for distributing prefixes and context information (Section 8.1 of [RFC6775]), as well as for duplicate address detection across a route-over 6LoWPAN (Section 8.2 of [RFC6775]). [RFC8505] updates those mechanisms and the related message formats ๐Ÿ”„. Implementations of this specification MUST either support the features described in Sections 8.1 and 8.2 of [RFC6775], as updated by [RFC8505], or some alternative ("substitute") mechanism ๐Ÿง .

3.3.3. Header Compression

Header compression as defined in RFC 6282 [RFC6282], which specifies the compression format for IPv6 datagrams on top of IEEE 802.15.4, is REQUIRED as the basis for IPv6 header compression on top of Bluetooth LE ๐Ÿ—œ๏ธ. All headers MUST be compressed according to the RFC 6282 [RFC6282] encoding formats ๐Ÿ’….

To make header compression efficient, when the 6LBR sends a Router Advertisement, it MAY include a 6LoWPAN Context Option (6CO) [RFC6775] matching each address prefix advertised via a Prefix Information Option (PIO) [RFC4861] for use in stateless address autoconfiguration โœจ. Note that 6CO isn't needed for context-based compression when the context is pre-provisioned or provided by out-of-band means, since then the in-band indication (6CO) becomes superfluous ๐Ÿ™ƒ.

The specific optimizations of [RFC7668] for header compression, which exploited the star topology and the Address Registration Option (ARO) (note that EARO has updated ARO as per [RFC8505]), can't be generalized to an IPv6 mesh over Bluetooth LE links ๐Ÿฅฒ. Still, a subset of those optimizations can apply in some cases in this kind of network ๐ŸŒŸ. These cases are link-local interactions, non-link-local packet transmissions originated by a 6LN (the first hop from a 6LN), and non-link-local packets intended for a 6LN that are originated or forwarded by a neighbor of that 6LN (the last hop toward a 6LN) ๐Ÿ“ฆ. For all other packet transmissions, context-based compression MAY be used ๐Ÿงฉ.

When a device transmits a packet to a neighbor, the sender MUST fully elide the source Interface Identifier (IID) if the source IPv6 address is the link-local address based on the sender's Bluetooth device address (SAC=0, SAM=11) ๐ŸŽฏ. The sender also MUST fully elide the destination IPv6 address if it's the link-local address based on the neighbor's Bluetooth device address (DAC=0, DAM=11) ๐Ÿ’ซ.

When a 6LN transmits a packet with a non-link-local source address that the 6LN has registered with EARO in the next-hop router for the indicated prefix, the source address MUST be fully elided if it's the latest address the 6LN has registered for that prefix (SAC=1, SAM=11) ๐ŸŒท. If the source non-link-local address isn't the latest one registered by the 6LN, but the first 48 bits of the IID match the latest registered address, then the last 16 bits of the IID SHALL be carried inline (SAC=1, SAM=10) ๐Ÿงต. Otherwise, if the first 48 bits of the IID don't match, the 64 bits of the IID SHALL be fully carried inline (SAC=1, SAM=01) ๐Ÿ“ฎ.

When a router transmits a packet to a neighboring 6LN with a non-link-local destination address, the router MUST fully elide the destination IPv6 address if it's the latest address registered by the 6LN with EARO for the indicated context (DAC=1, DAM=11) ๐Ÿช„. If the destination address is non-link-local, isn't the latest registered, and the first 48 bits of the IID match those of the latest registered address, then the last 16 bits of the IID SHALL be carried inline (DAC=1, DAM=10) ๐Ÿ’Œ. Otherwise, if the first 48 bits of the IID don't match, the 64 bits of the IID SHALL be fully carried inline (DAC=1, DAM=01) ๐Ÿš€.

3.3.4. Unicast and Multicast Mapping

The Bluetooth LE Link Layer doesn't support multicast ๐Ÿ™…โ€โ™€๏ธ. So traffic is always unicast between two neighboring Bluetooth LE nodes ๐Ÿ’ฌ. If a node needs to send a multicast packet to several neighbors, it has to replicate the packet and unicast it on each link. That may not be energy efficient, so particular care must be taken if the node is battery powered ๐Ÿ”‹. A router (a 6LR or a 6LBR) MUST keep track of neighboring multicast listeners, and it MUST NOT forward multicast packets to neighbors that haven't registered as listeners for the multicast groups those packets are destined for ๐Ÿ›‘๐Ÿ’œ.


4. IANA Considerations ๐ŸŒˆ

This document has no IANA actions. ๐ŸŽ€

5. Security Considerations ๐Ÿ”

Okay, the security section is serious, so let's be serious for a sec ๐Ÿ’…. The security considerations in [RFC7668] apply, so go read those too.

IPv6 mesh over BLE needs a routing protocol to figure out end-to-end paths ๐Ÿ›ฃ๏ธ. Unfortunately, that routing protocol can open up new chances for threats and attacks on the network ๐Ÿ˜ฌ.

RFC 7416 [RFC7416] is the systematic breakdown of threats and attacks on the IPv6 Routing Protocol for Low-Power and Lossy Networks (RPL), plus the countermeasures for them ๐Ÿ“š. The threats it covers come in four flavors: failures to authenticate, failures to keep routing information, integrity threats and attacks, and availability threats and attacks. The countermeasures it reports are confidentiality attack countermeasures, integrity attack countermeasures, and availability attack countermeasures.

This specification doesn't say which routing protocol you have to use over IPv6 mesh over Bluetooth LE links, but the guidance in [RFC7416] is super useful when RPL is the one in use ๐ŸŒฟ. And honestly, that guidance may partly apply to other routing protocols too.

โš ๏ธ The ROVR can be derived from the Bluetooth device address. BUT that ROVR can be spoofed! So any node that's connected to the subnet and knows about a registered-address-to-ROVR mapping could pull off address theft and impersonation attacks ๐Ÿ™€. Use of Address Protected Neighbor Discovery [RFC8928] gives you protection against those attacks ๐Ÿ›ก๏ธ.

6. References ๐Ÿ“–

6.1. Normative References

[BTCorev4.2]
           Bluetooth, "Core Specification 4.2", 2 December 2014,
           <https://www.bluetooth.com/specifications/specs/core-
           specification-4-2/>.

[IPSP]     Bluetooth, "Internet Protocol Support Profile 1.0", 16
           December 2014,
           <https://www.bluetooth.com/specifications/specs/internet-
           protocol-support-profile-1-0/>.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119,
           DOI 10.17487/RFC2119, March 1997,
           <https://www.rfc-editor.org/info/rfc2119>.

[RFC4291]  Hinden, R. and S. Deering, "IP Version 6 Addressing
           Architecture", RFC 4291, DOI 10.17487/RFC4291, February
           2006, <https://www.rfc-editor.org/info/rfc4291>.

[RFC4861]  Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
           "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
           DOI 10.17487/RFC4861, September 2007,
           <https://www.rfc-editor.org/info/rfc4861>.

[RFC6282]  Hui, J., Ed. and P. Thubert, "Compression Format for IPv6
           Datagrams over IEEE 802.15.4-Based Networks", RFC 6282,
           DOI 10.17487/RFC6282, September 2011,
           <https://www.rfc-editor.org/info/rfc6282>.

[RFC6775]  Shelby, Z., Ed., Chakrabarti, S., Nordmark, E., and C.
           Bormann, "Neighbor Discovery Optimization for IPv6 over
           Low-Power Wireless Personal Area Networks (6LoWPANs)",
           RFC 6775, DOI 10.17487/RFC6775, November 2012,
           <https://www.rfc-editor.org/info/rfc6775>.

[RFC7668]  Nieminen, J., Savolainen, T., Isomaki, M., Patil, B.,
           Shelby, Z., and C. Gomez, "IPv6 over BLUETOOTH(R) Low
           Energy", RFC 7668, DOI 10.17487/RFC7668, October 2015,
           <https://www.rfc-editor.org/info/rfc7668>.

[RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
           2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
           May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8505]  Thubert, P., Ed., Nordmark, E., Chakrabarti, S., and C.
           Perkins, "Registration Extensions for IPv6 over Low-Power
           Wireless Personal Area Network (6LoWPAN) Neighbor
           Discovery", RFC 8505, DOI 10.17487/RFC8505, November 2018,
           <https://www.rfc-editor.org/info/rfc8505>.

[RFC8928]  Thubert, P., Ed., Sarikaya, B., Sethi, M., and R. Struik,
           "Address-Protected Neighbor Discovery for Low-Power and
           Lossy Networks", RFC 8928, DOI 10.17487/RFC8928, November
           2020, <https://www.rfc-editor.org/info/rfc8928>.

6.2. Informative References

[BTCorev4.1]
           Bluetooth, "Core Specification 4.1", 3 December 2013,
           <https://www.bluetooth.com/specifications/specs/core-
           specification-4-1/>.

[RFC4903]  Thaler, D., "Multi-Link Subnet Issues", RFC 4903,
           DOI 10.17487/RFC4903, June 2007,
           <https://www.rfc-editor.org/info/rfc4903>.

[RFC7416]  Tsao, T., Alexander, R., Dohler, M., Daza, V., Lozano, A.,
           and M. Richardson, Ed., "A Security Threat Analysis for
           the Routing Protocol for Low-Power and Lossy Networks
           (RPLs)", RFC 7416, DOI 10.17487/RFC7416, January 2015,
           <https://www.rfc-editor.org/info/rfc7416>.

Appendix A. Bluetooth LE Connection Establishment Example ๐Ÿฆ‹

This appendix walks through an example of Bluetooth LE connection establishment and how IPSP roles get used in an IPv6 mesh over BLE that uses dynamic configuration ๐ŸŒธ. The example follows the text in Section 3.3.2, item 3.b.

Picture a network with one 6LBR, two 6LRs, and three 6LNs, as shown in Figure 3 โœจ. The 6LNs can only reach the 6LBR through the 6LRs, so that's the vibe ๐Ÿ•ธ๏ธ.

Here are the steps as time moves along. Heads up: other sequences of events can also end up in the same final scenario, so don't panic if your order looks different ๐Ÿ™ˆ.

At the beginning, the 6LBR starts running as an IPSP router, while all the other devices are still not initialized (Step 1) ๐Ÿ’ค. Next, the 6LRs start running as IPSP nodes, which means they use Bluetooth LE advertisement packets to announce that they're here and that they support IPv6 capabilities (Step 2) ๐Ÿ“ฃ. The 6LBR (already running as an IPSP router) spots the 6LRs and sets up one Bluetooth LE connection with each 6LR (Step 3) ๐Ÿค. Once those link-layer connections are up (and after the 6LRs receive Router Advertisements from the 6LBR), the 6LRs start operating as routers and also initiate the IPSP Router role (Step 4) ๐Ÿ‘‘. (Side note: whether the IPSP Node role keeps running at the same time is an implementation decision ๐Ÿง‘โ€๐Ÿ’ป.) Then the 6LNs start running the IPSP Node role (Step 5) ๐Ÿ’œ. Finally, the 6LRs discover the 6LNs and establish connections with them (Step 6) ๐ŸŽ‰.

Step 1
******
                                     6LBR
                                (IPSP: Router)


                           6LR                 6LR
                   (not initialized)     (not initialized)



             6LN                 6LN                  6LN
    (not initialized)      (not initialized)     (not initialized)

Step 2
******
                                     6LBR
                                (IPSP: Router)


                           6LR                 6LR
                      (IPSP: Node)         (IPSP: Node)



             6LN                 6LN                  6LN
    (not initialized)      (not initialized)     (not initialized)

Step 3
******

                                     6LBR
                                (IPSP: Router)
  Bluetooth LE connection -->   /            \
                               /              \
                           6LR                 6LR
                      (IPSP: Node)         (IPSP: Node)



             6LN                 6LN                  6LN
    (not initialized)      (not initialized)     (not initialized)

Step 4
******

                                     6LBR
                                (IPSP: Router)
                                /            \
                               /              \
                           6LR                 6LR
                      (IPSP: Router)      (IPSP: Router)



             6LN                 6LN                  6LN
    (not initialized)      (not initialized)     (not initialized)

Step 5
******

                                     6LBR
                                (IPSP: Router)
                                /            \
                               /              \
                           6LR                 6LR
                      (IPSP: Router)      (IPSP: Router)



             6LN                   6LN                6LN
         (IPSP: Node)         (IPSP: Node)        (IPSP: Node)

Step 6
******

                                     6LBR
                                (IPSP: Router)
                                /            \
                               /              \
                           6LR                 6LR
                     (IPSP: Router)       (IPSP: Router)
                      /           \       /            \
                     /             \     /              \
                    /               \   /                \
                 6LN                 6LN                  6LN
            (IPSP: Node)         (IPSP: Node)         (IPSP: Node)

    Figure 3: Example of Connection Establishment and Use of IPSP
            Roles in an IPv6 Mesh over Bluetooth LE Links

Appendix B. Node-Joining Procedure ๐Ÿงฉ

This appendix has a diagram showing the node-joining procedure ๐Ÿ—บ๏ธ. First up, the joining node advertises that it's around, so it can set up Bluetooth LE connections with neighbors that already belong to a network ๐Ÿ“ก. Those neighbors are typically running as a 6LR or a 6LBR. Once the Bluetooth LE connection is established, the joining node starts acting as a 6LN ๐Ÿ™Œ.

Figure 4 shows the messages swapped between the 6LN and a neighboring 6LR that's already part of the network, right after they've set up a Bluetooth LE connection ๐Ÿ’ฌ. First, the 6LN sends a Router Solicitation (RS) message (1). Then the 6LR replies with an RA, which includes the PIO (2). Once the 6LN has found the non-link-local prefix in use in the network, it creates its non-link-local address and registers that address with EARO (3) at the 6LR. After that, multihop DAD gets performed (4) ๐Ÿ”. Next up, the 6LR sends an NA message in response to the NS the 6LN sent earlier (5). If the 6LN's non-link-local address has been successfully validated, the 6LN can operate as a member of the network it joined ๐Ÿฅณ.

            (1)                 6LN ----(RS)-------> 6LR
            (2)                 6LN <---(RA-PIO)---- 6LR
            (3)                 6LN ----(NS-EARO)--> 6LR
            (4)                 [Multihop DAD procedure]
            (5)                 6LN <---(NA)-------- 6LR

        Figure 4: Message Exchange Diagram for a Joining Node

Acknowledgements ๐Ÿ’–

The Bluetooth, Bluetooth Smart, and Bluetooth Smart Ready marks are registered trademarks owned by Bluetooth SIG, Inc. ๐Ÿฆ‹

Bestie, the authors are SO grateful to everyone who wrote [RFC7668] ๐Ÿซถ This document borrows a lot of its concepts from [RFC7668], with some necessary extensions of its own. โœจ

The authors also thank Alain Michaud, Mark Powell, Martin Turon, Bilhanan Silverajan, Rahul Jadhav, Pascal Thubert, Acee Lindem, Catherine Meadows, and Dominique Barthel ๐Ÿ‘‘ Their reviews and comments helped make the document better, and that's iconic. ๐Ÿ’…

Carles Gomez got support in part from the Spanish Government Ministerio de Economia y Competitividad through projects TEC2012-32531, TEC2016-79988-P, and PID2019-106808RA-I00. He also got support from FEDER and Secretaria d'Universitats i Recerca del Departament d'Empresa i Coneixement de la Generalitat de Catalunya 2017 through grant SGR 376. ๐ŸŒˆ


Contributors ๐ŸŽ€

Carlo Alberto Boano (Graz University of Technology) helped with the design and validation of this document. Main character contribution, no cap ๐Ÿงš


Authors' Addresses ๐ŸŒธ

Here are the authors' contact details, bestie. Reach out if you want to talk protocols ๐Ÿ’œ

Carles Gomez ๐ŸŒท

Carles Gomez
Universitat Politecnica de Catalunya
C/Esteve Terradas, 7
08860 Castelldefels
Spain

Email: carlesgo@entel.upc.edu

Seyed Mahdi Darroudi ๐Ÿ“

Seyed Mahdi Darroudi
Universitat Politecnica de Catalunya
C/Esteve Terradas, 7
08860 Castelldefels
Spain

Email: sm.darroudi@entel.upc.edu

Teemu Savolainen ๐Ÿฆ‹

Teemu Savolainen
Unaffiliated

Email: tsavo.stds@gmail.com

Michael Spoerk โญ

Michael Spoerk
Graz University of Technology
Inffeldgasse 16/I
8010 Graz
Austria

Email: michael.spoerk@tugraz.at
๐Ÿ“ฆ where this page comes from