Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resumen: Internet de las cosas es una tecnología en crecimiento que se desarrolla en múltiples
campos, desde hogares inteligentes hasta la salud y las industrias. Desde una perspectiva
tecnológica, permite el desarrollo de nuevos protocolos y escenarios, ya que el conjunto de
protocolos de red estándar no puede hacer frente al creciente número de dispositivos conectados y
datos transmitidos. Este documento tiene como objetivo presentar varios protocolos
estandarizados, en diferentes niveles de red, desarrollados especialmente para dispositivos
integrados con poca memoria, bajo poder de procesamiento y baja velocidad de datos. También
proponemos escenarios de hogares inteligentes que solo utilicen protocolos estandarizados de IoT.
introduction
Hoy en día, las aplicaciones dependen de la arquitectura web, usando HTTP para obtener
información o actualizaciones. Esto se basa en el estilo arquitectónico REST (Representational
State Transfer), que hace que los recursos estén disponibles a través de URI. HTTP es bastante
complejo para dispositivos IoT pequeños, por lo que IETF especificó un nuevo protocolo basado en
REST CoRE working group. Este protocolo se llama protocolo de aplicación restringida
(CoP), un protocolo de transferencia web que intercambia datos entre servidores y clientes [1].
Utiliza UDP en lugar de TCP en la capa de transporte y define una "capa de mensaje" para tratar
las retransmisiones. Figura 1.
MQTT
Message Queue Telemetry Transport (MQTT) es un protocolo de mensajería que tiene
como objetivo conectar dispositivos integrados con aplicaciones y middleware,
estandarizados en 2003, por OASIS [4]. Está construido sobre la capa TCP y es adecuado
para dispositivos de bajo recurso. Se compone de tres elementos, suscriptor, editor y
corredor. El editor es el que envía los datos y los reenvía a través del intermediario a través
de suscriptores.
El corredor también actúa como un mecanismo de seguridad, pudiendo autorizar ambas
entidades. Dado que utiliza pocos recursos, se usa comúnmente en mensajes de máquina
a máquina, en atención médica, monitoreo o notificaciones de Facebook [2].
El encabezado de un mensaje MQTT tiene una longitud variable, entre 1 y 4 bytes. Los primeros
dos bits son fijos, luego el "Tipo de mensaje" puede obtener uno de los siguientes valores:
CONNECT (1), CONNACK (2), PUBLISH (3), SUBCRIBE (8) u otros. El siguiente campo es el
indicador "DUP". Si está configurado, entonces el mensaje es un duplicado y el servidor puede
haberlo recibido antes. Hay tres niveles de "QoS" para PUBLICAR mensajes que se pueden
encontrar en el encabezado. El campo "Retener" le dice al intermediario que conserve el mensaje y
lo envíe a los suscriptores como primer mensaje [2].
Hay dos especificaciones principales, MQTT y MQTT-SN. El último fue definido para redes de
sensores y fue optimizado para dispositivos de bajo ancho de banda, operados por batería y fallas
de enlace alto. Hay varias diferencias entre las dos implementaciones. En primer lugar, en MQTT-
SN, el mensaje "CONEXIÓN" se divide entre un mensaje obligatorio y dos mensajes opcionales,
que se utilizan para transferir el tema y el mensaje "Voluntad" al servidor. En el mensaje
"PUBLICAR", los nombres de los temas fueron reemplazados por ID. Antes de esto, se enviaban
mensajes de registro para obtener, desde el servidor, una identificación única para un tema
específico. En este caso, los clientes también deben ser informados de antemano por los ID
correspondientes. Además, se pueden agregar temas predefinidos o nombres cortos, para omitir el
registro. Estos son de dos bytes y son conocidos de antemano por los clientes y los editores. Se
agregó un procedimiento de descubrimiento para que los clientes obtengan la dirección de red de
una puerta de enlace operativa que se comunica con el intermediario. Los temas y el mensaje
"Will" son persistentes en el caso de MQTT-SN, y los clientes pueden modificarlos durante una
sesión.
Si los dispositivos están en modo de suspensión, los mensajes dirigidos a ellos se almacenan en el
servidor y se envían cuando se despiertan [6].
Los directorios locales deberían extenderse para brindar información sobre otros
dominios donde haya recursos disponibles. Además, los directorios deben admitir
multidifusión, para consultas tales como "apagar todas las luces en la sala", donde
todos los puntos finales se tratan como uno solo. El acceso a los directorios se
debe hacer de una manera ya conocida y se debe usar una descripción común
para los servicios y atributos [8].
mDNS and DNS-SD
mDNS (RFC6762) [9] es un servicio que puede realizar la tarea de un servidor DNS. En una red
local, cada cliente tiene un caché donde guarda el emparejamiento entre nombres y direcciones.
Cada vez que un dispositivo quiere obtener información de nombre, envía una consulta de
multidifusión y espera una respuesta. La máquina objetivo envía una respuesta de multidifusión en
la red y todos los dispositivos que la reciben guardan el emparejamiento en su caché local. Tiene el
ventaja de que no hay necesidad de un servidor dedicado y también se adapta fácilmente a los
cambios en la red [2].
DNS-SD (RFC6763) [10] es una solución propuesta por IETF ZeroConf WG que
reutiliza y amplía las capacidades del DNS. Utiliza los mismos tipos de consultas (AAA,
PTR) y permite ubicar y publicar servicios en una red [9]. Por ejemplo, los clientes que
desean obtener servicios de impresora en la red usan DNS-SD. Primero tienen que
obtener los nombres de los dispositivos que brindan el servicio requerido, luego usan
mDNS para obtener la dirección. Es esencial encontrar primero el nombre de host,
porque la dirección IP puede cambiar. El principal inconveniente de estos dos
protocolos es la necesidad de mantener entradas de caché en dispositivos con poca
memoria. Bonjour y Avahi son dos implementaciones bien conocidas basadas en DNS.
uBonjour
uBonjour es un servicio liviano que combina mDNS y DNS-SD para direccionar y
descubrir servicios disponibles en una red. Proporciona descubrimiento estandarizado
y autoconfiguración sin ninguna dirección codificada, ambas necesarias en IoT.
Implementa los estándares definidos por los protocolos de DNS y los sistemas pueden
descubrirse entre sí sin ninguna puerta de enlace. Cuando un nodo de IoT solicita un
servicio, se agrega a la base de datos y se borran al recibir un mensaje de "servicio no
disponible" [11].
La resolución de nombres de host se basa en mDNS, lo que significa que se envía una solicitud de
multidifusión. Las respuestas del dispositivo con un registro A, que contiene la dirección. Este
mensaje se transmitirá a todos los dispositivos de escucha. En el caso de los servicios, se envía un
registro PTR de multidifusión. Si se encuentra el nombre del servicio, se envía un mensaje de
difusión que contiene la dirección y el puerto. De lo contrario, se dispara un tiempo de espera [11].
Para publicar un servicio, un nodo IoT debe enviar cuatro registros DNS
estándar y cada aplicación debe registrar una dirección, un nombre de host y
un puerto. Para eliminar un servicio, el dispositivo debe enviar un registro PTR
con el TTL establecido en 0. La actualización de un servicio implica volver a
enviar los cuatro registros con nuevos datos. Ocho registro de servicio son
compatibles por dispositivo [11].
Se pueden obtener optimizaciones adicionales al minimizar el tráfico de datos, mediante el uso de
dos métodos. El primero, Supresión de respuesta conocida. Si un nodo ya tiene una respuesta más
antigua a una consulta y quiere obtener información más nueva, envía una consulta que contiene
no solo la pregunta, sino también los datos que ya tiene. El respondedor no envía nada si la
información correcta ya está en la consulta. De lo contrario, envía actualizaciones. El otro es
Supresión de preguntas duplicadas. Si un servidor desea enviar una consulta y ve que otro
servidor está enviando la misma solicitud, entonces debe esperar la respuesta de difusión [12].
Otra optimización es One-Way Traffic, que pone un dispositivo en modo pasivo. Publica servicios
periódicamente y responde a las solicitudes entrantes. Por lo tanto, evita la resolución activa de
nombres de host y el análisis de consultas desde otros dispositivos.
En la capa de acceso físico y de medios, los protocolos estandarizados están diseñados para
diferentes necesidades. Parte de ellos están especializados para redes locales, que requieren baja
distancia y baja potencia. Están dirigidos especialmente a edificios u hogares inteligentes. Otros
pueden ofrecer un rango alto, pudiendo satisfacer las necesidades de ciudades inteligentes o
entornos industriales.
IEEE 802.15.4
El estándar IEEE 802.15.4 [13] fue especialmente diseñado para dispositivos
incrustados de baja potencia, corto alcance y baja velocidad de bits. Los grupos de
trabajo IEEE 802.15 tienen como objetivo mantener los costos de hardware bajos,
para extender la compatibilidad del protocolo entre los sensores. El protocolo
describe la capa física y la subcapa de control de acceso a medios [14].
6LoWPAN
6LowPAN es desarrollado por un grupo de trabajo IETF especialmente para redes pequeñas y
dispositivos integrados interconectados por IEEE 802.15.4 en RFC4944 [16]. Mantiene una red
IPv6, pero con encabezados comprimidos. Se agrega una nueva capa, entre la red y el enlace de
datos, responsable de la fragmentación, el reensamblaje, la compresión del encabezado y el
enrutamiento de la capa de enlace de datos para el salto múltiple [16]. El primer byte del
encabezado de encapsulación identifica el siguiente encabezado. Los primeros tres bits se utilizan
para la indicación, mientras que los otros tienen diferentes propósitos, dependiendo del tipo de
encabezado. Si son 00x, entonces este no es un cuadro 6LoWPAN y se usan si existe coexistencia
de protocolos. 010 significa sin comprimir o HC1 comprimido y el tipo de la dirección puede
determinarse por los últimos 5 bits. 10x significa que el siguiente encabezado es un encabezado de
malla y los siguientes 5 bits se usan para el enrutamiento. 11x es un encabezado de fragmentación
[16]. HC1 es la técnica de compresión principal definida en RFC4944 [16]. Se utiliza para paquetes
que contienen direcciones de capa de enlace y elimina los campos comunes, como Versión, TC,
etiqueta de flujo, no envía las direcciones de capa de enlace (que se pueden calcular desde el
encabezado 802.15.4) y el prefijo estándar longitud. El siguiente campo de encabezado está
limitado a TCP, UDP e ICMP [16]. RFC 6282 agrega dos nuevas técnicas de compresión,
LOWPAN_IPHC y LOWPAN_NHC. El primero usa 13 bits para la compresión. Elimina el campo
Versión y comprime la clase de tráfico y la etiqueta de flujo en 2 bits. El límite de salto tiene
asignados 2 bits, suponiendo que está configurado en 1, 64 o 255. Las direcciones IPv6 globales
también se transforman y pueden determinarse utilizando bits de compresión de dirección de
origen (SAC) y compresión de dirección de destino (DAC), junto con la dirección de origen Modo
(SAM) [17].
El estándar no especifica ningún mecanismo de seguridad y utiliza las opciones de capa MAC en el
protocolo 802.15.4 [16].
LoRaWAN
Como parte de las tecnologías desarrolladas para IoT se centran en dispositivos
cercanos, LoRaWAN es una solución diseñada para grandes distancias. Es
adecuado para ciudades inteligentes o proyectos de agricultura inteligente, donde
las aplicaciones deben enviar poca cantidad de datos a grandes distancias. El
protocolo consta de dos partes, LoRA, que especifica la capa física capaz de crear
enlaces de comunicación largos y LoRaWAN, que define la arquitectura del
sistema para la red [18].
En el nivel físico, usa el espectro extendido chirp, una señal sinusoidal cuya frecuencia aumenta y
disminuye con el tiempo. Tiene las mismas características que proporciona la modulación FSK,
pero ofrece la ventaja de distancias más grandes [18].
En cuanto a la arquitectura de red, existen cuatro tipos de dispositivos: nodos, puertas de enlace,
servidor de red y servidor de aplicaciones. Los nodos no están asociados a una puerta de enlace
específica, sino que envían datos que pueden ser recibidos por múltiples concentradores.
Cada uno de ellos reenviará los paquetes recibidos a un servidor de red en la nube y será
responsable de filtrar los paquetes duplicados, realizar comprobaciones de seguridad y enviar
acuses de recibo a través de la puerta de enlace óptima. Los nodos son asincrónicos y se activan
cuando tienen datos para enviar o cuando están programados. No necesitan mantener un reloj
interno sincronizado con la red, lo que brinda la ventaja de una mayor duración de la batería. LoRa
se basa en la modulación spreadspectrum, por lo que las señales son ortogonales entre sí cuando
se utilizan diferentes factores de dispersión. Las pasarelas tienen incorporado un transceptor
multimodelo, por lo que pueden escuchar datos en múltiples canales a la vez, y así poder
adaptarse a una gran cantidad de nodos. Los dispositivos cercanos a las puertas de enlace no
cambian a la velocidad de datos más baja, cambian a valores más altos para llenar el espacio,
enviar más rápido y dejar más espacio para que los otros transmitan [18].
Hay tres tipos de dispositivos, Clase A (sensores alimentados por batería), Clase B (actuadores
con batería) y Clase C (actuadores con alimentación principal). Los dispositivos de Clase A son los
más eficientes desde el punto de vista energético, pueden enviar datos y luego tienen dos
ventanas de recepción cortas, cuando esperan los mensajes. Si el servidor no responde en ese
período de tiempo, entonces tiene que esperar hasta recibir otro mensaje del dispositivo. Los
dispositivos de clase B tienen un intervalo de tiempo configurable adicional cuando pueden recibir
información. Para despertarse, la puerta de enlace envía una baliza de sincronización. Los
dispositivos de Clase C pueden obtener datos en cualquier momento, excepto el período de tiempo
cuando están transmitiendo [18].
LoRaWAN integra dos capas de seguridad, una en la red y la otra en la capa de aplicación. El
primero garantiza la autenticación, mientras que el otro cifra los datos para que el operador de red
no pueda acceder a los datos de la aplicación del usuario. Ambos usan AES con una longitud de
clave de 128 bits [18].
A gran escala, en IoT, los dispositivos se pueden dividir en dos categorías: ricos en recursos, los
que admiten la pila TCP / IP y los dispositivos restringidos. Los primeros son los que admiten
aplicaciones desarrolladas sobre CoAP, MQTT, REST, AMQP y otros. Además, los dispositivos
basados en microcontroladores, por ejemplo, deberían tener la capacidad de comunicarse con
dispositivos "inteligentes".
A nivel de aplicación, hay varias soluciones implementadas. Uno de ellos es Ponte, desarrollado
por el grupo Eclipe IoT. Su objetivo es crear un puente entre CoAP, MQTT y HTTP. Expone una
API REST compatible y puede convertir varios formatos de datos, como JSON, XML o Byson.
Funciona
como una puerta de enlace entre CoAP y HTTP, que utiliza el mismo formato de datos y como
intermediario para MQTT.
Otro proyecto de Eclipse es Franca, construido para la industria automotriz, pero puede ampliarse
a entornos IoT. Su objetivo es integrar software de diferentes proveedores, utilizando diversos
marcos, plataformas y herramientas de comunicación entre procesos. Tiene el papel de un centro,
traduciendo el código a otro idioma. Contiene lenguajes de descripción de interfaz y un editor,
mecanismos de generación de código, especificación de comportamiento dinámico entre clientes y
servidores y creación rápida de prototipos de interfaz.
Para la definición de interfaz, Eclipse también proporciona Vorto, una herramienta que mantiene
modelos de metainformación y proporciona generación de código. Los fabricantes de dispositivos
pueden crear un repositorio, utilizando un marco de modelado proporcionado por Eclipse, donde
pueden agregar información sobre funcionalidades proporcionadas. Un desarrollador puede
acceder a los repositorios, invocar la herramienta de generación de código y crear las solicitudes.
Ligero M2M es un protocolo de administración de dispositivos que proporciona una forma unificada
de administrar dispositivos de forma remota. La implementación actual se basa en CoAP y usa
DTLS para seguridad. Define una arquitectura usando objetos REST. Aunque puede aplicarse a
redes de sensores inalámbricos o dispositivos celulares, por ahora solo es compatible con IP [19].
Otro enfoque es la virtualización. Se crea una red IoT-Virtual, donde se incluyen todos los
dispositivos, incluso los de recursos limitados. Se puede establecer sobre la capa 3 para objetados
conectados a Internet, o sobre la capa 2, para sensores restringidos. En el interior, las aplicaciones
y los servicios solo ven la capa lógica. Esto se puede usar al particionar una red de sensores
inalámbricos. Si los dispositivos son mantenidos por diferentes administradores, se pueden dividir
en varias redes virtuales y solo se podrá acceder a una parte de ellas. Esta técnica también se
puede usar para agregar redes de sensores separadas. En este caso, se pueden conectar usando
un túnel de Capa 3 y permitiendo una comunicación segura. Además, una WSN se puede extender
con dispositivos no restringidos, como servidores en la nube que recopilan datos [20].