Sec Hotspot 首页  收藏本站  技术博客  RSS
统计信息
已收录文章数量:6681 篇
已收录公众号数量:89 个
本站文章为爬虫采集,如有侵权请告知
已收录微信公众号
网信中国 区块链大本营 白说区块链 区块链投资家 区块链官微 区块链铅笔Blockchain HACK学习呀 二道情报贩子 合天智汇 小白帽学习之路 小米安全中心 弥天安全实验室 SAINTSEC SecPulse安全脉搏 TideSec安全团队 360安全卫士 游侠安全网 计算机与网络安全 安全祖师爷 安全学习那些事 腾讯安全联合实验室 黑客技术与网络安全 安全圈 腾讯御见威胁情报中心 Python开发者 Python之禅 编程派 Python那些事 Python程序员 安全威胁情报 吾爱破解论坛 行长叠报 安在 i春秋 嘶吼专业版 E安全 MottoIN 网信防务 网安杂谈 数说安全 互联网安全内参 漏洞战争 安全分析与研究 邑安全 ChaMd5安全团队 天融信阿尔法实验室 安全牛 SecWiki 安全学术圈 信安之路 漏洞感知 浅黑科技 Secquan圈子社区 奇安信集团 奇安信 CERT 国舜股份 雷神众测 盘古实验室 美团安全应急响应中心 瓜子安全应急响应中心 顺丰安全应急响应中心 蚂蚁金服安全响应中心 携程安全应急响应中心 滴滴安全应急响应中心 字节跳动安全中心 百度安全应急响应中心 腾讯安全应急响应中心 网易安全应急响应中心 OPPO安全应急响应中心 京东安全应急响应中心 Bypass CNNVD安全动态 安恒应急响应中心 天融信每日安全简报 奇安信威胁情报中心 看雪学院 黑白之道 水滴安全实验室 安全客 木星安全实验室 云鼎实验室 绿盟科技安全预警 白帽汇 深信服千里目安全实验室 腾讯玄武实验室 长亭安全课堂 FreeBuf 绿盟科技 nmask
Linux网络安全运维:网络性能评估工具iperf
本文来自公众号:计算机与网络安全   2019.12.01 11:30:20

一次性 付费 进群, 长期 免费索取教程, 没有 付费教程。

微信群 回复公众号: 微信群 QQ群 460500587

教程列表 见微信公众号底部菜单 | 本文底部有推荐书籍

微信公众号:计算机与网络安全

ID:Computer-network


网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全 漏洞 等原因,都会导致网络带宽利用率低。要找到网络带宽利用率低的原因,可以对网络传输进行监控,此时就需要用到一些网络性能评估工具,而iperf就是这样一个网络带宽测试工具。


1、iperf能做什么


iperf是一个基于 TCP/IP 和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而 定位 网络瓶颈,解决网络故障。


下面介绍iperf的主要功能。


(1)TCP方面


测试网络带宽。


支持多线程,在客户端与 服务器 端支持多重连接。


报告MSS/MTU值的大小。


支持 TCP 窗口值自定义并可通过套接字缓冲。


(2)UDP方面


可以设置指定带宽的UDP数据流。


可以测试网络抖动值、丢包数。


支持多播测试。


支持多线程,在客户端与 服务器 端支持多重连接。


2、iperf的安装与使用


iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、 Wi-Fi 网络等。在工作模式上,iperf运行于 服务器 端、客户端模式下,其 服务器 端主要用于监听到达的测试请求,而客户端主要用于发起连接会话,因此要使用iperf,需要两台 服务器 ,一台运行在 服务器 模式下,另一台运行在客户端模式下。


(1)安装iperf


iperf支持Win32、 Linux 、FreeBSD、Mac OS X、OpenBSD和Solaris等多种 操作系统 平台。可以从iperf官方网站:http://iperf.fr/下载各种版本,这里下载的软件包为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  服务器端专用选项的含义


客户端专用选项的含义如表2所示。

表2  客户端专用选项的含义


客户端与 服务器 端公用选项的含义如表3所示。

表3  客户端与服务器端公用选项的含义


3、iperf应用实例


要使用iperf,首先启动一个 服务器 端,这里假定 服务器 端的IP地址为192.168.12.168,在此 服务器 上运行“iperf3-s”即可开启iperf的 服务器 端模式。在默认情况下,iperf3将在 服务器 端打开一个5201监听端口,此时就可以将另一台 服务器 作为客户端执行iperf功能测试。

(1)测试TCP吞吐量


为了确定网卡的最大吞吐量,可以在任意客户端运行iperf命令,iperf将尝试从客户端尽可能快地向 服务器 端发送数据请求,并且会输出发送的数据量和网卡平均带宽值。图1展示了通过一个最简单的带宽测试命令的输出结果。

图1  通过iperf测试网络带宽利用率


从图1可以看出,iperf默认的运行时间是10s,每隔1s输出一次传输状态,同时还可以看到每秒传输的数据量在112MB左右,刚好与“Bandwidth”列的值对应起来,网卡的带宽速率维持在941Mbits/sec左右,而测试的 服务器 是千兆网卡,这个测试值也基本合理。在输出的最后,iperf还给出了总的数据发送、接收量,以及带宽速率平均值,通过这些值,基本可以判断网络带宽是否正常,网络传输状态是否稳定。


iperf提供很多参数,可以多角度、全方位地测试网络带宽利用率,例如,要改变iperf运行的时间和输出频率,可以通过“-t”和“-i”参数来实现,如图2所示。

图2  添加“-t”和“-i”参数后的iperf输出


从图2可以看出,输出状态的间隔变为每5s一次,总共执行测试时间为20s,测试的带宽速率仍然保持在941Mbits/sec左右,唯一变化的是失败重传次数增加了。


为了模拟大量的 数据传输 ,也可以指定要发送的数据量,这可以通过“-n”参数来实现。在指定“-n”参数后,“-t”参数失效,iperf在传输完毕指定大小的数据包后,自动结束,如图3所示。

图3  iperf客户端通过“-n”参数指定要传输的数据量


图3的例子是指定发送一个5GB左右的数据包,并且每隔10s输出一次传输状态,从这个输出可以看出,当失败重传次数较多时,传输速率急速下降。


有时候,为了模拟更真实的 TCP 应用,iperf客户端允许从一个特定的文件发送数据,这可以通过“-F”参数实现,如图4所示。

图4  iperf客户端通过“-F”参数指定文件来发送数据


在图4的例子中,通过“-F”参数指定了一个webdata.tar.gz文件作为iperf要传输的数据。在使用此参数时,需要同时指定一个“-t”参数来设置要测试传输的时间,这个时间尽量设置长一些,因为在默认传输时间10s内,这个文件可能还没有传完。

在使用iperf进行网络带宽测试时,如果没有指定发送方式,iperf客户端只会使用单一的线程,而iperf是支持多线程的,可以使用iperf提供的“-P”参数来设置多线程的数目,通过使用多线程,可以在一定程度上增加网络的吞吐量。


下面通过两个例子进行简单对比,图5是iperf使用单线程传输1.86GB数据所消耗的时间和带宽使用情况。为了速率单位统一,这里使用“-f”参数将输出结果都通过MBytes/sec来显示。

图5  iperf在单线程模式下的传输时间和传输速率


从图5中可以看出,传输1.86GB的数据消耗了17s的时间,平均带宽速率为112MBytes/sec(注意单位)。下面再看看使用多线程后,iperf传输同样大小数据量所消耗的时间和平均带宽速率,如图6所示。

图6  iperf使用多线程后的数据传输状态


这里通过“-P”参数开启了2个多线程,从传输时间上看,传输1.86GB的数据,消耗时间为10.79s,比之前单线程的传输时间少了近7s,在平均带宽速率上,从之前单线程的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应用中随着传输数据的增大,丢包率和延时也随之增加。 对于延时和丢包可以通过改变应用程序来缓解或修复,例如视频流应用,通过缓存数据的方式可以容忍更大的延时。


微信公众号:计算机与网络安全

ID:Computer-network


【推荐书籍】