物联网设备受限于硬件性能,不同地区网络覆盖差异大,信号不稳定,数据包丢失现象普遍。而且一旦设备离线,消息丢失,往往会给用户造成不可估量的损失。如何快速定位消息丢失的原因,成为物联网开发者必须面对的挑战。
这款物联网设备针对业务链路丢包提供了一些常见的故障定位方法,希望能够帮助科学家对数据丢包有更多的了解。遇到数据包丢失不要慌,看完这篇消息故障排除指南,强烈推荐收藏!
物联网消息链路梳理
在解决丢失消息的问题之前,我们应该首先了解整个消息链接。
物联网场景,业务数据由设备端应用程序打包后,再封装MQTT报文,交给通信模组转成网络传输Packet,经由运营商网络传输到云上的IoT物联网平台,再由平台内部处理,通过规则引擎流转写入数据库,或推送到业务服务器。
受限于模组硬件内存,运营商⽹络质量等原因的影响,设备端数据包翻山越岭,历尽艰难险阻,才能顺利到达业务系统。
设备端消息处理过程
设备端数据打包过程如下:
- 设备端应⽤程序组装业务数据包,
- 在MQTT协议层增加MQTT报文头,形成MQTT数据包,
- 在TCP层增加TCP报⽂头,形成可传输的数据包。
- 在IP层增加IP报⽂头,形成网络层的IP包。
- 在经过通信模组驱动程序为IP包添加14字节的MAC地址头,构成数据帧Frame,包含有发送端和接收端的MAC地址。
- 模组驱动程序为Frame添加头部同步信息和CRC校验,将其封装为可以发送的Packet,然后通过蜂窝网络发送到运营商基站。
消息丢包原因分析
结合上面分析,传输过程中消息丢失可能有以下原因:
- 设备上的应用程序有bug,未组装业务包
- 设备上的应用集成的MQTT SDK有bug,未组装MQTT协议包
- 设备上的通信模组/网卡有异常,未发送网络包
- 运营商网络异常,数据包丢失
- 云上IoT物联网平台异常,接收未处理运营商发送的数据包
- 云上IoT物联网平台异常,未流转数据包
- 云上业务系统异常,接收未处理IoT物联网平台发送的数据包
排查思路
结合端到端链路分析,本文梳理了4大阶段的排查方案参考
排查实战
Wireshark抓包分析网络问题
借助网络抓包工具Wireshark,我们可以快速定位设备→网络→IoT物联网平台之间的消息传输问题。
下图展示了设备向IoT物联网平台PUBLISH一条QoS=1的消息的抓包日志。在报文信息里,我们可以看到消息对应的Topic和Payload。
由于是QoS=1消息,IoT物联网平台会回复一条PUBACK给device。
传送门:Wireshark抓包实战
IoT物联网平台-消息轨迹追踪
物联网平台的日志服务提供了查看设备通信消息轨迹的功能。可以根据TraceID或MessageId追踪任何流经物联网平台的消息的完整路径,根据故障节点快速分析定位问题。
上行链路:设备→IoT平台→业务系统
下行链路:业务系统→IoT平台→设备
本文章来源于互联网,如有侵权,请联系删除!
相关推荐: 【我的物联网成长记10】五分钟了解物联网SIM卡【华为云技术分享】
【摘要】 SIM卡是移动通信中不可或缺的组成部分,在物联网解决方案中,设备移动上网也需要使用SIM卡。那么,SIM卡是什么?SIM卡有几种?各种SIM卡有什么区别?本文将为您答疑解惑。 通信进化史 过去几百年间,通信技术经历了天变地异般的发展:数百年前的古代,…