1. 命令简介
iperf 是一款开源的、跨平台的网络性能测试工具,用于测量网络带宽、延迟抖动和数据包丢失等关键指标。它支持 TCP 和 UDP 两种协议,能够评估网络设备(如路由器、交换机、防火墙)的性能以及网络链路的实际吞吐量。该工具采用客户端 / 服务器(C/S)架构,通过发送特定数据流并分析传输结果来评估网络性能。
2. 语法格式
基本语法分为服务器端模式和客户端模式:
bash
运行
# 服务器端模式 iperf -s [选项] # 客户端模式 iperf -c <服务器地址> [选项]其中<服务器地址>是服务器的 IP 地址或主机名。
3. 常用选项及说明
通用选项(客户端和服务器端均可使用)
表格
| 选项 | 参数格式 | 说明 |
|---|---|---|
| -f, --format | [bkmaBKMA] | 设置带宽输出单位。例如:-f m 表示 Mbits/sec,-f M 表示 MBytes/sec。a/A 为自适应单位。 |
| -i, --interval | n | 设置定期报告带宽的间隔时间(秒)。例如 -i 2 表示每 2 秒输出一次中间结果。 |
| -l, --len | n[KM] | 设置读写缓冲区的长度。TCP 默认 8KB,UDP 默认 1470 字节。例如 -l 4K。 |
| -p, --port | n | 设置服务器端监听端口和客户端连接端口。默认是 5001。 |
| -u, --udp | 无 | 使用 UDP 协议进行测试(默认为 TCP)。 |
| -w, --window | n[KM] | 设置 TCP 窗口大小 (TCP window size) 或 UDP 接收缓冲区大小。对性能影响显著。 |
| -B, --bind | host | 绑定到指定的本地网络接口(IP 地址)。用于多网卡主机。 |
| -V | 无 | 启用 IPv6 模式。 |
| -h, --help | 无 | 显示帮助信息。 |
| -v, --version | 无 | 显示版本信息。 |
服务器端专用选项
表格
| 选项 | 参数格式 | 说明 |
|---|---|---|
| -s, --server | 无 | 以服务器模式运行,等待客户端连接。 |
| -D | 无 | (Unix/Linux) 以守护进程(daemon)模式在后台运行。 |
| -c, --client | host | 在服务器模式下,仅接受来自指定客户端主机(IP)的连接。 |
| -P, --parallel | n | 服务器端支持的最大并发客户端连接数。默认是 0(无限制)。 |
客户端专用选项
表格
| 选项 | 参数格式 | 说明 |
|---|---|---|
| -c, --client | host | 以客户端模式运行,并连接到指定的服务器地址。 |
| -b, --bandwidth | n[KMGT] | UDP 模式专用。设置发送带宽,如 -b 100M 表示 100 Mbits/sec。TCP 模式会尽力占满带宽。 |
| -t, --time | n | 设置测试的总时长(秒)。默认是 10 秒。 |
| -n, --num | n[KMGT] | 设置要传输的总字节数,达到即停止,忽略 -t 时间限制。如 -n 100M。 |
| -d, --dualtest | 无 | 进行双向同时测试(同时进行上传和下载)。 |
| -r, --tradeoff | 无 | 进行单向轮流测试(先上传测试,完成后立即进行下载测试)。 |
| -P, --parallel | n | 创建 n 个并发线程连接到服务器进行测试。用于模拟多用户并发。 |
| -L, --listenport | n | 当使用 -r 或 -d 进行反向测试时,指定客户端监听反向连接的端口。 |
| -T, --ttl | n | 设置多播数据包的生存时间(TTL)。 |
| -F, --fileinput | filename | 使用指定文件的内容作为测试数据流,而不是随机数据。 |
4. 示例用法
基础 TCP 带宽测试
这是最常用的测试场景,测量客户端到服务器的最大 TCP 吞吐量。
启动服务器端(在 IP 为 192.168.1.100 的机器上执行):
bash
运行
iperf -s服务器开始监听默认的 5001 端口。
启动客户端进行测试(在另一台机器上执行):
bash
运行
iperf -c 192.168.1.100 -t 30 -i 2客户端连接服务器,进行为期 30 秒的测试,并每 2 秒报告一次实时带宽。
UDP 带宽与质量测试
UDP 测试可以评估极限带宽、抖动和丢包率,更适合评估网络质量。
启动 UDP 服务器端:
bash
运行
iperf -u -s客户端以 50Mbps 速率发送 UDP 流:
bash
运行
iperf -u -c 192.168.1.100 -b 50M -t 20 -i 1测试 20 秒,每秒输出一次报告,其中会包含 Jitter(抖动)和 Lost/Total(丢包)信息。
多线程并行测试
模拟多个并发连接,常用于测试负载均衡设备或服务器的并发处理能力。
服务器端:
bash
运行
iperf -s -P 0-P 0 表示接受任意数量的并发连接(默认行为)。
客户端使用 5 个并行连接:
bash
运行
iperf -c 192.168.1.100 -P 5 -t 15双向带宽测试
同时或轮流测试上传和下载带宽,以评估网络双向性能。
双向同时测试(使用 -d 选项):
bash
运行
iperf -c 192.168.1.100 -d -t 20客户端同时进行上传和下载测试,持续 20 秒。
单向轮流测试(使用 -r 选项):
bash
运行
iperf -c 192.168.1.100 -r -t 10客户端先进行上传测试 10 秒,然后自动切换到下载测试 10 秒。
5. 注意事项
- 版本区分:iperf 有两个主要版本。iperf2 是经典版本,本文档主要基于此版本。iperf3 是重写版本,设计更简洁,部分选项和行为与 iperf2 不同,使用时请确认版本并参考相应文档。
- 防火墙设置:测试前需确保服务器端监听端口(默认 5001)在防火墙中开放,允许客户端连接。
- 网络环境影响:测试结果受网络负载、硬件性能等因素影响,建议在低负载环境下多次测试取平均值。
- 选项兼容性:某些选项可能在不同版本或操作系统中行为略有差异,使用时建议查阅官方文档或使用 -h 选项查看帮助。
获取更多Linux学习资料请关注“阿成学长工具包”,对话框中输入2647获取