摘要:充分利用AODVjr算法中的命令选项的保留字,取保留字第0位控制路由的方向性,该位为1表示向该节点的子节点方向传输,该位为0表示目的地不在该节点的子节点范围内。经过omnet++4.1仿真,证实了改进后的AODVjr算法提高了ZigBee网络的通信效率。
1 AODVjr路由思想
AODVjr是在AODV的基础上发展而来的,是AODV算法的简化,其思想[4-6]如下。
⑴ AODVjr规定只能是目标节点对最先到达的RREQ信号做出响应,保证路由无环路,AODVjr中没有使用目的节点序列号。
⑵ AODVjr规定RERR(Route Error)仅转发给传输失败的数据包的源节点。
⑶ 在数据传输中如果发生链路中断,AODVjr采用本地修复,在路由修复的过程中,仅允许目的节点回复RREP。如果本地修复失败,则发送RERR到数据包的源节点,通知它由于链路中断而引起目的节点不可达。RERR的格式也被简化至仅包含一个不可达的目的节点。
⑷ AODVjr由目的节点定期向源节点发送KEEP ALIVE连接信息来维持路由。当源节点在一段时间内没有收到目的节点发来的KEEP ALIVE信号时,它认为此条路径失效,必要时重新进行路由发现。
科技论坛推荐:《现代传输》于1975年创刊,由信息产业部主管、电信科学技术第五研究所(原邮电部第五研究所)主办,是国内邮电科技期刊中内容丰富、传播面广、权威可靠的学术性与技术性相结合的刊物,读者遍及全国各地,有科研设计院所、专业院校、电信营运部门、生产厂家和通信公司等等。它发表了大量的光通信技术、光通信网、数据通信技术以及通信电缆、光缆等领域的论文,并及时介绍、分析通信领域的发展动态及趋势,为通信领域的科研、设计、生产、运行维护等部门的广大工程技术人员提供了许多有价值的信息和资料。主管单位:信息产业部,主办单位:电信科学技术第五研究所,国内刊号:CN51-1692/TN,国际刊号:ISSN1673-5137
如图1所示,当rfd[0]设备要发送数据给ffd[0],rfd[0]先把数据发送给具有路由功能的父节点ffd[5],ffd[5]查找自身路由表,如果没有发现到一条到ffd[0]的有效路径,于是就发起路由发现过程,构建并洪泛RREQ包。ffd[0]选择最先到达的RREQ包的传送路径ffd[5]-ffd[2]-zc-ffd[0],并返回RREP信息,ffd[5]收到ffd[0]发来的RREP信号,建立路由路径,ffd[5]就会按这条路径来发送缓存的数据。同时ffd[0]定期发送KEEP_ALIVE包,以维护路由信息。
2 AODVjr路由存在的问题
AODVjr算法具有灵活的路径查找功能,其按需产生路由路径的方式提高了协议效率,能快速适应动态链路环境,并可支持多播功能。但ZigBee网络中的AODVjr路由算法容易引起RREQ广播风暴并耗费资源。另外,AODVjr属于后应式的按需Ad hoe网络,不会周期性地更新自己的路由信息,只有在需要通信时,才发起路由查找过程。在ZigBee网状网络里,节点会移动或者休眠,因此对路由查找使用比较频繁。为了达到节能且降低通信复杂度的目的,本文对AODVjr算法进行了改进,针对广播风暴,采用网络命令传输的方向指导性,减少信息传输的次数。
3 改进算法设计
在AODVjr中里,路由请求命令帧用来发起一个路由发现过程,路由应答命令用来返回路由信息,它们的载荷部分的第二个字节命令选项中,低7位保留,为此在改进的AODVjr中,可以充分利用这些保留位,改进后的命令选项如表1所示。
命令传输方向位为1表示向该节点的子节点方向传输,该位为0表示目的地不在该节点的子节点范围内,应该向该节点的父节点传输。命令传输方向主要是控制命令传输的大致方向,避免发生广播风暴,其算法流程图如图2所示。
4 算法分析和仿真结果分析
根据ZigBee中网状路由AODVjr算法和改进的AODVjr算法思想,采用OMNET++4.1分别进行了模拟,其网络拓扑结构图如图1所示。在同一种网络拓扑结构下,所有的运行环境和参数都相同,利用原始AODVjr和改进的AODVjr算法,在相同的时间里,对RFD节点发送的数据包数量、消息经过的跳数以及FFD节点能量变化进行统计,得到的结果如图3、图4、图5所示。
图3上表示在AODVjr算法下,各个RFD节点收到的数据包的数量,图3下表示在改进的AODVjr算法下,各个RFD节点收到的数据包的数量。从图3中可以看出,改进的AODVjr算法在相同的时间里,传送的数据包的量比原始AODVjr算法要大得多,这说明改进后的AODVjr算法提高了通信效率。
图4上表示在AODVjr算法下,各个RFD节点上消息跳数,图4下表示在改进的AODVjr算法下,各个RFD节点上消息跳数。从图4中可以看出,改进的AODVjr算法在相同的时间里,RFD上统计的跳数的次数比原始AODVjr多很多,这一点与图3的仿真结果是一致的。另外,从图4可以看出,下图的跳数比较稳定,变化的幅度没有上图大,而且上图的节点上消息的跳数大都在10跳以上,下图最多只有6.0跳。这说明改进后的AODVjr算法减少了跳数。
图5上是原始AODVjr中FFD节点和中心协调器能量变化图,图5下是改进AODVjr中FFD节点和中心协调器能量变化图。起初中心协调器能量为30000,FFD节点为20000,黄色和绿色曲线分别表示FFD[1]和FFD[6],从图1可以看出,RFD[3]与其他节点通信时,都必须过这两个FFD节点,由于改进的AODVjr加入了方向控制,为此,这两个节点的能量耗费比没有改进的AODVjr要快很多。蓝色曲线表示FFD[3]节点能量变化,从图1可以看出FFD[3]节点只有RFD[1]节点发生数据和接收数据时需要用到,而从图3可以看出改进AODVjr中RFD收发数据量都比原始AODVjr中RFD收发数据量多,由于原始AODVjr没有进行数据包传输方向控制,在查找路由时使用了广播,为此,在原始AODVjr中FFD[3]能量耗费比改进AODVjr中FFD[3]能量耗费快。
5 结束语
针对AODVjr算法思想以及网络命令帧的格式,本文提出了一种改进的AODVjr算法,充分利用AODVjr算法中的命令选项的保留字,进行路由的传输的方向控制,避免广播风暴,降低了跳数,节约了能量。经过omnet++4.1仿真,证实改进之后的AODVjr算法提高了ZigBee网络的通信效率。
* 稍后学术顾问联系您