#這是測量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);


}

# 取自於柯志亨老師-計算機網路實驗   一書
arrow
arrow
    全站熱搜

    NS2lab 發表在 痞客邦 留言(0) 人氣()