WSN(Wireless Sensor Network)是由部署在检测区域内的成百上千个低成本、低功耗、小尺寸、多功能的传感器节点组成,通过无线通信方式形成的单跳或多跳的自组织网络系统,其目的是感知、采集和处理网络覆盖区域中感知对象的信息,并发送给观察者。WSN被广泛地应用于军事、商业、医疗救护和环境监测等多方面。
根据节点的拓扑结构可以分为平面路由协议和层次路由协议[1]。
平面路由协议简单,健壮性很好,但它的可扩展性很差。层次路由协议一般分为初始化阶段和数据传输阶段。算法不同,而当选的簇头可能不同,而数据传输的过程基本一致。
1 均匀分簇路由协议——LEACH协议
在初始化阶段[2-3],每个节点产生一个0~1之间的随机数,如果小于阈值[2-3],则此节点便是簇头,它就会向周围节点广播它是簇头的消息。根据接收信号的强度,普通节点选择其要加入的簇,并告知相应的簇头,此时所有的簇头都必须处于接收状态。当簇头接收到所有的加入信息后,就产生TDMA消息,通知本簇内所有节点的工作时间。
在数据传输阶段[2],普通节点按照TDMA[4]时隙向簇头发送数据。簇头把接收到的数据融合之后再转发给sink。一段时间后,重新选择簇头。
该协议随机选举簇头避免了簇头能量过早消耗完,延长了网络的生存时间,但数据传送是采用单跳的方式,使得距sink较远的簇头花费能量很大,导致生存时间变短;频繁地选举簇头也会消耗能量。为了节省资源开销,数据传输阶段的时间要长于初始化阶段的时间。
2 非均匀分簇路由协议
2.1 EEUC协议
在初始化阶段,sink向全网广播一个信号,节点根据接收信号的强度计算它到sink的距离。根据预先设置的概率阈值[5],选出部分节点成为候选簇头参与竞争,未参与竞争的节点进入睡眠状态,直到竞选过程结束。Si为任一候选簇头,它到sink的距离为它的竞争半径[6],若Si获胜,则在竞争半径内所有的候选簇头均要退出竞选。候选簇头的竞争半径随着簇头到sink距离的减小而减小。
在数据传输阶段,普通节点将收集到的数据传送给簇头,簇头进行处理之后将数据以多跳的方式传送到sink。
2.2 DEBUC协议
该协议采用基于时间的簇头竞争算法。广播时间取决于候选簇头的剩余能量和其邻居节点的剩余能量。距sink较近的候选簇头竞争范围较小,这样这些簇头在簇内通信中消耗的能量较少,节省下来的能量用于簇间的数据转发。在数据传输阶段,采用簇间多跳路由协议。
初始化阶段,普通节点根据接收到sink发出信号的强弱计算其与sink的大概距离。首先设置一个门限值以控制候选簇头的比例,同时也为每个候选簇头设置一个竞争半径[7],候选簇头的竞争半径正比于它与sink的距离。
候选簇头广播消息,而普通节点休眠,接收到消息的候选簇头更新其邻居节点信息表,候选簇头依据自身的时间进度广播FINAL_HEAD_MSG[7]消息,宣布自己成为簇头。簇头选择完成后,普通节点退出休眠,簇头广播消息,普通节点根据接收信息的强弱加入最近的簇头,并通知簇头,中继节点不具有数据融合的能力。首先簇头广播一条消息,如果邻居簇头到sink的距离较小,则簇头计算与邻居簇头的大概距离,并建立一个邻居簇头信息表;簇头运用贪婪算法在其邻居簇头集合中选择其中继节点,如果簇头的中继节点是本身,则直接发送数据到sink,否则簇头发送数据至中继节点;当每个簇头都找到中继节点,则簇间多跳路由建立。
在数据传输阶段,簇头先对接收到的数据进行融合处理,然后将处理结果发送到sink。
随着簇头能量的减少,非均匀分簇路由协议的竞争半径逐渐减小,这就需要重新成簇,能量减少的越多,成簇的簇数就越多,所以在成簇的过程中,就需要消耗更多的能量,有的节点在成簇的过程中,会把剩余的能量消耗完。
3 PEGASIS协议
PEGASIS协议假定所有节点都具有网络拓扑的全局知识,在建链阶段[8-10],首先从距离sink最远的节点开始建链,这个节点根据贪婪算法寻找距自己最近的节点加入链,以此类推,所有的节点都按照这种方法加入链。在数据通信阶段[8-9],链上的每个节点只与自己的邻居节点通信,将收到的数据与自身数据融合后传输给下一跳的邻居节点,一直传送到链首节点,最后由链首节点将数据传送给sink。
通过对以上典型路由算法的分析,可以发现仍然存在以下问题:
(1)在分簇阶段,仍然要浪费能量用来建立簇。
(2)许多协议都假设传感器节点和sink不动,一旦传感器节点动起来,这些协议就很有可能不再成立。
(3)非均匀分簇路由协议缓解了“热区”,但随着簇头能量减少,竞争半径减小,就需要网络拓扑结构是动态的,以便很快地更新网络的拓扑结构,网络拓扑结构的更新要消耗更多能量来实现。
(4)非均匀分簇算法要求网络中传感器节点最好是均匀分布的,如果在靠近sink的区域中传感器节点分布的密度很大,而在远离sink的区域中传感器节点的分布密度很小,那么靠近sink的簇头仍然会形成“热区”。这就需要有更好的协议来解决这样的问题。
(5)多数协议在考虑传感器节点失效退出网络或者有新的节点加入网路时,网络的拓扑变化采用的办法都是重新分簇。如果加入网络的节点很少,重新分簇浪费的能量会很大,这就需要协议具有很高的容错性来应对网络的拓扑变化。
(6)随着网络规模越来越大,现阶段的算法根本不能满足超大规模网络的要求,就需要提出一种多层分簇算法。在多层分簇算法中,如果层数很多,则可能会有一些节点在初始化阶段就已经把能量用完了;如果层数很少,则根本不能体现多层分簇算法的优越性。所以在运用分层算法时,需要考虑层数为多少时才是最合适的。
随着WSN路由技术的发展,会有越来越多的新算法被提出,新算法应该可以更好地应对簇头的负载平衡,尽量减小在簇的形成阶段由于拓扑而造成的能量浪费。总之,WSN路由技术的研究离不开负载平衡、能量高效、网络寿命等热点问题。