Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE REFERENCIA
EN EL
INTERNET OF THINGS
WhitePaper
1
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Índice
Introducción 3
Internet of Things – Overview 4
¿Hay valor en una arquitectura de referencia para IoT? 7
Requerimientos para una arquitectura de referencia 8
Comunicaciones y conectividad 9
Control y gestión de los dispositivos 9
Captación, análisis y actuación de la información 10
Escalabilidad 11
Seguridad 11
La arquitectura 14
WhitePaper
Capa de dispositivos 15
Capa de comunicaciones 16
Capa de agregación/Bus 19
Capa de procesamiento de eventos y analítica 20
Capa de comunicaciones externas/clientes 21
Device Management 22
Control de acceso e identidades 23
Conclusiones 24
2
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Introducción
Después de ver estos ejemplos, tenemos claro que no existe una única arquitectura
WhitePaper
que pueda ajustarse a todas las áreas y a sus requerimientos. Lo ideal sería una
arquitectura escalable y modular que pudiera suportar, añadir o quitar bloques
según las necesidades. Esta soportaría una gran variedad de casos de uso y de sus
requerimientos, lo cual supondría un punto de partida para crear soluciones IoT
con una buena base para un posterior desarrollo.
3
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
La arquitectura que proponemos es agnóstica a cualquier proveedor y/o
tecnología, aunque sí que está influenciada en gran parte por los mejores
proyectos y tecnologías Open Source. Además, proporcionamos un mapping de
esta arquitectura con las tecnologías que más usamos (WSO2 y RedHat) y que se
han implementado y probado en múltiples escenarios.
También exploramos nuevas áreas donde esta arquitectura podría ser extendida,
como también áreas dónde pronto veremos una gran inversión.
Cuando hablamos del Internet de las cosas (Internet of Things, IoT), nos referimos
a una serie de dispositivos y sistemas que interconectan los sensores y actuadores
WhitePaper
del mundo real a Internet para virtualizarlos. Esto incluye diferentes sistemas,
como:
4
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
El crecimiento en número y variedad de dispositivos que están captando datos ha
crecido exponencialmente en muy poco tiempo. Un estudio de Cisco1 estima que
el número de dispositivos conectados sobrepasó a la población total mundial en
2010, y que habrá 50 billones de dispositivos conectados en 2020.
Cuando hablamos de IoT, existen dos aspectos clave que solemos destacar: Los
propios dispositivos y la arquitectura server-side que los soporta. De hecho,
también podríamos decir que hay un tercer aspecto clave, y es que en muchos
casos habrá una Gateway de bajo consumo que realiza la colección de datos y que
se encuentra entre los dispositivos conectados y la red de Internet.
1
https:// www.cisco.com/web/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf
5
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Hay tres clases de dispositivos IoT:
6
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
El siguiente esquema muestra los dos modos de conectividad más comunes.
WhitePaper
En esta sección hemos hecho un resumen de los dispositivos y sistemas IoT. Con la
información que hemos proporcionado, podremos entender los requerimientos y
capacidades que se plantean más adelante.
A continuación detallamos las razones por las cuales consideramos positiva una
arquitectura de referencia para IoT:
• Los dispositivos IoT son completamente inertes. Necesitamos alguna vía para
interactuar con ellos, aunque muchas veces con obstáculos en el camino, como
firewalls, network address translation (NAT) y otros dispositivos, que nos dificultaran
esta interacción.
7
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
• Ya hay billones de dispositivos y crecen exponencialmente en número. Necesitamos
una arquitectura escalable. Además, estos dispositivos están activos las 24 horas
del día, por lo que necesitamos una alta disponibilidad que soporte el despliegue a
través de los data centers y que nos permita la recuperación de desastres (Disaster
Recovery).
• Puede que los dispositivos no tengan UI (User Interface) y se hayan diseñado para
un uso diario. Por lo tanto, necesitamos poder gestionar de manera automática las
actualizaciones y también controlarlos remotamente.
• Los dispositivos IoT, mayoritariamente, se usan para recolectar y analizar información
personal. Esto nos lleva a pensar en un modelo para controlar y gestionar la
identidad y el acceso a los dispositivos, incluyendo los datos que se publican y se
consumen.
• Comunicaciones y conectividad
• Gestión y control de dispositivos
• Captación, análisis y actuación de la información
• Escalabilidad
• Alta disponibilidad
• Análisis predictivo
• Integración
8
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Comunicaciones y conectividad
Los protocolos, como HTTP, tienen un papel importante en muchos dispositivos. Incluso
un microcontrolador de 8 bits puede crear un simple GET y/o POST. Pero el consumo de
HTTP y/u otros protocolos tradicionales de Internet pueden llegar a ser un problema por
dos razones principales. Para empezar, el tamaño del programa puede ser un problema
en dispositivos pequeños, además de que los mayores problemas acostumbran a ser de
consumo. Para poder cumplir las especificaciones necesarias necesitamos un protocolo
simple, pequeño y binario en el cual entraremos en detalle más adelante. También es
importante y necesario el poder cruzar los firewalls.
Gateway al Cloud.
Obviamente, vemos que hay una necesidad en nuestra arquitectura para soportar el
bridging. Por ejemplo, deberíamos poder ofrecer un protocolo binario al dispositivo,
pero a la vez también permitir el acceso a una API basada en HTTP para controlar el
dispositivo y que pueda ser usada por terceros.
Hemos visto que la gestión activa de PCs, smartphones, y otros dispositivos ha llegado a
ser casi imprescindible, por lo que podemos pensar que a los dispositivos IoT les espera
la misma trayectoria. ¿Cuáles serían los requerimientos para la gestión de dispositivos
IoT?
9
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
La siguiente lista cubre algunos de los más deseados:
La lista propuesta no es imperativa y también puede que cubra aspectos que en ciertos
dispositivos no sean necesarios o posibles.
Algunos dispositivos disponen de algún tipo de UI, pero en general los dispositivos IoT
se centran en ofrecer uno o más sensores, uno o más actuadores, o la combinación de
los dos. Los requerimientos de los sistemas son: poder captar datos de un gran número
de dispositivos, almacenarlos, analizarlos, y actuar sobre ellos.
Las acciones deberían ser en “casi tiempo real”, por lo que se requiere una gran
capacidad de análisis de la información en tiempo real, además de la habilidad de los
dispositivos de analizar y actuar en referencia a la información. En algunos casos será
simple, lógica embedded. Pero en dispositivos más potentes se pueden utilizar motores
de procesamiento para tratamiento de eventos y acciones.
10
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Escalabilidad
Seguridad
La seguridad es uno de los aspectos más importantes en IoT. Los dispositivos están
WhitePaper
Siguiendo con los ejemplos, podemos hablar del famoso caso de los investigadores de
una universidad que, con ingeniería inversa, consiguieron romper la Mifare Classic RFID
card solution2. Los ataques de ingeniería inversa son un problema comparados con
soluciones basadas puramente en web dónde a menudo no hay código al que atacar.
11
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Dos temas importantes sobre la seguridad en IoT son la gestión de la identidad y el
acceso. La identidad es un problema con el que a veces encontramos implementacio-
nes muy pobres. Por ejemplo, el uso de usuario/contraseña codificado en base64 con
dispositivos y machine-to-machine (M2M) es un error muy común. Idealmente, esto
debería ser reemplazado por token gestionados como los proporcionados por OAuth/
OAuth23.
WhitePaper
2
https:// www.cisco.com/web/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf
12
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Otro tema común es el hard-coding de las reglas de control de acceso en el código
del cliente o el servidor. Un enfoque más flexible y potente es la utilización de modelos
como “Attribute Based Access Control” (Contro de acceso basado en atributos) y “Policy
Based Access Control” (Control de acceso en políticas). Los mejores modelos, en
referencia al enfoque anterior, son los que proporciona XACML standard4. Estos eliminan
las decisiones sobre el control de acceso de la lógica hard-coded y la externalizan en
políticas, que se traducen en lo siguiente:
3 http://oauth.net/
4 https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml
13
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
La arquitectura
Esta arquitectura tiene diversos componentes. Las capas se pueden identificar como
tecnologías específicas, y plantearemos opciones para identificar cada componente.
También veremos capas que afectan tanto horizontal como verticalmente, como la
gestión de acceso e identidad.
WhitePaper
• Device Manager
• Control de acceso e identidades
14
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Capa de dispositivos
En ambos casos hay muchos más ejemplos, aunque no se utilicen de forma frecuente.
Cada dispositivo necesita una identidad, la cual puede ser una de las siguientes:
15
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Capa de comunicaciones
HTTP es muy conocido y hay muchas librerías que lo soportan. Dado que es un protocolo
simple basado en texto, muchos dispositivos pequeños como los controladores de 8
WhitePaper
bits lo pueden soportar parcialmente (por ejemplo, sólo recursos como POST o GET).
Por otro lado, dispositivos con más capacidad como los de 32 bits, pueden utilizar
librerías con un cliente completo de HTTP, el cual puede implementar todo el protocolo.
Hay algunos protocolos optimizados para el uso en IoT, como MQTT5 y CoAP6. MQTT
fue inventado en 1999 para resolver los problemas en los sistemas embedded y
SCADA. Ha habido varias iteraciones pero la versión actual (v3.1.1) está bajo estandari-
zación en el OASIS MQTT Technical Committee7. MQTT es un sistema de mensajería
publish-subscription basado en un modelo bróker. El protocolo tiene una pequeña
cabecera (2 bytes por mensaje), y fue diseñado para trabajar en conexiones pobres y
con cortes intermitentes.
MQTT fue diseñado para correr sobre TCP. Además, existe MQTT-SN (Sensor networks)
una especificación diseñada para redes basadas en ZigBee.
CoAP es un protocolo del IETF (Internet Engineering Task Force8) que se ha diseñado
para proporcionar aplicaciones RESTful modeladas en la semántica de HTTP, pero más
pequeño y binario a diferencia del basado en texto. CoAP es un enfoque tradicional de
cliente-servidor en comparación al de brokers, diseñado para correr sobre UDP.
16
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Para la arquitectura de referencia hemos optado para seleccionar MQTT como principal
protocolo de comunicación contemplando HTTP como opción alternativa.
Las principales razones para haber seleccionado MQTT y no CoAP son:
De todos modos, los dos protocolos tienen fortalezas (y debilidades) específicas y por
eso puede que haya situaciones donde CoAP podría ser el mejor candidato y puedan
ser intercambiados.
Para soportar MQTT necesitamos un MQTT bróker en la arquitectura y las librerías
para el dispositivo. Hablaremos de esto mas adelante en referencia a seguridad y
escalabilidad.
WhitePaper
17
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Una vez más, para la arquitectura de referencia, recomendamos usar como protocolo
MQTT con WebSockets. En algunos casos, MQTT sobre WebSockets será la única
opción. En estos casos es aún más firewall-friendly que la especificación MQTT
base, así como el soporte de los puros browser/JavaScript clients utilizando el mismo
protocolo.
Hay que tener en cuenta que mientras haya algún tipo de soporte para WebSockets
en pequeños controladores, como Arduino, la combinación de código de red, HTTP y
WebSockets, utilizará la mayoría del código disponible en un típico Arduino de 8 bits.
Por lo tanto, recomendamos que se utilicen WebSockets solo en dispositivos de 32 bits.
WhitePaper
18
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Capa de agregación/Bus
1. El soporte de un servidor HTTP y/o un broker MQTT para hablar con los dispositivos.
2. La agregación y combinación de comunicaciones de diferentes dispositivos y de
enrutar las comunicaciones hacia un dispositivo especifico (posiblemente via un
Gateway)
3. La habilidad de hacer un puente y transformar diferentes protocolos. Por ejemplo:
ofrecer APIs basadas en HTTP que interceden un mensaje MQTT que va a un
dispositivo.
Esta capa proporciona las anteriores capacidades mencionadas así como la adaptación
WhitePaper
19
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Capa de procesamiento de eventos y analítica
Esta capa coge los eventos del bus y proporciona la posibilidad de procesarlos y
actuar sobre estos. Una capacidad esencial es la de guardar los datos en BBDD. Hay
tres posibles maneras de hacerlo. 1) El modelo tradicional, el cual sería una aplicación
server-side (por ejemplo, podría ser una aplicación JAX-RS respaldada por una base
de datos; aun así, hay otras dos posibilidades donde podemos soportar planteamientos
más ágiles). 2) Usar una plataforma de big data analytics, ya que es cloud y escalable
y, además, soporta tecnologías como Apache Hadoop para proporcionar soluciones
altamente escalables de mapreduce analytics para poder tratar la información que
proviene de los dispositivos. 3) Por otro lado, otra manera es el procesamiento de
eventos complejos para soportar actividades de casi tiempo real y acciones basadas en
la información de los dispositivos y del sistema.
WhitePaper
20
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Capa de comunicaciones externas/clientes
El principal consejo para construir un front end web es utilizar una arquitectura front
end modular, como por ejemplo un portal, que permite composiciones de UIs (user
WhitePaper
21
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Device Management
El device manager también debe mantener la lista de IDs de los dispositivos mapeadas
con las IDs de los propietarios de estos. También trabaja con la capa de gestión de
accesos e identidades para controlar el acceso a los dispositivos (por ejemplo, quién
puede gestionar el dispositivo a parte de su propietario, qué control tiene el usuario vs el
WhitePaper
administrador, etc).
Los dispositivos no gestionados pueden comunicarse con toda la red, pero no tienen
ningún agente involucrado. Esto incluye dispositivos de 8 bits en los cuales las reservas
son muy pequeñas para soportar el agente. El device manager pude guardar la
información de la disponibilidad y la localización del dispositivo cuando esté disponible.
Los semi gestionados son los que implementan alguna parte del DM, como por ejemplo
control, pero no software de administración.
22
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Control de acceso e identidades
La capa de identidades puede tener otros requerimientos específicos para otro tipo de
instancias de administración. En esta sección hemos descrito los componentes más
WhitePaper
23
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
Conclusiones
Esperamos que sea útil, efectiva y fácilmente desplegable. Próximamente, habrá nuevas
release de papers relacionados con IoT y su ecosistema.
24
Arquitectura de referencia en el Internet of Things | Sunqu | 2016
WhitePaper
25
Arquitectura de referencia en el Internet of Things | Sunqu | 2016