4.5.9. 以太网性能测试
本章旨在指导如何使用 iperf3 工具进行以太网性能测试。可以查阅 iperf3 了解该命令的详细使用说明。
以太网性能测试的关注点:
带宽和吞吐量: 测试以太网的实际可用带宽,以确定以太网在高负载情况下的性能表现。
延迟: 评估数据在以太网上传输时的延迟,特别是在高负载条件下,延迟的增加可能会对实时应用产生负面影响。
丢包率: 测试以太网中数据包的丢失率,以确定以太网的稳定性。丢包率过高会影响数据传输的完整性。
4.5.9.1. 测试原理
以太网性能测试依赖于客户端和服务器之间的数据传输操作。具体原理如下:
服务器端: 使用
iperf3监听指定端口,等待客户端连接。服务器通过记录接收的数据量和时间间隔,计算实际带宽和吞吐量。客户端: 客户端主动连接服务器,并以指定的速率和间隔发送数据包,模拟网络流量负载。
统计信息: 测试过程中,
iperf3会记录关键数据,包括带宽、延迟、丢包率、重传次数等,帮助分析网络性能。
4.5.9.2. 准备工作

选择连接方式:
开发板-电脑直连或者开发板-开发板直连。确定服务器和客户端: 开发板做客户端和服务端都可以,对端设备可以是个人电脑(PC),也可以是另一块开发板。
确定网段: 配置为相同网段的 IP 地址。
示例配置
在本测试中配置如下:
连接方式 :
开发板-电脑直连。服务器(PC): IP 地址为
192.168.1.195客户端(开发板): IP 地址为
192.168.1.10
执行命令测试 PC 和开发板的以太网连通性:
ping -I eth0 192.168.1.195
执行结果:
PING 192.168.1.195 (192.168.1.195) from 192.168.1.10 eth0: 56(84) bytes of data.
64 bytes from 192.168.1.195: icmp_seq=1 ttl=128 time=1.54 ms
64 bytes from 192.168.1.195: icmp_seq=2 ttl=128 time=1.28 ms
64 bytes from 192.168.1.195: icmp_seq=3 ttl=128 time=1.57 ms
64 bytes from 192.168.1.195: icmp_seq=4 ttl=128 time=1.40 ms
4.5.9.3. 测试方法
步骤一:启动服务器
在 PC 上使用 iperf3 启动服务器。首先,前往iperf 官网 下载 iperf3 安装包并完成安装。
在 Windows 系统上,通过命令提示窗口(cmd)执行命令:
iperf3 -s -p 5002
启动日志:
-----------------------------------------------------------
Server listening on 5002
-----------------------------------------------------------
客户端连接成功后的日志:
PING 192.168.1.195 (192.168.1.195) from 192.168.1.10 eth0: 56(84) bytes of data.
64 bytes from 192.168.1.195: icmp_seq=1 ttl=128 time=1.54 ms
64 bytes from 192.168.1.195: icmp_seq=2 ttl=128 time=1.28 ms
64 bytes from 192.168.1.195: icmp_seq=3 ttl=128 time=1.57 ms
64 bytes from 192.168.1.195: icmp_seq=4 ttl=128 time=1.40 ms
步骤二:启动客户端
在板端启动 iperf3 客户端,指定要连接的 Server 端的 IP 地址和端口号,然后启动测试。
执行命令:
iperf3 -c 192.168.1.195 -i 1 -t 600 -p 5002
命令参数说明:
-c: 指定服务器的 IP 地址。-i: 数据打印间隔时间(单位:秒)。-t: 测试总运行时间(单位:秒)。-p: 指定服务器监听的端口号。
执行日志:
Connecting to host 192.168.1.195, port 5002
[ 5] local 192.168.1.10 port 40564 connected to 192.168.1.195 port 5002
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 112 MBytes 941 Mbits/sec 49 211 KBytes
[ 5] 1.00-2.00 sec 112 MBytes 939 Mbits/sec 109 210 KBytes
[ 5] 2.00-3.00 sec 110 MBytes 926 Mbits/sec 163 200 KBytes
[ 5] 3.00-4.00 sec 112 MBytes 936 Mbits/sec 65 218 KBytes
4.5.9.4. 测试标准
测试结果
请查阅 iperf3- 测试结果分析 了解输出信息各字段含义。
为获得理想的性能测试结果,请确保以下条件:
客户端与服务器通过高质量网线直连。
客户端和服务器协商得到 1000M 的速率;
测试时,客户端和服务器无其他高负载任务运行。
目前我们测试出来的性能指标数据如下(仅供参考):
接收带宽:870Mbits/sec
发送带宽:940Mbits/sec
4.5.9.5. 常见问题
1. 为什么 iperf3 客户端无法连接到服务器?
原因分析:
客户端和服务器未在同一网段,或 IP 地址配置错误。
防火墙阻止了
iperf3使用的端口。服务器未正确启动或未监听指定端口。
解决方法:
确保客户端和服务器的 IP 地址处于同一网段,且能通过
ping命令相互通信。检查防火墙设置,允许
iperf3使用的端口通信(例如,5002)。确保服务器端已正确执行
iperf3 -s命令并在监听。
2. 为什么测试带宽低于预期值?
原因分析:
网络硬件如网卡不支持千兆速率,或未协商到千兆速率。
客户端或服务器运行了其他高负载任务,影响了性能。
解决方法:
检查设备硬件支持千兆以太网,必要时强制网卡协商为千兆速率。
测试前,关闭客户端和服务器上可能占用网络或系统资源的其他任务。
3. 为什么测试过程中出现高丢包率?
原因分析:
测试网络环境存在干扰,或网线质量较差。
测试设备的网络配置(如缓冲区大小)不符合要求。
解决方法:
使用高质量网线,并确保连接稳固无干扰。
调整网络配置,例如增大 TCP 缓冲区:
sysctl net.core.rmem_max #查看接收缓冲区(rmem_max)的最大值 sysctl net.core.wmem_max #查看发送缓冲区(wmem_max)的最大值 sysctl -w net.core.rmem_max=2500000 #设置接收缓冲区(rmem_max)的最大值为 2,500,000 字节 sysctl -w net.core.wmem_max=2500000 #设置发送缓冲区(wmem_max)的最大值为 2,500,000 字节
4. 如何解决 iperf3 运行时显示“Address already in use”错误?
原因分析: 此错误通常是因为服务器端口已经被占用,可能是另一个
iperf3实例未关闭。解决方法:
确保服务器端未运行其他
iperf3实例,或使用不同端口启动:iperf3 -s -p <新端口号>
检查并结束占用端口的进程:
netstat -tuln | grep 5002 kill <进程 ID>