收藏 分享(赏)

基于mqtt的物联网系统文件传输方法的实现.doc

上传人:无敌 文档编号:148054 上传时间:2018-03-22 格式:DOC 页数:10 大小:114.50KB
下载 相关 举报
基于mqtt的物联网系统文件传输方法的实现.doc_第1页
第1页 / 共10页
基于mqtt的物联网系统文件传输方法的实现.doc_第2页
第2页 / 共10页
基于mqtt的物联网系统文件传输方法的实现.doc_第3页
第3页 / 共10页
基于mqtt的物联网系统文件传输方法的实现.doc_第4页
第4页 / 共10页
基于mqtt的物联网系统文件传输方法的实现.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、基于 MQTT 的物联网系统文件传输方法的实现 张玉杰 刘丽 冯春倩 张婷婷 陕西科技大学电气与信息工程学院 摘 要: 针对物联网系统中设备与设备之间的文件传输需求, 结合 MQTT 协议在物联网系统中的应用特点, 提出了一种基于 MQTT 协议的文件传输方案, 在文件拆分传输基础上增加应答、重传等机制, 解决了 MQTT 协议在实现文件传输时硬件设备资源有限、传输过程中信道占用时间长、文件丢包等问题, 实现了文件上传和下载等功能.最后通过搭建硬件平台, 对文件传输的功能和可靠性进行测试, 实验结果表明该文件传输方案可靠性好, 适应于物联网系统中设备之间的远程文件传输.关键词: 物联网; 文件

2、传输; MQTT; 应答确认; 超时重传; 作者简介:张玉杰 (1966-) , 男, 陕西咸阳人, 教授, 硕士生导师, 研究方向:信息采集与处理、模式识别、嵌入式系统开发收稿日期:2017-08-25基金:陕西省科技厅科技计划项目 (2017GY-091) Implementation of file transfer method for Internet of things system based on MQTTZHANG Yu-jie LIU Li FENG Chun-qian ZHANG Ting-ting College of Electrical and Informatio

3、n Engineering, Shaanxi University of Science Abstract: Aiming at the requirement of file transfer between equipment and equipment in Internet of things system, combined with the application characteristics of MQTT protocol in Internet of things system, a file transfer scheme based on MQTT protocol i

4、s proposed, the confirmation reply, timeout retransmission mechanism is added on the basis of file split transmission t to solves the problem during the MQTT protocol in fulfilling the file transfer that has limited resource resources, the channel takes a long time in the transmission process and pa

5、cket, to achieve the file upload and download functions.Finally, the function and reliability of the file transfer are tested by setting up the hardware platform.The experimental results show that the file transfer scheme is reliable, and it is suitable for the remote file transfer between the devic

6、es in the Internet of things system.Keyword: Internet of things; file transfer; MQTT; the confirmation reply; timeout retransmission; Received: 2017-08-250 引言MQTT (Message Queue Telemetry Trans-port, 消息队列遥测传输) 协议以其开销小、及时性好和可靠性高等优势在物联网系统中得到广泛的应用1, 其基于主题的发布订阅模型, 可方便实现物联网系统中节点设备一对一, 一对多的消息通信2.在物联网系统中,

7、常存在设备节点参数配置、设备与设备之间需要共享信息量较大的数据的场合3, 而这类文件数据大小仅为几十 kB 的等级.因此, 提供一种开销小、可靠性高、简单灵活的文件传输方案就显得尤为必要.TFTP 协议常被用于解决资源有限的嵌入式系统中的文件传输4, 将通信双方一方设置为客户端模式, 另一方为服务器模式, 即可实现设备到设备之间的文件传输.由于物联网系统中终端节点设备大都分散在不同区域的局域网内, 使用该种方式, 难以避免通信过程中设备 IP 动态分配和内网穿透的问题.若采取在公网中建立文件服务器, 设备做客户端的方式实现设备与设备的文件传输5, 需要系统额外增加文件服务器和文件消息通知功能,

8、 增加了系统的复杂程度.针对传统文件传输方法难以适应物联网系统设备到设备之间文件传输的场合的问题, 本文利用 MQTT 协议在物联网系统中设备与设备间消息通信的优势, 在MQTT 通信的基础上, 通过文件拆分传输的方式, 能够快速实现物联网系统中设备到设备间的小文件传输, 具有实际应用价值.1 文件传输方案的设计1.1 文件传输问题分析MQTT 是基于 TCP/IP 的即时通讯协议, 采用轻量级基于代理的发布/订阅式消息传输模式.其结构如图 1 所示, 由 MQTT 客户端和服务器组成6.本文提出的基于 MQTT 协议的文件传输系统中, 通信的双方既可以是数据的发送方也可以是数据的接收方, 均

9、属于 MQTT 客户端, 而 MQTT 代理服务器作为文件传输过程中的中转站, 不作为文件传输的对象进行考虑.图 1 MQTT 协议基于主题发布/订阅通信结构图 下载原图MQTT 协议是一种针对小数据量消息传输的轻量级协议, 消息体主要由三部分组成:固定报头, 可变报头和有效载荷, 固定报头是每个命令消息都必须要包含的部分, 长度固定为 2bytes, 最大可表示的消息长度范围为 0256 Mbyte7.虽然协议规定 MQTT 消息体中最大可以发送的字节数为 256 Mbyte, 但是若直接以最大长度进行文件传输, 会存在以下问题:(1) 设备端在实现文件传输过程中, 需要开辟缓冲区存放所要发

10、送的数据, 当传输的数据较大时, 相应的缓冲区的容量将会增大, 而工作在物联网底层的小型嵌入式硬件设备的资源是有限的8, 其内存资源很难满足需求;(2) 由于文件传输系统中用于 MQTT 通信的通道是单一的, 若以最大长度进行文件传输, 当文件较大传输时间较长时, 传输通道将会被长时间占用, 从而无法保证系统中其它使用 MQTT 协议传输的业务消息的及时传输.(3) MQTT 协议适应于工作在带宽低、网络环境不稳定的物联网环境中.一旦出现网络故障等原因造成的文件传输出错现象, 由于 MQTT 协议本身不具备断点续传等功能9, 在恢复新一次文件传输时, 之前已经传输的文件数据将会丢弃, 造成了流

11、量的浪费, 也降低了整个文件传输的效率.因此, 需要综合考虑设备的硬件存储资源、传输通道占用情况、文件传输效率等多个因素, 设计基于 MQTT 协议的文件传输方法.1.2 文件传输方案设计针对上面的分析, 基于 MQTT 协议的文件传输方法, 以 MQTT 通信为基础10, 使用文件拆分传输方式进行文件传输, 在此基础上增加应答、重传等机制, 目的在于弥补文件拆分传输过程中可能会出现的丢包现象, 从而增强文件传输的可靠性.文件拆分传输包含以下几个环节:提取信息-拆分-传输-接收-组装-检查.为确保文件传输的可靠性, 通信过程中, 一方传输数据并接收应答, 另一方接收数据并给出应答.并且通信双方

12、各自实现超时重传, 若发送方超时将重新发送上次的数据包, 若接收方超时, 则将重传应答数据包.图 2 为基于 MQTT 协议的文件传输方法的实现过程.该文件传输方案描述了发送设备端向接收设备端传送文件的基本过程, 主要包括文件传输请求阶段、文件数据传输阶段、文件传输结束阶段三个阶段.图 2 基于 MQTT 协议的文件传输方法的实现过程 下载原图文件传输请求阶段:发送方提取有关发送文件的大小属性, 优先向接收方发送文件属性消息作为发起文件传输的请求, 接收方接收并保存文件属性消息, 读取文件大小, 判断硬件资源是否满足, 若满足则回复应答包, 表示文件传输过程建立, 进入文件数据传输阶段.文件数

13、据传输阶段:发送方向接收方发送文件数据, 等待接收方回复的应答包, 超时后重发未被确认的数据包;接收方接收到数据后, 回复文件数据包正确或者错误;当数据长度小于定义的最大数据包长度, 则表示传输结束, 接收方成功接收到最后一帧文件数据包后, 进入文件传输结束阶段.文件传输结束阶段:发送方向接收方发送最后一帧文件数据包, 收到来自接收方的应答包之后, 回复一个确认信号, 表示整个文件传输操作已经结束.2 文件传输的软件实现2.1 系统软件架构根据系统文件传输的设计需求, 软件部分不仅包括 MQTT 通信的实现, 还包括文件数据处理, 文件传输, 文件存储功能的实现.系统软件设计采用分层设计的思想

14、, 软件架构如图 3 所示, 由硬件驱动层、系统层、应用层三部分组成11.硬件驱动层主要包含以太网收发器 LAN8720A 驱动12、串口驱动、SD 卡驱动等硬件驱动程序.系统层为上层应用层文件传输服务等功能的实现提供支持, 包含操作系统, 网络协议栈, 文件编码数据格式等.其中 FreeRTOS 操作系统实现对整个系统的任务调度和管理;LWIP 协议栈是轻量级的 TCP/IP 协议栈13, 适应于底层资源有限的嵌入式设备, 是网络通信的基础;FatFs 文件系统提供对文件进行读写14, 删除等操作的标准接口, 方便实现对 SD 卡中的文件进行管理;Base64 编码、Json 库为文件数据格

15、式的统一规范提供支持, 使文件传输方法适用于不同场合的系统.应用层为功能的实现, 主要包含 MQTT 通信实现、文件传输服务实现及其它相关的应用程序.图 3 系统软件架构图 下载原图2.2 文件传输数据格式根据文件传输的需求, 将文件传输过程中数据帧主要分为以下几类:文件请求命令帧, 请求应答帧, 文件数据帧, 数据接收应答帧, 文件结束请求命令帧, 结束应答帧.数据帧格式如表 16 所示.表 1 文件请求命令帧格式 下载原表 表 2 文件请求应答帧格式 下载原表 表 3 文件数据帧格式 下载原表 表 4 文件数据应答帧格式 下载原表 表 5 文件结束请求命令帧格式 下载原表 表 6 文件结束

16、请求应答帧格式 下载原表 在本设计中, 当进行文件传输时, 采用 JSON 键值对“属性, 值”的形式15, 来对文件传输的数据帧进行封装.为避免二进制文件直接嵌入在 JSON 字符串流中传输而破坏 JSON 字符串原有格式的问题, 系统采用 Base64 编码对源文件进行编码16, 将二进制文件数据转换为 Base64 字符后再以 JSON 的形式进行传输.2.3 文件传输功能实现由于文件传输过程中请求、响应过程等具有时间的不确定性, 采取了“事件驱动+状态转移”的编程思想, 对设备端的文件上传功能、文件下载功能进行实现.采用该方法进行程序设计时, 关键的是需要对文件上传、文件下载的状态以及

17、驱动各状态之间跳转的事件进行划分.2.3.1 文件上传的实现文件上传的实现过程划分为以下状态, 包含空闲、上传请求、等待请求响应、发送数据、等待回复、发送结束请求、等待结束回复、上传成功、发送错误等九个状态.具体的状态转换过程如图 4 所示.图 4 文件上传状态转换图 下载原图(1) 发送端执行文件上传初始化操作后, 进入空闲状态.(2) 启动文件传输事件触发状态进行跳转, 进入上传请求状态.(3) 发布文件请求消息之后, 进入到等待请求响应状态.(4) 若接收到拒绝请求回复, 则返回至上传请求状态, 若请求成功, 发送文件数据命令, 进入发送数据状态.(5) 发送数据状态作为文件上传实现过程

18、中的核心状态, 通过与等待回复状态的配合, 确保文件上传时确认应答以及超时重传机制的完整实现.该状态下, 实现数据帧的打包、上传工作.(6) 超时时间内, 接收到数据回复后, 继续返回发送数据状态;当超时时间到达, 仍未接收到回复时, 返回数据发送状态, 重新发送上一帧数据;当数据都上传结束后, 进入发送结束请求状态.(7) 发布上传结束请求后, 进入等待结束回复状态.(8) 回复成功, 进入上传成功状态.(9) 上传成功状态中, 置发送成功标志位, 释放相关内存空间, 返回至空闲状态.2.3.2 文件下载的实现文件下载的实现包含空闲、等待请求、准备接收、接收数据、等待文件传输结束、下载成功、

19、下载错误等状态, 具体的转换过程如图 5 所示.(1) 接收端执行文件下载初始化操作后, 进入空闲状态;(2) 在空闲状态中, 接收到发送端发来的文件传输请求时, 启动文件下载, 进入等待请求状态;(3) 若响应请求成功, 则跳转至准备接收状态, 若请求响应失败, 则返回至等待请求状态;(4) 当接收到文件数据命令时, 进入接收数据状态;(5) 接收数据状态作为文件下载实现过程中的关键, 实现文件数据的接收、保存工作, 并对已接收的数据进行回复, 若超时时间到达, 仍未接收到数据, 则重发上一帧回复应答帧.当接收到发送端的发送结束请求后, 跳转至等待文件传输结束状态.(6) 回复文件结束的请求

20、成功后, 进入下载成功状态;(7) 文件下载状态中, 置文件接收成功标志位, 释放相关内存空间, 返回至空闲状态.图 5 文件下载状态转换图 下载原图3 系统测试3.1 测试平台的搭建搭建一个完整的测试平台, 对文件传输的性能进行测试.该系统包括两个 MQTT设备端 (均属于 MQTT 客户端, 设备 A 发布消息的主题号为“deviceAout”, 设备 B 发布消息的主题号为“deviceBout”) , 一个 MQTT 服务器.MQTT 服务器采用 Apache Apollo 服务器;MQTT 设备端硬件设计框图如图 6 所示, 采用STM32F407VET6 作为主控制器, 选用 LA

21、N8720A 作为以太网收发器, 通过 RJ45接口接入网络, 此外还包括打印输出信息的串口调试电路、LED 状态指示电路、SD 卡存储电路、电源电路等, 硬件实物如图 7 所示.图 6 MQTT 设备端硬件框图 下载原图图 7 MQTT 设备端硬件实物图 下载原图3.2 文件传输性能测试系统性能测试主要包含文件传输功能测试和文件传输可靠性测试.功能测试以一个固定大小的文件为例, 利用 MQTT 测试工具监测设备 A 与设备 B 之间的文件传输过程.测试时选用的文件大小为 22 494byte.首先设备 A 向设备 B 发送文件传输请求, 在接收到设备 B 的请求应答后, 开始传送文件数据,

22、出现丢包情况时, 等待超时时间到后设备 A 会再次发送数据, 当文件传输结束时, 设备 A 发送结束请求, 设备 B 回复结束请求应答, 整个文件传输结束.测试结果如图 8 所示.图 8 文件传输测试截图 下载原图图 8 文件传输测试截图 下载原图可靠性测试通过选择 3 个不同大小的源文件在两个 MQTT 设备端之间进行传输, 实验组数为 50 组, 多次重复试验, 统计文件传输时的丢包重传组数、成功组数, 计算成功率.测试结果如表 7 所示.表 7 文件传输测试结果 下载原表 由于文件传输工作相对比较耗时, 进行文件传输时不可避免的会出现网络环境不稳定的状况.当网络环境较差, 导致传输过程中

23、出现丢包现象, 系统会进入超时重传, 考虑到嵌入式设备不能长时间陷入某个固定状态, 导致其他任务无法响应, 故在超时重传机制中进行了阈值设置, 当某一组重传次数超过 3 次时, 系统会自动中断此次文件传输.在表 7 中, 丢包超时重传组数表示文件传输过程中出现网络丢包进入超时重传的组数, 前两个文件传输实验的超时重传组数 10 组和 9 组, 进入超时重传的组中的每一组的重传次数都没有超过 3 次, 所以文件传输成功率为 100%.第三个实验的超时重传组数为 11 组, 并且有一组实验的超时重传实验次数超过设定阈值的 3 次, 系统自动中断了此次传输, 故最终的成功率是 98%.实验结果表明,

24、 当网络环境不稳定时, 文件传输过程中会出现丢包的情况, 超时重传机制的增加, 有效提高了系统文件传输的可靠性.4 结束语针对物联网系统中设备之间存在的文件传输需求, 以 MQTT 发布/订阅模型为基础, 采用拆分传输方式, 增加确保文件可靠传输的确认应答、超时重传机制, 实现了物联网系统中小型嵌入式设备节点之间的文件传输.通过软件设计对文件传输方法进行实现, 并搭建硬件平台进行功能测试.测试结果表明, 系统功能完整, 可以实现物联网系统中设备端到设备端之间可靠的文件传输.目前, 已经在实验室远程情感交互产品中得到应用.参考文献1许金喜, 张新有.Android 平台基于 MQTT 协议的推送

25、机制J.计算机系统应用, 2015, 24 (1) :185-190. 2姜妮, 张宇.基于 MQTT 物联网消息推送系统J.网络新媒体技术, 2014, 31 (2) :47-51. 3楼亮亮, 金彦亮.物联网设备无线固件升级技术的研究J.单片机与嵌入式系统应用, 2015, 54 (6) :34-38. 4李小波.基于 ARM 的 TFTP 协议的实现J.工业仪表与自动化装置, 2016, 18 (6) :4-9. 5周兰凤, 孟驰, 彭俊杰.一种基于云环境的文件存储策略的研究J.计算机工程与科学, 2016, 38 (2) :262-268. 6陈旖, 许力, 张美平.适用于大规模无线传

26、感器网的流量优化系统设计J.计算机应用, 2015, 35 (4) :905-909. 7温彬民.一种基于自适应心跳机制的 MQTT 通信协议的研究与应用D.广州:华南理工大学, 2015. 8Lee S, Kim H, Hong D, et al.Correlation analysis of MQTT loss and delay according to QoS levelC/Information Networking.Washington:IEEE Computer Society Washington, 2013:714-717. 9Custura D.System for mul

27、ticast file transferJ.Journal of Mobile Embedded&Distributed Systems, 2012, 4 (1) :31-37. 10D Thangavel, X Ma, A Valera, et al.Performance evaluation of MQTT and CoAP via a common middlewareJ.IEEE, 2014, 11 (2) :79-86. 11张玉杰, 郑培.KNX-TCP/IP 协议转换网关的设计与实现J.自动化仪表, 2014, 35 (12) :49-52. 12陈绍炜, 魏刚.TMS320C

28、6416 程序以太网远程更新技术研究J.现代电子技术, 2014, 37 (12) :125-128. 13孙棣华, 陆旭, 廖孝勇, 等.面向设备监控的 LwIP 协议栈扩展设计J.电子技术应用, 2013, 39 (6) :10-13. 14高兆强, 王绍举, 徐伟, 等, FATFS 在嵌入式操作系统 FreeRTOS 中的移植与应用J.现代电子技术, 2017, 40 (6) :65-67. 15张为金.资源共享与移动学习平台中若干 JSON 问题研究D.西安:西安电子科技大学, 2014. 16罗江华.基于 MD5 与 Base64 的混合加密算法J.计算机应用, 2012, 32 (S1) :47-49.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 期刊/会议论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报