命令安装
CentOS 安装 iperf2&3
yum -y install epel-release
yum -y install iperf iperf3
iperf2 & iperf3
-
iperf 存在两个版本,iperf2与iperf3。iperf2 的软件包 在 CentOS8 中被官方软件仓库移除。
-
iperf3不支持双工模式测试,iperf2支持双工测试[1]
-
iperf3 server端使用了统一的命令
iperf3 -s
,不再区分测试的是UDP还是TCP -
相同硬件条件下(x86平台),iperf3能测试的UDP带宽更高,但丢包严重。iperf2能测试的UDP带宽较小,但不丢包
命令语法
iperf3 [-c/-s] <服务端IP地址> <其他选项>
选项 | 作用 |
---|---|
-t | 设置时间,默认10s |
-u | 使用UDP协议,默认为TCP |
-c | 指定服务端的IP地址 |
-b | 设置带宽大小。带宽越大,每秒钟发送的数据越多 |
-P | 设置多线程的数量 |
-p | 指定端口号 |
-s | 启用服务端 |
-l | 指定数据包的长度[2] |
-B | 绑定使用的C|S端的IP地址 |
-f | 显示的流量单位 [B/K/M/G] |
-R | 反向传输测试 |
-d | 双工传输测试 |
-w | 设置tcp窗口大小 |
-i | 报告的时间间隔,单位是秒 |
命令示例
两台设备,其中一端开启服务端准备接收数据包,另一端启用客户端进行测试
Server端
iperf3 -s -B 192.168.88.140 -p 52001
命令详解:
-s 指定服务端
-p 指定端口(要和客户端一致)为 25001
-B 绑定IP地址为 192.168.33.103
#-u udp协议,默认是tcp协议,iperf3的server端不支持“-u”参数,默认可以测试tcp和udp
Client端
iperf3 -c 192.168.88.140 -b 100M -t 10s -P 4 -u -p 52001
命令详解:
-c 指定服务端的IP地址
-b 指定流量大小为 100M
-t 设置时间为10s
-P 使用 4 个线程同时发送
-u 使用UDP协议
-p 指定服务器的端口为 25001
References & Resources:
-
iperf 2.05 客户端可以使用参数"-d"来进行双工测试,先测试发送,client向server发送数据,等到测试时间结束后(默认为10s,可以通过-t选项来更改),然后再测试接收,client端接收server发送数据,最后得出发送和接收吞吐率。
-
<1> TCP默认为8KB,UDP默认为1470字节。测试时,需要保证被测试网卡的MTU值 > 测试包的长度,即 -l 的值,默认UDP的packet size是1470,加上udp和ip头的长度28, 等于1498。若默认的packet size > MTU,将会出现接收端收不到数据的情况。<2> 增加包的长度或增大缓冲区长度可以减少丢包率,因为包长度很小的话会造成包的数量更多,更易造成拥塞。在发送包为大包情况下,保障不丢包的方式,应当同时增大系统的读写缓冲区大小(修改/etc/sysctl.conf)