图片15
IoT物联网设备受硬件性能限制,不同地域网络覆盖差异大,信号不稳定,数据丢包现象时有发生,而且大多数设备都采用了交互界面,一旦出现设备失灵的情况,就会产生无法估量的损失。对于IoT开发人员来说,如何快速定位信息丢失的原因是一个挑战。
IoT消息链接梳理。
首先要对信息链进行全面梳理,然后才能解决丢失的信息。
IoT方案,将业务数据打包在设备端应用程序中,然后将MQTT消息封装起来,提供给通信模块,将其转换为网络传输包,通过运营商网络传送到云上的IoT物联网平台,然后在平台内部进行处理。在数据库中写入规则引擎,或者推送到业务服务器。
受模块硬件内存限制,运营商?由于络质量等原因,设备端的数据包翻山越岭,历尽艰险,才能顺利地到达业务系统。
装置端的信息处理程序。
以下是对设备端数据的打包过程:
装置的接线计划汇编商业数据包,增加MQTT协议层的MQTT消息头,形成MQTT包,TCP层增加TCP报头部组成了可传送的分组。
IP层增加IP报头部,IP分组构成网络层。
通过通信模块驱动,在IP包中添加14字节的MAC地址头,组成一个数据帧Frame,包含发送端和接收端的MAC地址。
模块驱动增加了Frame的头同步信息和CRC校验,并把它封装成一个可发送的包,然后通过手机网络发送到运营商基站。
邮件丢失原因分析。
合并以上的分析,在传输期间的消息丢失可能有下列原因:
该应用程序存在缺陷,业务包没有被装配。
应用程序在设备上集成了MQTTSDK错误,MQTT协议包没有装配。
通讯模块/网卡出现异常,没有发送任何网络包。
操作者网络异常,分组丢失。
IoT物联网平台上出现异常,接收未经处理的运营商发送的数据包。
IoTIoT物联网平台出现异常,数据包无法传输。
云计算业务系统异常,接收IoT物联网平台没有处理的数据包。
排查思路
结合端到端链路分析,本文梳理了四个主要排查方案的参考。
排查实战
抓取Wireshark分析网络问题。
利用网络抓包工具Wireshark,可以快速定位设备→网络→IoT物联网平台之间的消息传递问题。
下面的图表显示了该设备对IoT物联网平台PUBLISH一条QoS=1的消息的抓包记录。从消息信息中,我们可以看到消息对应的Topic和Payload。
因为QoS=1消息,IoT物联网平台将回复一个PUBACK给device。
传送门:Wireshark实战抓包。
IoT物联网平台-信息跟踪跟踪。
IIoT平台的日志服务提供了查看设备通讯信息的功能。你可以根据TraceID或MessageId,在物联网平台上跟踪任意一条消息传递的全路径,也可以根据出现的故障节点快速分析、定位。
上行链:设备→IoT平台→商业系统。
下行链接:商业系统→IoT平台→设备。