#這是測量CBR封包平均吞吐量(average throughput)的awk程式
BEGIN {
init = 0;
i = 0;
}
{
action = $1; # +/- 表示進入/離開了佇列 r/d表示封包被某個節點接收/丟棄
time = $2; # 事件發生的時間
from = $3; # 事件發生地點 (from node)
to = $4; # 事件發生地點 (to node)
type = $5; # 封包的型態
pktsize = $6; # 封包的大小
flow_id = $8; # 封包屬於哪個資料流
src = $9; # 封包的來源端 (a.b) a = 節點編號, b = port number
dst = $10; # 封包的目的端 (a.b) a = 節點編號, b = port number
seq_no = $11; # 封包的序號
packet_id = $12; # 封包的ID
if(action == "r" && from == 2 && to == 3 && flow_id == 2){
pkt_byte_sum[i+1] = pkt_byte_sum[i] + pktsize;
if(init == 0){
start_time = time;
init = 1;
}
end_time[i] = time;
i = i+1;
}
}
END{
#為了畫圖好看, 把第一筆記錄的throughput設為零, 以表示傳輸開始
printf("%.2f\t%.2f\n", end_time[0], 0);
for(j =1; j<i; j++){
#單位為kbps
th = pkt_byte_sum[j] / (end_time[j] - start_time)*8/1000;
printf("%.2f\t%.2f\n", end_time[j], th);
}
#為了畫圖好看, 把最後一筆記錄的throughput再設為零, 以表示傳輸結束
printf("%.2f\t%.2f\n", end_time[i-1], 0);
}
# 取自於柯志亨老師-計算機網路實驗 一書
全站熱搜
留言列表