本篇论文的标题是《Data collection in IoT: A comparison of MQTT implementations》,中文可以翻译为《物联网中的数据收集:MQTT实现的比较》。论文由Erik Gustafsson和Ruben Jarefors撰写,导师是Jalal Maleki,评审员是Rita Kovordanyi,发表于Linköping University的IDA系,是一个16学分的学士学位论文,完成于2022年春季学期。论文的版权属于Erik Gustafsson和Ruben Jarefors,版权归属和使用规定可在论文的版权声明中找到。
摘要: 这篇报告研究了物联网中的可靠性问题,特别关注消息协议MQTT。在MQTT中,研究者探索了确保可靠性的选项,主要是服务质量(Quality of Service, QoS)。报告尝试比较不同MQTT协议实现在不同服务质量水平上的表现。这种比较通过实验进行,测量了在简单发布-订阅通信中通信大小(以字节为单位)和执行时间。研究发现,不同实现之间存在一些差异,这些差异可能足以影响某些应用场景下的最佳选择。报告还涵盖了一些关于物联网系统及其组成部分的基本理论。
引言: 物联网(IoT)是一个快速增长的领域,预计从2015年的约150亿个连接设备增长到2025年的750亿个。IoT设备是具有传感器和软件的物理对象,它们可以在网络中收集和交换数据。随着大量数据的不断生成和传输,确保这些IoT系统的可靠性变得越来越重要。在选择IoT应用的方法时,会受到数据收集目的和特定关注点的影响。MQTT(Message Queuing Telemetry Transport)是目前流行的选择之一,并且正在成为事实上的行业标准。MQTT是一个发布-订阅协议,所有连接到系统的设备都可以订阅和/或发布到所谓的主题,这些都是通过充当客户端设备中心点的代理(broker)来完成的。
研究范围: 本研究将重点关注不同MQTT实现在不同服务质量可靠性方法下的性能。研究范围限定在比较几个MQTT客户端/代理实现。选定的实现包括Mosquitto、Paho MQTT、mqttools、NanoMQ和eMQTT。
研究问题:
- MQTT客户端和/或代理实现在提供的服务质量支持方面如何比较?
- 在使用不同服务质量水平时,各种MQTT实现选择的客户/代理组合在数据传输和传输持续时间方面如何比较?
背景: 这项研究由Linköping University的两名学生E. Gustafsson和R. Jarefors与Zenon AB公司合作完成。研究的目的是探索在物联网领域内确保可靠性的方法。
理论: 物联网(IoT)是一个描述具有集成网络、传感器和处理能力的物理对象的术语,这些对象通常通过互联网与其他设备连接以交换数据。设计物联网系统时最基本的架构是"三层架构",包括感知/物理层、网络层和应用层。
MQTT(Message Queuing Telemetry Transport): MQTT是一个设计用于通过客户端和服务器(代理)进行发布/订阅的消息协议。代理是托管主题的中心点,主题通常格式化为类似文件夹结构的字符串。MQTT的最新版本是5.0,它引入了一些新特性,如主题别名。
可靠性方法: 这部分涵盖了MQTT中使用的可靠性方法,特别是服务质量(QoS)。MQTT定义了三个QoS级别,分别是QoS 0、QoS 1和QoS 2,以及一个在MQTTSN协议中存在的QoS -1级别。
MQTT实现: 这部分介绍了研究中选择的MQTT实现,包括Mosquitto、Paho MQTT、eMQTT5、mqttools和NanoMQ。
相关工作: 随着物联网领域的增长,对结构和不同方法来量化物联网可靠性的需求也在增长。这部分讨论了与MQTT相关的先前研究。
方法: 为了建立不同实现的QoS功能,研究者创建了小型的IoT客户端或代理,并测量了QoS级别的性能。
设置: 这部分描述了进行实验的硬件和软件设置。
实验: 这部分解释了实验的方法论,包括功能性验证和QoS性能测试。
结果: 这一章节展示了实验结果,包括功能性验证和发布对话的大小和持续时间。
功能性验证(Functionality Verification)
实验结果表明,不同客户端/代理组合在多个代理上的功能验证结果可以在表1中找到。值得注意的是,NanoMQ的对话并不完全符合图2-4所示的模式,但这并不表示它缺乏QoS支持。NanoMQ在每次对话结束时没有断开连接的数据包,这仅仅是实现上的特点,QoS级别仍然按预期工作。同样,正如方法部分所述,mqttools高于0的QoS级别没有进行测试。
发布对话大小(Publish Conversation Size)
每个图表(图5a-c)以某种方式显示了单次发布消息的平均字节传输量,并在图5a-c中显示了标准差。目前,NanoMQ显示出较少的字节发送量,部分原因是它在消息发布中不发送断开连接的数据包。这种比较并不完全等价。
- 图5a:使用HiveMQ代理的对话大小。
- 图5b:使用Mosquitto代理的对话大小。
- 图5c:客户端/代理配对的对话大小。
表2a-c显示了在每种代理情况下测量到的两个实现之间对话大小的最大增加量。NanoMQ在HiveMQ代理的QoS0情况下是最小的,因此我们添加了第二大的差异(括号内),因为NanoMQ不发送断开连接的数据包,这使得它在比较中不可靠。
发布对话持续时间(Publish Conversation Duration)
这些结果中,由于无法配置NanoMQ使其在完成后发送断开连接的消息,因此排除了NanoMQ。这可能导致测量结果取决于我们手动结束对话的速度。
- 图9a 显示了每个客户端使用通用Mosquitto代理的对话时间。
- 图9b 显示了除NanoMQ之外的每个客户端/代理配对的对话时间。值得注意的是,Paho MQTT和Mosquitto客户端都以Mosquitto代理为默认代理,因此这个图主要用于显示mqttools和Mosquitto配对之间的差异。
以上结果提供了不同MQTT实现在功能性验证、发布对话大小和持续时间方面的详细比较和分析。这些数据有助于理解不同MQTT客户端和代理在实际应用中的性能表现,以及它们在不同服务质量(QoS)水平下的行为。
讨论: 这部分讨论了不同实现的性能,并讨论了QoS级别差异、大小差异和持续时间差异的影响。
结论: 研究提供了支持选择MQTT实现的依据,并提供了比较MQTT实现的方法,供进一步研究使用。结果表明,Paho MQTT客户端在所研究的实现中是首选,因为它提供了快速且通信量小的通信。它还自带代理,即Mosquitto代理,但也可以与HiveMQ代理一起使用,以减少通信量。
参考文献: 论文最后列出了参考文献,提供了研究的来源和背景资料。