在现代IT运维与网络管理中,精确评估网络链路的性能至关重要,无论是数据中心的服务器间通信、云环境下的跨区域传输,还是企业内部局域网的带宽瓶颈排查,一个可靠、高效的测试工具都是必不可少的,iperf3正是这样一款被广泛采用的网络性能测试工具,它能够测量TCP和UDP的吞吐量、抖动和丢包率等关键指标,以其跨平台、开源和高度可配置的特性,成为了网络工程师和系统管理员的瑞士军刀,本文将详细介绍如何在CentOS系统上安装、配置和使用iperf3,以进行全面的网络性能评估。

在CentOS上安装iperf3
在CentOS上安装iperf3主要有两种方式:通过官方软件仓库安装(推荐)或从源码编译安装,对于大多数用户而言,使用YUM(CentOS 7)或DNF(CentOS 8/9)包管理器是最简单快捷的方法。
使用YUM/DNF安装
这是最推荐的方式,因为它能自动处理依赖关系,并且便于后续的更新管理。
对于CentOS 7系统:
sudo yum install epel-release sudo yum install iperf3
对于CentOS 8或CentOS Stream系统:
sudo dnf install epel-release sudo dnf install iperf3
安装完成后,可以通过运行 iperf3 -v 命令来验证是否安装成功,该命令会显示iperf3的版本信息。
从源码编译安装
如果官方仓库中的版本较旧,或者需要定制功能,可以选择从源码编译安装,需要安装必要的编译工具和开发库:
sudo yum groupinstall "Development Tools" sudo yum install gcc make
从iperf3的官方网站(https://software.es.net/iperf/)下载最新的源码包,解压后进行编译安装:
tar -xzf iperf-<version>.tar.gz cd iperf-<version> ./configure make sudo make install
这种方式虽然灵活,但维护成本相对较高。

iperf3基本使用:客户端-服务器模型
iperf3采用经典的客户端-服务器架构进行工作,一台主机作为服务器端监听连接,另一台主机作为客户端向其发送数据流,从而测量两者之间的网络性能。
启动服务器端
在需要作为测试目标的服务器上,执行以下命令启动iperf3服务:
iperf3 -s
默认情况下,iperf3服务器会监听5201端口,命令执行后,服务器将进入等待状态,准备接收来自客户端的连接,若想在后台运行,可以添加 -D 参数。
运行客户端测试
在另一台主机上,使用 -c 参数指定服务器端的IP地址,发起测试:
iperf3 -c <server_ip>
如果服务器IP是 168.1.100,则命令为:
iperf3 -c 192.168.1.100
测试默认运行10秒,结束后客户端会显示一个包含间隔数据、总传输数据和计算得出的带宽吞吐量的摘要报告,服务器端也会显示相应的接收信息,这是最基础的TCP吞吐量测试。
常用高级参数与测试场景
为了满足更复杂的测试需求,iperf3提供了丰富的命令行参数,下表列出了一些最常用的参数及其功能:
| 参数 | 功能描述 | 示例 |
|---|---|---|
-p |
指定服务器监听或客户端连接的端口 | iperf3 -s -p 5202 |
-t |
设置测试的持续时间(秒) | iperf3 -c <server_ip> -t 60 |
-P |
创建多个并行的客户端线程以模拟多连接 | iperf3 -c <server_ip> -P 4 |
-R |
反向测试,由服务器向客户端发送数据 | iperf3 -c <server_ip> -R |
-u |
使用UDP协议进行测试(默认为TCP) | iperf3 -c <server_ip> -u |
-b |
指定UDP测试的带宽目标(对TCP为建议值) | iperf3 -c <server_ip> -u -b 100M |
-i |
设置周期性带宽报告的间隔时间(秒) | iperf3 -c <server_ip> -i 5 |
-J |
以JSON格式输出结果,便于脚本解析 | iperf3 -c <server_ip> -J |
测试场景示例:

-
测试TCP双向吞吐量:首先进行一次客户端到服务器的测试,然后使用
-R参数进行反向测试,以评估链路的双向性能。# 正向测试 iperf3 -c 192.168.1.100 -t 30 -P 2 # 反向测试 iperf3 -c 192.168.1.100 -t 30 -P 2 -R
-
测试特定带宽下的UDP性能:模拟视频流等需要固定带宽的应用,测试网络在100Mbps负载下的抖动和丢包情况。
iperf3 -c 192.168.1.100 -u -b 100M -t 60
在UDP测试中,
Jitter(抖动)和Lost/Total Datagrams(丢包率)是衡量网络质量的关键指标。
解读iperf3报告
理解iperf3的输出是有效利用该工具的核心,在TCP测试中,最关注的是 Bandwidth(带宽),它表示在测试期间数据传输的平均速率,单位通常是Mbits/sec,iperf3会自动调整TCP窗口大小以最大化吞吐量。
而在UDP测试中,由于UDP不提供拥塞控制,-b 参数设定的带宽是恒定的,报告中的 Jitter(数据包到达时间的延迟变化)和 Lost/Total Datagrams(数据包丢失数量与总数量的比率)变得尤为重要,低抖动和零丢包(或极低丢包率)是网络链路健康稳定的标志。
相关问答FAQs
问题1:iperf3测试结果中的带宽单位是什么?如何转换为更常见的Mbps或MB/s?
解答: iperf3默认显示的带宽单位是 Mbits/sec(兆比特每秒),即我们常说的Mbps,这是一个标准的网络速率单位,如果你想将其转换为 MB/s(兆字节每秒),也就是文件下载时常用的单位,只需将结果除以8即可,因为1字节等于8比特,测试结果为800 Mbits/sec,那么相当于100 MB/s。
问题2:为什么我使用iperf3测试的速度远低于我的物理网卡或签约带宽?
解答: 这是一个常见问题,原因可能涉及多个层面,iperf3测量的是两台主机之间端到端的实际吞吐量,这个速率受限于整个路径中最慢的环节,即“瓶颈”,可能的原因包括:
- 中间网络设备:交换机、路由器或防火墙的处理能力或端口速率限制。
- 服务器性能:测试主机的CPU负载、内存或磁盘I/O可能成为瓶颈,尤其是在高速网络中。
- 网络拥塞:测试路径上存在其他流量,占用了部分带宽。
- ISP限制:对于公网测试,运营商可能对非标准端口或持续大流量传输进行限速。
- TCP窗口大小:在高延迟网络中,默认的TCP窗口大小可能不足以充分利用可用带宽。 需要逐一排查这些因素,才能定位真正的性能瓶颈。