A capas de comunicaciones: 802.15.4 y ZigBee
IEEE 802.15.4
Esta norma define una capa de comunicación de nivel 2 en el OSI (Interconexión de Sistemas Abiertos). Fue creado por el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE), entidad cuyo principal cometido es establecer normas para que los desarrollos tecnológicos puedan contar con una plataforma común de reglas sobre las que asentarse. En el Waspmote y los dispositivos SquidBee, este protocolo se establece mediante la opción XBee 802.15.4 OEM Módulo Digi.
ZigBee
Esta norma define una capa de comunicación de nivel 3 y superiores en el modelo OSI. Su principal objetivo es crear una topología de red (jerarquía) que permita a una serie de dispositivos comunicarse entre sí y establecer funciones de comunicación adicionales como autenticación, cifrado, asociación y, en la capa superior, servicios de aplicación. Fue creado por un conjunto de empresas que forman la ZigBee Alliance. En la Waspmote y los dispositivos SquidBee, este protocolo se establece mediante la opción XBee ZB Módulo Digi.
Entendiendo 802.15.4
Como ya se ha mencionado, este protocolo se sitúa en el nivel 2 de la OSI. Este nivel se denomina enlace de datos. Aquí las unidades de información digital (bits) se gestionan y organizan para convertirse en impulsos electromagnéticos (ondas) en el nivel inferior, el físico. Esta capa es similar a otras conocidas como la 802.11 (denominada comercialmente bajo tecnologías Wifi) o la Ethernet común (802.3). Las frecuencias definidas en la norma se reparten entre 27 canales diferentes divididos en tres bandas principales:
- 868,0 - 868,6MHz -> 1 canal (Europa)
- 902,0-928,0MHz -> 10 canales (EEUU)
- 2,40-2,48GHz -> 16 canales (en todo el mundo)
Se utilizan tres transceptores XBee diferentes en el Waspmote y SquidBee para proporcionar comunicación en estas frecuencias:
- 868 MHz
- 900 MHz
- 2,40GHz -> XBee 802.15.4 OEM / XBee ZB
Tasas de bits:
- 868,0 - 868,6MHz -> 20/100/250 Kb/s
- 902,0-928,0MHz -> 40/250 Kb/s
- 2,40-2,48GHz -> 250 Kb/s
¿Por qué 802.15.4 es bueno contra el ruido?
Utilizaba el espectro ensanchado de secuencia directa (DSSS) para modular la información antes de enviarla a la capa física. Básicamente, cada bit de información a transmitir se modula en 4 señales diferentes (otro tipo de alfabeto de bits), este proceso hace que la información total a transmitir ocupe un mayor ancho de banda pero utiliza una menor densidad espectral de potencia para cada señal.
Esto provoca menos interferencias en las bandas de frecuencia utilizadas y mejora la relación señal/ruido (SNR) en el receptor, ya que es más fácil detectar y descodificar el mensaje enviado por el transmisor.
Existen distintas modulaciones DSSS en función de los límites físicos del circuito y del número de símbolos que pueden procesarse en un momento dado. Binary Phase Shift Keying (BPSK), Offset Quadrature Phase Shift Keying (O-QPSK) y Parallel Sequence Spread Spectrum (PSSS) permiten la comunicación desde anchos de banda de 20Kb/s a 250Kb/s.
¿Por qué 802.15.4 es bueno contra las interferencias?
802.15.4 utiliza dos técnicas para evitar que todos los nodos empiecen a emitir al mismo tiempo: CSMA-CA y GTS.
El más común es el acceso múltiple con detección de portadora-evitación de colisión (CSMA-CA). Este método se describe del siguiente modo: cada nodo escucha el medio antes de transmitir. Si el energía encontrado más alto de un nivel específico el nodo el transceptor espera durante un tiempo aleatorio (incluso en un intervalo) y vuelve a intentarlo. Existe un parámetro definido en la norma: macMinBE que establece el exponente de retroceso que se utilizará al calcular este intervalo de tiempo.
La segunda son las franjas horarias de garantía (GTS). Este sistema utiliza un nodo centralizado (coordinador PAN) que da franjas horarias a cada nodo para que cada uno sepa cuándo tiene que transmitir. Hay 16 franjas horarias posibles. Como primer paso un nodo debe enviar al coordinador PAN un mensaje de solicitud de GTS, como respuesta el coordinador enviará un mensaje de baliza conteniendo el slot asignado y el número de slots asignados. Waspmote y SquidBee utilizan el CSMA-CA método debido a que es inherente a cada mota y no depende de un servidor central. Hay algunos marcos especiales como el ACK paquetes que no requiere la ejecución de este método.
Una de las funcionalidades implementadas en 802.15.4 es el escaneo de energía del canal (petición PLME-ED). La idea es poder saber cuánta energía (actividad/ruido/interferencias) hay en uno (o varios canales) antes de empezar a usarlo. De esta forma podemos ahorrar energía eligiendo canales libres al configurar la red. Existen tres comportamientos diferentes ante el problema de la detección de energía:
- Energía: escanea los canales e informa de la energía encontrada. No importa si es causada por otros nodos ZigBee o por otra tecnología o ruido. Sólo informa si el espectro está siendo utilizado. Sólo cuando el valor recibido esté por debajo de un cierto umbral transmitiremos.
- Detección de portadora (CCA): escanean el medio e informan si hay transmisiones 802.15.4. Sólo cuando el canal esté libre transmitiremos.
- CCA + Energía: escanea el medio e informa si hay transmisiones 802.15.4 por encima del umbral de energía especificado. Si no es así, utilizaremos el canal.
¿Por qué 802.15.4 es un protocolo de bajo consumo?
Está preparado para trabajar con ciclos de baja potencia. Esto significa que el transceptor puede estar durmiendo la mayor parte del tiempo (hasta 99% de media), mientras que las tareas de recepción y envío pueden configurarse para que consuman sólo una pequeña parte de la energía de los dispositivos. Este porcentaje depende del tipo de modelo de comunicación utilizado. Si modo baliza (redes en estrella o PAN) el tiempo mínimo utilizado para transmitir/recibir estas tramas aumentará el tiempo total de uso del transceptor. Waspmote pueden sincronizarse para que la red tenga ciclos de trabajo mucho menores. Pueden estar durmiendo durante minutos u horas y despertarse todos a la vez para realizar una comunicación Adhoc creando una red mallada justo cuando realmente se necesita.
Potencia de transmisión y sensibilidad de recepción de los transceptores 802.15.4
802.15.4 establece la cantidad mínima de energía necesaria para transmitir en -3dBm, (0'5 mW) y la sensibilidad mínima en el receptor es -92dBm (6'3 * e-10 mW). El módulo de radio Waspmote tiene una potencia de transmisión variable de 0dBm (1mW) en XBee 802.15.4 OEM y 20 dBm (100mW) en el XBee-Pro 802.15.4 OEM, ambos valores son superiores al mínimo establecido en la Norma 802.15.4. En cuanto a la sensibilidad de recepción , el XBee muestra -92Bm (6'3 * e-10 mW) y -100dBm (1 * 1e-10mW) el XBee-Pro sabor.
Esto significa que detectaremos cualquier paquete que nos llegue con una energía tan baja como 0'000000000063mW para el XBee y 0'00000000001mW para el XBee-Pro.
¿Qué hay encima de 802.15.4?
Hay varios protocolos que utilizan 802.15.4 como capa MAC. El más conocido es ZigBee, aunque hay muchos más:
- HART Inalámbrico: Es la versión inalámbrica del protocolo HART más utilizado en las aplicaciones de automatización e industriales que requieren tiempo real. Utiliza el protocolo TSMP (Time Synchronized Mesh Protocol). Se necesita un nodo "coordinador de tiempo" para asignar la franja horaria a todas las motas.
- ISA - SP100: También se centra en la automatización de procesos y fábricas. Está siendo desarrollado por la Sociedad de Sistemas y Automatización (ISA) e intenta ser un estándar para este tipo de proyectos.
- IETF IPv6 - LoWPAN: Como su nombre indica, es la implementación de la pila IPv6 sobre 802.15.4 para permitir que cualquier dispositivo sea accesible y acceda desde y a Internet.
Nuevos protocolos Mesh: Las empresas están implementando muchos protocolos de malla diferentes sobre la capa MAC 802.15.4. Un ejemplo es el protocolo de malla propio de Digi ( Un ejemplo es el protocolo de malla propio de Digi (DigiMesh), que se concibe como un protocolo de malla completamente distribuido en el que todos los nodos pueden dormir y enrutar los paquetes de sus hermanos. Waspmote y SquidBee soportan también el protocolo DigiMesh cuando el XBee 802.15.4 OEM . Documento sobre la aplicación de DigiMesh: DigiMesh-whitePaper.pdf.
Comprender ZigBee
ZigBee ofrece básicamente cuatro tipos de servicios diferentes:
- Servicios adicionales de inscripción (las claves de aplicación y de red implementan un cifrado AES 128b adicional)
- Asociación y autenticación (sólo los nodos válidos pueden unirse a la red).
- Protocolo de enrutamiento: AODV, a protocolo ad hoc reactivo se ha implementado para realizar el proceso de enrutamiento y reenvío de datos a cualquier nodo de la red.
- Servicios de aplicación: Un concepto abstracto llamado "cluster" . Cada nodo pertenece a un clúster predefinido y puede realizar un número predefinido de acciones. Ejemplo: el "clúster del sistema de iluminación de la casa" puede realizar dos acciones: "encender las luces" y "apagar las luces".
ZigBee es una capa pensada para organizar la red. Lo primero que tiene que hacer un nodo (ruta o dispositivo final) que quiera unirse a la red es solicitar al coordinador una dirección de red (16b), como parte del asociación proceso. Toda la información de la red se enruta utilizando esta dirección y no la dirección MAC de 64b. En este paso se realizan los procedimientos de autenticación y encriptación.
Una vez que un nodo se ha unido a la red puede enviar información a sus hermanos a través de los routers que están siempre despiertos esperando los paquetes. Cuando el router recibe el paquete y el destino está en su radio de señal, el router primero mira si el dispositivo final de destino está despierto o dormido. En el primer caso el router envía el paquete al dispositivo final, sin embargo si está durmiendo, el router almacenará el paquete hasta que el nodo del dispositivo final se despierte y pida noticias al router.
¿Es ZigBee un protocolo de malla?
Para responder a esta pregunta tenemos que aclarar qué significa el concepto de malla. Veamos primero cómo funciona una red ZigBee.
Hay tres tipos de nodos en una red ZigBee:
- Coordinadoraes el dispositivo "maestro", gobierna toda la red.
- Enrutadoresenrutan la información enviada por los dispositivos finales
- Dispositivo final(las motas): son los nodos sensores, los que toman la información del entorno
El coordinador y las rutas no pueden funcionar con pilas, las motas sí. ZigBee crea topologías en estrella. Hay algunas reglas básicas:
- Los dispositivos finales se conectan a un router o a un coordinador.
- Los routers pueden conectarse entre ellos y con el coordinador.
- Los encaminadores y coordinadores no pueden dormir. Tienen que guardar en su memoria intermedia los paquetes que van a los dispositivos finales.
- Los dispositivos finales pueden dormir.
El concepto "red mallada" se basa en las comunicaciones ad hoc, también llamadas peer to peer (P2P). Esto significa que todos los dispositivos de la red pueden comunicarse entre sí directamente. Tienen que ser capaces de descubrirse mutuamente y enviar mensajes de difusión a todos los hermanos ("¡Hola!, ¿hay alguien ahí fuera?"). Tienen que ser capaces de crear redes como la representada en la imagen inferior.
ZigBee crea topologías de red de arranque, no de malla. Para crear una red completamente mallada como la que se muestra en la imagen inferior todos los nodos tienen que tener el mismo papeltodos ellos tienen que ser "dispositivos finales + routers" para que puedan encaminar la información de sus hermanos y dormir cuando no sea necesaria ninguna acción (ahorro de energía). El sitio DigiMesh (sobre 802.15.4) establece una red completamente distribuida en la que todos los nodos hablan entre sí mediante datagramas p2p (de igual a igual).
Triple seguridad en ZigBee: Cifrado de las capas de enlace, red y aplicación
ZigBee implementa dos capas de seguridad adicionales a la de 802.15.4: la capa Red y Aplicación capas de seguridad. Los módulos XBee ZigBee integrados en Waspmote también implementan estas dos capas de seguridad adicionales.
Las redes ZigBee necesitan un coordinador para funcionar. Si se activa el cifrado en el coordinador, éste aplicará una política de seguridad a la red cuando se cree.
Activar la seguridad añade un autenticación al proceso de adhesión. Por ejemplo, después de que un enrutador se una a una red, debe obtener el clave de seguridad de la red para autenticarse. Si el dispositivo no puede obtener la clave de seguridad de la red, la autenticación falla y el dispositivo abandona la red, ya que no puede comunicarse con nadie de la red.
En primer lugar, hay que activar la seguridad mediante la siguiente función:
xbeeZB.encryptionMode(1);
La seguridad debe estar activada en todos los nodos, no sólo en el Coordinador.
Las redes XBee ZigBee pueden funcionar utilizando un nodo como Centro de confianza.
A Centro de confianza (TC) es un único dispositivo responsable de determinar quién puede unirse a la red. Si un CT está habilitado, debe aprobar cada router o dispositivo final que quiera unirse a la red. Si un router permite que un nuevo dispositivo se una a la red, el router envía una notificación al TC de que se ha producido una unión. El TC ordena al router que autentique el dispositivo recién incorporado o que fuerce su salida. Algunos perfiles ZigBee públicos requieren un TC.
Para utilizar el TC en una red ZigBee, el coordinador debe configurar correctamente el bit "utilizar centro de confianza" en el parámetro 'Opciones de cifrado' antes de iniciar una red. Sólo el coordinador puede actuar como TC.
La API del Waspmote permite configurar un Coordinador como TC cantando la siguiente función:
xbeeZB.setEncryptionOptions(2):
Las redes XBee ZigBee pueden utilizar tres llaves diferentes:
- Clave de enlacese utiliza para enviar la clave de red cifrada. Si esta clave se establece en cero, entonces la clave se enviará sin cifrar a los nodos de unión. Configurar esta clave utilizando la API Waspmote es tan sencillo como:
xbeeZB.setLinkKey("link_key_secret_");
- Clave de redse utiliza para cifrar todos los datos enviados dentro de la red. Configurar esta clave mediante la API Waspmote es tan sencillo como:
xbeeZB.setNetworkKey("network_key_encr");
- Clave de aplicaciónSe utiliza para cifrar los datos en la capa de aplicación. Es única entre cada par de nodos. Esta clave no es configurable, aunque debemos especificar si se va a utilizar o no con la siguiente función:
xbeeZB.setAPSencryption(XBEE_ON);
Los módulos definen una clave de red y una clave de enlace (clave de enlace del centro de confianza). Ambas claves son de 128 bits y se utilizan para aplicar el cifrado AES a los paquetes de radiofrecuencia.
El coordinador selecciona una clave de seguridad de red mediante el parámetro "Clave de cifrado". Del mismo modo, el coordinador también debe especificar una clave de enlace mediante el parámetro "Clave de enlace".
Cuando un nuevo dispositivo quiere únase a una red segura, debe obtener la clave de red del Coordinador. El coordinador transmitirá la clave de red en claro, o puede cifrarla utilizando un llave de enlace preinstalada. Si el bit "Opciones de cifrado" está configurado para transmitir la clave de red sin cifrar, o si el parámetro "Clave de enlace" está configurado a 0 en el coordinador (seleccione una clave de enlace aleatoria), el coordinador transmitirá la clave de red en claro (sin cifrar). En caso contrario, si el bit "Opciones de cifrado" no está activado y "Clave de enlace" es > 0, la coordinador cifrará la clave de red con la clave de enlace y transmitirá la clave de red cifrada a cualquier dispositivo que se una.
Si un dispositivo que se une no tiene la clave de enlace preconfigurada correcta y la clave de red se envía cifrada, el dispositivo que se une no podrá unirse a la red.
La seguridad de la red requiere Marco de 32 bits contador que debe mantener cada dispositivo. Este contador de tramas se incrementa después de cada transmisión y no puede llegar a 0. Si un vecino recibe una transmisión con un contador de tramas menor o igual que el último contador de tramas recibido, el paquete se descartará.
Para evitar un eventual bloqueo en el que el contador de tramas de un dispositivo llegue a 0xFFFFFFFF, la clave de red debe ser periódicamente actualizado en todos los dispositivos de la red. Para actualizar la clave de red en la red, el coordinador debe emitir el parámetro "Clave de cifrado" con una nueva clave de seguridad. Esto enviará un retransmisión de emisiones en toda la red, haciendo que los contadores de tramas de todos los dispositivos se reinicien a 0 y que los dispositivos empiecen a utilizar la nueva clave de red. Todos los dispositivos también conservarán la clave anterior durante un breve periodo de tiempo hasta que todos hayan cambiado a la nueva clave.
Activar la seguridad disminuye la Carga útil como muestra la siguiente figura, sin embargo vale la pena pagando por esta disminución de la información transmitida y garantizando al mismo tiempo la privacidad de nuestra red.
@16bit Unicast |
Difusión |
|
Cifrado (sin APS) |
66 Bytes |
84 Bytes |
Cifrado (APS) |
62 Bytes |
80 Bytes |
NO Cifrado | 74 Bytes | 92 Bytes |
¿Cuál es la diferencia entre ZigBee y ZigBee-Pro?
Leer el ZigBee frente a ZigBee-Pro artículo.
¿Cuál es la diferencia entre certificado ZigBee y conformidad ZigBee?
Leer el Conformidad con ZigBee frente a certificación ZigBee artículo.
802.15.4 frente a ZigBee, resumiendo...
- 802.15.4 está pensado como protocolo para conseguir comunicaciones punto a punto y energéticamente eficientes.
- ZigBee define servicios adicionales (enrutamiento de topología de inicio, cifrado, servicios de aplicación) sobre 802.15.4.
- ZigBee crea redes semicentralizadas en las que sólo pueden dormir los dispositivos finales
- Se están utilizando diferentes algoritmos de malla completamente distribuida sobre 802.15.4 es el protocolo utilizado para crear
Ambos Waspmote y SquidBee se benefician de todos los 802.15.4, ZigBee y DigiMesh protocolos y admiten todas las bandas de frecuencia 869 MHz, 900 MHz y 2,4 GHz.
802.15.4 / ZigBee Respuestas y preguntas frecuentes (FAQ)
- ¿Pueden las motas sensoras 802.15.4 hablar entre sí directamente? Sí. Pueden enviar paquetes directamente a cualquiera de sus hermanos que estén dentro del alcance.
- ¿Pueden las motas sensoras ZigBee comunicarse directamente entre sí? Las motas sensoras no pueden comunicarse entre sí directamente. Tienen que hacerlo a través de un router o dispositivo coordinador.
- ¿Pueden los nodos 802.15.4 vivir con pilas? Sí- Se trata de encontrar un algoritmo de sincronización que haga que todos envíen y reciban al mismo tiempo. El protocolo DigiMesh
- ¿Pueden los nodos Zigbee vivir con pilas? No todos, al menos los routers y el coordinador deben estar alimentados por enchufe. Los dispositivos en pueden funcionar con pilas
- ¿Pueden comunicarse los nodos 802.15.4 y los ZigBee? No. Como se ha indicado anteriormente, tienen metodologías y procedimientos de comunicación diferentes.
XBee 802.15.4 OEM vs XBee ZB vs ZNet2.5 Comparativa
- ¿Cuáles son las diferencias entre XBee 802.15.4 OEM, XBee ZB y XBee ZNet 2.5?
- ¿Son compatibles?
- ¿Puedo actualizar el firmware que se ejecuta en estos módulos?
- ¿Puedo transformarlas de un tipo a otro?
Todas las respuestas se encuentran en el siguiente artículo XBee 802.15.4 OEM vs XBee ZB vs ZNet2.5 Comparativa artículo.
Referencias externas: