nsaddr_t replynode; //指定应答节点号 int level;
int state; //节点状态 static int offset_;
inline static int& offset(){ return offset_;} inline static hdr_my* access(const Packet* p){ return(hdr_my*)p->access(offset_); } };
然后进行Otcl绑定
static class EchoHeaderClass : public PacketHeaderClass{
public:EchoHeaderClass(): PacketHeaderClass(\ bind_offset(&hdr_my::offset_); }
}class_myhdr;
(3)另外,为了在MAC层作时间标记,还需修改NS2中MAC层协议,即mac-802_11.cc文件:在发送端,确认本次协商成功开始进行传输时加发送时间标记;接收端,在数据接收完时作时间标记,并把这些时间标记放在协议头的数组里面,以便上层计算过以上扩展,就可以进行新时间同步算法仿真试验了。
(4)为了方便起见,采取根节点固定在坐标原点(0,0),即图上最左下方,其他节点随机分布。仿真800m*800m的空间中的17个节点,节点间最大通信距离为不超过250 m,如图4-1所示:
[10]
。通
图4-1 无线传感器网络NS2拓扑图
12
(5)分别以10,12,15,17个节点运行仿真,得到out.tr文件,结合新版本NS2无线Trace格式说明,通过分析后,得到时间数据。如图4-2所示:
图4-2 时间数据的获取
(6)将能量开销数据文件找出来记录在new.data中,再通过与TPSN的能量开销tpsn.data的比较,采用NS2自带绘图工具Gnuplot画出二维结果图4-3:
图4-3 新算法和TPSN算法性能比较
13
采用的命令过程: $Gnuplot
Gnuplot>set xlabel”number of node” #设定x轴名称为 节点数量 Gnuplot>set ylabel”unit of energy” #设定y轴名称为 能量单位
Gnuplot>plot “new.data” with linespoints, ”tpsn.data”with linespoints #同时绘制两个曲线 总结:
从上图可以看出,随着节点数量的增多,new算法的能量开销的呈现较TPSN来说增长速度慢,也从实验的角度说明了新算法拥有较低的能量开销,在无线传感器网络中,节点的通信开销是节点能量开销中最重要的部分。
3.3总结和展望
由于NS2网络仿真模拟软件的入门困难,可以找到的各种参考资料有限,仿真模拟部分只对改进的new算法节点的节点能量开销做了实验仿真探索。
在今后的学习工作研究中,有待于进一步地学习使用NS2网络仿真模拟软件和NS2平台上的MAC层时标修改技术,更好的去模拟验证无线传感器网络时间同步算法协议的各个方面。
14
参考文献
[1] 孙利民,李建中,无线传感器网络[M]. 清华大学出版社,2005. [2] 李晓维. 无线传感器网络技术. 北京理工大学出版社 2007. [3] 唐宏. 无线传感器网络原理及应用. 人民邮电出版社.
[4] 周贤伟,韦炜,覃伯平. 无线传感器网络的时间同步算法研究[J]. 传感技术学报. [5] 谢希仁. 计算机网络(第四版). 电子工业出版社.2003.
[6] 康冠林,王福豹,段渭军. 无线传感器网络时间同步综述. 计算机测量与控制.2005. [7] 刘晓璐,周书名. 无线传感器网络时间同步算法的比较. 传感器世界.2010. [8] 徐雷鸣,庞博,赵耀. NS与网络模拟. 人民邮电出版社.2003. [9] 魏蛟龙,肖艳华. NS体系结构极其扩展. 计算机仿真. 2004.
[10] 方路平,刘世华,陈盼等. NS-2网络模拟基础与应用. 国防工业出版社.2008
[11] S.Ganeriwal, R.Kumar and M.B.Srivastava. Timing-Sync protocol for Sensor Networks. ACM Press,2003.
15
附 录
仿真拓扑new.tcl文件NS2代码
#=================================== # Simulation parameters setup
#===================================
set val(chan) Channel/WirelessChannel ;# channel type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model set val(netif) Phy/WirelessPhy ;# network interface type set val(mac) Mac/802_11 ;# MAC type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type set val(ll) LL ;# link layer type set val(ant) Antenna/OmniAntenna ;# antenna model set val(ifqlen) 50 ;# max packet in ifq set val(nn) 17 ;# number of mobilenodes set val(rp) DSDV ;# routing protocol
set val(x) 747 ;# X dimension of topography set val(y) 700 ;# Y dimension of topography set val(stop) 2.0 ;# time of simulation end
#=================================== # Initialization
#=================================== #Create a ns simulator set ns [new Simulator] #new version trace $ns use-newtrace ;
set tracefd [open new.tr w] ; $ns trace-all $tracefd ; #Setup topography object set topo [new Topography] $topo load_flatgrid $val(x) $val(y) create-god $val(nn)
#Open the NS trace file set tracefile [open out.tr w] $ns trace-all $tracefile
#Open the NAM trace file set namfile [open out.nam w] $ns namtrace-all $namfile
$ns namtrace-all-wireless $namfile $val(x) $val(y) set chan [new $val(chan)];#Create wireless channel
16