measure-delay.awk
上传用户:yjhhw123
上传日期:2014-05-29
资源大小:1824k
文件大小:1k
源码类别:

网络

开发平台:

Others

  1. BEGIN {
  2. #程式初始化,設定一變數以記錄目前最高處理封包的ID。
  3.      highest_packet_id = 0;
  4.      n=0;
  5.      tm=0;
  6. }
  7. {
  8.    action = $1;
  9.    time = $2;
  10.    flow_id = $4; 
  11.    packet_id = $6;
  12.  
  13. #記錄目前最高的packet ID
  14.    if ( packet_id > highest_packet_id )
  15.                 highest_packet_id = packet_id;
  16.  
  17. #記錄封包的傳送時間
  18.    if ( start_time[packet_id] == 0 ) 
  19.                start_time[packet_id] = time;
  20.  
  21. #記錄接收時間
  22.    if ( flow_id == "AGT" && action != "d" ) {
  23.       if ( action == "r" ) {
  24.          end_time[packet_id] = time;
  25.       }
  26.    } else {
  27. #把不是flow_id="AGT"的封包或者是flow_id="AGT"但此封包被drop的時間設為-1
  28.       end_time[packet_id] = -1;
  29.    }
  30. }                                                                                                           
  31. END {
  32. #當資料列全部讀取完後,開始計算有效封包的端點到端點延遲時間 
  33.     for ( packet_id = 0; packet_id <= highest_packet_id; packet_id++ ) {
  34.        start = start_time[packet_id];
  35.        end = end_time[packet_id];
  36.        packet_duration = end - start;
  37. #只把接收時間大於傳送時間的記錄列出來
  38.        if ( start < end ) {
  39.                           n += 1;
  40.                           tm += packet_duration;}
  41.    }
  42.    #输出平均传输时延
  43.        printf("%fn", tm/n);
  44. }