一种路由器邻居发现条目处理的装置及方法

文档序号:7584686阅读:264来源:国知局
专利名称:一种路由器邻居发现条目处理的装置及方法
技术领域
本发明涉及数据通信领域,具体地说涉及一种路由器邻居发现条目处理的装置及方法。
背景技术
随着IPv4地址的日益枯竭,IPv6网络的大量部署逐渐被提上日程,在IPv6协议中,ND(Neighbor Discovery,邻居发现)协议是一个全新的协议,它实现了 IPv4的ARP(地址解析协议)、ICMP (控制报文协议)中路由器发现部分、重定向部分的所有功能,并具有邻居不可达检测机制。当一个IPv6节点在网络上出现的时候,直接相连的链路上其他IPv6 节点可以通过ND协议发现它,进而获取它的链路层地址。IPv6节点里面IPv6地址与链路层地址的关系表称为邻居条目,简称ND条目,一般它有三个基本字段IPv6下一跳地址、出接口和链路层MAC地址(网络硬件地址),同时还有ND条目状态、ND条目的邻居状态切换时间等信息。RFC2461中规定,ND条目有五种状态,分别是incomplete (不完整)、 reachable (可达)、stale (陈旧)、delay (延迟)、probe (探测)。如图1所示,是ND条目状态变迁示意图。当节点要进行地址解析的时候,会主动创建一个状态为incomplete的ND 条目,并且发送NS(邻居请求)报文,如果收到回应的NA(邻居通告)报文,说明该邻居是可达的,状态变为reachable ;如果收不到回应报文,说明邻居不可达,删除创建的条目。在收到最后一个可达性确认的NA报文后,经过“可达时间”,默认是30秒左右,条目状态就变成stale。在stale状态,如果使用该条目发送报文,其状态变为delay,delay状态持续一段时间,默认是5秒,变成probe,并发送可达性探测的NS报文,如果收到回应报文,状态重新变为reachable ;否则,删除该条目。处于stale状态的条目,如果一段时间,默认是M小时,一直没有报文发送,则把该条目老化删除。在路由器上,一般都是控制面和转发面分开,转发面功能主要由微码实现,负责报文的转发;控制面主要由IPv6协议栈模块实现,通过静态配置、动态学习等手段产生转发面所需要的转发资源,并下发给转发表管理模块,供微码转发报文使用。IPv6协议栈模块负责ND条目的学习,学到下发给转发表管理模块,供微码转发报文使用。如图2所示,是ND 条目老化后报文发送示意图。根据RFC2461的规定,ND状态变迁需要报文来触发,而路由器上数据报文大部分都是微码转发,不会送给IPv6协议栈模块,这样处于stale状态的ND 条目因为没有报文触发它改变状态,就会一直持续M小时,然后老化删除。这个被老化的 ND条目,如果微码一直在使用它转发报文,在它被删除的时候就会导致大量的NO ND报文 (微码转发报文时,在转发的时候查不到ND条目,就称为NO ND报文)上送控制面,引起控制面CPU利用率冲高,特别是在ND条目比较多的情况下,会导致ND条目重新学习、下发时间较长,从而产生转发流丢包现象。这个现象会周而复始的出现,默认M小时左右来一次, 还有可能因为CPU忙,引起路由协议断链,造成更为严重后果。目前针对这种,IPv6里面没有提出明确的解决方案,一般都是参考IPv4的ARP模块做的。ARP通常有以下几种做法1、动态ARP转换为静态ARP ;2、ARP老化时间到之前再重新学习ARP。具体到IPv6就是把动态ND条目转化为静态ND条目,或者在ND老化时间到之前重新学习。这两种方法有明显的局限性,都会导致一些不用的ND条目长期存在,占用有限ND表资源,严重的会导致后续新增的转发流量因为没有ND条目而大量丢包。

发明内容
本发明解决的技术问题是提供了一种路由器邻居发现条目处理的装置,通过该装置,保证了 ND条目的正常老化,防止出现丢包现象。另外,本发明还提供了一种路由器邻居发现条目处理的方法。本发明提供的一种路由器邻居发现条目处理的装置包括,微码转发模块,用于在使用邻居发现条目进行报文转发时,对该ND条目的使用进行计数;转发表管理模块,用于向ND协议模块提供ND条目的计数;ND协议模块,用于在ND条目刚变为陈旧状态时,通过转发表管理模块读取各线卡的该ND条目的计数并累加,且在ND条目为陈旧状态特定时间后,再次读取各线卡的该ND 条目的计数并累加,比较前后两次读取的ND条目的累加结果,若前后两次读取的ND条目的累加结果一致,则将该ND条目老化删除。优选地,所述ND协议模块,还用于在前后两次读取的ND条目的累加结果不一致时,将所述ND条目状态变为迟延状态,并进行可达性探测,若探测结果可达,则更改ND条目状态,重新下发给转发表管理模块,供微码使用,否则删除所述ND条目。优选地,所述对ND条目的使用进行计数为,每次使用该ND条目转发一个报文,使用计数累加一次。优选地,通过转发表管理模块读取各线卡的该ND条目的计数并累加后,将累加结果保存在ND条目中。优选地,所述特定时间为老化删除之前的任一段时间。本发明还提供了一种路由器ND条目处理的方法,所述方法包括,微码转发模块在使用ND条目转发报文时,对该ND条目的使用进行计数;ND协议模块在ND条目状态变为stale时,通过转发表管理模块读取各线卡的该 ND条目对应的使用计数并累加;ND协议模块在stale状态为特定时候后,再次通过转发表管理模块读取各线卡的该ND条目对应的使用计数并累加;判断两次使用计数累加结果是否一致,在一致的情况下,将该ND条目老化删除。优选地,所述方法还包括,在前后两次使用计数累加结果不一致时,将所述ND条目状态变为delay状态,并进行可达性探测,若探测结果可达,则更改ND条目状态,重新下发给转发表管理模块,供微码使用,否则删除所述ND条目。优选地,所述对该ND条目的使用进行计数为,每次使用该ND条目转发一个报文,则使用计数累加一次。优选地,所述通过转发表管理模块读取各线卡的该ND条目对应的使用计数并累加后,将累加结果保存在ND条目中。优选地,所述特定时间为老化删除之前的任一段时间。与现有技术相比,本发明的技术方案保证了 ND条目的正常老化,有效地规避了由于ND条目老化的原因导致的转发流量因为没有ND条目而大量丢包,保证了路由器的正常运作。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中
图1是ND条目状态变迁示意图;图2是ND条目老化后报文发送示意图;图3是本发明实施例一的结构图;图4是本发明实施例二的流程图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图3所示,是本发明实施例一的结构图,提供了一种路由器报文转发的装置,所述装置包括ND协议模块、转发表管理模块、微码转发模块,其中,微码转发模块,在使用ND条目进行报文转发时,对该ND条目使用进行计数,每次使用该ND条目转发一个报文,使用计数累加一次;需要说明的是,此处的计数累加一次并不限定于每次使用该ND条目转发一个报文,也可以是其他形式,使用该ND条目转发两个或多个报文,使用计数累加一次;转发表管理模块,用于向ND协议模块提供ND条目的计数;其具体形式是,提供ND条目使用计数的读取通道,供ND协议模块读取该计数;ND协议模块,在ND条目刚变成stale状态的时候,通过转发表管理模块读取各个线卡的该ND条目的使用计数并累加,把累加结果保存在ND条目中,这个使用计数也可以在用户界面显示;在ND条目处于stale状态一特定时间段后,默认M小时,老化删除之前,再次读取各个线卡的该ND条目的使用计数并累加;将前后两次读取的ND使用计数累加结果进行比较,如果两者一致,表明在这一段时间内,该ND条目没有被使用,可以老化删除(忽略使用计数翻转这种小概率的情况);如果不一致,表明在这段时间内,该ND条目仍然在使用,这时可以把该ND条目状态改变成delay状态,再进行可达性探测,探测结果如果仍然可达,则把新的MAC信息通过转发表管理模块写给微码;否则删除条目。如图4所示,是本发明实施例二的流程图,提供了一种路由器报文转发的方法,所述方法包括,实施方法,包括以下步骤S401,微码转发模块在使用ND条目转发报文时,把ND条目的使用进行计数;
需要说明的是,此处的计数累加一次并不限定于每次使用该ND条目转发一个报文,也可以是其他形式,使用该ND条目转发两个或多个报文,使用计数累加一次;S402,ND协议模块在ND条目状态变为stale时,通过转发表管理模块读取各个线卡的该ND条目对应的使用计数并累加,累加结果保存在该ND条目里面,这个结果也可以在用户界面显示;S403, ND协议模块在stale状态老化删除前,再次通过转发表管理模块读取各个线卡的该ND条目对应的使用计数并累加;S404判断两次使用计数累加结果是否一致,若两者一致就可以认为在进入stale 状态的这一段时间内没有报文使用该ND条目进行转发,可以删除;若不一致就认为在进入 stale状态的这一段时间内,有报文使用该ND条目进行转发,该条目不能删除,重新进行一下可达性探测,更新一下ND状态,重新下发给转发表管理模块,供微码使用。上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、 修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种路由器邻居发现条目处理的装置,其特征在于,所述装置包括,微码转发模块,用于在使用邻居发现条目进行报文转发时,对该邻居发现条目的使用进行计数;转发表管理模块,用于向邻居发现协议模块提供邻居发现条目的计数; 邻居发现协议模块,用于在邻居发现条目刚变为陈旧状态时,通过转发表管理模块读取各线卡的该邻居发现条目的计数并累加,且在邻居发现条目为陈旧状态特定时间后,再次读取各线卡的该邻居发现条目的计数并累加,比较前后两次读取的邻居发现条目的累加结果,若前后两次读取的邻居发现条目的累加结果一致,则将该邻居发现条目老化删除。
2.根据权利要求1所述的装置,其特征在于,所述邻居发现协议模块,还用于在前后两次读取的邻居发现条目的累加结果不一致时,将所述邻居发现条目状态变为迟延状态,并进行可达性探测,若探测结果可达,则更改邻居发现条目状态,重新下发给转发表管理模块,供微码使用,否则删除所述邻居发现条目。
3.根据权利要求1或2所述的装置,其特征在于,所述对邻居发现条目的使用进行计数为,每次使用该邻居发现条目转发一个报文,使用计数累加一次。
4.根据权利要求1或2所述的装置,其特征在于,通过转发表管理模块读取各线卡的该邻居发现条目的计数并累加后,将累加结果保存在邻居发现条目中。
5.根据权利要求1或2所述的装置,其特征在于, 所述特定时间为老化删除之前的任一段时间。
6.一种路由器邻居发现条目处理的方法,其特征在于,所述方法包括,微码转发模块在使用邻居发现条目转发报文时,对该邻居发现条目的使用进行计数; 邻居发现协议模块在邻居发现条目状态变为陈旧时,通过转发表管理模块读取各线卡的该邻居发现条目对应的使用计数并累加;邻居发现协议模块在陈旧状态为特定时间后,再次通过转发表管理模块读取各线卡的该邻居发现条目对应的使用计数并累加;判断两次使用计数累加结果是否一致,在一致的情况下,将该邻居发现条目老化删除。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括,在前后两次使用计数累加结果不一致时,将所述邻居发现条目状态变为迟延状态,并进行可达性探测,若探测结果可达,则更改邻居发现条目状态,重新下发给转发表管理模块,供微码使用,否则删除所述邻居发现条目。
8.根据权利要求6或7所述的方法,其特征在于,所述对该邻居发现条目的使用进行计数为,每次使用该邻居发现条目转发一个报文,则使用计数累加一次。
9.根据权利要求6或7所述的方法,其特征在于,所述通过转发表管理模块读取各线卡的该邻居发现条目对应的使用计数并累加后,将累加结果保存在邻居发现条目中。
10.根据权利要求6或7所述的方法,其特征在于,所述特定时间为老化删除之前的任一段时间。
全文摘要
本发明涉及一种路由器邻居发现条目处理的装置,该装置包括微码转发模块,用于在使用邻居发现条目进行报文转发时,对该ND条目的使用进行计数;转发表管理模块,用于向ND协议模块提供ND条目的计数;ND协议模块,用于在ND条目刚变为陈旧状态时,通过转发表管理模块读取各线卡的该ND条目的计数并累加,且在ND条目为陈旧状态特定时间后,再次读取各线卡的该ND条目的计数并累加,比较前后两次读取的ND条目的累加结果,若前后两次读取的ND条目的累加结果一致,则将该ND条目老化删除。另外,本发明还提供了一种路由器邻居发现条目处理的方法。通过本发明的技术方案,保证了ND条目的正常老化,防止出现丢包现象。
文档编号H04L12/56GK102158395SQ20111003781
公开日2011年8月17日 申请日期2011年2月14日 优先权日2011年2月14日
发明者李洪涛, 金飞蔡 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1