【转】Leach协议学习(3)——Leach协议分析
来源:互联网 发布:oracle sql 优化 编辑:程序博客网 时间:2024/04/29 11:41
转自:http://hi.baidu.com/jerry_916/blog/item/20f9a5cef942d534f9dc6131.html
$ ./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;
}
- 【转】Leach协议学习(3)——Leach协议分析
- 收藏 Leach协议学习(3)——Leach协议分析
- Leach协议学习(4)——Leach协议改进
- 【转】Leach协议学习(1)——NS2.27+leach协议安装
- 【转】Leach协议学习(4)——Leach协议改进
- 【转】Leach协议学习(1)——NS2.27+leach协议安装
- 【转】Leach协议学习(4)——Leach协议改进
- LEACH协议
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- Leach协议性能分析(1)
- Leach协议性能分析(2)
- LEACH&LEACH-C仿真分析(3)
- LEACH&LEACH-C仿真分析(3)
- 一个小小的防盗链图片的filter
- 【转】Leach协议学习(2)——简单仿真测试
- 黑白二值化
- html向servlet通过url传递中文乱码
- 放大图片(真实放大,不加任何其他处理)
- 【转】Leach协议学习(3)——Leach协议分析
- 【转】Leach协议学习(4)——Leach协议改进
- 转--逆向思维的面试(一些小窍门吧)
- SEO工具软件
- 变种LZ77数据无损压缩算法
- 柳色青青
- linux用户态到内核态的切换
- 图片灰度反转
- 集成 Flex, Spring, Hibernate 构建应用程序