3.4.3 基于查询的路由协议
1.定向扩散路由协议
定向扩散(Directed Diffusion)路由协议简称DD路由协议,是一种基于查询的路由协议机制。汇聚节点根据不同的需求定义不同的兴趣(Interest),通过兴趣信息发出请求消息,并采用洪泛方式将兴趣请求信息传播到全网或局部网络。兴趣信息用来表示查询的任务,反应了汇聚节点在全网中希望获得的兴趣内容,例如,监测区域内的温度、湿度、光照等环境数据。在兴趣信息传播过程中,每个节点根据缓存中的兴趣列表,建立与兴趣信息发送方向相反方向的数据传输梯度(Gradient),传感器探测节点会把采集到的数据沿着梯度正方向传输到汇聚节点。
定向扩散路由协议机制采用了周期性地对网络进行路由维护与更新,可分为三个阶段:兴趣扩散、梯度建立与路径加强,如图3-7所示。
图3-7 定向扩散路由机制
(1)兴趣扩散
在兴趣消息扩散阶段,汇聚节点周期性地向网络中的邻居节点洪泛广播兴趣信息,其中兴趣消息包括任务类型、发送节点号、目标区域、兴趣、数据发送速率、数据包类别、数据包大小、时间戳等参数。每个节点本地保存一个兴趣列表,列表中都有一个表项记录发送该兴趣的邻居节点、数据速率和时间戳等相关信息,以便建立该节点向汇聚节点传递数据的梯度关系。每个兴趣可能对应多个邻居节点,在节点接收到兴趣消息后会转发给它的每一个邻居节点,节点如果收到其发送过的一个兴趣消息,则将其丢弃,避免同一个消息在网络中形成消息循环。
通过定义不同的梯度相关参数来适应不同的需求。每个表项还有一个字段用来表示该表项的有效时间值,超过这个时间后,节点将删除这个表项。节点收到邻居节点的兴趣消息时,首先检查该兴趣消息是否已经收到,如果已经有对应的表项,就更新表项的有效时间值;如果是参数类型相同,但不包含发送该兴趣消息的邻居节点,就在响应的表项中添加这个邻居节点,并转发“兴趣”。
(2)梯度建立
当传感器节点采集到与兴趣匹配的监测数据时将数据发送到梯度上的邻居节点,同时按照梯度上的数据传输速率设定传感器采集数据的速率。中间节点会检查兴趣列表中是否存在相匹配的“兴趣”,如果没有相匹配的“兴趣”则将丢弃数据包;如果存在相关的兴趣表项,则检查与这个兴趣对应的数据缓冲池(Data Cache)。数据缓冲池用于保存最近转发的数据,如果数据缓冲池中存在与接收数据相匹配的兴趣消息,表明已经转发该数据,需要将其丢弃,否则,再检查表项中的邻居信息。如果记录的邻居节点发送速率超过接收的数据速率,就全部转发接收的数据,否则按照比例转发。转发的数据都会在缓存中保留一个备份,且记录转发时间。这里需要说明的是,一个节点可能会收到多个邻居节点所发送的兴趣数据包,节点也可向多个邻居节点发送数据,因此汇聚节点收到的路径也可能为多条。对于转发的数据包,都必须在缓冲区保留副本并记录转发的时间。
(3)路径加强
定向扩散路由机制通过正向加强机制来建立优化路径,并根据网络拓扑修改数据转发的梯度关系。兴趣扩散阶段建立了从源节点到汇聚节点的数据传输路径,称这个阶段建立的梯度为探测梯度(Probe Gradient),此阶段采集速率和发送速率比较低。汇聚节点收到从源节点发送过来的数据后,开始建立加强路径,后续的数据将沿加强路径进行传输,加强后的梯度称为数据梯度(Data Gradient),此路径数据以较高的速率进行传输。
假设以数据传输延迟作为路径加强的标准,汇聚节点会首先选择最新发来数据的邻居节点作为加强路径的下一跳节点。在路径加强消息中,提高了数据发送的速率。邻居节点收到消息后,经过分析确定该信息描述的是一个已有的兴趣,只是增加了数据发送速率,则断定这是一条路径加强消息,从而更新相应兴趣表项的到邻居节点的发送数据速率。同时,按照同样的规则选择加强路径的下一跳邻居节点。
路由加强路径的标准并不唯一,可以选择一定时间内发送数据最多的节点作为路径的下一跳节点,也可以选择数据传输最稳定的节点作为路径加强的下一跳节点。加强路径上的节点如果发现下一跳节点的数据发送速率明显减小或收到来自其他节点的新位置估计,则推断加强路径的下一跳失败,使用上述的路径加强机制重新确定下一跳节点。
在定向扩散路由协议中,汇聚节点可以选择增强其中的一条路径用于数据的传输,当该条路径出现故障时,还可以选择其他的低速路径进行传输,这样的多路径传输机制,保证了WSN网络的健壮性。网络中的节点只需和邻居节点通信,因而不需要全局的地址机制,使用查询驱动机制按需建立路由,避免保存全网的信息。但是,在定向扩散路由协议中,梯度的建立开销较大,不适合多汇聚节点的网络。
2.谣传路由协议
谣传路由协议(Rumor Routing Protocol)是在定向扩散路由协议的基础上建立起来的。由于在数据传输量较少或者已知事件区域,采用定向扩散路由洪泛传播和路径加强机制确定一条优化数据传输路径的机制并不高效,因此由Boulis等人提出的谣传路由更适合数据传输量小的传感器网络,被认为是SPIN路由协议与定向扩散路由协议的折中,并加入了Gossiping随机转发给其某一邻居节点的转发机制。
谣传路由机制引入了查询消息的单播随机转发,克服了洪泛方式建立转发路径造成开销过大的问题。其从源节点产生代理数据包(Agent)沿随机路径对外发送,汇聚节点发送请求探测数据包随机进行下一跳的选择,直到两个数据包在某一节点上相交,就形成了一条可行的完整路径。
谣传路由协议中,每个传感器节点维护一个邻居列表和事件列表,事件列表中每个表项都记录着事件的相关信息,当监测区域的传感器节点监测到一个事件发生时,就会在事件列表中添加一个表项,设置事件名称、跳数等消息,同时根据需要会随机产生一个代理消息。
代理消息是包含了生命周期的相关事件信息的分组,它可以把事件信息传送到每个传感器节点。在传感器节点处,当收到代理信息时,首先检查事件列表中是否包含相关的表项,若存在相关事件,就会与代理消息中的跳数值进行比较,如果表项中的跳数值大于代理消息中的跳数值,就会更新表项中的跳数值,否则会更新代理消息中的跳数值。如果检查事件列表中没有代理消息中的事件,则会在表项中添加代理消息中的事件信息,且代理消息中的生存值减1,直到生存值为零,通过代理消息的传输形成了一条完整的事件区域路径。
汇聚节点在查询消息和查询请求数据包时是沿着一条随机的路径进行转发,当查询消息和代理消息的路径交叉时,则路由建立。如果两条随机路径在生命周期内没有交叉,就认为查询消息没有到达事件区域,会选择重传、放弃或是洪泛查询消息。
在多汇聚节点、查询请求数目较大、网络事件很少的情况下,谣传路由协议的性能较好,但是当网络监测区域事件频繁时,事件列表的维护开销就会增加,且需要发送较多的数据包。谣传路由协议原理示意如图3-8所示。
图3-8 谣传路由协议工作原理