收藏 分销(赏)

基于Packet Tracer的MQTT协议仿真实现.pdf

上传人:自信****多点 文档编号:2015401 上传时间:2024-05-13 格式:PDF 页数:3 大小:2.31MB
下载 相关 举报
基于Packet Tracer的MQTT协议仿真实现.pdf_第1页
第1页 / 共3页
基于Packet Tracer的MQTT协议仿真实现.pdf_第2页
第2页 / 共3页
亲,该文档总共3页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、2023年/第11期 物联网技术可靠传输 Reliable Transmission450 引 言物联网系统涉及产品种类繁多,各产品之间千差万别,设备接入难度及成本是制约物联网系统应用的痛点之一1。MQTT 协议独特的消息传递机制以及低开销、低带宽占用的特性,使其非常适合于物联网领域云边通信的应用场景2,是目前物联网应用中最常用的通信协议之一,国内外很多物联网平台的解决方案中都采用 MQTT 作为一种主流的数据通信协议3。因此,对于物联网相关专业的学生来说,掌握和理解 MQTT 协议非常重要,只有真正掌握 MQTT 协议的工作原理、数据包结构、消息服务质量等,才能熟练灵活地运用 MQTT 协议

2、进行各种应用系统的开发。本文在对 MQTT 协议的理论分析基础上,基于 Packet Tracer 实现 MQTT 协议工作过程的仿真模拟以及数据包的抓取和分析,从而使学生能够对 MQTT 协议及其工作原理有比较深入全面的理解和掌握。1 MQTT 协议分析1.1 MQTT 协议原理MQTT 协议是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通信协议4。MQTT 协议中有三种身份,即发布者(Publisher)、代理服务器(Broker)、订阅者(Subscriber),消息的发布者和订阅者都是客户端,它们之间通过代理服务器交换消息5。MQTT 传输的消息分为主题(Top

3、ic)和负载(Payload)两部分,主题类似于消息的类型,负载类似于消息的具体内容。客户端与客户端之间的消息传输按主题进行6。1.2 MQTT 协议数据包结构MQTT 协议中,一个 MQTT 数据包由固定头(Fixed header)、可变头(Variable header)、负载(Payload)三部分构成7,如图 1 所示。固定头是必须的,可变头和负载存在于部分 MQTT 数据包中。图 1 MQTT 数据包结构固定头表示数据包类型及数据包的分组类标识,其中第一字节的 0 3 位是分组类标识,RETAIN 字段是发布保留标识,QoS 字段用于设置该条消息所需的服务质量等级,DUP 字段用于

4、设置该条消息是否为重发消息。在不使用标识位的消息类型中,这些分组类标识被作为保留位。4 7 位的 Message Type 字段的值则代表消息的类型,MQTT 拥有CONNECT、SUBSCRIBE、PUBLISH等14种不同的消息类型。Remaining Length 字段的值则用来表示当前消息的剩余长度,包括可变头和负载所占的字节数。1.3 MQTT 协议消息服务质量MQTT 协议通过控制 QoS 等级来决定服务质量,QoS等级分为 QoS0、QoS1、QoS2 三个等级,不同的等级代表了不同的可靠性要求8,消息服务质量等级为 QoS0 时代表着消息最多到达一次,为 QoS1 时代表着消息

5、至少到达一次,为 QoS2 时代表着消息一定会到达且只到达一次。2 MQTT 协议仿真实现2.1 网络仿真结构及地址规划基于 Packet Tracer 仿真环境构建如图 2 所示的网络仿真基于 Packet Tracer 的 MQTT 协议仿真实现刘国梅(郑州航空工业管理学院 智能工程学院,河南 郑州 450046)摘 要:MQTT 协议是物联网设备云边传输最常用的通信协议之一。对于物联网相关专业、学科的学生来说,理解 MQTT 协议的工作原理、数据包结构、消息服务质量等非常重要。通过在 Packet Tracer 仿真软件上进行MQTT 协议网络仿真结构设计、网络连通性配置、程序设计以及相

6、应数据包抓取,仿真 MQTT 协议的工作过程,分析协议数据包的结构。经过仿真分析与理论分析的对比,进一步加深对 MQTT 协议的理解。关键词:物联网;MQTT 协议;Packet Tracer 仿真软件;通信协议;云边传输;数据包中图分类号:TP391.9 文献标识码:A 文章编号:2095-1302(2023)11-0045-03DOI:10.16667/j.issn.2095-1302.2023.11.012收稿日期:2022-12-08 修回日期:2023-01-04物联网技术 2023年/第11期 可靠传输 Reliable Transmission46结构。在该网络结构中,MQTT

7、客户端 MQTT_ Client1 通过交换机 Switch1、路由器 Router1 与代理服务器 MQTT_Broker 相连,客户端 MQTT_Client2 通过无线接入点 Access Point1、交换机 Switch1、路由器 Router1 与服务器 MQTT_Broker 相连,客户端 MQTT_Client3 通过移动通信网络、路由器 Router1 与服务器 MQTT_Broker 相连,整个系统实现了异构网络的互联。在此基础上还需要进行网络地址规划及配置,在路由器 Router1 上执行动态路由协议,进行动态路由配置9。图 2 仿真结构2.2 MQTT 协议程序实现2.

8、2.1 服务器 MQTT_Broker 的程序实现服务器 MQTT_Broker 的程序实现包括 GUI 页面设计及Python 程序编写两部分,其中最主要的是 mqttbroker.py 文件中实现的功能,如图 3(a)所示。mqttbroker.py 文件中,首先是初始化函数 init()的编写,init()中启动了一个 TCP Server,侦听 1883 端口,调用回调函数 on_new_client()加入新客户端,调用函数 add_custom_mqtt_pdus()初始化 MQTT 的协议数据单元(PDU)等。然后是 add_custom_mqtt_pdus()函数的具体实现,在

9、该函数中定义了 MQTT的 PDU,共 定 义 了 包 括 MQTT CONNECT、CONNACK、PUBLISH等14种数据单元的格式。add_ custom_mqtt_pdus()函数之后定义了使能服务函数 enable_service()、禁用服务函数 disable_service()、添加用户函数 add_user(username,password)、移除用户函数 remove_ user(username)等,接着是创建新客户端回调函数 on_new_client(client)的具体实现以及更新注册用户、更新客户端、更新订阅信息等函数的实现,最后是连接状态改变回调函数 on_

10、connection_change(type)以及处理 MQTT 数据包的回调函数 process_ mqtt_packet(in_packet,pdu_info)的具体实现。2.2.2 客户端 MQTT_Client 的程序实现客户端 MQTT_Client 的程序实现也包括 GUI 页面设计及 Python 程序编写两部分,其中最主要的是 mqttclient.py程序文件实现的功能,如图 3(b)所示。mqttclient.py 文件中,首先是初始化函数 init()的编写,init()中创建了一个 TCP 客户端,当客户端连接状态改变时会调用回调函数on_connection_chan

11、ge,当收到 PDU 数据包时会调用回调函数 process_mqtt_ packet,之后通过 add_custom_mqtt_ pdus()函数完成对数据包 PDU 的初始化。init()函数编写完之后,是 add_ custom_mqtt_pdus()函数的具体实现,然后又 定 义 了 connect()、subscribe(topic)、publish(topic,payload,qos)、pingreq()等函数,这些函数对应着相关的事件。最后定义了处理 MQTT 协议中 14 种数据包的函数 process_mqtt_packet(in_packet,pdu_info),该函数中对

12、数据包进行了封装,并给出了处理不同操作时输出的一些 信息。图 3 程序实现3 仿真结果与分析下面分析仿真 MOTT 协议的工作过程及消息服务质量等级。服务器 MQTT_Broker 运行之后,三个 MQTT 客户端分别连接到该服务器,客户端 MQTT_Client3 作为订阅者,可以订阅相关主题。客户端 MQTT_Client1、MQTT_Client2 作为发布者可以发布消息,如图 4(a)所示。仿真结果表明,客户端 MQTT_Client3 只能接收其订阅了相关主题的消息,如图 4(b)所示,无法接收其没有订阅主题的消息,验证了MQTT 协议基于发布/订阅的工作模式。另外,从 MQTT_B

13、roker 的操作日志 EventLog 中可以清楚地看到 MQTT 协议中各种数据包的传输过程及数据包的具体内容,更加深入理解不同服务质量等级的通信时序及各种数据包的传输 过程。图 4 仿真结果仿真过程中还可以通过抓取数据包更加直观地理解2023年/第11期 物联网技术可靠传输 Reliable Transmission47MQTT 各种数据包结构。首先将 Packet Tracer 仿真模式从“Realtime mode”切换成“simulation mode”10。在数据传输过程中,单击“play controls”下的“capture/Forward”按钮,可以抓取数据包。图 5 显示

14、了客户端 MQTT_Client1 到交 换 机 Switch1 的“PDU Information at Device:Switch1”,在“Inbound PDU Details”中可以看到,MQTT_Client1 到MQTT_Broker 之间传输的协议数据单元(PDU)为 MQTT PUBLISH 数据包,数据包第一个字节的 0 3 位为数据包的分组类标识,第 4 7 位为数据包类型,PUBLISH 数据包中 CONTROL PACKET TYPYE 为 3,接着是消息的剩余长度,仿真结果与理论分析一致。图 5 PUBLISH 数据包抓取4 结 语MQTT 协议是物联网中最常用的通信

15、协议之一,掌握MQTT 协议的工作原理、数据包结构、通信服务质量对于物联网系统的开发应用至关重要。为了能让学生更好地理解、掌握相关内容,通过 Packet Tracer 仿真软件构建网络结构,配置网络连通性,进行程序编写,最终实现 MQTT 协议的仿真,这对学生们理解 MQTT 通信协议并进行有关 MQTT 协议的开发能够起到事半功倍的效果。参考文献1 卢东祁,张乾,徐一洲,等.面向电力物联网的终端设备适配接入研究 J.上海交通大学学报,2021,55(S2):72-76.2 施昕昕,顾宇扬.基于 MQTT 协议的工业物联网数据采集和控制系统 J.南京工程学院学报(自然科学版),2022,20

16、(2):31-37.3 万洪莉,李雨晨.基于 MQTT 协议的物联网服务器设计与架构分析 J.软件工程,2020,23(6):39-41.4 黄迪,徐湛,田志刚,等.基于 MQTT 协议的 Mosquitto 数据订阅机制优化与性能分析 J.物联网技术,2021,11(11):29-32.5 赵靖,王如武,周皓.基于 NS-3 的 MQTT 协议仿真研究 J.计算机工程与应用,2021,57(23):137-145.6 叶康林,钟瑾瑞,焦冠文,等.基于 MQTT 协议的生产实时数据传输技术应用研究 J.信息系统工程,2021,34(11):65-68.7 陈文艺,高婧,杨辉.基于 MQTT 协

17、议的物联网通信系统设计与实现 J.西安邮电大学学报,2020,25(3):26-32.8 孙海滨,张敬超.基于 MQTT 协议的跨平台工业级物联网消息传输系统实现与设计 J.软件,2020,41(8):168-171.9 李红岩,樊超.基于 Packet Tracer 的现代交换原理虚拟仿真实验设计 J.实验技术与管理,2019,36(10):167-170.10 唐灯平.基于 Packet Tracer 数据链路层帧结构仿真实现 J.实验室研究与探索,2020,39(10):126-130.作者简介:刘国梅(1978),女,河南封丘人,硕士,讲师,研究方向为物联网通信技术。11 GRASSI

18、 G,PESAVENTO D,PAU G,et al.Navigo:interest forwarding by geolocations in vehicular named data networking C/Proceedings of 2015 IEEE 16th International Symposium on A World of Wireless,Mobile and Multimedia Networks(WoWMoM).Boston,MA,USA:IEEE,2015:1-10.12 WANG L,WAKIKAWA R,KUNTZ R,et al.Data naming i

19、n Vehicle-to-Vehicle communications C/2012 Proceedings IEEE INFOCOM Workshops.Orlando,FL,USA:IEEE,2012:328-333.13 CHAIR-BI J P,CHAIR-PAU G P,CHAIR-WAKIKAWA R P.Proceedings of the 1st ACM workshop on emerging name-oriented mobile networking design-architecture,algorithms,and applications C/ACM Worksh

20、op on Emerging Name-oriented Mobile Networking Design-architecture.S.l.:ACM,2012.14 YU Y T,GERLA M.Information-centric VANETs:a study of content routing design alternatives C/Proceedings of 2016 International Conference on Computing,Networking and Communications(ICNC).Kauai,HI,USA:IEEE,2016:1-5.15 G

21、UO X,CHEN Y,CAO L,et al.A receiver-forwarding decision scheme based on bayesian for NDN-VANET J.中国通信,2020,17(8):106-120.16 李千千,王筱涵,朱强,等.基于 SUMO 的城市交叉口仿真平台搭建 J.计算机时代,2022,40(6):138-141.17 LIM K G,LEE C H,CHIN R K Y,et al.SUMO enhancement for vehicular ad hoc network(VANET)simulation C/Proceedings of

22、2017 IEEE 2nd International Conference on Automatic Control and Intelligent Systems(I2CACIS).Kota Kinabalu,Malaysia:IEEE,2017:86-91.18 MENA R,ZUMRRAGA F,URQUIZA L,et al.Google maps route color mapping with SUMO simulator C/Proceedings of 2019 International Conference on Information Systems and Software Technologies(ICI2ST).Quito,Ecuador:IEEE,2019:92-99.(上接第 44页)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服