网络性能测试 netperf

Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。

Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。

Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。

netperf-2.7.0.tar.gz

curl -o netperf-2.7.0.tar.gz https://wiki.xargs.cn/wiki/lib/exe/fetch.php/linux:benchmark:netperf-2.7.0.tar.gz
tar -zxvf netperf-2.7.0.tar.gz
cd netperf-2.7.0
./configure
make && make install

#服务端
netserver
#客户端
netperf -H host -l 60 -t TCP_STREAM

命令参数:

  • -H host: 指定远端运行netserver的server ip地址
  • -l testlen: 指定测试的时间长度(秒)
  • -t testname: 指定进行的测试类型,包括TCP_STREAM, UDP_STREAM, TCP_RR,UDP_RR, TCP_CRR

3.1 测试方式

netperf.sh

netperf.sh

#!/bin/bash
host="10.10.20.25"
#cd /home/hadoop/netperf
if [ -e "./netperf" ];then
    for i in $host
    do
	rate=`./netperf -H $i -l 10 | tail -1 | awk '{print $NF}'`
	echo "TO $i bandwith is $rate Mbits/s" >> netperf.log
done
fi
  • TCP_STREAM
    • 测试TCP流式通讯时的网络带宽,这是netperf的default测试类型。
  • UDP_STREAM
    • 测试UDP流式通讯时的网络带宽。
    • 值得注意的是,UDP测试时,需要确保发送端数据缓冲区不能大于接收端缓冲区,否则肯定会出现数据包丢失,造成测试结果不准确。
  • -m参数用来指定发送端缓冲区大小,-M参数用来指定接收端缓冲区大小。
  • 第一行结果是本地的发送统计,也就是本地发送UDP的吞吐量,第二行是server端的接收统计
  • TCP_RR
    • 在一次TCP连接中,client端和server端的transaction次数。
    • 测试结果中,第一行是本地统计结果,第二行是远端统计结果,
  • UDP_RR
    • 在基于UDP的连接中,client端和server端的transaction次数。
    • 测试结果中,第一二行分别是本地和远端统计结果

提示:

establish control: are you sure there is a netserver listening on *.*.*.* at port 12865?
establish_control could not establish the control connection from 0.0.0.0 port 0 address

这是由于服务器端防火墙未放行导致的,临时禁用一下防火墙即可.


  • linux/performance/网络性能测试_netperf.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)