本发明涉及通信技术领域,尤其涉及一种搬移方法和网络设备。
背景技术:
随着网络技术的发展和信息化的不断普及,需要路由器、网关、交换机等网络设备处理的网络流量越来越大,业务规则更新也越来越快,现有网络设备的处理效率和处理灵活性急待提升。
目前,在路由器、网关、交换机等网络设备中常常采用tcam(ternarycontentaddressablememory,三态内容寻址存储器)来存放路由表、acl(accesscontrollist,访问控制列表)等业务表,其中的每一种业务表都按照一定的顺序存储有多个表项,例如acl中可以按照优先级对各表项的存放地址做排布。当需要在已经排布好的表项中插入新的表项或删除已有的表项时,往往就需要对业务表中的表项进行搬移。
现有技术中,通过处理器从tcam中读出需要搬移的某个表项,再由处理器将该表项存放到tcam中的目的地址,然后置原始地址的表项无效,这样搬移一条tcam中的表项就需要处理器下发3条指令,并且,tcam还连接有存放关联数据(associateddata)的存储器,在搬移tcam的一条表项到新的地址之前,需要把该tcam表项对应的关联数据也搬移到存储器中新的地址,而完成搬移关联数据的操作也需要处理器下发1次指令。也就是说,现有技术中完成一次完整的表项搬移需要处理器下发4条指令。
因此,现有技术中在搬移tcam中的表项时就需要处理器与tcam频繁交互,尤其是需要搬移的表项较多时,处理器和tcam的交互会更加的频繁,效率比较低,并且受限于处理器的时钟频率,很难提升搬移表项的速度。
技术实现要素:
本发明实施例提供一种搬移方法和网络设备,用以解决现有技术中搬移tcam中的多个表项时效率低的技术问题。
第一方面,提供一种搬移方法,所述方法包括:
三态内容寻址存储器tcam控制器从处理器接收搬移指令;
基于所述搬移指令,所述tcam控制器对与所述tcam控制器连接的tcam中的多个待搬移表项进行搬移。
在一种可能的实现方式中,所述tcam与一存储器相连,所述存储器中存储有与所述多个待搬移表项一一关联的多个关联数据,所述基于所述搬移指令,所述tcam控制器对与所述tcam控制器连接的tcam中的多个待搬移表项进行搬移,包括:
解析所述搬移指令,以获得所述多个待搬移表项在所述tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,其中a、b、k为非负整数,且a<b;
基于所述多个待搬移表项在所述tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,确定所述多个待搬移表项中每个待搬移表项分别在所述tcam中的原始地址和需要搬移至的目的地址;
根据每个待搬移表项的原始地址和目的地址,搬移所述多个关联数据和所述多个待搬移表项。
在一种可能的实现方式中,所述搬移方向为指向所述tcam中高地址的向上搬移方向,所述基于所述多个待搬移表项在所述tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,确定所述多个待搬移表项中每个待搬移表项分别在所述tcam中的原始地址和需要搬移至的目的地址,根据每个待搬移表项的原始地址和目的地址,搬移所述多个关联数据和所述多个待搬移表项,包括:
确定所述多个待搬移表项中位于存储结束地址b的待搬移表项的目的地址为地址(b+k);
从所述多个待搬移表项中位于存储结束地址b的待搬移表项开始,以原始地址从高到低的顺序,搬移所述多个待搬移表项中的每个待搬移表项及每个待搬移表项的关联数据。
在一种可能的实现方式中,所述搬移方向为指向所述tcam中低地址的向下搬移方向,所述基于所述多个待搬移表项在所述tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,确定所述多个待搬移表项中每个待搬移表项分别在所述tcam中的原始地址和需要搬移至的目的地址,根据每个待搬移表项的原始地址和目的地址,搬移所述多个关联数据和所述多个待搬移表项,包括:
确定所述多个待搬移表项中位于存储起始地址a的待搬移表项的目的地址为地址(a-k);
从所述多个待搬移表项中位于存储起始地址a的待搬移表项开始,以原始地址从低到高的顺序,搬移所述多个待搬移表项中的每个待搬移表项及每个待搬移表项的关联数据。
在一种可能的实现方式中,在所述根据每个待搬移表项的原始地址和目的地址,搬移所述多个关联数据和所述多个待搬移表项之前,所述方法还包括:
确定所述多个待搬移表项中是否存在目的地址超出所述tcam地址范围的待搬移表项;
当为是时,停止执行所述搬移指令。
第二方面,提供一种网络设备,包括处理器,与处理器相连的三态内容寻址存储器tcam控制器,与tcam控制器相连的tcam,其中:
处理器,用于发送搬移指令;
tcam,用于存储表项;
tcam控制器,用于从所述处理器接收搬移指令;基于所述搬移指令,对所述tcam中的多个待搬移表项进行搬移。
在一种可能的实现方式中,所述tcam与一存储器相连,所述存储器中存储有与所述多个待搬移表项一一关联的多个关联数据,所述tcam控制器用于:解析所述搬移指令,以获得所述多个待搬移表项在所述tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,其中a、b、k为非负整数,且a<b;
基于所述多个待搬移表项在所述tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,确定所述多个待搬移表项中每个待搬移表项分别在所述tcam中的原始地址和需要搬移至的目的地址;
根据每个待搬移表项的原始地址和目的地址,搬移所述多个关联数据和所述多个待搬移表项。
在一种可能的实现方式中,所述搬移方向为指向所述tcam中高地址的向上搬移方向,所述tcam控制器用于:
确定所述多个待搬移表项中位于存储结束地址b的待搬移表项的目的地址为地址(b+k);
从所述多个待搬移表项中位于存储结束地址b的待搬移表项开始,以原始地址从高到低的顺序,搬移所述多个待搬移表项中的每个待搬移表项及每个待搬移表项的关联数据。
在一种可能的实现方式中,所述搬移方向为指向所述tcam中低地址的向下搬移方向,所述tcam控制器用于:
确定所述多个待搬移表项中位于存储起始地址a的待搬移表项的目的地址为地址(a-k);
从所述多个待搬移表项中位于存储起始地址a的待搬移表项开始,以原始地址从低到高的顺序,搬移所述多个待搬移表项中的每个待搬移表项及每个待搬移表项的关联数据。
在一种可能的实现方式中,所述tcam控制器还用于:
在根据每个待搬移表项的原始地址和目的地址,搬移所述多个关联数据和所述多个待搬移表项之前,确定所述多个待搬移表项中是否存在目的地址超出所述tcam地址范围的待搬移表项;
当为是时,停止执行所述搬移指令。
在本发明实施例中,处理器通过tcam控制器对tcam中的表项进行搬移,tcam控制器从处理器接收到搬移指令后,可以基于搬移指令对tcam中的多个待搬移表项进行搬移。由于是通过与tcam直接连接的tcam控制器对tcam中的待搬移表项进行搬移,因而处理器不会为每个待搬移表项搬移过程中的每个步骤都发送相应的指令,能够有效减少从处理器接收指令的次数,提高搬移tcam中表项的效率。
进一步地,本发明实施例中,tcam控制器接收到处理器的一条搬移指令就可以搬移多个待搬移表项,而无需处理器为每一条待搬移表项单独发送搬移指令,能够有效减少搬移多个待搬移表项时处理器与tcam控制器的交互次数,提高搬移tcam中表项的效率。
进一步地,由于tcam控制器可以达到较高的时钟频率,所以tcam控制器能够与tcam快速交互,提高了搬移tcam中表项的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中tcam控制器的连接关系示意图;
图2为本发明实施例中搬移方法的流程图;
图3为本发明实施例中tcam控制器的另一种连接关系示意图;
图4为本发明实施例中步骤102的一种流程图;
图5为本发明实施例中网络设备的结构框图;
图6为本发明实施例中网络设备的另一种结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
本发明实施例提供一种搬移方法,该方法可以应用于路由器、网关、交换机等网络设备中。具体来说,网络设备包括交换芯片和处理器,可以在交换芯片上设置tcam和tcam控制器,tcam和tcam控制器也可以位于交换芯片外部。tcam控制器与网络设备中的处理器及tcam相连,tcam控制器与处理器及tcam能够进行数据传输。图1所示为本发明实施例中,tcam控制器与处理器及tcam的连接关系。当然,本发明实施例中的搬移方法也可以应用于其它包括有tcam的电子设备中。
具体来说,tcam控制器可以是具有处理能力的处理芯片,通过tcam控制器,能够控制tcam。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
请参见图2,本发明实施例中的搬移方法的流程描述如下。
步骤101:tcam控制器从处理器接收搬移指令。
本发明实施例中,当处理器需要搬移tcam中的表项时,就可以向tcam控制器发送搬移指令,该搬移指令用于指示tcam控制器搬移存储在tcam中的表项,例如,指示搬移tcam存储的路由表或acl中的表项。
在具体的实施过程中,步骤101中tcam控制器从处理器接收到的搬移指令为一条,也就是说,tcam控制器一次从处理器接收一条搬移指令,当tcam控制器处理完这条搬移指令后,tcam控制器就可以继续从处理器接收新的搬移指令。
步骤102:基于搬移指令,tcam控制器对与tcam控制器连接的tcam中的多个待搬移表项进行搬移。
也就是说,tcam控制器从处理器接收到搬移指令后,基于搬移指令,就可以确定出与tcam控制器连接的tcam中需要搬移的多个待搬移表项,还可以确定出以怎样的搬移方式去搬移这多个待搬移表项,进而,tcam控制器能够以确定出的搬移方式对这多个待搬移表项进行搬移。
本发明实施例中,由于处理器一次需要搬移的待搬移表项通常在地址上是依次排布的,并且tcam中的每个表项通常对应于一条业务规则,因而本发明实施例中对tcam中的多个待搬移表项进行搬移可以看作是对tcam中的规则块进行整体搬移。
本发明实施例中,tcam控制器从处理器接收搬移指令,并且基于这条搬移指令,对tcam中的多个待搬移表项进行搬移。这样,就可以实现一条搬移指令搬移多个待搬移表项的效果,大大减少与处理器的交互次数,提高搬移tcam中表项的速度。
请参见图3,在一种可能的实施方式中,tcam与一存储器相连,存储器中存储有与多个待搬移表项一一关联的多个关联数据。其中与tcam相连的存储器可以是各种类型的存储器,例如可以是sram(staticrandomaccessmemory,静态随机存取存储器)。
步骤102基于搬移指令,tcam控制器对与tcam控制器连接的tcam中的多个待搬移表项进行搬移,可以通过以下三个步骤实现:
第一个步骤:解析搬移指令,以获得多个待搬移表项在tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,其中a、b、k为非负整数,且a<b。
本发明实施例中,tcam控制器接收到搬移指令后,就可以对该条搬移指令进行解析。通过解析得到的参数,可以确定tcam中的哪些表项是需要搬移的待搬移表项,即确定多个待搬移表项;通过解析得到的参数,还可以确定以怎样的搬移方式搬移这多个待搬移表项。
其中,存储起始地址a是表征多个待搬移表项的规则块在tcam中存储的起始地址,即规则块所占地址中的最小地址;存储结束地址b是规则块在tcam中存储的结束地址,即规则块所占地址中的最大地址;搬移方向用于表示多个待搬移表项需要向上搬移还是向下搬,本发明实施例中,确定指向tcam中高地址的方向为向上搬移方向,确定指向tcam中低地址的方向为向下搬移方向,高地址方向的地址值大于低地址方向的地址值,例如a<b,则表明从地址a指向地址b的方向为向上搬移方向,从地址b指向地址a的方向为向下搬移方向;搬移距离k表示多个待搬移表项需要在tcam中移动的距离值。
本发明实施例中,获得多个待搬移表项在tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k的方式有多种。本发明实施例中以其中的两种方式进行举例:
第一种方式,直接从搬移指令中读取获得的。
第二种方式,根据搬移指令直接提供的参数进行计算间接得到的。例如,搬移参数中可以包括存储起始地址a和规则块大小,而通过存储起始地址a和规则块大小,就可以确定存储结束地址b。具体计算方式为,存储结束地址b的地址值为存储起始地址a的地址值与规则块的大小值的和。
第二个步骤:基于多个待搬移表项在tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,确定多个待搬移表项中每个待搬移表项分别在tcam中的原始地址和需要搬移至的目的地址。
其中,每个待搬移表项都具有一个原始地址和一个目标地址,原始地址即待搬移表项被搬移前在tcam中的存储地址,目的地址即待搬移表项需要搬移至的在tcam中的存储地址。
本发明实施例中,由于每个待搬移表项都各自具有独立的存储地址,因而,tcam控制器在搬移多个待搬移表项的过程中,需要对每个待搬移表项进行单独搬移。为了实现每个待搬移表项的单独搬移,就需要确定出每个待搬移表项分别在tcam中的原始地址和需要搬移至的目的地址。
具体来说,在确定每个待搬移表项的原始地址和目的地址时,可以包括多种确定方式,而对于采用何种确定方式本发明实施例不做限制。
第三个步骤:根据每个待搬移表项的原始地址和目的地址,搬移所述多个关联数据和所述多个待搬移表项。
本发明实施例中,在确定了原始地址和目的地址后,就可以根据待搬移表项的原始地址和目的地址,将关联数据和待搬移表项从原始地址搬移到目的地址。在具体的实施过程中,根据每个待搬移表项的原始地址和目的地址,搬移多个关联数据和多个待搬移表项时,同样包括有多种搬移方式,而本发明实施例对于采用何种搬移方式不做限制。
其中,在搬移关联数据时,可以以待搬移表项的存储地址为索引,在存储器中查找对应的关联数据进行搬移,并且,由于关联数据与待搬移表项是一一对应关联的,所以关联数据在存储器中的搬移方式也是与待搬移表项在tcam中的搬移方式对应的。在tcam控制器搬移多个关联数据和多个待搬移表项的过程中,可以是先搬移一个待搬移表项的关联数据,再搬移该待搬移表项,再搬移下一个待搬移表项的关联数据,再搬移该下一个待搬移表项的顺序,直到搬移完最后一个待搬移表项。也就是说,每搬移一个待搬移表项之前,都需要先搬移该待搬移表项的关联数据。
本发明实施例中,在执行步骤102的过程中,可以是先确定了多个待搬移表项中每个待搬移表项的原始地址后和目的地址后,再执行第三个步骤进行搬移;也可以是交替执行第二个步骤和第三个步骤,也就是说,每通过第二个步骤确定一个待搬移表项的原始地址和目的地址后,就通过第三个步骤搬移该待搬移表项及该待搬移表项的关联数据,在搬移完成该待搬移表项及该待搬移表项的关联数据后,再执行第二个步骤,以此循环,直到搬移完成所有的多个关联数据和多个待搬移表。
其中,通过交替执行第二个步骤和第三个步骤以实施步骤102的方式,无须等待确定完所有的原始地址和目的地址就可以开始待搬关联数据和待搬移表项,因而能够减少等待时间,提高搬移表项的效率。
本发明实施例中,在每搬移完成一个待搬移表项后,tcam控制器还可以设置该已完成搬移的待搬移表项的原始地址无效。通过设置该已完成搬移的待搬移表项的原始地址无效,该原始地址就可以用于存放其它的表项。
本发明实施例中,步骤102中获得的搬移方向包括两种,一种搬移方向为指向tcam中高地址的向上搬移方向,另一种搬移方向为指向tcam中低地址的向下搬移方向。
在一种可能的实施方式中,当搬移方向为指向tcam中高地址的向上搬移方向时,基于多个待搬移表项在tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,确定多个待搬移表项中每个待搬移表项分别在tcam中的原始地址和需要搬移至的目的地址,根据每个待搬移表项的原始地址和目的地址,搬移多个关联数据和多个待搬移表项,可以包括如下步骤:
确定多个待搬移表项中位于存储结束地址b的待搬移表项的原始地址为地址b,目的地址为地址(b+k)。
从多个待搬移表项中位于存储结束地址b的待搬移表项开始,以原始地址从高到低的顺序,搬移多个待搬移表项中的每个待搬移表项及每个待搬移表项的关联数据。也就是说,当搬移方向为指向tcam中高地址的向上搬移方向时,从多个待搬移表项中原始地址最大的待搬移表项开始搬移。
本发明实施例中,在确定了位于存储结束地址b的待搬移表项的原始地址和目的地址后,可以从地址b开始,向低地址方向依次确定其它待搬移表项的原始地址和目的地址,以确定出多个待搬移表项中每个待搬移表项的原始地址和目的地址。
在具体的实施过程中,确定其它待搬移表项的原始地址和目的地址时,可以确定某个待搬移表项的原始地址为上一个确定的待搬移表项的原始地址减一,目的地址为上一个确定的待搬移表项的目的地址减一;当然,也可以在确定该待搬移表项的原始地址后,确定该待搬移表项的目的地址为该待搬移表项自身的原始地址加k。
在一种可能的实施方式中,当搬移方向为指向tcam中低地址的向下搬移方向时,基于多个待搬移表项在tcam中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,确定多个待搬移表项中每个待搬移表项分别在tcam中的原始地址和需要搬移至的目的地址,根据每个待搬移表项的原始地址和目的地址,搬移多个关联数据和多个待搬移表项,可以包括如下步骤:
确定多个待搬移表项中位于存储起始地址a的待搬移表项的原始地址为地址a,目的地址为地址(a-k)。
从多个待搬移表项中位于存储起始地址a的待搬移表项开始,以原始地址从低到高的顺序,搬移多个待搬移表项中的每个待搬移表项及每个待搬移表项的关联数据。也就是说,当搬移方向为指向tcam中低地址的向下搬移方向时,从多个待搬移表项中原始地址最小的待搬移表项开始搬移。
本发明实施例中,在确定了位于存储起始地址a的待搬移表项的原始地址和目的地址后,可以从地址a开始,向高地址方向依次确定其它待搬移表项的原始地址和目的地址,以确定出多个待搬移表项中每个待搬移表项的原始地址和目的地址。
在具体的实施过程中,确定其它待搬移表项的原始地址和目的地址时,可以确定某个待搬移表项的原始地址为上一个确定的待搬移表项的原始地址加一,目的地址为上一个确定的待搬移表项的目的地址加一;当然,也可以在确定该待搬移表项的原始地址后,确定该待搬移表项的目的地址为该待搬移表项自身的原始地址减k。
本发明实施例中,针对不同的搬移方向,采用了不同的搬移方式,可以避免搬移多个待搬移表项的过程中待搬移表项相互覆盖的情况,也可以保证搬移后待搬移表项及关联数据的排布顺序不会颠倒。
在一种可能的实施方式中,在根据每个待搬移表项的原始地址和目的地址,搬移多个关联数据和多个待搬移表项之前,tcam控制器还可以确定多个待搬移表项中是否存在目的地址超出tcam地址范围的待搬移表项;当确定结果为是时,停止执行搬移指令。
也就是说,本发明实施例中,在开始搬移待搬移表项之前,还会判断是否存在目的地址越界的情况,即确定多个待搬移表项中是否存在目的地址超出tcam地址范围的待搬移表项,当判断为是时,则停止当前正在执行的搬移指令,停止搬移操作。
举例来说,假设tcam地址范围为0-1024,但是多个待搬移表项中存在目的地址为1500的待搬移表项,这就表明该目的地址越界了,待搬移表项无法被正常地搬移到目的地址,所以需要停止执行搬移指令。
通过在开始搬移待搬移表项之前确定是否存在目的地址越界,能够避免存在越界的目的地址时,导致后续搬移待搬移表项时出现地址错误,进而导致业务表无法正常使用,网络设备运行出错等问题。
为了便于本领域技术人员理解,下面通过一个具体的实施例对本发明实施例中tcam控制器从处理器接收到搬移指令后所执行的步骤102(即,基于搬移指令,tcam控制器对tcam中的多个待搬移表项进行搬移)进行说明。应当说明的是:该具体的实施例仅用以说明本发明实施例中的步骤102,而并非对其限制,所列举的内容仅仅是本发明实施例中步骤102多种可能的实施方式之一。请参见图4,实施过程具体如下:
(1)tcam控制器解析搬移指令,并根据解析结果获得搬移块的存储起始地址、存储结束地址、搬移方向和搬移距离。其中,搬移块为搬移指令指示搬移的多个待搬移表项在tcam中存储形成的数据块。
(2)tcam控制器根据解析结果确定对搬移块进行搬移时的搬移方向。具体来说,本发明实施例中包括两种搬移方向,一种搬移方向为指向tcam中高地址的向上搬移方向,另一种搬移方向为指向tcam中低地址的向下搬移方向。根据搬移方向的不同,分别进入步骤(3.1.1)和步骤(3.2.1)。
(3.1.1)当搬移方向为向上搬移方向时,确定搬移块的最大地址作为搬移原始地址,计算搬移的目的地址。本发明实施例中,搬移块的存储结束地址即为搬移块的最大地址。对于其中计算搬移的目的地址的方式,可以参看本发明实施例中前述的内容,在此不再赘述。
(3.1.2)以原始地址为索引,从与tcam控制器相连的存储器中读出原始地址对应的关联数据,再将读出的关联数据写入到存储器中对应的目的地址。
(3.1.3)读出tcam中位于原始地址的数据,即读出位于原始地址的待搬移表项,再将读出的数据写入到tcam中的目的地址。
(3.1.4)置tcam中的原始地址的表项无效。通过设置该已完成搬移的待搬移表项的原始地址无效,该原始地址就可以用于存放其它的表项。
(3.1.5)在步骤(3.1.4)之后,tcam控制器判断搬移块中的数据是否都搬移完成,即判断搬移指令指示搬移的多个待搬移表项是否均搬移完成。
若判断结果表明未搬移完成,则将当前搬移过程中的原始地址减一,以及将当前搬移过程中的目的地址减一,进而,将流程跳转至步骤(3.1.2),以继续完成下一个待搬移及下一待搬移表项的关联数据的搬移。
若判断结果表明已搬移完成,则结束退出搬移。
(3.2.1)当搬移方向为向下搬移方向时,确定搬移块的最小地址作为搬移原始地址,计算搬移的目的地址。本发明实施例中,搬移块的存储起始地址即为搬移块的最小地址。对于其中计算搬移的目的地址的方式,可以参看本发明实施例中前述的内容,在此不再赘述。
(3.2.2)以原始地址为索引,从与tcam控制器相连的存储器中读出原始地址对应的关联数据,再将读出的关联数据写入到存储器中对应的目的地址。
(3.2.3)读出tcam中位于原始地址的数据,即读出位于原始地址的待搬移表项,再将读出的数据写入到tcam中的目的地址。
(3.2.4)置tcam中的原始地址的表项无效。通过设置该已完成搬移的待搬移表项的原始地址无效,该原始地址就可以用于存放其它的表项。
(3.2.5)在步骤(3.2.4)之后,tcam控制器判断搬移块中的数据是否都搬移完成,即判断搬移指令指示搬移的多个待搬移表项是否均搬移完成。
若判断结果表明未搬移完成,则将当前搬移过程中的原始地址加一,以及将当前搬移过程中的目的地址加一,进而,将流程跳转至步骤(3.2.2),以继续完成下一个待搬移及下一待搬移表项的关联数据的搬移。
若判断结果表明已搬移完成,则结束退出搬移。
在本发明实施例中,tcam控制器从处理器接收到搬移指令后,可以基于搬移指令对tcam中的多个待搬移表项进行搬移。由于是通过与tcam直接连接的tcam控制器对tcam中的待搬移表项进行搬移,因而处理器不会为每个待搬移表项搬移过程中的每个步骤都发送相应的指令,能够有效减少从处理器接收指令的次数,提高搬移tcam中表项的效率。
进一步地,本发明实施例中,tcam控制器接收到的一条搬移指令就可以指示tcam控制器搬移多个待搬移表项,而无需处理器为每一条待搬移表项单独发送搬移指令,能够有效减少搬移多个待搬移表项时处理器与tcam控制器的交互次数,提高搬移tcam中表项的效率。
进一步地,由于tcam控制器可以达到较高的时钟频率,所以tcam控制器能够与tcam快速交互,提高了搬移tcam中表项的速度。
请参见图5,基于同一发明构思,本发明实施例提供一种网络设备,该网络设备可以是路由器、交换机、网关,等等。该网络设备包括处理器201,与处理器201相连的三态内容寻址存储器tcam控制器202,与tcam控制器202相连的tcam203,其中:
处理器201,用于发送搬移指令;
tcam203,用于存储表项;
tcam控制器202,用于从处理器201接收搬移指令;基于搬移指令,对tcam203中的多个待搬移表项进行搬移。
请参见图6,在一种可能的实施方式中,tcam203与一存储器204相连,存储器204中存储有与多个待搬移表项一一关联的多个关联数据,tcam控制器202用于:解析搬移指令,以获得多个待搬移表项在tcam203中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,其中a、b、k为非负整数,且a<b;
基于多个待搬移表项在tcam203中的存储起始地址a、存储结束地址b、搬移方向和搬移距离k,确定多个待搬移表项中每个待搬移表项分别在tcam203中的原始地址和需要搬移至的目的地址;
根据每个待搬移表项的原始地址和目的地址,搬移多个关联数据和多个待搬移表项。
在一种可能的实施方式中,搬移方向为指向tcam203中高地址的向上搬移方向,tcam控制器202用于:
确定多个待搬移表项中位于存储结束地址b的待搬移表项的目的地址为地址(b+k);
从多个待搬移表项中位于存储结束地址b的待搬移表项开始,以原始地址从高到低的顺序,搬移多个待搬移表项中的每个待搬移表项及每个待搬移表项的关联数据。
在一种可能的实施方式中,搬移方向为指向tcam203中低地址的向下搬移方向,tcam控制器202用于:
确定多个待搬移表项中位于存储起始地址a的待搬移表项的目的地址为地址(a-k);
从多个待搬移表项中位于存储起始地址a的待搬移表项开始,以原始地址从低到高的顺序,搬移多个待搬移表项中的每个待搬移表项及每个待搬移表项的关联数据。
在一种可能的实施方式中,tcam控制器202还用于:
在根据每个待搬移表项的原始地址和目的地址,搬移多个关联数据和多个待搬移表项之前,确定多个待搬移表项中是否存在目的地址超出tcam203地址范围的待搬移表项;
当为是时,停止执行搬移指令。
本发明实施例中的网络设备可以是路由器、网关设备、交换机等网络连接设备,也可以是其它需要进行数据交互且具有前述网络连接设备的功能的电子设备,例如手机、平板电脑、个人电脑、笔记本电脑、穿戴式电子设备等电子设备,本发明实施例对于网络设备具体为何种设备不做限定。
处理器201具体可以是cpu(中央处理器),或者可以是asic(applicationspecificintegratedcircuit,特定应用集成电路),或者可以是mpu(microprocessorunit,微处理器)或者可以是一个或多个用于控制程序执行的集成电路,可以是基带芯片,等等。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。