关注上方 浩道Linux ,回复 资料 ,即可获取海量 L inux 、 Python 、 网络通信、网络安全 等学习资料!
前言
大家好,这里是 浩道Linux ,主要给大家分享 L inux 、 P ython 、 网络通信、网络安全等 相关的IT知识平台。
今天浩道跟大家分享推荐分享一款带宽测试工具------IPerf,这款测试工具对于运维工程师或者网络工程师,还是比较受欢迎的。本文带你安装部署,并且列举出它常用的测试命令,真正做到拿来即用,看完就没有你不会用的!
一、IPerf工具介绍
IPerf3 是一款由美国伊利诺斯大学(University of Illinois)开发的开源网络性能测试工具,主要用于测试网络节点间(包括回环)TCP或UDP连接的性能。它可以测量 网络带宽 和 网络质量 ,提供 网络延迟抖动 、 数据包丢失率、最大传输单元 等统计信息。
IPerf是一款基于TCP/IP和UDP/IP的网络性能测试工具,可以用来测量网络带宽和网络质量,提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。
IPerf 是一款基于命令行模式的网络性能测试工具,是跨平台的,提供横跨Windows、Linux、Mac的全平台支持。iperf 全程使用内存作为发送/接收缓冲区,不受磁盘性能的影响,对于机器配置要求很低。不过由于是命令行工具, iperf 不支持输出测试图形。
Iperf可以测试TCP和UDP带宽质量,具有多种参数和UDP特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
IPerf功能包括:
TCP方面:测试网络带宽,支持多线程,客户端与服务端支持多重连接,报告MSS/MTU值的大小,支持TCP窗口值自定义并可通过套接字缓冲。
UDP方面:可以设置指定带宽的UDP数据流,测试网络抖动值、丢包数,支持多播测试,支持多线程,客户端与服务端支持多重连接。
二、IPerf工具安装部署
IPerf的安装支持yum方式安装及源码安装两种方式,安装方式相对比较简单,以下基于Centos7下通过yum方式安装iperf3版本进行演示。
1、yum方式安装
yum install -y iperf3
安装完成后通过命令查看对应版本如下:
[root@haodaolinux01 ~]# iperf3 --version
iperf 3.1.7
Linux haodaolinux01 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
Optional features available: CPU affinity setting, IPv6 flow label, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing
三、IPerf工具命令用法及常见参数
iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。Iperf是基于 客户端-服务端 模式实现的。在测量网络参数时,Iperf区分听者(Audience)和说者(Speaker)两种角色。说者向听着发送一定量的数据,由听者统计并记录带宽、时延抖动等参数。说者的数据全部发送完成后,听者通过向说者回送一个数据包,将测量数据告知说者。这样,在听者和说者两边都可以显示记录的数据。如果网络过于拥塞或误码率较高,当听者回送的数据包无法被说者收到时,说者就无法显示完整的测量数据,而只能报告本地记录的部分网络参数,发送的数据量、发送时间、发送带宽等,像延时抖动等参数在说者一侧则无法获得(因此在报告时,服务器和客户端所得到的信息是不同的)。
iperf的带宽测试分为 TCP模式 和 UDP模式 ,这两种模式中又分为 上行链路测试 和 下行链路测试 。
TCP模式:测量网络带宽、报告MSS/MTU值的大小和观测值、支持TCP窗口值通过套接字缓冲、当P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接;
UDP模式:客户端可以创建指定带宽的UDP流、测量丢包、测量抖动、支持多播、当P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持Windows);
上行链路:客户端发送数据,服务端接受数据
下行链路:服务端发送数据,客户端接受数据
在完成iperf安装后,执行「iperf3 –h」即可显示iperf的详细用法。iperf的命令行选项共分为三类,分别是 客户端与服务器端公用选项 、 服务器端专用选项 和 客户端专用选项 。
以下针对这三类参数罗列常见的参数选项。
(一)服务端常见参数选项
(1)-s,--server: 将iperf以server模式启动,例如:iperf3 –s,iperf3默认启动的监听端口为5201,可以通过「-p」选项修改默认监听端口
(2)-D: 将iperf作为后台守护进程运行,例如:iperf3 -s -D
(二)客户端常见参数选项
(1)-c,--client host: 将iperf以客户端模式启动,host是server端地址,eg:iperf3 -c 192.168.20.232
(2)-u,--udp: 表示采用UDP协议发送报文,不带该参数表示采用TCP协议。
(3)-b,--bandwidth [K|M|G]: 指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec。
(4)-t,--time: 指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒。
(5)-l,--len: 设置读写缓冲区的长度,单位为 Byte。TCP默认为8KB,UDP默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。
(6)-n,--num [K|M|G]: 指定传输数据包的字节数,例如:iperf3 -c 192.168.20.232 –n 100M
(7)-P,--parallel: 指定客户端与服务端之间使用的线程数。默认是1个线程。需要客户端与服务器端同时使用此参数。
(8)-w,--window: 指定套接字缓冲区大小,在TCP方式下,此设置为TCP窗口的大小。在UDP方式下,此设置为接受UDP数据包的缓冲区大小,用来限制可以接收数据包的最大值
(9)-B,--bind: 用来绑定一个主机地址或接口,这个参数仅用于具有多个网络接口的主机。在UDP模式下,此参数用于绑定和加入一个多播组。
(10)-M,--mss: 设置TCP最大信息段的值
(11)-N,--nodelay: 设置TCP无延时
(12)-V: 绑定一个IPv6地址。
(13)-d,--dualtest: 运行双测试模式。将使服务器端反向连接到客户端,使用-L参数中指定的端口(或默认使用客户端连接到服务器端的端口)。使用参数-r以运行交互模式。
(14)-L,--listenport: 指定服务端反向连接到客户端时使用的端口。默认使用客户端连接至服务端的端口。
(15)-r,--tradeoff: 往复测试模式。当客户端到服务器端的测试结束时,服务器端反向连接至客户端。当客户端连接终止时,反向连接随即开始。如果需要同时进行双向测试,请尝试-d参数。
(三)客户端与服务端通用参数
(1)-f,--farmat [k|m|g|K|M|G]: 指定带宽输出单位,「[k|m|g|K|M|G]」分别表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes显示输出结果,默认Mbits,eg:iperf3 -c 192.168.20.232 -f M
(2)-p,--port: 指定服务器端监听的端口或客户端所连接的端口,默认是5201端口。
(3)-i,--interval: 指定每次报告之间的时间间隔,单位为秒,eg:iperf3 -c 192.168.20.232 -i 5
(4)-F: 指定文件作为数据流进行带宽测试。例如:iperf3 -c 192.168.20.232 -F haodaolinux.tar.gz
(四)其它常见参数
(1)-h,--help: 显示命令行参考并退出。
(2)-v,--version: 显示版本信息和编译信息并退出。
四、IPerf常见测试场景
环境准备如下:
(1)客户端IP地址:192.168.20.231
(2)服务端端IP地址:192.168.20.232
(一)测试TCP吞吐量
1、通过使用简单命令参数测试。
(1)服务端上运行「iperf3 -s」,即可开启iperf的服务器模式。
iperf3 -s
在默认情况下,iperf3将在服务端打开一个5201监听端口,此时就可以将另一台服务器作为客户端执行iperf功能测试了。
(2)客户端执行测试命令进行测试
iperf3-c 192.168.20.232
(3)服务端的监听结果如下图所示:
(4)客户端的监听结果如下图所示:
通过以上监听结果可以看出,iperf默认的运行时间是10秒钟,每隔一秒钟输出一次传输状态,在输出的最后,iperf还给出了总的数据发送、接收量,并给出了带宽速率平均值 2.58Gbits/sec左右 。
2、通过增加命令相关参数进行测试
(1)服务端端开启iperf的服务器模式,指定TCP端口为5222
iperf3 -s -i 2 -p 5222
(2)客户端启动iperf的客户端模式,连接服务端
iperf3-c 192.168.20.232-i 2 -t 20 -p 5222
(3)服务端的监听结果如下图所示:
(4)客户端的监听结果如下所示:
从监听结果看出,输出状态的间隔变为每2秒钟一次,总共执行测试时间为20秒,测试的带宽速率约为2.63Gbits/sec左右;
Interval表示时间间隔。
Transfer表示时间间隔里面转输的数据量。
Bandwidth是时间间隔里的传输速率。
Retr表示重传的数据包数量。
Cwnd表示拥塞窗口的大小。
(二)UDP的丢包和延迟测试
(1)在服务端上开启相关命令
iperf3 -s -i 2
(2)
客户端启动iperf的客户端模式,通过-b参数来指定使用100Mb带宽测试
iperf3-c 192.168.20.232-u-b 100M-i 2
(3)服务端的监听结果如下图所示:
(4)
客户端的监听结果如下图所示:
从监听结果看出UDP的网络性能如下:
Interval:传输总共用时10s
Transfer: 总共传输的数据量118MB
Bandwidth: 平均带宽99.3Mbits/sec
Jitter:抖动0.033ms
Lost/Total Datagrams:丢包的个数5566/总共传输包85707个 丢包率6.5%
五、总结
工欲善其事,必先利其器,实用的工具可以让你在实际工作中如虎添翼。IPerf工具选项参数众多。以上只是列举一些常用的参数并进行常用的场景进行测试。大家如果想深入使用这款工具,可以自行去使用一番,相信你会收获更多!
更多精彩
关注公众号 「 浩道Linux 」
浩道Linux ,专注于 Linux系统 的相关知识、 网络通信 、 网络安全 、 Python相关 知识以及涵盖IT行业相关技能的学习, 理论与实战结合,真正让你在学习工作中真正去用到所学。同时也会分享一些面试经验,助你找到高薪offer,让我们一起去学习,一起去进步,一起去涨薪!期待您的加入~~~ 关注回复「资料」可 免费获取学习资料 (含有电子书籍、视频等)。
喜欢的话,记得 点「赞」 和 「在看」 哦