使用 iperf 工具测试 Linux 网络性能
Posted 阿基米东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 iperf 工具测试 Linux 网络性能相关的知识,希望对你有一定的参考价值。
在 Linux 网络设备开发过程中,我们常常需要测试网络性能指标参数,找出网络性能瓶颈,从而优化我们的软件或者硬件设计。在 Linux 环境中,我们可以使用 iperf 命令工具测试网络性能,包括网络带宽、延迟抖动和数据包丢失等参数。为了方便使用,我们还可以安装图形化界面工具 Jperf 进行测试。本文将以 Ubuntu 系统为例,介绍 iperf 和 Jperf 的使用,并完成网络性能测试。
安装工具
首先需要安装 iperf 命令工具,在 Ubuntu 系统中执行下列命令即可安装。
sudo apt install iperf
Jperf 是 iPerf 命令行图形化的 Java 程序,由于 Jperf 依赖 Java(1.5 及以上版本),因此在安装 Jperf 之前,我们还需要确保 Ubuntu 系统已经安装好了 Java 环境。你可以通过以下命令来检查是否满足要求:
$ java -version
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
如果满足 Java 环境的要求,接下来我们就可以在 xjperf Google CodePage 下载当前最新的 jperf-2.0.2.zip 安装包。
打开 Shell 终端,切换到 jperf-2.0.2.zip 文件所在目录,依次执行下列命令完成解压缩等安装操作。
unzip jperf-2.0.2.zip
cd jperf-2.0.2/
chmod +x jperf.sh
执行脚本即可启动 Jperf 程序。
./jperf.sh
命令行测试
下面我们先利用命令行工具进行测试。iperf 支持测试 TCP 和 UDP 模式,不过为了测出极限带宽、时延抖动、丢包率等数据,我们通常采用 UDP 模式。
在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为 100Mbps,先用 -b 100M
参数进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
PC 端作为 UDP 服务器端(IP 地址为 192.168.0.1):
iperf -u -s
设备端作为 UDP 客户端:
iperf -u -c 192.168.0.1 -b 1000M -t 60
其中 -u
表示 UDP 模式,-s
表示服务器端,-c
表示客户端。另外客户端这边,-b
指定发送速率,这里先用 1000Mbps 作为数据发送速率;-t
指定测试时长(单位为秒),这里的测试时间为 60 秒。
一分钟后,服务端的打印结果如下:
rudy@Latitude-3420:~$ iperf -u -s
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.1 port 5001 connected with 192.168.0.2 port 39515
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-60.0 sec 5.92 GBytes 848 Mbits/sec 0.001 ms 336/4324695 (0.0078%)
客户端的打印结果如下:
root@bionic-arm64:~# iperf -u -c 192.168.0.1 -b 1000M -t 60
------------------------------------------------------------
Client connecting to 192.168.0.1, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11.22 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.2 port 39515 connected with 192.168.0.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.0 sec 5.92 GBytes 848 Mbits/sec
[ 3] Sent 4324695 datagrams
[ 3] Server Report:
[ 3] 0.0-60.0 sec 5.92 GBytes 848 Mbits/sec 0.000 ms 336/4324695 (0.0078%)
图形工具测试
PC 端作为服务器端,启动 Jperf 图形工具:
./jperf.sh
设置为 Server 模式,这次我们使用 TCP 模式,点击右上方的 “Run IPerf!” 按钮启动。
设备端作为 TCP 客户端:
iperf -c 192.168.0.1 -b 1000M -t 60
运行过程中,可以在 Jperf 界面看到网络带宽的测试结果,如下图所示。
总结
iperf 是一个功能强大的网络性能测试工具,可用于测试 TCP 和 UDP 带宽质量,报告带宽、延迟抖动和数据包丢失等数据。我们常常利用 iperf 工具来来测试一些网络设备的性能,PC 端和嵌入式设备端均可作为服务器端或者客户端,分别测试上行或者下行的带宽。
iperf 命令的详细用法,请参考 iperf 命令。
以上是关于使用 iperf 工具测试 Linux 网络性能的主要内容,如果未能解决你的问题,请参考以下文章
Linux网络性能评估工具iperf CHARIOT测试网络吞吐量
Linux网络性能评估工具iperf CHARIOT测试网络吞吐量
Linux网络性能评估工具iperf CHARIOT测试网络吞吐量