2010-11-25, Thanksgiving Day, wcdj
在运行完./test脚本后,leach协议的仿真运行过程会在leach.err和leach.out文件中有详细的记录。leach.err文件记录的是仿真过程的错误信息和提示;leach.out文件记录了数据的收发、簇首的变化以及节点能量消耗等信息(可以通过vim打开leach.out文件可以看到)。
例如:
At 500:
Total Energy = 235.84470406204511
Total Data = 50446
Total Alive = 69
leach.out可以在~/ns-allinone-2.27/ns-2.27/mit/leach_sims目录下找到,这个目录是在leach_test这个脚本文件中设置的,leach_test脚本位于~/ns-allinone-2.27/ns-2.27/目录下。首先会很奇怪地注意到leach.out文件比较大,我这里大概有6M的样子,用vim打开leach.out文件会发现里面有很多类似下面的warnings:
Warning dst_ is no longer being supported in NS. dst_ 0xffffffff
Use dst_addr_ and dst_port_ instead
为了方便对这个文件进行分析,应该首先将这些垃圾信息remove掉。通过下面的方法可以做到:
PS:这里插入一下,使用下面这个网站可以翻墙访问一些打不开的资源。
在线翻墙网站:http://www.proxyie.cn/free-web-proxy.php
解决方法可以在这个网页找到:http://ns2.blogspot.com/ (英文)
为了方便起见,将内容粘贴如下:
dst_ is deprecated
Problem:
Warning dst_ is no longer being supported in NS. dst_ 0xffffffff
Use dst_addr_ and dst_port_ instead
Fix:
I replaced:
[$self agent] set dst_ $mac_dst
with this:
[$self agent] set dst_addr_ $mac_dst
Port is assumed to be zero.
详细修改过程如下:
[1] 修改~/ns-allinone-2.27/ns-2.27/mit/uAMPS/ns-leach.tcl文件
使用vim查找 :/dst_,定位到654行,将此行注释掉,并按o在此行下面添加如下两行:
# [$self agent] set dst_ $mac_dst # modified as below two lines
[$self agent] set dst_addr_ $mac_dst
[$self agent] set dst_port_ 0
[2] 修改~/ns-allinone-2.27/ns-2.27/mit/uAMPS/ns-bsapp.tcl文件
如[1]中所示,做同样修改,在207行。
最后重新运行测试脚本:./test,再打开leach.out文件会发现那些warnings已经没有了,记录的都是有用的信息,此时文件大小变为978KB(<<6MB)。