ADC

Prise en charge de MQTT pour répondeur

La fonction Responder prend en charge le protocole MQTT. Vous pouvez configurer les stratégies de répondeur pour qu’elles prennent une action basée sur les paramètres du message MQTT entrant.

L’action répond par l’un des éléments suivants à une nouvelle connexion :

  • ABANDONNER
  • RESET
  • NOOP
  • Une action du répondeur pour initier une nouvelle réponse MQTT CONNACK.

Configuration des stratégies de répondeur pour MQTT

Après avoir activé la fonctionnalité de répondeur, vous devez configurer une ou plusieurs actions pour gérer les requêtes MQTT. Ensuite, configurez une stratégie de répondeur. Vous pouvez lier les stratégies de répondeur globalement, ou à un serveur virtuel d’équilibrage de charge spécifique ou à un serveur virtuel de commutation de contenu spécifique.

Les points de liaison suivants sont disponibles pour lier les stratégies de répondeur globalement :

  • MQTT_REQ_DEFAULT
  • MQTT_REQ_OVERRIDE
  • MQTT_JUMBO_REQ_DEFAULT
  • MQTT_JUMBO_REQ_OVERRIDE

Les points de liaison suivants sont disponibles pour lier les stratégies de répondeur à un serveur virtuel de commutation de contenu ou d’équilibrage de charge :

  • REQUEST
  • MQTT_JUMBO_REQ (ce point de liaison est utilisé uniquement pour les paquets Jumbo)

Pour configurer le répondeur afin qu’il réponde à une demande MQTT à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes :

Configurez une action de répondeur.

add responder action <actName> <actType>
<!--NeedCopy-->
  • Pour actname, remplacez votre nouvelle action par un nom. Le nom peut comporter entre 1 et 127 caractères et peut contenir des lettres, des chiffres, des traits d’union (-) et des traits de soulignement (_).
  • Remplacez actTypele type d’action du répondeur par respondwith.

Exemple :

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

Configurez une stratégie de répondeur. L’appliance NetScaler répond aux demandes MQTT sélectionnées par cette stratégie de répondeur.

add responder policy <polName> <rule> <actname>
<!--NeedCopy-->
  • Pour polname, remplacez un nom pour votre nouvelle stratégie.
  • Remplacez par le nom de l’action que vous avez créée. actname

Exemple :

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

Liez la stratégie de répondeur à un serveur virtuel d’équilibrage de charge spécifique ou à un serveur virtuel de commutation de contenu spécifique. La stratégie s’applique uniquement aux requêtes MQTT dont l’adresse IP de destination est la VIP de ce serveur virtuel.

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

bind cs vserver <name> -policyName <policy_name> -priority <priority>
<!--NeedCopy-->
  • Pour policy_name, remplacez le nom de la stratégie que vous avez créée.
  • Pour priority, spécifiez la priorité de la stratégie.

Exemple :

bind lb vserver lb1 -policyName reject_lower_version -priority 50

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

Cas d’utilisation 1 : Filtrer les clients en fonction du nom d’utilisateur ou de l’ID client

L’administrateur peut configurer une stratégie de répondeur MQTT pour rejeter la connexion en fonction du nom d’utilisateur ou de l’ID client figurant dans le message MQTT CONNECT.

Exemple de configuration pour filtrer les clients en fonction de l’ID client

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-->

Cas d’utilisation 2 : Limiter la longueur maximale des messages MQTT pour gérer les paquets Jumbo

L’administrateur peut configurer une stratégie de réponse MQTT pour interrompre la connexion client si la longueur du message dépasse un certain seuil, ou prendre les mesures nécessaires en fonction des besoins.

Pour gérer les paquets jumbo, les stratégies de répondeur avec l’un des modèles de règles suivants sont liées au point de liaison jumbo :

  • MQTT.MESSAGE_LENGTH
  • MQTT.COMMAND
  • MQTT.FROM_CLIENT
  • MQTT.FROM_SERVER

Les stratégies liées aux points de liaison jumbo sont évaluées uniquement pour les paquets jumbo.

Exemple de configuration pour limiter la longueur maximale des messages 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-->

Dans cet exemple, le dropmqttjumbomessage paramètre est défini sur NO. Par conséquent, l’appliance ADC traite les messages dont la longueur est supérieure à 64 000 octets et inférieure à 1 000 000 octets. Les messages d’une longueur supérieure à 100 000 octets sont réinitialisés.