(tiempo de lectura estimado: 20 min)
En este nuevo artículo vas a poder ver una propuesta de arquitectura IoT que es capaz de adaptarse a los cambios en la red llamada SmartFog. Se trata de una red Fog de dispositivos que se encarga de poner en contacto las redes de sensores con las aplicaciones desplegadas en la nube. Con el funcionamiento propuesto la red Fog es capaz de reaccionar cuando un nodo es añadido o desaparece de la red cambiando su estructura, y además realiza agrupaciones de nodos que tienen características parecidas y que se encargan de ejecutar las tareas encargadas por las aplicaciones en el Cloud.
Contenido
SmartFog, una arquitectura IoT adaptativa que funciona como un cerebro
Kimovski, D., Ijaz, H., Surabh, N., & Prodan, R. (2018). An Adaptive Nature-inspired Fog Architecture. Retrieved from http://arxiv.org/abs/1803.03444
Abstract (traducción literal)
En la última década la computación en la nube ha explotado eficientemente la economía de escalas mediante la oferta de recursos de computación y almacenamiento de bajo coste a través de Internet, liderando la consolidación de recursos en grandes centros de datos.
Sin embargo, el nacimiento de las tecnologías IoT altamente descentralizadas que no puede usar de forma efectiva las infraestructuras centralizadas del Cloud empuja hacia la dispersión de recursos. El Fog computing o computación en la niebla extiende el paradigma del Cloud facilitando la dispersión de los recursos de computación y almacenamiento hacia el borde de la red en un lugar más cercano a donde el dato ha sido generado.
En esencia, el Fog computing facilita la operación de recursos limitados en computación, almacenamiento y networking que estén físicamente cerca de los dispositivos. Sin embargo, el complejo reparto del Fog y la influencia de las tendencias recientes del IoT que lleva hacia el despliegue e interconexión de conjuntos extremadamente grandes y ubicuos de dispositivos y sensores, requiere de la exploración de arquitecturas Fog adaptativas que sean capaces de adaptarse y crecer en respuesta a patrones de carga impredecibles de las aplicaciones IoT.
En este artículo presentamos una nueva arquitectura Fog inspirada en la naturaleza, llamada SmartFog, capaz de conseguir tomar decisiones con baja latencia y la gestión de recursos de manera adaptativa. Con el uso de novedosos algoritmos y técnicas del campo de la toma de decisiones multicriterio, teoría de grafos y machine learning hemos modelado el Fog como un sistema de procesamiento inteligente y distribuido, por lo tanto emulando las funciones del cerebro humano.
Introducción al SmartFog
Las aplicaciones en el Cloud nos pueden dar una falsa impresión de proximidad, debido a su rapidez de respuesta y sus escasos casos de fallos de plataforma. Pero como te digo se trata solamente de una impresión. Las aplicaciones IoT no pueden permitirse tener que ir a la nube y volver con los datos procesados o que un fallo en las comunicaciones les deje sin acceso a la red sensores.
En este artículo los autores nos proponen una arquitectura donde las aplicaciones se despliegan desde la nube, pero luego organizan una red de nodos, una arquitectura Fog, que les da acceso y comunicación con la red de sensores.
Esta arquitectura requiere de una organización automática de la red Fog, eligiendo de forma automática las pasarelas, o gateways, que harán de puntos de conexión con la nube, y agruparán a los nodos del Fog por funcionalidad. De esta manera se generan clusters de nodos con funcionalidades similares que ejecutarán los trabajos y tareas encargados por la red de sensores o desde las aplicaciones en la nube.
Es más, la red se adapta a los cambios inherentes a las aplicaciones IoT, donde los nodos y sensores pueden conectarse y desconectarse, aparecer unidades nuevas, cambiar sus recursos sin previo aviso o desplegar nuevas aplicaciones y funcionalidades.
La red reacciona a esta variabilidad eligiendo de forma automática los gateways de conexión y éstos, a su vez, organizando la red en clusters con las funcionalidades requeridas. Es muy similar a la plasticidad que tiene el cerebro humano. Todo esto permitirá que la red reaccione con muy baja latencia, sea muy escalable y se aísle de los posibles fallos de los servicios en la nube.
La analogía con el cerebro sería considerar los dispositivos del Fog como neuronas y las comunicaciones entre ellos como las sinapsis entre ellas. Las áreas funcionales del cerebro equivaldrían a los clusters generados por funcionalidades afines y el Cloud sería como el cuerpo calloso, que sirve de comunicación entre las áreas funcionales, además de proveer a todo el sistema de almacenamiento de información.
Componentes del SmartFog
Estos serían los principales componentes del SmartFog que estamos definiendo:
- Fog environment, o entorno Fog. Es la colección de los elementos interconectados y los datacenters de la nube, que trabajan de forma colaborativa para realizar una toma de decisiones de baja latencia de la manera más cercana posible a los dispositivos donde se generan los datos.
- Dispositivo Fog, o Fog device. Son dispositivos conectados a la red de área local. Pueden ser servidores, ordenadores o incluso routers y puntos de acceso WIFI, que además de dar el servicio de conectividad, pueden ofrecer otros servicios y aplicaciones.
- Dispositivo Edge, o Edge device. Es un dispositivo de baja potencia, como un móvil u otro dispositivo pequeño, que sirve para agregar o preprocesar datos provenientes de la red de sensores IoT
- Aplicaciones IoT. Aplicativo modular que funciona separando las funcionalidades en componentes independientes e intercambiables, que se ejecutan en dispositivos IoT de baja potencia. El proyecto europeo H2020 LightKone promueve un nuevo paradigma de programación, basado en estándares abiertos y pensado para la modularidad necesaria que seguro ya estás viendo que es más que necesaria.
Además, los componentes se distribuyen en las tres capas que componen el sistema:
- Cloud layer, o capa de la nube
- Fog layer, o capa Fog
- IoT layer, o capa IoT
Fundamentos del SmartFog
Antes de nada debes entender tres conceptos matemáticos que SmartFog aplica en su funcionamiento:
- Centralidad en un grafo. La centralidad de un nodo en un grafo es una medida que viene a representar cómo de importante es ese nodo en ese grafo. Se calcula contando cuántos de los caminos posibles entre otros dos nodos pasan por él. Cuantos más caminos pasan, mayor centralidad tiene y más importante es. Puedes profundizar más aquí.
- Optimización multiobjetivo. El caso típico de una solución matemática a un problema es el cálculo de una variable en función de un objetivo, por ejemplo que tenga un valor mínimo o que sea máximo. Pero la cosa se complica cuando no tenemos un solo objetivo que conseguir, sino que son varios y puede que incluso entren en conflicto entre sí. Para dar con la solución óptima existen distintos algoritmos que iremos desgranando más adelante. Al conjunto de soluciones posibles se le llama frente de Pareto. Si quieres leer algo más sobre este tema, accede aquí.
- Agrupamiento espectral. Es una técnica que permite, dado un conjunto de elementos con ciertas propiedades, hacer agrupaciones o clasificaciones de ellos basándose en la similitud de estas propiedades. Pincha aquí si quieres ver algo más de este tema.
Arquitectura y funcionamiento del SmartFog
Una vez vistos los componentes y un poco por encima la lógica que vamos a aplicar, vas a ver en detalle cómo funciona el sistema, paso a paso:
- El punto de entrada inicial es el Cloud. Las aplicaciones son desplegadas en la nube, junto con todos los módulos que necesitan y las especificaciones de recursos que éstos requerirán para su ejecución.
- Desde el Cloud se realiza una selección de los nodos que tendrán la función de pasarelas de comunicación o gateways. Para esto usa un algoritmo de decisión multicriterio, teniendo en cuenta estas características: centralidad en la red, capacidad de proceso y latencia de comunicación con el Cloud. Más adelante podrás ver este algoritmo en profundidad. La elección da como resultado el conjunto de nodos que tienen mejores comunicaciones y la suficiente capacidad de cálculo para realizar el siguiente paso.
- En este momento los nodos gateways realizan agrupaciones con el resto de nodos de la red, usando para ello un algoritmo “Spectral clustering” o agrupamiento espectral, lo que le da una capacidad de reacción muy rápida ante cambios inesperados en la red. Para la agrupación se tendrán en cuenta las características de capacidad de almacenamiento, de procesamiento y de gestión de red. Estos grupos se encargarán de ejecutar funciones concretas o módulos necesarios para la aplicación IoT.
- Desde estos clusters funcionales se realiza la recolección de datos de la capa IoT, el envío de instrucciones de control, etc.
Algoritmo de selección de nodos gateways
Los nodos que hacen de pasarelas de comunicación actúan como agregadores de enlaces y de ancho de banda entre la nube y el fog, además de ejecutar funciones esenciales para la conformación de los clusters funcionales, tal como te explicaba en los párrafos anteriores.
El algoritmo usado para la elección de gateways se denomina NSGA-II (Non-dominated sorting genetic algorithm), o algoritmo de ordenación genética no dominado.
Cada nodo en la red tiene estas tres características a tener en cuenta por NSGA2:
- Centralidad en la red
- Capacidad de proceso, medida en MIPS (Mega instrucciones por segundo)
- Latencia de comunicaciones entre ese nodo y cualquier otro, para lo cual se guarda un histórico de comunicaciones sobre el que se calcula la media de latencia.
Estos tres criterios entran en conflicto entre sí, pues lo normal será que no exista un solo nodo que sea el mejor en todos ellos o puede que exista más de uno con características muy similares.
La parte “no dominado” del nombre del algoritmo significa que se van a elegir los nodos que “salgan ganando” con sus puntuaciones en los tres criterios frente a otros, que son los “dominados”. Por lo tanto el conjunto resultante son los “no dominados” y a dicho conjunto se le denomina “frente de Pareto”.
¿Cómo se averigua si un nodo domina a otro?
Se dice que un nodo x domina a otro y con respecto al cumplimiento de unos objetivos si ocurre una de estas dos condiciones:
El nodo x no es peor en todos los objetivos que el nodo y
El nodo x es estrictamente mejor que el nodo y en al menos uno de los objetivos.
Con esta definición en mente ahora se trata de comparar todos los nodos entre sí, empezando por comparar el primero con el segundo, luego con el tercero, etc. En cada comparación, si el nodo primero domina al que se está comparando, expulsa a éste del conjunto y continua con el siguiente. Si es dominado, resulta él mismo expulsado del conjunto.
El final del algoritmo se obtiene un “frente de Pareto” formado por todos los nodos que no han sido dominados.
La definición formal del algoritmo es esta:
Algoritmo de selección de nodos gateways
Input:
N ---> Number of Fog devices
L = (L1,L2, ...,LN) ---> List of Fog devices
C = (C1,C2, ...,CN) ---> CPUs per Fog device
M = (M1,M2, ...,MN) ---> Memory per Fog device
T --->Topology of the Fog layer
Nf ---> Number of functional areas
F = (F1,F2, ...,FN) ---> Type of the functional area
1: while i < N do
2: Bi ←evaluate betweenness centrality(Li,T)
3: Ei ←evaluate Fog device(Ci,Mi,Bi)
4: i←i+1
5: S ←non domination sorting(E)
6: D ←automated decision making(S,Nf ,F)
Obviamente la explicación que ves aquí es una simplificación. Ya sabes que si te quedas con ganas de más puede seguir en su artículo en Wikipedia, pero si buscas en Google verás que hay bastantes artículos científicos hablando de él.
Agrupamiento en áreas funcionales
Como te decía antes, estas áreas se conforman para que estén especializadas en un tipo de tarea concreta o en una cantidad de recursos necesarios.
Cada nodo gateway conforma sus propias agrupaciones, usando un algoritmo llamado Spectral clustering. Este algoritmo no es tan sencillo de entender como NSGA2, por lo que te aconsejo que leas algún artículo académico, que hay muchos, si quieres tener alguna idea más profunda. Básicamente trata al conjunto de nodos y sus características como una matriz, calcula sus autovalores y con estos datos hace una división en zonas de dicha matriz. Es una técnica similar a la aplicada al procesamiento de imágenes.
Implementación de SmartFog y experimentos con simulador
El entorno de simulación elegido por los autores es iFogSim, una aplicación Java que han tenido que extender para poder implementar los algoritmos NSGA2 y Spectral clustering. En concreto han realizado modificaciones al framework jMetal para integrar los algoritmos y el funcionamiento con iFogSim.
Han simulado los nodos dándoles una arquitectura y capacidades específicas de cada uno: arquitectura ARM o x86, capacidad de proceso, espacio en disco libre y ocupado y una cantidad concreta de memoria. Además han hecho que los nodos vayan desconectándose y apareciendo en la red de una forma aleatoria, un punto muy importante si se quiere simular un entorno real.
Para la elección de los nodos gateways han combinado el algoritmo NSGA2 con uno de toma de decisiones de baja latencia, que a su vez divide el frente de Pareto en varias regiones atendiendo a ciertos criterios requeridos.
Para implementar Spectral clustering modifican el framework de minería de datos WEKA, y luego lo integran dentro de jMetal.
Evaluación de los experimentos
Los datos del experimento realizado con iFogSim para ver el comportamiento de los algoritmos de selección de gateways y conformación de las áreas funcionales son:
- Red de nodos entre 20 y 40 dispositivos
- Capacidad de proceso: entre 800 y 1200 MIPS
- Memoria RAM: entre 1 GB y 4 GB
- Discos duros SSD con algo de cantidad de almacenamiento disponible (no indican cuánto en el artículo).
- Todos los experimentos se repiten 100 veces y los resultados que se presentan a continuación son los valores medios y variaciones estándar.
La primera conclusión que presentan es el tiempo de elección de los nodos gateway, un proceso fundamental en esta arquitectura puesto que se ejecuta cada vez que se añade o elimina un nodo de la red.
Esta primera gráfica muestra el tiempo que se tarda en calcular la centralidad de todos los nodos, dato necesario para elegir los gateways:
Se puede ver cómo el tiempo de ejecución escala conforme aumenta el número de nodos de una manera lineal. Se debe tener en cuenta que 40 nodos gateways pueden dar servicio a una red de varios miles de dispositivos.
El gráfico siguiente muestra el tiempo de ejecución del NSGA2 y el algoritmo de toma de decisión, sin tener en cuenta el cálculo de la centralidad:
Se puede apreciar cómo es un algoritmo bastante estable.
El siguiente algoritmo a tener en cuenta es el de Spectral clustering, y los tiempos de composición de las áreas funcionales son las siguientes:
De nuevo un algoritmo muy estable con unas desviaciones muy pequeñas.
Simulación completa
Una vez analizadas las partes por separado los autores preparan un experimento SPAM (Sense-Process-Actuate Model). En este modelo los sensores envían continuamente tuplas de datos hacia la red Fog. Cada tupla contiene los siguientes datos:
- Origen del dato
- Destino del dato
- Cantidad de computación requerida
- Recursos de red necesarios
Los nodos en el Fog procesan parte de estos datos y envían instrucciones a los actuadores de la red IoT. El resto de datos son procesados en la nube.
En esta simulación los dispositivos IoT están conectados directamente a dispositivos en el edge que a su vez se conectan al Fog mediante edge gateways. Y tal como veíamos antes el Fog se conecta a la nube mediante nodos gateway.
Se han realizado medidas de dos bucles de procesamiento de información:
- SPA loop, Sense-Process-Actuate. Los sensores envían la información al fog, allí se procesa y se devuelve la información de control a la red de sensores.
- Los datos en las tuplas de este bucle solicitan entre 1000 y 8000 MIPS y 100 bytes de red.
- PC loop, Process-Control. Los gateways del Fog envían los datos a la nube, allí se realiza el análisis y control de los mismos y se devuelven a la capa Fog.
- En este bucle se solicitan 40000 MIPS y 100 bytes de red.
Los experimentos se han realizado con una red SmartFog con todas las técnicas explicadas hasta ahora y se han comparado con los mismos experimentos realizados sobre una red con los mismos nodos pero con una estructura de red aleatoria.
La comparativa para el bucle SPA queda así:
Se puede apreciar cómo SmartFog reduce el tiempo de bucle con respecto a una red sin esta tecnología, que además recordemos que no tendría la capacidad de adaptación que nos proporciona SmartFog. Si te preguntas por qué con 20 nodos el tiempo es tan alto comparado con 30 y 40 nodos (yo también me lo preguntaba), puede que la respuesta sea que es una red demasiado pequeña para la cantidad de tráfico y requisitos solicitados. Los autores no aclaran este punto en el artículo, pero es la explicación más simple que he encontrado.
A continuación puedes ver el resultado del bucle PC:
Y el último dato que analizan es el tráfico en la red, comprobando que SmartFog es capaz de asumir una mayor carga en la red.
Conclusión (traducción literal)
En este artículo hemos presentado una prometedora y novedosa arquitectura Fog inspirada en la naturaleza, capaz de proveer una toma de decisiones de baja latencia y una gestión adaptativa de la arquitectura. Mediante el uso de novedosos algoritmos y técnicas de los campos de la toma de decisiones multicriterio, teoría de grafos y machine learning hemos modelado el Fog como un sistema de proceso inteligente y distribuido, por lo tanto emulando la función del cerebro humano.
Unas de las fortalezas clave de nuestro enfoque son la habilidad para identificar los puntos de agregación óptimos entre el Cloud y el Edge, y la capacidad de agrupar los dispositivos Fog en clusters optimizados basándose en su similitud. Hemos implementado, integrado y evaluado estos conceptos como elementos esenciales del entorno SmartFog. Basándose en los resultados de la evaluación, se puede concluir que la arquitectura Fog inspirada en la naturaleza propuesta puede reducir hasta un 8% la latencia y un 13% la carga en la red.
Respecto a las actividades futuras de investigación, planeamos extender el entorno actual para soportar la gestión de datos según su proximidad y la provisión de recursos de forma adaptativa.
Hasta aquí el artículo sobre SmartFog, una arquitectura IoT adaptativa inspirada en la naturaleza. Como bien sabes se trata solo de una propuesta de funcionamiento, si quieres conocer más arquitecturas posibles descúbrelas en el apartado de Arquitecturas IoT.
Ya sabes que puedes suscribirte al blog o puedes participar en este artículo mediante los comentarios (moderados).
También puedes seguir las novedades de IoTFutura en Twitter, gracias !
Una muy buena arquitectura y por demás interesante. Como duda esta la cuestión de la implementacion. Primera vez que leo sobre este modelo y me gustaría encontrar ejemplos prácticos sobre como aplicarla. Vendría bien algunas recomendaciones o ejemplos prácticos. Gracias por la información y el aporte
Hola Ever, muchas gracias por tu comentario y por tu interés en el blog.
Este artículo que has leído es una traducción y resumen de este otro https://arxiv.org/abs/1803.03444, donde sus autores proponen una arquitectura
inteligente y adaptativa para organizar un sistema de Fog Computing.
Aparte del artículo en sí y el estudio realizado en el mismo, no hay ninguna implementación real que haya podido encontrar.
Sí he podido encontrar algunas ponencias de sus autores en algunos congresos, pero desgraciadamente no hay nada similar implementado.
En iotfutura encontrarás algunos artículos científico-técnicos de esta índole, que espero que sirvan de inspiración y de debate a futuros constructores
de este tipo de soluciones.
A pesar de no haber llegado a implemnentarse, es digno de mención lo inspirador que resulta y la originalidad de la respuesta.
Espero haber aclarado tu duda y que sigas consultando los artículos que te resulten interesantes.
Un saludo