私が持っているファイルから応答時間を計算したいと思います。応答時間は、ソース (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) です。次のようなことを考えていました。
開始されたリクエストの時間を記録するには:
$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 つの列として 2 つの方法である可能性があります。
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
私の問題コードを自動化する方法がわからないので、トレースファイル全体を調べて、応答時間の値を保存できます。最後に、グラフの応答時間が必要です。助言がありますか?他のスクリプト言語は気にしないでください。