# Wi-Fi 性能测试

**Wi-Fi**（发音： `/ˈwaɪfaɪ/`），又称“无线网络”，是一种基于 IEEE 802.11 标准的无线局域网技术。尽管“Wi-Fi”常被写作“WiFi”或“Wifi”，但这些写法并未得到 Wi-Fi 联盟的认可。Wi-Fi 广泛应用于连接计算机、智能手机、平板电脑及智能家居设备，提供便捷的网络接入方式。

**Wi-Fi 性能测试的关注点：**

在测试 Wi-Fi 性能时，主要关注以下几个方面：

1. **带宽和吞吐量：** 评估网络实际可用带宽，确定 Wi-Fi 网络在高负载情况下的表现。
2. **延迟：** 测量数据传输时的延迟，特别是在高负载条件下，延迟增加可能对实时应用产生负面影响。
3. **丢包率：** 检测数据包丢失率，丢包率过高可能影响数据传输的完整性和可靠性。
4. **信号强度和覆盖范围：** 分析信号强度和覆盖范围，确保测试区域内的信号稳定性。信号质量通常受到天线性能、AP 的方位及距离等因素影响。

本章节提供使用`iperf3`工具进行 Wi-Fi 性能测试的详细步骤与指南。关于 [iperf3](../linux_command_manual/cmd_iperf3.md) 的使用说明，请参考其官方文档。



## 测试准备工作

性能测试示意图：

![image-20241212-152024](_static/_images/6-wifi_performance/image-20241212-152024.png)

在进行 Wi-Fi 性能测试前，请确保完成以下准备：
1. **启用板端 Wi-Fi 功能：** 确保开发板已开启 Wi-Fi并连接到路由器。
2. **明确服务器和客户端设备：** 开发板既可以作为客户端，也可以作为服务器；对端设备可使用 PC 或另一块开发板。
3. **网络通信测试：** 确保开发板和对端设备可以通过 Wi-Fi 正常通信。

以下是本测试的网络配置：

- 个人电脑（PC）作为服务器，IP 地址：192.168.137.1。
- 开发板作为客户端，IP 地址：192.168.137.124。

通过以下命令验证开发板与服务器之间的连接：

```
ping -I wlan0 192.168.137.1
```

执行结果：

```
PING 192.168.137.1 (192.168.137.1): 56 data bytes
64 bytes from 192.168.137.1: seq=0 ttl=128 time=32.009 ms
64 bytes from 192.168.137.1: seq=1 ttl=128 time=67.866 ms
64 bytes from 192.168.137.1: seq=2 ttl=128 time=14.513 ms
64 bytes from 192.168.137.1: seq=3 ttl=128 time=18.663 ms
```

## 测试方法
### 步骤一：启动服务器

在个人电脑（PC）上启动 iperf3 服务器：

1.下载并安装 iperf3：
- 前往 [iperf 官网](https://iperf.fr/iperf-download.php) 下载适合操作系统的安装包。

2.在 Windows 系统中，通过命令提示符（cmd）运行以下命令启动服务器：

```
iperf3 -s -p 5002
```

服务器启动后的日志示例：

```
-----------------------------------------------------------
Server listening on 5002
-----------------------------------------------------------
```

客户端连接成功后，服务器日志将显示：

```
Accepted connection from 192.168.137.124, port 47380
[  5] local 192.168.137.1 port 5002 connected to 192.168.137.124 port 47384
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.01   sec   269 KBytes  2.19 Mbits/sec
[  5]   1.01-2.00   sec   386 KBytes  3.19 Mbits/sec
```

### 步骤二：启动客户端

在开发板上启动 iperf3 客户端，连接到服务器并开始测试：

```
iperf3 -c 192.168.137.1 -i 1 -t 60 -p 5002
```

命令参数说明：

```
-c：指定服务器的 IP 地址。
-i：设置数据打印间隔时间（单位：秒）。
-t：设定总运行时间（单位：秒）。
-p：指定服务器的端口号。
```

客户端运行日志示例：


```
Connecting to host 192.168.137.1, port 5002
[  5] local 192.168.137.124 port 47384 connected to 192.168.137.1 port 5002
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   512 KBytes  4.19 Mbits/sec    0   74.1 KBytes
[  5]   1.00-2.00   sec   376 KBytes  3.08 Mbits/sec    0   77.0 KBytes
[  5]   2.00-3.00   sec   502 KBytes  4.11 Mbits/sec    0   77.0 KBytes
```

## 测试结果

关于 iperf3 输出日志中字段的含义及分析方法，请查阅 [iperf3-测试结果分析](../linux_command_manual/cmd_iperf3.html#span-id-iperf-result) 章节。

## 性能标准

在测试Wi-Fi性能时，没有一概而论的数据指标可以参考，需要考虑的外部影响因素非常丰富，包括硬件、环境等多个方面。以下是一些会对性能有影响的常见因素：

1. **天线质量和方向性：** Wi-Fi设备的天线质量和方向性会影响信号的传播和接收。使用高质量的天线和合适的方向性可以提高信号质量和覆盖范围。
2. **信道干扰：** 其他Wi-Fi网络、无线设备或电子设备可能在相同或相邻的频段上产生干扰，影响Wi-Fi信号的质量和性能。
3. **信号强度和衰减：** Wi-Fi信号强度与距离成反比关系，而且受到障碍物、墙壁等的影响。
4. **其他无线设备：** 附近的其他无线设备，如蓝牙设备、无线键盘、鼠标等，也可能对Wi-Fi性能产生影响。

在评估 Wi-Fi 性能数据时，应综合考虑上述因素，制定优化策略以确保网络性能的稳定性和可靠性。
