[转]网络测试利器netperf安装和使用

1.1. Netperf简介

Netperf是一种网络性能的测量工具,主要针对基于TCP 或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是两个系统之间发送和接受数据的速度和效 率。
Netperf工具是基于C/S模式的。server端是netserver,用来侦听来自client端的连 接,client 端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结 果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。

1.1.1. TCP网络性能

由于TCP协议能够提供端到端的可靠传输,因此被大量的网络应用程序使用。但是,可靠性的建立是要付出代价的。TCP协议保证可靠性的措施,如建立并维护连接、控制数据有序的传递等都会消耗一定的网络带宽。
Netperf可以模拟三种不同的TCP流量模式:
1) 单个TCP连接,批量(bulk)传输大量数据
2) 单个TCP连接,client请求/server应答的交易(transaction)方式
3) 多个TCP连接,每个连接中一对请求/应答的交易方式

1.1.2. UDP网络性能

UDP没有建立连接的负担,但是UDP不能保证传输的可靠性,所以使用UDP的应用程序需要自行跟踪每个发出的分组,并重发丢失的分组。
1)Netperf可以模拟两种UDP的流量模式:
从client到server的单向批量传输
2) 请求/应答的交易方式
由于UDP传输的不可靠性,在使用netperf时要确保发送的缓冲区大小不大于接收缓冲区大小,否则数据会丢失,netperf将给出错误的结果。因此,对于接收到分组的统计不一定准确,需要结合发送分组的统计综合得出结论。

1.2. Netperf安装

软件版本:netperf-2.4.0-rc2
安装过程:
cp netperf-2.4.0-rc2.tar.gz /root
clip_image002
cd /root //进入root用户根目录
[root@localhost ~]# tar -zxvf netperf-2.4.0-rc2.tar.gz //解压netperf压缩文件包
clip_image004
[root@localhost ~]# cd netperf-2.4.0-rc2
clip_image006
[root@localhost netperf-2.4.0-rc2]# ./configure //配置netperf所需文件
clip_image008
[root@localhost netperf-2.4.0-rc2]# make //编译生成二进制包
clip_image010
[root@localhost netperf-2.4.0-rc2]# make install//安装
clip_image012
这时netperf安装完成。

1.3. Netperf使用

Netperf 基于C/S模式,需要在测试源端运行netsever,而本地运行netperf进行连接并测试。

1.3.1. Netperf全局命令参数介绍:

netperf [global options]-- [test-specific options]
-H host :指定远端运行netserver的server IP地址。
-l testlen:指定测试的时间长度(秒)
-t testname:指定进行的测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR,以下测试中202.192.75.117作为server端。

1.3.2. TCP_STREAM

Netperf缺省情况下进行TCP批量传输,即-t TCP_STREAM。测试过程中,netperf向netserver发送批量的TCP数据分组,以确定数据传输过程中的吞吐量
[root@localhost ~]# netperf -H 202.192.75.117
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 10.02 2569.29
-H,指定server端为202.192.75.117
显示结果中,Recv Socket Size为server端接收数据的Socket大小87380字节
Send Socket Size 为本地发送数据的Socket大小 16384字节
Elapsed time 为测试使用时间10.02秒
Throughput,网络吞吐量,即网络中剩余带宽 2569.29M每秒

1.3.3. UDP_STREAM

UDP_STREAM用来测试进行UDP批量传输时的网络性能,通过选项-t UDP_STREAM进行测试。
[root@localhost ~]# netperf -t UDP_STREAM -H 202.192.75.117 -- -m 1024
UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
109568 1024 10.01 146364 0 119.83
109568 10.01 54240 44.41
第一行显示的是本地系统的发送统计,这里的吞吐量表示netperf向本地socket发送分组的能力为119.83M。第二行显示的就是远端系统接收的情况。
这里特别注意的是我们发送测试分组的大小不能大于socket的发送与接收缓冲大小。为此,我们可以用过-m 选项指定发送测试分组大小为1024字节。

1.3.4. TCP_RR

TCP_RR用于测试在一次TCP连接中,两个节点间TCP交易的次数。例如数据库应用。
[root@localhost ~]# netperf -t TCP_RR -H 202.192.75.117
TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 1 1 10.01 4766.62
16384 87380
这 个模式输出的结果也是由两行组成。第一行显示本地系统的情况,第二行显示的是远端系统的信息。Trans Rate per sec表示在本次测试中两个节点间每秒数据交易的次数。这里我们可以得知在本地与202.192.75.117两个节点中,每秒每个TCP连接的数据交易 次数平均为4766.62次。
我们可以通过以下局部选项设置相关内容。
-r req,resp 设置request和reponse分组的大小
-s size 设置本地系统的socket发送与接收缓冲大小
-S size 设置远端系统的socket发送与接收缓冲大小
-D 对本地与远端系统的socket设置TCP_NODELAY选项

1.3.5. TCP_CRR

TCP_CRR,指的是每次数据交易都建立新的连接,例如HTTP
[root@localhost ~]# netperf -t TCP_CRR -H 202.192.75.117
TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 1 1 10.01 1658.27
16384 87380
在本地与202.192.75.117两个节点中,每秒基于TCP_CRR的平均数据交易次数为1658.27次。

1.3.6. UDP_RR

UDP_RR指的是,在基于UDP连接的数据交易情况。
[root@localhost ~]# netperf -t UDP_RR -H 202.192.75.117
UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
109568 109568 1 1 10.00 4917.31
109568 109568
这里,可以看出我们使用请求及回应报文大小都为1个字节下的UDP连接,平均每秒数据交易次数为4917.31次。

1.4. 结言

通过netperf工具的各种模式,我们已经能够对我们当前网络吞吐量、延迟、网络设备缓冲区等潜在的问题进行有效的监测,为我们网络拥塞、网络故障及网络升级等提供准确有效的数据支持。

本文出自 “野狼的荒野 ” 博客,请务必保留此出处http://wolfbeing.blog.51cto.com/435511/190470

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章