En los últimos años, el denominado Internet de las Cosas (IoT, de sus siglas en inglés) se ha consolidado como una de las tecnologías que revolucionará nuestra vida cotidiana en un horizonte no muy lejano. Según diferentes estudios, se estima que más de 26 mil millones de dispositivos en 2020 se encuentren conectados a la red de redes, gracias a los avances en conectividad y ancho de banda, capacidad de procesamiento con reducido consumo y baterías.
El IoT permitirá recoger gran cantidad de información de una variedad de dispositivos (sensores en la ciudad, vestibles, electrodoméstico, aplicaciones en nuestros teléfonos inteligentes, etc.) que será transmitida por la red en forma de flujos de datos que serán posteriormente almacenados y procesados.
Hasta ahora, el modelo seguido para la adquisición y el análisis de la información recogida del IoT se basa en el paradigma de computación en la nube. Sin embargo, este modelo no deja de ser una instancia de una arquitectura centralizada tradicional; con grandes (y escasos) centros de datos y conectividad de primer nivel. Este modelo, según todas las proyecciones e importantes estudios (como el realizado por la consultora Gartner en 2014 titulado “The Impact of the Internet of Things on Data Centers”), no es escalable ni adecuado para los retos que el IoT pone encima de la mesa corto-medio plazo. “La transmisión de la cantidad de datos generados por los dispositivos IoT a una única localización para ser procesados no será técnica ni económicamente viable”.
De manera general, estas serían las principales limitaciones del modelo actual para el completo desarrollo del IoT:
- Latencia: la distancia de red entre los dispositivos y los centros de procesamiento está en torno a los centenares de milisegundos (ida y vuelta). Muchas de las aplicaciones en el IoT serán sensibles a la latencia de la red como por ejemplo sistemas de predicción (consumo energético, Smart Grids) o sistemas de control de voz (Apple Siri, Google Home o Alexa de Amazon).
- Ancho de banda: se prevé una contribución cada vez mayor de información proveniente de dispositivos que sean fuentes de imagen o vídeo; especialmente en la ciudad. Cámaras de seguridad es espacios públicos y privados, monitorización del tráfico o teléfonos personales son algunos de los ejemplos. El volumen de información a mover en tiempo real hacia la nube daría lugar a tiempos de respuesta inadmisibles, asumiendo que existiera la capacidad y de tecnológica para ello.
Bajo estas premisas, los investigadores han comenzado a desarrollar propuestas que aporten soluciones al más que probable escenario que se vislumbra. Una de ellas es mover parte de la carga computacional del IoT hacia los propios dispositivos que forman parte de la infraestructura, lo que se denomina Edge Computing o Mobile Cloud. Este paradigma, sin embargo, adolece de serios inconvenientes. Por ejemplo, los dispositivos desplegados suelen tener restricciones sobre todo de batería y memoria (más que la capacidad de cómputo propiamente dicha). También, hay que destacar que a día de hoy no existen plataformas estandarizadas para la gestión y despliegue de aplicaciones/servicios en el borde de la IoT, lo que fuerza al desarrollo de soluciones a medida.
La segunda propuesta es la denominada Fog Computing, un término que hace referencia a una capa con recursos de cómputo que se encuentra entre el dispositivo y la nube. Si bien este concepto ha estado encima de la mesa durante años, es ahora cuando se observa un renovado interés en definir arquitecturas y plataformas concretas. Por ejemplo, en Noviembre de 2015 se fundó el OpenFog Consortium[1] por parte de grandes compañías como Cisco (quien acuñó el término de fog computing), Intell, Microsoft, Dell, Foxconn y universidades como la de Priceton o Shangai Tech.
IoT es el caso de uso que más claramente puede beneficiarse de este nuevo paradigma. Las redes fog conectarán multitud de dispositivos que formarán una constelación de nubes locales que permitirán que éstos puedan comunicarse entre sí. Además, estas nubes locales estarán dotadas de capacidad de procesamiento y almacenamiento para aliviar, como se ha explicado anteriormente, la carga en la nube.
En este escenario (IoT + Fog Computing), la tecnología de lógica reconfigurable jugaría un papel clave como habilitador de soluciones eficientes, escalables y sostenibles. A muy alto nivel, un dispositivo de lógica reconfigurable o FPGA (del inglés Field Programmable Gate Array), es hardware que puede “programarse” para implementar una funcionalidad concreta. Una FPGA ofrece, pues, el rendimiento del hardware sin los inconvenientes de un desarrollo a medida: alto coste, complejos y muy especializados ciclos de desarrollo y nula mantenibilidad. En paralelo al desarrollo de la tecnología y arquitectura de las FPGAs (que permiten abordar desarrollos cada vez más complejos y exigentes), los grandes fabricantes han desarrollado herramientas y metodologías que hacen más fácil la implementación de soluciones sobre estos dispositivos. Esto ha permitido la introducción de esta tecnología en mercados que hasta ahora parecía imposible. Véase, por ejemplo, el reciente anuncio de Amazon[2] en relación a la introducción de FPGAs en sus instancias EC2 F1 para la aceleración a medida de aplicaciones en su nube. O, también, multitud de casos de éxito de uso de la tecnología de lógica reconfigurable como la utilización por parte de Microsoft de FPGAs en los servidores que procesan las peticiones de búsqueda de su motor de internet Bing[3].
Sin duda, la gran capacidad computacional de las FPGAs, y la posibilidad de adaptar el procesamiento al tipo de información subyacente (eventos, vídeo, imágenes, etc.), es quizás la característica que más fácilmente se identifica como deseable en el IoT del futuro. No obstante, es necesario identificar las siguientes propiedades que también ofrecen una respuesta a los retos planteados hasta ahora:
- Contención de la demanda energética: el ratio número de operaciones por vatio consumido es de los mejores para esta tecnología.
- Gestión de la capacidad y carga dinámica: las FPGAs permiten adaptar en tiempo de ejecución los recursos disponibles para una determinada tarea sin complejas infraestructuras
- Seguridad: debido a la naturaleza del hardware reconfigurable, el sistema es más resistente a ataques. Además, pueden añadirse sistemas de encriptación más potentes que se ejecuten en hardware sin afectar al funcionamiento de la aplicación.
- Simplificación de la infraestructura software: mejora la mantenibilidad y el coste operativo de la plataforma. Toda la funcionalidad del nodo fog (concentrador o puerta de enlace) IoT puede implementarse en una FPGA.
- Flexibilidad y máxima adaptabilidad: la posibilidad de construir rutas de datos a medida y el paralelismo de grano fino que es característico de las FPGAs permiten obtener el máximo rendimiento no importa el tipo de aplicación objetivo.
Centrándonos en el caso de uso de la Ciudad Inteligente, y atendiendo al análisis realizado en los párrafos anteriores, se proponen las siguientes áreas de trabajo y/o servicios que podrían beneficiarse directamente de la utilización de dispositivos de lógica reconfigurable. A saber:
- Monitorización de infraestructuras críticas de la ciudad en base al análisis en tiempo real de imágenes o vídeo. La toma de decisiones en base a los análisis de información realizados en los nodos fog – en lugar de esperar a que la información sea enviada a la nube y procesada – ayuda a la toma de decisiones confiables y oportunas, en el instante que corresponde.
- Aplicaciones civiles/seguridad que involucren la utilización de vehículos autónomos no tripulados. Conocido el potencial de este tipo de tecnología y el esperado despliegue de servicios basada en ella para la ciudad del futuro (por ejemplo, entrega de paquetes), es necesario pensar en soluciones que permitan superar las actuales limitaciones.
- Análisis predictivo de un gran volumen de eventos. Bajo esta categoría se enmarcan un conjunto de servicios en los que convergen tres factores: (1) por un lado el gran volumen de información que se generará al poder conectar infraestructuras y subsistemas que hasta ahora no era posible; (2) la necesidad de procesar dicha información en tiempo real para una toma de decisiones útil cuándo se la espera; y (3) la complejidad y carga computacional de los algoritmos que deben analizar dichos flujos de datos utilizando métodos estadísticos o técnicas de IA (Inteligencia Artificial). Identificamos, al menos, dos casos de uso:
- Gestión del tráfico en las ciudades para prevenir atascos, mejorar niveles de polución, etc.
- Predicción de consumo energético y gestión de las redes eléctricas inteligentes.
- Gestión de los datos obtenidos de los ciudadanos a través de técnicas de crowd sensing. Comparte muchas de las características del punto anterior sin, quizás, la criticidad del tiempo de respuesta. No obstante, en este tipo de aplicaciones la cantidad de información obtenida del entorno a través fundamentalmente de dispositivos móviles asociados al usuario (no pensemos sólo en teléfonos inteligentes, sino en pulseras de actividad, dispositivos médicos, redes sociales, etc.) crecerá exponencialmente. Se necesita capacidad de analizar y filtrar la información de una manera inteligente de manera que a la nube llegue sólo aquello que realmente aporta valor, evitando malgastar recursos computacionales y de comunicación tan preciados.
[1] https://www.openfogconsortium.org/
[2] https://aws.amazon.com/ec2/instance-types/f1/
[3] http://research.microsoft.com/pubs/212001/Catapult_ISCA_2014.pdf