当前位置: 欣欣网 > 码农

推荐一款运维&网络工程师应知必会的带宽测试工具!

2024-03-05码农

关注上方 浩道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 --versioniperf 3.1.7Linux haodaolinux01 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64Optional 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,让我们一起去学习,一起去进步,一起去涨薪!期待您的加入~~~ 关注回复「资料」可 免费获取学习资料 (含有电子书籍、视频等)。

喜欢的话,记得 点「赞」 「在看」