MQTT son las siglas de Message Queuing Telemetry Transport. Se trata de un protocolo de mensajería ligero que se utiliza en los casos en que los clientes necesitan una huella de código pequeña y están conectados a redes poco fiables o con recursos de ancho de banda limitados. Se utiliza principalmente para la comunicación de máquina a máquina (M2M) o para conexiones del tipo Internet de las Cosas.
MQTT fue creado originalmente por el Dr. Andy Stanford-Clark y Arlen Nipper en 1999. El objetivo original del método de comunicación era permitir que los dispositivos de monitoreo utilizados en la industria del petróleo y el gas enviaran sus datos a servidores remotos. En muchos casos, estos dispositivos de monitoreo se utilizaban en lugares remotos donde cualquier tipo de línea telefónica fija, conexión por cable o conexión de transmisión por radio sería difícil, o imposible, de establecer. En aquella época, la única opción para esos casos eran las comunicaciones por satélite, que eran muy caras y se facturaban en función de la cantidad de datos utilizados. Con miles de sensores sobre el terreno, el sector necesitaba una forma de comunicación que proporcionara datos lo bastante fiables para su uso y, al mismo tiempo, utilizara un ancho de banda mínimo.
MQTT se estandarizó como código abierto bajo la Organización para el Avance de Estándares de Información Estructurada (OASIS) en 2013. OASIS sigue gestionando el estándar MQTT.
Las alertas personalizadas y la visualización de datos le permiten identificar y prevenir rápidamente los problemas de salud y rendimiento de la red.
MQTT se ejecuta sobre TCP/IP utilizando una topología PUSH/SUBSCRIBE. En la arquitectura MQTT, existen dos tipos de sistemas: clientes y brokers. Un broker es el servidor con el que se comunican los clientes. El broker recibe las comunicaciones de los clientes y las envía a otros clientes. Los clientes no se comunican directamente entre sí, sino que se conectan al broker. Cada cliente puede ser un publicador, un suscriptor o ambos.
MQTT es un protocolo basado en eventos. No hay transmisión periódica o continua de datos. Esto mantiene la transmisión al mínimo. Un cliente sólo publica cuando hay información que enviar, y un broker sólo envía información a los suscriptores cuando llegan nuevos datos.
Otra forma en que MQTT minimiza sus transmisiones es con una construcción de mensajes pequeña y bien definida. Cada mensaje tiene una cabecera fija de sólo 2 bytes. Puede utilizarse una cabecera opcional, pero aumenta el tamaño del mensaje. La carga útil del mensaje se limita a 256 MB. Tres niveles diferentes de calidad de servicio (QoS) permiten a los diseñadores de redes elegir entre minimizar la transmisión de datos y maximizar la fiabilidad.
Para situaciones en las que las comunicaciones son fiables pero limitadas, la QoS 0 puede ser la mejor opción. Para situaciones en las que las comunicaciones son poco fiables, pero en las que las conexiones no tienen tantos recursos limitados, la QoS 2 sería la mejor opción. La QoS 1 ofrece una especie de solución "lo mejor de ambos mundos", pero requiere que la aplicación que recibe los datos sepa cómo gestionar los duplicados.
Tanto para la QoS 1 como para la QoS 2, los mensajes se guardan o se ponen en cola para los clientes que no están conectados y que tienen una sesión persistente establecida. Estos mensajes se reenvían (según el nivel de QoS apropiado) una vez que el cliente vuelve a estar en línea.
Las notificaciones en tiempo real significan una solución de problemas más rápida para que pueda actuar antes de que se produzcan problemas más graves.
Los mensajes en MQTT se publican como temas. Los temas son estructuras jerárquicas que utilizan la barra (/) como delimitador. Esta estructura se asemeja a la de un árbol de directorios en un sistema de archivos informático. Una estructura como sensores/OilandGas/Presión/ permite a un suscriptor especificar que sólo se le envíen datos de los clientes que publican en el tema Presión, o para una visión más amplia, quizás todos los datos de los clientes que publican en cualquier tema sensores/OilandGas. Los temas no se crean explícitamente en MQTT. Si un corredor recibe datos publicados en un tema que no existe actualmente, el tema es simplemente creado, y los clientes pueden suscribirse al nuevo tema.
Para mantener un tamaño reducido, los mensajes recibidos no se almacenan en el broker a menos que estén marcados con la bandera de retenido. Esto se denomina mensaje retenido. Los usuarios que deseen almacenar los mensajes recibidos tendrán que almacenarlos en otro lugar fuera del protocolo MQTT. Hay una excepción.
Al tratarse de un protocolo basado en eventos, es posible, incluso probable, que un suscriptor reciba muy pocos mensajes de un tema determinado, incluso durante un largo periodo de tiempo. En la estructura de temas mencionada anteriormente, quizá sólo se envíen mensajes al tema Presión cuando un sensor detecte que la presión ha superado un determinado valor. Suponiendo que el sensor monitoreado no falle con frecuencia, podrían pasar meses o incluso años antes de que un cliente publique un mensaje en ese tema.
Para garantizar que un nuevo suscriptor reciba los mensajes de un tema, los brokers pueden conservar el último mensaje enviado a cada tema. Esto se denomina mensaje retenido. Cada vez que un nuevo cliente se suscribe a un tema o cuando un cliente existente vuelve a estar en línea, el mensaje retenido se envía a los suscriptores, asegurando así que la suscripción está activa, y que tiene la información más reciente.
Cuando las comunicaciones no son fiables, es posible que un editor se desconecte de la red sin previo aviso. Un editor puede registrar un mensaje que se enviará a los abonados en caso de que el editor se desconecte inesperadamente, lo que se denomina última voluntad. Este mensaje se almacena en caché en el broker y se envía a los abonados en caso de que el editor se desconecte indebidamente. Normalmente, dicho mensaje incluye información que permite identificar al editor desconectado para que se puedan tomar las medidas oportunas.
Para mantener el protocolo pequeño, sólo hay cuatro acciones posibles con cualquier comunicación: publicar, suscribirse, darse de baja o hacer ping.
El objetivo original del protocolo MQTT era realizar la transmisión de datos más pequeña y eficiente posible a través de líneas de comunicación caras y poco fiables. Por ello, la seguridad no fue una de las principales preocupaciones durante el diseño y la implementación de MQTT.
Sin embargo, hay algunas opciones de seguridad disponibles a costa de una mayor transmisión de datos y una mayor huella.
PRTG es un software de monitoreo de red integral y realiza un seguimiento de toda su infraestructura de TI.
El3 de abril de 2019 OASIS publicó el estándar oficial MQTT v5.0
Principales novedades de MQTT v5.0