作为一名Wi-Fi研发工程师,断网断流问题的拆解可谓是家常便饭,那么如何练就一身手到擒来的操刀本领呢,跟着小编一点点解开它的面纱,我计划将从协议基础知识、协议规范、协议栈源码分析、debug手段、日志分析......一点点开搞~
前边分享了几篇连载的文章,我们看完之后应该有这么一个概念(谁还没有概念过来找我~) -- 一个数据包从应用发出到顺利发送到接收端到以及顺利收到接收端的回复,涉及了应用协议、TCP/IP协议栈、数据链路层以及物理层的协同配合,绝不是某一个协议独立完成,我们这一篇主要从一个实际的案例分享带你明白数据包都怎么传达的;
背景:
接触过工厂生成的同学都知道,那里很喜欢使用adb wifi,因为这样生产效率高并且避免了新机器有划痕,小编遇到一个adb wifi无法连接的问题,那么是什么原因导致呢?
测试步骤:
使用adb wifi连接手机测试工厂case
adb usb
adb tcpip 5555
adb connect DUT_ip:端口
例如adb connect 192.168.31.12:8888
问题现象:
wifi掉口(adb offline)
(1)adb connect无法连接;
(2)adb shell相关指令无法下发到手机;
(3)ap服务器侧无法ping通手机IP;
(4)adb连接被拒;
拓扑图:
基于上图可以看到adb wifi的一个关系图(DUT&PC之间用改用虚线),数据流是这样:
(1)PC端下发adb wifi指令;
(2)adb通过socket将命令发到TCP层面;一个封包案例是这样的:
(3)TCP将数据封包,建立TCP连接,通过数据链路层发出去;
(4)硬件实现数字信号和光信号的转换;
问题原因:
这里小编想说的是,从事于协议开发的开发者,要把数据包看作很小的单元,并且要对数据包的流向有一个大致的认知,知道他经过了那些协议,都分别进行了什么处理,然后再层层拆解,细致细致再细致~
1.PC侧异常,TCP链路建立完成后,指令未发到空口,是工具内部的问题;
(1)在工具侧增加retry动作改善;
(2)优化工厂环境,AP使用5G,同车间信道设置不发生带宽重叠情况(文末将附上详细的优化策略);
2.系统crash导致手机重启,5555监听端口未恢复,导致TCP无法建立连接;
表现如下:PC发起TCP握手时,手机直接RST,提示端口异常
如何查看手机测端口的状态:
adb shell
netstat -nap | grep -iEn 5555(对应adb tcpip命令,起一个TCP server,监听client),正常情况打印如下:
3:tcp6 0 0 [::]:5555 [::]:* LISTEN 19678/adbd
3.固件/硬件丢包,表现为SYN/RTS/beacon包收不到;
(1)可以尝试关闭power save;
(2)当然rootcause修改固件bug(重点拆解);
拆解过程:
(1)PC侧自动化工具的命令下发
(2)PC端建立TCP连接,将命令下发到手机,TCP连接超时
从上边的日志看,TCPDUMP里TCP syn&keep-alive包都正常,但迟迟收不到对端的ack回复,看一下数据链路层的发包情况,TCP包收到但是没有回复,那么大概率就是固件丢掉了,这里可以关闭power save辅助确认一下是否收包有问题;
底层接收数据包的大概流程是这样:
中断检测(HW-DTIM)-->中断处理程序 -->寄存器恢复(error,禁用中断) -->DTIM系统唤醒 -->接收空口
这样是不是就拆到原因点了;
一些优化建议:
网络接入建议:
工厂PC优先使用有线方式接入工厂网络;
测试手机使用 WiFi 接入工厂网络;
网络 IP 分配建议:
接入工厂网络的设备IP均应来自同一地址池,避免IP地址冲突;
所有设备间可通过IP地址互相访问;
工厂PC通过DHCP为当前主机分配固定 IP;
测试手机使用 DHCP 动态分配 IP,租期按产能及 IP 地址池大小动态调整,参考时间 1H;
应具备独立 DHCP 服务器,减少 AC、AP 压力;
RSSI 优化建议:
生产线体附近信号强度优化,尽量保证在-50dbm以上;
SSID 要求:
建议使用统一SSID,命名规范话;
建议使用5G频段;
稳定性要求 - 软件性能保证:
客户端平均丢包率尽量小;
客户端在发生漫游时应无断连情况发生;
速率要求:
无线终端与网关延迟应尽量小;
有线终端与网关延迟应尽量小;
WiFi标准尽量高一些,这样物理性能有保障;
AP安装建议
AP尽量使用吸顶式AP,全向天线,增加AP信号覆盖范围;
AP提供信号强度尽量在-20dbm左右;
AP安装位置需无任何阻挡,保持环境空旷;
AP应均匀分布,可以做到无缝漫游衔接;
AP信号建议
国内可用5G 频段有 36、40、44、48、149、153、157、161、165,尽量保证任一AP与其附近AP均无信道间干扰,避免信道拥堵;
AP发射强度视情况调整,发射功能不能太强;