3.4.1 平面路由协议
常见的平面路由协议有Flooding、Gossiping、SPIN等。平面路由指的是在网络中各节点的路由功能地位相同,并且不引入分层管理机制。它的优点是易于实现,健壮性强,无特殊节点,网络流量均匀分散在网络中。它的缺点是能耗高,实现数据传输的跳数较多,在一定程度上限制了网络的规模。因此,平面路由的适用范围是小规模网络。
1.Flooding协议
Flooding协议又称洪泛协议,是一种以数据为中心的平面路由协议。Flooding协议在传感器网络中应用较早,它也是较为经典的一种平面路由协议。
Flooding协议极易实现,它不需要维护网络拓扑结构和路由算法,且每个节点的地位等价,节点只将所收到的数据包广播出去,直到数据包到达目的节点,或者直到数据包的传输达到最大跳TTL,亦或是所有节点都有此数据包副本时结束。
图3-1简单描述了Flooding协议的工作过程:假设源节点A需要将数据包P发送至汇聚节点D,则节点A首先将P的副本广播,则其邻居节点B接收到P的副本,然后节点B将P的副本通过广播的形式转发给E、F、C,以此类推,直到数据包到达汇聚节点D。
图3-1 Flooding协议的数据转发过程
通过上述工作过程描述不难发现,Flooding协议存在一个节点接收到多个同一数据包副本的问题,可以发现洪泛协议在易于实现的同时,也存在很大的不足。
①信息内爆:即Implosion,是指网络中的一个节点接收到多个同一数据包副本的现象。在上述例子的工作过程中,节点C、E、F会同时收到多个同一数据包副本P。
②部分重叠:即Overlap,在实际的无线传感器网络环境中,往往有密集的网络节点分布,不免会出现一些节点对同一事件做出相同反应的现象,很显然,这些节点的邻居节点也会收到相同的数据副本。
③资源盲目利用:每个节点只负责数据的接收和广播,不考虑各节点实际能耗和可用状况,同时也不能预知下一跳的可行性,从而浪费了大量的资源。
2.Gossiping协议
Gossiping协议也称闲聊路由协议,由Flooding协议改变而来。Gossiping协议相较于Flooding协议有何优点?与Flooding协议不同,Gossiping协议不采用广播形式将数据包转发给所有节点的形式,而是通过一定概率随机选择一个节点或几个节点进行数据转发,而不是所有节点。每个节点都以这种方式转发数据直至数据到达汇聚节点,所以Gossiping协议可以避免信息内爆现象,并在一定程度上解决节点的能耗问题。很显然,Gossiping协议在得到改进的同时,也存在一定的弊端。在数据转发过程中,每个节点都是随机地选择下一跳,没有使用路径最优算法,因此会大大增加数据包的端到端传输时延,或者在生命周期结束之前没有到达目的节点。同时,Gossiping协议也无法解决Flooding协议遗留下来的部分重叠和资源盲目利用的问题。如图3-2所示,节点S传递数据包到节点D,数据包的最大传输跳数TTL设置为6,图3-2(a)是数据包正确到达节点D的可能路线之一,但是如果选择的路径是图3-2(b),则数据包就不能到达目的节点D。
图3-2 Gossiping协议的数据转发过程
3.SPIN协议
SPIN(Sensor Protocols for Information via Negotiation,信息协商的传感器)协议是一种以数据为中心的自适应路由协议,以节点之间的协商来确立传输路径。SPIN协议相较于Flooding协议和Gossiping协议而言,它完美地解决了信息内爆、部分重叠以及资源盲目利用等问题。
SPIN协议的主要思想是:用ADV、REQ和DATA三种类型的消息进行节点之间的协商。ADV消息用于新数据广播,其大小远小于DATA;REQ消息表示请求发送数据;DATA消息表示真实要传输的数据。当一个节点有新数据需要转发时,首先向邻居节点广播ADV消息,根据ADV消息中对新数据的描述,对该数据感兴趣的邻居节点则会向该节点发送REQ消息,表示请求发送数据,然后该节点根据收到的REQ消息,向需要新数据的邻居节点发送DATA消息。图3-3表示了SPIN协议的数据转发过程。
图3-3 SPIN协议的数据转发过程