MQTT: un protocolo personalizado para IoT

MQTT es un protocolo de red que se adapta perfectamente a los casos de uso del Internet de las cosas (IoT). Este artículo analiza las diferencias clave entre MQTT y HTTP, y cuál podría ser mejor según tus necesidades.

Frank Garland - Technical Researcher
MQTT: un protocolo personalizado para IoT

IoT y protocolos de red

Cada año avanzamos más hacia la era del Internet de las cosas (IoT). Los dispositivos IoT encuentran cada vez más nuevos usos en diferentes áreas e industrias con el desarrollo de los procesos de automatización en muchos aspectos de la vida cotidiana y de los negocios. En este sentido, se ha creado una variedad de tecnologías inteligentes, como fábricas, agricultura, monitoreo de red, petróleo e incluso hasta las casas no han escapado de la transformación a casas inteligentes.

Estos son algunos de los cientos de nuevos casos de uso para tecnologías IoT. Como resultado, el desarrollo del IoT se ha hecho cada vez más sofisticado para satisfacer la creciente demanda. Con tanto enfoque en el Internet de las cosas, es importante no solo observar los dispositivos en sí, sino también los protocolos de comunicación que son usados en el suministro de datos de los que dependen estos dispositivos IoT.

Si estás un poco oxidado sobre lo que es un protocolo de comunicación, estos son los conceptos básicos: los protocolos de comunicación son conjuntos de reglas de acuerdo mutuo para gestionar cómo los datos son transferidos a través de la red mundial (world wide web). Estas reglas garantizan que, cuando un computador envía una información, el dispositivo receptor pueda comprender los datos que le fueron enviados. Incluso sin ser un experto en el área de protocolos, algunos de los nombres serán inmediatamente familiares para ti. Las letras IP en el término dirección IP (IP address) significan protocolo de Internet, que es el protocolo principal en todo el conjunto de protocolos de Internet. HTTP es también uno de los más conocidos, una sigla que sin duda has visto frecuentemente al inicio de las URL en tu navegador. El protocolo HTTP opera en la capa de aplicación de Internet, la capa más relevante para los usuarios, y es por esta razón por la que interactuamos con tanta frecuencia con él. Pero, si bien HTTP es un excelente protocolo de comunicación, no es el único protocolo de la capa de aplicación y, cuando se trata de los casos de uso de IoT, puede que no sea el mejor.

El protocolo MQTT (Message Queuing Telemetry Transport, transporte telemétrico de fila de mensajes) es un protocolo menos conocido que ha ganado popularidad en el mundo del IoT. Desarrollado en 1999, su propósito original era monitorear gasoductos y plataformas petrolíferas remotas. Ya que estos locales se encontraban comúnmente fuera de las jurisdicciones internacionales y lejos de los servidores primarios, MQTT fue construido para operar en ambientes con ancho de banda extremadamente bajo, lo que permite el reenvío de información a destinos que los protocolos con un ancho de banda mayor simplemente visualizarían como zonas muertas inaccesibles.

En 2011, Facebook se dio cuenta de que MQTT podría aplicarse más allá de las plataformas petroleras y lo eligió como el protocolo para impulsar su nuevo Facebook Messenger. En 2013, a medida que crecía la popularidad del IoT, las personas comenzaron a descubrir que el enfoque de ancho de banda bajo de MQTT tenía aplicaciones más amplias. Su diseño lo convirtió en la solución perfecta para IoT.

MQTT y HTTP

Para entender lo que hace especial a MQTT, es importante entender los principios de diseño que están por detrás de HTTP y las principales diferencias entre estos dos protocolos.

Solicitud y respuesta versus publicación y suscripción

El protocolo HTTP sigue el modelo de solicitud y respuesta (request/response) para sus conexiones, la forma más simple de conexión que puede tener un protocolo de red. Las solicitudes basadas en el modelo de solicitud y respuesta son gestionadas por el cliente. Esto significa que las conexiones HTTP son iniciadas por el cliente al servidor, y las solicitudes toman la forma de un mensaje desde el cliente hacia el servidor, al que luego el servidor envía una respuesta. Esta es una operación muy sencilla, lo que es una de las razones por las que HTTP es un protocolo popular.

El enfoque de MQTT es menos directo. El modelo de publicación y suscripción de MQTT (conocido en la industria como pub/sub) no es gestionado por el cliente de la misma forma que lo hace HTTP. Si bien el cliente aún inicia la conexión, una vez que la conexión es realizada, tanto el cliente como el servidor pueden iniciar diferentes conversaciones al enviar nuevas solicitudes. Sin embargo, estas solicitudes no se mueven de forma adecuada en ambas direcciones, entre el remitente y el destinatario. De hecho, el dispositivo que emite información publica sus datos a una subsección específica de su servidor MQTT, llamada variable. Otros dispositivos pueden suscribirse a esta variable y, al hacerlo, se actualizará cada vez que el valor de la variable cambie a partir de nuevos datos cargados.

Escalamiento (Scaling)

Aunque el enfoque de MQTT es menos sencillo y, por lo tanto, menos eficiente para una comunicación directa entre dos dispositivos, tiene la ventaja de simplificar el intercambio de datos entre una gran cantidad de dispositivos más simples, como los usados en IoT. Básicamente, una solicitud HTTP es como un mensaje de texto, mientras que una solicitud MQTT es más como una publicación en redes sociales.

En una solicitud HTTP siempre habrá un dispositivo que envíe una única solicitud a otro. Por lo tanto, para hacer que funcione una gran red de dispositivos conectados por HTTP, terminas con cientos de solicitudes individuales circulando, en lugar de una configuración de mensajes grupales más fluida.

Con el estilo de configuración de las redes sociales de MQTT, no importa si hay uno o cientos de dispositivos suscritos a una variable. La estructura es independiente del número de receptores. El transmisor publica y todos los suscriptores de la red son actualizados. Esta separación entre quien publica con el número de suscriptores es conocida como desacoplamiento y escala independiente, lo que es uno de los principales argumentos de venta para un sistema basado en MQTT.

Conexiones momentáneas versus conexiones a largo plazo

Debido a estas diferencias en las solicitudes, la duración de la conexión para estos dos protocolos también es muy diferente. Las solicitudes HTTP son muy cortas. El cliente envía la solicitud, el servidor responde y entonces la conexión es interrumpida inmediatamente. Si el mismo cliente desea enviar una nueva solicitud, se debe establecer una conexión completamente nueva. Por otro lado, debido a cómo funciona el modelo de publicación y suscripción, las conexiones MQTT continúan funcionando mientras el dispositivo esté suscrito al servidor. Cualquier información enviada entre el dispositivo y el servidor es transmitida a través de esta única conexión. Esta es solo otra forma en la que el protocolo HTTP demuestra su eficiencia.

Muchos sistemas solo pueden manejar un determinado número de conexiones al mismo tiempo y la rápida eliminación de conexiones HTTP no usadas pueden ahorrarle mucho esfuerzo al sistema. Pero esta eficiencia tiene un costo de seguridad. Una conexión es más vulnerable a las interferencias externas en el instante que está siendo establecida y, de esta forma, las conexiones a largo plazo de MQTT evitan menos puntos de entrada a los hackers que el ciclo constante de HTTP.

El protocolo HTTP sigue siendo muy seguro, pero MQTT está un paso más adelante. Mientras las conexiones momentáneas de HTTP establecen conexiones más rápidas, las conexiones a largo plazo de MQTT brindan un desempeño significativamente más rápido en el área clave del tiempo de solicitud. Al tener el tiempo necesario para establecer una conexión realmente sólida y estable, MQTT puede garantizar que los datos transportados a través de esa conexión se envíen mucho más rápido que una red basada en HTTP, cuyos millones de conexiones significan que no puede permitirse invertir tiempo en el perfeccionamiento de una conexión.

El área donde MQTT destaca en este aspecto son las grandes redes estables, con muchos dispositivos conectados a largo plazo, pero con pocos dispositivos agregados o eliminados de la red durante períodos más cortos. Cuando un número específico de dispositivos vinculados a la red generalmente permanece constante día tras día, el establecimiento más lento de la conexión de MQTT se paga por sí solo, al construir conexiones realmente sólidas y ligeras que permiten ahorrar una gran cantidad de tiempo en las solicitudes y las respuestas.

¿Por qué el revuelo por MQTT?

Cuando se analizan las diferencias entre MQTT y HTTP, es difícil afirmar cuál protocolo es definitivamente el mejor. MQTT suele ganar en escalabilidad y menor latencia, mientras las fortalezas de HTTP incluyen alta tolerancia a fallos y mayor compatibilidad con los otros muchos sistemas que ejecutan HTTP que llenan la web. Sin embargo, es justo decir que MQTT es ciertamente el protocolo más especializado y cuanto más lo conozcas, más notarás que su especialización se adapta muy bien a las necesidades de un IoT moderno.

El modelo de publicación y suscripción de MQTT hace que sea mucho más fácil establecer conexiones entre los cientos de dispositivos pequeños que componen el IoT y sus configuraciones de conexión a largo plazo permiten que las conexiones sean más simples para mantener las configuraciones de ancho de banda bajo, donde usualmente se encuentra el IoT. Es bastante impresionante que un protocolo diseñado mucho antes de que el Internet de las cosas estuviera de boga funcione tan bien en este ambiente en el que MQTT realmente se ajusta a la perfección.

MQTT en el edge

Aquí en Azion nos enfocamos en dar soporte a la infraestructura de IoT a través de nuestras tecnologías de red de edge. Nuestra suite de productos es totalmente compatible con ambos protocolos, MQTT y HTTP, lo que brinda una flexibilidad compleja en la construcción de un ambiente para tus necesidades específicas. Los servicios de Edge de Azion permiten que la implementación de las configuraciones de la aplicación sean escalables y amigables para el usuario, al eliminar gran parte de los problemas administrativos para la conversión a un nuevo lenguaje de protocolo.

Una vez que tu protocolo seleccionado está configurado en tu red, nuestro producto Data Stream monitorea las conexiones de tus dispositivos IoT en tiempo real, lo que garantiza la salud del dispositivo y la transparencia de la red. Además, todo tu sistema de IoT puede ser hospedado en nuestra Edge Network distribuida, lo que mejorará la seguridad y las velocidades de conexión al acercar los servidores a los que IoT está subordinado, al migrar al edge de la red.

Sobre el debate si MQTT o HTTP es el mejor protocolo para tu red, la verdad es que ambos son protocolos fuertes, probados y confiables que, al ser configurados con las herramientas adecuadas, te proporcionarán conexiones de solicitud sólidas y confiables.

Si tu sistema es estándar y no deseas complicar demasiado las cosas, HTTP es fácil, directo y funciona muy bien. Si IoT juega un rol importante en tus negocios y es más atractiva la idea de un protocolo que se enfoca directamente a esas necesidades específicas, probablemente vale la pena conocer más de cerca el funcionamiento del protocolo MQTT.

Por supuesto, si no puedes decidirte, podrás siempre usar ambos, en un enfoque híbrido.

Suscríbete a nuestro boletín informativo