一种路由更新方法

文档序号:7655306阅读:120来源:国知局

专利名称::一种路由更新方法
技术领域
:本发明涉及一种路由更新方法,尤其是一种基于树形结构无线网络的、稳定高效的先应式路由更新方法。
背景技术
:随着无线通信技术的不断发展,已提出并在实际应用中实现了多种无线通信网络技术,如移动自组织"AdHoc"网络(以下称MANET)、无线局域网(WirelessLocalAreaNetwork,以下简称WLAN)、无线网格网(WirelessMeshNet,以下简称WMN)等。MANET是由许多具有路由功能的移动节点组成的分布式无线多跳网络,它不依赖于预设的基础设施而临时组建,网络中移动的节点利用自身的无线收发设备交换信息,当相互之间不在彼此的通信范围内时,可以借助其他中间节点中继来实现多跳通信。WLAN是在局部区域内以无线方式进行通信的网络。它主要是为用户提供网络接入功能,使用户可以方便地获取信息。IEEE802.11定义的基本网格结构是基本服务集合(BasicServiceSet,以下简称BSS),包括"infrastructure"和"AdHoc"两种类型。在"infrastructure"类型中,BSS包括若干个无线站点(以下称STA)和一个与骨干网连接的接入点(AccessPoint,以下简称AP)。BSS中的STA之间通信需要经过AP转发。"AdHoc"类型中没有起AP作用的站点存在,STA之间的相互通信采用直通方式,不用经过AP的转发。在这两种类型中,STA均采用一跳通信。WMN是一种多跳、具有自组织和自愈特点的宽带无线网络结构,即一种高容量、高速率的分布式网络。它可以看成是单跳的WLAN网络和多跳的AdHoc网络的融合。画N的网络结构呈格栅状,整个网络由AP.、无线路由器(WirelessRouter,以下简称WR)和终端用户/设备(以下称CIient)构成。AP可以将无线网络接入骨干网,同时具有"AdHoc"路由选择功能;WR为底层的移动终端设备提供分组路由和转发功能;Client兼备主机和路由器两种角色,一方面作为主机运行相关的应用程序,另一方面作为路由器,运行相关的路由方法,参与路由发现、路由维护等路由操作。由上述分析可以看出,这三种无线通信网络的拓朴结构存在很多相似之处,因此WLAN直接采用了MANET中的路由方法,如"DSR"、"顯V"、"OLSR"、"T證F"、"TORA"、"ABR"等。麵N中的路由方法也基本沿用了"AdHoc"网络的路由方法,只是在协议的部分性能方面做了改进。如"腹MR"是一种基于"DSR"的多路径路由算法,是以尽可能小的开销建立和维护一个多路径路由,同时保证节点路由緩存中路由的有效性;"MR-LQSR"是在"DSR"的基础上采用最大吞吐量准则,提出的一种多无线跳频(RadioFrequency,以下简称RF)收发器、多跳无线网络的路由方法;"SQOR"是在"AODV"的基础上,综合考虑吞吐量和传输速率,使用与吞吐量相关的传输时间(Throughput—RelatedTransmissionTime,以下筒称TRTT)和实际传丰ft时间(PracticalTransmissionTime,以下简称PTT.)这两个参数作为参考量的^各由方法。但是,这些路由方法在降低路由开销,提高数据传输效率和可靠性,节省网络能耗和降低网络复杂性方面存在许多问题。首先,由于上述三种无线通信网络不具备规则的、预先可知的网络拓朴结构:,因此在利用这些路由方法转发数据分组的时候,为了找到一条合适的路径,源节点往往会采用洪泛的方式,这种寻找路径的方式具有很大的盲目性,会消耗大量带宽,增加路由开销。其次,按照它们所依据的网络逻辑结构的不同,这些路由方法采用了平面结构或分层结构,平面结构中各个节点在路由功能上地位相同,它的可扩展性差,在一定程度上限制了网络的规模,分层结构的方法实现非常复杂,具有较高的路由开销。再次,在这些路由方法中,通常需要在节点中建立和维护全局的路由信息,这将大大增加路由的控制开销,提高路由的复杂度,降低网络-的有效吞吐量。最后,在这些路由方法中,有些采用了按需路由方法,但存在目的节点是否可达的不确性,而且在路由建立和路由查找时会引入较大的时延。有些虽然也采用了先应式路由方法,但需要发送大量的控制分组才能保证路由表信息的准确可靠,增加了路由方法的控制开销,而且很多仅支持单向或双向链路,具有一定的局限性。
发明内容本发明的目的是克服现有无线网络的路由更新方法复杂和控制开销大的问题,提供一种计算简单,控制开销少,数据传输效率和可靠性高,且能适应网络拓4卜动态变化的路由更新方法。为实现本发明的目的,提供了一种路由更新方法,该方法应用于基于树形结构的无线网络,该路由更新方法包括节点监测到网络节点之间链路连接状态改变后,重新计算自身的跳数;所述节点将自身的跳数与相邻节点的跳数进行比较,判断其与相邻节点的层次关系;当判断结果为所述节点与所述相邻节点是同层节点时,则更新所述节点路由表中的同层节点列表;当判断结果为所述节点是所述相邻节点的上层节点或下层节点时,则更新所述节点的路由表。由于树形结构的无线网络中,节点具有移动性,节点与邻节点之间的链路可能建立,可能断开,也可能保持不变,所以节点间的一条链路状态改变时,相关的数个节点均会受到影响,在链路状态改变时,更新相应节点的路由表,应包括更新链路两端节点、受影响节点及所有上级节点的上行路由表和下4亍^各由表。上述技术方案基于树形结构无线网络,接入节点为树形结构的根节点,非接入节点(以下简称节点)为树形结构的叶节点。源节点中的数据分组能汇聚到接入节点,由接入节点负责将汇聚后的数据分组向目的节点转发,或者接入其它无线网络。其中的接入节点可以移动也可以固定,通常是固定的。接入节点一方面负责将由节点构成的子网接入骨干网;另一方面也负责节点间通信,起到转发分组的作用。这样,当多个源节点与同一目的节点通信时,通过接入节点的转发可以避免大量数据分组在目的节点的拥塞,提高了通信效率。节点也可以是移动或者静止的,与接入节点多跳通信,避免了远距离一跳传输所造成的大功率消耗,减少了能量损耗,降低了路由开销。在上述技术方案中引入了上行路由表和下行路由表的概念,并采用了最小跳数机制。上行和下行路由表中只记录了节点的身份号和跳数,跳数是节点转发数据分组和更新路由表的唯一参数。每个节点维护一张上行路由表和一张下行路由表。若目的节点在源节点的上行路由表中,,则利用上行路由方法发送数据分组;若目的节点在源节点的下行路由表中,则利用下行路由方法发送数据分组;若目的节点既不在源节点的上行路由表中,又不在源节点的下行路由表中,则源节点首先在上行路由表中寻找最小跳数的节点并向其发送数据分组,这样依次类推,直到分组到达中间节点,此中间节点的下行路由表中包含到达目的节点的跳数最少的路径。中间节点沿此路径发送数据分组,直到它到达目的节点。这样通过上行、下行路由表既支持了单向链路,又避免了路由环路的产生。另外,上行、下行路由表保存在每个节点中,其中记录了所有上层、下层和同层节点的信息,即具有多条备选路径,使每个节点可使用的链路数大大增加。当一个中继节点失效时,可以选择其它备选节点继续转发,这样大大提高了网络的可靠性,保证了传输的稳定准确,并减少了通信时延。再次,路由表中仅记录了节点及邻节点的身份号和跳数,存储的信息简单明确,可以大大减少路由表更新维护的开销。每个节点都知道邻节点的跳数,即每个节点都知道与邻节点的拓朴关系。当有数据分组要发送时,无需采用洪泛的方式,只需在邻节点中寻找跳数较小的节点即可实现数据分组的转发。这种方式寻找路径的方式大大降低了路由开销,提高了数据传输效率。并且,上述技术方案通过节点监视与邻节点的链路连接状况来更新相应节点路由表,将跳数作为判断路由表是否需要进行更新的唯一的参数,当节点探测到与邻节点间建立或断开一条链路时,节点重新计算跳数,根据更新后的跳数判断与邻节点的关系来更新上行路由表和下行路.由表,有效地维护了路由信息的准确性。当与邻节点的链路状况保持不变时,节点继续监视网络拓朴。这种以事件作为驱动的更新方式提高了路由表更新的效率,避免了以时间为驱动的更新方式所造成的不必要的更新,节省了路由表维护和更新的开销。在更新路由表时,只需更新变化的部分,不需要更新整张路由表,这也提高了路由表更新的效率,降低了因路由表信息不准确造成的时延,减少了更新路由表的费用。另外,在更新周围节点路由表时采用了多点中继技术,通过局部链路状态信息交换获得局部区域的网络拓朴结构,进而计算出局部生成树,沿着局部生成树进行分组广播,可以用最小的网络开销将分组传送到局部区域的边界节点,链路状态分组不断按局部生成树向外扩散,最终扩散到全网,这种方式大大降低了路由方法的控制开销。综上所述,本发明路由更新方法具有以下优点:1、减少了更新路由表时的能量损耗,降低了路由开销;2、提高了数据传输效率和可靠性;3、可适应网络拓朴的动态变化。下面通过附图和实施例,对本发明的技术方案做进一步详细的描述。图1为本发明路由更新方法具体实施方式的流程图2为本发明路由更新方法具体实施例一节点与新增邻节点建立链路后其路由表更新的流程图3为本发明路由更新方法具体实施例二节点与原有邻节点断开链路后其路由表更新的流程图4为本发明路由更新方法具体实施例三节点为新增邻节点的下层节点时其路由表更新的流程图5为本发明路由更新方法具体实施例四节点的邻节点链路状态变化时其路由表更新的流程图6为本发明路由更新方法具体实施例五节点作为变化链路的上级节点时其路由表更新的流程图7为本发明路由更新方法具体实施例六节点创建上行路由表的流程图;图8为本发明路由更新方法具体实施例七节点创建下行路由表的流程图;图9为本发明路由更新方法具体实施例八节点根据链路连接状况进行相关处理的流程图。具体实施例方式本发明的路由更新方法是一种基于树形结构的、主动的、通过事件触发路由更新方法。所谓树形结构的无线网络,是以接入节点为根,非接入节点为叶的树形路由结构。接入节点负责提供本地管理、路由,为节点提供接入骨干网的服务。当节点位于接入节点通信范围内时,可以与接入节点一跳通信,当节点位于接入节点通信范围外时,需要中继节点,与接入节点多跳通信。每个节点可以有上层节点、同层节点和下层节点,上层节点即节点上行链路上一跳可达的节点,同层节点即节点一跳可达,且与节点到达接入节点的跳数相同的节点,下行节点即节点下行链路上一跳可达的节点,统称为邻节点。上行链路是指节点通过中继节点用较少的跳数到达接入节点的链路方向,下行链路是指接入节点通过中继节点到达目的节点的链路方向。在本发明的技术方案中,树形结构无线网络中的任意节点和接入节点均设有上行路由表和下行路由表,统称为路由表,并在路由表中采用了跳数的概念。跳数定义为节点通过中继节点与接入节点通信时所需跳数的最小值,表示为HC。跳数保存在路由表中,是判断上行路由表和下行路由表是否需要更新的唯一参数。接入节点的跳数为0,节点Ni的跳数为HCi。对节点,其上行路由表为表l表l<table>tableseeoriginaldocumentpage14</column></row><table>表中,AP为接入节点身份号,其跳数为0。Nk-dl,…,N"d,,,为接入节点的下层节点身份号,其跳数为1。对接入节点,其下行路由表包含了在下行链路上所有节点的路径信息和跳数。对节点,其下行路由表包括上层节点列表.,记录了其所有上层节点的身份号;同层节点列表,记录了其所有同层节点的身份号;下层节点列表,记录了其下行链路上所有节点的路径信息以及这些节点距离本节点的跳数。在本发明的路由更新方法中,每个节点对其上行路由表和下行路由表进行必要的更新和维护,可以保证当节点移动时,即网络拓朴结构发生改变时,节点中保存的路由信息可以得到及时的更新,有效地保证了路由信息的准确性。该技术方案是通过下述步骤来实现的,其流程图如图l所示步骤100、节点监测到网络节点之间链路连接状态改变后,重新计算自身的跳数;步骤200、该节点将自身的跳数与相邻节点的跳数进行比较,判断其与相邻节点的层次关系;步骤300、当判断结果为该节点与相邻节点是同层节点时,则更新该节点路由表中的同层节点列表;步骤400、当判断结果为该节点是相邻节点的上层节点时,则更新该节点的上行路由表和下行路由表;步骤500、当判断结果为该节点是相邻节点的下层节点时,则更新该节点的上行路由表和下行路由表。在上述步骤100中,链路状态发生改变可以是在节点之间或节点和接入节点之间增加一条链路,也可以是在节点之间或节点和接入节点之间断开一条链路,还可以是节点的某个邻节点的上行链路或下行链路状态改变,则该节点成为受影响的节点,也需要更新其路由表。在链路状态改变后,节点更新跳数并根据更新后的跳数判断与邻节点之间的关系,进而更新节点中存储的上行路由表和下行路由表。当数据分组要向上转发时,只在上行路由表中寻找上层节点,要向下转发时,只在下行路由表中寻找路径。这样,通过两张路由表将上行路由和下行路由分开,既提高了传输效率,又避免了路由环路的产生。另外,当链路状态发生改变时,只需根据跳数判断并更新路由表中发生变化的部分,而不是每次都更新全部路由信息,减少了更新路由表的开销。在上述技术方案中,每个节点只维护自身及邻节点的路由表信息,这使得路由更新方法易于实现,降低了路由表维护和更新的开销及复杂度。下面通过具体实施例进一步说明本发明技术方案。实施例一图2为本发明的路由更新方法具体实施例一的流程图,是节点监测到与一新增邻节点新建链路后,其路由表更新处理的方法,具体包括如下步骤步骤110、节点监测到与一新增邻节点建立链路;步骤121、该节点发送问询分组给新增邻节点,要求该新增邻节点向其发送身份号和跳数,而后获取该新增邻节点的身份号和跳数;步骤122、该节点根据自身的上行路由表和该新增邻节点的跳数重新计算自己的跳数;步骤131、判断该节点重新计算的跳数与该新增邻节点的跳数是否相等,相等则该节点与新增邻节点是同层节点,执行步骤140,不相等则执行步骤132;步骤132、判断重新计算的该节点跳数是否小于该新增邻节点的跳数,若是,则该节点是新增邻节点的上层节点,执行步骤151,否则该节点是新增邻节点的下层节点,执行步骤160;步骤140、当节点为新增邻节点的同层节点时,更新该节点路由表中的同层节点列表,即在上行路由表的同层节点列表中,写入新增邻节点的身份号和跳数;在下行路由表的同层节点列表中,写入新增邻节点的身份号;步骤151、当节点为新增邻节点的上层节点,即状态变化的新增加链路的上层节点时,该节点发送问询分组给新增邻节点,要求新增邻节点向其发送上行、下行路由表;步骤152、该节点接收到新增邻节点的上行路由表和下行路由表;步骤153、该节点将原下行路由表和接收到的新增邻节点的下行路由表合并成为该节点新的下行路由表,并将新增邻节点的身份号和跳数写入该节点的上行路由表的下层节点列表中;步骤160、当该节点为新增邻节点的下层节点,即状态变化的新增加链路的下层节点时,更新该节点的上行路由表和下行路由表。在上述技术方案中,还可以包括该节点发送自身的身份号和跳数给链路另一端的新增邻节点的步骤,以便于该邻节点更新自身的路由表。在该节点更新完其下行路由表之后,还可以包括该节点将更新后的下行路由表发送给该节点所有的上层节点,以便于更新它们的下行路,由表。在该节点更新完成自身的路由表之后,还可进一步更新受其影响的节点的路由表,向受影响节点提供所需的信息,其具体实现方式将在后面的实施例中详细说明。在上述技术方案中,对该节点来说,新增邻节点可以是其同层节点、上层节点或下层节点。新增邻节点用N,.来表示,跳数为HC;.。由于增加链路后,对链路两端节点的上行路由表和下行路由表进行了更新,因此这两个节点也称之为更新节点。本实施例具体处理过程为节点始终探测是否与另一邻节点建立了链路,当节点探测到与一个邻节点之间建立一条链路时,节点要发送问询分组给新增邻节点,要求该新增邻节点向其发送身份号和跳数。节点在接收到来自新增邻节点的身份号和跳数后,利用当前上行路由表中的邻节点的跳数以及新增邻节点的跳数重新计算自己的跳数,公式为HC=min{HCs,HCJ+1。HCs表示在当前上行路由表中所有邻节点的跳数,Hd.为新增邻节点的跳数。因为新增邻节点有可能是节点的上层节点、下层节点或同层节点,因此节点的跳数为邻节点跳数的最小值,即上层节点的跳数加1。之后节点利用跳数判断和新增邻节点的关系,若两跳数相等,则二者为同层节点,更新节点的上行和下行路由表中的同层节点列表,即将新增邻节点的身份号和跳数写入该节点的上行路由表的同层节点列表中,将新增邻节点的身份号写入该节点的下行路由表的同层节点列表中;若节点的跳数小于新增邻节点的跳数,节点为新增邻节点的上层节点,将新增邻节点的身份号和跳数写入节点的上行路由表的下层节点列表中,在节点的下行路由表中增加新增邻节点的下行路由表;若节点的跳数大于新增邻节点的跳数,节点为新增邻节点的下层节点,更新该节点的上行和下行路由表并将更新后的下行路由表发送给该节点的所有的上层节点。本实施例一的技术方案利用跳数判断了节点的位置。当两个节点之间由于节点的移动而在各自的通信范围内时,节点间增加一条.链路。节点判断自身跳数是否改变,并用改变的跳数更新路由表,在高动态移动环境下从根本上保证了路由表的有效性和路径的稳定性。实施例二图3为本发明路由更新方法具体实施二的流程图,是节点检测到与一原有邻节点断开链路后,该节点路由表更新处理的方法,具体包括如下步骤步骤210、该节点监测到与一原有邻节点断开链路;步骤220、该节点根据仍连接的当前邻节点的跳数计算该节点的新跳数,并更新原跳数;步骤231、判断该节点的新跳数和原跳数是否相等,相等则执行步骤232,不相等则该节点的新跳数大于原来的跳数,该节点是断开邻节点的下层节点,执行步骤262;步骤232、判断该节点的新跳数和断开邻节点的跳数是否相等,相等则该节点是断开邻节点的同层节点,执行步骤240,不相等则执行步骤233;步骤233、判断节点的新跳数是否比断开邻节点的跳数小,是则该节点的跳数未变,是断开邻节点的上层节点,执行步骤25].,否则该节点的跳数未变,节点为断开邻节点的下层节点,执行步骤261;步骤240、当该节点的跳数未变,且断开的链路两端节点为同层节点时,更新该节点路由表中的同层节点列表,即在该节点的上行路由表的同层节点列表中删除断开邻节点的身份号和跳数,在该节点的下行路由表的同层节点列表中删除断开邻节点的身份号;步骤251、当该节点的跳数未变,且该节点为断开邻节点,即状态变化的断开链路的上层节点时,更新该节点的路由表,即在该节点的上行路由表的下层节点列表中删除断开邻节点的身份号和跳数,在该节点的下行路由表中删除所有通过断开邻节点的路径信息;步骤261、当该节点的跳数未变,且该节点为断开邻节点的下层节点时,更新该节点路由表中的上层节点列表,即在该节点上行路由表的上层节点列表中删除该断开邻节点的身份号和跳数;在该节点下行路由表的上层节点列表中删除该断开邻节点的身份号;步骤262、当该节点的新跳数与原来的跳数不相等时,节点的跳数变大,且新跳数大于断开邻节点的跳数,节点在跳数变大后为断开邻节点的下层节点,更新该节点的路由表。其中,断开邻节点是指断开链路另一端的节点,对链路一端的该节点来说,断开邻节点可以是其同层节点、上层节点或下层节点。在此处,断开邻节点表示为Nl()s(。df,跳数为HC1(lsl,1(*。节点的新跳数表示为HC,,原来的跳数为HC。ld。这该节点和断开邻节点也称为更新节点。在上述步骤251后还可进一步包括步骤252:该节点将更新的下行路由表发送给该节点所有的上层节点。在上述步骤262后还可进一步包括步骤263:该节点将更新后的下行路由表发送给其所有的上层节点,以便于上层节点更新它们的下行路由表。本实施例具体处理过程为当节点探测到与一个邻节点之间的链路断开时,首先利用上行路由表更新自己的跳数.,公式为HC,ra=min{HCs}+l。HCs为该节点上行路由表中所有邻节点的跳数,不包括与节点断开连接的断开邻节点的跳数。因为节点若与同层节点或下层节点的关系发生改变,它不可能同时又与上层节点的链路关系也发生改变,因此节点的跳数未变,仍是上层节点的跳数加1;节点若与上层节点的链路关系发生改变,它的跳数必然变大,而此时的HCs中不包含上层节点的跳数,因此仍可用此公式计算出节点的跳数。之后节点用HC固判断自己的位置及与邻节点的关系。若HC,和HC。1(I、HCf均相等,表明断开链路两端的节点为同层节点,应更新节点上行、下行路由表中的同层节点列表,即在上行路由表的同层节点列表中删除断开的邻节点的身份号和跳数,在下行路由表的同层节点列表中删除断开的邻节点的身份号;若H(U和HC。w相等,但HC自,小于HC1(_,」e,表明链路断开后,节点的跳数未变,节点为断开链路的上层节点,应在其上行路由表的下层节点列表中删除断开的邻节点的信息,在下行路由表中删除所有通过断开的邻节点的路径信息并将更新后的下行路由表发送给该节点的所有的上层节点以更新它们的下行路由表;若,,和HC。,a相等,但HC固大于H.C1(,slll。de,表明链路断开后,节点的跳数未变,节点为断开链路的下层节点,应更新该节点上行、下行路由表中的上层节点列表,即在该节点上行路由表的上层节点列表中删除该断开邻节点的身份号和跳数,在该节点下行路由表的上层节点列表中删除该断开邻节点的身份号。因为下行路由表中的下层节点路径信息没有改变,因此此时不需要将更新后的下行路由表发送给所有的上层节点;若HC,,大于HC。w且大于Hd。st,d"表明链路断开后,节点的跳数变大,节点为断开链路的下层节点,应更新其路由表并将更新后的下行路由表发送给所有的上层节点。HC,不可能出现小于HC。ld又大于Hd。st,她情况,也不可能出现HC,小于HCi(iSl又大于HC。w的情况,因为若出现这种情况,节点的HC。w和Hd。w之间至少相差两跳,节点N和节点Nh>st—,她之间不可能存在链路。节点的HC也不可能出现小于HC。w且小于HC^—的情况,因为若出现这种情况,节点即为断开链路的上层节点,节点的跳数变小,必然与更上层的节点间建立链路,但对同一节点,链路的断开和建立是分时的,不可能发生同时断开和建立链路的情况。只可能节点向上移动,跳数未变,与其下层节点断开连接后更新路由表,再与其上层节点增加连接,利用实施例一中的方法更新节点的路由表。本实施例技术方案利用跳数判断了节点的位置。当两个节点之间由于节点的移动而不在各自的通信范围内时,节点之间的链路断开,节点利用重新计算后的跳数更新路由表,在高动态移动环境下从根本上保证了路由表的有效性和路径的稳定性。实施例三本实施例是在实施例一和实施例二技术方案基础上,步骤160、262中节点为增加或断开链路的下层节点时,更新其路由表的处理方法。图4为本发明路由更新方法中,节点增加链路后,其作为下层节点的路由表处理流程图,即上述步骤160具体是A60、将新增邻节点的身份号和跳数添加到该节点路由表的上层节点列表中;A61、该节点将其身份号和跳数发送给其同层节点和下层节点,即受影响节点;A62、判断该节点是否接收到受影响节点的身份号和跳数,是则执行步骤A63,否则即已无受影响节点需更新,则本节点更新结束;A63、判断该节点的跳数是否等于受影响节点的跳数,若是,则执行步骤A64,否则执行步骤A65;A64、更新该节点路由表中的同层节点列表,即将受影响节点的身份号和跳数写入该节点上行路由表的同层节点列表中,将受影响节点的身份号写入该节点下行路由表的同层节点列表中,并执行步骤A62;A65、该节点为受影响节点的上层节点,该节点向受影响节点发送问询分组,要求接收受影响节点的路由表;A66、该节点接收该受影响节点的上行路由表和下行路由表;A67、该节点根据接收到的该受影响节点的上行路由表和下行路由表分别更新自身的上行路由表和下行路由表,并执行步骤A62。在实施例二的步骤262中,当该节点的跳数变大,是断开链路的下层节点时,更新该节点路由表的步骤与步骤A61~A67相同,区别在于上述步骤A60改变为A60':将断开邻节点的身份号和跳数从该节点路由表的上层节点列表中删除;链路状态改变处的下层节点的路由表的更新与同层节点、下层节,#、路由表的更新是相联系的。同层节点和下层节点称为受影响节点。节点将自己的身份号和跳数发送给受影响节点,在接收到受影响节点回复的身份号和跳数后,节点利用跳数判断和受影响节点的关系。若二者的跳数相等,说明它们是同层节点,应更新节点上行、下行路由表中的同层节点列表,更新方式为将该受影响节点的身份号和跳数写入该节点上行路由表的同层节点列表中,将该受影响节点的身份号写入该节点下行路由表的同层节点列表中;否则节点为受影响节点的上层节点,应向受影响节点发送问询分组,要求接收受影响节点的上行、下行路由表,并在接收到之后更新节点的上行、下行路由表,更新方式为将受影响节点的身份号和跳数写入该节点的上行路由表的下层节点列表中,将该节点的下行路由表和受影响节点的下行路由表合并成为该节点新的下行路由表。因为节点只和同层节点、下层节点比较跳数,因此不可能出现节点跳数比受影响节点大的情况。实施例四图5为本发明路由更新方法实施例四的流程图。如图5所示,本实施例的技术方案是网络节点间的链路连接状态发生改变时,受邻节点,即更新节点影响的节点的路由表的处理方法,即节点的邻节点的链路状态发生改变时,该节点根据改变的链路连接状态更新自身的路由表的方法,具体为步骤31Q、节点监测到其邻节点的链路连接状态改变;步骤321、该节点接收到来自状态变化链路,可以为新增链路或断开链路下层的邻节点,即更新节点的身份号和跳数;步骤322、重新计算节点的跳数,并将该节点的标志位设为'T,;步骤330、判断该节点的跳数与该邻节点的跳数是否相等,相等则该节点与该邻节点是同层节点,执行步骤340,不相等则该节点是该邻节点的下层节点,执行步骤361;步骤340、当该节点是邻节点的同层节点时,更新该节点路由表中的同层节点列表,并将该节点的身份号和跳数发送给邻节点,本节点路由表更新小t匕几+,步骤361、当该节点是邻节点的下层节点时,则节点将其身份号和跳数发送给该邻节点;步骤362、节点接收到来自状态变化链路下层的邻节点的问询分组,要求接收该节点的下行路由表;步骤363、判断该节点的跳数是否比邻节点的跳数大,是则执行步骤36、否则丢弃问询分组,本节点路由表更新完毕;步骤364、判断该节点的跳数与邻节点的跳数之差是否大于1,或者该节点的标志位是否为"1",是则执行步骤365,否则执行步骤369;步骤365、重新计算该节点的跳数,将标志位设置为"0",并更新该节点的上行路由表;步骤366、该节点向其所有的下层节点发出问询分组,要求接收它们的下4亍3各由表;步骤367、节点判断是否已经接收到所有来自下层节点的下行路由表,是则执行步骤368.否则执行步骤367;步骤368、该节点根据其所有下层节点的下行路由表更新自身的下行路由表,即合并所有来自下层节点的下行路由表,成为该节点新的下行路由表;步骤369、该节点将上行、下行路由表发送给该邻节点,本节点路由表更新完毕。在上述步骤366之后,还可包括步骤3665、节点等待来自所有下层节点的下行路由表,则上述步骤367相应为节点判断是否已经接收到所有来自下层节点的下行路由表,是则执行步骤368,否则执行步骤3665;受影响节点是指链路状态改变后,更新节点的同层节点和下层节点。受影响节点路由表的更新是与更新节点路由表的更新相联系的。在实施例三中的步骤A61中,更新节点会将自己的身份号和跳数发送给同层节点和下层节点。因此,在本实施例中,受影响节点在接收到这些信息后,一方面将标志位设置为'T,,表明该受影响节点的路由表已经开始更新,另一方面重新计算自己的跳数,公式为HC=niin{HC,HCR+1}。其中,HCK表示由更新节点发送来的跳数。这样做可以确保受影响节点为更新节点的邻节点。之后节点用跳数判断与更新节点的关系,若二者跳数相等,表明受影响节点为更新节点的同层节点,更新其上行、下行路由表中的同层节点列表,并将身份号和跳数发送给更新节点,该受影响节点的路由表更新完毕,不需要再执行步骤362步骤369。在实施例三中的步骤A62~A64中,更新节点在接收到受影响节点的身份号和跳数并判断出和受影响节点为对等关系时,需要对该更新节点路由表中的同层节点列表进行更新。若二者跳数不等,说明受影响节点为更新节点的下层节点.,无需更新同层节点列表,则直接将身份号和跳数发送给更新节点,之后需要继续更新路由表中的下层节点列表。在实施例三中的步骤.A65中,更新节点在判断出受影响节点为下层节点时,会发送问询分组给受影响节点,要.求得到它的下行路由表。受影响节点表示受影响节点的跳数,,H(;表示更新节点的跳数。若HC不大于HCk,表明问询分组不是来自更新节点,直接丢弃;若HC大于HQ,则应更新受影响节点的路由表。在更新受影响节点的路由表时,首先判断节点的跳数是否比更新节点的跳数H"大1(不包含l),或者标志位为'T'。节点的跳数比更新节点的跳数HCr大1(不包含1)表明下层受影响节点原来不在更新节点的通信范围之内,二者之间的跳数至少相差2,在更新节点移动之后,下层受影响节点成为更新节点的下层节点,需要更新其路由表。在本实施例中,受影响节点在判断自身是否为更新节点的同层节点之前已经将标志位置"1",表明其为更新节点的一跳节点,在本实施例中,若标志位为"1",表明受影响节点是更新节点的下层节点。用公式HC:=min{HC,H(V-:O更新受影响节点的跳数,可以确保受影响节点是更新节点的下层节点,并将标志位置"0"以便其余受影响节点继续更新路由表。之后节点更新上行路由表中的上层节点列表,将所有下层节点的下行路由表合并入自己的下行路由表中,并将更新后的路由表回复给更新节点发来的问询分组。实施例五图6为本发明路由更新方法实施例五的流程图。如图6所示,本实施例的技术方案是在实施例一、二或四的技术方案基础上,当节点监测到其下层节点的链路连接状态改变,节点作为上级节点时,节点路由表的处理方法,具体为步骤401、节点监测到其下层节点的链路状态改变;步骤402、该节点接收到来自下层节点的下行路由表;步骤403、该节点根据接收到的下层节点的下行路由表更新该节点自身的下行路由表;步骤4(M、判断该节点的跳数是否等于0,即该节点是否为接入节点,是则本节点更新完毕,否则执行步骤405;步骤405、将该节点更新的下行路由表发送给该节点的上层节点,以便该上层节点更新自身的下行路由表。所有上级节点是指在跳数最大的受影响节点之上的直到接入节点的所有的上层节点,它们的下行路由表中包含通过该受影响节点的所有路径信息。因为节点的下行路由表中包含到所有下级节点的路径信息,因此当下级节点的下行路由表更新时,需要通知上级节点,更新上级节点的下行路径信息。所有上级节点下行路由表的更新是由下至上的。具体处理方式为跳数最大的受影响节点将下行路由表发送给它的上层节点,上层节点接收并更新自己的下行路由表后,根据其上行路由表中记录的跳数判断自己是否为接入节点,若是则所有上级节点的下行路由表更新完毕;若不是则继续将其下行路由表发送给更上层的节点。如此不断地更新并向上发送下行路由表,直到接入节点的下行路由表更新完毕。在上迷五个实施例中,路由表的更新只局限在状态发生改变的链路两端的节点、受影响、所有上级节点的范围内,且路由表更新时,只需增加或删除变化的部分,无需更新整张上行、下行路由表,降低了更新路由表的开销。实施例六本实施例的技术方案是在上述实施例技术方案的基础上,增加了节点创建上行路由表的步骤.,图7为本发明路由更新方法中,节点创建上行路由表的流程图,具体为步骤B1、节点广播邻节点查找分组,即节点向邻节点发送查找分组;步骤B2、节点接收邻节点回复的响应分组,该响应分组中包含邻节点的身份号和跳数;步骤B3、节点将邻节点响应分组中包含的邻节点的身份号和跳数写入自己的上行路由表中,如果邻节点尚没有跳数,则跳数置为空;步骤B4、节点判断在自己的上行路由表中是否所有邻节点的跳数均为空,是则执行步骤B6,否则执行步骤B5;步骤B5、节点利用上行路由表中邻节点的跳数计算自己的跳数,并将自己的上行路由表发送给自身的上层节点和同层节点,以更新它们的上行路由表,本节点路由表创建完毕;步骤B6,节点设置自身的跳数为O。接入节点的上行路由表为<table>tableseeoriginaldocumentpage26</column></row><table>其中,AP表示接入节点,其跳数为0;N,—dl,…,NH。,表示接入节点的m个下层节点,其跳数均为1。在接入节点上行路由表创建完毕后,各级下层节点不断创建自身的上行路由表并向上更新上层节点的上行路由表。节点N,的上行路由表为<table>tableseeoriginaldocumentpage27</column></row><table>其中,Hd表示节点Ni的跳数;1^表示上层节点,其跳数为HC「1;表示同层节点,其跳数为HCi;Ni—d,表示下层节点,其跳数为Hd+l。上行路由表的创建是由上至下的,由接入节点发起创建过程,之后各级下层节点不断创建自己的上行路由表,直至所有节点的上行路由表创建完毕。本实施例流程简单描述为节点广播邻节点查找分组,邻节点在接收到该查找分组后用自己的身份号和跳数回复给该节点。节点判断是否能接收到邻节点的响应分组,进行处理,直到不再接收到响应分组为止。节点将所有的邻节点回复的身份号和跳数写入自己的上行路由表中,当邻节点为该节点的下层节点时,该邻节点尚未开始创建自己的上行路由表,因此它的跳数未知,需将其对应的跳数置空。因为接入节点的上行路由表中只包含下层节点列表,在接入节点创建上行路由表的过程中,这些下层节点的跳数为空,因此如果在节点的上行路由表中所有邻节点的跳数均为空的话,说明该节点为接入节点,应将其跳数置为0。因为接入节点不存在上层节点和同层节点,因此不需要将其上行路由表发送给上层和同层节点。如果在节点的上行路由表中有一个邻节点的跳数非空,说明该节点为非接入节点,应利用邻节点的跳数计算自己的跳数,计算公式为HC=min{HCs}+l。HCs表示路由表中所有跳数非空的邻节点的跳数。因为上行路由表是由上至下创建的,所以其中肯定包含了上层节点的跳数,且上层节点的跳数是路由表中所有已知跳数的最小值。利用此公式可以计算出节点的跳数。对该节点的上层节点,该上层节点的上行路由表的下层节点列表中包含该节点的身份号和跳数,其中该节点的跳数为空;对该节点的同层节点,该同层节点的上行路由表的同层节点列表中包含该节点的身份号和跳数,其中该节点的跳数为空,因此该节点的上行路由表创建完毕之后需要发送给这些节点,以更新它们的上行路由表中的跳数。实施例七本实施例的技术方案是在上述实施例技术方案的基础上,增加了创建下行路由表的步骤,图8为本发明路由更新方法中,节点创建下行路由表的流程图,具体为步骤CO、节点向邻节点发送查找分组;步骤C1、节点接收到邻节点回复的响应分组,该响应分组中包含邻节点的身份号和跳数;步骤C2、节点创建下行路由表中的同层节点和上层节点列表;步骤C3、节点判断邻节点中是否有下层节点,有则执行步骤C4,否则直接执行步骤C7;步骤C4、该节点等待接收下层节点发来的下行路由表;步骤C5、该节点判断是否已经接收到所有下层节点发来的下行路由表,是则执行步骤C6,否则执行步骤C4;步骤(:6、该节点根据其所有下层节点的下行路由表更新其自身的下行路由表,即合并所有下层节点的下行路由表,创建节点下行路由表;步骤C7、该节点将下行路由表发送给其所有的上层节点。上行路由表和下行路由表的创建是分时的,当所有节点的上行路由表创建完毕后开始创建它们的下行路由表。接入节点的下行路由表中包含在其通信范围内的所有节点的身份号和跳数。节点的下行路由表包括上层节点列表,记录了所有上层节点身份号;同层节点列表,记录了所有同层节点身份号;下层节点列表,记录了所有下层节点距离本节点的跳数和路径信息。一个n跳节点的下层节点列表是所有n+l跳下层节点路径信息的集合,接入节点的下层节点列表是所有一跳节点的路径信息的集合。本实施例流程简单描述为当上行路由表创建完毕之后,每个节点都知道自身的跳数,从最底层节点开始创建下行路由表。最底层节点找到邻节点的身份号和跳数后,创建一张只包含上层节点列表和同层节点列表的下行路由表并发送给上层节点,以回应来自上层节点的问询分组。上层节点在接收到所有下层节点的下行路由表后将它们合并,成为自身的下行路由表,并向更上层的节点发送。如此,节点不断的创建并向上发送下行路由表,直到接入节点的下行路由表创建完毕。在上行路由表和下行路由表创建的过程中,采用了多点中继技术。通过局部链路状态信息交换以获得局部区域的网络拓朴结构,进而可以计算出局部生成树,沿着局部生成树进行分组广播,可以用最小的网络开销将分组传送到局部区域的边界节点。链路状态分组不断地按局部生成树向外扩散,最终扩散到全网。用这种方式大大降低了路由开销。实施例/、、图9所示为本发明具体实施例八的流程图,包括如下步骤步骤1、节点监测与邻节点的链路连接状况;步骤2、判断节点是否与新增的邻节点间建立链路,是则执行步骤3,否则执行步骤4;步骤3、更新增加链路后相应节点的路由表;步骤4、判断节点是否与邻节点间断开链路,是则执行步骤5,否则执行步骤1;步骤5、更新断开链路后相应节点的路由表。在上述实施例九中,步骤3和步骤5中对节点路由表的更新与前述实施例中的更新方法大致相同。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。权利要求1、一种路由更新方法,包括如下步骤节点监测到网络节点之间链路连接状态改变后,重新计算自身的跳数;所述节点将自身的跳数与相邻节点的跳数进行比较,判断其与相邻节点的层次关系;当判断结果为所述节点与所述相邻节点是同层节点时,则更新所述节点路由表中的同层节点列表;当判断结果为所述节点是所述相邻节点的上层节点或下层节点时,则更新所述节点的路由表。2、根据权利要求1所述的路由更新方法,其特征在于节点监测到网络节点之间链路连接状态改变后,重新计算自身的跳数的步骤具体为所述节点监测到与一新增邻节点建立链路;所述节点获取所述新增邻节点的身份号和跳数;所述节点根据其上行路由表中的信息和所述新增邻节点的跳数重新计算自身的跳数;或者为所述节点监测到与一原有邻节点断开链路,所述节点根据仍连接的当前邻节点的跳数计算并更新自身的跳数;或者为节点监测到其邻节点的上行链路连接状态改变,所述节点接收到所述邻节点的身份号和跳数,所述节点将自己的标志位设置为代表所述节点已更新的数值'T,,并重新计算自身的跳数。3、根据权利要求1所述的路由更新方法,其特征在于所述节点将自身的跳数与相邻节点的跳数进行比较,判断其与相邻节点层次关系的步骤具体为步骤131、判断重新计算的所述节点的跳数是否等于新增邻节点的跳数,若是,则所述节点与所述新增邻节点为同层节点,否则执行步骤132;步骤132、判断重新计算的所述节点的跳数是否小于所述新增邻节点的跳数,若是,则所述节点是所述新增邻节点的上层节点,否则所述节点是所述新增邻节点的下层节点;或者为步骤231、判断所述节点的新跳数是否等于原跳数,若是,则执行步骤232,否则节点的新的跳数大于原来的跳数,所述节点为所述断开邻节点的下层节点;步骤232、判断所述节点的新跳数是否等于断开邻节点的跳数,若是,则所述节点是所述断开邻节点的同层节点,否则执行步骤233;步骤233、判断所述节点的新跳数是否小于所述断开邻节点的跳数,若是,则所述节点的跳数未变,所述节点是所述断开邻节点的上层节点,否则所述节点的跳数未变,所述节点为所述断开邻节点的下层节点;或者为判断所述节点的新跳数是否等于所述邻节点的跳数,若是则所述节点和所述邻节点是同层节点,否则所述节点是所述邻节点的下层节点。4、根据权利要求1所述的路由更新方法,其特征在于当所述节点与邻节点为同层节点时.,还包括所述节点将其身份号和跳数发送给所述邻节点的步骤。5、根据权利要求1所述的路由更新方法,其特征在于当所述节点是所述相邻节点的上层节点时,则更新所述节点的上行路由表和下行路由表的步骤具体为步骤151、所述节点发送问询分组给所述新增邻节点;步骤152、所述节点获取所述新增邻节点的路由表;步骤153、所述节点将接收到的所述新增邻节点的下行路由表和自身的下行路由表合并,作为所述节点新的下行路由表,将所述新增邻节点的身份号和跳数写入所述节点的上行路由表;或者为步骤251、删除所述节点上行路由表中所述断开邻节点的身份号和跳数,删除所述节点下行路由表中所有通过断开邻节点的路径信息。6、根据权利要求1所述的路由更新方法,其特征在于当所述节点是所述相邻节点的下层节点时,贝'j更新所述节点的上行路由表和下行路由表的步骤具体为当所述节点为新增邻节点的下层节点时,将新增邻节点的身份号和跳数添加到该节点路由表的上层节点列表中,更新所述节点的上.行、下行路由表;或者为当所述节点的跳数未变,且为断开邻节点的下层节点时,在节点的上行路由表的上层节点列表中删除所述断开邻节点的身份号和跳数;在节点的下行路由表的上层节点列表中删除所述断开节点的身份号;或者为当所述节点的新跳数大于原来的跳数,且新跳数大于断开邻节点的跳数时,所述节点的跳数改变,为断开邻节点的下层节点,将断开邻节点的身份号和跳数从该节点路由表的上层节点列表中删除,更新所述节点的路由表;或者为步骤361、所述节点将其身份号和新跳数发送给更新节点;步骤362、所述节点接收所述更新节点的问询分组,要求所述节点向更新节点发送下行路由表;步骤363、判断所述节点的新跳数是否大于所述更新节点的跳数,若是,则执行步骤364,否则丢弃所述问询分组,所述节点的路由表更新完毕;步骤364、判断所述节点的新跳数与所述更新节点的跳数之差是否大于1,或者该节点的标志位是否为"1",若是,则执行步骤365,否则执行步骤369;步骤365、重新计算所述节点的跳数,将标志位设置为"0",并更新所述节点的上行路由表;步骤366、所述节点向其所有的下层节点发送问询分组,要求接收它们的下行路由表;步骤367、所述节点判断是否已接受到其所有下层节点的下行路由表,是则执行步骤368,否则执行步骤367;步骤368、所述节点根据其所有下层节点的下行路由表更新自身的下行路由表;步骤369、所述节点将其上行路由表和下行路由表发送给所述更新节点,本节点更新结束。7、根据权利要求6所述的路由更新方法,其特征在于当所述节点是所述新增邻节点的下层节点时,或所述节点的跳数改变,为断开邻节点的下层节点时,还包括A61、所述节点将其身份号和跳数发送给其同层节点和下层节点,即受影响节点;A62、判断所述节点是否接收到所述受影响节点的身份号和跳数,是则执行步骤A63,否则本节点更新结束;A63、判断所述节点的跳数是否等于所述受影响节点的跳数,若是,则执行步骤A64,否则执行步骤A65;A64、更新所述节点路由表中的同层节点列表,并执行步骤A62;A65、所述节点向所述受影响节点发送问询分组,要求接收受影响节点的路由表;A66、所述节点接收所述受影响节点的上行路由表和下行路由表;A67、所述节点根据接收到的受影响节点的上行路由表和下行路由表分别更新自身的上行路由表和下行路由表,并执行步骤A62。8、4艮据权利要求1所述的路由更新方法,其特征在于还包括步骤401、节点监测到其下层节点的链路连接状态改变;步骤402、所述节点接收到来自下层节点的下行路由表;步骤403、所述节点根据接受到的所述下层节点的下行链路表更新其自身的下行路由表;步骤404、判断所述节点的跳数是否等于0,若是,则本节点更新结束,否则执行步骤405;步骤405、将所述节点更新的下行路由表发送给所述节点的上层节点。9、根据权利要求1所述的路由更新方法,其特征在于还包括节点创建上行路由表的步骤,具体为步骤B1、节点向邻节点发送查找分组;步骤B2、节点接收邻节点回复的响应分组,所述响应分组中包含邻节点的身份号和跳数;步骤B3、节点将邻节点响应分组中包含的邻节点的身份号和跳数写入自己的上行路由表中,如果邻节点尚没有跳数,则跳数置为空;步骤B4、节点判断在自己的上行路由表中是否所有邻节点的跳数均为空,是则执行步骤B6,否则执行步骤B5;步骤B5、节点利用上行路由表中邻节点的跳数计算自己的跳数,并将自己的上行路由表发送给自身的上层节点和同层节点,本节点路由表创建完毕;步骤B6、节点设置自身的跳数为0。10、根据权利要求1所述的路由更新方法,其特征在于还包括节点创建下行路由表的步骤,具体为步骤CO、节点向邻节点发送查找分组;步骤Cl、节点接收到邻节点回复的响应分组,所述响应分组中包含邻节点的身份号和跳数;步骤C2、节点创建下行路由表中的同层节点和上层节点列表;步骤C3、节点判断邻节点中是否有下层节点,有则执行步骤C4,否则直接-执行步骤C7;步骤C4、该节点等待接收下层节点发来的下行路由表;步骤C5、该节点判断是否已经接收到所有下层节点发来的下行路由表,是则执行步骤C6,否则执行步骤C4;步骤C6、该节点根据其所有下层节点的下行路由表更新其自身的下行路由表,即合并所有下层节点的下行路由表,创建节点下行路由表;步骤C7、该节点将下行路由表发送给其所有的上层节点。全文摘要本发明涉及一种路由更新方法,包括如下步骤节点监测到网络节点之间链路连接状态改变后,重新计算自身的跳数;节点将自身的跳数与相邻节点的跳数进行比较,判断其与相邻节点的层次关系;当判断结果为节点与相邻节点是同层节点、上层节点或下层节点时,更新节点的相应路由表。本发明针对节点的移动性对网络拓扑结构的剧烈影响,通过节点不断地监测与邻节点的链路状况,根据网络拓扑的变化,及时实现对节点路由表的更新,有效保证了路由表信息的准确性,且只针对变化部分的路由表进行更新,也减少了路由表更新所需要的开销。文档编号H04L12/28GK101102272SQ20071011877公开日2008年1月9日申请日期2007年7月13日优先权日2007年7月13日发明者凯刘,军张,璇施,李献昌申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1