英语法语西班牙语

Ad


OnWorks 网站图标

flowgrind - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 flowgrind

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 flowgrind,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


flowgrind - 适用于 Linux、FreeBSD 和 Mac OS X 的高级 TCP 流量生成器

概要


流磨 [OPTION] ...

商品描述


流磨 是用于测试和基准测试 Linux 的高级 TCP 流量生成器,
FreeBSD 和 Mac OS X TCP/IP 堆栈。 与其他性能测量工具相比,它
具有分布式架构,其中测量吞吐量和其他指标
在任意 flowgrind 服务器进程之间,flowgrind 守护进程 流磨(1)。

Flowgrind 测量除吞吐量(吞吐量)之外的应用层到达间隔时间
(IAT) 和往返时间 (RTT)、区块计数和网络交易/秒。 与大多数跨
平台测试工具,flowgrind 收集并报告由
TCP_INFO 套接字选项,通常在 TCP/IP 堆栈内部。 在 Linux 和
FreeBSD 这包括内核对端到端 RTT 的估计、大小
TCP 拥塞窗口 (CWND) 和慢启动阈值 (SSTHRESH)。

Flowgrind 具有分布式架构。 它分为两个部分:flowgrind
守护进程, 流磨(1)和 流磨 控制器。 使用控制器,在
可以设置任何两个运行 flowgrind 守护程序的系统(第三方测试)。 在定期
在测试期间,控制器收集并显示测量结果
守护进程。 它可以使用相同或不同的设置同时运行多个流,并且
单独安排每一位。 测试和控制连接可以选择转移到
不同的接口。

流量生成本身要么是批量传输,要么是限速的,要么是复杂的
请求/响应测试。 Flowgrind 使用 libpcap 自动转储流量
定性分析。

配置


它们是两组重要的选项:控制器选项和流选项。 像
顾名思义,控制器选项适用于全局并可能影响所有流,而
特定于流的选项仅适用于使用 -F 选项。

强制性参数长选项是强制性的短选项时也是。

总类 选项
-h, - 帮帮我[=什么是]
显示帮助并退出。 可选的 WHAT 可以是 'socket' 以获取有关套接字的帮助
选项或“流量”流量生成帮助

-v, - 版
打印版本信息并退出

控制器 选项
-c, --显示冒号=[,] ...
在输出中显示中间间隔报告列 TYPE。 允许的值
TYPE 是:'interval'、'through'、'transac'、'iat'、'kernel'(默认全部显示),
和“块”、“rtt”、“延迟”(可选)

-d, -调试
增加调试冗长。 多次添加选项以增加详细程度

-e, --dump-前缀=
在转储文件名前添加前缀 PRE(默认值:“flowgrind-”)

-i, --报告间隔=#.#
报告间隔,以秒为单位(默认值:0.05s)

--日志文件[=文件]
将输出写入日志文件 FILE(默认:flowgrind-'timestamp'.log)

-m 以 2**20 字节/秒报告吞吐量(默认值:10**6 位/秒)

-n, --流量=#
测试流的数量(默认值:1)

-o 覆盖现有的日志文件(默认:不)

-p 不要打印符号值(如 INT_MAX)而不是数字

-q, - 安静的
安静,不要登录到屏幕(默认:关闭)

-s, --tcp 堆栈=
不要自动确定源 TCP 堆栈的单位。 强制单位为 TYPE,其中
TYPE 是“段”或“字节”

-w 将输出写入日志文件(与 --日志文件)

自动化流程 选项
所有流都有两个端点,一个源和一个目的地。 源头的区别
和目标端点只影响连接建立。 启动流程时
目标端点侦听套接字,源端点连接到它。 为了
实际测试这没有区别,两个端点具有完全相同的功能。
数据可以在任一方向发送,许多设置可以单独配置
每个端点。

其中一些选项将流端点作为参数,在选项中用“x”表示
句法。 'x' 需要替换为 's' 表示源端点,'d' 表示
目标端点或两个端点的“b”。 为每个指定不同的值
端点,用逗号分隔。 例如 -W s=8192,d=4096 设置广告
窗口到源端的 8192 和目的地的 4096。

-A x 使用 RTT 计算所需的最小响应大小
(与...一样 -G s=p,C,40)

-B x=# 设置请求的发送缓冲区,以字节为单位

-C x 如果遇到局部拥堵,则停止流动

-D x=数据中心
服务类型 (TOS) IP 标头字节的 DSCP 值

-E 枚举有效载荷中的字节而不是发送零

-F #[,#] ...
此选项后面的流选项仅适用于给定的流 ID。 有用的
与...结合 -n 为某些流设置特定选项。 编号开始
有 0,所以 -F 1 指的是第二个流程。 使用 -1 所有流都可以参考

-G x=(q|p|g):(C|U|E|N|L|P|W):#1:[#2]
激活随机流量生成并根据使用的设置参数
分配。 有关更多信息,请参阅“流量生成选项”部分

-H x=HOST[/控制[:PORT]]
从/到主机测试。 可选参数是 CONTROL 的地址和端口
连接到同一主机。 未指定的端点被假定为
本地

-J # 使用随机种子#(默认:读取 /开发/ urandom)

-I 启用单向延迟计算(无时钟同步)

-L 在开始发送数据之前立即在测试套接字上调用 connect()(晚
连接)。 如果未指定,则在准备中建立测试连接
测试开始前的阶段

-M x 使用 libpcap 转储流量。 流磨(1) 必须以 root 身份运行

-N 测试流程后shutdown() 每个套接字方向

-O x=OPT
在测试插座上设置插座选项 OPT。 有关其他信息,请参阅部分
'套接字选项'

-P x 不要遍历 select() 以继续发送,以防块大小没有
足以填满发送队列(咄咄逼人)

-Q 仅汇总,不计算中间间隔报告(安静)

-R x=#.#(z|k|M|G)(b|B)
以每秒指定的速率发送,其中:z = 2**0,k = 2**10,M = 2**20,G =
2**30,b = 比特/秒(默认),B = 字节/秒

-S x=# 设置块(消息)大小,以字节为单位(与 -G s=q,C,#)

-T x=#.#
设置流持续时间,以秒为单位(默认:s=10,d=0)

-U # 设置应用程序缓冲区大小,以字节为单位(默认值:8192)如果与
随机流量生成

-W x=# 设置请求的接收器缓冲区(通告窗口),以字节为单位

-Y x=#.#
在主机开始发送之前设置初始延迟,以秒为单位

交通 OPTION


通过选项 -G flowgrind 支持随机流量生成,允许进行
除了普通的批量之外,还有先进的限速和请求-响应数据传输。

随机流量生成选项 -G 将流端点作为参数,表示为
通过选项语法中的“x”。 “x”需要替换为“s”作为源
端点,'d' 代表目标端点,'b' 代表两个端点。 不过请注意
双向流量生成可能会导致意想不到的结果。 指定不同
每个端点的值,用逗号分隔。

-G x=(q|p|g):(C|U|E|N|L|P|W):#1:[#2]

流量参数:

q 请求大小(以字节为单位)

p 响应大小(以字节为单位)

g 请求数据包间隔(以秒为单位)

分布:

C 持续的 (#1: 价值, #2: 未使用)

U 制服 (#1:分钟, #2: 最大限度)

E 指数(#1:lamba - 一生, #2: 未使用)

N 普通的 (#1: mu - 平均值, #2: sigma_square - 方差)

L 对数正态 (#1:zeta - 意思是, #2:西格玛 - 标准开发)

P 帕累托(#1:k - 形状, #2: x_min - 比例)

W 威布尔 (#1:lambda - 规模, #2:k - 形状)

像 weibull 这样的高级发行版只有在编译 flowgrind 时才可用
有 libgsl 支持。

-U # 为请求和响应大小的计算值指定上限,需要
因为高级分布式值是无界的,但是我们需要知道
buffersize(常量值或均匀分布不需要它)。 价值观
重新计算边界外,直到出现有效结果,但最多 10
次(然后使用绑定值)

插座 OPTION


Flowgrind 允许通过选项设置以下标准和非标准套接字选项
-O.

所有套接字选项都将流端点作为参数,在选项中用“x”表示
句法。 'x' 需要替换为 's' 表示源端点,'d' 表示
目标端点或两个端点的“b”。 为每个指定不同的值
端点,用逗号分隔。 此外,可以重复通过相同的
端点以指定多个套接字选项。

普通 插座 选项
-O x=TCP_拥塞=ALG
在测试套接字上设置拥塞控制算法 ALG

-O x=TCP_CORK
在测试套接字上设置 TCP_CORK

-O x=TCP_NODELAY
在测试套接字上禁用 nagle 算法

-O x=SO_DEBUG
在测试套接字上设置 SO_DEBUG

-O x=IP_MTU_DISCOVER
如果系统默认尚未启用,则在测试套接字上设置 IP_MTU_DISCOVER

-O x=路线记录
在测试套接字上设置 ROUTE_RECORD

非标 插座 选项
-O x=TCP_MTCP
在测试套接字上设置 TCP_MTCP (15)

-O x=TCP_ELCN
在测试套接字上设置 TCP_ELCN (20)

-O x=TCP_LCD
在测试套接字上设置 TCP_LCD (21)

示例


流磨
使用默认设置测试本地主机 IPv4 TCP 性能,与 flowgrind -H 相同
b=127.0.0.1 -T s=10,d=0。 flowgrind 守护进程需要在本地主机上运行

流磨 -H b=::1/127.0.0.1
同上,但使用默认设置测试本地主机 IPv6 TCP 性能

流磨 -H s=主机1,d=主机2
主机 1 和主机 2 之间的批量 TCP 传输。 Host1 作为源,host2 作为
目标端点。 两个端点都需要运行 flowgrind 守护进程。 这
使用默认流选项,流持续时间为 10 秒,数据流
从主机 1 到主机 2

流磨 -H s=主机1,d=主机2 -T s=0,d=10
与上述相同,但使用一个流从 host10 发送数据 2 秒到
host1

流磨 -n 2 -F 0 -H s=192.168.0.1,d=192.168.0.69 -F 1 -H s=10.0.0.1,d=10.0.0.2
设置两个并行流,第一个流在 192.168.0.1 和 192.168.0.69 之间,第二个
10.0.0.1 到 10.0.0.2 之间的流量

流磨 -p -H s=10.0.0.100/192.168.1.100,d=10.0.0.101/192.168.1.101 -A s
在 10.0.0.100 和 10.0.0.101 之间设置一个流并使用 192.168.1.x IP 地址
用于控制流量。 激活 RTT 计算的最小响应

流磨 -i 0.001 -T s = 1 | 埃格雷普 ^S | 图形 -坚持 -e '阴谋 “ - ” 运用 3:5 线
标题 “吞吐量” '
在环回设备上设置一个流并在帮助下绘制发送者的数据
gnuplot的

流磨 -G s=q,C,400 -G s=p,N,2000,50 -G s=g,U,0.005,0.01 -U 32000
-G s=q,C,400: 使用 400 字节的常量请求大小
-G s=p,N,2000,50:使用平均 2000 字节的正态分布响应大小和
差异50
-G s=g,U,0.005,0.01: 使用最小 0.005s 和
和最大 10ms
-U 32000:在 32 KB 处截断块大小(正态分布需要)

交通 场景


以下示例演示了如何使用 flowgrind 的流量生成能力
用过的。 这些已被纳入不同的流动研磨测试中,并已得到证实
有意义。 但是,由于 Internet 流量多种多样,因此不能保证这些是
适用于各种情况。

请求 响应 样式 (HTTP)
这个场景是基于工作
http://www.3gpp2.org/Public_html/specs/C.R1002-0_v1.0_041221.pdf.

流磨 -M s -G s=q,C,350 -G s=p,L,9055,115.17 -U 100000
-M s:在发送方转储流量
-G s=q,C,350:使用常量请求大小 350 字节
-G s=p,L,9055,115:使用对数正态分布,均值为 9055,方差为 115
响应大小
-U 100000:以 100 KB 截断响应

对于这种情况,我们建议关注 RTT(值越低越好)和网络
交易/秒作为指标(值越高越好)。

互动 时间 (远程登录)
此方案模拟 telnet 会话。

流磨 -G s=q,U,40,10000 -G s=q,U,40,10000 -O b=TCP_NODELAY
-G s=q,U,40,10000 -G s=q,U,40,10000:使用统一分布式请求和响应
大小在 40B 到 10kB 之间
-O b=TCP_NODELAY:设置 telnet 应用程序使用的套接字选项 TCP_NODELAY

对于这种情况,RTT(越低越好)和 Network Transactions/s 是有用的指标
(越高越好)。

有限 (流媒体 媒体)
此方案模拟比特率为 800 kbit/s 的视频流传输。

流磨 -G s=q,C,800 -G s=g,N,0.008,0.001
使用均值为 0.008 且方差较小的正态分布包间间隙
(0.001)。 结合请求大小 800 字节,平均比特率约为 800
达到了 kbit/s。 添加方差以模拟可变比特率,就像
用于当今的视频编解码器。

对于这种情况,IAT(越低越好)和最小吞吐量(越高越好)是
有趣的指标。

OUTPUT


流/端点 身份标识
# 流端点,源为“S”或目标为“D”

ID 数字流标识符

开始结束
以秒为单位的测量间隔的边界。 显示的时间是经过
从接收到 RPC 消息开始从守护进程点开始测试的时间
查看

应用领域 度量
通过
在此测量间隔期间传输流端点的吞吐量,
以 Mbit/s(默认)或 MB/s(-m)

交易
每秒成功接收的响应块数(我们称之为网络
交易/秒)

请求/响应
在此测量间隔期间发送的请求和响应块数(列
默认禁用)

IAT 块到达间隔时间 (IAT)。 连同最小值和最大值
显示该特定测量间隔的算术平均值。 如果没有块
在报告间隔期间收到,显示“inf”。

延迟时间RTT
1-way 和 2-way 块延迟分别是块延迟和块往返
时间(RTT)。 对于这两种延迟,遇到的最小值和最大值
测量间隔与算术平均值一起显示。 如果没有阻塞,
在该报告间隔期间分别到达块确认,'inf'是
显示。 默认情况下,1 路和 2 路块延迟均禁用(请参阅
选项 -I-A).

核心 度量 (TCP_信息)
以下所有 TCP 特定指标均通过 TCP_INFO 从内核获取
插座选项在 结束 每个报告间隔。 采样率可以通过改变
选项 -i.

CWND (tcpi_cwnd)
TCP 拥塞窗口 (CWND) 的大小,以段数 (Linux) 或字节数表示
(自由系统)

(tcpi_snd_sshtresh)
以段数 (Linux) 或字节数 (FreeBSD) 为单位的慢启动阈值的大小

确认 (tcpi_未确认)
当前未确认的段数,即飞行中的段数
(FlightSize)(仅限 Linux)

麻袋 (tcpi_sacked)
选择性确认的段数(仅限 Linux)

丢失 (tcpi_丢失)
假定丢失的段数(仅限 Linux)

撤退 (tcpi_retrans)
未确认的重传段数(仅限 Linux)

TRET (tcpi_重传)
由重传超时 (RTO) 触发的重传次数(仅限 Linux)

ack (tcpi_fackets)
SND.UNA 和最高选择性确认之间的段数
序列号 (SND.FACK)(仅限 Linux)

重做 (tcpi_重新排序)
段重新排序指标。 Linux 内核可以检测并处理重新排序
如果段被移位的距离确实没有,则不会有显着的性能损失
不超过重新排序指标(仅限 Linux)

RTT (tcpi_rtt) 和 rtvar (tcpi_rttvar)
TCP 往返时间及其方差(以毫秒为单位)

RTO (tcpi_rto)
以毫秒为单位的重传超时时间

比克夫 (tcpi_退避)
RTO 退避次数(仅限 Linux)

ca (tcpi_ca_state)
TCP拥塞控制状态机的内部状态,如在
Linux内核。 可以是其中之一 打开, 紊乱, wr, 恢复 or (仅限 Linux)

可选 是正常状态。 它表示没有重复确认 (ACK)
已收到且没有任何段被视为丢失

紊乱
在接收到第一个连续重复的 ACK 或
选择性确认 (SACK)

压水堆 当来自显式拥塞通知 (ECN) 的通知时输入
收到

修复工具
当三个重复的 ACK 或等效数量的 SACK 被输入时
已收到。 在这种状态下,拥塞控制和丢失恢复程序如
执行快速重传和快速恢复 (RFC 5861)

损失 如果 RTO 到期,则进入。 再次拥塞控制和丢失恢复
程序被执行

短信PMTU
发送方最大段大小和路径最大传输单位(以字节为单位)

内部 流磨 (只要 启用 in 调试 构建)
状态 用于诊断目的的 flowgrind 内部流动状态。 这是一个二元组
值,第一个用于发送,第二个用于接收。 理想情况下的状态
流的源端点和目标端点都应该是对称的,但由于
它们不是同步的,它们可能不会同时改变。 可能的值
是:

c 方向完成发送/接收

d 等待初始延迟

f 故障状态

l 活动状态,尚未发送或接收任何内容

n 正常活动,一些数据被传输或接收

o 流在该方向上的持续时间为零,不会交换任何数据

作者


Flowgrind 最初由 Daniel Schaffrath 创立。 分布式测量
架构和高级流量生成后来由 Tim Kosse 和
克里斯蒂安·萨姆塞尔。 目前,flowgrind 开发和维护 Arnd Hannemann 和
亚历山大·齐默尔曼。

使用 onworks.net 服务在线使用 flowgrind


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad