Стандарт компьютерной ячеистой сети
Bluetooth Mesh — это стандарт компьютерной ячеистой сети на основе Bluetooth Low Energy , который позволяет осуществлять связь «многие ко многим» по радиоканалу Bluetooth. Спецификации Bluetooth Mesh были определены в спецификациях Mesh Profile [1] и Mesh Model [2] группой Bluetooth Special Interest Group (Bluetooth SIG). Bluetooth Mesh был задуман в 2014 году [3] и принят 13 июля 2017 года [4] . ( 2017-07-13 )
Обзор
Bluetooth Mesh — это стандарт ячеистых сетей , работающий по принципу сети Flood . Он основан на узлах, ретранслирующих сообщения: каждый узел-ретранслятор, который получает сетевой пакет,
- аутентифицируется по известному сетевому ключу
- отсутствует в кэше сообщений
- имеет TTL ≥ 2
может быть передано повторно с TTL = TTL - 1. Кэширование сообщений используется для предотвращения ретрансляции недавно просмотренных сообщений.
Связь осуществляется в сообщениях, длина которых может достигать 384 байт, при использовании механизма сегментации и повторной сборки (SAR), но большинство сообщений помещается в один сегмент, то есть 11 байт. Каждое сообщение начинается с кода операции, который может быть одним байтом (для специальных сообщений), 2 байтами (для стандартных сообщений) или 3 байтами (для сообщений, специфичных для поставщика).
Каждое сообщение имеет исходный и конечный адрес, определяющий, какие устройства обрабатывают сообщения. Устройства публикуют сообщения в пункты назначения, которые могут быть отдельными вещами / группами вещей / всем.
Каждое сообщение имеет порядковый номер, который защищает сеть от атак повторного воспроизведения.
Каждое сообщение зашифровано и аутентифицировано. Для защиты сообщений используются два ключа: (1) сетевые ключи — выделенные для одной ячеистой сети, (2) ключи приложений — специфичные для заданной функциональности приложения, например включение света или перенастройка света.
Сообщения имеют время жизни (TTL). Каждый раз, когда сообщение принимается и повторно передается, TTL уменьшается, что ограничивает количество «прыжков», устраняя бесконечные циклы.
Архитектура
Bluetooth Mesh имеет многоуровневую архитектуру с несколькими уровнями, как показано ниже.
Типы узлов
Узлы, поддерживающие различные функции, могут быть объединены в определенную топологию ячеистой сети.
Теоретические пределы
Практические ограничения технологии Bluetooth Mesh неизвестны. Некоторые ограничения, встроенные в спецификацию, включают:
Модели сетки
Начиная с версии 1.0 спецификации Bluetooth Mesh [2] , определены следующие стандартные модели и группы моделей:
Модели фундамента
Модели фундамента определены в базовой спецификации. Две из них являются обязательными для всех узлов сетки.
- Конфигурационный сервер (обязательно)
- Конфигурация клиента
- Сервер здоровья (обязательно)
- Здоровье Клиента
Общие модели
- Универсальный сервер OnOff, используемый для представления устройств, которые не соответствуют ни одному из определенных описаний моделей, но поддерживают универсальные свойства On/Off.
- Сервер общего уровня, сохраняющий состояние элемента в виде 16-битного знакового целого числа
- Универсальный сервер времени перехода по умолчанию, используемый для представления времени перехода по умолчанию для различных устройств.
- Универсальный сервер включения/выключения питания и универсальный сервер настройки включения/выключения питания, используемые для представления устройств, которые не соответствуют ни одному из описаний моделей, но поддерживают универсальные свойства включения/выключения.
- Сервер общего уровня мощности и сервер общей настройки уровня мощности, включая текущее состояние общей мощности, последнее состояние общей мощности, состояние общей мощности по умолчанию и состояние общего диапазона мощности.
- Универсальный сервер батареи, представляющий собой набор из четырех значений, характеризующих состояние батареи.
- Сервер общего местоположения и сервер настройки общего местоположения, представляющие информацию о местоположении элемента, как глобальную (широта/долгота), так и локальную
- Универсальный сервер свойств пользователя/администратора/производителя/клиента, представляющий любое значение, которое должно быть сохранено элементом
- Универсальный клиент OnOff и универсальный клиент уровня
- Стандартный клиент времени перехода
- Клиент Generic Power OnOff и клиент Generic Power Level
- Клиент универсальной батареи
- Клиент общего местоположения
- Клиент по общему имуществу
Датчики
- Sensor Server & Sensor Setup Server, представляющий собой сенсорное устройство. Сенсорное устройство может быть настроено на возврат измеренного значения периодически или по запросу; период измерения (каденция) может быть настроен как фиксированный или изменяемый, так что более важный диапазон значений сообщается быстрее.
- Сенсорный клиент
Время и сцены
- Сервер времени и сервер настройки времени, обеспечивающие синхронизацию времени в ячеистой сети
- Сервер сцен и сервер настройки сцен, позволяющие настраивать и вызывать при необходимости до 65535 сцен.
- Сервер планировщика и сервер настройки планировщика
- Клиент времени, клиент сцены и клиент планировщика
Освещение
- Сервер Lightness и сервер настройки Lightness, представляющие собой источник света с регулируемой яркостью
- Сервер Light CTL, сервер температуры Light CTL и сервер настройки Light CTL, представляющие собой источник CCT или «настраиваемого белого» света
- Сервер Light HSL, сервер оттенков Light HSL, сервер насыщенности Light HSL и сервер настройки Light HSL, представляющие источник света на основе цветового представления оттенка, насыщенности и яркости.
- Сервер Light xyL и сервер настройки Light xyL, представляющие собой источник света на основе модифицированного цветового пространства CIE xyY .
- Сервер Light LC (Lightness Control) и сервер настройки Light LC, представляющие собой устройство управления освещением, способное управлять моделью Lightness с помощью датчика присутствия и датчика внешней освещенности . Его можно использовать для сценариев управления освещением, таких как автоматическое включение, автоматическое выключение и/или использование дневного света .
- Клиент Lightness, клиент Light CTL, клиент Light HSL, клиент Light xyL и клиент Light LC
Обеспечение
Provisioning — это процесс установки устройства в сеть. Это обязательный шаг для построения сети Bluetooth Mesh.
В процессе предоставления поставщик безопасно распределяет сетевой ключ и уникальное адресное пространство для устройства. Протокол предоставления использует P256 Elliptic Curve Diffie-Hellman Key Exchange для создания временного ключа для шифрования сетевого ключа и другой информации. Это обеспечивает безопасность от пассивного подслушивателя. Он также предоставляет различные механизмы аутентификации для защиты сетевой информации от активного подслушивателя, который использует атаку «человек посередине» , во время процесса предоставления.
Уникальный ключ для устройства, известный как «ключ устройства», выводится из эллиптической кривой, совместно используемой секретом поставщика и устройства в процессе предоставления. Этот ключ устройства используется поставщиком для шифрования сообщений для этого конкретного устройства.
Безопасность процесса предоставления услуг была проанализирована в статье, представленной на конференции IEEE CNS 2018. [5]
Предоставление услуг может осуществляться с использованием соединения Bluetooth GATT или рекламы с использованием определенного носителя. [1]
Терминология, используемая в спецификациях Bluetooth Mesh Model и Mesh Profile
- Назначение: адрес, на который отправляется сообщение.
- Элемент: адресуемая сущность внутри устройства.
- Модель: Стандартизированная работа типичных пользовательских сценариев.
- Узел: подготовленное устройство.
- Provisioner: узел, который может добавлять устройство в ячеистую сеть.
- Ретранслятор: узел, способный ретранслировать сообщения.
- Источник: Адрес, с которого отправлено сообщение.
Реализации
Одобрено («квалифицировано») Bluetooth SIG
Бесплатные и открытые реализации программного обеспечения
К реализациям свободного программного обеспечения и программного обеспечения с открытым исходным кодом относятся следующие:
- Официальный (включенный в ядро Linux Линусом Торвальдсом в 2001 году [42] ) стек протоколов Bluetooth для Linux BlueZ , имеющий двойную свободную лицензию под GPL [43] и LGPL , [44] поддерживает Mesh Profile, начиная с версии 5.47, [45] предоставляя инструмент meshctl (устарел) для настройки устройств Mesh. В версии 5.53 был представлен инструмент mesh-cfgclient для настройки сетей Mesh. BlueZ был одобрен как «квалифицированный» программный пакет Bluetooth SIG в 2005 году. [46] BlueZ не считается квалифицированным стеком Bluetooth Mesh, поскольку Bluetooth Mesh не указан в вышеупомянутой записи квалификации как поддерживаемый профиль.
- Apache Mynewt NimBLE , свободно лицензируемый по лицензии Apache License 2.0 , [47] поддерживает Bluetooth Mesh с версии 1.2.0. [48] Он был квалифицирован 15 июля 2019 года с QDID 131934. [36] ( 2019-07-15 )
- Zephyr OS Mesh , свободно лицензируемая по Apache License 2.0 , [49] поддерживает Bluetooth Mesh с версии 1.9.0. [50] Zephyr OS Mesh 1.14.x была квалифицирована 20 сентября 2019 года с QDID 139259. [36] ( 2019-09-20 )
Смотрите также
Ссылки
- ^ ab "Спецификация Mesh Profile Bluetooth®" (загрузка PDF) . Веб-сайт Bluetooth Technology . 2017-07-13 . Получено 2017-07-18 .
- ^ ab "Спецификация Mesh Model Bluetooth®" (загрузка PDF) . Веб-сайт Bluetooth Technology . 2017-07-13 . Получено 2017-07-18 .
- ^ "Ограничение диапазона? Что такое ограничение диапазона? Знакомство с ячеистыми сетями | Веб-сайт по технологии Bluetooth". blog.bluetooth.com . Архивировано из оригинала 2016-04-09 . Получено 2017-07-06 .
- ^ "Low Energy: Mesh | Bluetooth Technology Website". www.bluetooth.com . Архивировано из оригинала 2017-09-01 . Получено 2017-07-18 .
- ^ Adomnicai, A.; Fournier, JJA; Masson, L. (2018-05-30). «Угрозы безопасности оборудования для сетей Bluetooth Mesh». Конференция IEEE 2018 года по коммуникациям и сетевой безопасности (CNS) . стр. 1–9. doi :10.1109/CNS.2018.8433184. ISBN 978-1-5386-4586-4. S2CID 52004479.
- ^ "QD ID 98880 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.11.2017 .
- ^ "QD ID 98856 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.11.2017 .
- ^ "QD ID 99282 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.11.2017 .
- ^ "QD ID 101318 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.11.2017 .
- ^ "QD ID 101726 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.11.2017 .
- ^ "QD ID 102243 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.11.2017 .
- ^ "QD ID 106544 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-03-05 .
- ^ "QD ID 106546 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-03-05 .
- ^ "QD ID 104143 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-03-05 .
- ^ "QD ID 109370 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-04-05 .
- ^ "QD ID 110168 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-04-05 .
- ^ "QD ID 110202 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-04-05 .
- ^ "QD ID 110569 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-05-03 .
- ^ Systems, eZ. "nRF5 SDK для Mesh / Bluetooth Low Energy / Продукты / Главная - Беспроводные решения с ультранизким энергопотреблением от NORDIC SEMICONDUCTOR". www.nordicsemi.com . Получено 03.05.2018 .
- ^ "QD ID 115668 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.09.2018 .
- ^ "QD ID 116029 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.09.2018 .
- ^ "QD ID 115860 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 15.09.2018 .
- ^ "QD ID 119229 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-11-07 .
- ^ "QD ID 119268 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2018-11-07 .
- ^ "QD ID 116593 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 21.12.2018 .
- ^ "QD ID 122442 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 21.12.2018 .
- ^ "QD ID 123056 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 21.12.2018 .
- ^ "QD ID 124137 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 24.01.2019 .
- ^ "QD ID 127926 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 14.04.2019 .
- ^ "QD ID 127646 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 14.04.2019 .
- ^ "QD ID 129750 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2019-05-06 .
- ^ "QD ID 130160 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2019-05-06 .
- ^ "QD ID 133403 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 19.06.2019 .
- ^ "QD ID 128410 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 19.06.2019 .
- ^ "QD ID 129291 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 27.08.2019 .
- ^ abc "QD ID 131934 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 27.08.2019 .
- ^ "QD ID 128246 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 27.08.2019 .
- ^ "QD ID 134454 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 27.08.2019 .
- ^ "QD ID 137436 | Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 27.08.2019 .
- ^ "QD ID 139259| Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2020-03-12 .
- ^ "QD ID 144808| Launch Studio - Подробности листинга". launchstudio.bluetooth.com . Получено 2020-06-01 .
- ^ "История BlueZ". BlueZ . 2019-09-07.
- ^ "index: bluez.git – Стек протоколов Bluetooth для Linux – Марсель Хольтманн". kernel.org . 1991. Архивировано из оригинала 2019-09-05 . Получено 2019-09-05 .
- ^ "index: bluez.git – Стек протоколов Bluetooth для Linux – Марсель Хольтманн". kernel.org . 1999. Архивировано из оригинала 2019-09-05 . Получено 2019-09-05 .
- ^ "BlueZ » Архив блога » Выпуск BlueZ 5.47". www.bluez.org . Получено 27.10.2017 .
- ^ "Qualified Product Detail". Bluetooth SIG . Архивировано из оригинала 2019-09-05 . Получено 2019-09-05 .
- ^ "apache/mynewt-core/LICENSE". GitHub . 2018-06-04. Архивировано из оригинала 2019-09-05 . Получено 2019-09-05 .
- ^ "RN-1.2.0 - Apache Mynewt - Apache Software Foundation". cwiki.apache.org . Получено 2018-07-02 .
- ^ "zephyrproject-rtos/zephyr/blob/master/LICENSE". GitHub . 2020-03-21. Архивировано из оригинала 2019-09-05 . Получено 2020-03-21 .
- ^ "Заметки о выпуске Zephyr Kernel 1.9.0". docs.zephyrproject.org . Получено 21.03.2020 .