Netperf网络测试
- Netperf简介
- 安装Netperf
- Centos7安装Netperf
- Windows安装Netperf
- 批量网络流量性能测试
- 启动netserver服务端
- 查看netperf帮助
- 查看netper参数
- 查看netserver参数
- TCP_STREAM测试
- 启动netserver服务端
- 客户端
- UDP_STREAM测试
- 启动netserver服务端
- 客户端
- 测试请求/应答网络流量测试
- TCP_RR(TCP 请求-回复)
- TCP_CRR(TCP 连接-请求-回复)
- UDP_RR(UDP 请求-回复)
- TCP_RR、TCP_CRR 和 UDP_RR 的比较:
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
3、在远端的电脑运行netserver.exe
4、本端电脑输入如下指令,即可得到两端的传输带宽及速率。
E:\netperf>netperf -H 192.168.1.12 (远端电脑IP地址)
TCP STREAM TEST to 192.168.3.18
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
批量网络流量性能测试
原文链接:https://blog.csdn.net/qq_41596356/article/details/130454561
根据使用传输协议的不同,批量数据传输又分为TCP批量传输和UDP批量传输。
启动netserver服务端
# 服务端启动服务
netserver
默认情况下 netserver 开启端口号为 12865,可以通过以下命令指定服务端口(如果服务端指定端口,则客户端也需要指定服务器端口)
## -D 前台启动,不以后台守护进程模式启动
## -p 指定侦听端口
netserver -D -p 4659
查看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
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
测试请求/应答网络流量测试
TCP_RR(TCP 请求-回复)
TCP_RR 是 netperf 工具中的一种测试类型,用于评估 TCP 连接的 请求-回复 性能。它模拟客户端-服务器交互,其中客户端向服务器发送请求并等待响应。
工作原理:
TCP_RR 方式的测试对象是多次 TCP request 和 response 的交易过程,但是它们发生在同一个 TCP 连接中,这种模式常常出现在数据库应用中。数据库的 client 程序与 server 程序建立一个 TCP 连接以后,就在这个连接中传送数据库的多次交易过程。
- 建立连接: netperf 与指定的服务器(使用 -H 参数指定)和端口(使用 -p 参数指定,默认 12865)建立 TCP 连接。
- 发送请求: netperf 向服务器发送一系列包含请求数据的 TCP 数据包。
- 接收响应: netperf 等待并接收来自服务器包含响应数据的 TCP 数据包。
- 测量性能: 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
可使用-- -r ,更改请求和相应大小
TCP_CRR(TCP 连接-请求-回复)
TCP_CRR 是 netperf 中的另一种测试类型,也用于评估 TCP 连接的请求-回复性能。但是,它与 TCP_RR 在测量性能的方式上有所不同。
工作原理:
- 建立连接: 与 TCP_RR 一样,netperf 与指定的服务器和端口建立 TCP 连接。
- 请求-回复周期: 类似于 TCP_RR,netperf 向服务器发送请求包并等待响应包。
- 性能测量: 与 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
可使用-- -r ,更改请求和相应大小
UDP_RR(UDP 请求-回复)
UDP_RR 是 netperf 中的一种测试类型,用于评估 UDP 连接的 请求-回复 性能。与 TCP 不同,UDP 是一种无连接协议,这意味着它在发送数据之前无需建立连接。
工作原理:
- 发送请求: netperf 向指定的服务器和端口(使用 -H 和 -p 参数)发送一系列包含请求数据的 UDP 数据包。
- 无保证的响应: 由于 UDP 是无连接的,因此无法保证从服务器收到响应。netperf 无法像在 TCP_RR 或 TCP_CRR 中那样等待响应。
- 性能测量: 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
可使用-- -r ,更改请求和相应大小
netperf -t UDP_RR -H 192.168.159.131 -l 5 -- -r 128,8192
TCP_RR、TCP_CRR 和 UDP_RR 的比较:
特性 | TCP_RR | TCP_CRR | UDP_RR |
---|---|---|---|
连接 | 建立 TCP 连接 | 建立 TCP 连接 | 无连接(不建立连接) |
请求-回复周期 | 等待响应后再发送下一个请求 | 不等待响应,测量整个请求-回复周期 | 无法保证收到响应,测量发送速率和丢包率 |
性能指标 | 吞吐量、延迟、事务速率 | 事务速率、平均连接时间、平均请求-响应时间 | 发送速率、丢包率 |
应用场景 | 面向事务的 TCP 应用 | 频繁打开/关闭 TCP 连接的应用 | 可以容忍丢包的 UDP 应用 |
总结:
- TCP_RR 适用于评估需要可靠、有序数据传输的 TCP 应用的性能。
- TCP_CRR 适用于评估需要快速建立连接和完成请求-回复周期的 TCP 应用的性能。
- UDP_RR 适用于评估可以容忍丢包的 UDP 应用的性能。