0

私が持っているファイルから応答時間を計算したいと思います。応答時間は、ソース (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

私の問題コードを自動化する方法がわからないので、トレースファイル全体を調べて、応答時間の値を保存できます。最後に、グラフの応答時間が必要です。助言がありますか?他のスクリプト言語は気にしないでください。

4

1 に答える 1