四种应用层协议——MQTT、CoAP、WebSockets和HTTP——在工业物联网监控系统中的性能比较
节选自《A Comparative Analysis of Application Layer Protocols within an Industrial Internet of Things Monitoring System》,作者是 Jurgen Aquilina、Peter Albert Xuereb、Emmanuel Francalanza、Jasmine Mallia 和 Paul
目录
节选自《A Comparative Analysis of Application Layer Protocols within an Industrial Internet of Things Monitoring System》,作者是 Jurgen Aquilina、Peter Albert Xuereb、Emmanuel Francalanza、Jasmine Mallia 和 Paul Refalo,来自马耳他大学的计算机信息系统系和工业与制造工程系。论文发表在2024年IEEE国际测量与网络研讨会上。
摘要(Abstract)
论文讨论了在工业物联网(IIoT)监控系统中选择适当的应用层协议的重要性。作者指出,尽管已有研究提供了各种协议的性能比较,但这些研究结果可能不适用于工业场景。本文提出了一个实验设置,纠正了以前研究中的方法论错误,并报告了所获得的结果,这些结果与以前研究的结果存在显著差异。
实验设置
在论文的“实验设置(Experimental Setup)”部分,作者们详细描述了他们如何构建实验环境来评估和比较四种应用层协议(MQTT、CoAP、WebSockets和HTTP)在工业物联网(IIoT)监控系统中的性能。以下是实验设置的详细介绍:
-
实验场景:
- 实验模拟了一个微控制器向网关设备发送传感器数据的场景,这在制造工厂的监控系统中用于检测气动系统中的泄漏。
-
硬件选择:
- 微控制器设备:CONTROLLINO MAXI Automation,这是一个工业级的可编程逻辑控制器(PLC),与Arduino平台兼容。
- 网关设备:Endian 4i,这是一个工业物联网网关,支持Docker容器,用于运行所需的软件组件。
-
网络连接:
- 微控制器和网关设备通过千兆交换机连接。
-
协议实现:
- 微控制器上使用Arduino平台的现有库实现所选协议:CoAP简单库用于CoAP,arduino-mqtt库用于MQTT,ArduinoHttpClient库用于WebSockets和HTTP。
- 网关上使用Python脚本实现协议,使用相应的Python库:aiocoap用于CoAP,Paho库用于MQTT,websockets库用于WebSockets,Flask库用于HTTP。
-
MQTT代理配置:
- 在网关上部署了Mosquitto代理的Docker容器,并调整配置以避免在有大量消息在途或排队时丢弃消息。
-
协议配置:
- 对CoAP、MQTT和HTTP协议的不同配置进行了测试。例如,CoAP测试了使用确认消息和非确认消息的场景,MQTT测试了三个QoS级别,HTTP测试了使用Flask内置服务器和使用Gunicorn WSGI服务器的场景。
-
时间同步:
- 为了确保实验的准确性,使用NTPClient库在微控制器和网关设备之间进行时间同步。
-
实验参数:
- 实验持续时间:2分钟。
- 实验重复次数:3次。
- 负载大小:42字节(包括发送时间)。
- 消息发送间隔:5毫秒。
-
数据格式:
- 使用CSV格式发送随机生成的数据,因为CSV格式对负载的修改最小,对结果影响最小。
-
性能指标测量:
- 传输时间:通过在每个消息中添加发送时间,并在网关上添加接收时间来测量。
- 带宽消耗:使用tshark捕获所有接收到的数据包,以测量带宽消耗。
-
实验重复性:
- 所有实验都重复三次,并对所有重复的平均值进行计算,以确保结果的稳健性。
通过这个实验设置,作者们能够评估和比较不同协议在工业物联网环境中的性能,特别是在传输时间、带宽消耗方面的表现。
实验结果
在论文的“结果与讨论(Results and Discussion)”部分,作者们展示了他们对四种应用层协议——MQTT、CoAP、WebSockets和HTTP——在工业物联网监控系统中的性能比较结果。以下是该部分的详细介绍:
-
性能指标定义:
- 平均延迟(Average Latency):从微控制器到网关传输单个有效载荷所需的平均时间。
- 抖动(Jitter):传输单个有效载荷所需时间的标准差。
- 吞吐量(Throughput):每秒成功传输的消息数量。
- 协议效率(Protocol Efficiency):有用信息字节总数与交换的总字节数之间的比率。
-
实验结果:
- 结果通过图表展示,其中包括了MQTT不同服务质量(QoS)级别的性能对比,以及CoAP和WebSockets的性能数据。HTTP作为对照组,其性能在大多数指标上表现不佳。
-
MQTT协议:
- MQTT在延迟方面表现最佳,尤其是当配置为QoS级别0时。然而,当使用QoS级别1或2时,其吞吐量不如CoAP和WebSockets。
-
CoAP协议:
- CoAP在带宽使用效率方面表现最佳,尤其是使用非确认消息时。但是,CoAP在延迟和吞吐量方面并不总是优于其他协议。
-
WebSockets协议:
- WebSockets在吞吐量方面与CoAP相当,但在延迟和抖动方面不如MQTT。
-
HTTP协议:
- HTTP在平均延迟、吞吐量和协议效率方面表现最差。作者指出,这可能是由于HTTP协议对资源受限的微控制器造成的计算负担。
-
协议选择建议:
- 如果传输时间是优先考虑的因素,建议使用MQTT-0(QoS级别0)。如果带宽受限,建议使用CoAP-NONCON(非确认消息),以最小化消耗的带宽。
-
结果差异讨论:
- 作者讨论了他们的实验结果与文献中报告的结果之间的显著差异,强调了在现实场景中评估应用层协议性能的重要性。
-
实验重复性:
- 所有实验都重复了三次,以确保结果的稳健性,并且计算了所有重复的平均值。
-
数据捕获方法:
- 微控制器在每个消息中添加发送时间,网关接收消息并添加接收时间,然后保存这些时间以供后续处理。使用tshark捕获所有接收到的数据包,以测量带宽消耗。
-
实验局限性和未来工作:
- 论文指出了实验的局限性,例如没有考虑网络中添加额外客户端设备的影响。未来的工作将考虑这种fan-in通信场景,这可能在从不同设备收集传感器数据的监控系统中被采用。
通过这一部分的分析,作者们提供了对于不同应用层协议在工业物联网环境中的性能表现的深入见解,并为实际应用中的协议选择提供了指导性建议。
更多推荐
所有评论(0)