一种邻居发现协议表项处理的方法和三层交换设备的制作方法

文档序号:7723054阅读:93来源:国知局

专利名称::一种邻居发现协议表项处理的方法和三层交换设备的制作方法
技术领域
:本发明涉及一种表项处理的方法和三层交换设备,尤其是邻居发现协议表项处理的方法和三层交换设备。
背景技术
:IPv6协议中,邻居发现协议由RFC2461给出,包括路由器和前缀发现、地址解析和重定向等功能,还增加了邻居不可达检测等新功能。邻居发现协议通过邻居缓存表表项的不同状态来表示到邻居节点可达的状况。邻居缓存表如表1所示,包括链路地址、表项状态等信息。当交换机(Switch)准备与主机PCl通信时,它会首先检查邻居缓存表中是否有PCl的IP地址12所对应的表项,如果没有,则对该地址进行链路层地址解析,在邻居缓存表中创建12所对应的表项,此时链路层地址字段为空,状态为未完成(Incomplete);当收到PCl返回的可达性确认之后,Switch会将该表项的链路层地址填充,并将状态置为可达(Reachable),表示此时Switch与PCl在网络层上是双向可达的;在可达状态下,如果链路地址发生变化或者在一个定义的可达计时器超时后,没有再收到PCl返回的可达性确认,邻居发现协议会将该表项状态置为不可达(Stale)ο<table>tableseeoriginaldocumentpage4</column></row><table>表1对于不可达的表项,Switch仍然可以使用一次该表项,Switch第一次向状态为Stale的PCl发送数据包时,将该表项的状态置为延时(Delay),意为等待该IP地址的网络层可达信息;对于Delay状态的表项,在一个Delay计时器时间内,Switch如果没有收到PCl返回的任何确认,则将该表项状态置为探测(Probe),意为需要对该地址进行不可达性检测,如果收到PCl的可达性确认,则将该表项状态置为Reachable,如果收到PCl的不可达性确认,则将该表项状态置为Stale;对于Probe状态的表项,如果Switch收到PCl的可达性确认,则将该表项置为Reachable,如果Switch收到PCl的非可达性确认,则将该表项状态置为Stale,如果未收到任何确认,则删除该表项。从上面邻居发现协议对邻居缓存表的状态维护过程可以看出,只有状态为Reachable的表项才能被认为网络层可达,通信才是相对可靠的;而Stale状态的表项是不可靠的,只能使用一次,不能使用Stale状态的表项进行多次通信。上面的机制在协议层次上的运行能较好的实现网络层双通的保证,但对于协议控制层面与数据转发层面相对分离的三层交换设备来说,则因为协议控制层面不能及时的获取数据转发层面报文转发的信息而难以实现网络侧互通的保证。在协议控制层面与数据转发层面相对分离的三层交换设备上,协议控制层面维护邻居缓存表,数据转发层面维护转发表。转发表如表2所示,包含IP地址、链路层封装索引、转发标识位(HIT)等信息,其中IP地址与邻居缓存表中的链路地址相对应,转发表表项的转发标识位标志该IP地址是否有报文收发。当三层交换设备向一目的节点进行一组报文的收发时,首先与目的节点在协议控制层面进行协商并收发报文,后续报文将在数据转发层面直接收发。在协议控制层面收发报文时,三层交换设备协议控制层面会区分邻居缓存表中表项的不同状态,但是数据转发层面不会区分表项的上述状态。当邻居缓存表表项状态由Reachable变为Stale之后,协议控制层面上该邻居缓存表表项是不可达的,这时如果没有协议报文交互的话,该邻居缓存表表项会维持24小时的Stale状态,但是如果此时有使用该邻居缓存表表项在协议控制层面已经协商通过的报文在数据转发层面收发,则数据转发层面对应的转发表表项仍然可用,那么邻居缓存表将不能准确保证网络互通性,难以保证通信的可靠性和效率。IPv6地址链路层封装表索引转发标识位~~ΓΤΤ20x10400表2<table>tableseeoriginaldocumentpage5</column></row><table>例如,在图1中,Switch发送一组报文给PC2时,如果协议控制层面协商通过后,当2:2所对应的邻居缓存表表项由Reachable状态变为Stale状态,如果还有报文需要发送给2::2的话,数据转发层面会直接封装发送。我们很难保证连接PC2的网络一直没有发生任何问题,如果PC2在网络层上不再可达,而Switch维持直接发送的状态,则这种情况下,无法触发协议控制层面的不可达检测。
发明内容本发明要解决的技术问题是提供一种表项处理的方法,应用于邻居发现协议,实现邻居缓存表和转发表的表项状态同步,提高数据通信的可靠性和效率。为了解决上述问题,本发明提供了一种邻居发现协议表项处理的方法,其特征在于三层交换设备在协议控制层的邻居缓存表表项由可达状态变为不可达(Stale)状态后,检测数据转发层是否有使用所述邻居缓存表表项对应的转发表表项中IP地址的报文收发,如有,则将所述邻居缓存表表项置为延迟(Delay)状态。进一步地,所述三层交换设备是在所述邻居缓存表表项由可达状态变为不可达状态后启动一计时器,在所述计时器超时时,检测数据转发层是否有使用所述转发表表项中IP地址的报文收发,如果有,则将所述邻居缓存表表项的状态置为延迟,并停止所述计时O进一步地,所述三层交换设备在所述计时器计时期间,如果没有使用所述转发表表项中IP地址的报文收发,则在所述计时器超时后,重新启动所述计时器,并在所述计时器超时时检测是否有使用所述转发表表项中IP地址的报文收发,如有,将所述邻居缓存表表项的状态置为延迟并停止所述计时器,否则再次重新启动所述计时器;每次重新启动所述计时器后,所述三层交换设备按相同方式进行处理。进一步地,所述三层交换设备启动所述计时器后,如果在所述邻居缓存表表项状态为不可达时,协议控制层有使用所述邻居缓存表表项中地址的报文收发,则停止所述计时器,并将所述邻居缓存表表项的状态置为延迟。进一步地,所述三层交换设备通过以下方式检测是否有使用所述转发表表项中IP地址的报文收发所述三层交换设备在启动或重新启动转发表状态计时器时,将所述转发表表项的转发标识位置为表示无报文收发的值,在所述转发表状态计时器超时后,如果所述转发标识位不变,则表示在所述转发表状态计时器超时之前,没有使用所述转发表表项中IP地址的报文收发;如果所述转发标识位变化为表示有报文收发的值,则表示在所述转发表状态计时器超时之前,有使用所述转发表表项中IP地址的报文收发。进一步地,为所述转发表表项启动的所述转发表状态计时器的时长是一定范围内的随机数,当启动时随机生成。本发明还提供了一种邻居发现协议表项处理的三层交换设备,包括转发表状态更新模块和邻居缓存表状态更新模块,其特征在于所述邻居缓存表状态更新模块用于在邻居缓存表表项的状态由可达变为不可达后通知转发表状态更新模块,然后检测转发表状态更新模块维护的使用所述邻居缓存表表项对应的转发表表项中IP地址进行报文收发的记录,判断所述记录是否为有使用所述转发表表项中IP地址的报文收发,如是,则将所述邻居缓存表表项置为延迟状态;所述转发表状态更新模块用于在收到所述邻居缓存表状态更新模块的通知后,清除使用所述转发表表项中IP地址进行报文收发的记录,之后如有使用所述转发表表项中IP地址的报文收发,则设置使用所述转发表表项中IP地址进行报文收发的记录为有报文收发。进一步地,所述的三层交换设备,其特征在于,还包括转发表状态查询模块和转发表状态计时器,其中所述转发表状态查询模块用于收到所述邻居缓存表状态更新模块的检测通知时,检测所述使用所述转发表表项中IP地址进行报文转发的记录,并返回所述记录;所述转发表状态计时器用于根据邻居缓存表状态更新模块的通知为所述转发表表项维护一个转发表状态计时器,在启动后进行计时,并在超时时通知所述邻居缓存表状态更新模块。进一步地,所述邻居缓存表状态更新模块还用于在邻居缓存表表项的状态由可达变为不可达后,启动所述转发表状态计时器,在所述转发表状态计时器超时后,通知转发表状态查询模块检测使用所述转发表表项中IP地址进行报文收发的记录并接收查询结果,如查询到的所述记录为有报文收发,则将所述邻居缓存表表项置为延迟状态,并停止所述转发表状态计时器,如查询到的所述记录没有报文收发时,则重新启动所述转发表状态计时器,在所述转发表状态计时器超时后,通知转发表状态查询模块查询所述记录并接收查询结果,如查询到的所述记录为有报文收发,则将所述邻居缓存表表项置为延迟状态,并停止所述转发表状态计时器,否则再次重新启动所述转发表状态计时器并按相同方式处理。进一步地,所述邻居缓存表状态更新模块还用于在所述邻居缓存表表项状态为不可达,且协议控制层有使用所述邻居缓存表表项中地址的报文收发时,停止所述转发表状态计时器,并将所述邻居缓存表表项的状态置为延迟。进一步地,所述使用所述转发表表项中IP地址进行报文收发的记录是通过所述转发表表项的转发标识位的值来记录的,当邻居缓存表表项的状态由可达变为不可达后,所述转发表状态更新模块根据邻居缓存表状态更新模块的通知将所述转发标识位的值置为表示无报文收发的值,之后如有使用所述转发表表项中IP地址的报文收发,则将所述转发标识位的值置为表示有报文收发的值。上述方案通过检测转发表表项状态从而对对应的邻居缓存表表项的状态进行维护和更新,实现邻居发现协议中邻居缓存表表项和转发表表项状态同步,完善了邻居发现协议中协议控制层面的不可达检测,保证网络侧互通,提高数据通信的可靠性和效率。图1为邻居发现协议报文转发的网络拓扑图;图2为本发明的模块框架图;图3为本发明实施例的工作流程图。具体实施例方式下面将结合附图及实施例对本发明的技术方案进行更详细的说明。如图2所示,本实施例表项处理的方法应用于邻居发现协议的三层交换设备包括转发表状态更新模块、转发表状态计时器、转发表状态查询模块、邻居缓存表状态更新模块,其中邻居缓存表状态更新模块用于维护和更新邻居缓存表中表项的状态,当有邻居缓存表表项的状态由Reachable变为Stale时,启动一个转发表状态计时器,并通知转发表状态更新模块重置该邻居缓存表表项对应的转发表表项的转发标识位的值;当该转发表状态计时器超时后,通知转发表状态查询模块查询该转发标识位的值并接收查询结果,如查询到的该转发标识位的值表示有报文收发,将该邻居缓存表表项的状态置为Delay,并停止该转发表状态计时器;如查询到的该转发标识位的值表示没有报文收发,则重启该转发表状态计时器按照如上所述方法处理,对转发表进行循环检测;如协议控制层有使用该邻居缓存表表项中地址的报文收发时,将该邻居缓存表表项的状态置为Delay,停止该转发表状态计时器。转发表状态更新模块用于根据邻居缓存表状态更新模块的通知将该转发标识位的值重置为表示无报文收发的值,有使用该转发表表项中IP地址的报文收发时,将该转发标识位的值置为表示有报文收发的值。转发表状态计时器用于为该转发表表项启动一个转发表状态计时器,在启动后进行计时,并在超时后通知该邻居缓存表状态更新模块。转发表状态计时器为每个转发表表项维护的转发表状态计时器时长是一定范围内的随机数,当首次为该转发表表项启动计时器时,由随机数种子生成,随机数的范围由随机数种子决定,随机数种子根据不同网络应用进行配置。转发表状态查询模块用于根据邻居缓存表状态更新模块的通知查询该转发表表项中转发标识位的值并返回该邻居缓存表状态更新模块。本实施例当转发表表项的转发标识位的值为0时,表示数据转发层面该转发表表项的IP地址没有报文收发过,当有报文从该IP地址收发时,则三层交换设备将把该转发表表项的转发标识位的值置为1。当三层交换设备准备与网络中某邻居节点通信时,它将检查邻居缓存表中是否有该邻居节点对应的表项及其状态,当邻居缓存表表项的状态为Reachable时,表示此时三层交换设备与该邻居节点在网络层上是双向可达的,当该邻居缓存表表项的链路地址发生变化或可达状态计时器超时,则三层交换设备会将该邻居缓存表表项的状态置为Stale。如果邻居缓存表表项为Stale状态时有使用该邻居缓存表表项在协议控制层面协商通过的报文在数据转发层收发,则将该邻居缓存表表项的状态置为Delay。三层交换设备对该邻居缓存表表项所作的处理的具体流程如图3所示,包括以下步骤步骤301当协议控制层面协商通过,该邻居缓存表表项状态变为Reachable后,三层交换设备为该邻居缓存表表项维护一个可达状态计时器;步骤302如果该可达状态计时器计时期间该邻居缓存表表项的链路地址发生改变或者该可达状态计时器超时,则该邻居缓存表表项的状态变为Stale;步骤303将对应的转发表表项的转发标识位的值置为0;步骤304为该转发表表项启动一个计时器;该计时器时长是由随机数种子生成的一定范围内的随机数,当启动时随机生成,随机数的范围由随机数种子决定,随机数种子根据不同网络应用进行配置。步骤305当该转发表表项的计时器超时后,查询该转发表表项的转发标识位的值;当数据转发层有使用该转发表表项的IP地址的报文收发时,三层交换设备将该转发表表项的转发标识位的值置为1。步骤306如果该转发标识位的值为1,执行步骤307,如果所述转发标识位的值为0,执行步骤308;步骤307将该邻居缓存表表项的状态置为Delay,停止该计时器;步骤308重启该转发表表项的计时器,转步骤305;如果邻居缓存表表项变为Stale状态时,在协议控制层面有使用该邻居缓存表表项中地址的报文收发,则停止该转发表表项的计时器,将该邻居缓存表表项的状态置为Delay0该邻居缓存表表项的状态变为Delay后,对该邻居缓存表表项按照邻居发现协议的规定的方法进行处理。本实施例采用的检测方式是启动计时器,当计时器超时时检测该转发表表项的转发标识位的值,也可以不采用定时检测的方式,而采用事件触发的方式,当该转发表表项的转发标识位的值变为1时,将该邻居缓存表表项的状态置为Delay。对本领域的技术人员来说,本发明可以有各种更改和变化或者应用于其它具有类似问题的业务。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。权利要求一种邻居发现协议表项处理的方法,其特征在于三层交换设备在协议控制层的邻居缓存表表项由可达状态变为不可达(Stale)状态后,检测数据转发层是否有使用所述邻居缓存表表项对应的转发表表项中IP地址的报文收发,如有,则将所述邻居缓存表表项置为延迟(Delay)状态。2.如权利要求1所述的方法,其特征在于所述三层交换设备是在所述邻居缓存表表项由可达状态变为不可达状态后启动一计时器,在所述计时器超时时,检测数据转发层是否有使用所述转发表表项中IP地址的报文收发,如果有,则将所述邻居缓存表表项的状态置为延迟,并停止所述计时器。3.如权利要求2所述的方法,其特征在于所述三层交换设备在所述计时器计时期间,如果没有使用所述转发表表项中IP地址的报文收发,则在所述计时器超时后,重新启动所述计时器,并在所述计时器超时时检测是否有使用所述转发表表项中IP地址的报文收发,如有,将所述邻居缓存表表项的状态置为延迟并停止所述计时器,否则再次重新启动所述计时器;每次重新启动所述计时器后,所述三层交换设备按相同方式进行处理。4.如权利要求1或2所述的方法,其特征在于所述三层交换设备启动所述计时器后,如果在所述邻居缓存表表项状态为不可达时,协议控制层有使用所述邻居缓存表表项中地址的报文收发,则停止所述计时器,并将所述邻居缓存表表项的状态置为延迟。5.如权利要求1或2所述的方法,其特征在于所述三层交换设备通过以下方式检测是否有使用所述转发表表项中IP地址的报文收发所述三层交换设备在启动或重新启动转发表状态计时器时,将所述转发表表项的转发标识位置为表示无报文收发的值,在所述转发表状态计时器超时后,如果所述转发标识位不变,则表示在所述转发表状态计时器超时之前,没有使用所述转发表表项中IP地址的报文收发;如果所述转发标识位变化为表示有报文收发的值,则表示在所述转发表状态计时器超时之前,有使用所述转发表表项中IP地址的报文收发。6.如权利要求1所述的方法,其特征在于为所述转发表表项启动的所述转发表状态计时器的时长是一定范围内的随机数,当启动时随机生成。7.一种邻居发现协议表项处理的三层交换设备,包括转发表状态更新模块和邻居缓存表状态更新模块,其特征在于所述邻居缓存表状态更新模块用于在邻居缓存表表项的状态由可达变为不可达后通知转发表状态更新模块,然后检测转发表状态更新模块维护的使用所述邻居缓存表表项对应的转发表表项中IP地址进行报文收发的记录,判断所述记录是否为有使用所述转发表表项中IP地址的报文收发,如是,则将所述邻居缓存表表项置为延迟状态;所述转发表状态更新模块用于在收到所述邻居缓存表状态更新模块的通知后,清除使用所述转发表表项中IP地址进行报文收发的记录,之后如有使用所述转发表表项中IP地址的报文收发,则设置使用所述转发表表项中IP地址进行报文收发的记录为有报文收发。8.如权利要求7所述的三层交换设备,其特征在于,还包括转发表状态查询模块和转发表状态计时器,其中所述转发表状态查询模块用于收到所述邻居缓存表状态更新模块的检测通知时,检测所述使用所述转发表表项中IP地址进行报文转发的记录,并返回所述记录;所述转发表状态计时器用于根据邻居缓存表状态更新模块的通知为所述转发表表项维护一个转发表状态计时器,在启动后进行计时,并在超时时通知所述邻居缓存表状态更新模块。9.如权利要求7或8所述的三层交换设备,其特征在于所述邻居缓存表状态更新模块还用于在邻居缓存表表项的状态由可达变为不可达后,启动所述转发表状态计时器,在所述转发表状态计时器超时后,通知转发表状态查询模块检测使用所述转发表表项中IP地址进行报文收发的记录并接收查询结果,如查询到的所述记录为有报文收发,则将所述邻居缓存表表项置为延迟状态,并停止所述转发表状态计时器,如查询到的所述记录没有报文收发时,则重新启动所述转发表状态计时器,在所述转发表状态计时器超时后,通知转发表状态查询模块查询所述记录并接收查询结果,如查询到的所述记录为有报文收发,则将所述邻居缓存表表项置为延迟状态,并停止所述转发表状态计时器,否则再次重新启动所述转发表状态计时器并按相同方式处理。10.如权利要求7或8所述的三层交换设备,其特征在于所述邻居缓存表状态更新模块还用于在所述邻居缓存表表项状态为不可达,且协议控制层有使用所述邻居缓存表表项中地址的报文收发时,停止所述转发表状态计时器,并将所述邻居缓存表表项的状态置为延迟。11.如权利要求7所述的三层交换设备,其特征在于所述使用所述转发表表项中IP地址进行报文收发的记录是通过所述转发表表项的转发标识位的值来记录的,当邻居缓存表表项的状态由可达变为不可达后,所述转发表状态更新模块根据邻居缓存表状态更新模块的通知将所述转发标识位的值置为表示无报文收发的值,之后如有使用所述转发表表项中IP地址的报文收发,则将所述转发标识位的值置为表示有报文收发的值。全文摘要本发明公开了一种邻居发现协议表项处理的方法和三层交换设备,当三层交换设备在协议控制层的邻居缓存表表项由可达状态变为不可达(Stale)状态后,检测数据转发层是否有使用所述邻居缓存表表项对应的转发表表项中IP地址的报文收发,如有,则将所述邻居缓存表表项置为延迟(Delay)状态。本发明实现邻居缓存表和转发表的表项状态同步,完善了邻居发现协议中协议控制层面的不可达检测,提高数据通信的可靠性和效率。文档编号H04L12/56GK101834778SQ200910261638公开日2010年9月15日申请日期2009年12月18日优先权日2009年12月18日发明者刘晓东申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1