[摘要]:无线传感器网络(WSNs)被认为是未来改变世界的十大技术之首,但有限的计算、存储和通信能力,尤其是严重受限的能量使其应用前景面临巨大挑战,WSNs在应用之前需要解决许多关键问题,能量问题即是其中之一。能量对于WSNs的生命周期具有决定意义,设计WSNs路由协议需要重点考虑能耗问题;针对WSNs的GEAR路由协议,提出一种能耗上的改进方案并进行仿真,仿真结果显示:该方案能明显降低能耗。
关键词:无线传感器网络;GEAR协议;能耗
0 引 言
在无线传感器网络(WSNs)中,节点通常需要获取其位置信息,这样,它采集的数据才有意义。如在森林防火应用中,需要知道火灾的具体位置。地理位置路由假设节点知道自身及目标区域的位置,以这些位置信息作为路由选择的依据,按照一定策略转发数据到目标区域。位置和能量感知的地理路由(geographical and energy aware routing,GEAR)属于这一类路由协议,它是WSNs中的一个能量感知的基于位置的地理路由协议,模拟结果显示:GEAR路由,与传统非能量感知的地理路由相比能极大地延长网络寿命。能量对于WSNs的生命周期具有决定意义,能耗是WSNs路由协议需要重点考虑的问题。本文针对GEAR路由协议,依据GEAR的特点提出了一种改进方案,使其在能耗力方面有所改进。
1 GEAR路协议
1.1 核心思想
由于Sink发出的查询消息中经常包含位置属性,GEAR路由协议在向目标区域散布查询消息的同时考虑了地理位置信息的使用。其主要思想是通过利用位置信息使得“兴趣”的传播仅到达目标区域,而不是传播到整个网络,从而避免洪泛方式,减少路由建立的开销。
GEAR路由中查询消息的传播包括2个阶段:(1)查询消息转发到目标区域:从Sink节点开始的路径建立过程采用贪婪算法,节点在邻居中选择到目标区域代价最小的节点作为下一跳节点,并将自己的路由代价设为该下一跳节点的路由代价加上到该节点一跳通信的代价。若陷入路由洞,节点则选取邻居中代价最小的节点作为下一跳节点,并修改自己的路由代价;(2)在目标区域内散布查询消息:查询消息到达目标区域后,通过迭代地理(节点密度较大时)或洪泛方式(节点较少时)将查询消息传播到目标区域内的所有节点。这2个阶段完成后,监测数据沿查询消息的反向路径向Sink节点传送。
1.2 NS2中GEAR的实现细节
GEAR路由协议在NS2中的实现是一个简化的版本,查询消息在事件区域的转发是采用洪泛方式,没有实现迭代地理方式,下面仅对改进时关心的问题进行说明。
首先,GEAR路由假设已知节点的位置和剩余能量信息,通过下面几个变量来表示:
double geo_longitude_, geo_latitude_;//节点的位置信息;
int nmn_pkt_sent_, num_pkt_recv_;//发送和接收的信息包数量;
double initial_energy_;//节点的初始能量;
double unit_energy_for_send_, unit_energy_for_recv_;//发送和接收单位信息包消耗的能量。
其次,NS2中实现的CEAR发布查询消息时分为2个阶段,在消息没有到达目标区域时,采用贪婪算法(单播方式)转发消息,消息到达目标区域后,采用洪泛方法(广播方式)转发查询消息。节点根据不同的情况作出相应的处理:
enum geo_actions { BROADCAST = 0, BROADCAST_SUPPRESS,
OUTSIDE_REGION } ,
其中,BROADCAST=0表示节点在目标区域内部,采用广播方式转发查询消息;BROADCAST_SUPPRESS表示节点的所有邻居都不在目标区域内,节点不转发查询消息;
OUTSIDE_REGION表示节点在目标区域外,用单播转发查询消息。与路由相关的函数:
int32_ t findNextHop (GeoHeader * geo _ header, bool greedy) ;// 找到下一跳邻居;
int floodlnsideRegion(GeoHeader * geo_header) ;// 在区域内转发信息包;
double retrieveHeuristicValue (GeoLocation dst ) ;// 得到节点的通信代价;
void broadcastHeuristicValue (GeoLocation dst, doublenew_heuristic_value);当出现路由洞时,需要修改节点的通信代价,并将这个修改后的通信代价告知其邻居节点。
NS2中实现的GEAR,查询消息在事件区域内的转发没有采用迭代地理的方式,仅采用了洪泛方式,具体的洪泛代码见NS2代码中~ns/diffusion3/filters/gear.
2 GEAR路由协议的改进方案
2.1 问题描述
文献[2]指出:如果使用Micadot节点,发送一个比特上尽量进行网内处理,减少数据传输量,可以有效地节省能量。理想的融合情况下,中间节点可以把n个长度相等的输人数据分组合并成一个等长的输出分组,只需消耗不进行融合所消耗能量的1/n即可完成数据传输;最差的情况下,融合操作并未减少数据量,但通过减少分组个数,可以减少信道的协商或竞争过程造成的能量开销,所以,在数据传输时要尽量采用数据融合。在GEAR路由中,当查询消息到达目标区域后,事件区域中的节点采集的数据沿查询消息的反向路径向Sink节点传送,由于数据采集时同一区域的众多节点采集的数据往往有相似性,如果能够让这些
节点协同工作,对数据进行必要的融合,就可以减少冗余数据包的传输。
如果节点密度比较大,GEAR采用迭代地理转发机制,作为对GEAR路由协议的改进,每一次迭代的中心节点可以作为数据融合节点,将其子区域节点采集的数据进行处理后再沿反向路径传送。这样,目标区域内第一个收到查询消息的节点将融合后的数据沿查询消息的反向路径向Sink节点传送。
如果节点密度比较小,GEAR则采用洪泛转发机制。这时由于没有子区域中心节点可以使用,需要以某种方法产生一个融合节点对数据进行处理。一种简单的方法是选择能量比较大的节点作为融合节点,当然,该节点需要能够与其他节点直接通信。该节点对数据进行处理后沿查询消息的反向路径向Sink节点传送。
2.2 解决方案实现
根据2.1节的思路,迭代地理方式采用数据融合具有明显的优势:首先,融合节点不需要选取,以子区域中心节点作为融合节点即可;其次,节点密度较大时,采用融合方式更节省能量。但由于NS2中实现的GEAR是一简化版本,查询消息在事件区域内的转发并没有采用迭代地理方式,为便于比较改进前后的效果,在改进方案的实现中仅针对洪泛方式进行设计。具体的改进方案分为如下几个步骤:
(1)当查询消息转发到事件区域后,区域内的节点先建立簇。由于GEAR中每个节点知道自身及邻居节点的位置和能量信息,因此,可根据节点的位置信息,结合节点的通信范围,在事件区域内部形成簇;
(2)设定算法选择簇首节点,簇首节点需要满足几个条件:①能量足够大,大于设定的能量阈值;②簇首节点能够与簇内其他节点直接通信,在簇形成时保证这一点;③可以对数据进行相应处理。簇首节点选出后通报整个簇内节点;
对于簇首节点选择的具体算法,为便于实现,只要能量大于能量阈值,位置在事件区域的节点就可以担任簇首节点。由于可能有多个符合条件的节点,因此,在代码实现中是选出事件区域内能量最大,且能量大于能量阈值的节点作为簇首节点;
(3)节点开始采集数据,簇内节点将采集的数据首先传送到簇首节点,由簇首节点对数据进行压缩整合,除去冗余数据后再发往区域内第一个接收到查询消息的节点,沿查询消息的相反路径转发到Sink节点。以查询消息要求的时间间隔T为周期,在这个T时间范围内,接收簇内节点发送的数据并进行缓存,在下一个时间间隔对数据进行融合并转发。
具体实现时,将在[0,T]时间范围接收到的数据包认为是一个时间产生的数据,如果这些数据的监测对象为同一类型,则判定这些数据互为冗余数据。根据可信度,挑选出可信度最高的数据进行传输,其他数据将丢弃。最大可信度数据意味着高质量的数据,同时,降低了冗余数据的传输。
3 仿真实验设置及结果分析
由于GEAR在NS2中没有集成迭代地理方式,因此,本实验针对区域内的洪泛方式进行比较,并采用平均能耗参数来衡量改进后的协议性能。平均能耗是网络中每个节点在传输一个单位的数据包时所消耗的能量。另外,本文感兴趣的还有平均能耗和网络尺寸的关系,因此,通过改变网络节点数目来研究平均能耗,并与改进前GRAR路由进行比较。
3.1 实验场景的参数选用
根据GEAR路由协议以及国际上发表的针对WSNs的相关文献[1,3]的实验场景设置,本文采用了如下实验场景设置:在下面的实验中,默认采用1.6MB/s的802.11MAC
层协议,每个节点的通信范围为100个单位,每个目标区域是一圆形区域,其半径为50个单位。数据包的大小为64字节,查询消息大小为32字节。
实验采用不规则拓扑场景,网络大小从50个节点到250个节点,网络的覆盖面积是670×670平方单位,固定节点的通信范围是100个单位,目标区域是半径为50单位的圆形区域。设定节点的初始能量是1J,发送和接收一个数据包消耗0.001J,比例参数a值取0.8。数据源节点设为5个,Sink节点设为2个。
3.2 仿真结果及分析
对生成的trace文件的剩余能量进行统计。统计方法为平均能量消耗:消耗能量/(网络尺寸×数据量)。其中,消耗能量是初始总能量减去最后的剩余能量,网络尺寸是节点个数,数据量是数据源节点产生的数据包和Sink节点发出的查询消息总和,即,数据量:运行时间×(单位时间数据包×源节点个数+单位时间查询消息×Sink节点个数);消耗能量=总初始能量-总剩余能量;网络尺寸=节点个数。设定运行时间为30min,30min后停止仿真,整理后的数据见表1。
由表1可见,改进后的能量显著节省。且随着节点个数的增加,能量节省更为显著。这是因为随着节点个数的增加,网络密度增大,洪泛方式能耗更多,而采用数据融合后,节省能量更为明显。
4 结 论
由于目前GEAR在NS2中集成版本的限制,实验仅针对区域内的洪泛方式进行了简单仿真,取得了比较理想的实验结果,这种微小的改进,对GEAR降低能耗有比较明显的效果,可以预期,NS2和GEAR协议本身的发展和完善,将为进一步的实验提供更好的条件。
关键词:无线传感器网络;GEAR协议;能耗
0 引 言
在无线传感器网络(WSNs)中,节点通常需要获取其位置信息,这样,它采集的数据才有意义。如在森林防火应用中,需要知道火灾的具体位置。地理位置路由假设节点知道自身及目标区域的位置,以这些位置信息作为路由选择的依据,按照一定策略转发数据到目标区域。位置和能量感知的地理路由(geographical and energy aware routing,GEAR)属于这一类路由协议,它是WSNs中的一个能量感知的基于位置的地理路由协议,模拟结果显示:GEAR路由,与传统非能量感知的地理路由相比能极大地延长网络寿命。能量对于WSNs的生命周期具有决定意义,能耗是WSNs路由协议需要重点考虑的问题。本文针对GEAR路由协议,依据GEAR的特点提出了一种改进方案,使其在能耗力方面有所改进。
1 GEAR路协议
1.1 核心思想
由于Sink发出的查询消息中经常包含位置属性,GEAR路由协议在向目标区域散布查询消息的同时考虑了地理位置信息的使用。其主要思想是通过利用位置信息使得“兴趣”的传播仅到达目标区域,而不是传播到整个网络,从而避免洪泛方式,减少路由建立的开销。
GEAR路由中查询消息的传播包括2个阶段:(1)查询消息转发到目标区域:从Sink节点开始的路径建立过程采用贪婪算法,节点在邻居中选择到目标区域代价最小的节点作为下一跳节点,并将自己的路由代价设为该下一跳节点的路由代价加上到该节点一跳通信的代价。若陷入路由洞,节点则选取邻居中代价最小的节点作为下一跳节点,并修改自己的路由代价;(2)在目标区域内散布查询消息:查询消息到达目标区域后,通过迭代地理(节点密度较大时)或洪泛方式(节点较少时)将查询消息传播到目标区域内的所有节点。这2个阶段完成后,监测数据沿查询消息的反向路径向Sink节点传送。
1.2 NS2中GEAR的实现细节
GEAR路由协议在NS2中的实现是一个简化的版本,查询消息在事件区域的转发是采用洪泛方式,没有实现迭代地理方式,下面仅对改进时关心的问题进行说明。
首先,GEAR路由假设已知节点的位置和剩余能量信息,通过下面几个变量来表示:
double geo_longitude_, geo_latitude_;//节点的位置信息;
int nmn_pkt_sent_, num_pkt_recv_;//发送和接收的信息包数量;
double initial_energy_;//节点的初始能量;
double unit_energy_for_send_, unit_energy_for_recv_;//发送和接收单位信息包消耗的能量。
其次,NS2中实现的CEAR发布查询消息时分为2个阶段,在消息没有到达目标区域时,采用贪婪算法(单播方式)转发消息,消息到达目标区域后,采用洪泛方法(广播方式)转发查询消息。节点根据不同的情况作出相应的处理:
enum geo_actions { BROADCAST = 0, BROADCAST_SUPPRESS,
OUTSIDE_REGION } ,
其中,BROADCAST=0表示节点在目标区域内部,采用广播方式转发查询消息;BROADCAST_SUPPRESS表示节点的所有邻居都不在目标区域内,节点不转发查询消息;
OUTSIDE_REGION表示节点在目标区域外,用单播转发查询消息。与路由相关的函数:
int32_ t findNextHop (GeoHeader * geo _ header, bool greedy) ;// 找到下一跳邻居;
int floodlnsideRegion(GeoHeader * geo_header) ;// 在区域内转发信息包;
double retrieveHeuristicValue (GeoLocation dst ) ;// 得到节点的通信代价;
void broadcastHeuristicValue (GeoLocation dst, doublenew_heuristic_value);当出现路由洞时,需要修改节点的通信代价,并将这个修改后的通信代价告知其邻居节点。
NS2中实现的GEAR,查询消息在事件区域内的转发没有采用迭代地理的方式,仅采用了洪泛方式,具体的洪泛代码见NS2代码中~ns/diffusion3/filters/gear.
2 GEAR路由协议的改进方案
2.1 问题描述
文献[2]指出:如果使用Micadot节点,发送一个比特上尽量进行网内处理,减少数据传输量,可以有效地节省能量。理想的融合情况下,中间节点可以把n个长度相等的输人数据分组合并成一个等长的输出分组,只需消耗不进行融合所消耗能量的1/n即可完成数据传输;最差的情况下,融合操作并未减少数据量,但通过减少分组个数,可以减少信道的协商或竞争过程造成的能量开销,所以,在数据传输时要尽量采用数据融合。在GEAR路由中,当查询消息到达目标区域后,事件区域中的节点采集的数据沿查询消息的反向路径向Sink节点传送,由于数据采集时同一区域的众多节点采集的数据往往有相似性,如果能够让这些
节点协同工作,对数据进行必要的融合,就可以减少冗余数据包的传输。
如果节点密度比较大,GEAR采用迭代地理转发机制,作为对GEAR路由协议的改进,每一次迭代的中心节点可以作为数据融合节点,将其子区域节点采集的数据进行处理后再沿反向路径传送。这样,目标区域内第一个收到查询消息的节点将融合后的数据沿查询消息的反向路径向Sink节点传送。
如果节点密度比较小,GEAR则采用洪泛转发机制。这时由于没有子区域中心节点可以使用,需要以某种方法产生一个融合节点对数据进行处理。一种简单的方法是选择能量比较大的节点作为融合节点,当然,该节点需要能够与其他节点直接通信。该节点对数据进行处理后沿查询消息的反向路径向Sink节点传送。
2.2 解决方案实现
根据2.1节的思路,迭代地理方式采用数据融合具有明显的优势:首先,融合节点不需要选取,以子区域中心节点作为融合节点即可;其次,节点密度较大时,采用融合方式更节省能量。但由于NS2中实现的GEAR是一简化版本,查询消息在事件区域内的转发并没有采用迭代地理方式,为便于比较改进前后的效果,在改进方案的实现中仅针对洪泛方式进行设计。具体的改进方案分为如下几个步骤:
(1)当查询消息转发到事件区域后,区域内的节点先建立簇。由于GEAR中每个节点知道自身及邻居节点的位置和能量信息,因此,可根据节点的位置信息,结合节点的通信范围,在事件区域内部形成簇;
(2)设定算法选择簇首节点,簇首节点需要满足几个条件:①能量足够大,大于设定的能量阈值;②簇首节点能够与簇内其他节点直接通信,在簇形成时保证这一点;③可以对数据进行相应处理。簇首节点选出后通报整个簇内节点;
对于簇首节点选择的具体算法,为便于实现,只要能量大于能量阈值,位置在事件区域的节点就可以担任簇首节点。由于可能有多个符合条件的节点,因此,在代码实现中是选出事件区域内能量最大,且能量大于能量阈值的节点作为簇首节点;
(3)节点开始采集数据,簇内节点将采集的数据首先传送到簇首节点,由簇首节点对数据进行压缩整合,除去冗余数据后再发往区域内第一个接收到查询消息的节点,沿查询消息的相反路径转发到Sink节点。以查询消息要求的时间间隔T为周期,在这个T时间范围内,接收簇内节点发送的数据并进行缓存,在下一个时间间隔对数据进行融合并转发。
具体实现时,将在[0,T]时间范围接收到的数据包认为是一个时间产生的数据,如果这些数据的监测对象为同一类型,则判定这些数据互为冗余数据。根据可信度,挑选出可信度最高的数据进行传输,其他数据将丢弃。最大可信度数据意味着高质量的数据,同时,降低了冗余数据的传输。
3 仿真实验设置及结果分析
由于GEAR在NS2中没有集成迭代地理方式,因此,本实验针对区域内的洪泛方式进行比较,并采用平均能耗参数来衡量改进后的协议性能。平均能耗是网络中每个节点在传输一个单位的数据包时所消耗的能量。另外,本文感兴趣的还有平均能耗和网络尺寸的关系,因此,通过改变网络节点数目来研究平均能耗,并与改进前GRAR路由进行比较。
3.1 实验场景的参数选用
根据GEAR路由协议以及国际上发表的针对WSNs的相关文献[1,3]的实验场景设置,本文采用了如下实验场景设置:在下面的实验中,默认采用1.6MB/s的802.11MAC
层协议,每个节点的通信范围为100个单位,每个目标区域是一圆形区域,其半径为50个单位。数据包的大小为64字节,查询消息大小为32字节。
实验采用不规则拓扑场景,网络大小从50个节点到250个节点,网络的覆盖面积是670×670平方单位,固定节点的通信范围是100个单位,目标区域是半径为50单位的圆形区域。设定节点的初始能量是1J,发送和接收一个数据包消耗0.001J,比例参数a值取0.8。数据源节点设为5个,Sink节点设为2个。
3.2 仿真结果及分析
对生成的trace文件的剩余能量进行统计。统计方法为平均能量消耗:消耗能量/(网络尺寸×数据量)。其中,消耗能量是初始总能量减去最后的剩余能量,网络尺寸是节点个数,数据量是数据源节点产生的数据包和Sink节点发出的查询消息总和,即,数据量:运行时间×(单位时间数据包×源节点个数+单位时间查询消息×Sink节点个数);消耗能量=总初始能量-总剩余能量;网络尺寸=节点个数。设定运行时间为30min,30min后停止仿真,整理后的数据见表1。
由表1可见,改进后的能量显著节省。且随着节点个数的增加,能量节省更为显著。这是因为随着节点个数的增加,网络密度增大,洪泛方式能耗更多,而采用数据融合后,节省能量更为明显。
4 结 论
由于目前GEAR在NS2中集成版本的限制,实验仅针对区域内的洪泛方式进行了简单仿真,取得了比较理想的实验结果,这种微小的改进,对GEAR降低能耗有比较明显的效果,可以预期,NS2和GEAR协议本身的发展和完善,将为进一步的实验提供更好的条件。