Citrix ADC

响应器的MQTT支持

Responder特性支持MQTT协议。您可以配置响应器策略,以根据传入MQTT消息中的参数采取操作。

该操作以以下任何一个方式响应新连接:

  • 下降
  • 重置
  • 无操作
  • 启动一个新的MQTT CONNACK响应的响应器操作。

为MQTT配置响应器策略

在启用响应器特性之后,您必须配置一个或多个操作来处理MQTT请求。然后配置响应器策略。可以全局绑定响应器策略,也可以绑定到特定的负载平衡虚拟服务器或内容切换虚拟服务器。

以下绑定点可用于全局绑定响应器策略:

  • MQTT_REQ_DEFAULT
  • MQTT_REQ_OVERRIDE
  • MQTT_JUMBO_REQ_DEFAULT
  • MQTT_JUMBO_REQ_OVERRIDE

以下绑定点可用来将响应器策略绑定到内容切换或负载均衡虚拟服务器:

  • 请求
  • MQTT_JUMBO_REQ(此绑定点仅用于巨型包)

通过使用CLI配置响应器以响应MQTT请求

在命令提示符下,输入以下命令:

配置响应器操作。

add responder action   
  • actname,为您的新操作替换一个名称。长度为1 ~ 127个字符,可以包含字母、数字、“-”、“_”。
  • actType,替换一个响应器动作类型,respondwith。

例子:

添加响应器动作mqtt_connack_unsup_ver使用MQTT.NEW_CONNACK 

配置响应器策略。Citrix ADC设备响应由此响应器策略选择的MQTT请求。

add responder policy    
  • polname,为您的新策略替换一个名称。
  • actname,替换您创建的操作的名称。

例子:

添加响应器策略reject_lower_version "MQTT.HEADER.COMMAND.EQ(CONNECT) && MQTT.VERSION.LT(3)" mqtt_connack_unsup_ver 

将响应器策略绑定到特定的负载均衡虚拟服务器或内容切换虚拟服务器。该策略只应用于目的IP地址是该虚拟服务器的VIP的MQTT请求。

bind lb vserver  -policyName  -priority  bind cs vserver  -policyName  -priority  
  • policy_name,替换为已创建的策略的名称。
  • 优先级,指定策略的优先级。

例子:

bind lb vserver lb1 -policyName reject_lower_version -priority 50 bind cs vserver mqtt_frontend_cs -policyName reject_lower_version -priority 5 

使用case1:根据用户名或客户端ID筛选客户端

管理员可以配置MQTT响应器策略,根据MQTT CONNECT消息中的用户名或客户端ID拒绝连接。

基于客户端ID筛选客户端的示例配置

添加策略patset filter_clients绑定策略patset filter_clients client1添加响应器动作mqtt_connack_invalid_client respondwith MQTT.NEW_CONNACK(2)添加响应器策略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 

使用case2:限制MQTT消息的最大消息长度,以处理巨型包

管理员可以配置MQTT响应器策略,在消息长度超过某个阈值时终止客户机连接,或者根据需求采取必要的操作。

为了处理巨型包,响应器策略与以下规则模式中的任何一个被绑定到巨型绑定点:

  • MQTT。MESSAGE_LENGTH
  • MQTT。COMMAND
  • MQTT。FROM_CLIENT
  • MQTT。FROM_SERVER

绑定到巨型绑定点的策略只对巨型包进行评估。

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

在本例中,dropmqttjumbomessage参数设置为NO。因此,ADC设备处理长度大于64,000字节小于10,000,000字节的消息。长度大于100万字节的消息将被重置。