分类: 系统运维
2014-08-14 15:33:38
#测量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 } |
#运行以下命令: 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 |