Iperf3 网络带宽测速工具
Iperf3功能简介
Iperf是美国伊利诺斯大学(University of Illinois)开发的一种开源的网络性能测试工具。可以用来测试网络节点间(也包括回环)TCP或UDP连接的性能,包括带宽、抖动以及丢包率,其中抖动和丢包率适应于UDP测试,而带宽测试适应于TCP和UDP。
Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,可以用来测量网络带宽和网络质量,提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。
Iperf 是一款基于命令行模式的网络性能测试工具,是跨平台的,提供横跨Windows、Linux、Mac的全平台支持。iperf 全程使用内存作为发送/接收缓冲区,不受磁盘性能的影响,对于机器配置要求很低。不过由于是命令行工具, iperf 不支持输出测试图形。
Iperf可以测试TCP和UDP带宽质量,具有多种参数和UDP特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
工具下载
Iperf3下载地址
工具安装
以ubuntu 64位系统作为Server为例,先通过CLI从官网下载对应deb文件
curl https://iperf.fr/download/ubuntu/iperf3_3.9-1_amd64.deb -o iperf3.deb
然后通过apt进行安装
apt install iperf3.deb
如果出现报错一般是相关的依赖问题,通过输入以下指令自动完成依赖安装
apt install -f
安装成功后通过 iperf3 -v 即可验证安装的工具版本号
常用参数
| 参数 | 含义 | eg |
|---|---|---|
| -s | iperf服务器模式,默认启动的监听端口为5201 | iperf -s |
| -c | iperf客户端模式,host是server端地址 | iperf -c hostname |
| -i | 指定每次报告之间的时间间隔,单位为秒 | iperf -c hostname -i 2 |
| -l | 设置读写缓冲区的长度,单位为 Byte。TCP方式默认为8KB,UDP方式默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400 | iperf -c -l 16 |
| -b | 指定UDP模式使用的带宽[K,M,G],单位bits/sec,默认值是1 Mbit/sec | iperf -c -b G |
| -t | 指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒 | iperf -s |
| -A | CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度 | iperf -s |
| -t | 指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒 | iperf -s |
通用参数 (Server端和Client端共用)
| 参数 | 含义 | eg |
|---|---|---|
| -f | 指定带宽输出单位,“[k,m,g,K,M,G]”分别表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes显示输出结果,默认Mbits | iperf3 -c hostname -f G |
| -p | 指定服务器端监听的端口或客户端所连接的端口,默认是5001端口 | iperf3 -c hostname -p 3200 |
| -F | 指定文件作为数据流进行带宽测试 | iperf3 -c hostname -F xxTest.tar.gz |
| -F | 指定服务器端监听的端口或客户端所连接的端口,默认是5001端口 | iperf3 -c hostname -p 3200 |
| -P | 指定客户端与服务端之间使用的线程数。默认是1个线程。需要客户端与服务器端同时使用此参数 | iperf3 -s -P 2 & iperf3 -c -P 2 |
服务端参数
当且仅当参数包含-s(Server)时有效
| 参数 | 含义 | eg |
|---|---|---|
| -c | 如果iperf运行在服务器模式,并且用-c参数指定一个主机,那么iperf将只接受指定主机的连接 | iperf3 -s -c hostname |
| -D | Unix平台下将Iperf作为后台守护进程运行。在Win32平台下,Iperf将作为服务运行 | iperf3 -s -D |
| -R | 卸载Iperf服务(仅用于Windows) | iperf3 -s -R |
| -o | 重定向输出到指定文件(仅用于Windows)) | iperf3 -s -c hostname |
客户端参数
当且仅当参数包含-c(Client)时有效
| 参数 | 含义 | eg |
|---|---|---|
| -i | 指定每次报告之间的时间间隔,单位为秒 | iperf -c hostname -i 2 |
| -l | 设置读写缓冲区的长度,单位为 Byte。TCP方式默认为8KB,UDP方式默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400 | iperf -c -l 16 |
| -b | 指定UDP模式使用的带宽[K,M,G],单位bits/sec,默认值是1 Mbit/sec | iperf -c -b G |
| -u | 表示采用UDP协议发送报文,不带该参数表示采用TCP协议 | iperf -c -u |
| -t | 指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒 | iperf -c 30 |
| -A | CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度 | iperf -s -A 0 |
| -n | 指定传输数据包的字节数 | iperf3 -c hostname –n 100M |
| -w | 指定套接字缓冲区大小,在TCP方式下,此设置为TCP窗口的大小。在UDP方式下,此设置为接受UDP数据包的缓冲区大小,用来限制可以接收数据包的最大值 | iperf3 -c hostname –w 100M |
| -B | 用来绑定一个主机地址或接口,这个参数仅用于具有多个网络接口的主机。在UDP模式下,此参数用于绑定和加入一个多播组 | iperf3 -c hostname –B hostname |
| -N | 设置TCP无延时 | iperf3 -c -N |
| -M | 设置TCP最大信息段的值 | iperf3 -c hostname –M 100M |
| -V | 绑定一个IPv6地址 | iperf3 -c -V CDCD:910A:2222:5498:8475:1111:3900:2020 |
| -d | 运行双测试模式。将使服务器端反向连接到客户端 | iperf3 -c hostname –d |
| -L | 指定服务端反向连接到客户端时使用的端口。默认使用客户端连接至服务端的端口 | iperf3 -c hostname –L port |
| -r | 往复测试模式。当客户端到服务器端的测试结束时,服务器端反向连接至客户端。当客户端连接终止时,反向连接随即开始 | iperf3 -c hostname –r |
使用示例
测试环境
ubuntu服务端:192.168.50.65
windows客户端:100.88.45.33
TCP测试
基本TCP吞吐测试
1)Server端开启iperf的服务器模式,指定TCP端口:
iperf3 -s -i 1 -p 5001 -f M
2)Client端启动iperf的客户端模式,连接服务端
iperf3 -c 192.168.50.65 -i 1 -t 60 -p 5001 -f M
测试多线程TCP吞吐量
1)Server端配置参数-P
iperf3 -s -P 30 -i 1 -p 5001 -f M
2)Client端配置参数-P
iperf3 -c 192.168.50.65 -P 30 -i 1 -t 60 -p 5001 -f M
测试上下行带宽测试(双向传输)
1)Server端配置
iperf3 -s -i 1 -p 5001 -f M
2)Client端配置参数-d
iperf3 -c 192.168.50.65 -d -t 60 -f M
测试UDP吞吐量
带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
基本UDP吞吐测试
1)Server端配置
iperf3 -s -i 1 -p 5001 -f M
2)Client端配置参数-b
iperf3 -u -c 192.168.50.65 -b 100m -t 60 -p 5001 -f M
Jitter为抖动,是连续传输中的平滑平均值差。Lost为丢包数量。Total Datagrams为包数量。
测试多线程UDP吞吐量
1)Server端配置参数-P
iperf3 -s -P 30 -i 1 -p 5001 -f M
2)Client端配置参数-P
iperf3 -u -c 192.168.50.65 -b 5M -P 30 -t 60 -p 5001 -f M