什么是 iPerf / iPerf3 ?
iPerf3 是一种用于主动测量 IP 网络上可实现的最大带宽的工具。它支持调整与时间、缓冲区和协议(TCP、UDP、带有 IPv4 和 IPv6 的 SCTP)相关的各种参数。对于每个测试,它都会报告带宽、损耗和其他参数。这是一个新的实现,它与原始 iPerf 不共享任何代码,也不向后兼容。iPerf 最初由NLANR/DAST开发。iPerf3 主要由ESnet /劳伦斯伯克利国家实验室开发。它是根据三条款BSD 许可证发布的。
iPerf 功能
- TCP 和SCTP
- 测量带宽
- 报告 MSS/MTU 大小和观察到的读取大小。
- 通过套接字缓冲区支持 TCP 窗口大小。
- UDP
- 客户端可以创建指定带宽的 UDP 流。
- 测量丢包
- 测量延迟抖动
- 组播能力
- 跨平台:Windows、Linux、Android、MacOS X、FreeBSD、OpenBSD、NetBSD、VxWorks、Solaris、...
iperf通用参数
-f [k|m|K|M] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K
-i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2
-l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16 -m 显示tcp最大mtu值
-o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o c:\iperflog.txt
-p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999
-u 使用udp协议
-w 指定TCP窗口大小,默认是8KB
-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C 兼容旧版本(当server端和client端版本不一样时使用)
-M 设定TCP数据包的最大mtu值
-N 设定TCP不延时
-V 传输ipv6数据包 server专用参数
-D 以服务方式运行ipserf,eg:iperf -s -D -R 停止iperf服务,针对-D,eg:iperf -s -R
client端专用参数
-d 同时进行双向传输测试
-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000
-r 单独进行双向传输测试
-t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5
-F 指定需要传输的文件
-T 指定ttl值-s, --server 以服务器模式运行
-D, --daemon 将服务器作为守护进程运行
-I, --pidfile file 写PID文件
-1, --one-off 处理一个客户端连接,然后退出
-c, --client <host> 以客户端模式运行,连接到<host>-u, --udp 使用UDP,而不是TCP
-b, --bandwidth 带宽,单位为bits/sec (值设为0代表不限制)UDP默认为1 Mbit/sec,TCP默认为不限制
-t, --time 设置传输的总时间。Iperf在指定的时间内,重复的发送指定长度的数据包。默认是10秒钟
-n, --bytes 指定要传输的总字节数。(传输完成才停止,不管设置的传输总时间)
-k, --blockcount ] 要传输的总数据包数。(不管-t或-n参数)-l, --len 读写的缓冲区大小。TCP默认是128KB,UDP默认是8KB
eg:iperf3 -c 222.35.11.23 -l 16-P, --parallel 线程数。指定客户端与服务端之间使用的线程数;默认是1线程。需要客户端与服务器端同时使用此参数
-R, --reverse 以反向模式运行。(服务器发送数据,客户端接收数据)
-w, --window 设置窗口大小;set window size / socket buffer size
-M, --set-mss set TCP/SCTP maximum segment size (MTU - 40 bytes)
-N, --no-delay 设置TCP/SCTP不延时