Bluetooth Mesh es un estándar de red de malla informática basado en Bluetooth Low Energy que permite la comunicación de muchos a muchos a través de la radio Bluetooth. Las especificaciones de Bluetooth Mesh fueron definidas en las especificaciones Mesh Profile [ 1 ] y Mesh Model [ 2 ] por el Bluetooth Special Interest Group (Bluetooth SIG). Bluetooth Mesh fue concebido en 2014 [ 3 ] y adoptado el 13 de julio de 2017 ( 2017-07-13 ) . [ 4 ]
Descripción general
Bluetooth Mesh es un estándar de red en malla que funciona según el principio de red de inundación . Se basa en los nodos que retransmiten los mensajes: cada nodo repetidor que recibe un paquete de red que
- Se autentica contra una clave de red conocida.
- no está en la caché de mensajes
- tiene un TTL ≥ 2
se puede retransmitir con TTL = TTL − 1. El almacenamiento en caché de mensajes se utiliza para evitar la retransmisión de mensajes vistos recientemente.
La comunicación se transmite mediante mensajes que pueden tener hasta 384 bytes de longitud, utilizando el mecanismo de Segmentación y Reensamblaje (SAR), pero la mayoría de los mensajes caben en un segmento de 11 bytes. Cada mensaje comienza con un código de operación, que puede ser de un byte (para mensajes especiales), dos bytes (para mensajes estándar) o tres bytes (para mensajes específicos del proveedor).
Cada mensaje tiene una dirección de origen y una de destino, lo que determina qué dispositivos procesan los mensajes. Los dispositivos publican mensajes en destinos que pueden ser elementos individuales, grupos de elementos o cualquier cosa.
Cada mensaje tiene un número de secuencia que protege la red contra ataques de repetición.
Cada mensaje está cifrado y autenticado. Se utilizan dos claves para proteger los mensajes: (1) claves de red, asignadas a una única red de malla, y (2) claves de aplicación, específicas para una funcionalidad de aplicación determinada, por ejemplo, encender la luz frente a reconfigurarla.
Los mensajes tienen un tiempo de vida (TTL). Cada vez que se recibe y se retransmite un mensaje, el TTL disminuye, lo que limita el número de "saltos" y elimina los bucles infinitos.
Arquitectura
Bluetooth Mesh tiene una arquitectura en capas, con múltiples capas como se muestra a continuación.
Tipos de nodos
Los nodos que admiten las distintas funcionalidades pueden organizarse en una topología de red de malla específica.
Límites teóricos
Se desconocen los límites prácticos de la tecnología Bluetooth Mesh. Algunos de los límites que se incluyen en la especificación son:
Modelos de malla
A partir de la versión 1.0 de la especificación Bluetooth Mesh, [ 2 ] se han definido los siguientes modelos estándar y grupos de modelos:
Modelos de fundación
Los modelos base se han definido en la especificación principal. Dos de ellos son obligatorios para todos los nodos de la malla.
- Servidor de configuración (obligatorio)
- Cliente de configuración
- Servidor de salud (obligatorio)
- Cliente de salud
Modelos genéricos
- Servidor genérico de encendido/apagado, utilizado para representar dispositivos que no se ajustan a ninguna de las descripciones de modelo definidas, pero que admiten las propiedades genéricas de encendido/apagado.
- Servidor de nivel genérico, que mantiene el estado de un elemento en un entero con signo de 16 bits.
- Servidor de tiempo de transición predeterminado genérico, utilizado para representar un tiempo de transición predeterminado para una variedad de dispositivos.
- Servidor genérico de encendido/apagado y servidor genérico de configuración de encendido/apagado, utilizados para representar dispositivos que no se ajustan a ninguna de las descripciones de modelo pero que admiten las propiedades genéricas de encendido/apagado.
- Servidor de nivel de energía genérico y servidor de configuración de nivel de energía genérico, que incluye un estado de energía actual genérico, un estado de energía anterior genérico, un estado de energía predeterminado genérico y un estado de rango de energía genérico.
- Servidor de batería genérico, que representa un conjunto de cuatro valores que representan el estado de una batería.
- Servidor de ubicación genérico y servidor de configuración de ubicación genérico, que representan la información de ubicación de un elemento, ya sea global (latitud/longitud) o local.
- Servidor de propiedades genérico de usuario/administrador/fabricante/cliente, que representa cualquier valor que deba almacenar un elemento.
- Cliente genérico de encendido/apagado y cliente de nivel genérico
- Cliente de tiempo de transición predeterminado genérico
- Cliente genérico de encendido/apagado y cliente genérico de nivel de energía
- Cliente de batería genérico
- Cliente de ubicación genérica
- Cliente de propiedad genérico
Sensores
- Servidor de sensores y servidor de configuración de sensores, que representan un dispositivo sensor . El dispositivo sensor puede configurarse para devolver un valor medido periódicamente o bajo demanda; el período de medición (cadencia) puede configurarse para ser fijo o variable, de modo que se informe más rápidamente el rango de valores más importante.
- Cliente sensor
Tiempo y escenas
- Servidor de hora y servidor de configuración de hora, que permiten la sincronización horaria en redes malladas.
- Servidor de escenas y servidor de configuración de escenas, que permiten configurar y recuperar hasta 65535 escenas cuando sea necesario.
- Servidor de programación y servidor de configuración de programación
- Cliente de tiempo, Cliente de escena y Cliente de programación
Iluminación
- Servidor de luminosidad y servidor de configuración de luminosidad, que representan una fuente de luz regulable.
- Servidor Light CTL, servidor de temperatura Light CTL y servidor de configuración Light CTL, que representan una fuente de luz CCT o "blanca sintonizable".
- Servidor HSL de luz, servidor de tono HSL de luz, servidor de saturación HSL de luz y servidor de configuración HSL de luz, que representan una fuente de luz basada en la representación del color de tono, saturación y luminosidad.
- Servidor Light xyL y servidor de configuración Light xyL, que representan una fuente de luz basada en el espacio de color CIE xyY modificado .
- Servidor Light LC (Control de Luminosidad) y Servidor de Configuración Light LC, que representan un dispositivo de control de iluminación, capaz de controlar el modelo de luminosidad de la luz mediante un sensor de presencia y un sensor de luz ambiental . Puede utilizarse para escenarios de control de iluminación como encendido automático, apagado automático y/o aprovechamiento de la luz natural .
- Cliente Light Lightness, Cliente Light CTL, Cliente Light HSL, Cliente Light xyL y Cliente Light LC
Aprovisionamiento
El aprovisionamiento es el proceso de instalar el dispositivo en una red. Es un paso obligatorio para crear una red Bluetooth Mesh.
Durante el proceso de aprovisionamiento, un proveedor distribuye de forma segura una clave de red y un espacio de direcciones único para un dispositivo. El protocolo de aprovisionamiento utiliza el intercambio de claves Diffie-Hellman de curva elíptica P256 para crear una clave temporal que cifra la clave de red y otra información. Esto proporciona seguridad frente a intrusos pasivos. Además, ofrece diversos mecanismos de autenticación para proteger la información de la red frente a intrusos activos que utilizan ataques de intermediario durante el proceso de aprovisionamiento.
Durante el proceso de aprovisionamiento, se genera una clave exclusiva para cada dispositivo, denominada "Clave del dispositivo", a partir de un secreto compartido mediante una curva elíptica entre el proveedor y el dispositivo. Esta clave es utilizada por el proveedor para cifrar los mensajes destinados a ese dispositivo específico.
La seguridad del proceso de aprovisionamiento se analizó en un artículo presentado durante la conferencia IEEE CNS 2018. [ 5 ]
El aprovisionamiento se puede realizar mediante una conexión Bluetooth GATT o mediante publicidad utilizando el portador específico. [ 1 ]
Terminología utilizada en las especificaciones del modelo de malla Bluetooth y del perfil de malla.
- Destino: La dirección a la que se envía un mensaje.
- Elemento: Una entidad direccionable dentro de un dispositivo.
- Modelo: Funcionamiento estandarizado de escenarios de usuario típicos.
- Nodo: Un dispositivo aprovisionado.
- Provisionador: Un nodo que puede agregar un dispositivo a una red de malla.
- Retransmisor: Un nodo capaz de retransmitir mensajes.
- Origen: La dirección desde la que se envía un mensaje.
Implementaciones
Aprobado ("calificado") por Bluetooth SIG.
Implementaciones de software libre y de código abierto
Las implementaciones de software libre y de código abierto incluyen lo siguiente:
- La pila de protocolos Bluetooth oficial de Linux (incluida en el kernel de Linux por Linus Torvalds en 2001 [ 42 ] ) , BlueZ , con doble licencia libre bajo la GPL [ 43 ] y la LGPL , [ 44 ] admite el perfil Mesh, desde la versión 5.47, [ 45 ] proporcionando la herramienta meshctl (obsoleta) para configurar dispositivos mesh. La versión 5.53 introdujo la herramienta mesh-cfgclient para configurar redes mesh. BlueZ fue aprobado como un paquete de software "calificado" por Bluetooth SIG en 2005. [ 46 ] BlueZ no se considera una pila Bluetooth Mesh calificada ya que Bluetooth Mesh no figura en el registro de calificación mencionado anteriormente como un perfil compatible.
- Apache Mynewt NimBLE , con licencia libre bajo la Licencia Apache 2.0 , [ 47 ] admite Bluetooth Mesh desde la versión 1.2.0. [ 48 ] Fue calificado el 15 de julio de 2019 ( 2019-07-15 ) con QDID 131934. [ 36 ]
- Zephyr OS Mesh , con licencia libre bajo la Licencia Apache 2.0 , [ 49 ] admite Bluetooth Mesh desde la versión 1.9.0. [ 50 ] Zephyr OS Mesh 1.14.x fue calificado el 20 de septiembre de 2019 ( 2019-09-20 ) con QDID 139259. [ 36 ]
Véase también
Referencias
- 1 2 "Especificación Bluetooth® de perfil de malla" (descarga en PDF) . Sitio web de tecnología Bluetooth . 13 de julio de 2017. Consultado el 18 de julio de 2017 .
- 1 2 "Especificación del modelo de malla Bluetooth®" (descarga en PDF) . Sitio web de tecnología Bluetooth . 13 de julio de 2017. Consultado el 18 de julio de 2017 .
- ↑"Range Limitation? What Range Limitation? Introducing Mesh Networks | Bluetooth Technology Website". blog.bluetooth.com. Archived from the original on 2016-04-09. Retrieved 2017-07-06.
- ↑"Low Energy: Mesh | Bluetooth Technology Website". www.bluetooth.com. Archived from the original on 2017-09-01. Retrieved 2017-07-18.
- ↑Adomnicai, A.; Fournier, J. J. A.; Masson, L. (2018-05-30). "Hardware Security Threats Against Bluetooth Mesh Networks". 2018 IEEE Conference on Communications and Network Security (CNS). pp. 1–9. doi:10.1109/CNS.2018.8433184. ISBN 978-1-5386-4586-4. S2CID 52004479.
- ↑"QD ID 98880 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2017-11-15.
- ↑"QD ID 98856 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2017-11-15.
- ↑"QD ID 99282 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2017-11-15.
- ↑"QD ID 101318 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2017-11-15.
- ↑"QD ID 101726 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2017-11-15.
- ↑"QD ID 102243 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2017-11-15.
- ↑"QD ID 106544 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2018-03-05.
- ↑"QD ID 106546 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2018-03-05.
- ↑"QD ID 104143 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2018-03-05.
- ↑"QD ID 109370 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2018-04-05.
- ↑ "QD ID 110168 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 5 de abril de 2018 .
- ↑ "QD ID 110202 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 5 de abril de 2018 .
- ↑ "QD ID 110569 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 3 de mayo de 2018 .
- ↑ Systems, eZ. "nRF5 SDK para Mesh / Bluetooth Low Energy / Productos / Hogar - Soluciones inalámbricas de ultrabajo consumo de NORDIC SEMICONDUCTOR" . www.nordicsemi.com . Consultado el 3 de mayo de 2018 .
- ↑ "QD ID 115668 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 15 de septiembre de 2018 .
- ↑ "QD ID 116029 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 15 de septiembre de 2018 .
- ↑ "QD ID 115860 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 15 de septiembre de 2018 .
- ↑ "QD ID 119229 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 7 de noviembre de 2018 .
- ↑ "QD ID 119268 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 7 de noviembre de 2018 .
- ↑ "QD ID 116593 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 21/12/2018 .
- ↑ "QD ID 122442 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 21/12/2018 .
- ↑ "QD ID 123056 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 21/12/2018 .
- ↑ "QD ID 124137 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 24 de enero de 2019 .
- ↑ "QD ID 127926 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 14 de abril de 2019 .
- ↑ "QD ID 127646 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 14 de abril de 2019 .
- ↑ "QD ID 129750 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 6 de mayo de 2019 .
- ↑ "QD ID 130160 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 6 de mayo de 2019 .
- ↑ "QD ID 133403 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 19 de junio de 2019 .
- ↑ "QD ID 128410 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 19 de junio de 2019 .
- ↑ "QD ID 129291 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- 1 2 3 "QD ID 131934 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ↑ "QD ID 128246 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ↑ "QD ID 134454 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ↑ "QD ID 137436 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ↑ "QD ID 139259 | Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 12 de marzo de 2020 .
- ↑ "QD ID 144808| Launch Studio - Detalles del listado" . launchstudio.bluetooth.com . Consultado el 1 de junio de 2020 .
- ↑ "Historia de BlueZ" . BlueZ . 7 de septiembre de 2019.
- ↑ "index : bluez.git – Bluetooth protocol stack for Linux – Marcel Holtmann" . kernel.org . 1991. Archivado del original el 5 de septiembre de 2019. Consultado el 5 de septiembre de 2019 .
- ↑ "index : bluez.git – Bluetooth protocol stack for Linux – Marcel Holtmann" . kernel.org . 1999. Archivado del original el 5 de septiembre de 2019. Consultado el 5 de septiembre de 2019 .
- ↑ "BlueZ » Archivo del blog » Lanzamiento de BlueZ 5.47" . www.bluez.org . Consultado el 27 de octubre de 2017 .
- ↑ "Detalle del producto calificado" . Bluetooth SIG . Archivado del original el 5 de septiembre de 2019. Consultado el 5 de septiembre de 2019 .
- ↑ "apache/mynewt-core/LICENSE" . GitHub . 4 de junio de 2018. Archivado del original el 5 de septiembre de 2019. Consultado el 5 de septiembre de 2019 .
- ↑ "RN-1.2.0 - Apache Mynewt - Apache Software Foundation" . cwiki.apache.org . Consultado el 2 de julio de 2018 .
- ↑ "zephyrproject-rtos/zephyr/blob/master/LICENSE" . GitHub . 21 de marzo de 2020. Archivado del original el 5 de septiembre de 2019. Consultado el 21 de marzo de 2020 .
- ↑ "Notas de la versión del kernel Zephyr 1.9.0" . docs.zephyrproject.org . Consultado el 21 de marzo de 2020 .
- Bluetooth
- Estándares abiertos
- Redes de malla