专利名称:一种基于主从结构多跳网络的多路径分段路由方法
技术领域:
本发明属于网络路由中继技术领域,具体涉及一种基于主从结构多跳网络的多路径分段路由方法。
背景技术:
基于主从结构的多跳网络是由集中器节点和诸多终端节点构成的自治网络系统。 其中集中器节点主要负责管理网络和收集信息,终端节点负责采集信息兼具路由转发功能。主从结构的多跳网络兼具了自组网便于组网的特性和基础设施网便于管理的特性,为应用于物联网的协同工作系统提供了一种有效的解决途径,是一种可以广泛应用于无线自组织局域网(Wireless LAN, WLAN)、无线传感网(Wireless Sensor Network, WSN)和电力线载波网络(Power Line Communication, PLC)等多跳中继传输的网络组织架构。图1所示了主从结构多跳网络在电力线载波领域的应用场景,其中集中器通过电力线载波网络对上百台电表实施网络管理和数据收集。在面向应用的主从结构多跳无线网络或电力线载波网络中,组网时由于竞争共享信道产生的碰撞、信号衰减、噪音干扰及信道干扰等因素,使得信号沿距离大规模衰减,实际带宽远远小于理论值,通信方式通常为半双工方式,隐蔽终端暴露终端问题凸显,传统的固定路由方法很难解决上述情况所带来的技术难题。针对上述问题,在主从结构多跳电力线载波网络领域,具有代表性的现有解决方案为 REMPLI (Real-time Energy Management via Powerlines and Internet)方案禾口 PRIME(PoweRline Intelligent Metering Evolution)方案。REMPLI项目始于2003年,主要针对窄带电力线接入。它提供了两种路由方法采用动态源路由协议方式和采用单频网(Single Frequency Network, SFN)方式。REMPLI项目论证了 SFN方式优于未经优化的动态源路由协议。然而由于SFN方式的每次数据传输都采用广播方法,每一次的广播过程都需要多数节点的多次参与,从而使得节点能耗显著增加,对于临近集中器的节点,该技术缺陷表现得尤为明显。PRIME项目通过将节点分为集中器,交换节点和终端节点三类,使用地址分配标识不同的节点,建立和维护树形的网络拓扑结构。PRIME标准从主从多跳本身可构成的树形组织结构出发,组建了树形网络。然而考虑到若临近树根的网络节点信号环境发生变化,即有可能影响到以此为第一级中继的大片节点的通信和组网,从而破坏已建成的树形网络拓扑,导致大量额外的控制开销。在MANETs (移动无线自组网)领域,采用多路径的路由协议是保障网络可靠传输的解决方案。多路径路由协议主要使用多路径算法发现多条路径,断路发生时使用一条备份路径来取代中断路径,从而达到自动修复断路,不必重新发起路由请求的功能;进而增加网络稳定性,减少路由开销。其中 AOMDV(Ad hoc On-demand Multipath Distance Vector) 是AODV (Ad hoc On-demand Distance Vector)的多路径扩展,它维护多条路径,然而其流量分布不超过一条路径,只是在主路径失败时才利用;路由存储和转发主要依靠本地转发■SMR(Split Multipath Routing) ^X^t DSR(Dynamic Source Routing)白勺 /“皿,
通过目的节点为每个路由请求发现两条路径一条是最短路径,另一条是最大非交叉路径; 主要研究建立和维持最大化非交叉路径,负载被分布到每个会话的两条路径中。SMR的路由存储和转发主要依靠数据包中携带全段的源路由实现。使用多跳的路由传输方式中,路由存储和转发技术是关键。考虑到网络带宽有限, MAC层争用的情况下,要保证网络中的数据包尽量不被冲突,则所发送的数据包不宜过长, 单纯使用全段源路由存储和转发的DSR和SMR方案使得数据包中有效载荷过少,数据传输缺乏效率;单纯使用本地转发表存储和转发的AODV和AOMDV方案使得临近集中器节点的中间节点维护的转发表数量巨大,不利于网络节点的部署和实施。
发明内容
本发明提供了一种基于主从结构多跳网络的多路径分段路由方法,解决了现有主从结构多跳网络路由技术所存在的上述技术缺陷,增加了网络的吞吐率,保证了网络的鲁棒性和稳定性。一种基于主从结构多跳网络的多路径分段路由方法,包括如下步骤(1)源节点构造PREQ(路由请求包),并向其周围节点广播PREQ ;中间节点收到 PREQ后,向其周围节点选择性广播PREQ,直至多份PREQ经过不同路径到达目的节点;所述的源节点和目的节点分别为集中器节点和终端节点或终端节点和集中器节点;(2)目的节点收到多份PREQ后,根据PREQ的全路由段对PREQ进行无环路筛选,并将筛选后保留的PREQ存储于本地缓存;(3)对保留的PREQ的全路由段进行区域划分某一全路由段中,将距离集中器节点小于区域跳数的中间节点划分为Rl区;将距离集中器节点等于区域跳数的中间节点划分为B区;将距离集中器节点大于区域跳数的中间节点划分为R2区;(4)目的节点根据保留的PREQ的全路由段构造对应的PREP(路由回复包),并将 PREP按其全路由段单播回传至源节点;回传过程中,Rl区节点记录其自身到集中器节点的路由段信息;R2区节点记录其自身分别到终端节点和集中器节点的正向路由信息和反向路由信息;B区节点记录其自身到集中器节点的路由段信息以及其自身到终端节点的正向路由信息;终端节点记录其自身到集中器节点的反向路由信息;(5)源节点收到多份PREP后,将所有PREP的全路由段存储于本地缓存,并以最优全路由段作为数据发送的默认路径;若源节点为集中器节点,源节点根据默认路径构造PDATA(数据包),源节点和Rl 区节点将PDATA按其RlB区路由段逐跳通过Rl区发送至B区节点,B区节点和R2区节点按各自的正向路由信息将PDATA逐跳通过R2区发送至目的节点;若源节点为终端节点,源节点构造PDATA,源节点和R2区节点按各自的反向路由信息将PDATA逐跳通过R2区发送至B区节点;B区节点根据其自身到集中器节点的路由段信息设定PDATA的RlB区路由段,B区节点和Rl区节点将PDATA按其RlB区路由段逐跳通过Rl区发送至目的节点;(6)当最优全路由段发生断路时,断路发现节点根据其所在区域以及数据流向选择使用路由信息修复全路由段或构造PERR(路由维护包)向其上游节点发送PERR ;上游节点接收PERR,并根据其所在区域以及数据流向选择使用路由信息修复全路由段或向其上游节点转发PERR,直至源节点收到PERR ;源节点收到PERR后,删除本地缓存中的最优全路由段,并选择本地缓存中的其他全路由段作为数据发送的默认路径,执行步骤(5);若本地缓存中无其他全路由段,重复步骤(1)至(5)。优选的技术方案中,所述的步骤( 中,对PREQ进行无环路筛选采用拓扑排序法;
算法速度快,可靠性高。所述的步骤(1)中,选择性广播PREQ为当中间节点首次收到某一路径的PREQ 时,中间节点记录该PREQ的Hops (跳数)和上一跳节点地址,并广播该PREQ ;当中间节点非首次收到某一路径的PREQ时,若该PREQ的Hops小于或等于中间节点已记录的Hops且该PREQ的上一跳节点地址与中间节点对应记录的不同,则广播该PREQ,否则,丢弃该PREQ ; 广播PREQ时,中间节点将自身的地址添加到PREQ的全路由段尾部。所述的区域跳数为实际经验值,其根据多跳网络的规模而定。所述的RlB区路由段为Rl区和B区的路由段。所述的最优全路由段为目的节点最先收到的PREQ的全路由段。所述的正向路由信息为某一全路由段中当前节点背离集中器节点的下一跳节点地址;所述的反向路由信息为某一全路由段中当前节点去往集中器节点的下一跳节点地址。本发明的有益技术效果为(1)本发明通过建立和维护源节点和目的节点的多条路由路径,使得在默认路径出现断路时快速切换到备用路径,从而保障数据的可靠传输,并减少路由重建频率,减少路由开销。(2)本发明通过采用以距离集中器节点一定区域跳数作为划分的网络分区方法, 仅B区和R2区记录本地转发表信息,从而避免了主从结构多跳网络中靠近集中器的终端节点本地转发表规模过大。(3)本发明中PDATA数据包中路由段仅携带RlB路由信息,通过R2区时依靠本地转发表转发,增加了数据包中有效载荷比重,提高了数据传递率。(4)本发明中发生路由断路时引入了本地使用备份路由信息快速修复断路路由段的机制,使得在短时间内修复断路路由成为可能。
图1为主从结构多跳网络的典型应用场景示意图。图2为PREQ/PREP的报文格式示意图。图3为PDATA的报文格式示意图。图4为PERR的报文格式示意图。图5为本发明多路径分段路由方法的步骤流程示意图。图6为本发明方法中路由建立的流程示意图。图7为本发明方法中数据发送的流程示意图。
图8为本发明方法中路由修复维护的流程示意图。
具体实施例方式为了更为具体地描述本发明,下面结合附图及具体实施方式
对本发明的多路径分段路由方法进行详细说明。如图5所示,一种基于主从结构多跳网络的多路径分段路由方法,包括如下步骤(1)源节点发送路由请求。如图6所示,当源节点发送数据时,若源节点为集中器节点,首先检查本地“目的节点-B区节点映射表”和“至RlB区节点路由表”,若源节点为终端节点,则查找“反向路由转发表”;查看源节点是否有到达目的节点的路由信息。如果已找到相应路由信息,则转入数据发送阶段;如果没有相应的路由信息,说明没有到目的节点的路由,于是发起路由请求。构造并广播PREQ,同时设置PREQ定时器。“目的节点-B区节点映射表”提供集中器节点到达目的节点的多跳路由路径上可供选择B区节点地址,“至RlB区节点路由表”提供集中器节点达指定Rl区节点或B区节点的全段路由信息。源节点构造PREQ,并向其周围节点广播PREQ ;如图2所示,PREQ包含类型域、源节点地址、目的节点地址、ID号、全路由段和Hops。其中PREQ的类型域为0X01,全路由段用于存放路由过程中经过节点的地址,Hops记录PREQ从源节点到达当前节点时所经历的路
由跳数。中间节点收到PREQ后,向其周围节点选择性广播PREQ 当中间节点首次收到某一路径的PREQ时,中间节点将该PREQ的Hops和上一跳节点地址记录至本地PREQ表中,并广播该PREQ ;当中间节点非首次收到某一路径的PREQ时,若该PREQ的Hops小于或等于中间节点已记录的Hops且该PREQ的上一跳节点地址与中间节点对应记录的不同,则广播该 PREQ,否则,丢弃该PREQ ;广播PREQ时,中间节点将自身的地址添加到PREQ的全路由段尾部。PREQ表记录中间节点已收到的PREQ中的Hops跳数信息和上一跳节点地址,并保持一段生存时间precLtimer,到时后清除相应表项。多份PREQ经过不同路径到达目的节点;源节点和目的节点分别为集中器节点和终端节点或终端节点和集中器节点。(2)目的节点接收路由请求,并进行无环路筛选。如图6所示,目的节点收到多份PREQ后,目的节点查看PREQ的全路由段和ID号, 确认是否是首次收到,若非首次收到,目的节点丢弃该PREQ ;若是首次收到,目的节点根据 PREQ的全路由段采用拓扑排序方法对PREQ进行无环路筛选,并将筛选后保留的PREQ存储于本地PREQ缓存表中。目的节点在收到源节点发来的PREQ后设置定时器pi^p_timer,prep_timer时间内,目的节点可以继续接受其他筛选合格的PREQ,并存储于本地PREQ缓存表中;超时后,目的节点不再接收早于当前PREQ的ID的PREQ。若目的节点为集中器节点,目的节点将收到的PREQ的全路由段分解至本地“目的节点-B区节点映射表”和“至RlB区节点路由表”中;若目的节点为终端节点,则仅需依照PREQ的全路由段记录其自身到集中器节点的反向路由信息至本地“反向路由转发表”中。(3)对筛选后的全路由段进行区域划分。对保留的PREQ的全路由段进行区域划分某一全路由段中,将距离集中器节点小于区域跳数(R0UTE_IN_PKT_C0UNT)的中间节点划分为Rl区;将距离集中器节点等于区域跳数的中间节点划分为B区;将距离集中器节点大于区域跳数的中间节点划分为R2区;其中R0UTE_IN_PKT_C0UNT为根据网络规模自定义的常量参数。(4)目的节点发送路由回复,中间节点存储路由信息。如图6所示,目的节点依次读取本地PREQ缓存表中的PREQ,根据PREQ的全路由段构造对应的PREP (PREP的报文格式与PREQ的相同,PREP的类型域为0X0》,并将PREP按其全路由段单播回传至源节点;回传过程中,中间节点收到PREP后,读取PREP的全路由段并在本地存储路由信息。其中,Rl区节点记录其自身到集中器节点的路由段信息至本地“至集中器节点路由表” 中;R2区节点记录其自身分别到终端节点和集中器节点的正向路由信息和反向路由信息至本地“正向路由转发表”和“反向路由转发表”中;B区节点记录其自身到集中器节点的路由段信息至本地“至集中器节点路由表”中,记录其自身到终端节点的正向路由信息至本地 “正向路由转发表”中。(5)源节点接收路由回复,并向目标节点发送数据。当源节点收到PREP后,若源节点为集中器节点,则提取PREP的全路由段和目的地址,然后添加相应路由信息至本地“目的节点-B区节点映射表”和“至RlB区节点路由表” 中;若源节点为终端节点,则记录其自身到集中器节点的反向路由信息至本地“反向路由转发表”中;当源节点的定时器超时却没有收到相应的PREP,若此时还没达到最大PREQ重发次数,源节点则重新发起路由请求过程。源节点收到多份PREP后,将所有PREP的全路由段存储于本地缓存,并以最优全路由段作为数据发送的默认路径;最优全路由段为目的节点最先收到的PREQ的全路由段。如图7所示,若源节点为集中器节点,源节点根据默认路径构造PDATA(将最优全路由段中距集中器节点最近的R0UTE_IN_PKT_C0UNT个地址复制到PDATA中的RlB区路由段中,将RouteHops设为R0UTE_IN_PKT_C0UNT),源节点和Rl区节点将PDATA按其RlB区路由段逐跳通过Rl区发送至B区节点,B区节点和R2区节点按各自的正向路由信息将PDATA 逐跳通过R2区发送至目的节点;若源节点为终端节点,源节点构造PDATA (将PDATA中的RouteHops设为0,R1B区路由段设为空),源节点和R2区节点按各自的反向路由信息将PDATA逐跳通过R2区发送至 B区节点;B区节点查找本地“至集中器节点路由表”,根据其自身到集中器节点的路由段信息设定PDATA的RouteHops为R0UTE_IN_PKT_C0UNT,再将至集中器节点路由表中的对应的 R0UTE_IN_PKT_C0UNT个地址填入PDATA的RlB区路由段中,B区节点和Rl区节点将PDATA 按其RlB区路由段逐跳通过Rl区发送至目的节点;如图3所示,PDATA包含类型域、源节点地址、目的节点地址、ID号、RlB区路由段、 Payload和RouteHops。其中PDATA的类型域为0X04,Payload区为上层传来的有效数据信息,RouteHops为数据包RlB区路由段的长度信息。当路由段长度不为O时,RlB区路由段记录的是集中器节点到达相应B区节点的全段路由信息。
(6)多路径修复维护全路由段。当最优全路由段中两节点间的链路断开或某中间节点失效时,断路发现节点需要根据其所在区域以及数据流向使用路由信息修复全路由段;如果无法对全路由段进行修复,则需要向上游节点发送PERR。如图4所示,PERR包含类型域、源节点地址、目的节点地址、ID号、断路发现节点地址、断路节点地址、RlB区路由段和RouteHops。其中PERR的类型域为0X08,断路发现节点地址和断路节点地址可准确定位断路的链路。如图8所示,当数据流向为集中器节点到终端节点时,当断路发生在Rl区内时,由断路发现节点构造PERR并直接向源节点发送PERR ;当断路发生在R2区内时,断路发现节点首先尝试使用本地“正向路由转发表”寻找别的中间节点建立链接,若“正向路由转发表”已无可用路径,则构造PERR并按照本地 “反向路由转发表”发送PERR至上游节点;上游节点收到PERR后重复上述本地修复操作,直至B区节点;当PERR到达B区节点,B区节点首先查找本地“正向路由转发表”寻找别的中间节点建立链接,若“正向路由转发表”已无可用路径,则按照本地“至集中器节点路由表” 中的路由段信息,向源节点直接发送PERR。当数据流向为终端节点到集中器节点时,当断路发生在Rl区内时,由断路发现节点构造PERR并直接向B区节点发送PERR ;若PERR到达B区节点,由B区节点查找本地“正向路由转发表”转发PERR至源节点;当断路发生在R2区内时,断路发现节点首先查找本地“反向路由转发表”寻找别的中间节点建立链接,若“反向路由转发表”已无可用路径,则构造PERR并按照本地“正向路由转发表”发送PERR至上游节点;上游节点收到PERR后重复上述本地修复操作,直至源节点。源节点收到PERR后,删除本地缓存中的最优全路由段,并选择本地缓存中的其他全路由段作为数据发送的默认路径,执行步骤(5);若本地缓存中无其他全路由段,重复步骤(1)至(5)。
权利要求
1.一种基于主从结构多跳网络的多路径分段路由方法,包括如下步骤(1)源节点构造PREQ,并向其周围节点广播PREQ;中间节点收到PREQ后,向其周围节点选择性广播PREQ,直至多份PREQ经过不同路径到达目的节点;所述的源节点和目的节点分别为集中器节点和终端节点或终端节点和集中器节点;(2)目的节点收到多份PREQ后,根据PREQ的全路由段对PREQ进行无环路筛选,并将筛选后保留的PREQ存储于本地缓存;(3)对保留的PREQ的全路由段进行区域划分某一全路由段中,将距离集中器节点小于区域跳数的中间节点划分为Rl区;将距离集中器节点等于区域跳数的中间节点划分为B 区;将距离集中器节点大于区域跳数的中间节点划分为R2区;(4)目的节点根据保留的PREQ的全路由段构造对应的PREP,并将PREP按其全路由段单播回传至源节点;回传过程中,Rl区节点记录其自身到集中器节点的路由段信息;R2区节点记录其自身分别到终端节点和集中器节点的正向路由信息和反向路由信息;B区节点记录其自身到集中器节点的路由段信息以及其自身到终端节点的正向路由信息;终端节点记录其自身到集中器节点的反向路由信息;(5)源节点收到多份PREP后,将所有PREP的全路由段存储于本地缓存,并以最优全路由段作为数据发送的默认路径;若源节点为集中器节点,源节点根据默认路径构造PDATA,源节点和Rl区节点将PDATA 按其RlB区路由段逐跳通过Rl区发送至B区节点,B区节点和R2区节点按各自的正向路由信息将PDATA逐跳通过R2区发送至目的节点;若源节点为终端节点,源节点构造PDATA,源节点和R2区节点按各自的反向路由信息将PDATA逐跳通过R2区发送至B区节点;B区节点根据其自身到集中器节点的路由段信息设定PDATA的RlB区路由段,B区节点和Rl区节点将PDATA按其RlB区路由段逐跳通过Rl 区发送至目的节点;(6)当最优全路由段发生断路时,断路发现节点根据其所在区域以及数据流向选择使用路由信息修复全路由段或构造PERR向其上游节点发送PERR ;上游节点接收PERR,并根据其所在区域以及数据流向选择使用路由信息修复全路由段或向其上游节点转发PERR,直至源节点收到PERR ;源节点收到PERR后,删除本地缓存中的最优全路由段,并选择本地缓存中的其他全路由段作为数据发送的默认路径,执行步骤(5);若本地缓存中无其他全路由段,重复步骤 (1)至⑶。
2.根据权利要求1所述的基于主从结构多跳网络的多路径分段路由方法,其特征在于所述的步骤(1)中,选择性广播PREQ为当中间节点首次收到某一路径的PREQ时,中间节点记录该PREQ的Hops和上一跳节点地址,并广播该PREQ ;当中间节点非首次收到某一路径的PREQ时,若该PREQ的Hops小于或等于中间节点已记录的Hops且该PREQ的上一跳节点地址与中间节点对应记录的不同,则广播该PREQ,否则,丢弃该PREQ ;广播PREQ时,中间节点将自身的地址添加到PREQ的全路由段尾部。
3.根据权利要求1所述的基于主从结构多跳网络的多路径分段路由方法,其特征在于所述的步骤O)中,对PREQ进行无环路筛选采用拓扑排序法。
4.根据权利要求1所述的基于主从结构多跳网络的多路径分段路由方法,其特征在于所述的最优全路由段为目的节点最先收到的PREQ的全路由段。
5.根据权利要求1所述的基于主从结构多跳网络的多路径分段路由方法,其特征在于所述的正向路由信息为某一全路由段中当前节点背离集中器节点的下一跳节点地址; 所述的反向路由信息为某一全路由段中当前节点去往集中器节点的下一跳节点地址。
全文摘要
本发明公开了一种基于主从结构多跳网络的多路径分段路由方法,包括(1)源节点发送路由请求;(2)目的节点接收路由请求,并进行无环路筛选;(3)对筛选后的全路由段进行区域划分;(4)目的节点发送路由回复,中间节点存储路由信息;(5)源节点接收路由回复,并向目标节点发送数据;(6)多路径修复维护全路由段。本发明通过建立和维护源节点至目的节点的多条路由路径,使得在默认路径出现断路时快速切换到备用路径,从而保障数据的可靠传输,并减少路由重建频率,减少路由开销;同时通过对全路由段进行区域划分,避免了主从结构多跳网络中靠近集中器的节点本地转发表规模过大,增加了数据包中有效载荷比重,提高了数据传递率。
文档编号H04L12/56GK102255807SQ20111018937
公开日2011年11月23日 申请日期2011年7月7日 优先权日2011年7月7日
发明者丁雪丽, 于强, 倪笑园, 徐元欣, 李永佳, 杨硕, 梁书成, 潘立波, 章翠枝, 陈淑敏 申请人:浙江大学