Bluetooth Mesh es un estándar de red en malla informática basado en Bluetooth Low Energy que permite la comunicación entre múltiples dispositivos vía Bluetooth. Las especificaciones de Bluetooth Mesh fueron definidas en las especificaciones Mesh Profile y Mesh Model por el Bluetooth Special Interest Group (Bluetooth SIG). Bluetooth Mesh fue concebido en 2014 y adoptado el 13 de julio de 2017 .

Descripción Bluetooth Mesh es un estándar de red en malla que funciona según el algoritmo de inundación de red. Se basa en los nodos que retransmiten los mensajes: cada nodo de retransmisión 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. Se evita la retransmisión de mensajes vistos recientemente mediante el uso de memoria caché.

La longitud de un mensaje puede ser de hasta 384 bytes usando el mecanismo de Segmentación y Reensamblaje (SAR por sus siglas en inglés). La mayoría de mensajes caben en un solo 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 contiene la dirección de origen y de destino. Esto va a determinar que dispositivo procesa el mensaje. El destino del mensaje puede ser hacia un destinatario, hacia grupos o a todos.

Los mensajes contienen un número de secuencia para proteger la red contra ataques de repetición de mensaje.

Cada mensaje está cifrado y autenticado. Para su protección, se emplean dos tipos de claves: (1) claves de red, asignadas exclusivamente a una red de malla, y (2) claves de aplicación, utilizadas para funciones específicas dentro de la aplicación, como encender o reconfigurar una luz.

Los mensajes tienen un tiempo de vida (TTL). Cada vez que un mensaje es recibido y retransmitido, el TTL disminuye, limitando la cantidad de "saltos" y evitando bucles infinitos.

Bluetooth Mesh sigue una arquitectura en capas, compuesta por múltiples niveles, como se muestra a continuación. Capa Funcionalidad Modelo Capa Define una forma estándar de intercambiar mensajes específicos de la aplicación. Por ejemplo, un modelo de luminosidad define una forma interoperable de controlar la luminosidad. Existen modelos obligatorios, llamados modelos de base, que definen los estados y mensajes necesarios para gestionar una red en malla. Acceso Capa Define el mecanismo para garantizar que los datos se transmitan y reciban en el contexto correcto de un modelo y sus claves de aplicación asociadas. Superior Transporte Capa Define el cifrado autenticado de los paquetes de la capa de acceso mediante una aplicación (o clave específica del dispositivo). También define algunos mensajes de control para gestionar la amistad o para notificar el comportamiento del nodo mediante mensajes Heartbeat. Más bajo Transporte Capa Esta capa define una transmisión segmentada confiable (a través de un reconocimiento de bloque) de paquetes de capa superior, cuando un paquete de capa superior completo no puede transportarse en un solo paquete de capa de red. También define un mecanismo para volver a ensamblar segmentos en el receptor. Red Capa Esta capa define cómo se dirigen los paquetes de transporte a través de la red a uno o más nodos. Define la funcionalidad de retransmisión para reenviar mensajes mediante un nodo de retransmisión para ampliar el rango. Maneja el cifrado autenticado de la capa de red utilizando una clave de red. Portador Capa Define cómo se intercambian los paquetes de red entre nodos. La especificación del perfil de malla define el portador de publicidad BLE y el portador GATT BLE. El perfil de malla define el protocolo proxy, a través del cual se pueden intercambiar paquetes de malla mediante otros portadores como TCP/IP.

Tipos de nodos Los nodos que soportan diferentes funciones pueden organizarse en una topología específica de red de malla. Característica Funcionalidad Relé Recibir y retransmitir mensajes de malla a través del portador de publicidad. para permitir redes más grandes. Apoderado Recibir y retransmitir mensajes de malla entre GATT y portadores de publicidad. Bajo consumo Operar dentro de una red de malla con una recepción significativamente reducida ciclos de trabajo solo en conjunto con un nodo que admita la función Amigo. Amigo ayudar a un nodo que admita la función de bajo consumo a funcionar almacenando mensajes destinados a esos nodos.

Límites teóricos Los límites prácticos de la tecnología Bluetooth Mesh aún no se conocen con precisión. Sin embargo, la especificación establece algunas restricciones, entre las cuales se incluyen: Límite para una red Valor Observaciones Número máximo de nodos 32 767 El límite es de 32768 direcciones y, si bien un nodo puede ocupar más de una dirección, el límite práctico probablemente sea menor. Número máximo de grupos 16 384 El número de grupos virtuales es 2 128 . Número máximo de escenas 65 535 Número máximo de subredes 4 096 TTL máximo 127

Modelos de malla Desde la versión 1.0 de la especificación Bluetooth Mesh, los siguientes modelos estándar y grupos de modelos han sido definidos:

Modelos de cimentación Los modelos base están definidos en la especificación principal, y dos de ellos son obligatorios para todos los nodos de la red de 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 modelo 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 la 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 un elemento almacenará 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 de sensores . 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 cambie, de modo que el rango de valores más importante se informe más rápido. Cliente de sensores

Tiempo y escenas

Servidor de tiempo y servidor de configuración de tiempo, que permiten la sincronización horaria en una red de malla Servidor de escenas y servidor de configuración de escenas, que permite 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 y servidor de configuración de luminosidad, que representa una fuente de luz regulable Servidor Light CTL, Servidor Light CTL de Temperatura y Servidor Light CTL de Configuración, que representan una fuente de luz CCT o "blanca sintonizable" 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 representa una fuente de luz basada en el espacio de color CIE xyY modificado. Servidor LC (Control de luminosidad) de luz y servidor de configuración LC de luz, que representa un dispositivo de control de iluminación, capaz de controlar el modelo de luminosidad de luz mediante un sensor de ocupación y un sensor de luz ambiental . Se puede utilizar 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 el proceso de integrar un dispositivo en una red, siendo un paso esencial para la creación de una red Bluetooth Mesh.

Durante el proceso de aprovisionamiento, un aprovisionador distribuye de manera segura una clave de red y un espacio de direcciones único para cada dispositivo. El protocolo de aprovisionamiento emplea el intercambio de claves Diffie-Hellman basado en la curva elíptica P256 para generar una clave temporal que se utiliza para cifrar la clave de red y otros datos. Esto supone mayor seguridad ante un espía pasivo. También proporciona varios mecanismos de autenticación para proteger la información de la red, de un espía activo que utiliza ataques del tipo "man-in-the-middle", durante el proceso de aprovisionamiento.

Una clave única para cada dispositivo, denominada "Clave del dispositivo", se genera a partir de un secreto compartido en forma de curva elíptica entre el aprovisionador y el dispositivo durante el proceso de aprovisionamiento. El aprovisionador emplea esta clave para cifrar los mensajes dirigidos a ese dispositivo en particular.

La seguridad del proceso de aprovisionamiento fue analizada en un artículo presentado en la conferencia IEEE CNS 2018.

El aprovisionamiento puede llevarse a cabo a través de una conexión Bluetooth GATT o mediante publicidad utilizando un portador específico.

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