Administrator
发布于 2023-06-14 / 4 阅读 / 0 评论 / 0 点赞

Iperf3 网络带宽测速工具

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


评论