netperf基本使用
1使用场景
检测网络应用程序的网络性能。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多快的速度接收数据。测试网络性能的五项指标:可用性(availability,ping测试网络是否联通)、响应时间(response time,与未安装网络程序对比响应时间)、网络利用率(network utilization,网络被使用的时间占总时间(使用的时间+空闲的时间)的比例)、网络吞吐量(network throughput,应用程序需要的剩余带宽)、网络带宽容量(network bandwidth capacity,两节点间的最大带宽)。
2工作原理
Netperf工具以 client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,进行来回传递特殊的流量模式,以测试网络的性能。
3举例使用
#环境描述
准备两个虚拟机都安装上netperf,虚拟机A作为服务器端开启某端口,虚拟机B作为客户端发包去连接A的服务,测试虚拟机A的网络性能。
#安装
yum -y install netperf
#server端
若不指定端口默认开启12865端口
netserver -4 -L 0.0.0.0 -p 9991
参数:
Usage: netserver [options]
Options:
-h Display this text
-D Do not daemonize
-d Increase debugging output
-f Do not spawn chilren for each test, run serially
-L name,family Use name to pick listen address and family for family
-N No debugging output, even if netperf asks
-p portnum Listen for connect requests on portnum.
-4 Do IPv4
-6 Do IPv6
-v verbosity Specify the verbosity level
-V Display version information and exit
-Z passphrase Expect passphrase as the first thing received
#client端
netperf -H 10.1.13.115 -P 9991 -l 30 -t TCP_CRR -- -r 14k,14k
参数:
netperf的命令行参数可以分为两大类:全局命令行参数、测试相关的局部参数,两者之间使用--分隔。
netperf语法格式为:
Netperf [global options] --[test-specific options]
[global options] 可选参数,其中可选的参数有如下几个:
参数 |
说明 |
-H host |
指定远端运行netserver的server IP地址 |
-l testlen |
指定测试的时间长度(秒) |
-t testname |
指定进行的测试类型(TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR) |
[test-specific options] 可选参数,其中可选的参数有如下几个:
参数 |
说明 |
-s size |
设置本地系统的socket发送与接收缓冲大小 |
-S size |
设置远端系统的socket发送与接收缓冲大小 |
-m size |
设置本地系统发送测试分组的大小 |
-M size |
设置远端系统接收测试分组的大小 |
-D |
对本地与远端系统的socket设置TCP_NODELAY选项 |
-r req,resp |
设置request和reponse分组的大小 |
4FAQ
4.1客户端connect failed出现No route to host
两台服务器间能ping通,也开通了服务端端口,但客户端connect返回netperf:send_omni:connect_data_socket failed:No route to host。
方法一:是防火墙的问题,需停止防火墙service firewalld stop。
方法二:server端firewall除了开启9991,外还需要开启tcp/40000-65535。
netperf的client连接server端口后,server端会随机启动一个一万以上的端口用于数据传输(暂不明确server端随机启用的是几万以上端口,本地测试时显示的是40000以上端口),若server端开启firewall也需要开启tcp/40000-65535,也可将范围扩大一些tcp/10000-65535。