本文首先介绍网络性能测量的一些基本概念和方法,然后结合netperf工具的使用,具体的讨论如何测试不同情况下的网络性能。
在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多,或者即使考传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulkdatatransfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。
Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。
TCP网络性能
由于TCP协议能够提供端到端的可靠传输,因此被大量的网络应用程序使用。但是,可靠性的建立是要付出代价的。TCP协议保证可靠性的措施,如建立并维护连接、控制数据有序的传递等都会消耗一定的网络带宽。
Netperf可以模拟三种不同的TCP流量模式:
单个TCP连接,批量(bulk)传输大量数据
单个TCP连接,client请求/server应答的交易(transaction)方式
多个TCP连接,每个连接中一对请求/应答的交易方式
UDP网络性能
UDP没有建立连接的负担,但是UDP不能保证传输的可靠性,所以使用UDP的应用程序需要自行跟踪每个发出的分组,并重发丢失的分组。
Netperf可以模拟两种UDP的流量模式:
从client到server的单向批量传输
请求/应答的交易方式
由于UDP传输的不可靠性,在使用netperf时要确保发送的缓冲区大小不大于接收缓冲区大小,否则数据会丢失,netperf将给出错误的结果。因此,对于接收到分组的统计不一定准确,需要结合发送分组的统计综合得出结论。
Netperf的命令行参数
在unix系统中,可以直接运行可执行程序来启动netserver,也可以让inetd或xinetd来自动启动netserver。
当netserver在server端启动以后,就可以在client端运行netperf来测试网络的性能。netperf通过命令行参数来控制测试的类型和具体的测试选项。根据作用范围的不同,netperf的命令行参数可以分为两大类:全局命令行参数、测试相关的局部参数,两者之间使用--分隔:
netperf[globaloptions]--[test-specificoptions]
这里我们只解释那些常用的命令行参数,其它的参数读者可以查询netperf的man手册。
-Hhost:指定远端运行netserver的serverIP地址。
-ltestlen:指定测试的时间长度(秒)
-ttestname:指定进行的测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP
NETPERF与网络性能测量的五项指标 来自淘豆网m.daumloan.com转载请标明出处.