Análisis en profundidad

MQTT: qué es este protocolo y cómo hace que los dispositivos IoT se comuniquen

Este protocolo de comunicación, el MQTT, nacido hace veinte años, se ha ido imponiendo poco a poco como estándar de facto del Internet de las cosas por su flexibilidad y facilidad de uso

Publicado el 20 Mar 2023

MQTT

En los últimos años hemos asistido al auge del fenómeno IoT: la conectividad aplicada a objetos cotidianos, máquinas industriales, etc., es quizá una de las mayores revoluciones tecnológicas de estos tiempos, capaz de producir numerosos beneficios tanto en el lado de la empresa como en el del consumidor final, en términos de eficacia, eficiencia, aumento de la productividad, entre otros. 

Detrás de la conexión de objetos, sin embargo, hay una cantidad considerable de tecnología, empezando por los sensores que permiten captar la cantidad de datos que pueden ser procesadas por los dispositivos. 

Estos datos, sin embargo, no solo tienen que ser captados, sino también transmitidos de la fuente al receptor. Para la transmisión se requieren protocolos, que definen el formato y el orden de los mensajes enviados y recibidos entre las entidades de la red, así como las acciones a realizar tras la recepción y/o transmisión de mensajes u otros eventos. 

No cabe duda de que la llegada de la Internet de los objetos también ha cambiado el juego desde el punto de vista de las modalidades de transmisión: las propias características de la IO imponen la adopción de un modelo de comunicación en tiempo real, capaz de enviar información en modo muchos-a-uno y de recibir un evento en el mismo momento en que se produce. 

¿Qué tipo de protocolo de comunicación debe elegirse entonces?

El más conocido es sin duda HTTP, HyperText Transfer Protocol, el protocolo de transmisión de información utilizado en la Web. Sin embargo, ¿es el adecuado para la Internet de los objetos? 

En general, la respuesta es no: en primer lugar, HTTP es considerado por los expertos como “verborrágico”, ya que siempre implica el envío de muchos bytes, lo que sin duda no es ideal para la comunicación de máquina a máquina, que en general se caracteriza por el envío de un número limitado de bits. Además, este protocolo no permite establecer una comunicación asíncrona, que es un requisito clásico del IoT.

Qué es MQTT (Message Queue Telemetry Transport): 20 años de historia

Un protocolo que, con el paso del tiempo, ha demostrado ser especialmente adecuado para la transmisión de datos producidos por dispositivos IoT es, sin duda, MQTT (Message Queue Telemetry Transport). MQTT se creó hace más de de 20 años, en 1999 para ser exactos, con el objetivo de gestionar las conexiones entre máquinas, es decir, para permitir la comunicación entre máquinas de una forma extremadamente eficaz. 

Principales características

Las principales características de MQTT son que se trata de un protocolo sencillo y ligero para intercambiar mensajes, además de minimizar el tráfico en las redes y requerir pocos recursos de los dispositivos para gestionarlo. También es un protocolo capaz de distribuir eficazmente mensajes de uno a muchos destinatarios, desacoplar aplicaciones y escalar sistemas. 

Este conjunto de características lo hace extremadamente adecuado para todos aquellos entornos en los que los recursos disponibles y el ancho de banda de la red son limitados, o en los que existen dispositivos remotos con poca memoria y escasa capacidad de cálculo, haciendo posible un funcionamiento óptimo incluso cuando se trata de redes que no son perfectas en cuanto a estabilidad de la conexión, sujetas a múltiples interrupciones. Este protocolo pretende minimizar las necesidades de recursos de los dispositivos, al tiempo que intenta garantizar la fiabilidad y un cierto nivel de entrega garantizada.

El funcionamiento técnico del protocolo MQTT

Para funcionar de este modo, MQTT sigue un paradigma clásico de “publicar y suscribirse”, es decir, asíncrono. Simplificando el asunto al máximo: cuando el nodo A quiere comunicarse con el nodo B, no lo hace de forma sincrónica, es decir, como si se tratara de una llamada telefónica que debe ser atendida de inmediato. 

Por el contrario, en el protocolo MQTT, el mensaje es publicado por el nodo A (publish) y es recibido por los nodos que se suscriban para recibir el mensaje (subscribe). Esencialmente, por tanto, con MQTT, la producción está fuertemente desacoplada de la recepción del mensaje en sí, también desde un punto de vista temporal. 

Se trata, por lo tanto, de una operación muy diferente a la del protocolo web, que es del tipo solicitud-respuesta. 

Para ser aún más precisos, MQTT implica el intercambio de mensajes a través de un corredor especial. Un broker MQTT no es más que una pieza de software (actualmente existen muchas), que se encarga de recibir los mensajes de los productores de mensajes y ponerlos a disposición de los usuarios. El corredor solo se encarga entonces de entregar el mensaje para los temas (es decir, los temas, por ejemplo, la temperatura) suscritos por el receptor.

Otro aspecto tecnológicamente significativo es que se puede especificar un nivel diferente de calidad de servicio para cada conexión cliente/corredor:

1) Como máximo una vez – el mensaje se envía una sola vez sin confirmación de recepción.

2) Como mínimo una vez – el mensaje se envía varias veces hasta obtener un acuse de recibo.

3) Exactamente una vez – el mensaje se envía una sola vez con acuse de recibo.

Pros y contras del protocolo MQTT

Desde su creación en 1999, el protocolo MQTT se ha ido extendiendo gradualmente, aunque sin un énfasis especial. El verdadero avance se produjo hace una década, coincidiendo más o menos con la difusión del IoT: aunque no está especialmente claro cómo, hoy MQTT se ha convertido en el estándar de facto para algunas áreas del IoT. 

Es así que todos los grandes proveedores de la nube (AWS, Google Cloud, Microsoft Azure) proporcionan ahora de forma nativa un broker MQTT. Las aplicaciones son realmente considerables, sobre todo en el lado del consumidor, pero no solo. 

De hecho, hay que tener en cuenta que las pequeñas y medianas empresas que se interesan por el potencial del mundo del Internet de las cosas se fijan cada vez más en este protocolo, sobre todo por su facilidad y sencillez de implementación.

Muy a menudo, de hecho, resulta difícil implantar en estas realidades las soluciones clásicas de IoT industrial que operan en la nube, que se basan en otros protocolos más sofisticados (como OPC UA) pero que -a su vez- conllevan infraestructuras más complicadas. 

Así, por razones de costos y recursos, o simplemente porque se necesita una infraestructura más flexible, la adopción del protocolo MQTT también es funcional a las necesidades de las pequeñas y medianas empresas.

Ventajas

Se adapta bien al loT 

Los puntos fuertes, por otro lado, son numerosos: en primer lugar, la arquitectura de publicación/suscripción se adapta muy bien al IoT, porque básicamente permite la gestión y el procesamiento de datos en tiempo real. 

Simplicidad

Otra ventaja está relacionada con el descubrimiento inherente a las características básicas del corredor, una posibilidad que no es tan obvia en otros protocolos IoT, lo que se suma a un alto grado de simplicidad en el lado del cliente. 

Limitaciones

Por otro lado, el protocolo tiene una serie de limitaciones: en primer lugar, hay que tener en cuenta que MQTT nació para la comunicación de máquina a máquina, mientras que hoy en día existe una creciente necesidad de comunicación de máquina a humano. Basta pensar, por ejemplo, en los asistentes de voz (Amazon Echo, Google Home, etc.) cada vez más presentes en nuestros hogares. 

Los propios aspectos de seguridad: cuando se creó el protocolo había una escasa presencia del fenómeno de la ciberdelincuencia, lo que hizo que no se le prestara mucha atención a esos aspectos. 

Por otra parte, hace veinte años las soluciones estándar actuales, como el cifrado, la autenticación y la autorización, estaban poco o nada desarrolladas.

Una investigación reciente del proveedor de seguridad Trend Micro, realizada durante un periodo de cuatro meses, demostró que se habían robado más de 200 millones de mensajes MQTT de servidores expuestos.

Los atacantes fueron capaces de localizar estos datos filtrados utilizando simples palabras de búsqueda y convertirlos en información sobre activos, personal o tecnologías que puede utilizarse para ataques dirigidos. En concreto, los atacantes podían controlar de forma remota puntos finales IoT o llevar a cabo ataques DDOS.

MQTT.cool: una pasarela que mejora el protocolo MQTT

Estas limitaciones del protocolo son conocidas por Lightstreamer, una empresa del grupo Par-Tec que, basándose en su experiencia en la transmisión de datos en tiempo real para el mundo de las finanzas y la banca, decidió sacar al mercado MQTT.cool. Lo primero que hay que dejar claro es que no se trata de un intermediario más en el mercado. Más bien, MQTT.Cool debe concebirse como una pasarela, es decir, como una verdadera pieza intermedia entre el broker MQTT y el dispositivo cliente del usuario final. 

¿El objetivo?

Aumentar y mejorar la seguridad, el rendimiento y la arquitectura del propio broker. Una de las características de MQTT.Cool es hacer que el protocolo sea más adecuado para la comunicación entre máquinas: de hecho, hay que tener en cuenta que Internet está ahora salpicada de cortafuegos y proxis, que permiten el paso de algunos protocolos, pero no de otros, incluido MQTT.

MQTT.Cool, por tanto, hace posible que el protocolo sea compatible con la web, ofreciendo así la posibilidad de superar esta barrera, permitiendo que los datos transmitidos por MQTT lleguen a cualquier cliente que esté conectado a Internet, manteniendo las capacidades en tiempo real y sin sacrificar los aspectos de seguridad.

Sobreproducción de datos, otro problema que ataca MQTT.Cool

Otro problema típico del IoT que aborda MQTT.Cool es el de la sobreproducción de datos: los sensores producen enormes volúmenes de datos, que pueden ser útiles y absorbidos en contextos de máquina a máquina, pero que en contextos de máquina a humano pueden superar la capacidad de recepción del ser humano, arriesgándose incluso a saturar las capacidades de procesamiento del navegador y del cliente.

Volvamos al ejemplo clásico del sensor de temperatura, que probablemente puede producir una media de 100 lecturas por segundo, una cantidad excesiva y desproporcionada para las capacidades de recepción del ser humano.

Datos más significativos

En este sentido, MQTT.Cool es capaz de ir en la dirección de reducir el volumen de datos para el cliente, permitiendo mediante un remuestreo instantáneo la retención de los datos más significativos. MQTT.Cool ajustará automáticamente el flujo de datos para cada usuario, adaptándose así a cualquier congestión de la red.

Otra de las piedras angulares de MQTT.Cool es la mayor atención prestada a la seguridad, que, como hemos mencionado anteriormente, puede ser uno de los talones de Aquiles del protocolo.

La pasarela de Lightstreamer es capaz de filtrar las peticiones desde el punto de vista de la seguridad (a través de un sistema de autenticación y autorización), eliminando por completo esta carga para el broker que está detrás. De esta forma, resulta más fácil impedir que determinados clientes puedan publicar/suscribirse sobre cualquier tema.

Desde un punto de vista técnico, MQTT.Cool se basa en el motor Lightstreamer, un servidor de alto rendimiento que han utilizado durante muchos años bancos de alto nivel, organizaciones espaciales y de defensa, empresas de medios de comunicación y otros sectores para proporcionar datos en tiempo real en la web de forma eficaz y fiable.

En esencia, lo que MQTT.Cool consigue es reasignar de forma transparente el protocolo MQTT a través del protocolo Lightstreamer, beneficiándose de su capacidad para mover grandes volúmenes de datos a través de la Web.

¿Qué te ha parecido este artículo?

¡Su opinión es importante para nosotros!

Artículos relacionados

Artículo 1 de 2