今天收到一个任务,如何在linux环境下测试网络传输性能?netperf是个不错的网络性能测试工具。
Netperf 是一种网络性能的测量工具,主要针对基于 TCP 或 UDP 的传输。Netperf 根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf 测试结果所反映的是两个系统之间发送和接受数据的速度和效率。
Netperf 工具是基于 C/S模式的。 server 端是 netserver,用来侦听来自 client端的连接, client 端是 netperf,用来向 server 发起网络测试。在 client 与 server 之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client 与 server 之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。
在测试由于网卡或交换机等网络变化造成“丢包”现象的测试中,我们使用Netperf 的 UDP传输来近似统计丢包数目,进而评估各种情况对于应用的影响。由于 TCP是可靠连接,对于丢包会有重传机制,无法用来评估丢包程度;而 UDP则为非可靠连接,恰好适合于测试。
原理介绍完了如何安装呢?
我本地使用的版本是netperf-2.5.0.tar.gz, 从 http://www.netperf.org/下载。上传到linux服务上使用如下命令编译安装:
-
- [root@SERVER1 ~]#tar -xzvf netperf-2.5.0.tar.gz
- [root@SERVER1 ~]#cd netperf-2.5.0
-
- [root@SERVER1 ~]#./configure
- [root@SERVER1 ~]#make
- [root@SERVER1 ~]#make install
安装后可以开测了
第一步:在server1上开启server服务,如下:
- [root@SERVER1 ~]# netserver -p 11111 //-p 后为监听的端口号
- Starting netserver with host 'IN(6)ADDR_ANY' port '11111' and family AF_UNSPEC
第二步:在客户端server2上使用如下命令测试:
-
- [root@SERVER2 ~]# netperf -t UDP_STREAM -p 11111 -H 1.1.1.10 -l 200
- MIGRATED UDP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 1.1.1.10 (1.1.1.10) port 0 AF_INET
-
- Socket Message Elapsed Messages
- Size Size Time Okay Errors Throughput
-
- bytes bytes secs # # 10^6bits/sec
- 262144 65507 200.00 372207 0 961.55
- 262144 200.00 368069 961.55
-t后跟的是测试类型一种为UDP,一种为TCP,这里我使用UDP进行测试。
-p为对端监听的端口就是上面server1开启的端口。
-H为对端IP,也就是server1的IP.
-l是测试时间,我这里测试200s。
第三步:可以通过如下公式试算网络丢包时间:
丢包时间=(Send Packet Num– Receive Packet Num)*Total Time/Send Packet Num
按照我上面的测试结果来计算如下:
丢包时间=(372207– 368069)*200/372207=2.22s

2012年6月20日 上午9:59 沙发
牛逼靖哥哥
2012年6月20日 下午1:50 板凳
呵呵。。。这个我在学校的时候也用过。。。也是用来分析数据。。。不是很熟。。。
2012年6月20日 下午2:56 1层
@wuxinxinggg 这个还不错挺好用的,对于用服务器来测试网络性能这个工具还是不错的,可以用UDP和TCP两种协议来测试性能。