Netperf简介

Netperf 基于C/S模式,需要在测试源端运行netsever,而本地运行netperf进行连接并测试。
Netperf支持多种常见的网络测试模式,包括TCP_STREAM、UDP_STREAM、TCP_MAERTS和UDP_RR等。用户可以使用Netperf来测试本地和远程网络的性能,以评估网络基础设施的性能和可靠性。
Netperf项目地址:https://github.com/HewlettPackard/netperf


安装Netperf


Centos7安装Netperf

# Centos7安装Netperf
yum install -y http://repo.iotti.biz/CentOS/7/x86_64/netperf-2.7.0-1.el7.lux.x86_64.rpm

Windows安装Netperf

压缩包解压后有2个文件,netperf.exe和netserver.exe

服务端运行netserver.exe

客户端运行netperf.exe

3、在远端的电脑运行·netserver.exe·

4、本端电脑输入如下指令,即可得到两端的传输带宽及速率。

## -H 远端电脑IP地址
E:\netperf>netperf -H 192.168.1.12

## -l 自定义测试时间
## -s 设置发送方(netperf 客户端)的socket缓冲区大小,单位为字节
## -S 设置接收方(netperf 服务器)的socket缓冲区大小,单位为字节
E:\netperf>netperf -H 192.168.1.15 -l 30 -- -s 16384 -S 16384

批量网络流量性能测试

原文链接:https://blog.csdn.net/qq_41596356/article/details/130454561
根据使用传输协议的不同,批量数据传输又分为TCP批量传输和UDP批量传输。

启动netserver服务端

# 服务端启动服务
netserver

image.png
默认情况下 netserver 开启端口号为 12865,可以通过以下命令指定服务端口(如果服务端指定端口,则客户端也需要指定服务器端口)

## -D 前台启动,不以后台守护进程模式启动
## -p 指定侦听端口
netserver -D -p 4659

image.png

查看netperf帮助

查看netper参数

# 查看netper帮助
netperf -h
选项描述
-a send,recv设置本地发送、接收缓冲区对齐
-A send,recv设置远程发送、接收缓冲区对齐
-B brandstr指定简短输出时要发出的字符串
-c [cpu_rate]报告本地 CPU 使用情况
-C [cpu_rate]报告远程 CPU 使用情况
-d增加调试输出
-D time,[units]至少每个时间间隔显示一次中间结果,使用单位作为秒数的初始猜测。时间的负值会大量使用系统的时间戳功能
-f G|M|K|g|m|k-f G|M|K|g|m|k 设置输出单位
-F lfill[,rfill]使用指定文件的数据预填充缓冲区
-H name|ip,fam指定目标机器和/或本地 ip 及家族
-i max,min指定最大和最小迭代次数 (15,1)
-I lvl[,intvl]指定置信水平(95 或 99)和置信区间的百分比(10)
-j保留额外的时间统计数据
-l testlen指定测试持续时间 (>0 秒) (<0 字节
-L name|ip,fam指定本地 ip
-o send,recv设置本地发送、接收缓冲区偏移
-O send,recv设置远程发送、接收缓冲区偏移
-n numcpu设置 CPU 利用率的处理器数量
-N不建立控制连接,只做 ‘发送’ 方面的工作
-p port,lport指定 netserver 端口号和/或本地端口
-P 0|1不/显示测试标题
-r允许只基于结果达到置信水平
-s seconds测试设置与测试开始之间等待秒数
-S在数据连接上设置 SO_KEEPALIVE
-t testname指定要执行的测试
-T lcpu,rcpu请求 netperf/netserver 绑定到本地/远端 cpu
-v verbosity指定详细度级别
-W send,recv设置发送、接收缓冲区的数量
-v level设置详细度级别(默认1,最小0)
-V显示 netperf 版本并退出
-y local,remote设置套接字优先级
-Y local,remote设置 IP_TOS。使用十六进制。
-Z passphrase设置并传递到 netserver 一个密语

查看netserver参数

netserver -h
参数解释
-h显示帮助
-D不以后台守护进程模式启动
-d增加调试输出
-f不为每个测试生成子进程,顺序运行
-L name,family使用name来选择监听地址,并且为family指定家族
-N即使netperf请求,也不显示调试输出
-p portnum在 portnum 端口上监听连接请求
-4使用 IPv4
-6使用 IPv6
-v verbosity指定详细度级别
-V显示版本信息并退出
-Z passphrase期望作为首个接收到的内容是密语

TCP_STREAM测试

Netperf缺省情况下进行TCP批量传输,即-t TCP_STREAM,用来测试进行TCP批量传输时的网络性能。
测试过程中,netperf向netserver发送批量的TCP数据分组,以确定数据传输过程中的吞吐量。

启动netserver服务端

## -D 前台启动,不以后台守护进程模式启动
## -p 指定侦听端口
netserver -D -p 4659

客户端

# 对IP地址192.168.159.131的4659端口上运行的netserver发起一个持续5秒的TCP吞吐量测试
## -t TCP_STREAM:指定要执行的测试类型为 TCP_STREAM,这是 netperf 中一个常见的测试,用于测量 TCP 连接的最大吞吐量。
## -H 192.168.159.131:指定目标机器的IP地址为 192.168.159.131
##-l 5:指定测试的持续时间为 5 秒 之后自动停止并报告结果。
## -p 4659:指定 netperf 服务端的端口号为 4659
netperf -t TCP_STREAM -H 192.168.159.131 -l 5 -p 4659

image.png

UDP_STREAM测试

UDP_STREAM用来测试进行UDP批量传输时的网络性能。
测试UDP的网络性能时,测试分组的大小不得大于socket的发送与接收缓冲大小,否则netperf会报出错提示。

启动netserver服务端

## -D 前台启动,不以后台守护进程模式启动
## -p 指定侦听端口
netserver -D -p 4659

客户端

# 对IP地址192.168.159.131的4659端口上运行的netserver发起一个持续5秒的UDP吞吐量测试
## -t UDP_STREAM:指定要执行的测试类型为 UDP_STREAM,这是 netperf 中一个常见的测试,用于测量 UDP 连接的最大吞吐量。
## -H 192.168.159.131:指定目标机器的IP地址为 192.168.159.131
## -l 5:指定测试的持续时间为 5 秒 之后自动停止并报告结果。
## -p 4659:指定 netperf 服务端的端口号为 4659
netperf -t UDP_STREAM -H 192.168.159.131 -l 5 -p 4659

image.png

测试请求/应答网络流量测试

TCP_RR(TCP 请求-回复)

TCP_RR 是 netperf 工具中的一种测试类型,用于评估 TCP 连接的 请求-回复 性能。它模拟客户端-服务器交互,其中客户端向服务器发送请求并等待响应。
工作原理:
TCP_RR 方式的测试对象是多次 TCP request 和 response 的交易过程,但是它们发生在同一个 TCP 连接中,这种模式常常出现在数据库应用中。数据库的 client 程序与 server 程序建立一个 TCP 连接以后,就在这个连接中传送数据库的多次交易过程。

  1. 建立连接: netperf 与指定的服务器(使用 -H 参数指定)和端口(使用 -p 参数指定,默认 12865)建立 TCP 连接。
  2. 发送请求: netperf 向服务器发送一系列包含请求数据的 TCP 数据包。
  3. 接收响应: netperf 等待并接收来自服务器包含响应数据的 TCP 数据包。
  4. 测量性能: netperf 测量每个请求-回复周期的耗时,计算吞吐量、延迟和事务速率等指标。

性能指标:

  • 吞吐量: 测试期间成功传输的数据量(通常以每秒比特数或字节数表示)。
  • 延迟: 从发送请求到收到响应所花费的时间(通常以毫秒或微秒表示)。
  • 事务速率: 测试期间完成的请求-回复周期的数量(通常以每秒事务数表示)。

应用场景:
TCP_RR 适用于评估面向事务的 TCP 应用的性能,例如:

  • 数据库服务器连接
  • 远程过程调用 (RPC)
  • 基于 HTTP 1.0 的 web 服务器访问

5秒内TCP_RR数据

## -t TCP_RR: 指定测试类型为 TCP 请求-回复 (Request-Reply)。
### 在这种模式下,netperf 将模拟客户端发送请求到服务器,然后等待服务器的回复。
## -H 192.168.159.131:指定目标机器的IP地址为 192.168.159.131
## -l 5:指定测试的持续时间为 5 秒 之后自动停止并报告结果。
netperf -t TCP_RR -H 192.168.159.131 -l 5

image.png
可使用-- -r ,更改请求和相应大小

TCP_CRR(TCP 连接-请求-回复)

TCP_CRR 是 netperf 中的另一种测试类型,也用于评估 TCP 连接的请求-回复性能。但是,它与 TCP_RR 在测量性能的方式上有所不同。
工作原理:

  1. 建立连接: 与 TCP_RR 一样,netperf 与指定的服务器和端口建立 TCP 连接。
  2. 请求-回复周期: 类似于 TCP_RR,netperf 向服务器发送请求包并等待响应包。
  3. 性能测量: 与 TCP_RR 不同,TCP_CRR 在发送下一个请求之前 不等待响应。相反,它测量 整个请求-回复周期的耗时,包括连接建立

性能指标:

  • 事务速率: 测试期间完成的请求-回复周期的数量,包括连接建立(通常以每秒事务数表示)。
  • 平均连接时间: 在发送请求之前建立 TCP 连接所需的平均时间(通常以毫秒或微秒表示)。
  • 平均请求-响应时间: 发送请求、接收响应和关闭连接所需的平均时间(通常以毫秒或微秒表示)。

应用场景:
TCP_CRR 对于评估频繁打开和关闭 TCP 连接的应用程序的性能特别有用,例如:

  • 进行多个 HTTP 请求的 web 浏览器
  • 从服务器获取消息的电子邮件客户端
  • 发送和接收消息的即时通讯应用程序

5秒内TCP_CRR数据

## -t TCP_CRR: 指定测试类型为 TCP 连接-请求-回复
## -H 192.168.159.131:指定目标机器的IP地址为 192.168.159.131
## -l 5:指定测试的持续时间为 5 秒 之后自动停止并报告结果。
netperf -t TCP_CRR -H 192.168.159.131 -l 5

image.png
可使用-- -r ,更改请求和相应大小

UDP_RR(UDP 请求-回复)

UDP_RR 是 netperf 中的一种测试类型,用于评估 UDP 连接的 请求-回复 性能。与 TCP 不同,UDP 是一种无连接协议,这意味着它在发送数据之前无需建立连接。
工作原理:

  1. 发送请求: netperf 向指定的服务器和端口(使用 -H 和 -p 参数)发送一系列包含请求数据的 UDP 数据包。
  2. 无保证的响应: 由于 UDP 是无连接的,因此无法保证从服务器收到响应。netperf 无法像在 TCP_RR 或 TCP_CRR 中那样等待响应。
  3. 性能测量: netperf 测量 UDP 数据包的 发送速率丢包率

性能指标:

  • 发送速率: 测试期间成功发送的 UDP 数据包数量(通常以每秒数据包数表示)。
  • 丢包率: 未成功送达服务器的 UDP 数据包百分比(通常以百分比表示)。

应用场景:
UDP_RR 适用于评估可以容忍一些丢包的 UDP 应用的性能,例如:

  • 实时音/视频通信(丢包会影响质量,但可以容忍一些丢包)
  • 简单日志传输(丢包可能会导致一些日志消息丢失,但整体功能不受影响)
## -t -t TCP_RR: 指定测试类型为 (UDP 请求-回复)
## -H 192.168.159.131:指定目标机器的IP地址为 192.168.159.131
## -l 5:指定测试的持续时间为 5 秒 之后自动停止并报告结果。
netperf -t UDP_RR -H 192.168.159.131 -l 5

image.png
可使用-- -r ,更改请求和相应大小

netperf -t UDP_RR -H 192.168.159.131 -l 5 -- -r 128,8192

image.png

TCP_RR、TCP_CRR 和 UDP_RR 的比较:

特性TCP_RRTCP_CRRUDP_RR
连接建立 TCP 连接建立 TCP 连接无连接(不建立连接)
请求-回复周期等待响应后再发送下一个请求不等待响应,测量整个请求-回复周期无法保证收到响应,测量发送速率和丢包率
性能指标吞吐量、延迟、事务速率事务速率、平均连接时间、平均请求-响应时间发送速率、丢包率
应用场景面向事务的 TCP 应用频繁打开/关闭 TCP 连接的应用可以容忍丢包的 UDP 应用

总结:

  • TCP_RR 适用于评估需要可靠、有序数据传输的 TCP 应用的性能。
  • TCP_CRR 适用于评估需要快速建立连接和完成请求-回复周期的 TCP 应用的性能。
  • UDP_RR 适用于评估可以容忍丢包的 UDP 应用的性能。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐