《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——2.3 网络性能评估工具iperf

简介:

本节书摘来自华章计算机《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》一书中的第2章,第2.3节,作者:高俊峰著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 网络性能评估工具iperf

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

2.3.1 iperf能做什么

iperf是一个基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。
下面介绍iperf的主要功能。
(1)TCP方面
测试网络带宽。
支持多线程,在客户端与服务器端支持多重连接。
报告MSS/MTU值的大小。
支持TCP窗口值自定义并可通过套接字缓冲。
(2)UDP方面
可以设置指定带宽的UDP数据流。
可以测试网络抖动值、丢包数。
支持多播测试。
支持多线程,在客户端与服务器端支持多重连接。
2.3.2 iperf的安装与使用
iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。在工作模式上,iperf运行于服务器端、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起连接会话,因此要使用iperf,需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。
1 . 安装iperf
iperf支持Win32、Linux、FreeBSD、Mac OS 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的命令行选项共分为三类,分别是客户端与服务器端公用选项、服务器端专用选项和客户端专用选项,下面对常用的选项进行介绍。
服务器端专用选项的含义如表2-4所示。
image

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

客户端与服务器端公用选项的含义如表2-6所示。
image

2.3.3 iperf应用实例
要使用iperf,首先启动一个服务器端,这里假定服务器端的IP地址为192.168.12.168,在此服务器上运行“iperf3 -s”即可开启iperf的服务器端模式。在默认情况下,iperf3将在服务器端打开一个5201监听端口,此时就可以将另一台服务器作为客户端执行iperf功能测试。
1 . 测试TCP吞吐量
为了确定网卡的最大吞吐量,可以在任意客户端运行iperf命令,iperf将尝试从客户端尽可能快地向服务器端发送数据请求,并且会输出发送的数据量和网卡平均带宽值。图2-14展示了通过一个最简单的带宽测试命令的输出结果。
image

从图2-14可以看出,iperf默认的运行时间是10s,每隔1s输出一次传输状态,同时还可以看到每秒传输的数据量在112MB左右,刚好与“Bandwidth”列的值对应起来,网卡的带宽速率维持在941Mbits/sec左右,而测试的服务器是千兆网卡,这个测试值也基本合理。在输出的最后,iperf还给出了总的数据发送、接收量,以及带宽速率平均值,通过这些值,基本可以判断网络带宽是否正常,网络传输状态是否稳定。
iperf提供很多参数,可以多角度、全方位地测试网络带宽利用率,例如,要改变iperf运行的时间和输出频率,可以通过“-t”和“-i”参数来实现,如图2-15所示。

image

从图2-15可以看出,输出状态的间隔变为每5s一次,总共执行测试时间为20s,测试的带宽速率仍然保持在941Mbits/sec左右,唯一变化的是失败重传次数增加了。
为了模拟大量的数据传输,也可以指定要发送的数据量,这可以通过“-n”参数来实现。在指定“-n”参数后,“-t”参数失效,iperf在传输完毕指定大小的数据包后,自动结束,如图2-16所示。

image

图2-16的例子是指定发送一个5GB左右的数据包,并且每隔10s输出一次传输状态,从这个输出可以看出,当失败重传次数较多时,传输速率急速下降。
有时候,为了模拟更真实的TCP应用,iperf客户端允许从一个特定的文件发送数据,这可以通过“-F”参数实现,如图2-17所示。

image

在图2-17的例子中,通过“-F”参数指定了一个webdata.tar.gz文件作为iperf要传输的数据。在使用此参数时,需要同时指定一个“-t”参数来设置要测试传输的时间,这个时间尽量设置长一些,因为在默认传输时间10s内,这个文件可能还没有传完。
在使用iperf进行网络带宽测试时,如果没有指定发送方式,iperf客户端只会使用单一的线程,而iperf是支持多线程的,可以使用iperf提供的“-P”参数来设置多线程的数目,通过使用多线程,可以在一定程度上增加网络的吞吐量。
下面通过两个例子进行简单对比,图2-18是iperf使用单线程传输1.86GB数据所消耗的时间和带宽使用情况。为了速率单位统一,这里使用“-f”参数将输出结果都通过MBytes/sec来显示。

image

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

image

这里通过“-P”参数开启了2个多线程,从传输时间上看,传输1.86GB的数据,消耗时间为10.79s,比之前单线程的传输时间少了近7s,在平均带宽速率上,从之前单线程的112MBytes/sec提高到177MBytes/sec,从这个结果可以看出,多线程对网络传输性能的提高不小。
2 . 测试UDP丢包和延迟
iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。通过iperf的“-u”参数即可测试UDP应用的传输性能,图2-20测试的是在iperf客户端传输100MB的UDP数据包的输出结果。

image

在图2-20中,重点关注虚线下的一段内容,在这段输出中,“Jitter”列表示抖动时间,或者称为传输延迟,“Lost/Total”列表示丢失的数据包和总的数据包数量,后面的0.33%是平均丢包的比率,“Datagrams”列显示的是总共传输数据包的数量。
这个输出结果过于简单,要了解更详细的UDP丢包和延时信息,可以在iperf服务端查看,因为在客户端执行传输测试的同时,服务器端也会同时显示传输状态,如图2-21所示。

image

在这个输出中,详细记录了在传输过程中,每个阶段的传输延时和丢包率,在UDP应用中随着传输数据的增大,丢包率和延时也随之增加。对于延时和丢包可以通过改变应用程序来缓解或修复,例如视频流应用,通过缓存数据的方式可以容忍更大的延时。

相关文章
|
12月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
2623 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
9月前
|
运维 监控 数据可视化
Python 网络请求架构——统一 SOCKS5 接入与配置管理
通过统一接入端点与标准化认证,集中管理配置、连接策略及监控,实现跨技术栈的一致性网络出口,提升系统稳定性、可维护性与可观测性。
|
小程序 前端开发
2025商业版拓展校园圈子论坛网络的创新解决方案:校园跑腿小程序系统架构
校园跑腿小程序系统是一款创新解决方案,旨在满足校园配送需求并拓展校友网络。跑腿员可接单配送,用户能实时跟踪订单并评价服务。系统包含用户、客服、物流、跑腿员及订单模块,功能完善。此外,小程序增设信息咨询发布、校园社区建设和活动组织等功能,助力校友互动、经验分享及感情联络,构建紧密的校友网络。
461 1
2025商业版拓展校园圈子论坛网络的创新解决方案:校园跑腿小程序系统架构
|
12月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
1193 0
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
10月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
11月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1756 1

热门文章

最新文章