admin管理员组

文章数量:1531416

2023年12月14日发(作者:)

网速测试利器-iperf3

简介

iperf3是一个网络速度测试工具,支持IPv4与IPv6,支持TCP、UDP、SCTP传输协议,可在Windows、Mac OS X、Linux、FreeBSD

等各种平台使用,是一个简单又实用的小工具。 本文介绍安装、使用iperf3 网速测试工具。

安装iperf3

在CentOS 7上使用下列命令即可安装:

yum install iperf3

MAC OS X上使用下列命令即可安装:

brew install iperf3

网络带宽测试

在使用iperf3测试时,要同时在server端与client端都各执行一个程序,让它们互相传送报文进行测试。下面的例子是在CentOS7上进行的

测试。

首先在10.23.5.66机器启动server端的程序:

iperf3 -s

接着在10.23.5.65服务器上执行client 端的程序:

iperf3 -c 10.23.5.66

在测试时server端与client端都会出现测试的数据,client端以下是测试的结果:

[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66

Connecting to host 10.23.5.66, port 5201

[ 4] local 10.23.5.65 port 10412 connected to 10.23.5.66 port 5201

[ ID] Interval Transfer Bandwidth Retr Cwnd

[ 4] 0.00-1.00 sec 114 MBytes 953 Mbits/sec 0 95.5 KBytes

[ 4] 1.00-2.00 sec 113 MBytes 948 Mbits/sec 0 95.5 KBytes

[ 4] 2.00-3.00 sec 113 MBytes 950 Mbits/sec 0 95.5 KBytes

[ 4] 3.00-4.00 sec 113 MBytes 948 Mbits/sec 0 95.5 KBytes

[ 4] 4.00-5.00 sec 113 MBytes 950 Mbits/sec 0 95.5 KBytes

[ 4] 5.00-6.00 sec 113 MBytes 948 Mbits/sec 0 95.5 KBytes

[ 4] 6.00-7.00 sec 113 MBytes 948 Mbits/sec 0 95.5 KBytes

[ 4] 7.00-8.00 sec 113 MBytes 950 Mbits/sec 0 95.5 KBytes

[ 4] 8.00-9.00 sec 113 MBytes 948 Mbits/sec 0 95.5 KBytes

[ 4] 9.00-10.00 sec 113 MBytes 950 Mbits/sec 0 95.5 KBytes

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval Transfer Bandwidth Retr

[ 4] 0.00-10.00 sec 1.10 GBytes 949 Mbits/sec 0 sender

[ 4] 0.00-10.00 sec 1.10 GBytes 949 Mbits/sec receiver

iperf Done.

从打印的内容看,缺省参数下,Client将连接Server端的5201端口,持续向Server端发送数据,并统计出每秒传输的字节数、带宽、出现

报文重传的次数、拥塞窗口(Congestion Window)大小,整个测试将持续10秒钟;最后将汇总10秒的平均数据,并给出发送和接收端

的统计。

接下来分析一下Server的测试输出结果:

[jinguang1@localhost ~]$ iperf3 -s

warning: this system does not seem to support IPv6 - trying IPv4

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

Accepted connection from 10.23.5.65, port 10410

[ 5] local 10.23.5.66 port 5201 connected to 10.23.5.65 port 10412

[ ID] Interval Transfer Bandwidth

[ 5] 0.00-1.00 sec 109 MBytes 913 Mbits/sec

[ 5] 1.00-2.00 sec 113 MBytes 948 Mbits/sec

[ 5] 2.00-3.00 sec 113 MBytes 949 Mbits/sec

[ 5] 3.00-4.00 sec 113 MBytes 949 Mbits/sec

[ 5] 4.00-5.00 sec 113 MBytes 949 Mbits/sec

[ 5] 5.00-6.00 sec 113 MBytes 949 Mbits/sec

[ 5] 6.00-7.00 sec 113 MBytes 949 Mbits/sec

[ 5] 7.00-8.00 sec 113 MBytes 949 Mbits/sec

[ 5] 8.00-9.00 sec 113 MBytes 949 Mbits/sec

[ 5] 9.00-10.00 sec 113 MBytes 949 Mbits/sec

[ 5] 10.00-10.04 sec 4.29 MBytes 947 Mbits/sec

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval Transfer Bandwidth

[ 5] 0.00-10.04 sec 0.00 Bytes 0.00 bits/sec sender

[ 5] 0.00-10.04 sec 1.10 GBytes 945 Mbits/sec receiver

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

Server端缺省监听IPv6地址和端口,如果未配置IPv6,会尝试IPv4。日志显示接收了来自10.23.5.65,源端口未10410的测试请求。

Client端连续进行了10秒的测试,并显示了每秒传输的字节数,带宽信息;测试结束后会汇总发送和接收的统计信息。在Client连接关闭之

后会继续侦听5201端口。

iperf3 进阶指令

iperf3 所提供的选项非常多,以下介绍一些常用的参数。

1. 测试时间和输出统计数据间隔

-t参数可以指定传输测试的持续时间,而-i可以指定统计输出的间隔时间,如需要持续测试一个小时,每10秒钟打印一次输出结果:

iperf3 -c server_ip -i 10 -t 3600

2. 储存测试结果

--logfile参数可以将输出的测试结果储存至文件中:

iperf3 -c server_ip --logfile

3. 设定侦听端口

iperf3缺省使用5201端口,如果需要指定,可以使用-p参数。这需要在Server和Client侧都需要进行指定,如使用12345端口:

#server侧

iperf3 -s -p 12345

#client侧

iperf3 -c server_ip -p 12345

4. JSON 格式输出

如果需要做一些自动化方面测试和管理工作,需要读取格式化的测试结果,那可以选择-J参数,来输出JSON格式测试结果。

[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66 -J -t 2

{

"start": {

"connected": [{

"socket": 4,

"local_host": "10.23.5.65",

"local_port": 13346,

"remote_host": "10.23.5.66",

"remote_port": 5201

}],

"version": "iperf 3.1.7",

"system_info": "Linux omain 7.x86_64 #1 SMP Mon Jul 16 16:29:36 UTC 2018 x86_64",

"timestamp": {

"time": "Fri, 07 Sep 2018 01:31:45 GMT",

"timesecs": 1536283905

},

"connecting_to": {

"host": "10.23.5.66",

"port": 5201

},

"cookie": "omain.1536283905.522",

"tcp_mss_default": 1460,

"test_start": {

"protocol": "TCP",

"num_streams": 1,

"blksize": 131072,

"omit": 0,

"duration": 2,

"bytes": 0,

"blocks": 0,

"reverse": 0

}

},

"intervals": [{

"streams": [{

"socket": 4,

"start": 0,

"end": 1.000059,

"seconds": 1.000059,

"bytes": 118546160,

"bits_per_second": 948313208.319058,

"retransmits": 0,

"snd_cwnd": 97820,

"rtt": 508,

"omitted": false

}],

"sum": {

"start": 0,

"end": 1.000059,

"seconds": 1.000059,

"bytes": 118546160,

"bits_per_second": 948313208.319058,

"retransmits": 0,

"omitted": false

}

}, {

"streams": [{

"socket": 4,

"start": 1.000059,

"end": 2.000063,

"seconds": 1.000004,

"bytes": 117912520,

"bits_per_second": 943296336.710671, "bits_per_second": 943296336.710671, "retransmits": 0, "snd_cwnd": 97820, "rtt": 499, "omitted": false }], "sum": { "start": 1.000059, "end": 2.000063, "seconds": 1.000004, "bytes": 117912520, "bits_per_second": 943296336.710671, "retransmits": 0, "omitted": false } }], "end": { "streams": [{ "sender": { "socket": 4, "start": 0, "end": 2.000063, "seconds": 2.000063, "bytes": 236458680, "bits_per_second": 945804841.588347, "retransmits": 0, "max_snd_cwnd": 97820, "max_rtt": 508, "min_rtt": 499, "mean_rtt": 503 }, "receiver": { "socket": 4, "start": 0, "end": 2.000063, "seconds": 2.000063, "bytes": 235998780, "bits_per_second": 943965299.700324 } }], "sum_sent": { "start": 0, "end": 2.000063, "seconds": 2.000063, "bytes": 236458680, "bits_per_second": 945804841.588347, "retransmits": 0 }, "sum_received": { "start": 0, "end": 2.000063, "seconds": 2.000063, "bytes": 235998780, "bits_per_second": 943965299.700324 }, "cpu_utilization_percent": { "host_total": 3.365885, "host_user": 0.294900, "host_system": 3.447099, "remote_total": 0.054653, "remote_user": 0.003388, "remote_system": 0.049958 }, "sender_tcp_congestion": "cubic", "receiver_tcp_congestion": "cubic" }

}

}

5. 使用多条连接进行测试

-P参数可以指定同时连接测试的数量,缺省使用一条连接。

[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66 -P 2 -t 2

Connecting to host 10.23.5.66, port 5201

[ 4] local 10.23.5.65 port 13652 connected to 10.23.5.66 port 5201

[ 6] local 10.23.5.65 port 13654 connected to 10.23.5.66 port 5201

[ ID] Interval Transfer Bandwidth Retr Cwnd

[ 4] 0.00-1.00 sec 56.8 MBytes 477 Mbits/sec 0 65.6 KBytes

[ 6] 0.00-1.00 sec 56.9 MBytes 478 Mbits/sec 0 67.0 KBytes

[SUM] 0.00-1.00 sec 114 MBytes 954 Mbits/sec 0

- - - - - - - - - - - - - - - - - - - - - - - - -

[ 4] 1.00-2.00 sec 56.5 MBytes 474 Mbits/sec 0 65.6 KBytes

[ 6] 1.00-2.00 sec 56.5 MBytes 474 Mbits/sec 0 67.0 KBytes

[SUM] 1.00-2.00 sec 113 MBytes 948 Mbits/sec 0

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval Transfer Bandwidth Retr

[ 4] 0.00-2.00 sec 113 MBytes 475 Mbits/sec 0 sender

[ 4] 0.00-2.00 sec 113 MBytes 474 Mbits/sec receiver

[ 6] 0.00-2.00 sec 113 MBytes 476 Mbits/sec 0 sender

[ 6] 0.00-2.00 sec 113 MBytes 474 Mbits/sec receiver

[SUM] 0.00-2.00 sec 227 MBytes 951 Mbits/sec 0 sender

[SUM] 0.00-2.00 sec 226 MBytes 949 Mbits/sec receiver

iperf Done.

6. 选择使用的传输协议

iperf3缺省使用TCP作为传输协议,如果使用UDP则使用-u参数,使用SCTP 则使用--sctp参数。

7. 反向传输

缺省iperf3使用上传模式:Client负责发送数据,Server负责接收;如果需要测试下载速度,则在Client侧使用-R参数即可。

本文标签: 测试使用输出传输端口