应用实例3的端到端延迟的测量---实现的全过程!

来源:互联网 发布:淘宝手机端主图大小 编辑:程序博客网 时间:2024/06/02 02:13

端点到端点的延迟: 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<end) printf("%f %f\n", start, packet_duration);
}

}

运行一下命令: 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

原创粉丝点击