IoT物联网设备丢消息问题排查指南

IoT物联网设备受限于硬件性能,不同地域网络覆盖差异大,信号不稳定,数据丢包现象屡见不鲜,且多数设备无人机交互界面,一旦出现设备离线,消息丢失,往往给用户造成不可估量的损失。如何快速定位消息丢失的原因,成为IoT开发者必须面对的挑战。

本⽂针对IoT设备业务链路丢包,提供⼀些常见的故障定位⽅法,希望能够帮助⼤家对数据丢包有更多的认识,遇到数据丢包莫要慌,且翻看此消息排查指南,强烈推荐收藏!

IoT消息链路梳理

在解决丢消息之前,我们要先搞清楚整个消息链路。

IoT物联网设备丢消息问题排查指南_第1张图片

物联网场景,业务数据由设备端应用程序打包后,再封装MQTT报文,交给通信模组转成网络传输Packet,经由运营商网络传输到云上的IoT物联网平台,再由平台内部处理,通过规则引擎流转写入数据库,或推送到业务服务器。

受限于模组硬件内存,运营商⽹络质量等原因的影响,设备端数据包翻山越岭,历尽艰难险阻,才能顺利到达业务系统。

设备端消息处理过程

IoT物联网设备丢消息问题排查指南_第2张图片

设备端数据打包过程如下:

  1. 设备端应⽤程序组装业务数据包,

  2. 在MQTT协议层增加MQTT报文头,形成MQTT数据包,

  3. 在TCP层增加TCP报⽂头,形成可传输的数据包。

  4. 在IP层增加IP报⽂头,形成网络层的IP包。

  5. 在经过通信模组驱动程序为IP包添加14字节的MAC地址头,构成数据帧Frame,包含有发送端和接收端的MAC地址。

  6. 模组驱动程序为Frame添加头部同步信息和CRC校验,将其封装为可以发送的Packet,然后通过蜂窝网络发送到运营商基站。

消息丢包原因分析

结合上面分析,传输过程中消息丢失可能有以下原因:

  • 设备上的应用程序有bug,未组装业务包

  • 设备上的应用集成的MQTT SDK有bug,未组装MQTT协议包

  • 设备上的通信模组/网卡有异常,未发送网络包

  • 运营商网络异常,数据包丢失

  • 云上IoT物联网平台异常,接收未处理运营商发送的数据包

  • 云上IoT物联网平台异常,未流转数据包

  • 云上业务系统异常,接收未处理IoT物联网平台发送的数据包

排查思路

结合端到端链路分析,本文梳理了4大阶段的排查方案参考

IoT物联网设备丢消息问题排查指南_第3张图片

排查实战

Wireshark抓包分析网络问题

借助网络抓包工具Wireshark,我们可以快速定位设备→网络→IoT物联网平台之间的消息传输问题。

下图展示了设备向IoT物联网平台PUBLISH一条QoS=1的消息的抓包日志。在报文信息里,我们可以看到消息对应的Topic和Payload。

IoT物联网设备丢消息问题排查指南_第4张图片

由于是QoS=1消息,IoT物联网平台会回复一条PUBACK给device。

IoT物联网设备丢消息问题排查指南_第5张图片

传送门:Wireshark抓包实战


IoT物联网平台-消息轨迹追踪

物联网平台的日志服务提供查看设备通信消息轨迹功能。您可根据TraceID或MessageId,追踪任意一条消息在物联网平台流转的全路径,还可根据出现的故障节点快速分析、定位问题。

上行链路:设备→IoT平台→业务系统

IoT物联网设备丢消息问题排查指南_第6张图片

下行链路:业务系统→IoT平台→设备

IoT物联网设备丢消息问题排查指南_第7张图片

传送门:IoT设备消息轨迹全景追踪

往期推荐

1、HarmonyOS 到底是不是Android套壳?

2、5G将是一个彻底失败的通信技术吗?

3、AWS IoT 物联网平台 MQTT 通讯模式

4、IoT平台如何实现 100万/秒消息广播?

5、无GPS模块,IoT设备如何定位?

6、 IoT物联网 4 本好书推荐

IoT物联网设备丢消息问题排查指南_第8张图片

你可能感兴趣的:(网络,定位,物联网,wireshark,iot)