¿Qué es el intervalo de retardo de testamento de MQTT?
El testamento (Last Will and Testament) permite a un broker anunciar que un cliente se cayó, lo cual es invaluable para saber cuándo un dispositivo remoto quedó a oscuras. En una red estable se dispara cuando debe. En un enlace celular inestable puede dispararse demasiado ansiosamente, marcando un sitio como desconectado por los pocos segundos que toma reconectarse tras una caída breve, y generando un torrente de falsas notificaciones de muerte y recuperación. MQTT 5.0 agregó el intervalo de retardo de testamento para domar justamente este comportamiento, reteniendo el testamento para dar al cliente una oportunidad de regresar primero. Esta guía explica qué es el intervalo de retardo de testamento, cómo interactúa con el testamento y la sesión, y por qué importa en enlaces de campo poco confiables.
Retardo de testamento de MQTT en una línea: El intervalo de retardo de testamento de MQTT es una propiedad de MQTT 5.0 que indica al broker esperar un número especificado de segundos después de que un cliente se desconecta antes de publicar el mensaje de testamento de ese cliente. Si el cliente se reconecta y reanuda su sesión dentro de esa ventana, el testamento nunca se envía, lo que evita que una desconexión breve dispare una falsa notificación de desconexión o de muerte.
Retrasar el testamento en lugar de dispararlo de inmediato
Sin un retardo de testamento, un broker publica el testamento de un cliente en cuanto detecta que el cliente se desconectó de forma abrupta, ya sea porque se perdió un keepalive, la red cayó, o la conexión se cortó. Esa inmediatez es una ventaja cuando un dispositivo realmente falló, pero es una molestia cuando el cliente solo se está reconectando. El testamento anuncia al cliente como ido en el mismo momento en que a menudo ya está marcando de vuelta, así que el estado desconectado puede ser más corto que la notificación que lo describe.
El intervalo de retardo de testamento inserta un periodo de gracia. Cuando está fijado, el broker nota la desconexión pero arranca un temporizador en lugar de publicar el testamento de inmediato. Si el temporizador expira y el cliente aún no ha regresado, el testamento se publica como de costumbre, confirmando que la ausencia es real. Si en cambio el cliente se reconecta y reanuda su sesión existente antes de que el temporizador termine, el broker cancela el testamento pendiente por completo, y ningún mensaje de muerte se envía. Los suscriptores que vigilan el estado de ese cliente nunca ven un parpadeo, porque desde su perspectiva el cliente nunca anunció que se fue.
El retardo se expresa como una propiedad cargada en el testamento, junto con el tópico del testamento, la carga útil, la calidad de servicio y la bandera de retención, así que lo configura el cliente al conectarse. Un cliente que sabe que vive en un enlace poco confiable puede fijar un retardo cómodamente más largo que su tiempo típico de reconexión, de modo que las reconexiones ordinarias caigan dentro de la ventana mientras que una falla genuina, que nunca se reconecta, aún dispare eventualmente el testamento tras transcurrir el retardo.
Cómo interactúa con la sesión
El intervalo de retardo de testamento está estrechamente ligado a la sesión del cliente y a su expiración de sesión. Para que el retardo salve a un cliente que se reconecta, la sesión debe seguir existiendo cuando el cliente regrese, de modo que la reconexión sea una reanudación de la misma sesión en lugar de una nueva. Por eso el retardo de testamento trabaja de la mano con una expiración de sesión distinta de cero: la sesión persiste a través del breve hueco, el cliente que se reconecta se reincorpora a ella, y el testamento pendiente se cancela porque el cliente que lo poseía está de vuelta.
Hay una relación entre los dos temporizadores que un diseñador debe tener presente. Si la expiración de sesión es más corta que el retardo de testamento, la sesión puede caducar antes de que el retardo de testamento hubiera transcurrido, y en ese caso el broker publica el testamento cuando la sesión expira en lugar de esperar el retardo completo, porque la sesión del cliente ya no existe para reanudarse. En la práctica esto significa que el retardo de testamento solo es plenamente efectivo hasta el punto en que la propia sesión expiraría, así que los dos intervalos suelen elegirse juntos.
Vale la pena separar los dos tipos de desconexión. Una desconexión limpia, donde el cliente envía un paquete de desconexión adecuado, no dispara el testamento en absoluto por defecto, porque el cliente se va a propósito. El testamento y su retardo son sobre desconexiones abruptas, las que un dispositivo no alcanza a anunciar, como un módem caído o una pérdida de energía. El intervalo de retardo simplemente le da a esas desconexiones abruptas el beneficio de la duda por un rato, bajo la teoría de que muchas de ellas son transitorias en lugar de terminales.
Domar los enlaces de campo inestables
En sitios industriales remotos el enlace es con frecuencia la parte menos confiable del sistema. Un módem celular en una plataforma de pozos puede perder y recuperar su conexión varias veces por hora mientras salta entre torres, sobrevive a interferencia, o se recupera de una caída momentánea de señal. Cada una de esas pérdidas breves es una desconexión abrupta desde el punto de vista del broker, y sin un retardo de testamento cada una publica una notificación de muerte seguida momentos después por una recuperación, llenando las pantallas de los operadores y los registros de alarmas con eventos de desconexión de sitios que nunca dejaron de funcionar.
Ese ruido no es inofensivo. Cuando el estado parpadea constantemente, los operadores aprenden a ignorar el indicador de desconectado, y una interrupción genuina se esconde entre las falsas. El intervalo de retardo de testamento corta esto de raíz absorbiendo por completo los parpadeos cortos. Si un sitio se reconecta de forma confiable dentro de, digamos, una ventana razonable, y el retardo se fija más allá de esa ventana, los parpadeos cotidianos no producen ninguna notificación, y un evento de desconexión en la pantalla vuelve a significar algo real: un dispositivo que ha estado ausente lo suficiente como para merecer una mirada.
Para una plataforma SCADA en la nube como Merobix, donde el estado de muchos sitios remotos se vigila de forma centralizada, esta distinción entre un parpadeo y una falla es lo que hace confiable a la notificación de muerte. Combinado con una expiración de sesión adecuada para que la sesión sobreviva al hueco, un retardo de testamento bien elegido permite a la plataforma reportar un sitio como verdaderamente desconectado solo cuando ha estado inalcanzable más allá del periodo de gracia, en lugar de cada vez que un módem tiene un hipo. Los operadores obtienen un indicador de estado en el que pueden creer, y el historial de alarmas deja de contaminarse con la turbulencia ordinaria de la conectividad celular.
Preguntas frecuentes
¿En qué se diferencia el intervalo de retardo de testamento del keepalive?
El keepalive determina cuánto espera el broker antes de decidir que un cliente silencioso se desconectó en primer lugar. El intervalo de retardo de testamento es un temporizador separado y posterior que determina cuánto espera el broker tras esa decisión antes de publicar realmente el testamento. Juntos significan que un cliente no se declara verdaderamente ido hasta que ha perdido su keepalive y luego ha fallado en regresar dentro de la ventana de retardo de testamento.
¿Qué retardo debo fijar para un sitio celular?
Elija un retardo cómodamente más largo que el tiempo típico que le toma al dispositivo reconectarse tras una caída breve, para que los parpadeos ordinarios caigan dentro del periodo de gracia, pero suficientemente corto como para que una falla genuina aún se reporte con prontitud. No hay un valor universal porque los tiempos de reconexión varían por módem, operador y ubicación. El retardo también debe fijarse dentro de la expiración de sesión, ya que la sesión debe seguir existiendo para que una reconexión cancele el testamento pendiente.
¿El retardo de testamento requiere MQTT 5.0?
Sí. El intervalo de retardo de testamento es una propiedad introducida en MQTT 5.0 y no está disponible en MQTT 3.1.1, donde el testamento siempre se publica en cuanto se detecta una desconexión abrupta. Para usarlo, tanto el cliente como el broker deben soportar MQTT 5.0, y el cliente fija el retardo como una propiedad junto con el resto de su configuración de testamento al conectarse.
Servicios de automatización
¿Necesita convertir esta información en un sistema que funcione?
Merobix integra SCADA, programa PLC Allen-Bradley y Siemens, y diseña y fabrica tableros de control industrial.
Las solicitudes de reunión se revisan antes de confirmarse.