苹果笔记本Macbook无线wifi丢包延迟高
一、故障现象
macbook在使用过程中遇到无线延迟和丢包问题,有时候在同样的无线网络环境下,windows电脑的ping测试看起来一切正常,而macbook就会出现某个ping报文延时很高和丢包,例如下图
苹果笔记本Macbook

windows电脑

二、故障原因定性
经过多次探寻和摸索,我们发现这个问题可能与苹果Macbook电脑的awdl进程有关。
awdl:苹果的WiFi直连特性都称之为awdl ,即 apple wireless direct link,涉及的具体应用例如AirDrop等等。
(由于苹果是在2014年后发布的操作系统引入的awdl服务,所以在此之后的macbook版本可能会涉及该问题。)
三、问题解决方案
解决方法一
我们可以通过安装一个小工具,该工具启动后可以彻底关闭与awdl基础进程相关的airdrop和adhoc应用,可以缓解延迟抖动断流的情况。(但是可能会遇到airdrop不可用,个人热点不可用的情况)
安装过程:
在macbook 安装后,点击如下按钮即可

链接:https://pan.baidu.com/s/1AMy60IzlGhiXyJQdVugyNQ?pwd=pmw3
提取码:pmw3
–来自百度网盘超级会员V7的分享
方法二:
如果想在不安装小工具前,提前测试下是否由于该问题导致,可以通过在mac本上直接关闭awdl进程进行验证。
调出mac本的【终端】对话框,输入ifconfig查看awdl0的状态是否是active,如果是active,可以通过命令sudo ifconfig awdl0 down关闭awdl进程,看看ping测试是否有效果。

PS:这里要注意的是,macbook如果发生重启,之后awdl进程会重新恢复active。如果想永久生效,还是需要安装方法一的小工具哦。
四、故障问题详解
针对终端偶发ping延时丢包的问题,我们如何判断延时发生在AP、终端、还是空口呢?我们针对此次macbook延时,提供下述详细的分析过程:
如下图所示,通常我们在使用测试终端macbook进行测试时,电脑上显示的ping测试结果往往是CPU上记录到的ICMP Response的时间。
而一个ICMP Request的报文发出过程:
会由终端 CPU产生——经过Macbook内部处理——通过终端的无线网卡发出

由此可知,终端上显示的ICMP Response延时的最终结果=有线侧延时+AP处理的延时+空口延时+终端内部处理的延时,通过进行空口抓包,我们可以捕获到实际AP回复的ICMP Response的时间,从而规避掉可能会由于终端内部处理产生的延时。
接下来,我们根据实际ping测试结果来介绍如何准确的计算实际无线侧产生的时延
1、计算测试电脑和抓包电脑的系统时间差
由于我们使用的测试和抓包为两台电脑,他们两个的系统时间可能不完全统一,那么我们就需要规避掉这部分误差。
(1)在测试电脑进行测试,根据某一次的ping包来计算,例如下图,我们以icmp_seq=6238为例,此次ping包的延时为4.612ms。

(2)使用抓包电脑进行抓包,可以抓到此次icmp报文的Request和Response

通过展开icmp request报文,我们可以得到测试电脑CPU发出icmp request的系统时间为13:03:18.727890

由此可以得出,由于测试电脑上显示的总延时为4.612ms,
从测试电脑的系统时间角度计算,那么ICMPResponse的时间应该为=13:03:18.727890s + 4.612ms =13:03:18.732502s
结合抓包电脑ICMPResponse的系统时间为 13:03:18.901179,可计算出两个电脑的系统时间差=13:03:18.901179s-13:03:18.732502s=168.6ms
那么由此我们可以得出,抓包电脑与测试电脑的系统时间会相差168.6ms
2、计算产生在空口的实际延时
接下来,我们就可以计算某次大延时,实际在无线侧产生的延时。如下图所示,icmp_seq=6240产生了732ms的大延时,接下来我们来排查一下,这些延时产生在哪里,由无线侧产生的实际延时又是多少呢?
测试电脑的ping测试结果:

抓包电脑的信息:

抓包电脑的ICMP Request报文中,携带时间为测试电脑CPU发出的时间戳:

通过空口抓包,我们可以看到Seq = 6240的ICMP request报文时间戳为13:03:20:736607(按测试电脑系统时钟),换算成抓包电脑的系统时钟(+168.6ms)后应是于13:03:20:905207在测试电脑的CPU上产生。
而抓包电脑捕获到的ICMP Request报文时间是13:03:21:634185,两条ICMP Request相减得到这条ICMP Request报文在测试MacBook的CPU上产生到真正发出已耗费约728 ms,而无线侧耗费的时间通过抓包电脑上记录的ICMP Reply减去ICMP Request报文产生的时间,仅占4 ms左右,由此可见大部分延时实际耗费在了终端的内部。
本文转载自华三,源自https://zhiliao.h3c.com/Theme/details/210743