Estándar de red de malla informática
Bluetooth Mesh es un estándar de redes de malla para computadoras 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. [ 4] ( 13 de julio de 2017 )
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 de retransmisión que recibe un paquete de red que
- se autentica con 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 realiza en mensajes que pueden tener hasta 384 bytes de longitud, cuando se utiliza el mecanismo de Segmentación y Reensamblaje (SAR), pero la mayoría de los mensajes caben en un segmento, es decir, 11 bytes. Cada mensaje comienza con un código de operación, que puede ser de un solo byte (para mensajes especiales), 2 bytes (para mensajes estándar) o 3 bytes (para mensajes específicos del proveedor).
Cada mensaje tiene una dirección de origen y una de destino, que determinan qué dispositivos procesan los mensajes. Los dispositivos publican mensajes en destinos que pueden ser objetos individuales, grupos de objetos 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 en malla, (2) claves de aplicación, específicas para una determinada funcionalidad de la aplicación, por ejemplo, encender la luz o reconfigurarla.
Los mensajes tienen un tiempo de vida (TTL). Cada vez que se recibe y retransmite un mensaje, el TTL se reduce, lo que limita la cantidad 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 diversas funciones se pueden formar en una topología de red de malla particular.
Límites teóricos
Se desconocen los límites prácticos de la tecnología Bluetooth Mesh. Algunos límites que están incorporados en la especificación incluyen:
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 de 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 OnOff, utilizado para representar dispositivos que no se ajustan a ninguna de las descripciones de modelos definidas pero 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 y apagado y servidor genérico de configuración de encendido y apagado, utilizados para representar dispositivos que no se ajustan a ninguna de las descripciones de modelo pero admiten las propiedades genéricas de encendido y apagado.
- Servidor de nivel de potencia genérico y servidor de configuración de nivel de potencia genérico, que incluye un estado de potencia actual genérica, un estado de potencia última genérica, un estado de potencia predeterminada genérica y un estado de rango de potencia genérica
- 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érica y servidor de configuración de ubicación genérica, que representa información de ubicación de un elemento, ya sea global (Lat/Lon) o local
- Servidor de propiedades genérico de usuario/administrador/fabricante/cliente, que representa cualquier valor que se almacenará en un elemento
- Cliente genérico OnOff y cliente de nivel genérico
- Cliente de tiempo de transición predeterminado genérico
- Cliente genérico de encendido y apagado y cliente genérico de nivel de potencia
- Cliente de batería genérico
- Cliente de ubicación genérica
- Cliente de propiedad genérica
Sensores
- Servidor de sensores y servidor de configuración de sensores, que representan un dispositivo sensor . El dispositivo sensor se puede configurar para devolver un valor medido periódicamente o a pedido; el período de medición (cadencia) se puede configurar para que sea fijo o variable, de modo que se informe más rápidamente el rango de valores más importante.
- Cliente de sensores
Tiempo y escenas
- Servidor de hora y servidor de configuración de hora, que permiten la sincronización horaria en una red en malla
- Servidor de escenas y servidor de configuración de escenas, que permiten configurar y recuperar hasta 65535 escenas cuando sea necesario.
- Servidor del programador y servidor de configuración del programador
- Cliente de tiempo, Cliente de escena y Cliente de programador
Iluminación
- Servidor de luminosidad de luz y servidor de configuración de luminosidad de luz, que representa una fuente de luz regulable
- Servidor CTL de luz, servidor de temperatura CTL de luz y servidor de configuración CTL de luz, que representan una fuente de luz CCT o "blanca ajustable"
- Servidor Light HSL, servidor de tono Light HSL, servidor de saturación Light HSL y servidor de configuración Light HSL, que representan una fuente de luz en función de 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 de control de luminosidad (Light LC) y servidor de configuración de Light LC, que representa un dispositivo de control de iluminación capaz de controlar el modelo de luminosidad de la luz mediante un sensor de ocupación y un sensor de luz ambiental . Puede utilizarse para escenarios de control de iluminación como encendido automático, apagado automático 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 un proceso de instalación del dispositivo en una red. Es un paso obligatorio para crear una red Bluetooth Mesh.
En el proceso de aprovisionamiento, un proveedor distribuye de forma segura una clave de red y un espacio de dirección ú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 para cifrar la clave de red y otra información. Esto proporciona seguridad frente a un espía pasivo. También proporciona varios mecanismos de autenticación para proteger la información de la red frente a un espía activo que utiliza un ataque de intermediario durante el proceso de aprovisionamiento.
Una clave exclusiva de un dispositivo, conocida como "clave de dispositivo", se deriva de un secreto compartido de curva elíptica entre el proveedor y el dispositivo durante el proceso de aprovisionamiento. El proveedor utiliza esta clave de dispositivo para cifrar los mensajes de ese dispositivo específico.
La seguridad del proceso de aprovisionamiento se ha analizado en un artículo presentado durante la conferencia IEEE CNS 2018. [5]
El aprovisionamiento se puede realizar mediante una conexión GATT Bluetooth o 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: Operación estandarizada de escenarios típicos de usuario.
- Nodo: Un dispositivo aprovisionado.
- Aprovisionador: Un nodo que puede agregar un dispositivo a una red en malla.
- Relé: Un nodo capaz de retransmitir mensajes.
- Fuente: 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 de Linux oficial (incluida en el núcleo de Linux por Linus Torvalds en 2001 [42] ) BlueZ , con doble licencia libre bajo la GPL [43] y la LGPL [44] , admite Mesh Profile, desde la versión de lanzamiento 5.47, [45] al proporcionar la herramienta meshctl (obsoleta) para configurar dispositivos de malla. La versión de lanzamiento 5.53 introdujo la herramienta mesh-cfgclient para configurar redes de malla. 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 gratuita bajo la Licencia Apache 2.0 , [47] admite Bluetooth Mesh desde la versión de lanzamiento 1.2.0. [48] Fue calificado el 15 de julio de 2019 con QDID 131934. [36] ( 15 de julio de 2019 )
- Zephyr OS Mesh , con licencia gratuita bajo la Licencia Apache 2.0 , [49] es compatible con Bluetooth Mesh desde la versión de lanzamiento 1.9.0. [50] Zephyr OS Mesh 1.14.x fue calificado el 20 de septiembre de 2019 con QDID 139259. [36] ( 20/09/2019 )
Véase también
Referencias
- ^ ab "Especificación de perfil de malla Bluetooth®" (descarga en PDF) . Sitio web de tecnología Bluetooth . 2017-07-13 . Consultado el 2017-07-18 .
- ^ ab "Especificación del modelo de malla Bluetooth®" (descarga en PDF) . Sitio web de tecnología Bluetooth . 2017-07-13 . Consultado el 2017-07-18 .
- ^ "¿Limitación de alcance? ¿Qué limitación de alcance? Introducción a las redes en malla | Sitio web de tecnología Bluetooth". blog.bluetooth.com . Archivado desde el original el 2016-04-09 . Consultado el 2017-07-06 .
- ^ "Bajo consumo energético: malla | Sitio web de tecnología Bluetooth". www.bluetooth.com . Archivado desde el original el 1 de septiembre de 2017. Consultado el 18 de julio de 2017 .
- ^ Adomnicai, A.; Fournier, JJA; Masson, L. (30 de mayo de 2018). "Amenazas a la seguridad del hardware contra las redes Bluetooth Mesh". Conferencia IEEE sobre seguridad de las comunicaciones y las redes (CNS) de 2018. págs. 1–9. doi :10.1109/CNS.2018.8433184. ISBN 978-1-5386-4586-4. Número de identificación del sujeto 52004479.
- ^ "QD ID 98880 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de noviembre de 2017 .
- ^ "QD ID 98856 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de noviembre de 2017 .
- ^ "QD ID 99282 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de noviembre de 2017 .
- ^ "QD ID 101318 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de noviembre de 2017 .
- ^ "QD ID 101726 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de noviembre de 2017 .
- ^ "QD ID 102243 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de noviembre de 2017 .
- ^ "QD ID 106544 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 5 de marzo de 2018 .
- ^ "QD ID 106546 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 5 de marzo de 2018 .
- ^ "QD ID 104143 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 5 de marzo de 2018 .
- ^ "QD ID 109370 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 5 de abril de 2018 .
- ^ "QD ID 110168 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 5 de abril de 2018 .
- ^ "QD ID 110202 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 5 de abril de 2018 .
- ^ "QD ID 110569 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 3 de mayo de 2018 .
- ^ Systems, eZ. "SDK nRF5 para Mesh/Bluetooth Low Energy/Products/Home - Soluciones inalámbricas de consumo ultrabajo de NORDIC SEMICONDUCTOR". www.nordicsemi.com . Consultado el 3 de mayo de 2018 .
- ^ "QD ID 115668 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de septiembre de 2018 .
- ^ "QD ID 116029 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de septiembre de 2018 .
- ^ "QD ID 115860 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 15 de septiembre de 2018 .
- ^ "QD ID 119229 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 7 de noviembre de 2018 .
- ^ "QD ID 119268 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 7 de noviembre de 2018 .
- ^ "QD ID 116593 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 21 de diciembre de 2018 .
- ^ "QD ID 122442 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 21 de diciembre de 2018 .
- ^ "QD ID 123056 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 21 de diciembre de 2018 .
- ^ "QD ID 124137 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 24 de enero de 2019 .
- ^ "QD ID 127926 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 14 de abril de 2019 .
- ^ "QD ID 127646 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 14 de abril de 2019 .
- ^ "QD ID 129750 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 6 de mayo de 2019 .
- ^ "QD ID 130160 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 6 de mayo de 2019 .
- ^ "QD ID 133403 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 19 de junio de 2019 .
- ^ "QD ID 128410 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 19 de junio de 2019 .
- ^ "QD ID 129291 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ^ abc "QD ID 131934 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ^ "QD ID 128246 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ^ "QD ID 134454 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ^ "QD ID 137436 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 27 de agosto de 2019 .
- ^ "QD ID 139259 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 12 de marzo de 2020 .
- ^ "QD ID 144808 | Launch Studio - Detalles de la lista". launchstudio.bluetooth.com . Consultado el 1 de junio de 2020 .
- ^ "Historia de BlueZ". BlueZ . 7 de septiembre de 2019.
- ^ "index : bluez.git – Pila de protocolos Bluetooth para Linux – Marcel Holtmann". kernel.org . 1991. Archivado desde el original el 2019-09-05 . Consultado el 2019-09-05 .
- ^ "index : bluez.git – Pila de protocolos Bluetooth para Linux – Marcel Holtmann". kernel.org . 1999. Archivado desde el original el 2019-09-05 . Consultado el 2019-09-05 .
- ^ "BlueZ » Blog Archive » Release of BlueZ 5.47". www.bluez.org . Consultado el 27 de octubre de 2017 .
- ^ "Detalles del producto calificado". Bluetooth SIG . Archivado desde el original el 2019-09-05 . Consultado el 2019-09-05 .
- ^ "apache/mynewt-core/LICENSE". GitHub . 2018-06-04. Archivado desde el original el 2019-09-05 . Consultado el 2019-09-05 .
- ^ "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 . 2020-03-21. Archivado desde el original el 2019-09-05 . Consultado el 2020-03-21 .
- ^ "Notas de la versión de Zephyr Kernel 1.9.0". docs.zephyrproject.org . Consultado el 21 de marzo de 2020 .