Bluetooth mesh networking: Difference between revisions

Content deleted Content added
Topology: corrected functionality of features
Citation bot (talk | contribs)
Removed URL that duplicated identifier. | Use this bot. Report bugs. | Suggested by Headbomb | Linked from Wikipedia:WikiProject_Academic_Journals/Journals_cited_by_Wikipedia/Sandbox | #UCB_webform_linked 301/1032
 
(22 intermediate revisions by 18 users not shown)
Line 1:
{{Short description|Computer mesh networking standard}}
{{Infobox protocol
| name = Bluetooth mesh networking
| image = Bluetooth- logo (2016).svg
| standard =
| developer = [[Bluetooth Special Interest Group|Bluetooth SIG]]
| introdate = {{Start date|2017|07|13}}
| industry = [[Lighting]], [[Internet of things|IoT]]
| connector =
| hardware =
| range = 100-1000100–1000 meters (depending on mesh relaying configuration)
}}
 
'''Bluetooth Mesh''' is a computer [[mesh networking]] [[Technical standard|standard]] based on [[Bluetooth Low Energy]] that allows for many-to-many communication over Bluetooth radio. The Bluetooth Mesh specifications were defined in the Mesh Profile<ref name=":0">{{Cite web|url=https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=429633|title=Mesh Profile Bluetooth® Specification|date=2017-07-13|website=Bluetooth Technology Website|format=PDF download|access-date=2017-07-18}}</ref> and Mesh Model<ref name=":1">{{Cite web|url=https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=429634|title=Mesh Model Bluetooth® Specification|date=2017-07-13|website=Bluetooth Technology Website|format=PDF download|access-date=2017-07-18}}</ref> specifications by the [[Bluetooth Special Interest Group]] (Bluetooth SIG). Bluetooth Mesh was conceived in 2014<ref>{{Cite web|url=http://blog.bluetooth.com/range-limitation-what-range-limitation-introducing-mesh-networks/|title=Range Limitation? What Range Limitation? Introducing Mesh Networks {{!}} Bluetooth Technology Website|website=blog.bluetooth.com|url-status=dead|archive-url=https://web.archive.org/web/20160409092727/http://blog.bluetooth.com/range-limitation-what-range-limitation-introducing-mesh-networks/|archive-date=2016-04-09|access-date=2017-07-06}}</ref> and adopted on {{Start date|2017|07|13}}.<ref>{{Cite web|url=https://www.bluetooth.com/what-is-bluetooth-technology/how-it-works/le-mesh|title=Low Energy: Mesh {{!}} Bluetooth Technology Website|website=www.bluetooth.com|url-status=dead|archive-url=https://web.archive.org/web/20170901202951/https://www.bluetooth.com/what-is-bluetooth-technology/how-it-works/le-mesh|archive-date=2017-09-01|access-date=2017-07-18}}</ref>
 
== Overview ==
Bluetooth Mesh is a [[mesh networking]] standard that operates on a [[Flooding (computer networking)|flood network]] principle. It's based on the nodes relaying the messages: every relay node that receives a network packet that

* authenticates against a known network key that
* is not in message cache, that
* has a TTL ≥ 2

can be retransmitted with TTL = TTL - 1. Message caching is used to prevent relaying messages recently seen messages.
 
Communication is carried in the messages that may be up to 384 bytes long, when using Segmentation and Reassembly (SAR) mechanism, but most of the messages fit in one segment, that is 11 bytes. Each message starts with an opcode, which may be a single byte (for special messages), 2 bytes (for standard messages), or 3 bytes (for vendor-specific messages).
Line 29 ⟶ 36:
Bluetooth Mesh has a layered architecture, with multiple layers as below.
 
[[File:MshPRFv1.0.1.pdf|thumb|Bluetooth mesh profile|page=17]]
{| class="wikitable"
!Layer
Line 53 ⟶ 59:
|}
 
== TopologyTypes of nodes ==
Nodes that support the various features can be formed into a particular mesh network topology.
 
[[File:MshPRFv1.0.1.pdf|thumb|Bluetooth mesh profile|page=35]]
 
{| class="wikitable"
Line 155 ⟶ 159:
Provisioning is a process of installing the device into a network. It is a mandatory step to build a Bluetooth Mesh network.
 
In the provisioning process, a provisioner securely distributes a network key and a unique address space for a device. ProvisioningThe provisioning protocol uses P256 Elliptic Curve [[Diffie–Hellman key exchange|Diffie-Hellman]] Key Exchange to create a temporary key to encrypt network key and other information. This provides security from a passive eavesdropper.
It also provides various authentication mechanisms to protect network information, from an active eavesdropper who uses [[man-in-the-middle attack]], during provisioning process.
 
A key unique to a device known as "Device Key" is derived from elliptic curve shared secret on provisioner and device during the provisioning process. This device key is used by the provisioner to encrypt messages for that specific device.
 
SecurityThe security of the provisioning process has been analyzed in a paper presented during the [[IEEE Communications Society|IEEE CNS]] 2018 conference.<ref>{{Cite journalbook|lastlast1=Adomnicai|firstfirst1=A.|last2=Fournier|first2=J. J. A.|last3=Masson|first3=L.|date=2018-05-30|title=Hardware Security Threats Against Bluetooth Mesh Networks|journal=2018 IEEE Conference on Communications and Network Security (CNS) |pageschapter=Hardware Security Threats Against Bluetooth Mesh Networks |date=1–92018-05-30|urlpages=https://ieeexplore.ieee.org/document/84331841–9|doi=10.1109/CNS.2018.8433184|isbn=978-1-5386-4586-4|s2cid=52004479 }}</ref>
 
The provisioning can be performed using a Bluetooth GATT connection or advertising using the specific bearer.<ref name=":0" />
Line 340 ⟶ 344:
|-
|Tonly SIG Mesh Stack<ref>{{Cite web|url=https://launchstudio.bluetooth.com/ListingDetails/RedirectFromQdid/130160|title=QD ID 130160 {{!}} Launch Studio - Listing Details|website=launchstudio.bluetooth.com|access-date=2019-05-06}}</ref>
|[[Tonli|Shenzhen Tonli Science and Technology Development Co., Ltd]]
|{{Dts|2019-05-05}}
|130160
Line 376 ⟶ 380:
|-
|ClarinoxBlue<ref>{{Cite web|url=https://launchstudio.bluetooth.com/ListingDetails/RedirectFromQdid/134454|title=QD ID 134454 {{!}} Launch Studio - Listing Details|website=launchstudio.bluetooth.com|access-date=2019-08-27}}</ref>
|[[Clarinox Technologies Pty Ltd]]
|{{Dts|2019-08-02}}
|134454
Line 402 ⟶ 406:
=== Free and open-source software implementations ===
[[Free software]] and [[The Open Source Definition|open source software]] implementations include the following:
* The official (included in [[Linux kernel]] by [[Linus Torvalds]] in 2001<ref>{{Cite web|url=http://www.bluez.org/about/history/|title=BlueZ History|date=2019-09-07|website=BlueZ}}</ref>) Linux Bluetooth protocol stack [[BlueZ]], dual free-licensed under the [[GNU General Public License|GPL]]<ref name="bluez_GPL" /> and the [[GNU Lesser General Public License|LGPL]],<ref name="bluez_LGPL" /> supports Mesh Profile, from release version 5.47,<ref>{{Cite web|url=http://www.bluez.org/release-of-bluez-5-47/|title=BlueZ » Blog Archive » Release of BlueZ 5.47|website=www.bluez.org|access-date=2017-10-27}}</ref> by providing meshctl tool (deprecated) to configure mesh devices. Release version 5.53 introduced mesh-cfgclient tool for configuring mesh networks. BlueZ was approved as a "qualified" software package by Bluetooth SIG in 2005.<ref name="bluez_SIGqualified" /> BlueZ is not considered to be a qualified Bluetooth Mesh stack as Bluetooth Mesh is not listed{{where|date=September 2019}}in aforementioned qualification record as a supported profile.
* [[Bluetooth stack#Apache Mynewt NimBLE|Apache Mynewt NimBLE]], free-licensed under the [[Apache License#Compatibility|Apache License 2.0]],<ref name="mynewt_apache2p0" /> supports Bluetooth Mesh from release version 1.2.0.<ref>{{Cite web|url=https://cwiki.apache.org/confluence/display/MYNEWT/RN-1.2.0|title=RN-1.2.0 - Apache Mynewt - Apache Software Foundation|website=cwiki.apache.org|access-date=2018-07-02}}</ref> It was qualified on {{Start date|2019|07|15}} with QDID 131934.<ref name=":2" />
* [[Bluetooth stack#Zephyr OS Mesh|Zephyr OS Mesh]], free-licensed under the [[Apache License#Compatibility|Apache License 2.0]],<ref name="zephyr_apache2p0" /> supports Bluetooth Mesh from release version 1.9.0.<ref>{{Cite web|url=https://docs.zephyrproject.org/latest/releases/release-notes-1.9.html#zephyr-kernel-1-9-0|title=Release Notes Zephyr Kernel 1.9.0|website=docs.zephyrproject.org|access-date=2020-03-21}}</ref> Zephyr OS Mesh 1.14.x was qualified on {{Start date|2019|09|20}} with QDID 139259.<ref name=":2" />
 
== See also ==
* [[Cabir (computer worm)]]
* [[BlackArch]]
* [[Bluejacking]]
* [[Bluebugging]]
* [[Bluesnarfing]]
* [[AirDrop]]
 
== References ==
Line 413 ⟶ 425:
<ref name="mynewt_apache2p0">{{cite web | title = apache/mynewt-core/LICENSE | website= [[GitHub]] |date = 2018-06-04 | url = https://github.com/apache/mynewt-core/blob/master/LICENSE | access-date = 2019-09-05 |archive-url= https://web.archive.org/web/20190905203215/https://github.com/apache/mynewt-core/blob/master/LICENSE |archive-date= 2019-09-05 |url-status=live}}</ref>
 
<ref name="zephyr_apache2p0">{{cite web | title = zephyrproject-rtos/zephyr/blob/master/LICENSE | website= [[GitHub]] |date = 2020-03-21 | url = https://github.com/apache/mynewt-core/blob/master/LICENSE | access-date = 2020-03-21 |archive-url= https://web.archive.org/web/20190905203215/https://github.com/zephyrproject-rtos/zephyr/blob/master/LICENSE |archive-date= 20202019-0309-2105 |url-status=live}}</ref>
 
<ref name="bluez_GPL">{{cite web | title =index : bluez.git – Bluetooth protocol stack for Linux – Marcel Holtmann | website= [[kernel.org]] |year = 1991 | url = https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/COPYING | access-date = 2019-09-05 |archive-url= https://web.archive.org/web/20190905201757/https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/COPYING |archive-date= 2019-09-05 |url-status=live}}</ref>
Line 423 ⟶ 435:
[[Category:Bluetooth]]
[[Category:Open standards]]
[[Category:Wireless networking]]
[[Category:Mesh networking]]