Linux 网络性能测试实战:用 iperf3 精准测出真实带宽与丢包率

在网络调试或链路验收中,iperf3 是最常用的带宽测试工具之一。 它支持 TCP/UDP 协议,可自定义带宽、测试时长、包大小等参数,轻量高效,是运维与网络工程师的常备工具。


一、安装 iperf3

iperf3 支持各类 Linux 发行版,可通过包管理器直接安装:

复制代码
# Debian / Ubuntu
sudo apt update && sudo apt install iperf3 -y

# CentOS / Rocky / AlmaLinux / RHEL
sudo yum install iperf3 -y

# Fedora
sudo dnf install iperf3 -y

# openSUSE
sudo zypper install iperf3

验证安装:

复制代码
iperf3 -v

二、UDP 带宽测试(示例:50Mbps)

UDP 模式常用于测试网络抖动、丢包率和最大承载能力。

服务端:

复制代码
iperf3 -s -p 5001

客户端:

复制代码
iperf3 -c <服务器IP> -u -b 50M -t 10 -p 5001 -B <客户端源IP>

参数说明:

  • -u:启用 UDP 模式
  • -b:指定目标带宽
  • -t:测试持续时间(秒)
  • -B:绑定客户端源地址(多网卡时推荐使用)

三、TCP 带宽测试(示例:80Mbps、100Mbps)

服务端:

复制代码
iperf3 -s -p 5002

客户端:

复制代码
# 测试 80Mbps
iperf3 -c <服务器IP> -b 80M -t 10 -p 5002 -B <客户端源IP>

# 测试 100Mbps
iperf3 -c <服务器IP> -b 100M -t 10 -p 5002 -B <客户端源IP>

四、不同数据包长度测试

测试不同包长下的网络表现(以 UDP 模式为例):

复制代码
iperf3 -c <服务器IP> -u -l 64b   -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 128b  -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 256b  -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 512b  -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 1k    -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 1500b -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 2k    -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 4k    -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 8k    -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 16k   -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 32k   -b 50M -t 10 -p 5001
iperf3 -c <服务器IP> -u -l 64k   -b 50M -t 10 -p 5001

五、测试结果分析与样例解析

UDP 测试样例

客户端命令:

复制代码
iperf3 -c 10.0.0.2 -u -b 50M -t 10 -p 5001 -B 10.0.0.3

输出片段:

复制代码
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00 sec  59.6 MBytes   49.8 Mbits/sec  0.233 ms  3/4595 (0.065%)
Server Report:
[  5]   0.00-10.03 sec  59.6 MBytes   49.8 Mbits/sec  0.233 ms  3/4595 (0.065%)

字段解释:

  • Transfer:10 秒内传输的数据量(59.6 MB)。
  • Bitrate:实际传输速率(49.8 Mbps,接近目标 50 Mbps)。
  • Jitter:UDP 抖动(0.233 ms,极低,链路稳定)。
  • Lost/Total Datagrams:丢包统计(丢 3 包,占 0.065%,可接受)。

分析建议:

  • 若带宽明显低于目标值,检查 CPU、带宽限制或中间防火墙策略。
  • 若丢包率高(>0.5%),优先排查网卡统计、交换机端口错误或 QoS 限制。
  • 若抖动高(>30ms),说明链路拥塞或排队延迟。

TCP 测试样例

客户端命令:

复制代码
iperf3 -c 10.0.0.2 -t 10 -p 5002 -B 10.0.0.3

输出片段:

复制代码
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00 sec   93.5 MBytes   78.4 Mbits/sec  2             sender
[  5]   0.00-10.00 sec   92.9 MBytes   78.0 Mbits/sec              receiver

字段解释:

  • Bitrate:TCP 吞吐率(78.4 Mbps)。
  • Retr:TCP 重传次数(2 次,正常范围)。
  • sender / receiver:两端统计结果;若差距大,表示中间存在丢包或接收端限速。

分析建议:

  • 重传过多说明丢包或延迟波动,应排查链路质量。
  • 吞吐低于预期时,可尝试:
    • 增大 TCP 窗口缓冲(-w 512K);
    • 使用多并发流(-P 4);
    • 检查 QoS、限速或 MTU 问题。

包长影响说明

  • 小包(64B~256B):包率高、CPU 压力大、吞吐可能下降,适合测试设备 PPS 能力。
  • 中包(512B~1500B):常见业务场景,结果可代表真实性能。
  • 大包(2K~64K):协议效率高,但可能受 MTU 限制。若性能提升明显,可启用 Jumbo Frame(9000B)。

六、总结

iperf3 是网络链路测试与性能诊断的核心工具,可快速验证带宽、丢包、抖动、TCP 吞吐等关键指标。 结合不同包长与协议测试,可以精准判断链路瓶颈,定位物理层、传输层或系统配置问题。

建议:

  • 测试前关闭业务干扰,保证带宽独占。
  • 分多个时间段重复测试,分析平均值与波动情况。
  • 保存结果日志(--logfile result.log)便于比对与追踪。
相关推荐
yong1585855343几秒前
2. Linux C++ muduo 库学习——原子变量操作头文件
linux·c++·学习
泽02022 分钟前
Linux信号专题
linux·运维·服务器
chuxinweihui11 分钟前
数据链路层
运维·服务器·网络
qq_2515335924 分钟前
使用 Python 提取 MAC 地址
网络·python·macos
天天进步201532 分钟前
【Linux 运维】告别 cat:如何按“时间段”优雅地截取日志文件?
linux·运维·服务器
zl_dfq1 小时前
Linux 之 【进程等待】
linux
aFakeProgramer1 小时前
Linux 启动流程
网络
遇见火星1 小时前
Linux性能调优:理解CPU中的平均负载和使用率
linux·运维·服务器·cpu
长安第一美人2 小时前
php出现zend_mm_heap corrupted 或者Segment fault
开发语言·嵌入式硬件·php·zmq·工业应用开发
Chennnng2 小时前
Ubuntu 安装过程的 6 大常见问题类型
linux·运维·ubuntu