以太网性能测试
本章旨在指导如何使用 iperf3
工具进行以太网性能测试。可以查阅 iperf3 了解该命令的详细使用说明。
以太网性能测试的关注点:
- 带宽和吞吐量: 测试以太网的实际可用带宽,以确定以太网在高负载情况下的性能表现。
- 延迟: 评估数据在以太网上传输时的延迟,特别是在高负载条件下,延迟的增加可能会对实时应用产生负面影响。
- 丢包率: 测试以太网中数据包的丢失率,以确定以太网的稳定性。丢包率过高会影响数据传输的完整性。
测试原理
以太网性能测试依赖于客户端和服务器之间的数据传输操作。具体原理如下:
- 服务器端: 使用
iperf3
监听指定端口,等待客户端连接。服务器通过记录接收的数据量和时间间隔,计算实际带宽和吞吐量。 - 客户端: 客户端主动连接服务器,并以指定的速率和间隔发送数据包,模拟网络流量负载。
- 统计信息: 测试过程中,
iperf3
会记录关键数据,包括带宽、延迟、丢包率、重传次数等,帮助分析网络性能。
准备工作
- 选择连接方式:
开发板
-电脑
直连或者开发板
-开发板
直连。 - 确定服务器和客户端: 开发板做客户端和服务端都可以,对端设备可以是个人电脑(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
测试方法
步骤一:启动服务器
在 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=0.439 ms
64 bytes from 192.168.1.195: icmp_seq=2 ttl=128 time=0.532 ms
64 bytes from 192.168.1.195: icmp_seq=3 ttl=128 time=0.554 ms
64 bytes from 192.168.1.195: icmp_seq=4 ttl=128 time=0.596 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 115 MBytes 965 Mbits/sec 0 381 KBytes
[ 5] 1.00-2.00 sec 113 MBytes 947 Mbits/sec 0 402 KBytes
[ 5] 2.00-3.00 sec 113 MBytes 949 Mbits/sec 0 402 KBytes
[ 5] 3.00-4.00 sec 113 MBytes 950 Mbits/sec 0 402 KBytes
[ 5] 4.00-5.00 sec 113 MBytes 949 Mbits/sec 0 402 KBytes
[ 5] 5.00-6.00 sec 114 MBytes 956 Mbits/sec 0 425 KBytes
[ 5] 6.00-7.00 sec 113 MBytes 947 Mbits/sec 0 492 KBytes
[ 5] 7.00-8.00 sec 114 MBytes 954 Mbits/sec 0 492 KBytes
测试标准
测试结果
请查阅 iperf3- 测试结果分析 了解输出信息各字段含义。
为获得理想的性能测试结果,请确保以下条件:
- 客户端与服务器通过高质量网线直连。
- 客户端和服务器协商得到 1000M 的速率;
- 测试时,客户端和服务器无其他高负载任务运行。
目前我们测试出来的性能指标数据如下(仅供参考):
接收带宽:949Mbits/sec
发送带宽:950Mbits/sec
常见问题
1. 为什么 iperf3
客户端无法连接到服务器?
-
原因分析:
- 客户端和服务器未在同一网段 ,或 IP 地址配置错误。
- 防火墙阻止了
iperf3
使用的端口。 - 服务器未正确启动或未监听指定端口。
-
解决方法:
- 确保客户端和服务器的 IP 地址处于同一网段,且能通过
ping
命令相互通信。 - 检查防火墙设置,允许
iperf3
使用的端口通信(例如,5002
)。 - 确保服务器端已正确执行
iperf3 -s
命令并在监听。
- 确保客户端和服务器的 IP 地址处于同一网段,且能通过
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>
- 确保服务器端未运行其他
提示: 若以上方法未能解决问题,请参考 iperf3 官方文档 或相关技术论坛,获取更多支持。