我创建了一个基本的TCP服务器,该服务器以协议缓冲区格式读取传入的二进制数据,并写入一个二进制msg作为响应。我想对往返时间进行基准测试。

我尝试过iperf,但无法使其多次发送相同的输入文件。除了可以重复发送二进制输入文件之外,还有其他基准测试工具吗?

最佳答案

如果可以访问linux或UNIX机器1,则应使用tcptrace。您需要做的就是在使用wiresharktcpdump文件捕获时循环遍历二进制流量测试。

在拥有.pcap文件2之后,使用tcptrace -xtraffic <pcap_filename> 3进行分析。这将生成两个文本文件,该pcap中所有连接的平均RTT统计信息显示在一个名为traffic_stats.dat的底部。

[mpenning@Bucksnort tcpperf]$ tcptrace -xtraffic willers.pcap
mod_traffic: characterizing traffic
1 arg remaining, starting with 'willers.pcap'
Ostermann's tcptrace -- version 6.6.1 -- Wed Nov 19, 2003

16522 packets seen, 16522 TCP packets traced
elapsed wallclock time: 0:00:00.200709, 82318 pkts/sec analyzed
trace file elapsed time: 0:03:21.754962
Dumping port statistics into file traffic_byport.dat
Dumping overall statistics into file traffic_stats.dat
Plotting performed at 15.000 second intervals
[mpenning@Bucksnort tcpperf]$
[mpenning@Bucksnort tcpperf]$ cat traffic_stats.dat


Overall Statistics over 201 seconds (0:03:21.754962):
4135308 ttl bytes sent, 20573.672 bytes/second
4135308 ttl non-rexmit bytes sent, 20573.672 bytes/second
0 ttl rexmit bytes sent, 0.000 bytes/second
16522 packets sent, 82.199 packets/second
200 connections opened, 0.995 conns/second
11 dupacks sent, 0.055 dupacks/second
0 rexmits sent, 0.000 rexmits/second
average RTT: 67.511 msecs        <------------------
[mpenning@Bucksnort tcpperf]$


本示例中使用的.pcap文件是我遍历expect脚本(从一台服务器中提取数据)时生成的捕获。这就是我生成循环的方式...

#!/usr/bin/python
from subprocess import Popen, PIPE
import time

for ii in xrange(0,200):
    # willers.exp is an expect script
    Popen(['./willers.exp'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
    time.sleep(1)


您可以根据服务器的accept()性能和测试持续时间来调整循环之间的睡眠时间。



结束说明:


Knoppix Live-CD可以
已过滤以仅捕获测试流量
如果您使用其他选项,tcptrace可以提供非常详细的按套接字统计信息...


===============================
[mpenning @ Bucksnort tcpperf] $ tcptrace -lr willers.pcap
剩余1个参数,以'willers.pcap'开头
Ostermann的tcptrace-版本6.6.1-2003年11月19日星期三

看到16522个数据包,跟踪了16522个TCP数据包
经过的挂钟时间:0:00:00.080496,205252包/秒已分析
跟踪文件经过的时间:0:03:21.754962
TCP连接信息:
跟踪到200个TCP连接:
TCP连接1:
主机c:myhost.local:44781
主持人d:willers.local:22
complete conn:RESET(SYN:2)(FIN:1)
第一个封包:2011年5月31日星期二22:52:24.154801
最后一个数据包:2011年5月31日星期二22:52:25.668430
耗用时间:0:00:01.513628
数据包总数:73
文件名:willers.pcap
c-> d:d-> c:
数据包总数:34数据包总数:39
已发送重设:4已发送重设:0
发送的确认数:29
已发送的纯袜子:11已发送的纯袜子:2
已发送的麻袋包:0已发送的麻袋包:0
发送的dsack包数:0发送的dsack包数:0
最多麻袋大块/ ack:0最多麻袋大块/ ack:0
发送的唯一字节:2512发送的唯一字节:14336
实际数据数:17实际数据数:36
实际数据字节:2512实际数据字节:14336
rexmt数据包:0 rexmt数据包:0
rexmt数据字节:0 rexmt数据字节:0
zwnd探针包:0 zwnd探针包:0
zwnd探测字节:0 zwnd探测字节:0
乱序:0乱序:0
推送数据pkts:17推送数据pkts:33
发送的SYN / FIN数量:1/1发送的SYN / FIN数量:1/0
需求1323 ws / ts:是/年需求1323 ws / ts:是/年
副秤:6副秤:1
要求麻袋:Y要求麻袋:Y
已发送的麻袋:0已发送的麻袋:0
紧急数据包:0包紧急数据包:0包
紧急数据字节:0字节紧急数据字节:0字节
请求的mss:1460个字节请求的mss:1460个字节
最大segm大小:792字节最大segm大小:1448字节
最小segm大小:16个字节最小segm大小:32个字节
平均segm大小:147字节平均segm大小:398字节
最大获胜副词:40832字节最大获胜副词:66608字节
最小获胜广告:5888字节最小获胜广告:66608字节
零赢副词:0次零赢副词:0次
平均胜利广告:14035字节平均胜利广告:66608字节
初始窗口:32字节初始窗口:40字节
初始窗口:1包初始窗口:1包
ttl流长度:2512个字节ttl流长度:NA
丢失的数据:0字节丢失的数据:不适用
截断的数据:0字节截断的数据:0字节
截断的数据包:0包截断的数据包:0包
数据传输时间:1.181秒数据传输时间:1.236秒
空闲时间最大值:196.9毫秒空闲时间最大值:196.9毫秒
吞吐率:1660 Bps吞吐率:9471 Bps

RTT样本:18个RTT样本:24个
RTT最小值:43.8 ms RTT最小值:0.0 ms
最大值(RTT):142.5毫秒最大值(RTT):7.2毫秒
RTT平均:68.5毫秒RTT平均:0.7毫秒
RTT stdev:35.8 ms RTT stdev:1.6 ms

来自3WHS的RTT:80.8毫秒来自3WHS的RTT:0.0毫秒

RTT full_sz smpls:1 RTT full_sz smpls:3
RTT full_sz分钟:142.5毫秒RTT full_sz分钟:0.0毫秒
RTT full_sz最大值:142.5 ms RTT full_sz最大值:0.0 ms
RTT full_sz平均:142.5 ms RTT full_sz平均:0.0 ms
RTT full_sz stdev:0.0毫秒RTT full_sz stdev:0.0毫秒

丢失后袜子:0丢失后袜子:0
segs暨已确认:0 segs暨已确认:9
重复的支架:0重复的支架:1
三重背包:0三重背包:0
max#retrans:0 max#retrans:0
最小返回时间:0.0毫秒最小返回时间:0.0毫秒
最长恢复时间:0.0毫秒最长恢复时间:0.0毫秒
平均撤消时间:0.0毫秒平均撤消时间:0.0毫秒
sdv录制时间:0.0毫秒sdv录制时间:0.0毫秒
===============================

07-24 18:07