一、简介
1.iperf3是什么?
iperf3是一个测试网络带宽的工具,支持多平台。iperf3测试时由服务端和客户端构成测试。
2.iperf资料
2.1 官网
https://iperf.fr
2.2 下载地址
https://iperf.fr/iperf-download.php
2.3 使用文档
https://iperf.fr/iperf-doc.php
二、支持功能
TCP and SCTP
Measure bandwidth
Report MSS/MTU size and observed read sizes.
Support for TCP window size via socket buffers.
UDP
Client can create UDP streams of specified bandwidth.
Measure packet loss
Measure delay jitter
Multicast capable
Cross-platform: Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, NetBSD, VxWorks, Solaris,…
Client and server can have multiple simultaneous connections (-P option).
Server handles multiple connections, rather than quitting after a single test.
Can run for specified time (-t option), rather than a set amount of data to transfer (-n or -k option).
Print periodic, intermediate bandwidth, jitter, and loss reports at specified intervals (-i option).
Run the server as a daemon (-D option)
Use representative streams to test out how link layer compression affects your achievable bandwidth (-F option).
A server accepts a single client simultaneously (iPerf3) multiple clients simultaneously (iPerf2)
New: Ignore TCP slowstart (-O option).
New: Set target bandwidth for UDP and (new) TCP (-b option).
New: Set IPv6 flow label (-L option)
New: Set congestion control algorithm (-C option)
New: Use SCTP rather than TCP (–sctp option)
New: Output in JSON format (-J option).
New: Disk read test (server: iperf3 -s / client: iperf3 -c testhost -i1 -F filename)
New: Disk write tests (server: iperf3 -s -F filename / client: iperf3 -c testhost -i1)
三、下载安装
1.centos
yum install iperf3 -y
2.注意事项
客户端和服务端版本要相同,如果不相同可能会有错误。
四、使用方式
1.服务端
iperf3 -s
2.服务端参数
-s 表示服务器端;
-p 自定义端口号,默认5201;
-i 设置每次报告之间的时间间隔,单位为秒,如果设置为非零值,就会按照此时间间隔输出测试报告,默认值为零
3.客户端
iperf3.exe -c 192.168.1.2
4.客户端参数
-c 服务器的IP地址;
-p 服务器的端口号;
-t 参数可以指定传输测试的持续时间,Iperf在指定的时间内,重复的发送指定长度的数据包,默认是10秒钟.
-i 设置每次报告之间的时间间隔,单位为秒,如果设置为非零值,就会按照此时间间隔输出测试报告,默认值为零;
-w 设置套接字缓冲区为指定大小,对于TCP方式,此设置为TCP窗口大小,对于UDP方式,此设置为接受UDP数据包的缓冲区大小,限制可以接受数据包的最大值.
–logfile 参数可以将输出的测试结果储存至文件中.
-J 来输出JSON格式测试结果.
-R 反向传输,缺省iperf3使用上传模式:Client负责发送数据,Server负责接收;如果需要测试下载速度,则在Client侧使用-R参数即可.
五、使用文档
GENERAL OPTIONS | |
Command line option | Description |
-p, –port n | The server port for the server to listen on and the client to connect to. This should be the same in both client and server. Default is 5201. |
–cport n | Option to specify the client-side port. (new in iPerf 3.1) |
-f, –format [kmKM] | A letter specifying the format to print bandwidth numbers in. Supported formats are ‘k’ = Kbits/sec ‘K’ = KBytes/sec ‘m’ = Mbits/sec ‘M’ = MBytes/secThe adaptive formats choose between kilo- and mega- as appropriate. |
-i, –interval n | Sets the interval time in seconds between periodic bandwidth, jitter, and loss reports. If non-zero, a report is made every interval seconds of the bandwidth since the last report. If zero, no periodic reports are printed. Default is zero. |
-F, –file name | client-side: read from the file and write to the network, instead of using random data;server-side: read from the network and write to the file, instead of throwing the data away. |
-A, –affinity n/n,m-F | Set the CPU affinity, if possible (Linux and FreeBSD only). On both the client and server you can set the local affinity by using the n form of this argument (where n is a CPU number). In addition, on the client side you can override the server’s affinity for just that one test, using the n,m form of argument. Note that when using this feature, a process will only be bound to a single CPU (as opposed to a set containing potentialy multiple CPUs). |
-B, –bind host | Bind to host, one of this machine’s addresses. For the client this sets the outbound interface. For a server this sets the incoming interface. This is only useful on multihomed hosts, which have multiple network interfaces. |
-V, –verbose | give more detailed output |
-J, –json | output in JSON format |
–logfile file | send output to a log file. (new in iPerf 3.1) |
–d, –debug | emit debugging output. Primarily (perhaps exclusively) of use to developers. |
-v, –version | Show version information and quit. |
-h, –help | Show a help synopsis and quit. |
SERVER SPECIFIC OPTIONS | |
Command line option | Description |
-s, –server | Run iPerf in server mode. (This will only allow one iperf connection at a time) |
-D, –daemon | Run the server in background as a daemon. |
-I, –pidfilefile | write a file with the process ID, most useful when running as a daemon. (new in iPerf 3.1) |
CLIENT SPECIFIC OPTIONS | |
Command line option | Description |
-c, –client host | Run iPerf in client mode, connecting to an iPerf server running on host. |
–sctp | Use SCTP rather than TCP (Linux, FreeBSD and Solaris). (new in iPerf 3.1) |
-u, –udp | Use UDP rather than TCP. See also the -b option. |
-b, –bandwidth n[KM] | Set target bandwidth to n bits/sec (default 1 Mbit/sec for UDP, unlimited for TCP). If there are multiple streams (-P flag), the bandwidth limit is applied separately to each stream. You can also add a ’/’ and a number to the bandwidth specifier. This is called “burst mode”. It will send the given number of packets without pausing, even if that temporarily exceeds the specified bandwidth limit. |
-t, –time n | The time in seconds to transmit for. iPerf normally works by repeatedly sending an array of len bytes for time seconds. Default is 10 seconds. See also the -l, -k and -n options. |
-n, –num n[KM] | The number of buffers to transmit. Normally, iPerf sends for 10 seconds. The -n option overrides this and sends an array of len bytes num times, no matter how long that takes. See also the -l, -k and -t options. |
-k, –blockcount n[KM] | The number of blocks (packets) to transmit. (instead of -t or -n) See also the -t, -l and -n options. |
-l, –length n[KM] | The length of buffers to read or write. iPerf works by writing an array of len bytes a number of times. Default is 128 KB for TCP, 8 KB for UDP. See also the -n, -k and -t options. |
-P, –parallel n | The number of simultaneous connections to make to the server. Default is 1. |
-R, –reverse | Run in reverse mode (server sends, client receives). |
-w, –window n[KM] | Sets the socket buffer sizes to the specified value. For TCP, this sets the TCP window size. (this gets sent to the server and used on that side too) |
-M, –set-mss n | Attempt to set the TCP maximum segment size (MSS). The MSS is usually the MTU – 40 bytes for the TCP/IP header. For ethernet, the MSS is 1460 bytes (1500 byte MTU). |
-N, –no-delay | Set the TCP no delay option, disabling Nagle’s algorithm. Normally this is only disabled for interactive applications like telnet. |
-4, –version4 | only use IPv4. |
-6, –version4 | only use IPv6. |
-S, –tos n | The type-of-service for outgoing packets. (Many routers ignore the TOS field.) You may specify the value in hex with a ‘0x’ prefix, in octal with a ‘0’ prefix, or in decimal. For example, ‘0x10’ hex = ‘020’ octal = ’16’ decimal. The TOS numbers specified in RFC 1349 are: IPTOS_LOWDELAY minimize delay 0x10 IPTOS_THROUGHPUT maximize throughput 0x08 IPTOS_RELIABILITY maximize reliability 0x04 IPTOS_LOWCOST minimize cost 0x02 |
-L, –flowlabel n | Set the IPv6 flow label (currently only supported on Linux). |
-Z, –zerocopy | Use a “zero copy” method of sending data, such as sendfile(2), instead of the usual write(2). This uses much less CPU. |
-O, –omit n | Omit the first n seconds of the test, to skip past the TCP TCP slowstart period. |
-T, –title str | Prefix every output line with this string. |
-C, –linux-congestion algo | Set the congestion control algorithm (Linux only for iPerf 3.0, Linux and FreeBSD for iPerf 3.1). |
六、参考文档
https://www.cnblogs.com/saneri/p/11169926.html