一、吞吐量介绍
1.上行吞吐量测试方法
手机作为client端,PC为server端
2.下行吞吐量测试方法
手机作为server端,PC作为client端
什么是WiFI吞吐量?
网络中的数据是由一个个数据包组成,防火墙对每个数据包的处理要耗费资源。吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。
也可以说吞吐量表示在单位时间内通过某个网络或接口的数据量 ,包括全部上传和下载的流量。
测试吞吐量的工具:iPerf
iPerf是一个跨平台的网络性能测试工具,它支持Win/Linux/Mac/Android/iOS等平台,iPerf可以测试TCP和UDP带宽质量,iPerf可以测量最大TCP带宽,具有多种参数和UDP特性,iPerf可以报告带宽,延迟抖动和数据包丢失。利用iPerf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
-s 以server模式启动,eg:iperf -s
-c host 以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23
-f [k|m|K|M] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K
-i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2
-l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16 -m 显示tcp最大mtu值
-o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o c:\iperflog.txt
-p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999
-u 使用udp协议
-w 指定TCP窗口大小,默认是8KB
-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C 兼容旧版本(当server端和client端版本不一样时使用)
-M 设定TCP数据包的最大mtu值
-N 设定TCP不延时
-V 传输ipv6数据包 server专用参数
-D 以服务方式运行ipserf,eg:iperf -s -D -R 停止iperf服务,针对-D,eg:iperf -s -R
client端专用参数
-d 同时进行双向传输测试
-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000
-r 单独进行双向传输测试
-t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5
-F 指定需要传输的文件
-T 指定ttl值
二、影响wifi吞吐量的因素
首先,吞吐量属于极限测试、即检验手机在极限状态下的最大网络容量。故,最好选择近距离屏蔽房环境测试、以排除干扰。
1.软件因素
后台扫描
蓝牙共存
EDCA竞争,RTS、CTS帧等
息屏省电模式
2.硬件
发射端:发射功率,杂散等
接收侧:接收灵敏度,多天线接收差,板间干扰等
3.环境因素
同频干扰
邻频干扰
低速率设备NAV
4.其他系统性能
CPU调度
管家管控
应用敏感性
三、分析方法
直接原因:wifi层面直接原因就是速率协商不上去,或者因为丢包重传导致掉速后又不能很快协商上来。
分析根本原因,就要建立在直接原因上去入手分析。
软件固件,硬件射频,天线都有可能导致速率协商不上去,掉速较快以及掉速后很久协商不上来。
1.首先确认tcp端口流
直接打开wireshark,从tcpdump或者空口log中过滤出tcp数据流。
这个步骤比较容易,因为一般吞吐量测试属于极限测试、后台不会挂其他应用。
使用magic iperf一般server端口为固定的5001,这样很容易找到对应的tcp长连接。
2.wireshark过滤空口tcp数据流
使用wireshark过滤规则:
tcp.port eq 5001 && ip.dst eq [] 可以过滤出相关流
3.wireshark的IO统计wifi速率变化
y轴取wlan_radio.data_rate,查看tcp流物理层速率变化。
四、发射和接收两方面分析
1.发送,过滤wlan.sa eq []
wireshark的IO统计wifi重传包-因为重传是引起掉速的直接原因
y轴取wlan.fc.retry,查看tcp流物理层速率变化。
wireshark的IO发射功率
y轴取wlan_radio.signal_dbm
2.接收部分
driver log中查看各个chain的rssi
wlan: [931:D:HDD] hdd_wlan_fill_per_chain_rssi_stats: 4316: RSSI for chain 0, vdev_id 0 is -54
wlan: [931:D:HDD] hdd_wlan_fill_per_chain_rssi_stats: 4316: RSSI for chain 1, vdev_id 0 is -68
fw log中查看误包情况
R0: FWMSG: [14a30036bc5] ANI_DBGID_POLL phyId 0 listen_time 61-61 ofdmPhyErrCnt 10 cckPhyErrCnt 3 ofdmPhyErrRate 163 cckPhyErrRate 49 level 2
四、根据结果综合分析
1.如果发送重传较多,一般为射频或天线问题
需要查看TRP指标,如果没问题。考虑天线阻抗或射频板间干扰。
2.如果发送重传不多,那考虑软件侧固件问题
3.如果接收误包较多,一般也为射频或天线问题
查看TSI指标,如果没有问题。考虑chain1等多天线间信号强度差异大,可以查看driver log中相关rssi。
4.如果接收误包率一致,考虑软件侧固件问题
关注公众号,获取更多开发必备知识