一种路由表项的管理方法及系统的制作方法

文档序号:7643440阅读:151来源:国知局
专利名称:一种路由表项的管理方法及系统的制作方法
技术领域
本发明涉及路由表项管理技术领域,尤其涉及一种路由表项的管理方法及系统。
背景技术
第五代路由器使用NP(Network Processor,网络处理器)进行转发核心处的工作,但由于转发依赖于各种路由表项,比如FIB(Forwarding InformationTable转发信息表)、ARP(Address Resolution Protocol,地址解析协议)表等,所以在网络处理器中处理转发单元13外,还包括控制单元11和管理单元12,控制单元11对转发表项进行控制,管理单元12对处理器进行管理等操作,如图1所示。
但是图1中的控制单元并不运行路由协议,也不生成路由表项,该方面的工作是由在控制层面运行路由协议的CP(Control Processor,控制处理器)实现,如图2所示。当CP生成各种路由表项后,通过通讯格式将这些路由表项和对应的操作封装成各种命令,再将一组命令打包封装成一个帧,发送给NP;NP识别该帧后,执行携带的命令,各种路由表项就会转换为NP的数据结构添加到NP的内存中,供转发使用。这种帧在本文中称为控制帧,每个路由表项绑定操作在一起称为一个控制命令。
在网络处理器中,表在内存中有动态和静态两种存在形态。其中,动态表使用树的数据结构组织,以提高查找性能,可以进行Key(关键)值查找,表项为树中的叶子节点,内存资源在表项创建时动态的从共享内存池中获得;静态表以顺序表方式组织,以索引方式查找,内存在初始化后即一直占用。
在控制层面处理器对转发表项提供添加、更新、删除、查询四种操作。对于树表来说,添加和删除操作还要维护树的数据结构、申请释放叶子和中间节点资源。静态表添加和更新是一样的,删除即为将表项内存清零。
现有技术中的控制命令都是独立的,相互之间基本没有联系,每条命令的成功和失败不会影响其它命令的执行。
假设存在一业务,在转发的上行需要查找某树A,得到一个索引值,然后使用这个索引在下行查找某静态表B得到出接口,然后将报文转发到相应接口。添加树和静态表表项的时候在CP分别封装对应的命令,然后送给NP执行。由于NP执行时会产生错误,例如对树的操作命令执行成功,而对静态表的更新命令执行失败,那么命中这个树叶子的转发数据帧使用叶子中的索引在下行查静态表时就得到了更新前的出接口地址,这个包就被转发到了一个错误的接口。
上面举的只是一个最简单的例子。有很多复杂的业务可能需要查找很多表项,并且这些表项的查找结果相互关联,一旦其中某些表项操作执行失败,那么就会出现控制层面和转发层面的表项不一致,使用这些不一致的表项进行转发会产生各种严重的错误。
其次,当前封装发送给NP的控制帧中包含的路由表项操作都是针对一个表,一个控制帧处理N个表项,N等于控制帧最大内存长度/控制命令长度。处理另外一个表要封装另一个控制帧,从空间概念上来说是纵向的处理表。而实际的一个业务对应多个表,如果新配置一条业务流,现有的纵向处理技术会对应每个表封装一个控制帧,然后发送给NP,一个一个表的处理。
造成内存空间和计算资源的浪费,封装多个控制帧会使用多个buffer(缓存器),处理起来还要经过多次消息通讯,还要解析多个控制帧头。另外,由于不同CPU(Central Processor Unit,中央处理单元),不同内存空间的通讯受环境影响,通讯时延不确定,对每个表的修改存在远超过指令周期的时间差,流量较大时,全部表项更新完毕需要较长时间,转发流程可能在这一瞬间发生各种错误,可能造成转发已经查到其中的一些表进入其它流程,而后续表格没有更新,于是在这个流程中发生错误。

发明内容
本发明实施例提供一种以事务方式在NP端进行表项管理,针对每种业务建立事务,解决NP和CP中的转发表项不一致和当前只能纵向管理表项的问题。
本发明实施例提供了一种路由表项的管理方法,包括以下步骤网络处理器接收控制处理器发送的以事务为单位的扩展控制帧;所述网络处理器执行所述以事务为单位的扩展控制帧中的携带路由表项的命令;当一个事务中的任一命令执行失败时,则所述事务中携带路由表项的命令全部不执行。
本发明实施例还提供了一种路由表项的管理系统,包括控制处理器和网络处理器;所述控制处理器,用于设置以事务为单位的扩展控制帧;所述网络处理器,用于接收所述控制处理器发送的以事务为单位的扩展控制帧后,执行所述以事务为单位的扩展控制帧中的携带路由表项的命令,当一个事务中的任一命令执行失败时,将所述事务中携带路由表项的命令全部不执行。
本发明实施例还提供了一种实现路由表项管理的网络处理器,包括命令执行检测单元、原路由表项信息缓存单元和路由表项管理单元;所述原路由表项信息缓存单元,用于存储所述命令执行前原路由表项信息;所述命令执行检测单元,用于检测控制帧命令是否执行成功;所述路由表项管理单元,用于检测到命令执行失败时,恢复原路由表项信息。
与现有技术相比,本发明实施例具有以下优点本发明实施例解决了由于路由表项下发错误导致的控制层面和转发层面不一致问题。另外,本发明实施例将路由表项添加从纵向改为横向的事务,解决了路由表项添加上的时差问题,同时也减少了控制帧数量,节省了内存和计算资源的消耗。


图1是现有技术中网络处理器结构图;图2是现有技术中网络处理器与控制处理器连接关系图;图3是本发明一种路由表项的管理方法实施例流程图;图4是现有技术中控制帧结构图;图5是本发明实施例中以事务为单位的扩展后控制帧结构图;图6是本发明实施例中控制头结构图;图7是本发明实施例中控制帧命令结构图;图8是本发明实施例另一路由表项的管理方法流程图;图9是本发明实施例一种实现路由表项管理的系统结构图。
具体实施例方式
本发明通过对控制帧结构的扩展,在CP封装控制帧时设置相应标记,NP执行命令时对相应标记特殊处理,对某种业务需要的全部路由表项打包作为一个事务,实现事务的性质,即所有在事务中的命令要么全部成功执行,要么一个也不执行。
本发明实施例提供了一种路由表项的管理方法,如图3所示,包括以下步骤步骤s301,网络处理器接收控制处理器发送的以事务为单位的扩展控制帧。
现有控制帧结构,如图4所示,包括控制帧头、控制帧命令1、……、控制帧命令n、控制帧尾。扩展后的控制帧如图5所示首先以事务为单位的扩展控制帧头部,增加一个事务标记位tran/notran(带下划线的表示0,不带下划线的表示1,下同),为1时标记此控制帧为事务控制帧,为0时为原来的控制帧,具体位置图6所示。
然后对控制帧命令进行扩充,增加三个标记位第一个lst/notlst标记位作为事务的首个控制命令标记;第二个done/raw作为是否已处理的标记;第三个keep/del标记位作为此命令保持/删除标记,具体图7所示这3个标记位在CP封装控制帧时设置,首先如果需要封装事务控制帧,要将控制帧头的事务标记位置1,然后将事务1的所有相关控制命令顺序放在一起,第一个命令的lst标记位置1,done标记位NP使用,封装时均保持0即可,如果某个命令对应的路由表项可能被多个其它路由表项使用或者此路由表项即使存在也没有影响的话可以将keep标记位置1;往后还可以顺序放置事务2、事务3直至事务N的所有命令组;最后放置控制帧结束字段。
步骤s302,网络处理器执行以事务为单位的扩展控制帧中的携带路由表项的命令,即提取控制帧命令中的路由表项,并进行转发、存储等操作。
步骤s303,当某一个事务中的任意命令执行失败时,则该事务中的携带路由表项的命令全部不执行。即将已执行成功的命令对应的网络处理器中路由表项退至执行前状态,例如将添加的路由表项删除、将更新的路由表项退回、及将删除的路由表项恢复;或将所有受影响的命令对应的网络处理器中的路由表项删除。如果将已执行成功的命令对应的路由表项退至执行前状态的过程中出现错误,则将所有受影响的命令对应的路由表项删除。另外,将已执行成功的命令对应的路由表项退至执行前状态具体包括先保存控制命令的内存地址,并将原路由表项信息复制到网络处理器的寄存器中;当命令执行失败时,将缓存的原路由表项信息替换控制命令中对应字段。
步骤s303中对以事务为单位的扩展控制帧的处理流程是根据事务原子性进行的,如果在某事务处理中发生错误,对该事务中的命令全部都不执行。实现方式分两步将已经成功执行的命令对应的路由表项回退至执行前的状态,即将添加的路由表项删除、更新的路由表项回退、删除的路由表项恢复;如果又出现错误,那么就将事务中的keep标记为0的所有命令对应的路由表项从头到尾全部执行一遍删除操作。设置keep标记主要是考虑到事务中的某些路由表项可能还在其他事务中使用,直接简单的删除掉可能导致其他事务支持的流不能够正常转发,此命令对应的路由表项不执行删除操作。
本发明另一实施例如图8所示,包括以下步骤步骤s801,网络处理器收到控制处理器发送的控制帧命令后,判断该控制帧头部的tran标记位是否为1,如果是,则为事务控制帧,转步骤s802,否则按原有控制帧处理流程进行。
步骤s802,按照原有控制帧头处理流程对事务控制帧进行处理。
步骤s803,网络处理器判断命令是否为控制帧结束,如果是,则控制帧完成流程,否则转步骤s804。
步骤s804,判断控制帧命令lst标记位是否为1,如果是,则转步骤s805,否则转步骤s806。
步骤s805,保存此控制命令内存地址。
步骤s806,将原路由表项信息复制到NP向量寄存器中缓存起来。
步骤s807,执行该命令,即提取该命令中的路由表项,并进行存储转发等操作。
步骤s808,判断命令执行是否发生错误,如果正确,则转步骤s812,否则转步骤s809。
步骤s809,将缓存的原路由表项信息替换控制命令中的字段。
步骤s810,设置该命令的done标记位为1。
步骤s811,判断下一控制帧命令中lst标记位是否为1,如果是,则转步骤s805,否则,转步骤s803。
步骤s812,取出前面保存的事务首个命令的地址开始执行命令。
步骤s813,判断控制帧命令中keep标记位是否为1,如果是,则转步骤s816,否则转步骤s814。
步骤s814,判断控制帧命令中done是否为1,如果是,则转步骤s815,否则转步骤s816。
步骤s815,开始复用原有相反流程执行控制命令。其中复用原有相反流程执行控制命令的步骤中如果又出现错误,可以使用保存的事务的首个命令指针再次遍历事务命令组,将其中的路由表项全部删除。
相反流程的含义见表1


当事务执行发生错误后,构造控制帧将错误码和事务号返回给CP,以便上层软件的路由表项状态和NP保持一致。上层软件可以选择再次下发事务或者其他处理方法,以此机制来实现事务的一致性。
步骤s816,判断下一控制帧命令中lst标记位是否为1,如果是,则转步骤s811,否则转步骤s817。
步骤s817,取得下一命令地址,并转步骤s813。
本发明实施例提供了一种路由表项的管理系统,如图9所示,包括控制处理器100和网络处理器200。其中控制处理器100用于设置以事务为单位的扩展控制帧;网络处理器200用于接收所述控制处理器发送的以事务为单位的扩展控制帧后,执行所述以事务为单位的扩展控制帧中的携带路由表项的命令,当一个事务中的任一命令执行失败时,将所述事务中携带路由表项的命令全部不执行。
其中,控制处理器100具体包括事务标记生成单元101、首个控制命令标记生成单元102、命令处理标记生成单元103和保持删除标记生成单元104。其中,事务标记生成单元101用于在控制帧头中生成事务标记;首个控制命令标记生成单元102用于在控制帧命令中标识第一个事务;命令处理标记生成单元103用于标识控制帧命令是否被执行;保持删除标记生成单元104用于表示控制帧命令对应的路由表项是否可以被删除。
其中,网络处理器200具体包括命令执行检测单元201、原路由表项信息缓存单元202、路由表项管理单元203、事务检测单元204和受影响路由表项确定单元205;命令执行检测单元201用于检测某命令是否执行成功或失败;原路由表项信息缓存单元202用于存储命令执行前原路由表项信息,例如将添加的路由表项删除、将更新的路由表项退回、及将删除的路由表项恢复;路由表项管理单元203用于检测到命令执行失败时,恢复原路由表项信息;事务检测单元204用于根据以事务为单位的扩展控制帧中的事务标记位确定事务控制帧。受影响路由表项确定单元205用于确定某个命令对应的路由表项被其它路由表项使用,或该路由表项存在并没有影响。
路由表项管理单元203进一步包括路由表项恢复原状态子单元或路由表项删除子单元;路由表项恢复原状态子单元,用于将所有受影响的路由表项恢复原状态;路由表项删除子单元,用于将所有受影响的路由表项删除。
本发明实施例节省了内存空间和计算资源的浪费,经过一次消息通讯、解析一个控制帧头就可以进行消息处理,减少了全部路由表项更新完毕需要时间。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种路由表项的管理方法,其特征在于,包括以下步骤网络处理器接收控制处理器发送的以事务为单位的扩展控制帧;所述网络处理器执行所述以事务为单位的扩展控制帧中的携带路由表项的命令;当一个事务中的任一命令执行失败时,则所述事务中携带路由表项的命令全部不执行。
2.如权利要求1所述路由表项的管理方法,其特征在于,所述携带路由表项的命令全部不执行具体包括将已执行成功的携带路由表项的命令对应的所述网络处理器中的路由表项退至执行前状态;或将所述网络处理器中所有受影响的路由表项删除。
3.如权利要求2所述路由表项的管理方法,其特征在于,所述将已执行成功的携带路由表项的命令对应的所述网络处理器中的路由表项退至执行前状态具体包括将添加的路由表项删除、将更新的路由表项退回、及将删除的路由表项恢复。
4.如权利要求2所述路由表项的管理方法,其特征在于,所述将已执行成功的携带路由表项的命令对应的所述网络处理器中的路由表项退至执行前状态具体包括先保存控制命令的内存地址,并将原路由表项信息复制到网络处理器的寄存器中;当所述命令执行失败时,将所述缓存的原路由表项信息替换所述命令对应的路由表项。
5.如权利要求2或3所述路由表项的管理方法,其特征在于,如果所述将已执行成功的携带路由表项的命令对应的所述网络处理器中的路由表项退至执行前状态的过程中出现错误,则将所有受影响的路由表项删除。
6.如权利要求1所述路由表项的管理方法,其特征在于,所述以事务为单位的扩展控制帧包括控制帧头、至少一个控制帧命令和控制帧尾;所述控制帧头进一步包括事务标记位,用于标识事务控制帧;所述控制帧命令进一步包括首个控制命令标记、命令处理标记和保持删除标记;所述首个控制命令标记用于标识第一个事务,所述命令处理标记用于标识命令是否被执行,所述保持删除标记用于表示该路由表项是否可以被删除。
7.一种路由表项的管理系统,其特征在于,包括控制处理器和网络处理器;所述控制处理器,用于设置以事务为单位的扩展控制帧;所述网络处理器,用于接收所述控制处理器发送的以事务为单位的扩展控制帧后,执行所述以事务为单位的扩展控制帧中的携带路由表项的命令,当一个事务中的任一命令执行失败时,将所述事务中携带路由表项的命令全部不执行。
8.如权利要求7所述路由表项的管理系统,其特征在于,所述控制处理器具体包括事务标记生成单元、首个控制命令标记生成单元、命令处理标记生成单元和保持删除标记生成单元;所述事务标记生成单元,用于在控制帧头中生成事务标记;所述首个控制命令标记生成单元,用于在控制帧命令中标识第一个事务;所述命令处理标记生成单元,用于标识控制帧命令是否被执行;所述保持删除标记生成单元,用于表示控制帧命令对应的路由表项是否可以被删除。
9.如权利要求7所述路由表项的管理系统,其特征在于,所述网络处理器具体包括命令执行检测单元、原路由表项信息缓存单元和路由表项管理单元;所述原路由表项信息缓存单元,用于存储所述命令执行前原路由表项信息;所述命令执行检测单元,用于检测控制帧命令是否执行成功;所述路由表项管理单元,用于检测到命令执行失败时,恢复原路由表项信息。
10.如权利要求9所述路由表项的管理系统,其特征在于,所述路由表项管理单元进一步包括路由表项恢复原状态子单元或路由表项删除子单元;所述路由表项恢复原状态子单元,用于将所有受影响的路由表项恢复原状态;所述路由表项删除子单元,用于将所有受影响的路由表项删除。
11.如权利要求10所述路由表项的管理系统,其特征在于,所述将所有受影响的路由表项恢复原状态具体包括将添加的路由表项删除、将更新的路由表项退回、及将删除的路由表项恢复。
12.如权利要求10所述路由表项的管理系统,其特征在于,所述网络处理器还包括事务检测单元,用于根据以事务为单位的扩展控制帧中的事务标记位确定事务控制帧。
13.如权利要求10所述路由表项的管理系统,其特征在于,所述网络处理器还包括受影响路由表项确定单元,用于确定某个命令对应的路由表项是否受控制帧命令的影响。
14.一种实现路由表项管理的网络处理器,其特征在于,包括命令执行检测单元、原路由表项信息缓存单元和路由表项管理单元;所述原路由表项信息缓存单元,用于存储所述命令执行前原路由表项信息;所述命令执行检测单元,用于检测控制帧命令是否执行成功;所述路由表项管理单元,用于检测到命令执行失败时,恢复原路由表项信息。
15.如权利要求14所述实现路由表项管理的网络处理器,其特征在于,所述路由表项管理单元进一步包括路由表项恢复原状态子单元或路由表项删除子单元;所述路由表项恢复原状态子单元,用于将所有受影响的路由表项恢复原状态;所述路由表项删除子单元,用于将所有受影响的路由表项删除。
16.如权利要求15所述实现路由表项管理的网络处理器,其特征在于,所述将所有受影响的路由表项恢复原状态具体包括将添加的路由表项删除、将更新的路由表项退回、及将删除的路由表项恢复。
17.如权利要求15所述实现路由表项管理的网络处理器,其特征在于,还包括事务检测单元,用于根据以事务为单位的扩展控制帧中的事务标记位确定事务控制帧。
18.如权利要求15所述实现路由表项管理的网络处理器,其特征在于,还包括受影响路由表项确定单元,用于确定某个命令对应的路由表项是否受控制帧命令的影响。
全文摘要
本发明公开了一种路由表项的管理方法,包括以下步骤网络处理器接收控制处理器发送的以事务为单位的扩展控制帧;所述网络处理器执行所述以事务为单位的扩展控制帧中的携带路由表项的命令;当一个事务中的任一命令执行失败时,则所述事务中携带路由表项的命令全部不执行。本发明还公开了一种路由表项的管理系统及网络处理器。本发明解决了由于路由表项下发错误导致的控制层面和转发层面不一致问题。另外,本发明将路由表项添加从纵向改为横向的事务,解决了路由表项添加上的时差问题,同时也减少了控制帧数量,节省了内存和计算资源的消耗。
文档编号H04L12/56GK101083555SQ20071000253
公开日2007年12月5日 申请日期2007年1月26日 优先权日2007年1月26日
发明者韩冰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1