物联网协议比较:MQTT VS MQTT-SN

物联网协议比较:MQTT VS MQTT-SN

MQTT-SN(Sensor Networks)是MQTT协议的传感器版本,最早使用在zigBee无线网络中,主要面对电池供电,有限的处理器能力和存储能力的设备。基于TCP协议的MQTT对有些传感器来说还是负载太重了,这些传感器可能只有几十个字节的内存,无法运行TCP协议。

MQTT-SN和MQTT的不同点

1 协议运行的层次不同

MQTT运行在TCP层之上,MQTT-SN可以运行在MAC层,IP层和UDP之上。MQTT-SN应用的场景主要是各种低功耗传感器网络,需要电池供电,对功耗非常敏感,TCP虚拟长连接需要维持一个定时心跳,对电池来说不是一个好的解决方案。在传感器网络中,链接可能随时中断,TCP连接也要不断的重新建立连接,这样对功耗都是大的消耗。

物联网协议比较:MQTT VS MQTT-SN

2 QOS增加了-1级别或3

QOS -1 级别在设置的时候QOS flag还是要设置3(“0b11” ),-1仅仅是个称谓,这个级别仅仅适用在非常简单的应用中,不需要建立连接或者断开连接,不需要注册或订阅,这时客户端仅仅是发送public消息给网关即可。发布的消息也不需要得到消息确认。

3 订阅主题方式

MQTT-SN可以使用MQTT的订阅主题格式,长名字主题如“/beijing/sen1”,也可以使用只有两个字符的短名字主题如“s1”,还可以使用预先定义好的主题ID如 "1", 如果不使用长名字主题不能使用通配符。

4 发布消息

和订阅主题一样,可以使用两个字符的短名字主题或者使用定义好的主题ID。

注意:主题ID的内容对不同客户端来说可能一样也可能不一样。比如A传感器订阅了主题ID 1 内容是/beijing/sen1,B传感器也订阅了主题ID1内容是/beijing/sen2,他们的内容是不一样的。

5 网络架构

物联网协议比较:MQTT VS MQTT-SN

MQTT-SN多了一种节点,就是MQTT-SN网关。网关的作用主要是协议转换,把底层的MQTT-SN协议转换为MQTT的协议格式。

物联网协议比较:MQTT VS MQTT-SN

如上图所示,网关有两种,一种透明网关,仅仅是起透传作用做简单的拆包组包,另一个是聚合网关,把多个节点聚合到一起传给消息代理。

6 网关发现

在MQTT-SN中,客户端不用去记忆网关的地址,网关会定期的广播ADVERTISE信息,里面有自己的地址,客户端接收地址,当有多个网关时候,网关需要带上自己的网关ID,由客户端来决定连接哪一个,任何时候,一个客户端只能连接一个网关。客户端也可以发送网关查询(SEARCHGW信息),这时候网关将回应GWINFO

信息。防止产生广播风暴有两个参数,网关查询报文的发送需要等待一个随机时间,发送的网关查询经过的网关条数一般设为1,也就是说SEARCHGW信息不能跨网关传输。 这样网关可以灵活配置,不需要固定某一个网关。

7 支持设备睡眠

如果设备睡眠,则MQTT-SN网关先把消息存储起来,等设备醒来再下发。这个有点像手机短信,手机关机后,短信存储在运营商的短信交换中心,手机开机后再下发。


分享到:


相關文章: