[转] 网路模拟软体NS2来做网路效能分析需看的文章(三) 转载

[Loss]

笔者把量测CBR Packet Loss的情况写在档桉measure-drop.awk内。

 

BEGIN {

#程式初始化,设定一变数记录packet被drop的数目

               fsDrops = 0;

               numFs = 0;

}

{

   action = $1;

   time = $2;

   node_1 = $3;

   node_2 = $4;

   src = $5;

   flow_id = $8;

   node_1_address = $9;

   node_2_address = $10;

   seq_no = $11;

   packet_id = $12;

#统计从n1送出多少packets

               if (node_1==1 && node_2==2 && action == "+")

                               numFs++;

              

#统计flow_id为2,且被drop的封包

               if (flow_id==2 && action == "d")

                               fsDrops++;

}

END {

               printf("number of packets sent:%d lost:%d\n", numFs, fsDrops);

}

 

执行方法: ($为shell的提示符号)
$awk -f measure-drop.awk out.tr

执行结果:
number of packets sent: 550 lost:8

这代表CBR送出了550个封包,但其中8个封包丢掉了。

 

[Throughput]

笔者把量测CBR Throughput的情况写在档桉measure-throughput.awk内。在这裡的Throughput是指average throughput。

 

BEGIN {

               init=0;

               i=0;

}

{

               action = $1;

            time = $2;

            node_1 = $3;

            node_2 = $4;

            src = $5;

            pktsize = $6;

            flow_id = $8;

            node_1_address = $9;

            node_2_address = $10;

            seq_no = $11;

            packet_id = $12;

  

              if(action=="r" && node_1==2 && node_2==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++){

                               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);

}

 

执行方法: ($为shell的提示符号)
$awk -f measure-throughput.awk out.tr

若是要把结果存到档桉,可使用导向的方式。(把结果存到cbr_throughput档桉中)
$awk -f measure-throughput.awk out.tr > cbr_throughput

执行结果:
0.14        0.00
0.15        1000.00
0.15        1000.00
0.16        1000.00
………………

posted on 2012-06-29 09:51  haivey  阅读(208)  评论(0)    收藏  举报

导航