¿Cuáles son los pros y los contras de MQTT versus MQTT-S como protocolos de red en IoT (Internet of Things)?

MQTT-S, que ahora se conoce típicamente como MQTT-SN (MQTT para redes de sensores) es una versión de MQTT que se ha adaptado para funcionar mejor en dispositivos donde el bajo consumo de energía es una preocupación principal. El protocolo también se ha adaptado para la comunicación a través de enlaces de bajo ancho de banda que son capaces de solo mensajes cortos y donde las interrupciones de la red son comunes. Dichos sistemas incluirían microcontroladores de baja potencia que se comunican a través de enlaces seriales con cable de baja velocidad de bits, enlaces inalámbricos de baja potencia (por ejemplo, 802.15.4, ZigBee, serie inalámbrica patentada, etc.), IR, ultrasonidos u otro tipo de enlace.

Para citar la especificación real: [1]

3 MQTT-SN vs MQTT

En comparación con MQTT, MQTT-SN se caracteriza por las siguientes diferencias:

1. El mensaje CONEXIÓN se divide en tres mensajes. Los dos adicionales son opcionales y se utilizan para transferir el tema Will y el mensaje Will al servidor.

2. Para hacer frente a la longitud del mensaje corto y al ancho de banda de transmisión limitado en las redes inalámbricas, el nombre del tema en los mensajes PUBLICAR se reemplaza por una “identificación del tema” corta de dos bytes de longitud. Se define un procedimiento de registro para permitir a los clientes registrar sus nombres de tema con el servidor / puerta de enlace y obtener los identificadores de tema correspondientes. También se usa en la dirección opuesta para informar al cliente sobre el nombre del tema y la identificación del tema correspondiente que se incluirá en el siguiente mensaje PUBLICAR.

3. Se introducen identificadores de tema “predefinidos” y nombres de tema “cortos”, para los cuales no se requiere registro. Los ID de tema predefinidos también son un reemplazo de dos bytes de largo del nombre del tema, sin embargo, su aplicación a los nombres de tema es conocida de antemano tanto por la aplicación del cliente como por la puerta de enlace / servidor. Por lo tanto, ambos lados pueden comenzar a usar identificadores de tema predefinidos; no es necesario registrarse, como en el caso de los ID de tema “normales” mencionados anteriormente. Los nombres de tema cortos son nombres de tema que tienen una longitud fija de dos octetos. Son lo suficientemente cortos como para ser transportados junto con los datos dentro de los mensajes PUBLICAR. En cuanto a los ID de tema predefinidos, tampoco es necesario registrarse para nombres de tema cortos.

4. Un procedimiento de descubrimiento ayuda a los clientes sin una dirección de servidor / puerta de enlace preconfigurada a descubrir la dirección de red real de un servidor / puerta de enlace operativo. Pueden estar presentes múltiples puertas de enlace al mismo tiempo dentro de una única red inalámbrica y pueden cooperar en un modo de carga compartida o en espera.

5. La semántica de una “sesión limpia” se extiende a la función Will, es decir, no solo las suscripciones del cliente son persistentes, sino también el tema Will y el mensaje Will. Un cliente también puede modificar su tema Will y su mensaje Will durante una sesión.

6. Se define un nuevo procedimiento de mantenimiento sin conexión para el soporte de clientes dormidos. Con este procedimiento, los dispositivos que funcionan con baterías pueden pasar a un estado de suspensión durante el cual todos los mensajes destinados a ellos se almacenan en el servidor / puerta de enlace y se entregan más tarde cuando se activan.

En respuesta a su pregunta sobre los pros y los contras de MQTT versus MQTT-SN, uno no es mejor ni peor que el otro, de hecho, están diseñados para usarse en concierto. MQTT-SN es en realidad una adaptación de la especificación MQTT original para su uso en lugares que no se habían tenido en cuenta cuando IBM creó el protocolo original.

[1] MQTT para redes de sensores (MQTT-SN) Protocolo Especificación Versión 1.2

Aquí está mi respuesta rápida y sucia, aunque Adam lo cubrió bien:

  1. piense en el protocolo mqtt-sn como un protocolo de datagrama, que usaría para sus sensores en su hogar o en un edificio de oficinas. Todos se conectan a una puerta de enlace de IoT, pero su alcance es su red local.
  2. Piense en mqtt como el protocolo que conecta la puerta de enlace de IoT al intermediario

Muchos dispositivos pueden implementar mqtt y conectarse directamente a la nube. Pero para algunos dispositivos de baja potencia (especialmente aquellos que duermen a menudo), es más eficiente usar gramos de datos en lugar de tcp.

Hacer datagramas directamente a la nube es ineficiente y propenso a errores, por lo tanto, la puerta de enlace en el medio que básicamente recopila estos datagramas y mueve cosas a la nube a través de mqtt confiable y basado en tcp.