Mensajería de MQTT
MQTT es un estándar abierto gestionado por la organización de estándares OASIS y reconocido internacionalmente por la ISO, y es el protocolo principal que utilizan los dispositivos y aplicaciones para comunicarse con la IoT herramienta.
MQTT es un protocolo de transporte de mensajería de publicación y suscripción diseñado para el intercambio eficiente de datos prácticamente en tiempo real entre dispositivos móviles y sensores. Para obtener más información, consulte OASIS Message Queuing Telemetry Transport.
MQTT se ejecuta sobre TCP/IP, y mientras sea posible codificar directamente a TCP/IP, también puede elegir utilizar una biblioteca que maneje los detalles del protocolo MQTT. Hay disponible una amplia gama de bibliotecas de cliente de MQTT. IBM contribuye al desarrollo y al soporte de varias bibliotecas de cliente, incluidas aquellas que están disponibles en los sitios siguientes:
Estándares y requisitos
Para obtener más información sobre las versiones de MQTT compatibles con la IoT herramienta, consulte Normas y requisitos.
Restricciones y limitaciones
Para obtener más información sobre las restricciones y limitaciones que se aplican a los clientes MQTT cuando se conectan a la IoT herramienta, consulte Restricciones y limitaciones.
Seguridad de puerto
Los dispositivos, las puertas de enlace y las aplicaciones se conectan a la IoT herramienta mediante el protocolo MQTT o HTTP.
| Tipo de conexión | Protocolo | Número de puerto |
|---|---|---|
| Secure (TLS) | MQTT y HTTPS | 443 |
MQTT recibe soporte sobre TCP y WebSockets. Los clientes de MQTT se conectan utilizando las credenciales adecuadas, como por ejemplo las señales de autenticación de dispositivo para dispositivos y claves y señales de API para aplicaciones. Las credenciales TLS siempre están cifradas cuando se envían a través de puertos seguros.
Cuando se utiliza la mensajería MQTT segura en el puerto 443, las bibliotecas de clientes más recientes confían automáticamente en el certificado predeterminado que presenta la IoT herramienta. Si este no es el caso de su entorno de cliente, puede descargar y utilizar la cadena de certificados completa desde messaging.pem. Si ha subido un certificado personalizado, es posible que tenga que asegurarse de que se añade la cadena de confianza a su entorno de cliente.
TLS
Debe habilitar TLS en la aplicación para evitar enviar datos de forma insegura.
Para obtener más información, consulte los siguientes temas:
Política de uso razonable
En 8.10 y versiones posteriores, la limitación del uso justo detiene las operaciones de lectura en las conexiones que superan el límite de conexiones. Los límites de limitación de la IoT herramienta son por dispositivo y se basan en la clase de dispositivo, por ejemplo, dispositivo, puerta de enlace o aplicación. Estos límites se utilizan para prevenir ataques de denegación de servicio ( DoS ) desde dispositivos. Los límites de limitación no se ajustan al tamaño de implementación de IoT la herramienta. La limitación no se aplica a las conexiones de corta duración que envían pocos mensajes, como las conexiones para clientes de mensajeri HTTP. Para obtener más información, consulte Cuotas.
Para maximizar las tasas de mensajes, asegúrese de que su aplicación de ingesta IoT de datos de herramientas distribuya la carga entre muchos dispositivos o aplicaciones MQTT. La IoT herramienta MQTT Service está diseñada para gestionar muchas conexiones de dispositivos, cada uno de los cuales publica a bajas velocidades.
Autenticación de cliente de MQTT
Cada cliente MQTT requiere un ID de cliente exclusivo. Si intenta conectar un cliente a la organización utilizando un ID de cliente que ya esté conectado, se desconectará la primera conexión.
Los dispositivos y puertas de enlace que están conectados directamente a la IoT herramienta muestran un icono de estado en el panel de control para indicar que están conectados. Los dispositivos que están conectados de forma indirecta a través de una pasarela se muestran como desconectados porque el panel de control no sabe qué dispositivos están conectados a través de una pasarela.
Niveles de calidad de servicio de mensajería (QoS)
| Nivel | Descripción |
|---|---|
| Como máximo una vez (QoS 0) | La calidad del nivel de servicio 0 (QoS 0) es la modalidad de transferencia más rápida. El mensaje se entrega como máximo una vez, o puede no entregarse en absoluto. La entrega a través de la red no se confirma y el mensaje no se almacena. El mensaje puede perderse si el cliente se desconecta o si falla el servidor. El protocolo MQTT no requiere que los servidores reenvien las publicaciones en el nivel de calidad de servicio 0 a un cliente. Si el cliente está desconectado en el momento de que el servidor reciba la publicación, ésta se podría descartar, en función de la implementación del servidor. Cuando se envían datos casi en tiempo real en un intervalo, utilice el nivel de calidad de servicio 0. Si falta un único mensaje, no importa porque otro mensaje que contiene datos más recientes se envía poco después. En este caso de ejemplo, el coste adicional de utilizar una calidad superior de servicio no produce ningún beneficio tangible. |
| Al menos una vez (QoS 1) | Con el nivel de calidad de servicio 1 ( QoS 1), el mensaje siempre se entrega al menos una vez. Si se produce una anomalía antes de que el remitente reciba un acuse de recibo, un mensaje puede entregarse varias veces. El mensaje debe estar almacenado de forma local en el remitente hasta que éste reciba confirmación de que el mensaje ha sido publicado por el receptor. El mensaje se almacena por si este debe volverse a enviar. La entrega fiable del mensaje al bróker MQTT no significa que Maximo® Monitor procesará el mensaje. |
| Exactamente una vez (QoS 2) | El nivel de calidad de servicio 2 ( QoS 2) proporciona la entrega de mensajes más fiable, pero también tiene el modo de transferencia más lento. El mensaje siempre se entrega exactamente una vez y también debe estar almacenado de forma local en el remitente hasta que el remitente reciba confirmación de que el mensaje ha sido publicado por el receptor. El mensaje se almacena por si este debe volverse a enviar. Con la calidad de nivel de servicio 2, se utiliza una secuencia de conformidad de conexión y de reconocimiento más sofisticada que para el nivel 1 para asegurarse de que los mensajes no estén duplicados. La entrega fiable del mensaje al bróker MQTT no significa que Maximo Monitor procesará el mensaje. Cuando envíe mandatos, si desea confirmar que sólo se actúa sobre el mandato especificado y que se actuará sobre él una sola vez, utilice la calidad de servicio de nivel 2. En este ejemplo, las sobrecargas adicionales del nivel 2 pueden ser ventajosas sobre otros niveles. |
- El rendimiento de E/S del disco es fundamental para QoS 1 y QoS 2, ya que estos niveles requieren persistencia del disco en los componentes de IoT mensajería de la herramienta.
- La especificación MQTT proporciona una negociación de control de flujo a nivel de protocolo entre el cliente y el servidor. El cliente y el servidor negocian el número de mensajes no reconocidos permitidos en la sesión. Si el cliente no tiene ningún ID de mensaje disponible, el cliente debe poner en pausa la publicación hasta que los ID estén disponibles. Los ID de mensaje están disponibles cuando se reciben acuses de recibo de mensaje (ACK). Para obtener más información, consulte la Especificación MQTT estándar OASIS.
Velocidades de ingesta de datos
Para conseguir velocidades de ingesta de datos más altas, utilice el protocolo de mensajería MQTT y mantenga abierta la conexión de dispositivo al publicar mensajes.
MQTT CONNECT
MQTT PUBLISH
MQTT PUBLISH
MQTT PUBLISH
...
MQTT CONNECT
MQTT PUBLISH
MQTT DISCONNECT
MQTT CONNECT
MQTT PUBLISH
MQTT DISCONNECT
...
Los factores siguientes influyen en la tasa de ingestión de datos:
- El protocolo de mensajería. MQTT es un protocolo de gran volumen. HTTP es un protocolo de bajo volumen.
- El patrón de mensajería. Para mejorar la tasa de ingestión de datos, no cierre las sesiones MQTT después de publicar cada mensaje. Deje abierta la conexión.
- Número de dispositivos. Para mejorar la ingesta de datos y las velocidades de mensajes, distribuya la carga entre más conexiones.
- La clase de dispositivo. Las cuotas de uso justo se basan en la clase de dispositivo.
- La QoS. Los altos niveles de fiabilidad de mensajería requieren mayores costes.