好文档 - 专业文书写作范文服务资料分享网站

Zigbee无线组网技术的研究 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

硕士学位论文第三章Zigbee组网算法的研究与设计旧,当路由信息的分组在传输中丢失时,就很可能导致中问节点对RREQ错误应答,这时AODV算法将利用节点序列号的大小来避免路由环路问题,而在AODVjr中,不使用节点序列号,仅规定目的节点回复RREP,这样同样能避免路由环路,同时可以进一步减少丌销。AODV算法的路由环路的避免如图3.7。源点∽源目的节点嘞源O点@Seq_No.25Seq_No.26Seq_No.26Seq_No.29Seq_No.210(Seq_No.2lO)图3.7避免路由环路如上图:节点1向节点5进行通信,假如路由信息(RREQ)通过节点4传输的时候丢失了,那么4.>5的链路将中断(图a),而源节点l并不知道4.>5链路发生中断。此时,节点4发起本地链路修复,向节点5发起路由发现过程,节点l将会收到节点4发来的RREQ(通过4.>6.>l路径,图b),而节点1原路由表中已经有节点5的信息,那么此时节点l又将沿着1->2->3->4的路径发起RREQ,结果就形成环路4.>6.>1.>2.>3.>4。在AODV算法当中,采用节点序列号方式(图c1,当4->5的链路发生中断时,节点4把自身的序列号(--9)更新为目的节点5的序列号(=10),而此时由于节点6的序列号小于节点4的序列号,那么节点4将放弃向节点6广播I眦Q,这样就能避免路由环路问题。而对于AODVjr算法来说,仅允许目的节点回复RREP,当源节点到目的节点的链路发生中断时,假如此时还需要路由的话,源节点将修改路由发现路径,及时更新网络拓扑,这样也能有效的避免路由环路,因此不需要节点序列号机制。在AODVjr算法中,节点在转发RREQ之前,会计算将RREQ发送给它的邻节点和本节点之间的链路开销,同样在转发RREP之前也会计算反向路径中下一跳节点与本节点之间的链路开销,并将这些开销加到各分组中存储的链路开销上。在路由期间,中间节点和目的节点可能多次收到同一个RREQ,这种情况下采用首接为最优的思想,即只响应第一个收到的RREQ,在该请求中记录的路径即为消息传输的路径,RREP将沿着收到的第一个RREQ中记录的上一级地址发送回去。而在AODV算法中,由于采用了序列节点号机制,如果两次的RREQ的序列42硕十学位论文第三章Zigbee组网算法的研究与设计号相同,那么将丢弃后~个RREQ;如果后一个RREQ的序列号大于先自订的序列号,那么将更新路由,选择序列号大I拘RREQ。AODVjr算法流程图如图3—8。图3-8AODVjr算法流程图图3-9是AODVjr算法数据传输过程的示例图。图中,节点1向节点11发送数据,节点5向节点3发送数据,路由发现过程和图3.2中过程一样,不同的是当中间节点(如节点4)有到目的节点的路由,也不回复RREP,并且路由表中也不存储跳数信息,只存储各节点之间的链路开销(图a),然后选择各路径中总成本最小的那条路径作为数据传输路径。由于节点4要同时处理两组RREQ,很可能导致节点4过载,使得路径l的路由总成本小于路径2,也就是说RREQ沿着路径l比路径2要更快到达节点1l,此时将选择路径l作为数据传输的路径(尽管路径2的跳数比路径l小1,并且节点11会定期发送ACK消息以维护路由信息(图”。43硕十学位论文第三章Zigbee组网算法的研究与设计(a)(b)一一+反向路径一RREQ’RREP/,、Data.7一lACK图3-9AODVjr算法中数据传送过程示例图从以上分析可以得出:改进的AODVjr算法将使节点避免当节点出现过载的情况下过早的失去作用,当节点想要选择路径时,将考虑路径上的链路开销。在AODV算法只选择最少跳数的路由,而AODVir算法中,只选择最快的路由,而忽略其跳数信息。当跳数最少的路径上某个(些)中间节点已经严重过载时,如果继续选择使用该路径进行路由,那么将选择其他链路质量较好的路径,这样就可以避免导致大量数据包的丢失和传输延迟的急剧增加。//AODVjr算法实现RREQ部分代码:voidsend_rreq(RREQ幸request)(……insert_req_id(request->sourceaddr,request->dest_addr,request->req_id);//将reqid力fl入请求表update_route(request->nexthop);request->sre_addr2request->source_addr,prevaddr,request->LQI,//更新路由sre_route?>dest_addr;request->req_id=++src_route->req_id;requese->LQI=MAC_LQI;if(maclnfo.shortAddr.Val—request->dest_addr)(send_rrep(request);struct//目标节点应答)?dest—route=Route_Table_Entrylookuproute(request->dest_addr);forward_rreq(request);})●//把目的节点地址加进路由表//转发RREQ)//AODVjr算法实现I眦P部分代码voidsend_rrep(RREQ?request)’{硕+学位论文第三章Zigbee组网算法的研究与没计RREP牛reply=(RREP木)malloc(sizeof(RREP));reply.一>type=AODVjr_RREP;reply..>destaddr=request->dest_addr;//RREP∥目的节点地址reply.->LQI=MACLQI;structRouteTable_E;ntry木dest—noutelookuproute(request->dest_addr);reply.?>source_addr=request,->sourcereply..>lire20msaddr;∥源节点地址macDestlnfo.addrMode=MAC—DST_SHORT_ADDR;macDestInfo.panlD=maclnfo.panlD;macDestlnfo.shortAddr.Val=lookup_route(request->source_addr)->nextaddr;//发起节点路径的下一跳…。)在转发RREQ和RREP时,只需要把下一跳的地址和LQI值加进路由表,然后调用网络层相关函数实现即可。3.7Zigbee路由算法的设计通过上面的研究,在Cluster-Tree算法中,节点之间数据的发送只能按照父子关系进行,印当一个节点收到数据后发现该分组不是给自己的,则只能转发给它的父节点或者子节点,显然这并不一定是最优的路径,因此路由效率较低。另一方面,由于Cluster-Tree算法不需要维护路由表信息,并且无初始延迟,因此控制开销很低。而AODVjr算法具有路径寻优功能,能够获得最佳的路径,但需要路由表信息,并且有初始延迟,因此控制开销相对Cluster-Tree算法来说比较高。为了更进一步提高路由效率,达到低功耗、可靠性高的设计目标,本文采用Cluster-Tree算法和AODVjr算法相结合的ZBR(ZigbeeRouting)算法,此算法思想汇聚了两种算法的优点,是两种算法的折衷:既具有AODVjr算法的路由寻优的能力,又具有Cluster-Tree算法的无初始延迟的优点。3.7.1ZBR算法的设计ZBR算法设计思想如下:让具有路由功能的节点使用AODVjr算法去发现路由,这样这些节点就可以不按照父子关系而直接发送信息到其通信范围内的其他具有路由功能的节点,而不具有路由功能的节点仍然按照Cluster-Tree路由算法的思想去发送数据分组和控制分组。在ZBR算法中,把网络中的节点分成三种类型:I卅、RN.和RFD。其中l埘+是指具有足够的存储空间和能力去执行45硕十学位论文第三章Zigbee组网算法的研究与设计AODVjr路由算法的节点,RN.是指其存储空间受限,不具有执行AODVjr算法路由算法的能力,只能用Cluster-Tree算法处理。另外Coordinator的路由算法跟I州+相同,而且Coordinator、IⅢ+和RN.都是FFD,能给其他节点充当路由节点;终端节点(RFD)只能充当Cluster-Tree算法的叶子节点(LeafNode),只能把数据交给父节点处理。在ZBR算法中,当lW+节点需要发送分组到网络中的某个节点而又没有通往目的节点的路由时,它会按照AODVjr算法发起路由发现过程,所不同的是在AODVjr算法中,节点都是RN+节点,每个节点处理RREQ的过程都一样;而在ZBR算法中,由于中间节点的类型不同,接收到RREQ时处理的过程也不一样,大致过程如下:1.源节点首先向周围节点广播一个RREQ分组,如果收到RREQ的节点是一个RN.节点,它就按照Cluster-Tree算法转发此分组;如果收到RREQ的节点是一个IⅢ+,则按照AODVjr算法广播RREQ过程继续广播RREQ,并创建反向路径,当RN+节点多次收到RREQ时,同样只响应第一个收到的RREQ,并且假如中间节点有到目的节点的路由,同样也不回复RREP。2.当RREQ到达目的节点或者目的节点的父节点,此节点就向RREQ的源节点回复一个RREP分组(RN.节点也可以回复RREP分组,但无法记录路由信息1,RREP应沿着已建立的反向路径向源节点传输,收到RREP的节点建立到目的节点的正向路径并更新相应的路由信息,然后就可以进行通信。ZBR算法把节点分为lⅢ+、RN.和RFD,在传输数据时,如果待发送数据的目标节点是自己的邻居节点,直接通信即可;反之,如果不是自己的邻居节点时,三种类型的节点处理数据包各不相同,如图3.10。RN.接收到数据包回复ACK,将数据交上层处理雪磊裂呈罗列直接发送NN点的路由?,/’l一““一根据Cluster-Tree路由算法。沿树查找到目的节点的路由将数据包沿着找到的路径传递结束(a)RN.节点数据处理流程图

Zigbee无线组网技术的研究 - 图文

硕士学位论文第三章Zigbee组网算法的研究与设计旧,当路由信息的分组在传输中丢失时,就很可能导致中问节点对RREQ错误应答,这时AODV算法将利用节点序列号的大小来避免路由环路问题,而在AODVjr中,不使用节点序列号,仅规定目的节点回复RREP,这样同样能避免路由环路,同时可以进一步减少丌销。AODV算法的路由环路的避免如图3.7。源点∽源目的节点嘞源O点@Seq_No.25Seq_No
推荐度:
点击下载文档文档为doc格式
1xxfw0oh073pit885vls
领取福利

微信扫码领取福利

微信扫码分享