闫帅领,孟 彬,房月华,宋凌云,赵 鑫
(1衡水学院数学与计算机学院 河北 衡水 053000)
(2衡水学院经济与管理学院 河北 衡水 053000)
(3衡水学院生命科学学院 河北 衡水 053000)
(4衡水学院科研处 河北 衡水 053000)
AODV协议最早由Charles E.Perkin和Elizabeth M.Belding-Royer于1999年提出,它基于传统的距离向量算法,采用序列号的方法避免了环路的发生和过时路由的产生[1-2]。该协议包括路由建立与路由维护两个阶段。AODV协议在安全的网络环境下可快速地查找到一条由源节点到目的节点的路径,然而当网络环境中存在恶意节点时,该协议便可能选择了恶意节点充当路径节点而引发数据传输过程中的路径频繁中断。因此,很多学者提出了很多的改进方法:文献[3]针对Ad Hoc网络的黑洞节点对AODV协议路由查找过程中的破坏,提出了一种基于安全递归的认证链改进机制,该机制可有效防止黑洞节点对路由建立过程的破坏,效果显著;文献[4]针对AODV协议执行过程中引发的节点由于消耗过大而失效问题,提出了一种负载均衡的改进AODV协议,此协议针对可避免网络阻塞,增强网络的健壮性;文献[5-6]在AODV协议的效率方面提出了改进相应的协议,最终在网络性能比如时间延迟、控制开销等方面得到了显著的改善。
综合上述研究可知,目前在对AODV协议进行改进研究时,主要集中在不安全环境中对某一种恶意节点的防范或者是在安全环境下提高网络性能,而在不安全环境中对未知的恶意节点进行防范研究并不多。因此,本文针对未知恶意节点的情况提出了一种基于区块链的改进AODV协议,该协议能够通过将恶意节点进行排除路径节点选择的方式,建立一条相对稳定的最终路由,进而确保数据包的投递率。
当Ad Hoc网络中一个节点向另一个节点发送数据包时,我们将发送数据包的节点称为源节点,接收数据包的节点称为目的节点。网络中每一个节点维护两张路由表,其中第1张路由表中记录着曾经与该节点通信的历史路径信息,第2张路由表则搜集节点可直接通信的节点信息以形成直接通信区块。当有源节点向目的节点发送有数据包时,首先此源节点检查自身的第1张路由表中是否保存有到目的节点的路径,如果有,则按照此路径进行数据包的发送;否则,启动路由建立过程。网络中的每一个节点周期性地向其周围广播探测包,当邻居节点收到探测包后便会产生一个对应的响应包。收到响应包的节点即在自身的第2张路由表中记录对应信息,并生成信息区块。信息区块中包含的信息有:区块号、邻居节点地址信息、本节点地址、上一地址预留空间和下一地址预留空间。
路由建立的过程是由源节点发出的请求分组RREQ,经过网络中的节点到达目的节点,再由目的节点按照逆路径发送响应包到源节点,而源节点根据响应包所记录的路径信息形成一条由源节点到目的节点的路径的过程。具体过程主要可描述为以下的步骤。
第1步:源节点将自身的信息区块设定为原始区块,产生一个路由请求分组RREQ,并将其广播给相邻节点。
第2步:当邻居节点收到RREQ分组后,查看是否有同样的EERQ包(具有相同ID号和源节点标识的EERQ包)经过。若有,则放弃该包,结束。若没有,则建立反向路由并将自身的信息区块的上一地址预留空间填充为RREQ的发送节点地址,进入第2步。
第3步:检查该节点是否为目的节点,若是,则依据建立的反向路由信息向源节点返回路由应答分组RREP,设置信息区块的下一地址空间为end结束标志,形成完整的路径区块链。否则,进入第3步。
第4步:查询其路由表,检查有没有到目的节点的路由并且该路由足够新(即其路由表中的序列号大于或等于RREQ中的目的序列号),若存在,则依据建立的反向路由信息向源节点返回路由应答分组RREP,并填充相应的区块信息的上一地址空间和下一地址空间,结束。否则,进入第4步。
第5步:更新自身路由表,并将该RREQ分组广播给自己的相邻节点。并将下一地址预留空间信息周期性地填充邻居节点,以测试是否存在到达目的节点的路径信息,以形成完整的路径区块链。进入第2步。
经过以上5步便形成了源节点到目的节点的完整路径信息,其路径信息会以区块链的形式存在,假设网络经过3个节点的数据转发便到达目的节点则区块链的形式见图1,同时对应的中间节点均存储有源节点到目的节点的完整路径信息备份。
图1 路径区块链
在路由的维护阶段,BIAODV采用差错处理包RERR进行路由的维护与修复,RERR包是由出错节点产生的,其包含了目的节点地址、目的节点序列号以及节点的跳数等内容。当出现链路破裂或下一跳不可达时,出错节点原路返回RERR包,并删除包含不可达节点的路由信息,沿途传输RERR报文的中间节点也将删除路由表中的相应信息。出错节点替换信息区块的下一地址空间节点,寻找到达下一不可达信息的下一跳节点,以修补原有路由信息。
本文采用NS3网络仿真软件,设置移动节点在100 m×100 m区域内移动,节点数量设置为100个,其中恶意节点的一组内包含黑洞节点10个、虫洞节点3个、不合作节点3个。并且每个节点以Random Way Point模型移动,即节点随机移动至一个位置,停留一段时间后再移动至另一个目的地,直到仿真时间结束。
由图2可知,本文所提出的改进AODV协议(BIAODV)在路径中断率上明显低于传统的AODV协议,最主要的原因是本文算法采用了区块链技术,在选取路径中间节点的过程中比较了节点的稳定性以选取更优的节点担任路径节点。因此,建立了更为稳定的路由,并提前对可能断裂的节点实施了有效的补救措施。随着恶意节点数量的增加,传统的AODV协议由于在路径节点的选择中未考虑节点自身情况,最终导致路径中存在恶意节点而不断发生链路断裂的情况。
图2 链路中断概率随恶意节点变化
由图3可知,本文所提出的改进AODV协议(BIAODV)较传统的AODV协议有更好的数据投递率,而且随着恶意节点数的增加,这种优势就更加的明显。主要原因是BIAODV每一个节点维护的区块中均包含可与其直接通信的节点,路径断裂的概率大大降低,从而可保证数据包的准确投递。
图3 数据投递率与恶意节点变化
本文提出的改进的协议(BIAODV)使得每个节点存储其邻居节点,在路径的查找过程中利用节点的信息区块的连接方式,逐步查找最终的路径信息,进而形成完整的路径区块链。该协议相对于传统的AODV协议具有更好的数据包投递率和更优的链路中断特性。