四种应用层协议——MQTT、CoAP、WebSockets和HTTP——在工业物联网监控系统中的性能比较

news2024/9/23 13:31:05

目录

摘要(Abstract)

实验设置

实验结果


节选自《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)监控系统中的性能。以下是实验设置的详细介绍:

  1. 实验场景

    • 实验模拟了一个微控制器向网关设备发送传感器数据的场景,这在制造工厂的监控系统中用于检测气动系统中的泄漏。
  2. 硬件选择

    • 微控制器设备:CONTROLLINO MAXI Automation,这是一个工业级的可编程逻辑控制器(PLC),与Arduino平台兼容。
    • 网关设备:Endian 4i,这是一个工业物联网网关,支持Docker容器,用于运行所需的软件组件。
  3. 网络连接

    • 微控制器和网关设备通过千兆交换机连接。
  4. 协议实现

    • 微控制器上使用Arduino平台的现有库实现所选协议:CoAP简单库用于CoAP,arduino-mqtt库用于MQTT,ArduinoHttpClient库用于WebSockets和HTTP。
    • 网关上使用Python脚本实现协议,使用相应的Python库:aiocoap用于CoAP,Paho库用于MQTT,websockets库用于WebSockets,Flask库用于HTTP。
  5. MQTT代理配置

    • 在网关上部署了Mosquitto代理的Docker容器,并调整配置以避免在有大量消息在途或排队时丢弃消息。
  6. 协议配置

    • 对CoAP、MQTT和HTTP协议的不同配置进行了测试。例如,CoAP测试了使用确认消息和非确认消息的场景,MQTT测试了三个QoS级别,HTTP测试了使用Flask内置服务器和使用Gunicorn WSGI服务器的场景。
  7. 时间同步

    • 为了确保实验的准确性,使用NTPClient库在微控制器和网关设备之间进行时间同步。
  8. 实验参数

    • 实验持续时间:2分钟。
    • 实验重复次数:3次。
    • 负载大小:42字节(包括发送时间)。
    • 消息发送间隔:5毫秒。
  9. 数据格式

    • 使用CSV格式发送随机生成的数据,因为CSV格式对负载的修改最小,对结果影响最小。
  10. 性能指标测量

    • 传输时间:通过在每个消息中添加发送时间,并在网关上添加接收时间来测量。
    • 带宽消耗:使用tshark捕获所有接收到的数据包,以测量带宽消耗。
  11. 实验重复性

    • 所有实验都重复三次,并对所有重复的平均值进行计算,以确保结果的稳健性。

通过这个实验设置,作者们能够评估和比较不同协议在工业物联网环境中的性能,特别是在传输时间、带宽消耗方面的表现。

实验结果

在论文的“结果与讨论(Results and Discussion)”部分,作者们展示了他们对四种应用层协议——MQTT、CoAP、WebSockets和HTTP——在工业物联网监控系统中的性能比较结果。以下是该部分的详细介绍:

  1. 性能指标定义

    • 平均延迟(Average Latency):从微控制器到网关传输单个有效载荷所需的平均时间。
    • 抖动(Jitter):传输单个有效载荷所需时间的标准差。
    • 吞吐量(Throughput):每秒成功传输的消息数量。
    • 协议效率(Protocol Efficiency):有用信息字节总数与交换的总字节数之间的比率。
  2. 实验结果

    • 结果通过图表展示,其中包括了MQTT不同服务质量(QoS)级别的性能对比,以及CoAP和WebSockets的性能数据。HTTP作为对照组,其性能在大多数指标上表现不佳。
  3. MQTT协议

    • MQTT在延迟方面表现最佳,尤其是当配置为QoS级别0时。然而,当使用QoS级别1或2时,其吞吐量不如CoAP和WebSockets。
  4. CoAP协议

    • CoAP在带宽使用效率方面表现最佳,尤其是使用非确认消息时。但是,CoAP在延迟和吞吐量方面并不总是优于其他协议。
  5. WebSockets协议

    • WebSockets在吞吐量方面与CoAP相当,但在延迟和抖动方面不如MQTT。
  6. HTTP协议

    • HTTP在平均延迟、吞吐量和协议效率方面表现最差。作者指出,这可能是由于HTTP协议对资源受限的微控制器造成的计算负担。
  7. 协议选择建议

    • 如果传输时间是优先考虑的因素,建议使用MQTT-0(QoS级别0)。如果带宽受限,建议使用CoAP-NONCON(非确认消息),以最小化消耗的带宽。
  8. 结果差异讨论

    • 作者讨论了他们的实验结果与文献中报告的结果之间的显著差异,强调了在现实场景中评估应用层协议性能的重要性。
  9. 实验重复性

    • 所有实验都重复了三次,以确保结果的稳健性,并且计算了所有重复的平均值。
  10. 数据捕获方法

    • 微控制器在每个消息中添加发送时间,网关接收消息并添加接收时间,然后保存这些时间以供后续处理。使用tshark捕获所有接收到的数据包,以测量带宽消耗。
  11. 实验局限性和未来工作

    • 论文指出了实验的局限性,例如没有考虑网络中添加额外客户端设备的影响。未来的工作将考虑这种fan-in通信场景,这可能在从不同设备收集传感器数据的监控系统中被采用。

通过这一部分的分析,作者们提供了对于不同应用层协议在工业物联网环境中的性能表现的深入见解,并为实际应用中的协议选择提供了指导性建议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java计算机毕设课设—CRM客户关系管理系统((附源码、文章、相关截图、部署视频)

这是什么系统? java计算机毕设课设—CRM客户关系管理系统((附源码、文章、相关截图、部署视频) CRM客户关系管理系统是一种基于Java开发的系统,旨在帮助企业更有效地管理与客户的互动。该系统通过优化客户信息的组织和分析,增强…

【Electron】npm安装Electron项目失败报错问题和解决办法

前言 闲来无事,便想着研究一下Electron,没想到安装直接就卡住了 问题 npm ERR! RequestError: Hostname/IP does not match certificates altnames: Host: npm.taobao.org. is not in the certs altnames: DNS:*.tbcdn.cn, DNS:*.taobao.com, DNS:*.al…

pygame小游戏

代码存在一些bug,感兴趣可自行修改,游戏运行后玩法与吃金币游戏类似。(代码及结果比较粗糙,仅供参考) 注:(图片、音乐、音效文件老是上传上传不上,想要可私,也可以自己找…

CentOS 7 安装详细教程

​ 大家好,我是程序员小羊! 前言: CentOS 7 是一个稳定的企业级 Linux 发行版,广泛用于服务器环境。CentOS 7 是基于 Red Hat Enterprise Linux (RHEL) 构建的企业级 Linux 发行版,提供免费的、开源的操作系统&#xf…

JVM-Java虚拟机-一文读懂-小白秒懂,老鸟进阶,必考面经

目录 JVM定义 Java Virtual Machine组成结构 各部分详解 0、类加载器 1、栈是运行的单位,堆是存储的单位 2、栈中存放各个栈帧 3、方法区——多线程共享区域 JVM定义 运行Java程序的平台内存结构、 垃圾回收、 类加载、 性能调优、 JVM 自身优化技术、 执行引…

【Web前端】vue3整合eslint约束代码格式

一、整合eslint 整合eslint的两种方式: 在已有项目中整合eslint:# 安装eslint及其vue插件即可 npm i -D eslint eslint-plugin-vue创建项目时整合eslint: 提示 是否引入ESLint用于代码质量检测 时选择 是# 创建vue3项目 npx create-vue # 下…

sqlserver同一数据库还原实例冲突可以用[文件和文件组]来备份解决

1.将数据库恢复模式改为完整 2.备份 在数据库右键--任务--备份 选择文件和文件组 选择位置备份 3.还原 在数据库上右键--还原文件和文件组 或者还原时修改实例名称(没试过)

2024年8月14日(haproxy)

一、haproxy简介 官网https://www.haproxy.com/ 自由及开放源代码软件 HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负我均衡,以及基TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的veb站点,这些站点通常又需要会活保或七层处理。HAProxy运…

【Qt】QWidget的geometry属性

geometry,意思是“几何”。可以将geometry视为是四个属性的统称。 x:横坐标 y:纵坐标 width:宽度 height:高度 API说明 geometry() 获取到控件的位置和尺⼨. 返回结果是⼀个 QRect, 包含了 x, y, width, height. 其中…

jar包扫描不到,idea如何通过Project Structure设置

目录 一、进入Project Structure二、添加你的项目进来三、手动添加依赖 很多时候jar包文件已经存在,但是无法使用,需要通过Project Structure设置 一、进入Project Structure 选择Modules->点击 二、添加你的项目进来 一直next,最后点…

论文阅读笔记:ST-MetaNet-2

目录 预备知识 定义1:城市交通 定义2:Geo-graph属性 问题1 方法 RNN 元学习器 元图注意力网络 元循环神经网络 预备知识 在本节中,我们介绍定义和问题陈述。为简洁起见,我们在表1中提供了一个注释表。 假设有个位置&…

Java - API

API全称"Application Programming Interface",指应用程序编程接口 API(JDK17.0)链接如下 : Overview (Java SE 17 & JDK 17) (oracle.com)https://docs.oracle.com/en/java/javase/17/docs/api/中文版: Java17中…

C++内存泄露检测-Windows平台VLD

一、安装Visual Leak Detector 下载地址:https://kinddragon.github.io/vld/ 安装过程就一路next即可,如果自定义安装目录的话,需要记住安装的目录,默认目录 C:\Program Files (x86)\Visual Leak Detector,这个目录下…

[独家原创]基于(牛顿拉夫逊)NRBO-TCN多变量回归预测(多输入单输出) Matlab代码

[独家原创]基于(牛顿拉夫逊)NRBO-TCN多变量回归预测(多输入单输出) Matlab代码 NRBO优化的超参数为:卷积核个数、正则化系数、初始化学习率 1.程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel&…

色轮在数据可视化中的应用

在数据可视化中,色彩的运用不仅仅是为了美观,更是为了传达信息、区分数据和提升图表的易读性。本文探讨色轮及其色彩公式的应用,帮助大家更好地运用色彩来提升数据可视化的效果。 1、色轮的基础概念 色轮是一个用于表示颜色之间关系的图形工…

Linux自动构建工具——make/makefile

目录 一、make/makefile是什么? 二、深入了解 1.基本命令 提示:以下是本篇文章正文内容,下面案例可供参考 一、make/makefile是什么? 在Linux中make是一条指令,makefile是文件。make的核心功能就是读取一个或者多个…

解决问题:Arcgis10.8“数据“-“导出至CAD“时就卡死了

问题现象:我们在使用Arcgis10.8软件,执行 “数据导出至CAD”操作时,会出现卡死的情况,步骤如下图所示: 解决方案:在菜单栏依次选择“地理处理”-“地理处理选项”,然后在“后台处理”和“发生错…

黄金市场展望:CPI数据引发关注,技术面看涨

亚市现货黄金行情 8月14日周三,亚市盘中现货黄金价格小幅下跌,目前交投在2462美元/盎司附近。投资者将重点关注即将公布的美国消费者物价指数(CPI)数据,预计这将对黄金市场产生重大影响。 美联储政策预期与CPI数据 市场…

IIC电路详细设计

下面我们来聊一聊IIC。 首先要知道,为什么IIC需要接上拉电阻?这里就需要承接到上一部分的内容:三极管。 注意到这样一句话:「连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能 」,这里就涉及到「漏极/集电极开路」、「上拉电阻」和「线与」两个概念…

ReetrantReadWriteLock 读写锁原理

一、为什么要出现读写锁? 我们知道synchronizer 和 ReentrantLock 都是互斥锁 但现实很多业务场景都是读多写少,针对这种场景在并发中若采用 synchronizer 和 ReentrantLock 来保证原子性,但会降低代码的性能。这种场景,就可以…