Puesta en marcha de la red Thread: Border Router, OTBR y diseño de topología de malla
Thread es un protocolo de red mallada IPv6 de bajo consumo basado en IEEE 802.15.4 que proporciona una infraestructura de malla auto-curativa conectada al Border Router para dispositivos Matter en edificios. A diferencia de Zigbee, Thread es nativo IP – cada nodo tiene una dirección IPv6 y es directamente accesible desde la red troncal IP a través del Border Router, eliminando las puertas de enlace de traducción de protocolo.
Fundamentos de radio y red Thread
Thread opera en la capa física y MAC IEEE 802.15.4 a 2,4 GHz utilizando 16 canales (canales 11–26, espaciado de 5 MHz, 250 kbit/s). La capa de red es IPv6 comprimido mediante 6LoWPAN. Thread utiliza seguridad TCAT derivada de DTLS para la puesta en marcha y AES-128-CCM para todo el tráfico de malla. El protocolo es mantenido por el Thread Group (threadgroup.org), con la especificación disponible gratuitamente para los miembros.
| Parámetro | Valor | Notas |
|---|---|---|
| Frecuencia | Banda ISM de 2,4 GHz | Misma banda que Wi-Fi 2,4 GHz y Zigbee: se requiere planificación de canales |
| PHY / MAC | IEEE 802.15.4-2015 | 250 kbit/s, DSSS, modulación OQPSK |
| Red | IPv6 con 6LoWPAN | La compresión de encabezado reduce IPv6 a ~40 bytes en una trama 802.15.4 de 127 bytes |
| Seguridad de malla | AES-128-CCM | Cifrado a nivel de red, autenticación por trama |
| Máx. nodos | 250+ por partición Thread | Múltiples particiones conectables mediante router backbone |
| Alcance interior típico | 10–15 m por salto (paredes de hormigón) | LOS: ~50 m; la malla extiende la cobertura |
| Máx. saltos | Sin límite estricto (práctico: 10–15) | Cada salto añade ~5–10 ms de latencia |
| Corriente de sueño (SED) | ~5–15 µA típico | Sleepy End Device: se despierta cada 10–1000 ms para la consulta al padre |
Coexistencia de canales: Thread a 2,4 GHz se superpone con los canales Wi-Fi de 2,4 GHz. Use el canal Thread 15 o 20 (libre de los canales Wi-Fi 1, 6 y 11) para minimizar interferencias. Si el edificio usa Wi-Fi de 2,4 GHz intensamente, realice un análisis de espectro (Wireshark + sniffer 802.15.4, o diagnóstico OTBR) antes de seleccionar el canal Thread.
Roles de nodo
Los nodos Thread se autoorganizan en roles según la capacidad y la calidad del enlace. La asignación de roles es automática y dinámica: un Router puede ser degradado si la conectividad de la malla mejora, y un Dispositivo final puede ser ascendido si la malla necesita más capacidad de enrutamiento. Comprender los roles es esencial para la planificación de la topología porque el tamaño de la tabla del router, el intervalo de suspensión y la asignación del padre afectan directamente el éxito de la puesta en marcha y la confiabilidad continua.
| Rol | Abrev. | Características | Dispositivo típico |
|---|---|---|---|
| Líder | L | Uno por partición; gestiona la tabla del router, asignaciones de prefijos, datos de red. Elegido automáticamente. | Cualquier dispositivo Thread alimentado por red |
| Enrutador | R | Reenvía tráfico de malla; mantiene tabla de vecinos; máximo 32 enrutadores por partición. Solo alimentado por red. | Enchufes inteligentes, bombillas, termostatos |
| Dispositivo final elegible como enrutador | REED | Puede convertirse en enrutador si es necesario; se comporta como dispositivo final hasta ser promovido. | Dispositivos alimentados por red con ≥48 KB de RAM |
| Dispositivo terminal completo | FED | Permanece activo; tiene un router padre; no enruta; recibe mensajes directos. | Sensores, pantallas alimentados por red |
| Dispositivo terminal durmiente | SED | Consulta al router padre en un intervalo configurable (10 ms–10 s); radio apagada entre consultas. | Sensores de batería, PIR, contactos de puerta |
| Dispositivo terminal dormido sincronizado | SSED | Sueño coordinado con el padre para un control de latencia más estricto (Thread 1.3+). | Actuadores a batería que requieren respuesta rápida |
Planificación del intervalo de sondeo SED: Un dispositivo terminal dormido con un intervalo de sondeo de 10 segundos tiene una latencia máxima de comando de 10 segundos (el comando llega justo después de un sondeo). Para interruptores de luz y sensores de presencia que controlan la iluminación, use intervalos de sondeo de 250 ms o menos – a costa de un mayor consumo de batería. Para sensores de contacto de puerta/ventana donde la duración diaria de la batería importa más que el tiempo de respuesta, los intervalos de 10 segundos son aceptables.
Router fronterizo: OTBR y alternativas comerciales
El enrutador fronterizo Thread (Thread Border Router) es la puerta de enlace entre la malla Thread (802.15.4) y la red troncal IP (Ethernet o Wi-Fi). Proporciona NAT64 (para sistemas IPv4 heredados), DNS64, DHCPv6-PD y enrutamiento fuera de la malla. Una red Thread requiere al menos un enrutador fronterizo para permitir el comisionado Matter desde un dispositivo conectado por IP y para que el controlador de fabric Matter pueda alcanzar dispositivos solo Thread.
| Enrutador fronterizo | Pila Thread | Soporte de fabric Matter | Notas |
|---|---|---|---|
| OTBR (Raspberry Pi / Linux) | OpenThread 1.3 | Cualquiera – se integra con HA, chip-tool | Acceso de diagnóstico completo; recomendado para proyectos comerciales |
| Apple HomePod mini (2.ª generación) | Apple Thread 1.3 | Apple Home fabric | Configurado automáticamente; sin acceso del usuario al conjunto de datos Thread |
| Apple HomePod (2.ª generación) | Apple Thread 1.3 | Apple Home fabric | Igual que HomePod mini; preferido para espacios grandes |
| Apple TV 4K (3.ª generación, Ethernet) | Apple Thread 1.3 | Apple Home fabric | Conexión Ethernet preferida para estabilidad del router fronterizo |
| Google Nest Hub (2.ª gen.) | Google Thread 1.3 | Google Home fabric | Autoconfigurado; acceso de diagnóstico limitado |
| Google Nest Hub Max | Google Thread 1.3 | Google Home fabric | Igual que Nest Hub 2.ª gen. |
| Nanoleaf Thread Border Router | OpenThread 1.3 | Apple + Google mediante conjunto de datos compartido | BR dedicado; expone la interfaz web OTBR |
| Home Assistant SkyConnect USB | OpenThread 1.3 | Servidor HA Matter | Dongle USB; actúa como BR cuando el complemento HA OTBR está habilitado |
Creación del conjunto de datos Thread y configuración OTBR
El Thread Operational Dataset (OTDS) es el conjunto de parámetros de red que definen una partición Thread. Todos los dispositivos en la misma red Thread deben tener el mismo Active Operational Dataset. Al usar OTBR en Linux (Raspberry Pi o equivalente), el conjunto de datos se crea durante la inicialización de OTBR y se puede inspeccionar y exportar a través de la API REST OTBR o la herramienta de línea de comandos ot-ctl.
Instalación de OTBR y creación del conjunto de datos (Ubuntu / Raspberry Pi OS)
# Install OTBR (automated script — pulls Docker image or builds from source) curl -sL https://raw.githubusercontent.com/openthread/ot-br-posix/main/script/bootstrap | sudo bash -s -- --no-mdns sudo INFRA_IF_NAME=eth0 ./script/setup # Or via Docker (recommended for reproducible builds): docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it openthread/otbr:latest --radio-url spinel+hdlc+uart:///dev/ttyUSB0 # Generate a new Thread dataset via ot-ctl: sudo ot-ctl dataset init new sudo ot-ctl dataset channel 15 # Set channel (avoid Wi-Fi overlap) sudo ot-ctl dataset networkname PanelCraft-Thread sudo ot-ctl dataset commit active sudo ot-ctl ifconfig up sudo ot-ctl thread start # Verify dataset: sudo ot-ctl dataset active # Shows full OTDS in TLV format sudo ot-ctl state # Should show: leader # Export dataset as hex (for import into other Border Routers): sudo ot-ctl dataset active -x
Interfaz web OTBR — campos clave
OTBR web UI accessible at: http://<border-router-ip>:80 Thread Network Configuration page shows: Network Name: PanelCraft-Thread Extended PAN ID: 6c32fcf3fe56e68b (random 8 bytes — unique per network) Network Key: d3aba6ca7f1d8e12... (128-bit AES key — keep confidential) PAN ID: 0x4f2b (16-bit, random) Channel: 15 On-Mesh Prefix: fd11:22::/64 (ULA prefix assigned by Leader) Status page shows: Role: Leader / Router / Detached RLOC16: 0x2000 (16-bit routing locator) Ext Address: ba:c7:3a:01:... (64-bit IEEE extended address) Neighbours: 3 routers, 5 end devices
Diseño de topología: colocación de routers frontera y cobertura de routers
La malla Thread es auto-curativa pero no auto-optimizante para la colocación inicial. Una mala colocación de routers frontera y routers da como resultado mallas particionadas, recuentos de saltos excesivos y dispositivos durmientes que no pueden encontrar un padre estable. Las siguientes reglas se aplican a implementaciones en edificios comerciales.
Reglas de colocación de routers frontera
- Coloque al menos 2 routers frontera por piso para redundancia: si uno falla, la malla permanece conectada al backbone IP
- Conecte los routers frontera mediante Ethernet, no Wi-Fi: elimina la doble latencia inalámbrica y mejora la estabilidad
- Ubique cerca del centro del clúster de dispositivos Thread que sirven, no en el borde de la red IP
- Mínimo 1 BR por cada 500 m² en planta abierta; 1 BR por cada 250 m² con muros de núcleo de hormigón
- Los routers frontera no necesitan estar en alcance de RF entre sí: se conectan a través del router backbone Ethernet
Reglas de densidad de enrutadores
- Thread promueve automáticamente REEDs a enrutadores cuando hay menos de 16 enrutadores en la partición
- Objetivo: cada SED debe tener al menos 2 enrutadores a un salto – sin dependencia de un solo padre
- En implementaciones densas de sensores (50+ SED por habitación): asegure al menos 4 enrutadores alimentados por red por cada 100 m²
- Los enchufes inteligentes y los controladores de iluminación de red son candidatos ideales para enrutadores – siempre encendidos, bien distribuidos
- Máximo 32 enrutadores por partición Thread – diseñe edificios grandes como múltiples particiones si es necesario
Riesgo de división de partición:Si los dispositivos Thread de un piso pierden contacto con todos los enrutadores conectados al enrutador fronterizo, forman una partición separada con su propio líder pero sin conectividad a Internet/IP. Los comandos Matter del controlador de tejido agotarán el tiempo de espera. Solución: agregue un dispositivo con capacidad de enrutador en el límite o mejore la ruta de la señal. Detecte particiones a través de la vista de topología OTBR (muestra clústeres de nodos aislados).
Diagnóstico: herramientas OTBR y comprobaciones de salud de la malla
La salud de la malla Thread debe verificarse después de la puesta en marcha inicial y periódicamente durante la ocupación del edificio. OTBR proporciona una API REST y la CLI ot-ctl para diagnóstico; la interfaz web de OTBR proporciona un gráfico de topología para inspección visual.
Comandos de diagnóstico clave de ot-ctl
# Network state and role sudo ot-ctl state # leader / router / child / detached / disabled sudo ot-ctl channel # Current operating channel sudo ot-ctl panid # 16-bit PAN ID # Router and neighbour table sudo ot-ctl router table # All routers in partition: RLOC16, ext addr, link quality sudo ot-ctl neighbor table # Direct neighbours: role, RLOC16, link margin, RSSI # Link quality (RSSI) to specific neighbour sudo ot-ctl neighbor linkinfo <rloc16> # Look for: link margin >10 dBm is good; <5 dBm is marginal # End device child table (children of this router) sudo ot-ctl child table # Shows: child ID, mode (SED/FED), poll interval, age # Partition info sudo ot-ctl partitionid # Partition ID — should be same on all nodes sudo ot-ctl leaderdata # Leader RLOC, partition weight, data version # Network topology (via OTBR REST API) curl http://localhost:8080/api/v1/node/rloc16 curl http://localhost:8080/api/v1/topology # Full mesh topology JSON # Ping a Thread node by IPv6 address sudo ot-ctl ping fd11:22::1 # Replace with node's mesh-local EID
| Métrica de diagnóstico | Valor saludable | Acción si está fuera de rango |
|---|---|---|
| Margen de enlace al padre (SED) | > 10 dBm | Añadir router intermedio o acercar el dispositivo al router |
| Recuento de tabla de enrutamiento | 2–32 | < 2 Routers: add mains-powered device; > 32: split partition |
| Consistencia del ID de partición | Igual en todos los nodos | IDs diferentes: división de partición — verificar brecha de cobertura RF |
| Intervalo de sondeo hijo (SED) | 250 ms – 10 s (específico de la aplicación) | < 100 ms: excessive battery drain; > 30 s: unacceptable latency |
| Ping RTT local a la malla | < 100 ms | > 200 ms: excessive hop count or congestion — review topology |
¿Necesita una malla Thread diseñada y puesta en servicio para su edificio?
Diseñamos topologías de malla Thread para edificios comerciales: colocación de Border Router, planificación de canales, modelado de densidad de dispositivos finales inactivos, implementación de OTBR y verificación completa de la integridad de la malla con documentación de puesta en servicio.
Solicitar presupuesto →