[转] 网路模拟软体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
………………
浙公网安备 33010602011771号