更新时间:2023-06-28 GMT+08:00
分享

MQTT协议支持说明

概述

MQTT(message queuing telemetry transport)消息队列遥测传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它在物联网领域应用得到广泛应用。华为云IoTDA服务支持设备使用MQTT协议接入。

与标准MQTT协议的兼容说明

华为云IoTDA服务支持设备基于MQTT 5.0MQTT 3.1.1MQTT 3.1规范的接入。但同这些规范有一些差异, IoTDA服务不是简单的MQTT Broker,而是在支持设备使用MQTT协议接入的基础上集成消息通信、设备管理、规则引擎、数据流转等能力。与MQTT标准规范的的区别如下:

  • 支持设备与IoTDA服务之间使用MQTT规范中的CONNECT、CONNACK、PUBLISH、PUBACK、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、PINGREQ、PINGRESP、DISCONNECT等报文进行通信。
  • 支持MQTT的服务质量等级为QoS 0、QoS 1,不支持QoS 2。
  • 支持MQTT协议规范中的clean session。
  • 不支持MQTT协议规范中的will。 IoTDA提供设备状态推送的能力,设备离线后支持根据流转规则将设备状态推送到客户应用或者云服务。
  • 不支持MQTT协议规范中retain msg。IoTDA提供消息缓存的能力消息上报和消息下发时支持对消息进行缓存。

支持的MQTT 5.0特性说明

MQTT5.0相关特性仅在企业版支持。

IoTDA服务支持的MQTT 5.0的部分新增特性如下:

  • 支持Topic Alias。将消息通信Topic缩小为整型数值,来减小MQTT报文,节约网络带宽资源。
  • 支持ResponseTopic 和CorrelationData。消息上报和下发时支持携带这两个参数,实现类似云HTTP的请求和响应。
  • 支持设置UserProperty属性列表。每个属性由Key和Value组成,用于在非payload区传输属性数据。
  • 支持Content-Type属性。消息上报的报文可以携带Content-Type属性,标识报文类型。
  • 支持在CONNACK和PUBACK报文中返回码,便于设备快速定位请求状态及问题。

MQTT的TLS支持

平台推荐使用TLS来保护设备和平台的传输安全。 平台目前支持TLS1.0、1.1 、1.2和1.3版本以及GMTLS。其中TLS 1.0 和1.1 计划后续不再支持,建议使用 TLS 1.3作为首选 TLS 版本。GMTLS版本仅在国密算法的企业版才支持。

基础版,标准版以及支持通用加密算法的企业版使用TLS连接时,平台支持如下加密套件:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

支持国密算法的企业版使用TLS连接时平台支持如下加密套件:

  • ECC_SM4_GCM_SM3
  • ECC_SM4_CBC_SM3
  • ECDHE_SM4_GCM_SM3
  • ECDHE_SM4_CBC_SM3
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

带RSA 和CBC的加密套件存在安全风险,请谨慎使用。

Topic说明

设备使用MQTT协议接入时,可通过Topic实现消息的发送和接收。

  • 以$oc开头的topic是IoTDA预置的系统topic。您可以在允许的情况下订阅和发布到这些系统预置的Topic;具体Topic列表和功能说明可参考Topic定义
  • 您可以创建非$oc 开头的topic进行自定义消息的发送和接收。

使用限制

描述

限制

单个MQTT直连设备在同一时间的连接数

1

单个MQTT直连设备最大建链每分钟请求次数

5/min

单账户设备侧每秒最大建链请求数量

500/s

单账号设备侧每秒最大上行的请求数量(单消息payload平均为512字节)

20000/s

单个MQTT连接每秒最大上行消息数量

50/s

单个MQTT连接最大带宽(上行消息)

1MB(默认)

MQTT单条发布消息最大长度。超过此大小的发布请求将被直接拒绝。

1MB

MQTT协议规范

MQTT v5.0、MQTT v3.1.1、MQTT v3.1

与标准MQTT协议的区别

  • 不支持QoS2
  • 不支持will、retain msg

MQTT协议支持的安全等级

采用TCP通道基础 + TLS协议(TLSv1、 TLSv1.1、TLSv1.2和TLSv1.3版本)

MQTT连接心跳时间建议值

心跳时间限定为30至1200秒,推荐设置为120秒

MQTT协议消息发布与订阅

设备只能对自己的Topic进行消息发布与订阅

MQTT协议每个订阅请求的最大订阅数

无限制

MQTT自定义Topic支持的最大长度

64字节

MQTT自定义Topic支持每个产品添加的最大个数

10个/产品

单账号支持上传设备侧CA证书个数

100个

分享:

    相关文档

    相关产品