抖动率

链接:http://blog.chinaunix.net/u3/105477/showart_2088383.html

   关注点:
        有线场景中,Trace文件的格式;(此处不细说,因为很多Tutorial中很详尽!哈哈!)
        利用awk工具计算端到端延迟、抖动率、丢包率、吞吐量;
        利用gnuplot的基本命令,并将awk工具的分析结果用曲线图绘制出来!

 

 

 

注意:使用的tcl和上一个博文的tcl是一样的。

 

 

测量抖动率: measure-jitter.awk文件 #测量CBR数据包Jitter的awk代码
#针对out.tr的分析
#jitter=((recvtime(j)-sendtime(j)) - (recvtime(i)-sendtime(i)))/(j-i),  其中 j>i
 
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 {
  #初始化Jitter计算所需的变量
  last_seqno=0;
  last_delay=0;
  seqno_diff=0;
 
     # 当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<end) {
     #得到了delay 值(packet_duration) 后计算jitter
  seqno_diff=pkt_seqno[packet_id]-last_seqno;
  delay_diff=packet_duration-last_delay;
  if(seqno_diff==0) {
     jitter=0;
  } else {
     jitter=delay_diff/seqno_diff;
  }
     printf("%f %f/n", start, jitter);
  #更新变量,方便循环中的下一次计算
  last_seqno=pkt_seqno[packet_id];
  last_delay=packet_duration;
   }
    }
}

 

 

 

同上一篇一致的操作命令!(按照上一篇的命令修改即可)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值