¿Qué es MQTT?

Message Queuing Telemetry Transport (MQTT) es un protocolo de mensajería ligero y ampliamente utilizado, basado en el modelo de publicación-suscripción, ideal para conectar dispositivos y aplicaciones del Internet de las cosas (IoT) o de máquina a máquina (M2M) a través de Internet. Diseñado para operar eficientemente en entornos con bajo ancho de banda o limitada potencia, es una opción preferida para aplicaciones que involucran un gran número de clientes remotos. MQTT se emplea en sectores tan variados como la electrónica de consumo, la automoción, el transporte, la fabricación y la sanidad.

¿Cómo funciona MQTT?

Los dispositivos o aplicaciones conectados a través de MQTT se conocen como clientes. Estos clientes publican o se suscriben a mensajes sobre un tema específico o sobre múltiples temas. Los clientes suscritos reciben todos los mensajes publicados en ese tema, lo que permite un intercambio de datos eficiente y tolerante a fallos entre muchos dispositivos y servicios.

En el corazón de la arquitectura MQTT se encuentra el intermediario, un servidor responsable de rastrear a los clientes (y los temas a los que están suscritos), procesar los mensajes y enrutarlos a los sistemas apropiados.

Versiones del protocolo MQTT

Se han adoptado como estándar varias versiones clave del protocolo MQTT. La organización OASIS gestiona las revisiones del protocolo y mantiene una especificación completa para cada versión. Cada revisión de MQTT ha ampliado el conjunto de características del protocolo, por lo que es importante saber a qué versión de MQTT se adhieren sus dispositivos y su intermediario.

Tipos y formato de los mensajes MQTT

Existen varios tipos de mensajes MQTT, y cada tipo de mensaje contiene un formato específico que los dispositivos y aplicaciones conformes deben seguir. Las revisiones del protocolo MQTT varían en cuanto a formato y tipos de mensajes. En cada especificación del protocolo MQTT se puede encontrar una lista completa de tipos de mensajes.

Los tres tipos de mensajes más comunes son CONNECT, PUBLISH y SUBSCRIBE. Cada mensaje MQTT contiene un encabezado, una carga útil y marcas opcionales. Dependiendo del tipo de mensaje, la carga útil puede ser de longitud variable. Por ejemplo, en un mensaje PUBLISH, la carga útil contiene los datos que se enviarán a todos los dispositivos suscritos, y el tamaño del campo de datos influye directamente en el tamaño total del mensaje. De manera predeterminada, los dispositivos MQTT se conectan a través del puerto 1883 de forma no segura o del puerto 8883 cuando se utiliza el cifrado SSL/TLS.

Ejemplo práctico de MQTT en acción

Los coches inteligentes son un excelente ejemplo del uso de MQTT en la práctica. Con la incorporación de funciones avanzadas, como diagnóstico remoto, gestión de flotas, pago de combustible y entretenimiento, los fabricantes de automóviles han adoptado MQTT como un estándar clave para los vehículos conectados. A diferencia del protocolo HTTP, MQTT permite mantener sesiones persistentes incluso cuando el coche atraviesa zonas sin cobertura o cambia de torre de telefonía móvil. Además, admite comunicaciones bidireccionales, lo que permite al vehículo y a la aplicación en la nube intercambiar datos de forma simultánea, sin necesidad de esperar a que el otro responda.

¿Cuál es la diferencia entre HTTP y MQTT?

HTTP y MQTT son dos protocolos de red que se utilizan para transmitir datos a través de Internet. Veamos sus diferencias.

HTTP

  • Protocolo de solicitud-respuesta en el que un cliente envía una solicitud a un servidor y este responde con los datos solicitados.
  • Diseñado principalmente para transmitir contenidos web (como documentos HTML, imágenes y datos de formularios) entre servidores web y navegadores.
  • Ejemplo: Un navegador web (el cliente) envía una solicitud a un servidor web, y el servidor responde con datos en forma de página web.

MQTT

  • Protocolo de publicación-suscripción de mensajería ligera en el que los clientes se suscriben a temas y reciben mensajes publicados en esos temas por otros clientes.
  • Diseñado para topologías de red y dispositivos en los que el bajo ancho de banda, la estabilidad de la conexión y el consumo de energía son consideraciones importantes.
  • Ejemplo: El caso del coche inteligente.
¿Por qué utilizar MQTT en el Internet de las cosas (IoT)?

Muchas características de MQTT lo convierten en el protocolo ideal para la mensajería entre dispositivos IoT (las «cosas» de IoT) y sistemas back-end. Aquí nos centraremos en cuatro características:

  • Ligero: MQTT tiene un código de pequeño tamaño que funciona bien en dispositivos con capacidad de procesamiento y memoria limitadas, como los sensores.
  • Fiable: Muchos dispositivos IoT se conectan a través de redes celulares. MQTT es un protocolo adecuado para redes de bajo ancho de banda que requieren mensajes compactos que utilicen menos datos. Esto hace que MQTT sea más fiable, incluso cuando el ancho de banda de la red es limitado o inestable.
  • Escalable: El modelo de publicación-suscripción es fácil de ampliar con la incorporación de dispositivos y sistemas back-end. Un ejemplo de un único dispositivo que publica en dos redes back-end separadas (suscriptores) es un contador inteligente residencial que envía datos de consumo de servicios públicos tanto a los sistemas de la empresa para la facturación como a una aplicación orientada al cliente, que permite al propietario controlar el consumo energético de su vivienda.
  • Seguro: Los mensajes MQTT pueden cifrarse mediante el estándar de seguridad de la capa de transporte (TLS) y admiten el uso de credenciales para autenticación. Esto hace de MQTT un protocolo de mensajería seguro, ideal para aplicaciones de IoT que manejan información sensible, como las lecturas de monitores de salud en diversos dispositivos médicos.
¿Qué protocolo de transporte utiliza MQTT?

MQTT admite el protocolo de control de transmisión/protocolo de Internet (TCP/IP) como protocolo de transporte subyacente. Este protocolo de red ampliamente utilizado garantiza que los mensajes se envíen de forma fiable entre los clientes y los intermediarios.

Hay varias razones por las que TCP/IP se considera fiable y eficaz:

  • Detección y corrección de errores: Diversas técnicas verifican la integridad de los paquetes de datos y los mecanismos de retransmisión para recuperar los paquetes perdidos.
  • Control de flujo: Los datos se transmiten a velocidades óptimas para cualquier red, lo que evita retrasos en la transmisión y favorece una comunicación eficaz.
  • Multiplexación: Se pueden enviar varios flujos de datos a través de una única conexión, de modo que varias aplicaciones pueden utilizar la misma conexión al mismo tiempo.
  • Compatibilidad: Funciona con una amplia variedad de dispositivos y sistemas operativos.
  • Escalabilidad: Diseñado para funcionar en redes grandes y complejas sin comprometer el rendimiento, incluso cuando se manejan grandes cantidades de tráfico.

Aunque es el más común, TCP/IP no es la única opción para el transporte de mensajes MQTT. El protocolo MQTT también funciona en UDP (User Datagram Protocol) y WebSockets.

Recursos adicionales

Nos enorgullece ofrecerle los siguientes recursos gratuitos para ayudarle a explorar cómo NGINX puede garantizar la seguridad, equilibrar la carga y proporcionar alta disponibilidad en sistemas IoT basados en MQTT.

Blog

Documentos