ADC

MQTT-Unterstützung für Responder

Die Responder-Funktion unterstützt das MQTT-Protokoll. Sie können Responder-Richtlinien so konfigurieren, dass auf der Grundlage der Parameter in der eingehenden MQTT-Nachricht eine Aktion ausgeführt wird.

Die Aktion reagiert mit einem der folgenden Befehle auf eine neue Verbindung:

  • DROP
  • RESET
  • NOOP
  • Eine Responder-Aktion, um eine neue MQTT CONNACK-Antwort zu initiieren.

Konfiguration von Responder-Richtlinien für MQTT

Nachdem Sie die Responder-Funktion aktiviert haben, müssen Sie eine oder mehrere Aktionen für die Bearbeitung von MQTT-Anfragen konfigurieren. Konfigurieren Sie dann eine Responder-Richtlinie. Sie können die Responder-Richtlinien global oder an einen bestimmten virtuellen Load-Balancing-Server oder einen virtuellen Content Switching-Server binden.

Die folgenden Bindungspunkte sind verfügbar, um die Responder-Richtlinien global zu binden:

  • MQTT_REQ_DEFAULT
  • MQTT_REQ_OVERRIDE
  • MQTT_JUMBO_REQ_DEFAULT
  • MQTT_JUMBO_REQ_OVERRIDE

Die folgenden Bindungspunkte sind verfügbar, um die Responder-Richtlinien an einen virtuellen Content Switching- oder Load-Balancing-Server zu binden:

  • REQUEST
  • MQTT_JUMBO_REQ (dieser Bindpunkt wird nur für Jumbo-Pakete verwendet)

So konfigurieren Sie den Responder so, dass er mithilfe der CLI auf eine MQTT-Anforderung reagiert

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein:

Konfigurieren Sie eine Responder-Aktion.

add responder action <actName> <actType>
<!--NeedCopy-->
  • Für actname, ersetzen Sie Ihre neue Aktion durch einen Namen. Der Name kann 1—127 Zeichen lang sein und Buchstaben, Zahlen, Bindestriche (-) und Unterstriche (_) enthalten.
  • Ersetzen Sie den actTypeAktionstyp Respondwith durch einen Responder-Aktionstyp.

Beispiel:

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

Konfigurieren Sie eine Responder-Richtlinie. Die NetScaler-Appliance reagiert auf die MQTT-Anfragen, die durch diese Responder-Richtlinie ausgewählt werden.

add responder policy <polName> <rule> <actname>
<!--NeedCopy-->
  • Für polname, ersetzen Sie einen Namen für Ihre neue Richtlinie.
  • actnameErsetzen Sie ihn durch den Namen der Aktion, die Sie erstellt haben.

Beispiel:

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

Binden Sie die Responder-Richtlinie an einen bestimmten virtuellen Load-Balancing-Server oder einen virtuellen Content Switching-Server. Die Richtlinie gilt nur für MQTT-Anfragen, deren Ziel-IP-Adresse die VIP dieses virtuellen Servers ist.

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

bind cs vserver <name> -policyName <policy_name> -priority <priority>
<!--NeedCopy-->
  • Ersetzen Sie ihn durch den Namen der Richtlinie, die Sie erstellt haben. policy_name
  • Geben Sie für prioritydie Priorität der Richtlinie an.

Beispiel:

bind lb vserver lb1 -policyName reject_lower_version -priority 50

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

Anwendungsfall 1: Filtern Sie Clients anhand des Benutzernamens oder der Client-ID

Der Administrator kann eine MQTT-Responder-Richtlinie konfigurieren, um die Verbindung basierend auf dem Benutzernamen oder der Client-ID in der MQTT CONNECT-Nachricht abzulehnen.

Beispielkonfiguration für das Filtern von Clients anhand der Client-ID

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

Anwendungsfall 2: Beschränken Sie die maximale Nachrichtenlänge von MQTT-Nachrichten, um Jumbo-Pakete zu verarbeiten

Der Administrator kann eine MQTT-Responder-Richtlinie konfigurieren, um die Client-Verbindung zu unterbrechen, wenn die Länge der Nachricht einen bestimmten Schwellenwert überschreitet, oder je nach Anforderung die erforderlichen Maßnahmen ergreifen.

Um Jumbo-Pakete zu verarbeiten, sind die Responder-Richtlinien mit einem der folgenden Regelmuster an den Jumbo-Bindpunkt gebunden:

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

Richtlinien, die an Jumbo-Bind-Punkte gebunden sind, werden nur für Jumbo-Pakete ausgewertet.

Beispielkonfiguration zur Begrenzung der maximalen Nachrichtenlänge von MQTT-Nachrichten

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

In diesem Beispiel ist der Parameter dropmqttjumbomessage auf NEIN gesetzt. Daher verarbeitet die ADC-Appliance die Nachrichten mit einer Länge von mehr als 64.000 Byte und weniger als 1.00.000 Byte. Die Nachrichten mit einer Länge von mehr als 1.00.000 Byte werden zurückgesetzt.