Linux网络性能评估工具iperf CHARIOT测试网络吞吐量
Posted kn-zheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络性能评估工具iperf CHARIOT测试网络吞吐量相关的知识,希望对你有一定的参考价值。
网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具,本节将详细介绍一下Iperf的使用。
1、 Iperf能做什么
Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。
下面介绍Iperf的主要功能。
(1)TCP方面
q 测试网络带宽。
q 支持多线程,在客户端与服务端支持多重连接。
q 报告MSS/MTU值的大小。
q 支持TCP窗口值自定义并可通过套接字缓冲。
(2)UDP方面
q 可以设置指定带宽的UDP数据流
q 可以测试网络抖动值、丢包数
q 支持多播测试
q 支持多线程,在客户端与服务端支持多重连接。
二、 Iperf的安装与使用
iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。在工作模式上,iperf运行于服务器、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起连接会话,因此要使用iperf,需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。
1.安装iperf
iperf支持Win32、Linux、FreeBSD、MacOS X、OpenBSD和Solaris等多种操作系统平台。读者可以从iperf官方主页http://iperf.fr/ 下载各种版本,目前最新的版本是iperf3.0,这里下载的软件包为iperf-3.0.tar.gz,安装过程如下:
[root@ networkserver ~]# tar zxvf iperf-3.0.tar.gz
[root@ networkserver ~]# cd iperf
[root@ networkserver iperf]# make
[root@ networkserver iperf]# make install
这样,iperf就安装完成了。
2.iperf参数介绍
在完成iperf安装后,执行“iperf3 –h”即可显示iperf的详细用法。iperf的命令行选项共分为三类,分别是客户端与服务器端公用选项、服务器端专用选项和客户端专用选项,下面对常用的选项进行介绍。
服务器端专用选项的含义如表1所示。
表1 服务器端专用选项的含义
命令行参数 |
含义描述 |
-s |
将iperf以server模式启动,例如:iperf3 –s,iperf3默认启动的监听端口为5201,可以通过“-p”选项修改默认监听端口 |
-D |
将iperf作为后台守护进程运行,例如:iperf3 -s -D |
客户端专用选项的含义如表2.5所示。
表2 客户端专用选项的含义
命令行参数 |
含义描述 |
-c |
将iperf以client模式启动 例如:iperf3 -c 192.168.12.168,其中192.168.12.168是server端的IP地址 |
-u |
指定使用UDP协议 |
-b [K|M|G] |
指定UDP模式使用的带宽,单位bits/sec。此选项与“-u”选项相关。默认值是1 Mbit/sec |
-t |
指定传输数据包的总时间。iperf将在指定的时间内,重复发送指定长度的数据包。默认是10秒钟 |
-n [K|M|G] |
指定传输数据包的字节数,例如:iperf3 -c 192.168.12.168 –n 100M |
-l |
指定读写缓冲区的长度。TCP方式默认大小为8KB,UDP方式默认大小为1470字节 |
-P |
指定客户端与服务端之间使用的线程数。默认是1个线程。需要客户端与服务器端同时使用此参数 |
-R |
切换数据发送接收模式,例如默认客户端发送,服务器端接收,设置此参数后,数据流向变为客户端接收,服务器端发送 |
-w |
指定套接字缓冲区大小,在TCP方式下,此设置为TCP窗口的大小。在UDP方式下,此设置为接受UDP数据包的缓冲区大小,用来限制可以接收数据包的最大值 |
-B |
用来绑定一个主机地址或接口,这个参数仅用于具有多个网络接口的主机。在UDP模式下,此参数用于绑定和加入一个多播组 |
-M |
设置TCP最大信息段的值 |
-N |
设置TCP无延时 |
客户端与服务器端公用选项的含义如表3所示。
表3 客户端与服务器端公用选项的含义
命令行参数 |
含义描述 |
指定带宽输出单位,“[k|m|g|K|M|G]”分别表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes显示输出结果,默认以Mbits为单位,例如:iperf3 -c 192.168.12.168 -f M |
|
-p |
指定服务器端使用的端口或客户端所连接的端口,例如: iperf3 -s -p 9527; iperf3 -c 192.168.12.168 -p 9527 |
-i |
指定每次报告之间的时间间隔,单位为秒。如果设置为非零值,就会按照此时间间隔输出测试报告。默认值为1。 例如:iperf3 -c 192.168.12.168 -i 2 |
-F |
指定文件作为数据流进行带宽测试。 例如:iperf3 -c 192.168.12.168 -F web-ixdba.tar.gz |
2.3.3 Iperf应用实例
要使用iperf,首先要启用一个服务端,这里假定服务端的IP地址为192.168.12.168,在此服务器上运行“iperf3 -s”即可开启iperf的服务器模式。在默认情况下,iperf3将在服务端打开一个5201监听端口,此时就可以将另一台服务器作为客户端执行iperf功能测试了。
1.测试TCP吞吐量
为了确定网卡的最大吞吐量,可以在任意客户端运行iperf命令,iperf将尝试从客户端尽可能快地向服务端发送数据请求,并且会输出发送的数据量和网卡平均带宽值。图1是一个最简单的带宽测试命令。
图1通过iperf测试网络带宽利用率
从图1可以看出,iperf默认的运行时间是10秒钟,每隔一秒钟输出一次传输状态,同时还可以看到每秒钟传输的数据量在112MB左右,刚好与“Bandwidth”列的值对应起来,网卡的带宽速率维持在941Mbits/sec左右,而测试的服务器是千兆网卡,这个测试值也基本合理。在输出的最后,iperf还给出了总的数据发送、接收量,并给出了带宽速率平均值,通过这些值,基本可以判断网络带宽是否正常,网络传输状态是否稳定。
iperf提供很多参数,可以多角度、全方位地测试网络带宽利用率,例如,要改变iperf运行的时间和输出频率,可以通过“-t”和“-i”参数来实现,如图2所示。
图2 添加“-t”和“-i”参数后的iperf输出
从图2 可以看出,输出状态的间隔变为每5秒钟一次,总共执行测试时间为20秒,测试的带宽速率仍然保持在941Mbits/sec左右,唯一变化的是失败重传次数增加了。
为了模拟大量的数据传输,也可以指定要发送的数据量,这可以通过“-n”参数来实现。在指定“-n”参数后,“-t”参数失效,iperf在传输完毕指定大小的数据包后,自动结束,如图3所示。
图3 iperf客户端通过“-n”参数指定要传输的数据量
图3的例子是指定发送一个5GB左右的数据包,并且每隔10秒钟输出一次传输状态,从这个输出可以看出,当失败重传次数较多时,传输速率急速下降。
有时候,为了模拟更真实的TCP应用,iperf客户端允许从一个特定的文件发送数据,这可以通过“-F”参数实现,如图4所示。
图4 iperf客户端通过“-F”参数指定文件来发送数据
在图4的例子中,通过“-F”参数指定了一个webdata.tar.gz文件作为iperf要传输的数据,在使用此参数时,需要同时指定一个“-t”参数来设置要测试传输的时间,这个时间尽量设置长一些,因为在默认传输时间10秒内,这个文件可能还没有传完。
在使用iperf进行网络带宽测试时,如果没有指定发送方式,iperf客户端只会使用一个单一的线程,而iperf是支持多线程的,可以使用iperf提供的“-P”参数来设置多线程的数目,通过使用多线程,可以在一定程度上增加网络的吞吐量。
下面通过两个例子进行简单对比,图5是iperf使用单线程传输1.86GBytes数据所消耗的时间和带宽使用情况。为了速率单位统一,这里使用“-f”参数将输出结果都通过MBytes来显示。
图5 iperf在单线程模式下的传输时间和传输速率
从图5中可以看出,传输1.86GBytes的数据消耗了17秒的时间,平均带宽速率为112MBytes/sec(注意单位).下面再看看使用多线程后,iperf传输同样大小数据量所消耗的时间和平均带宽速率,如图6所示。
图6 iperf使用多线程后的数据传输状态
这里通过“-P”参数开启了2个多线程,从传输时间上看,传输1.86GBytes的数据,消耗时间为10.79秒,比之前单线程的传输时间少了近7秒钟,在平均带宽速率上,从之前单线程的112MBytes/sec提高到177MBytes/sec,从这个结果可以看出,多线程对网络传输性能的提高不小。
2 . 测试UDP丢包和延迟
iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。通过iperf的“-u”参数即可测试UDP应用的传输性能,图7测试的是在iperf客户端传输100MB的UDP数据包的输出结果.:
图7 iperf传输100MB的UDP数据包的输出结果
在图7中,重点关注虚线下的一段内容,在这段输出中,“Jitter”列表示抖动时间,或者称为传输延迟,“Lost/Total”列表示丢失的数据报和总的数据报数量,后面的0.33%是平均丢包的比率,“Datagrams”列显示的是总共传输数据报的数量。
这个输出结果过于简单,要了解更详细的UDP丢包和延时信息,可以在iperf服务端查看,因为在客户端执行传输测试的同时,服务端也会同时显示传输状态,如图8所示。
图8 iperf服务端显示的UDP传输状态
在这个输出中,详细记录了在传输过程中,每个阶段的传输延时和丢包率,在UDP应用中随着传输数据的增大,丢包率和延时也随之增加。对于延时和丢包可以通过改变应用程序来缓解或修复,例如视频流应用,可以通过缓存数据的方式而可以容忍更大的延时。
利用IXCHARIOT进行网络测速
iperf网络新能评估
什么是网络性能评估
网络新能评估是指检测网络带宽的使用率,最大化利用网络带宽,由于网络设计不合理、网络安全存在漏洞,会导致网络利用率低。iperf正是发现这种问题的网络测试工具。
iperf简介
iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具。可以用来测量网络带宽和网络质量,提供网络延迟抖动、数据包丢失、最大传输单元等统计信息,可以根据这些统计信息判断网络性能问题,定位网络瓶颈。
iperf的主要功能
(1)TCP方面
测试网络带宽
支持多线程,在客户端与服务器端支持多连接
报告MSS/MTU值
支持TCP窗口值得定义并通过套接字缓冲
(2)UDP方面
可以设置指定带宽的UDP数据流
可以测试网络抖动、丢包数
支持多播测试
支持多线程,在客户端与服务器端支持多连接
[root@node2 ~]# yum install -y iperf3
参数
服务器端参数
命令行参数 | 参数含义 |
-s | 以服务端模式启动,默认启动监听端口为5201,可以通过-p选项指定监听端口 |
-D | 以守护进程启动,与-s选项联用 |
客户端参数
客户端参数 | 参数含义 |
-c | 以客户端模式启动iperf,例如:iperf -c 10.0.0.10,其中10.0.0.10位服务器端地址 |
-u | 使用UDP协议 |
-b[kmgKMG] | 指定UDP模式使用的带宽。单位bit/sec,与-u选项相关,默认是1Mbit/sec |
-t | 指定数据包传输的总时间,iperf在指定时间内,重复发送指定长度的数据包 |
-n[kmgKMG] | 指定传输数据包的字节数,例如:iperf -c 10.0.0.10 -n 100M |
-l | 指定读写缓冲区长度。 TCP方式默认128K UDP方式默认大小1470 |
-P,--parallel | 指定客户端和服务端之间使用的线程数,默认1个线程。 需要客户端和服务端同时使用此参数 |
-R | 切换数据发送,接收模式 例如,客户端发送,服务端接收,设置此参数后,变为服务端发送,客户端接收 |
-w[KM] | 指定套接字缓冲区大小 在TCP模式下,此设置为TCP窗口的大小。 在UDP模式下,此参数为接受UDP数据包的缓冲大小,用来限制可以接收数据包的最大值 |
-B | 绑定一个主机地址或接口,此参数仅用于具有多个网络接口的主机。 在UDP模式下,此参数用于绑定和加入一个多播组 |
-M | 设置TCP最大信息段的值 |
-N | 设置TCP无延迟 |
公共参数
命令行参数 | 参数含义 |
-f,[kmgKMG] | 指定带宽输出单位,分别表示为Kbits, Mbits, KBytes, MBytes,GBytes,默认是MBytes 例如:iperf -c 10.0.0.10 -f M |
-p |
指定服务端使用的端口或客户端连接的端口,如: iperf -c 10.0.0.10 -p 9527 |
-i | 指定每次报告生成的时间间隔。单位:秒 |
-F |
指定文件作为数据源进行带宽测试,例如: iperf -c 10.0.0.10 -F web-ixdba.tar.gz |
应用举例
服务端启动iperf3
[root@node2 ~]# iperf3 -s 10.0.0.52 ----------------------------------------------------------- Server listening on 5201 -----------------------------------------------------------
测试tcp吞吐量
在任意客户端执行iperf命令,将从客户端发送数据到服务端。输出发送的数据量和网卡平均带宽。
客户端运行结果
[root@node03 ~]# iperf3 -c 10.0.0.52 Connecting to host 10.0.0.52, port 5201 [ 4] local 10.0.0.53 port 33524 connected to 10.0.0.52 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 362 MBytes 3.04 Gbits/sec 0 1.29 MBytes [ 4] 1.00-2.00 sec 342 MBytes 2.87 Gbits/sec 73 1.41 MBytes [ 4] 2.00-3.00 sec 421 MBytes 3.53 Gbits/sec 0 1.55 MBytes [ 4] 3.00-4.00 sec 411 MBytes 3.45 Gbits/sec 0 1.69 MBytes [ 4] 4.00-5.00 sec 429 MBytes 3.59 Gbits/sec 0 1.82 MBytes [ 4] 5.00-6.00 sec 432 MBytes 3.64 Gbits/sec 20 1.38 MBytes [ 4] 6.00-7.00 sec 442 MBytes 3.71 Gbits/sec 0 1.57 MBytes [ 4] 7.00-8.00 sec 446 MBytes 3.74 Gbits/sec 0 1.71 MBytes [ 4] 8.00-9.00 sec 436 MBytes 3.66 Gbits/sec 0 1.82 MBytes [ 4] 9.00-10.00 sec 405 MBytes 3.40 Gbits/sec 22 1.39 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 4.03 GBytes 3.46 Gbits/sec 115 sender [ 4] 0.00-10.00 sec 4.03 GBytes 3.46 Gbits/sec receiver iperf Done.
服务端结果
[root@node2 ~]# iperf3 -s 10.0.0.52 ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 10.0.0.53, port 33522 [ 5] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 33524 [ ID] Interval Transfer Bandwidth [ 5] 0.00-1.00 sec 345 MBytes 2.89 Gbits/sec [ 5] 1.00-2.00 sec 344 MBytes 2.89 Gbits/sec [ 5] 2.00-3.00 sec 417 MBytes 3.50 Gbits/sec [ 5] 3.00-4.00 sec 416 MBytes 3.49 Gbits/sec [ 5] 4.00-5.00 sec 425 MBytes 3.56 Gbits/sec [ 5] 5.00-6.00 sec 435 MBytes 3.65 Gbits/sec [ 5] 6.00-7.00 sec 441 MBytes 3.70 Gbits/sec [ 5] 7.00-8.00 sec 445 MBytes 3.72 Gbits/sec [ 5] 8.00-9.00 sec 438 MBytes 3.68 Gbits/sec [ 5] 9.00-10.00 sec 408 MBytes 3.43 Gbits/sec [ 5] 10.00-10.04 sec 13.6 MBytes 2.74 Gbits/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 4.03 GBytes 3.45 Gbits/sec receiver
运行结果说明
第一行说明了服务器端地址和端口 第二行为客户端连接服务端使用的地址和端口 第三行之后: Interval 表示传输数据的时间间隔 Transfer 每秒传输的数据量 Bandwidth 传输数据使用的网络带宽 Retr 重传次数 Cwnd 不清楚干嘛的 分割线之后的说明了本次测试的发送端和接收端概要 本次测试结果说明:10秒内,客户端发送了4.03 GBytes数据,服务端接收了4.03 GBytes,客户端重发了115次?总带宽3.46 Gbits/sec
修改测试频率 -t -i
[root@node03 ~]# iperf3 -c 10.0.0.52 -t 20 -i 5 Connecting to host 10.0.0.52, port 5201 [ 4] local 10.0.0.53 port 33532 connected to 10.0.0.52 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-5.00 sec 2.14 GBytes 3.67 Gbits/sec 62 1.76 MBytes [ 4] 5.00-10.00 sec 2.19 GBytes 3.77 Gbits/sec 47 1.83 MBytes [ 4] 10.00-15.00 sec 2.20 GBytes 3.78 Gbits/sec 27 1.82 MBytes [ 4] 15.00-20.00 sec 2.18 GBytes 3.74 Gbits/sec 52 1.76 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-20.00 sec 8.71 GBytes 3.74 Gbits/sec 188 sender [ 4] 0.00-20.00 sec 8.71 GBytes 3.74 Gbits/sec receiver iperf Done. 20秒内,没5秒输出一次结果,可以看到唯一变化的是重传次数增加了
使用-n参数指定传输数据量
[root@node03 ~]# iperf3 -c 10.0.0.52 -n 5000000000 -i 10 Connecting to host 10.0.0.52, port 5201 [ 4] local 10.0.0.53 port 33544 connected to 10.0.0.52 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-10.00 sec 3.85 GBytes 3.31 Gbits/sec 67 1.80 MBytes [ 4] 10.00-12.01 sec 828 MBytes 3.46 Gbits/sec 22 1.45 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-12.01 sec 4.66 GBytes 3.33 Gbits/sec 89 sender [ 4] 0.00-12.01 sec 4.66 GBytes 3.33 Gbits/sec receiver
可以看到,当一次传输5G数据的时候,失败重传次数增多了,传输速率下降
-P选项开启多线程处理
默认的iperf使用单线程传输数据,下面通过例子进行对比单线程和多线程
(1)单线程
[root@node2 ~]# iperf3 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 10.0.0.53, port 39656 [ 5] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 39658 [ ID] Interval Transfer Bandwidth [ 5] 0.00-1.00 sec 347 MBytes 2.91 Gbits/sec [ 5] 1.00-2.00 sec 410 MBytes 3.44 Gbits/sec [ 5] 2.00-3.00 sec 368 MBytes 3.09 Gbits/sec [ 5] 3.00-4.00 sec 367 MBytes 3.08 Gbits/sec [ 5] 4.00-5.00 sec 425 MBytes 3.57 Gbits/sec [ 5] 5.00-6.00 sec 393 MBytes 3.30 Gbits/sec [ 5] 6.00-7.00 sec 385 MBytes 3.23 Gbits/sec [ 5] 7.00-8.00 sec 360 MBytes 3.02 Gbits/sec [ 5] 8.00-9.00 sec 400 MBytes 3.36 Gbits/sec [ 5] 9.00-10.00 sec 371 MBytes 3.11 Gbits/sec [ 5] 10.00-11.00 sec 335 MBytes 2.81 Gbits/sec [ 5] 11.00-12.00 sec 379 MBytes 3.18 Gbits/sec [ 5] 12.00-12.59 sec 227 MBytes 3.22 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth [ 5] 0.00-12.59 sec 0.00 Bytes 0.00 bits/sec sender [ 5] 0.00-12.59 sec 4.66 GBytes 3.18 Gbits/sec receiver
[root@node03 ~]# iperf3 -c 10.0.0.52 -i 10 -f M -n 5000000000 Connecting to host 10.0.0.52, port 5201 [ 4] local 10.0.0.53 port 39658 connected to 10.0.0.52 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-10.00 sec 3.75 GBytes 384 MBytes/sec 80 1.64 MBytes [ 4] 10.00-12.55 sec 928 MBytes 364 MBytes/sec 53 1.56 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-12.55 sec 4.66 GBytes 380 MBytes/sec 133 sender [ 4] 0.00-12.55 sec 4.66 GBytes 380 MBytes/sec receiver iperf Done.
我们使用-f选项指定了传输结果以MBytes/sec来展示,从上面结果可以看出传输5GB数据用了12.55秒,平均带宽速率为380 MBytes/sec,下面为多线程时iperf的总体概览:
服务端 ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 10.0.0.53, port 39660 [ 5] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 39662 [ 7] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 39664 [ ID] Interval Transfer Bandwidth [ 5] 0.00-1.00 sec 207 MBytes 1.74 Gbits/sec [ 7] 0.00-1.00 sec 187 MBytes 1.57 Gbits/sec [SUM] 0.00-1.00 sec 394 MBytes 3.30 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 1.00-2.00 sec 198 MBytes 1.66 Gbits/sec [ 7] 1.00-2.00 sec 223 MBytes 1.87 Gbits/sec [SUM] 1.00-2.00 sec 420 MBytes 3.53 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 2.00-3.00 sec 221 MBytes 1.85 Gbits/sec [ 7] 2.00-3.00 sec 229 MBytes 1.92 Gbits/sec [SUM] 2.00-3.00 sec 449 MBytes 3.76 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 3.00-4.00 sec 201 MBytes 1.69 Gbits/sec [ 7] 3.00-4.00 sec 244 MBytes 2.05 Gbits/sec [SUM] 3.00-4.00 sec 445 MBytes 3.73 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 4.00-5.00 sec 242 MBytes 2.03 Gbits/sec [ 7] 4.00-5.00 sec 218 MBytes 1.83 Gbits/sec [SUM] 4.00-5.00 sec 460 MBytes 3.87 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 5.00-6.00 sec 254 MBytes 2.13 Gbits/sec [ 7] 5.00-6.00 sec 196 MBytes 1.65 Gbits/sec [SUM] 5.00-6.00 sec 450 MBytes 3.78 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 6.00-7.00 sec 213 MBytes 1.79 Gbits/sec [ 7] 6.00-7.00 sec 217 MBytes 1.82 Gbits/sec [SUM] 6.00-7.00 sec 431 MBytes 3.61 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 7.00-8.00 sec 206 MBytes 1.73 Gbits/sec [ 7] 7.00-8.00 sec 237 MBytes 1.99 Gbits/sec [SUM] 7.00-8.00 sec 443 MBytes 3.72 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 8.00-9.00 sec 183 MBytes 1.53 Gbits/sec [ 7] 8.00-9.00 sec 204 MBytes 1.71 Gbits/sec [SUM] 8.00-9.00 sec 387 MBytes 3.24 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 9.00-10.00 sec 195 MBytes 1.64 Gbits/sec [ 7] 9.00-10.00 sec 243 MBytes 2.04 Gbits/sec [SUM] 9.00-10.00 sec 439 MBytes 3.67 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 10.00-10.98 sec 209 MBytes 1.80 Gbits/sec [ 7] 10.00-10.98 sec 237 MBytes 2.04 Gbits/sec [SUM] 10.00-10.98 sec 446 MBytes 3.84 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth [ 5] 0.00-10.98 sec 0.00 Bytes 0.00 bits/sec sender [ 5] 0.00-10.98 sec 2.27 GBytes 1.78 Gbits/sec receiver [ 7] 0.00-10.98 sec 0.00 Bytes 0.00 bits/sec sender [ 7] 0.00-10.98 sec 2.38 GBytes 1.86 Gbits/sec receiver [SUM] 0.00-10.98 sec 0.00 Bytes 0.00 bits/sec sender [SUM] 0.00-10.98 sec 4.65 GBytes 3.64 Gbits/sec receiver 客户端 [root@node03 ~]# iperf3 -c 10.0.0.52 -i 10 -f M -n 5000000000 -P 2 Connecting to host 10.0.0.52, port 5201 [ 4] local 10.0.0.53 port 39662 connected to 10.0.0.52 port 5201 [ 6] local 10.0.0.53 port 39664 connected to 10.0.0.52 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-10.00 sec 2.08 GBytes 213 MBytes/sec 245 641 KBytes [ 6] 0.00-10.00 sec 2.16 GBytes 221 MBytes/sec 248 819 KBytes [SUM] 0.00-10.00 sec 4.24 GBytes 434 MBytes/sec 493 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 10.00-10.94 sec 201 MBytes 215 MBytes/sec 0 834 KBytes [ 6] 10.00-10.94 sec 229 MBytes 244 MBytes/sec 0 997 KBytes [SUM] 10.00-10.94 sec 430 MBytes 460 MBytes/sec 0 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.94 sec 2.28 GBytes 213 MBytes/sec 245 sender [ 4] 0.00-10.94 sec 2.27 GBytes 213 MBytes/sec receiver [ 6] 0.00-10.94 sec 2.38 GBytes 223 MBytes/sec 248 sender [ 6] 0.00-10.94 sec 2.38 GBytes 223 MBytes/sec receiver [SUM] 0.00-10.94 sec 4.66 GBytes 436 MBytes/sec 493 sender [SUM] 0.00-10.94 sec 4.65 GBytes 436 MBytes/sec receiver iperf Done.
可以看到传输时间减少了2s,传输速率上也提高到436 MBytes/sec
测试UDP传输丢包和延迟
iperf可以用于UDP协议的数据包传输测试,但由于UDP协议是非面向连接协议,不提供可靠的传输服务,对UDP传输不关注传输速度,只关注丢包率和延迟。
使用-u选项测试UDP协议
客户端结果展示
[root@node03 ~]# iperf3 -c 10.0.0.52 -u -b 100M -f M -i 3 Connecting to host 10.0.0.52, port 5201 [ 4] local 10.0.0.53 port 52036 connected to 10.0.0.52 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-3.00 sec 34.8 MBytes 11.6 MBytes/sec 25210 [ 4] 3.00-6.00 sec 35.9 MBytes 12.0 MBytes/sec 25962 [ 4] 6.00-9.00 sec 35.6 MBytes 11.9 MBytes/sec 25814 [ 4] 9.00-10.00 sec 12.0 MBytes 12.0 MBytes/sec 8658
- - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 118 MBytes 11.8 MBytes/sec 0.103 ms 0/85644 (0%) [ 4] Sent 85644 datagrams iperf Done.
我们重点关注虚线以下内容
Jitter 表示抖动时间或者网络延迟
Lost/Total 分别表示丢包数量和总数据包数量,百分数表示平均丢包比率
Datagrams 总的数据包数量
下面是服务端结果
Server listening on 5201 ----------------------------------------------------------- Accepted connection from 10.0.0.53, port 39666 [ 5] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 52036 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 5] 0.00-1.00 sec 11.1 MBytes 92.9 Mbits/sec 0.018 ms 0/8021 (0%) [ 5] 1.00-2.00 sec 11.8 MBytes 99.4 Mbits/sec 0.119 ms 0/8581 (0%) [ 5] 2.00-3.00 sec 11.9 MBytes 99.7 Mbits/sec 0.018 ms 0/8608 (0%) [ 5] 3.00-4.00 sec 11.9 MBytes 100 Mbits/sec 0.018 ms 0/8635 (0%) [ 5] 4.00-5.00 sec 12.0 MBytes 101 Mbits/sec 0.098 ms 0/8702 (0%) [ 5] 5.00-6.00 sec 11.9 MBytes 100 Mbits/sec 0.017 ms 0/8625 (0%) [ 5] 6.00-7.00 sec 11.8 MBytes 99.1 Mbits/sec 0.094 ms 0/8562 (0%) [ 5] 7.00-8.00 sec 12.0 MBytes 101 Mbits/sec 0.018 ms 0/8710 (0%) [ 5] 8.00-9.00 sec 11.8 MBytes 99.0 Mbits/sec 0.020 ms 0/8542 (0%) [ 5] 9.00-10.00 sec 12.0 MBytes 100 Mbits/sec 0.103 ms 0/8658 (0%) [ 5] 10.00-10.04 sec 0.00 Bytes 0.00 bits/sec 0.103 ms 0/0 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 5] 0.00-10.04 sec 0.00 Bytes 0.00 bits/sec 0.103 ms 0/85644 (0%) ----------------------------------------------------------- Server listening on 5201 -----------------------------------------------------------
对于丢包和延迟可以通过改变应用程序来缓解,通过增加缓存的方式可以容忍更大的延迟。
以上是关于Linux网络性能评估工具iperf CHARIOT测试网络吞吐量的主要内容,如果未能解决你的问题,请参考以下文章
Linux网络性能评估工具iperf CHARIOT测试网络吞吐量