Glosario de Automatización • Niveles de QoS de MQTT (0, 1, 2)

¿Qué son los niveles de QoS de MQTT (0, 1, 2)?

Ingeniería Merobix • • 7 min de lectura

MQTT permite que cada mensaje lleve un nivel de calidad de servicio que decide qué tan duro trabaja el protocolo para entregarlo, cambiando la sobrecarga de red por el riesgo de perder o duplicar datos. Los tres niveles van desde enviar sin garantía hasta un handshake completo de cuatro pasos que garantiza exactamente una entrega. Esta guía explica QoS 0, 1 y 2, qué cuesta cada uno en viajes de ida y vuelta y qué arriesga en pérdida o duplicados, y cómo elegir un nivel para telemetría que cruza un enlace celular inestable donde un hueco o un doble conteo de verdad importa.

Volver al glosario

Niveles de QoS de MQTT (0, 1, 2) en una línea: MQTT define tres niveles de calidad de servicio para la entrega de mensajes. QoS 0 es a lo más una vez, enviado sin confirmación, así que es el más barato pero puede perderse. QoS 1 es al menos una vez, confirmado y reintentado hasta ser reconocido, lo cual garantiza la llegada pero puede entregar duplicados. QoS 2 es exactamente una vez, usando un handshake de cuatro partes para garantizar una sola entrega sin duplicados con la mayor sobrecarga. Los niveles más altos cuestan más viajes de ida y vuelta a cambio de garantías más fuertes.

QoS 0, 1 y 2 en detalle

QoS 0, a lo más una vez, es el más simple. El emisor publica el mensaje y sigue adelante sin confirmación y sin reintento; a veces se le llama enviar y olvidar. Si el mensaje llega al broker, bien; si la red lo descarta, simplemente se pierde y nadie lo retransmite. Esto hace de QoS 0 la opción más ligera, un mensaje en el bus sin seguimiento, pero no ofrece garantía de entrega alguna. Conviene a lecturas repetidas con frecuencia donde una sola muestra perdida no importa porque otra viene en breve.

QoS 1, al menos una vez, agrega confirmación. Tras publicar, el emisor espera una confirmación y, si ninguna llega a tiempo, reenvía el mensaje. Esto garantiza que el mensaje llegará - sigue intentando hasta ser reconocido - pero introduce la posibilidad de duplicados: si el original llegó y solo su confirmación se perdió, el reenvío entrega una segunda copia. Así que QoS 1 cambia un poco de sobrecarga y la posibilidad de mensajes duplicados por una garantía de que nada se pierde en silencio. Un receptor a menudo tiene que estar preparado para manejar el mismo mensaje dos veces.

QoS 2, exactamente una vez, es el más fuerte y el más pesado. Usa un handshake de cuatro partes que tanto garantiza la entrega como asegura que el mensaje se procese una sola vez, eliminando tanto la pérdida como la duplicación. Esa certeza cuesta lo más: dos viajes de ida y vuelta de intercambio de protocolo por mensaje en vez de uno o ninguno, más el estado que el broker y el cliente deben rastrear hasta que el handshake se completa. QoS 2 se reserva para mensajes donde un duplicado causaría un daño real y el tráfico extra vale la pena pagarlo para prevenirlo.

Sobrecarga frente a riesgo de entrega

Los tres niveles forman un espectro limpio del mismo compromiso: entre más garantiza el protocolo, más tiene que hablar. QoS 0 envía un paquete y espera; su riesgo es la pérdida silenciosa y su costo es esencialmente nada más allá del propio mensaje. QoS 1 envía el mensaje y una confirmación, duplicando los intercambios mínimos y agregando retransmisión cuando las confirmaciones se pierden; su riesgo cambia de pérdida a duplicación. QoS 2 gasta un handshake completo de cuatro vías para eliminar también la duplicación, al mayor costo en viajes de ida y vuelta y en contabilidad del broker.

En una red local confiable estas diferencias apenas se registran, pero en un enlace con pérdidas se vuelven significativas de dos maneras a la vez. Un QoS más alto significa más paquetes que cada uno tiene que sobrevivir el enlace, y una conexión marginal que descarta paquetes forzará más reintentos en QoS 1 y más finalizaciones de handshake en QoS 2, amplificando el tráfico justo cuando el ancho de banda escasea. Al mismo tiempo, ese mismo enlace con pérdidas es donde la pérdida silenciosa de QoS 0 es más probable que muerda. No hay respuesta universalmente correcta; el nivel correcto depende de cuánto cuesta en realidad un mensaje perdido o duplicado para ese dato en particular.

También importa que las garantías de entrega son por salto y por mensaje, no una promesa general sobre todo el sistema. QoS gobierna la confiabilidad entre un cliente y el broker; no reconcilia por sí solo los datos a través de una reconexión ni garantiza semántica de extremo a extremo a través de cada capa superior. Entender qué hace y qué no promete cada nivel es lo que evita que los ingenieros o gasten de más en QoS 2 en todas partes o supongan que la telemetría de QoS 0 es más confiable de lo que es.

Elegir un nivel de QoS para telemetría sobre un enlace celular inestable

Para telemetría rutinaria que publica seguido - una presión o un nivel muestreado cada pocos segundos - QoS 0 o QoS 1 suele ser la elección correcta, y la decisión gira en torno a si un hueco importa. Si el valor se muestrea tan seguido que una lectura faltante es superada de inmediato, QoS 0 mantiene el tráfico mínimo y una muestra perdida es inofensiva. Si cada lectura es significativa y no puede tolerar huecos silenciosos, QoS 1 garantiza la llegada al costo modesto de duplicados ocasionales, que un consumidor bien diseñado puede absorber apoyándose en el propio contenido o marca de tiempo del mensaje.

QoS 2 se gana su lugar para mensajes donde un duplicado de verdad causaría problemas: un comando, un evento de alarma crítico, o un conteo acumulado que no debe aplicarse dos veces. En un enlace celular inestable, la garantía de exactamente una vez de QoS 2 es valiosa precisamente porque los reintentos son comunes, pero su handshake extra es también el más pesado cuando el enlace descarta paquetes, así que se reserva mejor para el puñado de mensajes que lo necesitan en vez de aplicarlo a un chorro de lecturas rutinarias. La disciplina es hacer coincidir el nivel con la consecuencia de equivocarse en un mensaje en particular.

Para un SCADA en la nube como Merobix que ingiere datos de campo por MQTT, esto normalmente significa una mezcla deliberada en vez de un solo ajuste general. La telemetría de alta frecuencia puede fluir a un QoS más bajo para mantener eficiente un enlace celular medido, mientras que los eventos que no deben perderse ni doble contarse usan un QoS más alto. Combinado con los mensajes retenidos y los mecanismos de última voluntad de MQTT, elegir el QoS por tipo de mensaje es como Merobix mantiene los datos de un sitio remoto tanto asequibles de mover como confiables donde se requiere confianza, gastando confiabilidad donde un error importaría y ahorrando ancho de banda donde no.

Preguntas frecuentes

¿Cuál es la diferencia entre QoS 1 y QoS 2 en MQTT?

QoS 1 es al menos una vez: el mensaje se confirma y se reintenta hasta ser reconocido, así que siempre llega pero puede llegar más de una vez como duplicado. QoS 2 es exactamente una vez: un handshake de cuatro partes garantiza que el mensaje se entregue una sola vez sin duplicados. QoS 2 da una certeza más fuerte al costo de más viajes de ida y vuelta y estado del broker.

¿QoS 0 significa que mis datos se perderán?

No necesariamente: QoS 0 significa que no hay garantía, no que la pérdida sea segura. En un enlace sano la mayoría de los mensajes QoS 0 llegan bien, pero no hay confirmación ni reintento, así que cualquier mensaje que la red descarte se pierde en silencio. Es una buena opción para lecturas repetidas con frecuencia donde una muestra faltante ocasional es superada de inmediato por la siguiente.

¿Debería usar QoS 2 para todo por seguridad?

Normalmente no. QoS 2 tiene la mayor sobrecarga - un handshake de cuatro partes por mensaje más estado del broker - lo cual es un desperdicio para telemetría de alta frecuencia y peor en un enlace con pérdidas donde los reintentos se acumulan. Se reserva mejor para mensajes donde un duplicado o una pérdida de verdad importa, como comandos o conteos acumulados, mientras que las lecturas rutinarias usan un nivel más ligero.

Más en Protocolos industriales
Duplicados en QoS 1  •  Niveles de pantalla ISA-101  •  Corregir un bucle de reconexion de cliente MQTT  •  Sesión limpia vs persistente  •  OPC UA vs MQTT para la empresa  •  Todo en Protocolos industriales →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →