ADC

Compatibilidad con MQTT para respondedor

La función Responder es compatible con el protocolo MQTT. Puede configurar las directivas de respuesta para que realicen una acción en función de los parámetros del mensaje MQTT entrante.

La acción responde con cualquiera de las siguientes opciones a una conexión nueva:

  • DROP
  • RESET
  • NOOP
  • Una acción de respuesta para iniciar una nueva respuesta de MQTT CONNACK.

Configuración de directivas de respuesta para MQTT

Después de habilitar la función de respuesta, debe configurar una o más acciones para gestionar las solicitudes de MQTT. A continuación, configure una directiva de respuesta. Puede vincular las directivas de respuesta de forma global o a un servidor virtual de equilibrio de carga específico o a un servidor virtual de conmutación de contenido.

Los siguientes puntos de enlace están disponibles para vincular las directivas de respuesta a nivel mundial:

  • MQTT_REQ_DEFAULT
  • MQTT_REQ_OVERRIDE
  • MQTT_JUMBO_REQ_DEFAULT
  • MQTT_JUMBO_REQ_OVERRIDE

Los siguientes puntos de enlace están disponibles para vincular las directivas de respuesta a un servidor virtual de conmutación de contenido o equilibrio de carga:

  • REQUEST
  • MQTT_JUMBO_REQ (este punto de enlace se usa solo para paquetes Jumbo)

Para configurar el respondedor para que responda a una solicitud de MQTT mediante la CLI

En el símbolo del sistema, escriba los comandos siguientes:

Configure una acción de respuesta.

add responder action <actName> <actType>
<!--NeedCopy-->
  • Para actname, sustituye un nombre para la nueva acción. El nombre puede tener entre 1 y 127 caracteres y puede contener letras, números, guiones (-) y caracteres de subrayado (_).
  • Sustituya actTypeel tipo de acción de respuesta por respondwith.

Ejemplo:

add responder action mqtt_connack_unsup_ver respondwith MQTT.NEW_CONNACK(132)
<!--NeedCopy-->

Configure una directiva de respuesta. El dispositivo NetScaler responde a las solicitudes de MQTT seleccionadas por esta directiva de respuesta.

add responder policy <polName> <rule> <actname>
<!--NeedCopy-->
  • Para polname, sustituya su nueva directiva por un nombre.
  • actnameSustituya el nombre de la acción que ha creado.

Ejemplo:

add responder policy reject_lower_version "MQTT.HEADER.COMMAND.EQ(CONNECT) && MQTT.VERSION.LT(3)" mqtt_connack_unsup_ver
<!--NeedCopy-->

Enlazar la directiva de respuesta a un servidor virtual de equilibrio de carga específico o a un servidor virtual de conmutación de contenido. La directiva se aplica solo a las solicitudes MQTT cuya dirección IP de destino es la VIP de ese servidor virtual.

bind lb vserver <name> -policyName <policy_name> -priority <priority>

bind cs vserver <name> -policyName <policy_name> -priority <priority>
<!--NeedCopy-->
  • Por policy_name, sustituya el nombre de la directiva que ha creado.
  • Para priority, especifique la prioridad de la directiva.

Ejemplo:

bind lb vserver lb1 -policyName reject_lower_version -priority 50

bind cs vserver mqtt_frontend_cs -policyName reject_lower_version -priority 5
<!--NeedCopy-->

Caso de uso 1: filtra los clientes según el nombre de usuario o el ID del cliente

El administrador puede configurar una directiva de respuesta de MQTT para rechazar la conexión basándose en el nombre de usuario o el ID de cliente del mensaje MQTT CONNECT.

Ejemplo de configuración para filtrar clientes en función del ID del cliente

add policy patset filter_clients
bind policy patset filter_clients client1

add responder action mqtt_connack_invalid_client respondwith MQTT.NEW_CONNACK(2)

add responder policy reject_clients "MQTT.HEADER.COMMAND.EQ(CONNECT) && mqtt.connect.clientid.equals_any("filter_clients")" mqtt_connack_invalid_client

bind cs vserver mqtt_frontend_cs -policyName reject_clients -priority 5
<!--NeedCopy-->

Caso de uso 2: Limite la longitud máxima de los mensajes MQTT para gestionar paquetes gigantes

El administrador puede configurar una directiva de respuesta de MQTT para interrumpir la conexión del cliente si la longitud del mensaje supera un umbral determinado o tomar las medidas necesarias en función de los requisitos.

Para gestionar paquetes gigantes, las directivas de respuesta con cualquiera de los siguientes patrones de reglas están vinculadas al punto de enlace gigante:

  • MQTT.MESSAGE_LENGTH
  • COMANDO MQTT
  • MQTT.FROM_CLIENT
  • MQTT.FROM_SERVER

Las directivas vinculadas a puntos de enlace jumbo se evalúan solo para paquetes jumbo.

Ejemplo de configuración para limitar la longitud máxima de los mensajes MQTT

set lb parameter -dropmqttjumbomessage no

add responder policy drop_large_message MQTT.MESSAGE_LENGTH.GT(100000) reset

bind cs vserver mqtt_frontend_cs -policyName drop_large_message -priority 10
<!--NeedCopy-->

En este ejemplo, el parámetro dropmqttjumbomessage se establece en NO. Por lo tanto, el dispositivo ADC procesa los mensajes con una longitud superior a 64 000 bytes y inferior a 1 000 000 bytes. Los mensajes con una longitud superior a 1 000 000 bytes se restablecen.

Compatibilidad con MQTT para respondedor