- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
WSN中基于TinyDB路由模块的分析与改进
0 引言
TinyDB是由美国加州大学伯克利分校的研究人员开发的一个无线传感器网络数据库的原型系统。它将整个无线传感器网络视为一个虚拟的数据库系统,并支持类SQL查询。传感器网络上的所有数据类型,包括各种类型的传感器数据、静态数据都关系表中的一个字段,目前系统的关系表只有一个Sensors表。而实现上,它是由两部分组成的,一部分作为数据库前端,接收普通的查询和控制命令,以及基于事件的查询,同时由TinyDB根据传感器网络的能量自动调整执行周期的查询;另一部分是运行在节点上的嵌入式数据库引擎,具体负责传感器网络中的数据管理,以及同时执行多个查询等。
1 TinyDB构成及软件介绍
TinyDB系统主要是由客户端、TinvDB Server和传感器网络节点端三个部分组成。客户端安装有基于Java的应用程序接口(TinyDB客户端API),用户通过该接口来使用TinyDB。传感器网络中的每一个节点都会安装TinvDB的传感器网络软件(TinyDB QP)。
TniyDB的客户端软件包括两部分:一部分是类似于SOL语言的查询语言TinySQL,是供终端用户使用的。它屏蔽了无线传感器网络的细节,通过作为应用接口的数据库前端,用户看到的是一个数据库系统,故只需要使用类SOL进行数据查询检索即可。即:
另一部分是基于Java的应用程序界面,主要支持用户使用TinyDB编写应用程序构成,主要功能包括查询请求的接收、验证、优化,查询的管理和查询结果的接收,发送控制命令,与无线传感器网络相连接,建立数据库与用户交互的界面等。图1所示展示了TinyDB应用程序的功能。
传感器网络节点端的软件包括四个用nesC语言编写的构件:传感器节点目录及模式管理器、查询处理器、存储管理器和网络拓扑管理器。传感器节点目录负责记录每个节点的属性"。
查询处理器负责完成查询处理工作,使用传感器目录存储的信息可以获得传感器节点的属性。存储管理器由MemAlloc.allocComplete()和MemAlloc.compactComplete()来触发相应的事件。网络拓扑管理器可为TinyDB处理所有传感器节点到传感器节点以及传感器节点到基站间的通信,即路由查询和数据信息。
2 网络拓扑模块的具体分析
网络拓扑管理器使用简单的树维护算法来建立一个以汇聚节点为根节点的树型拓扑结构,每个传感器节点保存一个邻居节点表,并在这些邻居节点中选择一个节点作为它在路由树中的父节点。其具体实现流程图如图2所示。
2.1 发送阶段分析
在发送阶段,首先是初始化,即设置一些参数为默认值,可设置汇聚节点(节点ID号为0)父节点为自身,跳数为0。计算gUpdateInterval=TADA_TO_ROUTE_RATIO*DATA_FREQ,也就是一个路由更新报文的时间。
然后是执行TimerTask(),每隔gUpdateInterval的时间执行一次TimerTask ()任务。主要包括更新路由表,选择父节点,发送数据包等。
更新路由表就是通过计数器控制每隔十个gUpdateInterval触发一次做邻居表项的更新计算,可由updateTable()调用updateEst ()来实现。主要是更新路由表项中的跳数和通信代价。
计算代价函数主要是链路估计,其基本思想是由节点统计一定时间内从某个邻居节点接收到的分组占该邻居节点发往该节点的分组数量的比重。链路估计包括发送代价估计和接收代价估计两个部分,并用这两个值来表示链路的双向通信代价。此外,还应综合原先的链路估计以决定新的链路估计值。
这里以节点A为例,经过一段时间的统计后,它可以得到来自邻居节点B的接收分组数目,而节点B会在自己的路由状态广播中告知向节点A发送分组的数目。这二者的商就是节点A接收节点B发送的分组成功率,可用RcvEstA/B表示,用公式表示如下:
RcvEstA/B=RcvCountA/SendCountB。
同样,节点B也可以计算出接收节点A的发送分组成功率,并在节点B的周期性路由状态广播中报告自己到所有邻居节点的接收成功率,其邻居节点A则将节点B的接收成功率作为自己的发送成功率,用公式表示为:
SendEstA/B=RcvEstB/A
节点到邻居节点的双向链路估计是节点发送和接收成功率的乘积:
Est=SendEst·RctEst。
由于节点在短时间内收到的分组数量随时间不同,其抖动比较大,因此,为了减少链路*估的抖动,可采用指数加权位移平均(Exponential Weighted Moving Average,EWMA)来计算最终的链路估计值。EstFinal=EstOld*α+EstNew*(1-α)。在现实中,α常取0.75。
来源:维库开发网