邻居表项的处理方法及装置的制作方法

文档序号:7551285阅读:240来源:国知局
专利名称:邻居表项的处理方法及装置的制作方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种邻居表项的处理方法及装置。
背景技术
邻居发现(NeighborDiscovery, ND)协议是 IPv6 (Internet ProtocolVersion6,网络协议第6版)协议的一个基本的组成部分,它包括路由器的前缀发现、地址解析、邻居不可达检测、重定向等功能,实现了在IPv4 (Internet Protocol Version4,网络协议第4版)中的地址解析协议(Address Resolut ion Protocol, ARP)、网络控制消息协议(Internet ControlMessage Protocol, ICMP)中的路由器发现部分、重定向协议的所有功能,并具有邻居不可达检测机制,而IPv4协议中并没有相应的邻居不可达检测机制。源节点通过发送多播的邻居请求(Neighbor Solicitation,NS)消息(Message)要求目标节点返回其链路层地址(link-layer address)来完成地址解析。邻居请求消息被多播发送到目标节点对应的多播地址,目标节点单播邻居通告(Neighbor Advertisement,NA)消息给源节点,邻居通告消息中包含目标节点的链路层地址。由于源节点在发送邻居请求消息时携带自己的链路层地址,所以一个请求-应答过程就可以使双方都获取到对方的链路层地址,从而进行正常的邻居表操作,如将对方的信息加入到自己的邻居表中建立新的邻居表项,或修改原有邻居表项等,完成动态邻居表(邻居缓存表)学习。邻居表中包含有邻居不可达检测算法维护的信息。邻居可达性状态可以包括以下5种取值:不完整性(INCOMPLETE)、可达性(REACHABLE)、失效性(STALE)、延迟(DELAY)和探测(PR0BE)。具体地,邻居缓存表项状态迁移如下:I) INCOMPLETE—>REACHABLE:节点主动发送NS消息进行某个邻居节点的链路层地址学习,如果收到其他节点发送的NA消息,该NA消息对应的邻居表项的状态迁移为REACHABLE,否则删除该邻居节点对应的邻居表项。2) STALE:节点收到对端的NS消息后生成该NS消息对应的邻居表项的状态。3) REACHABLE—>STALE:在收到某个邻居表项的可达确认后,如果ReachableTime毫秒内没有流量使用该邻居表项,该邻居表项的状态迁移为STALE。4) STALE—>DELAY—>PR0BE—>REACHABLE:当某个邻居表项处于 STALE 状态时,如果有流量使用该邻居表项,则会触发延时一段时间后重新确认该邻居表项对应的节点的链路层地址,如果收到该邻居表项对应的节点的NA消息,则该邻居表项的状态迁移为REACHABLE,否则删除该邻居表项。5) STALE—〉老化删除:如果某个邻居表项长期处于STALE状态,即长时间无流量使用该邻居表项,那么一段时间后,该邻居表项老化删除。邻居发现协议通过邻居不可达检测机制实现无用表项的删除,按照生存期定时删除无用表项。现有的系统中每 个邻居表项都是维持固定时间,一旦有大量临时邻居表项申请,很可能导致邻居表项超限。或者,如果有网络攻击,恶意伪造并发送大量的请求消息,也会导致邻居表项超限。

发明内容
本发明的目的是提供一种邻居表项的处理方法及装置,提高邻居表项资源的利用率。为实现上述目的,本发明第一方面提供了一种邻居表项的处理方法,所述方法包括:统计当前邻居表中的当前邻居表项数量;当所述当前邻居表项数量增加时,将所述当前邻居表项数量与预设邻居表项阈值相比较,如果所述当前邻居表项数量大于所述预设邻居表项阈值,缩短新申请表项和已有表项的维持时间;当所述当前邻居表项数量减少时,将所述当前邻居表项数量与所述预设邻居表项阈值相比较,如果所述当前邻居表项数量小于所述预设邻居表项阈值,增加新申请表项的维持时间;当所述当前邻居表中有邻居表项的存在时间超过所述维持时间时,向所述存在时间超过所述维持时间的邻居表项对应的第一节点发送检测信号;如果在预设时间阈值内接收到所述第一节点对所述检测信号的响应,则增加该第一节点对应的邻居表项的维持时间并重新开始计算该第一节点对应的邻居表项的存在时间,否则,将该第一节点对应的邻居表项删除。结合第一方面,在第一方面的第一种可能的实施方式中,所述缩短已有表项的维持时间为:将所述已有表项所剩余的维持时间减少一半;所述缩短新申请表项的维持时间为:将所述新申请表项的初始维持时间减少一半;
所述增加新申请表项的维持时间为:将所述新申请表项的初始维持时间增加一倍。结合第一方面,在第一方面的第二种可能的实施方式中,所述方法还包括:设定N个预设邻居表项阈值THi,1=1,2,3,…,N,其中,TH1〈TH2〈TH3〈…〈THN,N为预设正整数;如果所述当前邻居表项数量M与所述N个预设邻居表项阈值THi的关系为:THi〈M〈THi+l,M为正整数,则当所述当前邻居表项数量增加时,将所述当前邻居表项数量与下一个预设邻居表项阈值THi+Ι相比较,当所述当前邻居表项数量大于下一个预设邻居表项阈值THi+Ι时,缩短新申请表项和已有表项的维持时间;当所述当前邻居表项数量减少时,将所述当前邻居表项数量与前一个预设邻居表项阈值THi相比较,当所述当前邻居表项数量小于前一个预设邻居表项阈值THi时,增加新申请表项的维持时间。结合第一方面,在第一方面的第三种可能的实施方式中,在所述增加该第一节点对应的邻居表项的维持时间之后,还包括:判断增加后的该第一节点对应的当前邻居表项的维持时间是否超过最大维持时间,如果是,则将该第一节点对应的邻居表项的维持时间调整为最大维持时间。结合第一方面,在第一方面的第四种可能的实施方式中,在所述增加新申请表项的维持时间之后,还包括:判断增加后的所述新申请表项的维持时间是否超过最大维持时间,如果是,则将所述新申请表项的维持时间调整为最大维持时间。结合第一方面,在第一方面的第五种可能的实施方式中,所述邻居表项的存在时间从所述邻居表项的状态变为STALE时开始计算;或者所述邻居表项的存在时间从生成所述邻居表项时开始计算。第二方面,本发明还提供了一种邻居表项的处理装置,所述装置包括统计单元、调整单元、检测单元、第一处理单元和第二处理单元,其中:所述统计单元,用于统计当前邻居表中的当前邻居表项数量;所述调整单元,用于当所述当前邻居表项数量增加时,将所述当前邻居表项数量与预设邻居表项阈值相比较,如果所述当前邻居表项数量大于所述预设邻居表项阈值,缩短新申请表项和已有表项的维持时间;或者所述调整单元用于当所述当前邻居表项数量减少时,将所述当前邻居表项数量与所述预设邻居表项阈值相比较,如果所述当前邻居表项数量小于所述预设邻居表项阈值,增加新申请表项的维持时间;所述检测单元,用于确定所述当前邻居表中的各邻居表项的存在时间是否超过所述维持时间,如果是,则发送检测信号至所述存在时间超过所述维持时间的邻居表项对应的第一节点,如果在预设时间阈值内接收到所述第一节点对所述检测信号的响应,则触发所述第一处理单元,否则触发所述第二处理单元;所述第一处 理单元,用于在受到所述检测单元触发时,增加所述第一节点对应的邻居表项的维持时间并重新开始计算该第一节点对应的邻居表项的存在时间;所述第二处理单元,用于在受到所述检测单元触发时,删除所述第一节点对应的邻居表项。结合第二方面,在第二方面的第一种可能的实施方式中,所述调整单元用于当所述当前邻居表项数量增加并大于预设邻居表项阈值时,将所述已有表项所剩余的维持时间减少一半;或所述调整单元用于当所述当前邻居表项数量增加并大于预设邻居表项阈值时,将所述新申请表项的初始维持时间减少一半;或所述调整单元用于当所述当前邻居表项数量减少并小于预设邻居表项阈值时,将所述新申请表项的初始维持时间增加一倍。结合第二方面,在第二方面的第二种可能的实施方式中,所述处理装置还包括设置单元,其中:所述设置单元,与所述统计单元和调整单元相连接,用于设定N个预设邻居表项阈值THi,1=1,2,3,…,化其中”耵^拟^拟十“^順州为预设正整数;所述统计单元还用于确定统计到的所述当前邻居表项数量M与所述N个预设邻居表项阈值THi的关系:THi〈M〈THi+l,M为正整数;所述调整单元用于当所述当前邻居表项数量增加时,将所述当前邻居表项数量与下一个预设邻居表项阈值THi+Ι相比较,当所述当前邻居表项数量大于下一个预设邻居表项阈值THi+Ι时,缩短新申请表项和已有表项的维持时间;
或者所述调整单元用于当所述当前邻居表项数量减少时,将所述当前邻居表项数量与前一个预设邻居表项阈值THi相比较,当所述当前邻居表项数量小于前一个预设邻居表项阈值THi时,增加新申请表项的维持时间。结合第二方面,在第二方面的第三种可能的实施方式中,所述处理装置还包括第一判断单元,所述第一判断单元与所述调整单元相连接,用于判断经过所述调整单元调整后的所述新申请表项的维持时间是否超过最大维持时间,如果是,则触发所述调整单元将所述新申请表项的维持时间调整为最大维持时间。结合第二方面,在第二方面的第四种可能的实施方式中,所述处理装置还包括第二判断单元,所述第二判断单元与所述第一处理单元相连接,用于判断经过所述第一处理单元调整后的该第一节点对应的当前邻居表项的维持时间是否超过最大维持时间,如果是,则触发所述第一处理单元将该第一节点对应的邻居表项的维持时间调整为最大维持时间。结合第二方面,在第二方面的第五种可能的实施方式中,所述邻居表项的存在时间从所述邻居表项的状态变为STALE时开始计算;或者所述邻居表项的存在时间从生成所述邻居表项时开始计算。本发明提供的邻居表项的处理方法及装置,根据系统的压力,智能调整邻居表项的维持时间,尽早老化掉无效的邻居表项,从而迅速删除掉无效的邻居表项,减少系统资源的压力,避免因网络攻击或大量流动的临时表项的维持时间过长导致系统无法正常工作,防攻击效果明显,从而对设备的表项资源进行合理有效地保护。


图1为本发明实施例一提供的邻居表项处理方法流程图;图2为本发明实施例二提供的邻居表项处理方法流程图;图3为本发明实施例三提供的邻居表项处理装置示意图;图4为本发明实施例四提供的邻居表项处理装置示意图;图5为本发明实施例五提供的邻居表项的处理装置的结构示意图。
具体实施例方式下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。一个节点的邻居表用来表明与它相邻的其他设备或节点的关系,邻居表包括最近向该节点发送过流量的邻居节点对应的邻居表项,由各种ND消息触发产生或更新。ND消息包括源链路层地址(I ink-layer address)、目标链路层地址、前缀信息、重定向头和最大传输单元等信息。如果节点需要与其他节点进行通信,则通过请求-应答过程获取到对方的链路层地址等信息,这些信息保存在节点的邻居表中。所述链路层地址可以是媒体接入控制 MAC (Media Access Control)地址。对于长期失效的邻居表项,一般通过邻居不可达检测机制,按照生存期定时将该些无效的邻居表项删除,邻居表项的生存期的长短由维持时间决定。当某个邻居表项的状态变为STALE时,开始生存期的计时。在该邻居表项的生存期超时之前,节点应该在默认路由器列表和前缀列表中保持邻居表项。当某个邻居表项的生存期超时时,则将该无用的邻居表项删除。即,如果某个邻居表项长期处于STALE状态,即长时间无流量使用该邻居表项,则将该邻居表项删除。针对现有的邻居表项维持时间固定,无法根据实际情况自动调节维持时间,从而可能导致邻居表项超限,尤其是在设备出现故障、遇到攻击或处于流动性强等的应用场景时,出现表项资源利用率差的问题,本发明实施例提供的邻居表项的处理方法及装置,通过统计节点的邻居表项的总数量以监测系统的压力,从而根据系统的压力,智能调整邻居表项的维持时间,使得无效的邻居表项可以迅速被老化和删除,减少系统资源的压力。在本发明中,节点可以是具有转发功能的支持IPv6业务的路由器、交换机等转发设备,或者具有发送消息或发送流量功能的主机、手机等终端设备。本发明的邻居表项的处理方法可用于这些有申请邻居表项且在邻居表项超时后能够向申请端重新检测的设备中,尤其适合在流动性较强的大型聚会、存在网络攻击或设备故障等的场景,可以迅速地删除无效的邻居表项,减轻设备系统资源的压力,合理利用设备的表项资源。实施例一图1是本实施例提供的邻居表项的处理方法流程图,如图1所示,本发明的邻居表项的处理方法包括:SIO1、节点统计当前邻居表中的当前邻居表项数量。邻居表是一组有关单个邻居的表项,即为邻居缓存表,这些邻居接收到了最新的数据流。每个邻居表项的信息包括:邻居表项对应邻居节点的数据链路层地址、指示该邻居节点是路由器还是主机的标志、指向任何排队等待完成地址解析数据包的指针。每个邻居表项还可以包括邻居不可达检测算法所使用的信息。邻居不可达检测算法所使用的信息包括:可达状态、探测无应答的次数以及下一次邻居不可达检测发送的时间。具体地,在邻居表的学习过程中,节点将自身的链路层地址(比如MAC地址)、自身的IP地址、自身的节点名称等地址配置信息通过ND协议中的NS消息发送给网络内的其他节点。接收到该NS消息的节点将自身的链路层地址、自身的IP地址、自身的节点名称等配置信息通过ND协议中的NA消息返回给发送NS消息的节点。这样,发送NS消息的节点以及网络内其他节点就可以知道对方的地址配置信息,从而根据地址配置信息进行邻居表操作,如将对方的地址配置信息加入到自己的邻居表中建立新的邻居表项,或修改原有邻居表项等,完成动态邻居表学习。对于作为节点的终端设备,需要监测是否存在增加或减少的邻居表项,并统计在节点维护的邻居表上的邻居表项的总数量。其中,终端设备可以是交换机、路由器等转发设备,也可以是主机、手机等终端。S102、根据当前邻居表项数量与预设邻居表项阈值的大小关系,缩短或增加所述当前邻居表项的维持时间。具体地,利用作为节点的终端设备统计到的当前邻居表项数量来调整所述当前邻居表项的维持时间。当所述节点的当前邻居表项数量增加时,将所述节点的当前邻居表项数量与预设邻居表项阈值相比较,当所述节点的当前邻居表项数量大于所述预设邻居表项阈值时,缩短所述节点的新申请表项和所述节点中已有表项的维持时间。
或者,当所述节点的当前邻居表项数量减少时,将所述节点的当前邻居表项数量与所述预设邻居表项阈值相比较,当所述当前邻居表项数量小于所述预设邻居表项阈值时,增加所述节点的新申请表项的维持时间。具体地,预设邻居表项阈值可以根据实际需要或以往经验进行设定,通常可以是预设邻居表项的数量或者当前邻居表项的数量占该邻居表可以容纳的邻居表项的总数量的百分比来表示。S103、确定所述节点的当前邻居表中的各邻居表项的存在时间是否超过所述各邻居表项对应的维持时间,如果是,则进入S104,发送检测信号至所述存在时间超过所述维持时间的邻居表项对应的节点。当当前邻居表中的邻居表项的状态变为STALE时,开始计算该状态变为STABLE的邻居表项的存在时间。如果此时有流量使用该状态变为STABLE的邻居表项,则该邻居表项的状态会由STALE状态迁移至DELAY,触发延时一段时间后,迁移为PR0BE,节点发送NS消息至该邻居表项对应的节点以重新确认该邻居表项对应的节点的链路层地址,如果在预设时间内收到该邻居表项对应的节点回应的NA消息,则该邻居表项的状态迁移为REACHABLE。如果在可达时间ReachableTime内没有流量使用该邻居表项,该邻居表项的状态迁移为STALE,重新开始计算该邻居表项的存在时间。可达时间ReachableTime是预设的邻居表项可达状态的时间,通常约为30s。当然,由于恶意节点所请求生成的邻居表项通常不会有用户进行实际使用,经过ReachableTime时间之后该邻居表项的状态即会从REACHABLE变为STALE,因而,在实际使用时也可以从生成邻居表项时开始计算存在时间,即计算邻居表项的整个生存时间。当某一个邻居表项的存在时间超过所述维持时间,表明该邻居表项长期处于STALE状态,即长时间无流量使用该邻居表项,则节点发送检测信号至该邻居表项对应的节点。检测信号具体可以为NS消息。S105、确定是否在预设时间阈值内接收到该邻居表项对应的节点对所述检测信号的响应,如果是,则进入S106,增加该邻居表项的维持时间并重新开始计算该邻居表项的存在时间,否则进入S107,将所述邻居表项删除。正常用户终端(节点)在接收到检测信号时,会发送作为回应的NA消息至所述发出检测信号的节点。如果在预设时间阈值内接收到对所述检测信号回应的NA消息,表明仍有流量在使用该邻居表项,则将该邻居表项的状态迁移为REACHABLE,并增加该邻居表项对应的节点的邻居表项的维持时间。对于其他未涉及的已有邻居表项的维持时间不做变更。如果在预设时间阈值内未接收到该邻居表项对应的节点回应的NA消息,表明该邻居表项为无效表项,则删除该无效的邻居表项。其中,预设时间阈值可根据实际需要或以往经验进行设定。在增加了所述节点对应的邻居表项的维持时间后,即重新开始计算该邻居表项的存在时间,返回S103,确定所述节点的当前邻居表中的各邻居表项的存在时间是否超过所述维持时间,当该邻居表项的存在时间超过所述维持时间时,则进入S104,发送检测信号至所述存在时间超过所述维持时间的邻居表项对应的节点。对于正常用户的邻居表项,只需要通过几次检测-回应过程后,就可以将维持时间增大到较大的维持时间。而对于故障节点或者恶意节点,由于不会回应检测信号,在其邻居表项的存在时间超过维持时间时,即会被删除。而且,通过S102的调整,越临近额定的邻居表项项数上限时,各邻居表项的维持时间越短,能够迅速地删除无效节点对应的邻居表项。实施例二图2是本实施例提供的邻居表项的处理方法流程图,如图2所示,所述邻居表项的处理方法包括:S201、设定N个预设邻居表项阈值THyi=U 3,…,N,其中,TH1CTH2Cffl3〈…<THN,N为预设正整数。同样地,预设邻居表项阈值THi可以是预设邻居表项的数量或者用当前邻居表项的数量占该邻居表可以容纳的邻居表项的总数量的百分比来表示,且预设邻居表项阈值可以根据实际需要和以往经验进行增减。当然,预设邻居表项阈值还可以针对邻居表项数量的增减分开设置为不同的阈值,也就是说,邻居表项数量增加时采用的阈值可以与邻居表项数量减少时的不同。S202、节点统计当前邻居表中的当前邻居表项数量。S202中统计的过程与实施例一中SlOl相同,于此不再赘述。在此过程中,可以确定当前邻居表项数量M与所述N个预设邻居表项阈值THi的关系,即在TH^MCfflw中可以确定i的值,从而确定当前邻居表项数量M介于哪两个预设邻居表项阈值之间,M为预设正整数。如果当前邻居表项数量增加,则进入S203,否则,进入S205。S203、判断所述当前邻居表项数量是否超过下一个预设邻居表项阈值THi+1,如果是,则进入S204,缩短新申请表项的维持时间和该邻居表中已有表项的维持时间。当所述当前邻居表项数量增加至超过其下一个预设邻居表项阈值THi+1时,在当前的维持时间的基础上缩短该邻居表中已有表项的维持时间和新申请表项的维持时间。新申请表项的维持时间是指节点分配给新增节点的维持时间,该维持时间会根据当前邻居表项数量进行调整。也就是说,当前邻居表项数量处于不同的邻居表项阈值区间时,节点分配给新增节点的维持时间也有所不同,当前邻居表项数量越多,分配给新增节点的维持时间越短。可选地,缩短该邻居表中已有表项的维持时间具体为将该邻居表中已有表项剩余的维持时间减少一半,所述已有表项剩余的维持时间为节点分配给当前已有表项的初始维持时间与已有表项生存时间的差值。缩短新申请表项的维持时间具体为将节点分配给新申请表项的初始维持时间减少一半。当然,具体的维持时间的变化量可以根据实际老化速度的需要进行设定,例如可以将节点分配给新申请表项的初始维持时间减少为原来的2/3、1/3等其他预定的值。S205、判断所述当前邻居表项数量是否小于前一个预设邻居表项阈值THi,如果是,则进入S206,增加新申请表项的维持时间。当所述当前邻居表项数量减少时,将所述当前邻居表项数量与前一个预设邻居表项阈值THi相比较,当邻居表项的总数量减少至小于其前一个预设邻居表项阈值THi时,在当前的新申请表项的维持 时间的基础上增加新申请表项的维持时间。
新申请表项的维持时间是指节点分配给新增节点的维持时间,该维持时间会根据当前邻居表项数量进行调整。也就是说,当前邻居表项数量处于不同的邻居表项阈值区间时,节点分配给新增节点的维持时间也有所不同,当前邻居表项数量越小,分配给新增节点的维持时间越长。可选地,在增加新申请表项的维持时间之后,还包括:判断增加后的所述新申请表项的维持时间是否超过预设的最大维持时间,如果超过,则将所述新申请表项的维持时间调整为最大维持时间。当所述当前邻居表项数量减少至小于其前一个预设邻居表项阈值THi时,在当前的新申请表项的维持时间的基础上增加新申请表项的维持时间,并判断增加后的所述新申请表项的维持时间是否超过邻居表项的最大维持时间,如果是,则将所述新申请表项的维持时间调整为最大维持时间。对于已有表项的维持时间不做变更。S207、确定所述节点的当前邻居表中的各邻居表项的存在时间是否超过所述各邻居表项对应的维持时间,如果是,则进入S208,发送检测信号至所述存在时间超过所述维持时间的邻居表项对应的节点。S207判断过程与实施例一中S103相同,于此不再赘述。S209、确定是否在预设时间阈值内接收到所述存在时间超过所述维持时间的邻居表项对应的节点对所述检测信号的响应,如果是,则进入S210,否则进入S211,将所述存在时间超过所述维持时间的邻居表项删除。对于正常用户终端在接收到检测信号时,会发送作为回应的NA消息至所述发出所述检测信号的节点。如果在预设时间阈值内接收到所述存在时间超过所述维持时间的邻居表项对应的节点回应的NA消息,表明仍有流量在使用该邻居表项,则将该邻居表项的状态迁移为REACHABLE,并进入S210,增加该存在时间超过所述维持时间的邻居表项对应的维持时间。对于其他未涉及的已有邻居表项的维持时间不做变更。
`
可选地,在S210增加该存在时间超过所述维持时间的邻居表项的维持时间之后,还包括:判断所述存在时间超过所述维持时间的邻居表项的维持时间是否超过预设最大维持时间,如果超过,则将所述邻居表项的维持时间调整为最大维持时间。如果在预设时间阈值内未接收到所述存在时间超过所述维持时间的邻居表项对应的节点回应的NA消息,表明该存在时间超过所述维持时间的邻居表项为无效表项,则删除该存在时间超过所述维持时间的邻居表项。举个例子,如果一个设备容纳邻居表项的额定项数为A,设定预设邻居表项阈值包括:1^=40%, TH2=50%, TH3=60%, TH4=70%, THs=75%, TH6=80%, TH7=85%, TH8=90%, TH9=95%。节点分配给新申请的邻居表项的初始维持时间为8192秒,在邻居表项的总数量小于40%A时,对于新申请的或已有的邻居表项初始的维持时间均为8192秒。随着邻居表项数量的增加,当超过预设邻居表项阈值THl时,触发原有邻居表项剩余的维持时间减少一半,以及分配给新申请的维持时间减少一半。此时,由于经过了一段时间,原有邻居表项已经存在了,还剩下2000秒的维持时间,将其缩短到1000秒,对于新申请的邻居表项,将初始的维持时间缩短到4096秒。如果邻居表项的数量继续增加,当超过下一个预设邻居表项阈值TH2时,则再将新申请邻居表项的初始的维持时间减少一半为2048秒,以及将原有邻居表项剩余的维持时间减少一半,如剩余800秒则缩短到400秒。依次类推,当邻居表项数量分别超过TH3,TH4, TH5, TH6, TH7, TH8, TH9时,新申请的邻居表项的初始的维持时间分别为1024,512,256,128,64,32,16 秒。如果某个邻居表项的存在时间超过所述维持时间,节点对该存在时间超过所述维持时间的邻居表项对应的节点发起检测后得到响应,则对该存在时间超过所述维持时间的邻居表项的原维持时间增加一倍,但是增加后的维持时间不能超过最大维持时间,并重新开始计算该邻居表项的存在时间。比如表项数量为上限的50%时,一个邻居表项创建后维持时间为2048秒,该邻居表项超时后节点对该邻居表项对应的节点(如某个用户终端)发起检测,该邻居表项对应的用户终端响应了该检测,那么该邻居表项的维持时间变为4096。如果4096秒后,终端用户又一次响应了检测,则维持时间增大到最长的8192秒,之后不再增长。假如存在网络攻击或者某台网络设备有故障,瞬间对同一个被请求节点申请了大量邻居表项,被请求节点在短时间内的邻居表项数量达到邻居表项的预设阈值的95%以上,那么对于每个新申请的攻击表项的维持时间只有16秒或更少,很快就可以超期,由于攻击源不会响应检测消息,大量无效的邻居表项就可以被及时删除,能很好的保护邻居表项数量不会超限。如果攻击持续存在,正常的用户表项在超过维持时间时接收到检测信号,并对该检测信号进行回应,被请求节点在接收到回应后,增大该邻居表项的维持时间。这样,经过多次对检测信号进行回应,维持时间可以增加到一个较大的值,只有攻击的表项维持时间很短,不会对正常用户造成频繁检测的压力。由于大量无效表项被删除,被请求节点的邻居表项数量逐渐减少,当邻居表项的总数量小于TH9时,增加新申请的邻居表项的初始的维持时间为32秒,对于已有邻居表项的维持时间不作变更。当邻居表项数量逐渐减少后,新申请的邻居表项的初始的维持时间逐次增加一倍,当维持时间增大到最长的8192秒后,不再增长。以上是对本发明所提供的邻居表项的处理方法进行的详细描述,下面对本发明提供的邻居表项的处理装置进行详细描述。实施例三本发明提供的邻居表项的处理装置可以集成在终端设备上,所述终端设备可以是交换机、路由器等转发设备,也可以是主机、手机等终端。图3是本实施例提供的邻居表项的处理装置示意图,如图3所示,本发明的邻居表项的处理装置包括:统计单元10、调整单元20、检测单元30、第一处理单元40和第二处理单元50。统计单元10用于统计当前邻居表中的当前邻居表项数量。邻居表是一组有关单个邻居的表项,即为邻居缓存表,这些邻居接收到了最新的数据流。每个邻居表项的信息包括:某个邻居节点的链路层地址、指示邻居节点是路由器还是主机的标志、指向任何排队等待完成地址解析的数据包的指针。邻居表项还可以包括:邻居不达检测算法所使用的信息。该邻居不达检测算法所使用的信息可以包括:该邻居表项对应的邻居节点的可达状态、该邻居表项对应的邻居节点的探测无应答的次数以及向该邻居表项对应的邻居节点发出下一次邻居不达检测的时间。具体地,在邻居表的学习过程中,节点将自身的链路层地址、自身的IP地址、自身的节点名称等地址配置信息通过ND协议中的NS消息发送给网络内的其他节点。接收到该NS消息的节点将自身的链路层地址、自身的IP地址、自身的节点名称等配置信息通过ND协议中的NA消息返回给发送所述NS消息的节点,这样,所述发送NS消息的节点以及网络内其他节点就可以知道对方的地址配置信息,从而根据地址配置信息进行邻居表操作,如将对方的地址配置信息加入到自己的邻居表中建立新的邻居表项,或修改原有邻居表项等,完成动态邻居表学习。统计单元10监测节点自身的邻居表是否存在增加或减少的邻居表项,并统计在其邻居表上的邻居表项的总数量。调整单元20用于根据所述当前邻居表项数量与预设邻居表项阈值的大小关系,缩短或增加所述当前邻居表项的维持时间。具体地,调整单元20利用统计单元10统计到的当前邻居表项数量来调整所述当前邻居表项的维持时间。当统计单元10统计到所述当前邻居表项数量增加时,调整单元20将所述当前邻居表项数量与预设邻居表项阈值相比较,当统计单元10统计的所述当前邻居表项数量大于预设邻居表项阈值时,则缩短新申请表项和已有表项的维持时间。或者,当统计单元10统计到所述当前邻居表项数量减少时,调整单元20将所述当前邻居表项数量与所述预设邻居表项阈值相比较,当统计单元10统计的所述当前邻居表项的总数量是否小于预设邻居表项阈值时,则增加新申请表项的维持时间。具体地,预设邻居表项阈值可以根据实际需要或以往经验进行设定,通常可以是预设邻居表项的数量或者当前邻居表项的数量占该邻居表可以容纳的邻居表项的总数量的百分比来表示。检测单元30用于确定所述当前邻居表中的各邻居表项的存在时间是否超过所述各邻居表项对应的维持时间,如果是,检测单元30发送检测信号至所述存在时间超过所述维持时间的邻居表项对应的节点,如果在预设时间阈值内接收到所述存在时间超过所述维持时间的邻居表项对应的节点对所述检测信号的响应,则触发第一处理单元40,否则触发第二处理单元50。第一处理单元40用于在受到检测单元30触发时,增加所述存在时间超过所述维持时间的邻居表项的维持时间并重设该存在时间超过所述维持时间的邻居表项的存在时间。第二处理单元50用于在受到检测单元30触发时,删除所述存在时间超过所述维持时间的邻居表项。当当前邻居表中的某个邻居表项的状态变为STALE时,检测单元30开始计算该邻居表项的存在时间。如果此时有流量使用该邻居表项,则该邻居表项的状态会由STALE状态迁移至DELAY,触发延时一段时间后,迁移为PR0BE,检测单元30向该邻居表项对应的节点发出NS消息以重新确认该邻居表项对应的节点的链路层地址,如果在预设时间阈值内收到该邻居表项对应的节点发出的NA消息,将该邻居表项的状态迁移为REACHABLE,如果在可达时间ReachableTime时间内没有流量使用该邻居表项,状态迁移为STALE,重新开始计算邻居表项的存在时间。可达时间ReachableTime是预设的邻居表项可达状态的时间,通常约为30s。当然,由于恶意节点所请求生成的邻居表项通常不会有用户进行实际使用,经过ReachableTime时间之后该邻居表项的状态即会从REACHABLE变为STALE,因而,在实际使用时也可以从生成邻居表项时开始计算存在时间,即计算邻居表项的整个生存时间。当某一个邻居表项的存在时间超过所述维持时间,表明该邻居表项长期处于STALE状态,即长时间无流量使用该邻居表项,则检测单元30发送检测信号(如NS消息)至该邻居表项对应的节点,并判断是否在预设时间阈值内接收到邻居表项对所述检测信号的响应。对于正常用户终端在接收到检测信号时,会发送作为回应的NA消息至所述发出检测信号的节点。如果在预设时间阈值内,检测单元30能接收到对所述检测信号回应的NA消息,表明仍有流量在使用该邻居表项,则第一处理单元40将该邻居表项的状态迁移为REACHABLE,并增加该邻居表项对应的节点的邻居表项的维持时间。对于其他未涉及的已有邻居表项的维持时间,第一处理单元40不做变更。如果在预设时间阈值内,检测单元30未接收到回应的NA消息,表明该邻居表项为无效表项,则触发第二处理单元50删除该无效的邻居表项。其中,预设时间阈值可根据实际需要或以往经验进行设定。第一处理单元40在增加了所述节点对应的邻居表项的维持时间后,即重新开始计算该邻居表项的存在时间,返回检测单元30,确定所述节点的当前邻居表中的各邻居表项的存在时间是否超过所述维持时间,当该邻居表项的存在时间超过所述维持时间时,则发送检测信号至所述存在时间超过所述维持时间的邻居表项对应的节点。对于正常用户的邻居表项,只需 要通过几次检测-回应过程后,就可以将维持时间增大到较大的维持时间。而对于故障节点或者恶意节点,由于不会回应检测信号,在其邻居表项的存在时间超过维持时间时,即会被删除。而且,通过调整单元20的调整,越临近额定的邻居表项项数上限时,各邻居表项的维持时间越短,能够迅速地删除无效节点对应的邻居表项。实施例四图5是本实施例提供的邻居表项的处理装置示意图,如图5所示,所述邻居表项的处理装置包括:统计单元10、调整单元20、检测单元30、第一处理单元40、第二处理单元50、设置单元60、第一判断单元70和第二判断单元80,与实施例三区别在于,本实施例的处理装置还包括设置单元60、第一判断单元70和第二判断单元80。设置单元60与统计单元10和调整单元20相连接,用于设定N个预设邻居表项阈值 THi, i=l, 2,3,…,N,其中,TH1<TH2<TH3<-<THn, N 为预设正整数。其中,预设邻居表项阈值THi可以是预设邻居表项的数量或者用当前邻居表项的数量占该邻居表可以容纳的邻居表项的总数量的百分比来表示,且预设邻居表项阈值可以根据实际需要和以往经验进行增减。具体地,统计单元10还用于确定统计到的所述当前邻居表项数量M与所述N个预设邻居表项阈值THi的关系,即在TH^MCfflw中可以确定i的值,从而确定当前邻居表项数量M介于哪两个预设邻居表项阈值之间,M为预设正整数。根据统计单元10的统计结果,当统计的所述当前邻居表项数量增加时,调整单元20具体用于将所述当前邻居表项数量与下一个预设邻居表项阈值THi+1相比较,判断所述邻居表项的总数量是否超过下一个预设邻居表项阈值THi+1,如果是,则缩短新申请表项和已有表项的维持时间。具体地,调整单元20在当前的维持时间的基础上缩短已有表项和新申请表项的维持时间。新申请表项的维持时间是指节点分配给新增节点的维持时间,该维持时间会通过调整单元20根据当前邻居表项数量进行调整。也就是说,当前邻居表项数量处于不同的邻居表项阈值区间时,节点分配给新增节点的维持时间也有所不同,当前邻居表项数量越多,调整单元20调整后分配给新增节点的维持时间越短。当统计单元10统计的所述当前邻居表项数量减少时,调整单元20则将所述当前邻居表项数量与前一个预设邻居表项阈值THi相比较,判断所述邻居表项的总数量是否小于前一个预设邻居表项阈值THitl当邻居表项的总数量减少至小于其前一个预设邻居表项阈值THi时,调整单元20在当前的新申请表项的维持时间的基础上增加新申请表项的维持时间。对于已有表项的维持时间,调整单元20不做变更。新申请表项的维持时间是指节点分配给新增节点的维持时间,该维持时间会通过调整单元20根据当前邻居表项数量进行调整。也就是说,当前邻居表项数量处于不同的邻居表项阈值区间时,节点分配给新增节点的维持时间也有所不同,当前邻居表项数量越小,调整单元20调整后分配给新增节点的维持时间越长。可选地,本发明实施例的处理装置还可以包括:第一判断单元70。第一判断单元70与调整单元20相连接,用于判断通过调整单元20增加后的所述新申请表项的维持时间是否超过预设的最大维持时间,如果超过,则触发调整单元20将所述新申请表项的维持时间调整为最大维持时间。当检测单元30确定到邻居表项的存在时间超过所述维持时间时,发送检测信号至所述当前邻居表项对应的节点,如果在预设时间阈值内接收到所述节点对所述检测信号的响应,则触发第一处理单元40,否则触发第二处理单元50。对于正常用户终端在接收到检测信号时,会发送作为回应的NA消息至所述发出所述检测信号的节点。如果检测单元30在预设时间阈值内接收到所述存在时间超过所述维持时间的邻居表项对应的节点回应的NA消息,表明仍有流量在使用该邻居表项,则将该邻居表项的状态迁移为REACHABLE,触发第一处理单元40增加该邻居表项对应的维持时间。对于其他未涉及的已有邻居表项的维持时间不做变更。可选地,本发明实施例的处理装置还可以包括:第二判断单元80。第二判断单元80与第一处理单元40相连接,用于判断第一处理单元40增加后的该节点对应的当前邻居表项的维持时间是否超过预设的最大维持时间,如果超过,则触发第一处理单元40将所述邻居表项的维持时间调整为最大维持时间。如果检测单元30在预设时间阈值内未接收到所述存在时间超过所述维持时间的邻居表项对应的节点回应的NA消息,表明该存在时间超过所述维持时间的邻居表项为无效表项,则触发第二处理单元50删除该存在时间超过所述维持时间的邻居表项。本发明可以有效地避免以下几种情形导致设备邻居表项超限的情况:(I)在流动性比较强的大型聚会上,有大量的观众终端在不同设备之间来回切换,申请IPv6地址而不老化;(2)存在网络攻击时,不断模拟各种IPv6地址申请;(3)当某些设备存在故障,不断错误地申请IPv6地址。对于这些情况产生的无用表项,经过本发明智能调整维持时间后,能够迅速删除掉无效的表项。例如,在大型聚会的场景下,很多客户手持终端流动,申请IP而不主动老化。表项数量会逐步增长,到60%到80%时,表项只会维持十几分钟到几分钟,会逐步老化掉,不会影响到稳定的IPv6地址。综上所述,本发明提供的邻居表项的处理方法及装置,可以根据系统的压力,智能调整表项的维持时间,对设备的表项资源进行合理有效地保护;不会明显增大原有正常客户端的压力。对于能够响应检测的用户,同样进行智能调整,只需要多回应几个消息,就可以恢复到正常状态,减少对这些客户端的影响和资源压力。实施例五图5为本发明实施例的邻居表项的处理装置的结构组成示意图。本发明实施例的邻居表项的处理装置可包括:处理器501、存储器502、系统总线503和通信接口 504。处理器501、存储器502和通信接口 504之间通过系统总线503连接并完成相互间的通信。处理器501可能为单核或多核中央处理单元(Central Processing Unit,CPU),或者为特定集成电路(Application Specific Integrated Circuit, ASIC),或者为被配置成实施本发明实施例的一个或多个集成电路。存储器502可以为高速RAM存储器,也可以为非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。存储器502用于存放程序505。具体的,程序505中可以包括程序代码,所述程序代码包括计算机执行指令。当邻居表项的处理装置运行时,处理器501运行程序505,以执行以下指令:统计当前邻居表中的当前邻居表项数量;当所述当前邻居表项数量增加时,将所述当前邻居表项数量与预设邻居表项阈值相比较,如果所述当前邻居表项数量大于所述预设邻居表项阈值,缩短新申请表项和已有表项的维持时间;当所述当前邻居表项数量减少时,将所述当前邻居表项数量与所述预设邻居表项阈值相比较,如果所述当前邻居表项数量小于所述预设邻居表项阈值,增加新申请表项的维持时间;当所述当前邻居表中有邻居表项的存在时间超过所述维持时间时,向所述存在时间超过所述维持时间的邻居表项对应的第一节点发送检测信号;如果在预设时间阈值内接收到所述第一节点对所述检测信号的响应,则增加该第一节点对应的邻居表项的维持时间并重新开始计算该第一节点对应的邻居表项的存在时间,否则,将该第一节点对应的邻居表项删除。具体地,邻居表项的处理装置还根据所述指令执行上述图1,2所示的通信方法,具体在此不再赘述。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。以上所述的具体实施方式
,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式
而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种邻居表项的处理方法,其特征在于,所述方法包括: 统计当前邻居表中的当前邻居表项数量; 当所述当前邻居表项数量增加时,将所述当前邻居表项数量与预设邻居表项阈值相比较,如果所述当前邻居表项数量大于所述预设邻居表项阈值,缩短新申请表项和已有表项的维持时间;当所述当前邻居表项数量减少时,将所述当前邻居表项数量与所述预设邻居表项阈值相比较,如果所述当前邻居表项数量小于所述预设邻居表项阈值,增加新申请表项的维持时间; 当所述当前邻居表中有邻居表项的存在时间超过所述维持时间时,向所述存在时间超过所述维持时间的邻居表项对应的第一节点发送检测信号; 如果在预设时间阈值内接收到所述第一节点对所述检测信号的响应,则增加该第一节点对应的邻居表项的维持时间并重新开始计算该第一节点对应的邻居表项的存在时间,否贝U,将该第一节点对应的邻居表项删除。
2.根据权利要求1所述的邻居表项的处理方法,其特征在于,所述缩短已有表项的维持时间为:将所述已有表项所剩余的维持时间减少一半; 所述缩短新申请表项的维持时间为:将所述新申请表项的初始维持时间减少一半; 所述增加新申请表项的维持时间为:将所述新申请表项的初始维持时间增加一倍。
3.根据权利要求1所述的邻居表项的处理方法,其特征在于,所述方法还包括: 设定N个预设邻居表项阈值THi, i=l,2,3,…,N,其中,TH1Cffl2Cffl3O" <THN,N为预设正整数; 如果所述当前邻居表项数量M与所述N个预设邻居表项阈值THi的关系为:TH^MCTHw, M为正整数,则 当所述当前邻居表项数量增加时,将所述当前邻居表项数量与下一个预设邻居表项阈值THi+1相比较,当所述当前邻居表项数量大于下一个预设邻居表项阈值THi+1时,缩短新申请表项和已有表项的维持时间; 当所述当前邻居表项数量减少时,将所述当前邻居表项数量与前一个预设邻居表项阈值THi相比较,当所述当前邻居表项数量小于前一个预设邻居表项阈值THi时,增加新申请表项的维持时间。
4.根据权利要求1所述的邻居表项的处理方法,其特征在于,在所述增加该第一节点对应的邻居表项的维持时间之后,还包括: 判断增加后的该第一节点对应的当前邻居表项的维持时间是否超过最大维持时间,如果是,则将该第一节点对应的邻居表项的维持时间调整为最大维持时间。
5.根据权利要求1所述的邻居表项的处理方法,其特征在于,在所述增加新申请表项的维持时间之后,还包括: 判断增加后的所述新申请表项的维持时间是否超过最大维持时间,如果是,则将所述新申请表项的维持时间调整为最大维持时间。
6.根据权利要求1所述的邻居表项的处理方法,其特征在于,所述邻居表项的存在时间从所述邻居表项的状态变为STALE时开始计算;或者 所述邻居表项的存在时间从生成所述邻居表项时开始计算。
7.一种邻居表项的处理装置,其特征在于,所述装置包括统计单元、调整单元、检测单元、第一处理单元和第二处理单元,其中: 所述统计单元,用于统计当前邻居表中的当前邻居表项数量; 所述调整单元,用于当所述当前邻居表项数量增加时,将所述当前邻居表项数量与预设邻居表项阈值相比较,如果所述当前邻居表项数量大于所述预设邻居表项阈值,缩短新申请表项和已有表项的维持时间;或者 所述调整单元用于当所述当前邻居表项数量减少时,将所述当前邻居表项数量与所述预设邻居表项阈值相比较,如果所述当前邻居表项数量小于所述预设邻居表项阈值,增加新申请表项的维持时间; 所述检测单元,用于确定所述当前邻居表中的各邻居表项的存在时间是否超过所述维持时间,如果是,则发送检测信号至所述存在时间超过所述维持时间的邻居表项对应的第一节点,如果在预设时间阈值内接收到所述第一节点对所述检测信号的响应,则触发所述第一处理单元,否则触发所述第二处理单元; 所述第一处理单元,用于在受到所述检测单元触发时,增加所述第一节点对应的邻居表项的维持时间并重新开始计算该第一节点对应的邻居表项的存在时间; 所述第二处理单元,用于在受到所述检测单元触发时,删除所述第一节点对应的邻居表项。
8.根据权利要求7所述的邻居表项的处理装置,其特征在于,所述调整单元用于当所述当前邻居表项数量增加并大于预设邻居表项阈值时,将所述已有表项所剩余的维持时间减少一半;或 所述调整单元用于当所述当前邻居表项数量增加并大于预设邻居表项阈值时,将所述新申请表项的初始 维持时间减少一半;或 所述调整单元用于当所述当前邻居表项数量减少并小于预设邻居表项阈值时,将所述新申请表项的初始维持时间增加一倍。
9.根据权利要求7所述的邻居表项的处理装置,其特征在于,所述处理装置还包括设置单元,其中: 所述设置单元,与所述统计单元和调整单元相连接,用于设定N个预设邻居表项阈值THi, i=l,2,3,…,N,其中,TH1CTH2Cffl3O" <THN,N 为预设正整数; 所述统计单元还用于确定统计到的所述当前邻居表项数量M与所述N个预设邻居表项阈值THi的关系为正整数; 所述调整单元用于当所述当前邻居表项数量增加时,将所述当前邻居表项数量与下一个预设邻居表项阈值THi+1相比较,当所述当前邻居表项数量大于下一个预设邻居表项阈值THi+1时,缩短新申请表项和已有表项的维持时间; 或者 所述调整单元用于当所述当前邻居表项数量减少时,将所述当前邻居表项数量与前一个预设邻居表项阈值THi相比较,当所述当前邻居表项数量小于前一个预设邻居表项阈值THi时,增加新申请表项的维持时间。
10.根据权利要求7所述的邻居表项的处理装置,其特征在于,所述处理装置还包括第一判断单元,所述第一判断单元与所述调整单元相连接,用于判断经过所述调整单元调整后的所述新申请表项的维持时间是否超过最大维持时间,如果是,则触发所述调整单元将所述新申请表项的维持时间调整为最大维持时间。
11.根据权利要求7所述的邻居表项的处理装置,其特征在于,所述处理装置还包括第二判断单元,所述第二判断单元与所述第一处理单元相连接,用于判断经过所述第一处理单元调整后的该第一节点对应的当前邻居表项的维持时间是否超过最大维持时间,如果是,则触发所述第一处理单元将该第一节点对应的邻居表项的维持时间调整为最大维持时间。
12.根据权利要求7所述的邻居表项的处理装置,其特征在于,所述邻居表项的存在时间从所述邻居表项的状态变为STALE时开始计算;或者 所述邻居表项的存在 时间从生成所述邻居表项时开始计算。
全文摘要
本发明涉及一种邻居表项的处理方法及装置,所述方法包括统计当前邻居表中的邻居表项数量;当邻居表项数量增加时,判断是否大于预设邻居表项阈值,如果是,则缩短新申请表项和已有表项的维持时间;当邻居表项数量减少时,判断是否小于预设邻居表项阈值,如果是,则增加新申请表项的维持时间;当当前邻居表中有邻居表项的存在时间超时,向该超时的邻居表项对应的第一节点发送检测信号;如果在预设时间阈值内接收到所述第一节点对检测信号的响应,则增加该第一节点对应的邻居表项的维持时间,否则,将该第一节点对应的邻居表项删除。本发明能够自动调整邻居表项的维持时间,删除无效的邻居表项,减少系统资源的压力,提高资源的利用率。
文档编号H04L29/06GK103078799SQ201310031938
公开日2013年5月1日 申请日期2013年1月28日 优先权日2013年1月28日
发明者陈耕, 王凤梅 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1