- 文献综述(或调研报告):
物联网云平台MQTT协议研究的文献综述
摘要:为了了解先有关于物联网云平台中MQTT协议的研究情况。我研读了一些论文,涉及了协议底层的理论,协议的修改以及协议在实际工业系统中的应用几个方面。本文在对这些成果进行系统总结的基础上,简要评析了总体研究现状,此外还对物联网云平台中的某些环节的具体操作进行了阐述。通过这些阅读,我将针对MQTT协议的改进方案进行了总结比较,为毕业设计的后续工作做好了铺垫。
关键词:MQTT;IOT; QoS
前言:随着移动互联网以及物联网技术的迅速发展,一种基于发布/订阅模型的轻量级、可拓展、适用于弱网络环境下的消息遥测传输(MQTT)协议越来越受到人们的重视。然而,随之而来的终端设备接入量的日益倍增,给服务端带来了巨大的压力。如何能够在不增加服务成本且保证服务稳定的前提下优化消息服务质量(Qo S)成为了一个重要的研究内容。
- MQTT协议研究现状
MQTT 协议发布之后,IBM 公司和 ST.Jude Medical 公司合作,以 MQTT 协议为消息推送协议开发了一套叫做 Merlin 的医疗信息系统。该系统使用一种无线发射器对病人植入体内的传感器进行监控,然后通过 MQTT 协议将监测到的数据推送到医院,便于医生随时掌握病人的情况并进行诊断,同时也利于病人保持在家的休养。经过几年的不断发展和进一步的完善,IBM 于 2014 年发布了 MQTT 协议的 v3.1.1 版本,并且成为了OASIS 国际标准。MQTT 协议的广泛应用也吸引了很多开源组织和科技公司的研究人员,目前已经开发了多达数十种的 MQTT 消息代理服务器程序,并且向开发者提供了多种编程语言的调用接口,如在开发者中使用率较高的 C/C 语言、Java 语言、PHP 语言以及 Python 语言等编程语言。
钱玉磊的《基于 MQTT 的安全通信服务器的研究与实现》提出一种基于用户活跃度的算法,可以有效的对面向消息服务器的 DOS/DDOS 攻击进行防范。温彬民的《一种基于自适应心跳机制的 MQTT 通信协议的研究与应用》对网络连接中的心跳机制进行了深入研究,提出了一种自适应的心跳机制,用于改善 MQTT 协议实际应用中的数据通信量。Niruntasukrat的《Authorization mechanism for mqtt-based internet of things.》使用改进的 OAuth 授权机制对基于 MQTT 协议的物联网的安全性能进行强化。
- MQTT协议优化的几种方式
(一)利用数学理论,从协议底层进行优化
刘光忠在《基于李雅普诺夫优化理论的 MQTT 协议消息服务质量研究》中,根据研究内容定义了系统的稳定性,“稳定性是系统正常工作的基础。系统的稳定性分为外部稳定性和内部稳定性。外部稳定性定义是当其受到外部因素干扰之后,它的平衡状态可能会被破坏,但是当外部干扰被去除之后,这个系统仍然能自动地在平衡状态下继续工作。亦即系统的稳定性用数学语言描述就是遭受外扰后,输出量偏差值的过渡过程是具有收敛性的。内部稳定性是关于动力学系统的内部状态变化所呈现的稳定性,也就是系统的内部状态稳定性。”并以此为指标。利用李雅普诺夫稳定性理论,结合Tassiulas 和 Ephremides 使用李雅普诺夫漂移的概念提出了背压式路由算法,在孙亚国等人的理论基础上对MQTT协议的消息队列进行重新建模和QoS策略选择优化。
在模型中,作者建立了两个队列模型,一个是实际队列消息,一个是虚拟队列消息,用以约束系统的最大时延,再使用这两条队列构造了李雅普诺夫能量函数,再通过漂移加惩罚理论动态决定改变消息服务质量的策略。最后基于Mosquitto开源项目利用golang开发了客户端完成了仿真。
(二)增加消息类型,添加额外的判定算法对协议进行优化
Andrew John Poulter的《Extensions and Enhancements to “the Secure Remote Update Protocol》和王少鹏的《物联网云平台消息中间件协议研究与实现》采用的是这种方法。在 MQTT 协议结构的基础之上进行改进,协议的结构分为两层:传输层和控制层。协议的传输层能够提供接入管理、消息报文推送、消息数据包的处理等一些功能。针对要研究的目标,文章只是对传输层的提供的服务有一些较少的修改,主要是处于安全考虑的少许改动与对协议的精简。控制层的内容时主要提供一下用户访问控制、消息队列管理和用户相关自定义命令的服务。MQTT 协议的控制层可以理解为对消息队列的控制,完成消息订阅的匹配以及消息的各种服务质量的推送。文章的主要目的是对控制层定义的内容进行扩展和相应的进行修改,用户可以采用一些协议规定和实现过程中自定义的命令对私有资源进行保护,控制可以访问的用户集合。
