1. iperf3简介
iPerf3是用于主动测试IP网络上最大可用带宽的工具。它支持时序、缓冲区、协议(TCP,UDP,SCTP与IPv4和IPv6)有关的各种参数。对于每次测试,它都会详细的带宽报告,延迟抖动和数据包丢失。
它与原始 iPerf 不共享任何代码,也不向后兼容。
它是一个C/S架构的测试工具,需要在同时运行在服务器端和客户端。
支持的平台:windows, linux, Android, MacOS X, FreeBSD, OpenBSD, iPhone/iPad等
iperf 主要测试网络以下三个方面:吞吐量、稳定性、可靠性。
iperf 的参数比较多,主要从三个对象进行罗列,分别是客户端、服务端、公共使用
执行:iperf3 -h 可以查看所有的命令信息,以下是中文信息, iPerf 3.1.2 支持的所有参数:
2. iperf3安装
2.1 Windows
下载链接:https://iperf.fr/iperf-download.php
官网直接下载
Android/iPhone/iPad安装包,下载完成后解压,使用时进入 cmd 终端,cd 到解压路径,可以找到 iperf3.exe
程序即可正常使用。
2.2 Linux
在 Ubuntu 系统中可以直接使用以下命令进行安装,或者 官网下载离线安装包:
sudo apt install -y iperf3
3. iperf3命令说明
用法:
iperf3 [-s|-c host] [options]
1.1 公共使用参数****
- -f, –format [kmKM] 报告格式: Kbits, Mbits, KBytes, MBytes。
- -i, –interval # 设置每次报告之间的时间间隔,单位为秒。如果设置为非零值,就会按照此时间间隔输出测试报告。默认值为零。
- -l, –len #[KM] 设置读写缓冲区的长度。TCP方式默认为8KB,UDP方式默认为1470字节。
- -m, –print_mss 输出TCP MSS值(通过TCP_MAXSEG支持)。MSS值一般比MTU值小40字节。
- -o, –output <filename> 将报告或错误消息输出到此指定文件。
- -p, –port # 设置端口,与服务器端的监听端口一致。默认是5001端口,与ttcp的一样。
- -u, –udp 使用UDP而不是TCP,默认是TCP
- -w, –window #[KM] 设置套接字缓冲区为指定大小。对于TCP方式,此设置为TCP窗口大小。对于UDP方式,此设置为接受UDP数据包的缓冲区大小,限制可以接受数据包的最大值。
- -B, –bind <host> bind to <host>, an interface or multicast address
- -C, –compatibility 与旧版本一起使用不会发送额外的MSG
- -M, –mss # 通过TCP_MAXSEG选项尝试设置TCP最大信息段的值。MSS值的大小通常是TCP/IP头减去40字节。在以太网中,MSS值 为1460字节(MTU1500字节)。许多操作系统不支持此选项。
- -N, –nodelay 设置TCP无延迟选项,禁用Nagle’s运算法则。通常情况此选项对于交互程序,例如telnet,是禁用的。
- -V, –IPv6Version 绑定一个IPv6地址。服务端:$ iperf -s –V客户端:$ iperf -c <Server IPv6 Address> -V注意:在1.6.3或更高版本中,指定IPv6地址不需要使用-B参数绑定,在1.6之前的版本则需要。在大多数操作系统中,将响应IPv4客户端映射的IPv4地址。
1.2 服务端参数
- -s, –server 在服务器模式下运行。
- -U, –single_udp 在单线程UDP模式下运行。
- -D, –daemon 将服务器作为守护进程运行。
1.3 客户端参数****
- -b, –bandwidth #[KM] UDP模式使用的带宽,单位bits/sec。此选项与-u选项相关。默认值是1 Mbit/sec。
- -c, –client <host> 运行Iperf的客户端模式,连接到指定的 Iperf 服务器端。
- -d, –dualtest 运行双测试模式。这将使服务器端反向连接到客户端,使用-L 参数中指定的端口(或默认使用客户端连接到服务器端的端口)。这些在操作的同时就立即完成了。如果你想要一个交互的测试,请尝试-r参数。
- -n, –num #[KM] 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000。
- -r, –tradeoff 往复测试模式。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。当客户端连接终止时,反向连接随即开始。如果需要同时进行双向测试,请尝试-d参数。
- -t, –time # 设置传输的总时间。Iperf在指定的时间内,重复的发送指定长度的数据包。默认是10秒钟。参考-l与-n选项。
- -F, –fileinput <name> 使用特定的数据流测量带宽,例如指定的文件。$ iperf -c <server address> -F <file-name>
- -I, –stdin 与-F一样,由标准输入输出文件输入数据。
- -L, –listenport # 指定服务端反向连接到客户端时使用的端口。默认使用客户端连接至服务端的端口。
- -P, –parallel # 线程数。指定客户端与服务端之间使用的线程数。默认是1线程。需要客户端与服务器端同时使用此参数。
- -T, –ttl # 出栈多播数据包的TTL值。这本质上就是数据通过路由器的跳数。默认是1,链接本地。
- -Z, –linux-congestion <algo> 设置TCP拥塞控制算法(仅限Linux)。
2. iperf3操作实例解析
2.1 运行iperf3在客户端,使用UDP协议,并设置使用的测试带宽
iperf3 -c serverIP -b 1000M -t 60 -d
`-c 为客户端运行并要指定服务端的IP地址``-b 表示使用的测试带宽``-t 表示以时间为测试结束条件进行测试,默认为 10 秒;``-d 打印出更详细的debug调试信息`
iperf3 -c 192.168.1.1 -b 1000M -t 60 -d
2.2 运行iperf3在服务器端,默认端口号为5201
iperf3 -s
2.3 运行iperf3在服务器端,如果需要指定的端口号加上-p port
iperf3 -s -p 【这里写指定的端口号】
iperf3 -s -p 8888
2.4 运行iperf3在客户端,开始带宽测试
iperf3 -c 【serverIP,这些写服务器的IP地址】
iperf3 -c 192.168.1.1
2.5 运行iperf3在客户端,设置多个并行数据流-P
iperf3 -c serverIP -P streams
iperf3 -c 192.168.1.1 -P 3
2.6 运行iperf3在客户端,反向测试(服务器端发送数据到客户端)
iperf3 -c serverIP -R
iperf3 -c 192.168.1.1 -R
3. 常见遇到的打流问题
1、server端报出端口busy
解决办法:server和client设置到其他端口在进行打流
2、client端报出iperf3:error – unable to read form stream socket:Resource temporarily unavailable
解决办法:server和client两端都是加上-B 192.168.132.xx(本地IP)
暂无评论内容