ADC

Prise en charge de MQTT pour répondeur

La fonction Responder prend en charge le protocole MQTT. Vous pouvez configurer les politiques du répondeur pour effectuer une action en fonction des paramètres du message MQTT entrant.

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

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

Configuration des politiques 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. Configurez ensuite une politique de réponse. Vous pouvez lier les politiques du répondeur de manière globale ou à un serveur virtuel d’équilibrage de charge ou à un serveur virtuel de commutation de contenu spécifique.

Les points de liaison suivants sont disponibles pour lier les politiques du répondeur de manière globale :

  • MQTT_REQ_DEFAULT
  • MQTT_REQ_OVERRIDE
  • MQTT_JUMBO_REQ_DEFAULT
  • MQTT_JUMBO_REQ_OVERRIDE

Les points de liaison suivants sont disponibles pour lier les politiques du 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 politique de réponse. L’appliance NetScaler répond aux demandes MQTT sélectionnées par cette politique de réponse.

add responder policy <polName> <rule> <actname>
<!--NeedCopy-->
  • Par polname, remplacez votre nouvelle politique par un nom.
  • 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 politique du répondeur à un serveur virtuel d’équilibrage de charge ou à un serveur virtuel de commutation de contenu spécifique. La politique s’applique uniquement aux requêtes MQTT dont l’adresse IP de destination est le VIP de ce serveur virtuel.

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

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

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 politique 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 politique 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 politiques du répondeur présentant 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 politiques 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 NON. 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 dont la longueur est supérieure à 1 000 000 octets sont réinitialisés.