一、netperf是什么
netperf是一个基于client-server模式的网络测试工具,可以测量TCP和UDP传输的吞吐量、时延、CPU占用率等性能参数。它可以测试以下几种模式的TCP核UDP网络性能:
- TCP_STREAM:client端向server端发送批量TCP数据
- UDP_STREAM:client端向server端发送批量UDP数据
- TCP_RR和TCP_CRR:前者是在同一个连接中进行多次request和response请求,后者是每次请求新建一个连接(HTTP)
- UDP_RR:使用UDP进行request和response请求
二、安装
1 编译安装
在github选择对应的版本下载源码,按照下面步骤编译安装:
tar -zxf netperf-netperf-2.7.0.tar.gz
cd netperf-2.7.0/
./configure
make
make install
上述步骤安装完成之后,使用netperf -V
查看版本:
三、使用
1 服务端
服务端只需要监听一个端口即可。netserver
启动监听在默认的端口12865
上,若端口被占用的情况下,netserver -p 端口号
更换一个端口再启动即可。
或者netserver -D -4 -L 0.0.0.0 -p 9991
,netserver
的参数如下:
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
2 客户端
客户端使用netperf
连接服务端的端口进行测试,可以指定测试的协议类型
,ip地址
,端口
,测试持续的时间
等,参数类型:
-t: 指定进行的测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR。可以省略,省略即为TCP_STEAM
-H:指定远程主机,即netserver服务器地址
-l: 指定时间
-p:指定netserver监听端口,可以省略,省略即为默认端口12865
1) 测试tcp吞吐
netperf -t TCP_STREAM -H 172.20.35.40 -l 10 -P 12856
表示:测试的协议为(TCP_STREAM)
、服务器的IP地址为(172.20.35.40 )
、持续的时间为(10秒)
、指定连接服务端的12856端口
测试结果为:1104.90Mb/s
TCP_STREAM的一些别的参数
参数 | 说明 |
-s size | 设置本地系统的socket发送与接收缓冲大小 |
-S size | 设置远端系统的socket发送与接收缓冲大小 |
-m size | 设置本地系统发送测试分组的大小 |
-M size | 设置远端系统接收测试分组的大小 |
-D | 对本地与远端系统的socket设置TCP_NODELAY选项 |
2)测试udp吞吐
netperf -t UDP_STREAM -H 172.20.35.40 -l 10
udp无需指定端口
表示:udp协议、ip为1720.20.35.40 持续时间10s
测试结果:
第一行表示本地吞吐:1344.11Mb/s
第二行便是接收端吞吐:1344.06Mb/s
3)测试tcp交互速率
a 类似于http的长连接
netperf -t TCP_RR -H 172.20.35.40 -l 10 -- -r 256,2048
-r
用于指定客户端和服务端每次的交互数据量,上面表示客户端每次发送256字节,服务器每次回复2048字节
测试结果:
第一行表示3533.89kb/s的响应
第二行是服务器的数据统计
b 类似tcp短连接
netperf -t TCP_CRR -H 172.20.35.40 -l 10 -- -r 128,1024
含义和短连接类似。
测试结果:
第一行表示2675.65kb/s的响应
TCP_RR模式下的一些参数
参数 | 说明 |
-r req,resp | 设置request和reponse分组的大小 |
-s size | 设置本地系统的socket发送与接收缓冲大小 |
-S size | 设置远端系统的socket发送与接收缓冲大小 |
-D | 对本地与远端系统的socket设置TCP_NODELAY选项 |
4)测试udp交互
netperf -t UDP_RR -H 172.20.35.40 -l 10 -- -r 256,2048
含义和tcp交互类似。
测试结果:
第一行表示8108.19kb/s的响应。
3 vpn网络
与普通网络不一样的是,vpn网络在测试udp吞吐时按照普通模式发送数据时会报错:
需要增加一个参数再发送数据,就不会报错了:
其他的情况不会报错: