我想从我拥有的文件中计算响应时间。响应时间将是从源 (A) 发送数据包到源 (A) 从目标 (B) 接收到 ack 之间的时间。使用 awk 将是提取响应时间的答案。但是,我对如何应用逻辑有点困惑。跟踪文件的下面部分:
+ 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
- 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
+ 0.101172 6 0 tcp 40 ------- 1 6.1 2.1 0 1
- 0.102032 0 1 tcp 40 ------- 1 6.0 2.0 0 0
+ 0.102394 6 0 tcp 40 ------- 1 6.2 2.2 0 2
.......
.....
+ 0.112517 6 0 tcp 40 ------- 1 6.6 2.6 0 6
+ 0.122096 1 2 tcp 40 ------- 1 6.0 2.0 0 0
.....
r 0.148256 0 6 ack 40 ------- 1 2.0 6.0 0 7
r 0.149428 0 6 ack 40 ------- 1 2.1 6.1 0 8
...
在此示例中,我将重点关注源 (6) 和目标 (2) 之间的通信。所以响应时间将(0.148256 - 0.1)。
r 0.148256 0 6 ack 40 ------- 1 2.0 6.0 0 7
这一行表明收到了从 2 端口 0 ($9) 到源 6 端口 0 ($10) 的 ack 回复,而示例中的第一行:
+ 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
显示请求是由源 (6) 端口 0 ($9) 向目标 (2) 端口 0 ($10) 发出的。整个跟踪文件的目标始终是 (2),我在想类似这样的事情: 注意:每次更改端口(这是 9 美元或 10 美元的一部分)号码时,这意味着新的请求连接。
记录发起请求的时间:
$1 == "+" && $5 == "tcp" && $6 == 40 && $10== 2.port && $9==source.port ) {
print $2; // would be the start
}
记录收到回复的时间;
$1 == "r" && $5 == "ack" && $6 == 40 && $9== 2.port && $10==source.port ) {
print $2; // would be the end
}
预期的输出可以有两种方式作为一列:
1) 基于流 id 即流 1:
source: 6.0 - 2.0 ---> response time: 0.148256 - 0.1
source: 6.1 - 2.1 ---> response time : end-start
source: any source.port-2.port --> response time : end-start
我的问题我不确定如何自动化代码,所以我可以查看整个跟踪文件并存储响应时间的值。最后我想要图形响应时间。有什么建议么?不要介意其他脚本语言!