Citrix ADC

Prise en charge de MQTT pour le répondeur

La fonctionnalité Répondeur 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 avec l’un des éléments suivants à une nouvelle connexion :

  • DROP
  • RESET
  • NOOP
  • Une action de l’intervenant pour lancer 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 demandes 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 pour répondre à une requête 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>
  • Pour actname, remplacez un nom pour votre nouvelle action. Le nom peut contenir de 1 à 127 caractères et peut contenir des lettres, des chiffres, des tirets (-) et des symboles de trait de soulignement (_).
  • Pour actType, substituer un type d’action de répondeur, respondwith.

Exemple :

add responder action mqtt_connack_unsup_ver respondwith MQTT.NEW_CONNACK(132)

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

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

Exemple :

add responder policy reject_lower_version "MQTT.HEADER.COMMAND.EQ(CONNECT) && MQTT.VERSION.LT(3)" mqtt_connack_unsup_ver

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

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

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épondeur MQTT pour supprimer la connexion client si la longueur du message dépasse un certain seuil, ou prendre les mesures nécessaires en fonction de l’exigence.

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

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 à 100 000 octets. Les messages d’une longueur supérieure à 100 000 octets sont réinitialisés.