具体实施方式
在一个实施例中,一种无线传感网络AODV路由协议实现系统,适用于蓄能水电站。如图1所示,该系统包括发送源节点110和中间节点120。
发送源节点110用于在未检测到到达目的节点的路由信息时,向周围节点广播携带有路由转发代价因子权值的路由请求。
路由转发代价因子权值由节点电量等级因子、节点负荷状态因子以及跳数权值表征。AODV路由协议的特点是按需建立路由,当节点有通信需求才启动路由发现过程,当该节点路由表中不存在(或已失效)到达目的节点的路由表项时,源节点开始向周围节点广播路由请求消息RREQ。本实施例中,对发送节点广播的路由请求消息RREQ进行的扩展,得到携带有路由转发代价因子权值的路由请求RREQ_CM。
具体地,通过改进AODV路由协议中的RREQ消息的帧格式,为RREQ消息分组添加了累计代价函数值字段COST_MESTRICS。扩展后的路由请求RREQ_CM消息帧格式如表1所示,其中,消息帧格式包括分组类型、保留字段、转发跳数计数器、路由请求识别码、目的节点的IP地址、目的节点序列号、源节点IP地址和源节点序列号。增加累计代价函数值字段COST_MESTRICS,用于表示由节点剩余能量、节点符合状况以及跳数三方面信息综合表征的节点路由转发代价。
表1
在路由请求阶段,改进了协议的RREQ消息,增加了用于表示路由转发代价因子权值的COST_MESTRICS字段,以便于后续进行路由转发代价因子权值统计。
中间节点120用于接收路由请求;根据本节点的剩余电量和节点队列缓存长度,计算本节点的电量等级因子及负荷状态因子;以及根据本节点的电量等级因子、负荷状态因子判断本节点是否适合传输路由请求;若是,则根据本节点的电量等级因子、负荷状态因子以及跳数权值对路由请求携带的路由转发代价因子权值进行更新,并转发更新后的路由请求。
在路由发现的过程中,提出了节点电量等级因子和节点负荷状态因子两个参数,作为节点是否参与转发的判断依据。中间节点120可预先存储可通行的下一级节点的信息,在确认可参与转发时以便进行路由请求转发。若不参与转发,则中间节点120可直接将报文丢弃。
基于节点电量等级因子、节点负荷状态因子以及跳数权值3方面因素,在路由选择的过程中可充分考虑节点能量和负荷状况,避免在处于拥塞状态和剩余能量不足的节点上建立路由。
此外,在检测到达目的节点的路由信息时,发送源节点110则可直接根据路由信息发送数据。中间节点120在接收到发送源节点110发送的数据后,判断本节点是否是目的节点,若否,则根据路由信息再次转发数据,直至目的节点接收到数据。
在一个实施例中,中间节点根据本节点的剩余电量和节点队列缓存长度,计算本节点的电量等级因子及负荷状态因子,包括:
根据本节点的剩余电量和预设的电池最大充电量,计算得到本节点的剩余电量百分比;根据本节点的剩余电量百分比,以及预设的剩余电量区间与电量等级因子的对应关系,得到本节点的电量等级因子。根据本节点的节点队列缓存长度和预设的节点分组缓存最大长度,计算得到本节点的队列长度百分比;根据本节点的队列长度百分比,以及预设的队列长度百分比区间与负荷状态因子的对应关系,得到本节点的负荷状态因子。
具体地,无线传感网节点采用电池供电,节点电量对于网络性能有重要影响,采用EPCT表示节点剩余电量百分比,如下所示。
EPCT=Eresidual/Einitial
其中,Eresidual为节点当前剩余电量,Einitial为该节点电池最大充电量。将节点剩余电量百分比划分为若干区间,不同区间对应不同的节点电量等级因子。各节点可根据本节点EPCT值确定所属的剩余电量区间,进而计算更新本节点的电量等级因子。本实施例中,剩余电量区间与电量等级因子的对应关系如下。
E1至E5分别为各剩余电量区间对应的电量等级因子。本实施例会中,电量等级因子的值随剩余电量区间的递增而增大,即E1>E2>E3>E4>E5。具体可通过节点的电量检测模块检测节点剩余,并计算更新节点电量的百分比,当EPCT≥0.8时,表明节点能量非常充足,能够承担长时间的数据交换和传输,为该节点赋予最高的能量等级因子,作为转发节点参与路由;当0.8>EPCT≥0.2时,说明网络中该节点的能量较为充足,可以被作为中间转发节点,为该节点赋予适中的能量等级因子;当0.2>EPCT≥0.05时,说明网络中该节点能量已经不充足,应该避免过多地使用该节点参与路由,如果再长时间的承担路由和转发工作,可能导致节点能量迅速降低,当使用该节点转发,会引起较大端到端时延,为该节点赋予较低的能量等级因子;当节点能量百分比0.05>EPCT≥0,说明节点电量即将耗尽,应避免使用该节点参与路由转发。
节点负荷状态因子用于说明节点的符合状况,使用LPCT表示节点的队列长队列长度百分比,具体如下所示。
LPCT=Lqs/Lini
其中,Lqs为节点当前队列长度,Lini为预设的节点分组缓存最大长度。将节点负荷百分比划分为若干区间,不同区间对应不同的节点负荷状态因子。各节点可根据本节点LPCT值确定所属的负荷百分比区间,进而计算更新本节点的负荷状态因子。在无线传感网络中,节点分组缓存的最大长度Lini为64。本实施例中,队列长度百分比区间与负荷状态因子的对应关系如下。
L1至L5分别为各队列长度百分比区间对应的负荷状态因子。本实施例会中,负荷状态因子的值随队列长度百分比区间的递增而增大。具体可通过节点的符合状态检测模块检测当前缓存队列长度,并计算更新节点状态负荷因子。当LPCT≥0.9时,表明节点当前负荷超重,使用该节点转发,会导致缓存队列溢出,引起较大端到端时延,应该避免使用该节点参与路由,为该节点赋予最高的负荷状态因子;当0.9>LPCT≥0.7时,说明网络中该节点负荷较重,尽量避免使用该节点作为中间转发节点,因为使用该节点转发,会引起较大端到端时延,为该节点赋予较高的节电负荷状态因子;当0.7>EPCT≥0.4时,说明网络中该节点处于轻度负荷状态,可以使用该节点承担路由和转发工作,为该节点赋予适中的能量等级因子;当节点能量等级因子0.4>LPCT≥0,说明节点处于正常工作状态,推荐使用此节点进行路由转发,为该节点赋予最低的节点负荷状态因子。
可以理解,剩余电量区间与电量等级因子的对应关系,以及队列长度百分比区间与负荷状态因子的对应关系的具体形式并不唯一,可根据实际情况调整。电量等级因子的值也可以是随剩余电量区间的递增而减小,负荷状态因子的值也可以是随队列长度百分比区间的递增而减小。
在一个实施例中,电量等级因子的值随剩余电量区间的递增而增大,负荷状态因子的值随队列长度百分比区间的递增而增大。中间节点120根据本节点的电量等级因子、负荷状态因子判断本节点是否适合传输路由请求,包括:若本节点的电量等级因子为最低值,且本节点的电量等级因子为最高值,则本节点不适合传输路由请求。
通过节点能量等级因子和节点负荷状态因子的计算,如果节点的能量等级因子处于最低值同时节点的负荷状态因子为最高值时(上文中节点能量等级因子和负荷状态因子分别为E5和L1时),说明该节点电量即将耗尽,同时节点负荷较重或缓存队列已经溢出,此时节点若收到路由信息RREQ_CM,则进行丢弃处理。
在一个实施例中,中间节点120根据本节点的电量等级因子、负荷状态因子以及跳数权值对路由请求携带的累计代价函数值字段进行更新,并转发更新后的路由请求,包括:
根据本节点的电量等级因子、负荷状态因子以及跳数权值计算得到本节点的代价因子权值;将本节点的代价因子权值对路由请求中的路由转发代价因子权值更新,得到路由请求对应路径的转发代价权值;转发携带有路径的转发代价权值的路由请求。
考虑到应用于蓄能水电站的传感网络带宽受限,传感器网络节点能量受限等具体条件的约束,节点的代价因子函数应该考虑节点负荷状态因子,节点电量因子,和节点跳数权值等三个方面的因素。
中间节点120继续消息转发时,基于本节点的电量等级因子、负荷状态因子以及跳数权值,计算并更新本节点的代价因子权值,并将本节点的代价因子权值累计到RREQ_CM消息的代价因子值,得到此路径的转发代价权值,用于确定本节点与源节点之间的最优路径。
节点跳数权值可以根据接收到的转发请求报文消息计算得出。节点转发的代价因子函数表示为:
Cost_Metrics(i)=φ(Hstatsi,EPCTi,LPCTi)
中间节点120在收到路由请求RREQ_CM后,根据报文信息得出节点的跳数权值Hstats,计算并更新节点负荷状态因子LPCTi、节点电量因子EPCTi。通过上述3个参数,根据代价因子函数计算得到节点自身的转发代价权值。
中间节点120对路由请求中的路由转发代价因子权值更新,若中间节点120是直接接收发送源节点110发送的路由请求,则直接将本节点的代价因子权值存入路由请求RREQ_CM中;若中间节点120不是直接接收发送源节点110发送的路由请求,则根据路由请求RREQ_CM获得上一跳节点的累计代价因子权值,将本节点的代价因子权值与路由请求RREQ_CM中的累计代价因子权值累加,得到该路径的代价权值,并填写入路由请求RREQ_CM。
将携带有路径的代价权值的路由请求RREQ_CM进行转发,以供下一节点接收。
进一步地,在一个实施例中,中间节点120将本节点的代价因子权值对路由请求中的路由转发代价因子权值更新,得到路由请求对应路径的转发代价权值之后,转发携带有对应路径的转发代价权值的路由请求之前,还用于根据路由请求判断本节点是否为目的节点;若否,则转发携带有对应路径的转发代价权值的路由请求;若是,则根据路由请求对应的路径返回应答消息至发送源节点。
具体地,中间节点120可根据路由请求RREQ_CM中携带的目的节点的信息进行判断,若本节点不是目的节点,则继续转发路由请求RREQ_CM,并在再次接收到路由请求后,再次计算本节点的电量等级因子、负荷状态因子判断本节点是否适合传输路由请求。
若本节点是目的节点,则通过路由请求RREQ_CM对应的路径返回应答消息至发送源节点110。此外,应答消息中可携带有该路径的转发代价权值,以便于发送源节点110确定目的节点与源节点之间的最优路径。
本实施例中,发送源节点110选择转发代价权值最小的路径作为最优路径,选择剩余能量多、负载小及跳数短的链路作为路由,提高了数据传输的可靠性、均衡网络的能量消耗。
蓄能水电站在通信时可用的频段受限,同时蓄能水电站场景面积广阔,导致监测节点数量的增加,即节点间通信量的增加引起网络拥塞,降低系统性能。所以应用于蓄能水电站中的无线传感器网络,需要结合蓄能水电站的具体应用场景,以及传感器网络特点,对现有AODV路由协议进行优化,主要问题有以下几个方面:1)传输路径选择仅依据最短路径原则,在有线网络中正确而有效。但在无线网络中,收发端节点间路径最短,即跳数最少,意味着中继节点间的传输距离增加,信号经历的衰落也相应增加,链路更易由于干扰丢包,通信质量不能得到保障,最短路径并不一定是最优路经。2)无线传感网中,节点采用电池供电能量有限,节点能耗是传感网系统研究的关键问题。
上述无线传感网络AODV路由协议实现系统,在路由发现的过程中,将节点电量等级因子和节点负荷状态因子两个参数作为节点是否参与转发的判断依据。基于节点电量等级因子、节点负荷状态因子以及跳数权值3方面因素,在路由选择的过程中充分考虑节点能量和负荷状况,避免在处于拥塞状态和剩余能量不足的节点上建立路由,更符合无线传感网络的应用需求,提高了数据传输的可靠性、均衡网络的能量消耗,提高了无线传感网络的数据传输性能。
在一个实施例中,一种无线传感网络AODV路由协议实现方法,基于上述无线传感网络AODV路由协议实现系统实现,适用于蓄能水电站。如图2所示,该方法包括以下步骤:
步骤S110:发送源节点在未检测到到达目的节点的路由信息时,向周围节点广播携带有路由转发代价因子权值的路由请求。
路由转发代价因子权值由节点电量等级因子、节点负荷状态因子以及跳数权值表征。本实施例中,对发送节点广播的路由请求消息RREQ进行的扩展,得到携带有路由转发代价因子权值的路由请求RREQ_CM。具体地,通过改进AODV路由协议中的RREQ消息的帧格式,为RREQ消息分组添加了累计代价函数值字段COST_MESTRICS。扩展后的路由请求RREQ_CM消息帧格式如表1所示。
在路由请求阶段,改进了协议的RREQ消息,增加了用于表示路由转发代价因子权值的COST_MESTRICS字段,以便于后续进行路由转发代价因子权值统计。
步骤S120:中间节点接收路由请求,根据本节点的剩余电量和节点队列缓存长度,计算本节点的电量等级因子及负荷状态因子。
在路由发现的过程中,提出了节点电量等级因子和节点负荷状态因子两个参数,作为节点是否参与转发的判断依据。
步骤S130:中间节点根据本节点的电量等级因子、负荷状态因子判断本节点是否适合传输路由请求。
根据电量等级因子、负荷状态因子判断本节点是否适合传输路由请求的具体方式并不唯一,若本节点适合传输,则进行步骤S140,若本节点不适合传输,则中间节点可直接将报文丢弃。
步骤S140:中间节点在本节点适合传输路由请求时,根据本节点的电量等级因子、负荷状态因子以及跳数权值对路由请求携带的路由转发代价因子权值进行更新,并转发更新后的路由请求。
中间节点可预先存储可通行的下一级节点的信息,在确认可参与转发时以便进行路由请求转发。基于节点电量等级因子、节点负荷状态因子以及跳数权值3方面因素,在路由选择的过程中可充分考虑节点能量和负荷状况,避免在处于拥塞状态和剩余能量不足的节点上建立路由。
此外,在检测到达目的节点的路由信息时,无线传感网络AODV路由协议实现方法还可包括:
发送源节点根据路由信息发送数据;中间节点在接收到发送源节点发送的数据后,判断本节点是否是目的节点,若否,则根据路由信息再次转发数据,直至目的节点接收到数据。
在一个实施例中,步骤S120包括步骤122至步骤128。
步骤122:根据本节点的剩余电量和预设的电池最大充电量,计算得到本节点的剩余电量百分比。
步骤124:根据本节点的剩余电量百分比,以及预设的剩余电量区间与电量等级因子的对应关系,得到本节点的电量等级因子。
步骤126:根据本节点的节点队列缓存长度和预设的节点分组缓存最大长度,计算得到本节点的队列长度百分比。
步骤128:根据本节点的队列长度百分比,以及预设的队列长度百分比区间与负荷状态因子的对应关系,得到本节点的负荷状态因子。
可以理解,剩余电量区间与电量等级因子的对应关系,以及队列长度百分比区间与负荷状态因子的对应关系的具体形式并不唯一。
在一个实施例中,电量等级因子的值随剩余电量区间的递增而增大,负荷状态因子的值随队列长度百分比区间的递增而增大。步骤S130包括:若本节点的电量等级因子为最低值,且本节点的电量等级因子为最高值,则本节点不适合传输路由请求。
通过节点能量等级因子和节点负荷状态因子的计算,如果节点的能量等级因子处于最低值同时节点的负荷状态因子为最高值时,说明该节点电量即将耗尽,同时节点负荷较重或缓存队列已经溢出,此时节点若收到路由信息,则进行丢弃处理。
在一个实施例中,步骤S140包括步骤142至步骤146。
步骤142:根据本节点的电量等级因子、负荷状态因子以及跳数权值计算得到本节点的代价因子权值。
步骤144:将本节点的代价因子权值对路由请求中的路由转发代价因子权值更新,得到路由请求对应路径的转发代价权值。
步骤146:转发携带有路径的转发代价权值的路由请求。将携带有路径的代价权值的路由请求进行转发,以供下一节点接收。
进一步地,在一个实施例中,步骤144之后,步骤146之前,步骤S140还包括步骤145和步骤147。
步骤145:根据路由请求判断本节点是否为目的节点;若否,则进行步骤146;若是,则进行步骤147。
步骤147:根据路由请求对应的路径返回应答消息至发送源节点。
若本节点是目的节点,则通过路由请求对应的路径返回应答消息至发送源节点。此外,应答消息中可携带有该路径的转发代价权值,以便于发送源节点确定目的节点与源节点之间的最优路径。
本实施例中,无线传感网络AODV路由协议实现方法还包括发送源节点选择转发代价权值最小的路径作为最优路径的步骤,选择剩余能量多、负载小及跳数短的链路作为路由,提高了数据传输的可靠性、均衡网络的能量消耗。
为便于更好地理解上述无线传感网络AODV路由协议实现方法,下面结合具体实施例进行详细解释说明。
图3所示为一实施例中无线传感网络AODV路由协议实现的算法流程示意图。发送源节点在准备发送数据时,检测是否存在到达目的节点的路由信息,若存在路由信息则发送数据。中间节点接收到数据后检测是否是目的节点,若是,则完成数据发送;若否,则进行数据转发,并再次接收发送源节点发送的数据进行目的节点判断。
若不存在到达目的节点的路由信息,则发送源节点广播路由请求RREQ_CM,中间节点接收到路由请求RREQ_CM消息后,获得上一跳节点更新的代价函数值,并计算更新本节点电量等级因子、负荷状态因子。判断本节点是否适合传输,若本节点不适合传输,则丢弃该路由请求RREQ_CM。若本节点适合传输,则计算代价函数,确定源节点到本节点的最优路径。最后中间节点判断本节点是否是目的节点,若否,则转发路由请求RREQ_CM,并等待再次接收到发送源节点发送的路由请求RREQ_CM;若是,则发送应答消息至发送源节点。
如图4所示为一个实施例中目的节点的路径选择示意图。当新源节点和目的节点需要进行消息传递时,新源节点主动发起路由请求消息,通过中间节点广播建立路由,传统的AODV协议按照最短跳数原则对路径进行选择,所以当RREQ消息到达接收端时,目的节点会选择路径2或者路径3作为路由。但是如果综合考虑路径的节点剩余能量,节点的负荷状况以及节点跳数等因素,求出路径的代价因子权值,这两条路径的跳数最短,但是这两条链路代价因子权值比较大,如果这两条作为传输链路,极有可能发生中断或出现很大延迟。根据上述AODV路由协议实现方法,综合考量节点剩余能量、节点的负荷状况以及节点跳数等因素,选择路径代价因子权值COST_MESTRICS值最小的路径4作为传输数据的链路,保障传输效果的同时,均衡网络的能量消耗和负载的,提高了网络的数据传输性能。
上述无线传感网络AODV路由协议实现方法,在路由发现的过程中,将节点电量等级因子和节点负荷状态因子两个参数作为节点是否参与转发的判断依据。基于节点电量等级因子、节点负荷状态因子以及跳数权值3方面因素,在路由选择的过程中充分考虑节点能量和负荷状况,避免在处于拥塞状态和剩余能量不足的节点上建立路由,更符合无线传感网络的应用需求,提高了数据传输的可靠性、均衡网络的能量消耗,提高了无线传感网络的数据传输性能。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。