基于Iperf的网络性能测量研究

时间:2023-04-26 11:06:02 公文范文 来源:网友投稿

摘要:通过对网络性能测量的调研,结合网络性能测量工具iperf的研究,报告了不同情况下的网络性能。并对网络性能测量工具的实际应用做了说明。

关键词:网络性能测量;iperf;网络性能测量工具

中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)36-10227-03

Iperf-based Network Performance Measurement

ZHANG Bai, SONG An-jun

(Information Engineering College, Shanghai Maritime University, Shanghai 200135, China)

Abstract: Through the network performance measurement research, combined with iperf network performance measurement tool study, reported on the network performance under different circumstances. Network performance measurement tools as well as the practical application is explained.

Key words: network performance measurement; iperf; network performance measurement tools

在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多,或者即使考虑到性能的问题,但是却发现没有合适的手段去测试网络的性能。

当开发出一个网络应用程序后,我们会发现,在实际的网络环境使用中,网络应用程序的使用效果不是很理想,问题可能出现在程序的开发上面,也有可能由于实际的网络环境中存在着瓶颈。面对这种问题,程序员一般会一筹莫展,原因就在于不掌握一些网络性能测量的工具。本文将通过iperf这一网络性能测量工具来讨论网络性能测试的知识。

1 网络性能测量的概念

1.1 网络性能的概念

网络性能可以采用以下方式定义:网络性能是对一系列对于运营商有意义的,并可用于系统设计、配置、操作和维护的参数进行测量所得到的结果。可见,网络性能是与终端性能以及用户的操作无关的,是网络本身特性的体现,可以由一系列的性能参数来描述,也可以由网络性能测量工具来测量。

1.2 网络性能测量的五项指标

网络性能参数即网络性能测量的五项指标,包括:可用性(availability);响应时间(response time);网络利用率(network utilization);网络吞吐量(network throughput);网络带宽容量(network bandwidth capacity)。

1.3 网络性能测量方法和工具的分类

1.3.1 网络性能测量方法

网络性能测量方法有两类:主动测量和被动测量。这两种方法的作用和特点不同,可以相互作为补充。主动测量是在选定的测量点上利用测量工具有目的地主动产生测量流量,注入网络,并根据测量数据流的传送情况来分析网络的性能。主动测量的优点是对测量过程的可控性比较高,灵活、机动,易于进行端到端的性能测量;缺点是注入的测量流量会改变网络本身的运行情况,使得测量的结果与实际情况存在一定的偏差,而且测量流量还会增加网络负担。主动测量在性能参数的测量中应用十分广泛,目前大多数测量系统都涉及到主动测量。

被动测量是指在链路或设备(如路由器,交换机等)上利用测量设备对网络进行监测,而不需要产生多余流量的测量方法。被动测量的优点在于理论上它不产生多余流量,不会增加网络负担;其缺点在于被动测量基本上是基于对单个设备的监测,很难对网络端到端的性能进行分析,并且可能实时采集的数据量过大,另外还存在用户数据泄漏等安全性和隐私问题。

被动测量非常适合用来进行流量测量。

主动测量与被动测量的结合。主动测量与被动测量各有其优、缺点,而且对于不同的性能参数来说,主动测量和被动测量也都有其各自的用途。因此,将主动测量与被动测量相结合将会给网络性能测量带来新的发展。

1.3.2 网络性能测量工具

从主动测量方法与被动测量方法的角度,测试工具大致可以分为以下两类:

产生数据流的主动测量方法:netperf,dbs,Iperf,Pathrate,Nettest不产生数据流的被动测量方法:Netlogger,tcptrace与ntop。产生数据流的主动测量方法通过在网络中产生用于测量的数据包流量,来测量网络带宽,响应时间,包丢弃等数据,这类工具对于判断网络瓶颈和估计带宽利用率是非常有用的。

不产生数据流的被动测量方法,通过捕获数据包,分析包头信息,经过统计给出网络流量信息,网络流量监视信息。这对于网络管理员对实际运行的网络系统进行测试来说,是非常有用的方法与可用的工具。

2 iperf测量工具

2.1 iperf简介

iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。iperf程序是由一个iperf可执行文件,一个java应用程序jperf和一组iperf库文件组成。可执行文件既有客户端的应用程序,又有服务器端的应用程序;java应用程序提供图形前端处理功能;库文件为套接子程序提供各种附加功能。

2.2 命令使用:

iperf有许多参数,这里就只介绍两个。

-s 以server模式启动,eg:iperf –s

-c 以client模式启动,host是server端地址,eg:iperf -c 192.168.111.172

2.3 iperf测试内容

2.3.1 功能介绍

通过iperf应用程序TCP,网络管理员可以测量TCP网络特性:测量网络带宽;报告MSS/MTU值的大小和观测值;支持TCP窗口值通过套接字缓冲;当P线程或Win32线程可用时,支持多线程;客户端与服务端支持同时连接。

通过iperf应用程序UDP,网络管理员可以测量UDP网络特性:特定宽带之下的UDP性能;数据包流中UDP包丢失情况;数据包流中UDP包的延迟抖动情况;UDP多播数据包的性能;当P线程可用时,支持多线程;客户端与服务端支持同时多重连接(不支持Windows)。服务器端可作为后台程序运行。服务器端可作为Windows 服务运行。

2.3.2 tcp测试

首要的iperf的目标是帮助调整TCP连接的一个特定的路径。最根本的调整问题, 在TCP窗口大小,它控制多少数据可以在网络中传输。如果是太小了,可能丢包。理论上使用的TCP窗口大小是带宽延迟的结果=瓶颈带宽*往返时间,在下面的例子中,链接的瓶颈是一个45兆位/秒的DS3的联系和往返时间测量平为42毫秒,则带宽延迟结果230字节另一个试验做的是并行的TCP流。如果带宽总量超过个人流得到,这是错误的。无论是TCP窗口大小是太小了,或者操作系统的TCP执行错误,或网络本身的缺陷。见上文的TCP窗口大小,否则诊断是有些困难。如果Iperf编制与依靠,一个单一的客户端和服务器可以测试这一点,否则安装多个客户机和服务器在不同的端口。下面是一个例子在一个单一的流得到16.5兆位/秒,但两个平行流一起获得16.7 + 9.4 = 26.1兆位/秒,即使使用大型TCP窗口大小。

2.3.3 udp测试

Iperf创建一个恒定比特率UDP数据流。这是一个非常人工流,类似语音通信。您将要调整的数据大小将在你的应用程序中使用。服务器检测UDP连接数据损失的身份证号码中的数据。通常是一个UDP数据资料成为几个IP数据包。失去一个单一的IP数据包将失去整个数据。为了衡量丢包而不是数据丢失,使数据小到足以放入一个单一的数据包,使用一l选项。的默认大小工程1470字节的以太网。乱序数据包检测(乱序的数据包导致一些模棱两可的数据包丢失计数; Iperf假设他们是不重复的数据包,因此他们被排除在丢失数据包数量。)自TCP连接没有损失报告给用户,我觉得有用的UDP连接测试看到丢包沿路径。

2.3.4 jperf

iperf程序可以在命令行下运行,它或者也在一个名为JPerf的Java实现前端工具上运行。JPerf不仅能简化复杂命令行参数的构造,而且它还保存测试结果——同时实时图形化显示结果。

2.4 Iperf开源软件简单分析

在开发Iperf的过程中,开发者把Socket编程和多线程编程中经常用到的一些系统调用封装成对象,屏蔽了底层函数的复杂接口,提供了模块化和面向对象的机制,也为我们提供了一些非常实用的编程工具,我们可以在实现自己的程序时复用这些类。由于这些类实现的源代码都比较简单,也为我们修改前人的代码实现自己的功能提供了方便。

这些类的定义与实现都在源代码文件夹的lib子文件夹下。主要包括以下一些对象:

SocketAddr类:封装了Socket接口中的网络地址结构(sockaddr_in等)以及各种地址转换的系统调用(gethostbyname、gethostbyaddr、inet_ntop等);

Socket类:封装了socket文件描述符,以及socket、listen、connect等系统调用;

Mutex类以及Condition类:封装了POSIX标准中的mutex和condition(条件变量)线程同步机制;

Thread类:封装了POSIX标准中的多线程机制,提供了一种简单易用的线程模型;

Timestamp类:通过Unix系统调用gettimeofday实现了一个时间戳对象,提供了获得当前时间戳,计算两个时间戳之间的先后关系等方法。

此外,在lib文件夹中还包括一些Iperf的实现提供的实用工具函数,包括endian.c文件中的字节序转换函数、gnu_getopt文件中的命令行参数处理函数、snprintf文件中的字符串格式化函数、signal.c文件中的与信号处理有关的函数、string.c文件中的字符处理函数、tcp_window_size.c文件中的TCP窗口大小处理函数等。

3 网络性能测量的是实际应用

在实际网络测试中,简单的采用ping命令的方法进行连通性测试是可行的,但它的结果对于网络性能的评价没有实际意义。如果希望对网络性能作出相对深入的分析,那么就需要综合的应用多种网络测试工具。

一种综合使用网络测试工具测试网络传输状态的方法如下。

1)使用pathrate应用程序确定源结点到目的节点的网络最大带宽

2)使用netperf应用程序确定源结点到目的节点的实际网络带宽

3)使用ntop应用程序分析网络流量

4)使用Netlogger应用程序分析主机运行状况

以上测试结果对与网络管理员确定网络带宽瓶颈的位置有帮助

Web是Internet最常用的一种运用,一种综合使用网络测试工具测试网络web服务性能的方法如下。

1)使用netperf模拟http流量

2)使用tcptrace应用程序观察http会话

以上测试结果对于网络管理员确定web系统服务的状态与网络整体服务性能有帮助

4 结束语

通过对网络性能测量进行简单描述,利用Iperf软件详细介绍了网络性能测量工具的使用和用途,最后简单描述网络性能测量工具的实际应用。

参考文献:

[1] 吴功宜.计算机网络高级教程[M].北京:清华大学出版社,2007.

[2] 张勇.网络性能测量技术的研究[J].科技资讯,2006(20).

[3] 雷剑刚,吴洲.网络性能测量技术的研究[J].福建电脑,2006(5).

推荐访问:测量 性能 研究 网络 Iperf