Bluetooth mesh networking: Difference between revisions

Content deleted Content added
m Caps or other fixes
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
 
(43 intermediate revisions by 33 users not shown)
Line 1:
{{Short description|Computer mesh networking standard}}
<noinclude>{{User:RMCD bot/subject notice|1=Bluetooth Mesh|2=Talk:Bluetooth mesh networking#Requested move 7 September 2019 }}
</noinclude>{{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|last=|first=|date=|website=blog.bluetooth.com|url-status=dead|archive-url=httphttps://web.archive.org/web/20160409092727/http://blog.bluetooth.com/range-limitation-what-range-limitation-introducing-mesh-networks/|archive-date=20192016-0904-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=httphttps://web.archive.org/web/20170901202951/https://www.bluetooth.com/what-is-bluetooth-technology/how-it-works/le-mesh|archive-date=20192017-09-0901|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 21 ⟶ 27:
Every message has a source and a destination address, determining which devices process messages. Devices publish messages to destinations which can be single things / groups of things / everything.
 
Each message has a sequence number that protects the network against replay attacks.
 
Each message is encrypted and authenticated. Two keys are used to secure messages: (1) network keys – allocated to a single mesh network, (2) application keys – specific for a given application functionality, e.g. turning the light on vs reconfiguring the light.
Line 27 ⟶ 33:
Messages have a [[time to live]] (TTL). Each time message is received and retransmitted, TTL is decremented which limits the number of "hops", eliminating endless loops.
 
== Architecture==
Bluetooth Mesh has a layered architecture, with multiple layers as below.
 
{| class="wikitable"
!Layer
Line 49 ⟶ 57:
|Bearer&nbsp;Layer
|It defines how the network packets are exchanged between nodes. Mesh Profile Specification defines BLE advert bearer and BLE GATT bearer. Mesh Profile defines Proxy Protocol, through which mesh packets can be exchanged via other bearers like TCP/IP.
|}
 
== Types of nodes ==
Nodes that support the various features can be formed into a particular mesh network topology.
 
{| class="wikitable"
!Feature
!Functionality
|-
|Relay
|receive and retransmit mesh messages over the advertising bearer
to enable larger networks.
|-
|Proxy
|receive and retransmit mesh messages between GATT and
advertising bearers.
|-
|Low Power
|operate within a mesh network at significantly reduced receiver
duty cycles only in conjunction with a node supporting the Friend feature.
|-
|Friend
|help a node supporting the Low Power feature to operate by storing
messages destined for those nodes.
|}
 
Line 127 ⟶ 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|url=https://ieeexplore.ieee.org/document/8433184/|journal=2018 IEEE Conference on Communications and Network Security (CNS) |volumechapter=Hardware Security Threats Against Bluetooth Mesh Networks |date=2018-05-30|pages=1–9|doi=10.1109/CNS.2018.8433184|via=|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 312 ⟶ 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 348 ⟶ 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 357 ⟶ 389:
|{{Dts|2019-08-20}}
|137436
|Profile Subsystem
|-
|Zephyr OS Mesh<ref>{{Cite web|url=https://launchstudio.bluetooth.com/ListingDetails/RedirectFromQdid/139259|title=QD ID 139259{{!}} Launch Studio - Listing Details|website=launchstudio.bluetooth.com|access-date=2020-03-12}}</ref>
|[[The Linux Foundation]]
|{{Dts|2019-09-20}}
|139259
|Profile Subsystem
|-
|WCH Bluetooth Mesh<ref>{{Cite web|url=https://launchstudio.bluetooth.com/ListingDetails/RedirectFromQdid/144808|title=QD ID 144808{{!}} Launch Studio - Listing Details|website=launchstudio.bluetooth.com|access-date=2020-06-01}}</ref>
|Nanjing Qinheng Microelectronics Co., Ltd.
|{{Dts|2020-06-01}}
|144808
|Profile Subsystem
|}
Line 362 ⟶ 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|last=|first=|date=2019-09-07|website=BlueZ|url-status=live|archive-url=|archive-date=|access-date=}}</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 ==
{{Reflist|refs=
 
<ref name="bluez_SIGqualified">{{cite web | title = Qualified Product Detail | website= [[Bluetooth Special Interest Group|Bluetooth SIG]] | url = https://www.bluetooth.org/qualweb/ProductDetails.cfm?ProductID=2379 | accessdateaccess-date = 2019-09-05 |archiveurlarchive-url= https://web.archive.org/web/20190905203425/https://www.bluetooth.org/qualweb/ProductDetails.cfm?ProductID=2379 |archivedatearchive-date= 2019-09-05 |url-status=live}}</ref>
 
<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="mynewt_apache2p0zephyr_apache2p0">{{cite web | title = apache/mynewtzephyrproject-corertos/zephyr/blob/master/LICENSE | website= [[githubGitHub]] |date = 20182020-0603-0421 | url = https://github.com/apache/mynewt-core/blob/master/LICENSE | accessdateaccess-date = 20192020-0903-0521 |archiveurlarchive-url= https://web.archive.org/web/20190905203215/https://github.com/apache/mynewtzephyrproject-corertos/zephyr/blob/master/LICENSE |archivedatearchive-date= 2019-09-05 |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 | accessdateaccess-date = 2019-09-05 |archiveurlarchive-url= https://web.archive.org/web/20190905201757/https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/COPYING |archivedatearchive-date= 2019-09-05 |url-status=live}}</ref>
 
<ref name="bluez_LGPL">{{cite web | title = index : bluez.git – Bluetooth protocol stack for Linux – Marcel Holtmann | website= [[kernel.org]] | year = 1999 | url = https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/COPYING.LIB | accessdateaccess-date = 2019-09-05 |archiveurlarchive-url= https://web.archive.org/web/20190905201816/https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/COPYING.LIB |archivedatearchive-date= 2019-09-05 |url-status=live}}</ref>
 
}}
Line 380 ⟶ 435:
[[Category:Bluetooth]]
[[Category:Open standards]]
[[Category:Wireless networking]]
[[Category:Mesh networking]]