$ ./test
结果文档在 mit/uAMPS/sims文件夹下,分别为: wireless.alive wireless.energy wireless.data
wireless.alive第一行是运行时间,第二行就节点ID,第三行是如果是1,表示该节点还存活,如果是0,则表示节点死亡。 wireless.energy和 wireless.data也是同样的结构,对于leach产生的数据,可分为很多方面,如节点能量消耗,节点存活数量,速率,节点之间发送与接收数据等。
对于 leach.alive,可分析节点存活数, gwak –v outfile=live –f getNodelive.awk leach.alive,其中getNodelive.awk需要自己编写;
getNodelive.awk文件如下:
BEGIN{
step=10; #间隔时间
time=0;
i=0;
j=0;
}
{if($3==0){ i++; }
j++;
if(j==20){
j=0;
printf"%d %d\n",time,20-i>>outfile;
time+=step;
i=0;
}
}
对于 leach.energy,可分析节点的能量消耗,如
gawk ‘{if($2==18){ if($3>2) $3=2; print $1,$3>>18.data;} if($2==65){if($3>2) $3=2; print $1,$3>>65.data}}’ leach.energy (节点18和节点65)
对于 leach.tr,可以分析的相当多,如分析节点间发送和接受数据关系
gawk -v src=8 -v dst=29 -v outfile1=node8 -v outfile2=node29 -f getNodeRecv1.awk leach-out.tr
getNodeRecv1.awk 文件如下:
# getNodeRecv1.awk
BEGIN {largest_seq=0;
packet_send++;
}
{
if($1=="s")
{
if($6>largest_seq)largest_seq=$6;
}
if($1=="s"&&$3==("_" src "_")&&$4=="AGT")
{
packet_send++;
send_time[$6]=$2;
}
if($1=="r"&&$3==("_" dst "_")&&$4=="MAC")
{
packet_rcvd++;
rcvd_time[$6]=$2;
}
}
END{
for(i=0;i<largest_seq;i++)
{if(rcvd_time[i]!=0)
{printf"%f %d\n",rcvd_time[i],i>>outfile2;}
if(send_time[i]!=0)
{printf"%f %d\n",send_time[i],i>>outfile1;}
}
}
getRatio1.awk文件如下:
# 速率
# 初始化设定
BEGIN {
sendLine = 0;
recvLine = 0;
fowardLine = 0;
}
# 应用层收到包
$0 ~/^s.* AGT/ {
sendLine ++ ;
}
# 应用层发送包
$0 ~/^r.* AGT/ {
recvLine ++ ;
}
# 路由层转发包
$0 ~/^f.* RTR/ {
fowardLine ++ ;
}
# 最后输出结果
END {
printf "cbr s:%d r:%d, r/s Ratio:%.4f, f:%d \n", sendLine, recvLine, (recvLine/sendLine),fowardLine>>outfile;
}
结果文档在 mit/uAMPS/sims文件夹下,分别为: wireless.alive wireless.energy wireless.data
wireless.alive第一行是运行时间,第二行就节点ID,第三行是如果是1,表示该节点还存活,如果是0,则表示节点死亡。 wireless.energy和 wireless.data也是同样的结构,对于leach产生的数据,可分为很多方面,如节点能量消耗,节点存活数量,速率,节点之间发送与接收数据等。
对于 leach.alive,可分析节点存活数, gwak –v outfile=live –f getNodelive.awk leach.alive,其中getNodelive.awk需要自己编写;
getNodelive.awk文件如下:
BEGIN{
step=10; #间隔时间
time=0;
i=0;
j=0;
}
{if($3==0){ i++; }
j++;
if(j==20){
j=0;
printf"%d %d\n",time,20-i>>outfile;
time+=step;
i=0;
}
}
对于 leach.energy,可分析节点的能量消耗,如
gawk ‘{if($2==18){ if($3>2) $3=2; print $1,$3>>18.data;} if($2==65){if($3>2) $3=2; print $1,$3>>65.data}}’ leach.energy (节点18和节点65)
对于 leach.tr,可以分析的相当多,如分析节点间发送和接受数据关系
gawk -v src=8 -v dst=29 -v outfile1=node8 -v outfile2=node29 -f getNodeRecv1.awk leach-out.tr
getNodeRecv1.awk 文件如下:
# getNodeRecv1.awk
BEGIN {largest_seq=0;
packet_send++;
}
{
if($1=="s")
{
if($6>largest_seq)largest_seq=$6;
}
if($1=="s"&&$3==("_" src "_")&&$4=="AGT")
{
packet_send++;
send_time[$6]=$2;
}
if($1=="r"&&$3==("_" dst "_")&&$4=="MAC")
{
packet_rcvd++;
rcvd_time[$6]=$2;
}
}
END{
for(i=0;i<largest_seq;i++)
{if(rcvd_time[i]!=0)
{printf"%f %d\n",rcvd_time[i],i>>outfile2;}
if(send_time[i]!=0)
{printf"%f %d\n",send_time[i],i>>outfile1;}
}
}
getRatio1.awk文件如下:
# 速率
# 初始化设定
BEGIN {
sendLine = 0;
recvLine = 0;
fowardLine = 0;
}
# 应用层收到包
$0 ~/^s.* AGT/ {
sendLine ++ ;
}
# 应用层发送包
$0 ~/^r.* AGT/ {
recvLine ++ ;
}
# 路由层转发包
$0 ~/^f.* RTR/ {
fowardLine ++ ;
}
# 最后输出结果
END {
printf "cbr s:%d r:%d, r/s Ratio:%.4f, f:%d \n", sendLine, recvLine, (recvLine/sendLine),fowardLine>>outfile;
}