Chinaunix首页 | 论坛 | 博客
  • 博客访问: 846581
  • 博文数量: 180
  • 博客积分: 10029
  • 博客等级: 上将
  • 技术积分: 2185
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-06 09:15
文章存档

2010年(133)

2009年(47)

我的朋友

分类: 系统运维

2009-11-06 21:17:31

E-mail:
 
   针对NS2入门实例3的场景,我们利用awk 和 gnuplot工具做更加深入的分析,演示科学实验中对Trace文件做深入分析的一般方法!
   关注点:
        有线场景中,Trace文件的格式;(此处不细说,因为很多Tutorial中很详尽!哈哈!)
        利用awk工具计算端到端延迟、抖动率、丢包率、吞吐量;
        利用gnuplot的基本命令,并将awk工具的分析结果用曲线图绘制出来!
 
        NS2入门实例3模拟后得到的out.tr文件此处不给出,请自行仿真获得!哈哈
 
      第一篇: 端到端延迟的测量---实现的全过程!
 
       端点到端点的延迟: measure-delay.awk文件
 
#测量CBR数据包端点到端点间延迟时间的awk代码
#针对out.tr的分析
 
BEGIN {
     #初始化, 设置变量以记录目前已处理数据包的最大ID号
     highest_packet_id=0;
  }
  {
  #将out.tr文件的相应字段赋值给变量
  action=$1;
  time=$2;
  from=$3;
  to=$4;
  type=$5;
  pktsize=$6;
  flow_id=$8;
  src=$9;
  dst=$10;
  seq_no=$11;
  packet_id=$12;
 
  #记录目前已处理数据包的最大ID号
  if (packet_id>highest_packet_id)
      highest_packet_id=packet_id;
 
  #记录数据包的发送的时间
  if (start_time[packet_id]==0)
      start_time[packet_id]=time;
  
     #记录 CBR (其flow_id=2, 与具体情况有关哦!) 的接收时间
  if (flow_id==2 && action!="d") {
      if (action=="r") {
       end_time[packet_id]=time;
  }
      }else {
     #把不是CBR数据包或者被DROP掉的CBR数据包的接收时间设置为 -1;
        end_time[packet_id]=-1;
      }
    }
 
    END {
     # 当out.tr中数据行全部读取完后,开始计算有效数据包的端到端的时间延迟
     for ( packet_id=0; packet_id <= highest_packet_id; packet_id++) {
        start=start_time[packet_id];
        end=end_time[packet_id];
        packet_duration=end-start;
     #显然,只把接收时间晚于发送时间的记录列出来哦!
     if (start    }
  运行一下命令: awk或gawk
     $gawk -f measure-delay.awk out.tr     //直接在命令窗口显示
     或
     $gawk -f measure-delay.awk out.tr > cbr_dealy   // 将结果存储到文件中
    
     gnuplot> plot "cbr_delay"
 
       
 
  在图示结果上做标识:
     

#运行以下命令:

gnuplot> set title "cbr_delay"

gnuplot> set xlabel "simulation time"

gnuplot> set ylabel "delay time"

gnuplot> unset key

gnuplot> set label "constant delay=0.038706 sec"at 0.1,0.05

gnuplot> set arrow from 0.5,0.05 to 0.5,0.04

gnuplot> plot "cbr_delay"

#进一步改进!

gnuplot> plot "cbr_delay" with linespoints

    
 
 
 
       
E-mail:

 

阅读(5750) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

科比斯曼2017-09-20 11:06:45

chinaunix网友: if (start_time[packet_id]==0) start_time[packet_id]=time; 楼主请问这个start_time[packet_id]是这么设置的么?我看不懂哦,系统应该不会自动给他赋值吧?

老哥,也在学这个,这地方,也不太明白,你后来解决了吗?

回复 | 举报

chinaunix网友2010-08-28 00:22:25

请教一下:除了产生trace file 然后对它进行后期处理 有没有其它方法不会产生大的trace file 而且能够得到延迟和丢包率呀? 多谢了

chinaunix网友2010-04-07 19:48:43

if (start_time[packet_id]==0) start_time[packet_id]=time; 楼主请问这个start_time[packet_id]是这么设置的么?我看不懂哦,系统应该不会自动给他赋值吧?