一 iperf背景与下载
iperf用于测试网络性能,支持TCP、UDP和SCTP。可得到网络带宽、延迟抖动和报文丢包的实际测试数据。
- iperf官网:iperf.fr
- iperf源码下载地址:https://github.com/esnet/iperf
- Windows版本二进制文件下载:32位&64位
Linux系统terminal终端下载指定版本:
- 执行git clone https://github.com/esnet/iperf.git 默认下载最新版本。
- cd iperf-3.x 进入目录,执行git tag查看历史版本。
- 执行git checkout 3.1.3 回退到3.1.3的历史版本。
二 安装及使用方式
iperf既可以作为服务端,也可以作为客户端运行,同时存在Windows、Linux等多个版本。本文以Windows服务端、Linux客户端为例说明iperf的使用方法。
2.1 网络连接和IP配置
服务端与客户端的网口通过网线和交换机连接,两者IP需要保持在同一网段,如下所示:
Windows系统终端 | Linux系统终端 |
---|---|
192.168.123.244 | 192.168.123.24 |
2.2 服务端iperf的安装与使用
- 关闭Windows系统的防火墙与杀毒软件或允许iperf通过防火墙。
- 拷贝iperf-3.0.11-win32.rar并解压至Windows系统的的英文路径的目录(如D盘根目录)。
- 按"win + R"打开Dos窗口,执行“d:” 进入D盘,再执行“cd iperf-3.0.11-win32”进入iperf3.exe所在目录。
- 执行iperf3 -s (或iperf3 -s -p 6100, 以指定端口号)运行iperf作为服务端,执行效果如下图所示:
2.3 客户端iperf的安装与使用
git下载iperf-3.1.3-source.tar.gz至/opt目录,进入/opt目录执行tar vxzf iperf-3.0.11-source.tar.gz解压文件。
进入/opt/iperf-3.0.11-source目录,执行以下操作进行编译和安装:
- ./configure
- make
- make install
2.4 测试TCP
在Linux终端执行iperf3 -c 192.168.123.244 -p 6100 -P 2 -i 1 -t 86400开始与服务端通讯,其中参数意义如下表所示。
参数 | 意义 |
---|---|
-c 192.168.0.77 | 表示服务端的ip为192.168.0.77 |
-p 6100 | 服务端的端口号 |
-P 2 | 表示使用socket connect为2个 |
-i 1 | 表示间隔1秒打印一次数据 |
-t 86400 | 表示客户端的iperf运行周期为86400秒 |
Linux客户端显示如下图所示, Linux网络1的实际带宽约为250Mbps(默认TCP方式),其中Retr为0 1。
2.4 测试UDP
在Linux客户端执行iperf3 -c 192.168.123.244 -u -p 6100 -b 100M -i 1 -t 86400开始与服务端通讯。
参数 | 意义 |
---|---|
-c 192.168.123.244 | 表示服务端的ip为192.168.123.244 |
-p 6100 | 服务端的端口号 |
-u | 表示以UDP方式与服务端通讯 |
-b 100M | 表示限定发送速率为100Mbps;若测试千兆网,可设定为950Mbps |
-i 1 | 表示间隔1秒打印一次数据 |
-t 86400 | 表示客户端的iperf运行周期为86400秒 |
Linux客户端显示如下图所示, Linux网络1的实际带宽约为90Mbps(UDP方式),jitter延迟抖动为0ms,丢包率为0%,网络状态良好。
三 注意事项
- Windows系统的防火墙和杀毒软件需要关闭。
- Linux系统下执行make install报错,可能是Linux系统处于写保护状态,需要关闭写保护。
- Linux端的-t 默认最大设置为86400秒,如果iperf要运行更长的时间,请修改客户端iperf/src/iperf.h文件,将变量MAX_TIME的值修改为相应数值(如8640000),并重新编译安装。
- iperf工具既支持作为客户端,也支持作为服务端。
Retr表示报文重发次数 ↩︎