Citrix ADC

MQTT对响应程序的支持

响应程序功能支持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,将响应者操作类型替换为响应者操作类型。

示例:

添加mqtt_connack_unsup_ver response with MQTT.NEW_CONNACK(132) 

配置响应程序策略。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 5 

使用案例1:根据用户名或客户端id筛选客户端

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

根据客户端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 .client .equals_any("filter_clients")" mqtt_connack_invalid_client bind cs vserver mqtt_frontend_cs -policyName reject_clients -priority 5 

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

管理员可以配置MQTT响应程序策略,以便在消息长度超过特定阈值时断开客户端连接,或者根据要求采取必要措施。

为了处理巨型数据包,具有以下任何规则模式的响应程序策略将绑定到巨型绑定点:

  • MQTT。西文SAGE_LENGTH
  • mqtt .命令
  • 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参数设置为否。因此,adc设备处理长度大于64000字节且小于1,00000字节的消息。长度超过10万字节的消息将被重置。

MQTT对响应程序的支持