Tcam共享存储方法及装置的制作方法

文档序号:7609150阅读:185来源:国知局
专利名称:Tcam共享存储方法及装置的制作方法
技术领域
本发明涉及一种三态内容可寻址存储器(Ternary Content AddressableMemory, 简称TCAM)共享存储方法及装置,属于以太网技术领域。
背景技术
以太网三层交换机需要通过路由表来实现路由功能。其中的路由表中存放了若干条路由信息,每一条路由信息包括路由前缀和路由下一跳地址,每一个路由前缀又包括IP 地址和掩码。现有技术中通常采用TCAM来存储路由前缀。图1为现有技术中IPv4路由前缀在TCAM中的存储位置示意图,如图所示,一个 IPv4路由前缀存储在TCAM中的一个表项中,TCAM是一种顺序查找的存储器,一般遵行先列后行的查找顺序。现有技术中在进行路由匹配时遵循最长前缀匹配原则,即选择掩码长度最长的那条路由前缀,因此,在TCAM中需要按照一定的顺序约束关系来存储IPv4路由前缀,使得掩码的长度越长,相应的IPv4路由前缀的存储位置越靠前,具体方法在本发明中不做详细介绍。在现有的TCAM中并非只用于存储IPv4路由前缀,还用于存储其他数据,例如 用于支持多协议标签交换(Multi-Protocol Label Switching,简称MPLS)技术的标签 (Label)前缀和支持IPv6技术的IPv6路由前缀等。其中,IPv6路由前缀与IPv4路由前缀类似,仍然有存储顺序的要求,而标签前缀则没有。但是,IPv6路由前缀和标签前缀与IPv4 路由前缀的共同区别在于,他们在TCAM中所占用的表项数量不同。图2为现有技术中IPv4 路由前缀与标签前缀在TCAM中的共享存储位置示意图,如图所示,现有技术对TCAM的存储空间进行了静态划分,即将一个TCAM划分为路由前缀表和标签前缀表这两部分,分别用于存储IPv4路由前缀和标签前缀,从图中可以看出IPv4路由前缀占用一个TCAM表项,而标签前缀占用一行TCAM表项。现有技术的缺陷在于对TCAM的存储空间进行静态划分后,不同的前缀数据只能使用自己独立的TCAM存储空间,而不能使用其他前缀数据的TCAM存储空间。例如在图2所示举例中,当添加标签前缀时,如果标签前缀表已满,即使路由前缀表中仍有空闲表项也不能用于存储标签前缀,因此造成了空闲资源不能得到有效使用的情况,从而导致资源浪费。

发明内容
本发明提供一种TCAM共享存储方法及装置,用以有效利用TCAM的存储资源。本发明一方面提供一种TCAM共享存储方法,其中包括接收到待存储的前缀数据后,将该前缀数据在TCAM中的占用表项数N与所述TCAM 中的空闲表项数M进行比较;当M彡N且N> 1时,判断所述TCAM中是否具有包含连续N个空闲表项的第一可用行;若判断出所述TCAM中具有所述第一可用行,则将N > 1的所述前缀数据存储于所
3述第一可用行中的连续N个空闲表项中。本发明另一方面提供一种TCAM共享存储装置,其中包括接收模块,用于接收待存储的前缀数据;比较模块,用于将接收模块接收到的所述前缀数据在TCAM中的占用表项数N与所述TCAM中的空闲表项数M进行比较;判断模块,用于当比较模块比较出M彡N且N > 1时,判断所述TCAM中是否具有包含连续N个空闲表项的第一可用行;存储模块,用于当判断模块判断出所述TCAM中具有所述第一可用行时,将N > 1 的所述前缀数据存储于所述第一可用行中的连续N个空闲表项中。本发明通过判断TCAM中是否具有包含连续N个空闲表项的第一可用行,若判断出所述TCAM中具有所述第一可用行,则将N > 1的所述前缀数据存储于所述第一可用行中的连续N个空闲表项中,从而实现了不同长度前缀数据在TCAM中的动态共享存储,避免了 TCAM存储资源的浪费,提高了 TCAM的有效利用率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中IPv4路由前缀在TCAM中的存储位置示意图;图2为现有技术中IPv4路由前缀与标签前缀在TCAM中的共享存储位置示意图;图3为本发明所述TCAM共享存储方法实施例的流程图;图4为使用图3后IPv4路由前缀与标签前缀在TCAM中共享存储位置的举例示意图;图5为图3所示方法中步骤220的可选流程图;图6为本发明所述TCAM共享存储装置实施例的结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图3为本发明所述TCAM共享存储方法实施例的流程图,如图所示,该方法包括如下步骤步骤100,接收到待存储的前缀数据后,将该前缀数据在TCAM中的占用表项数N与所述TCAM中的空闲表项数M进行比较,当M彡N且N > 1时执行步骤200,当M彡N且N = 1时执行步骤300,当M < N时,存储失败。其中,所述占用表项数N是指如果所述前缀数据能够成功存储在TCAM中,则其在 TCAM中所占用的表项数量。例如,如果接收到的前缀数据为IPv4路由前缀,则N= 1,表
4明占用一个表项;如果接收到的前缀数据为标签前缀,则N = 4表明占用四个表项;另外, IPv6路由前缀也属于N > 1的前缀数据。当M < N时,表明TCAM当前没有足够的空闲表项用于存储接收到的前缀数据,因此存储失败。步骤200,判断所述TCAM中是否具有包含连续N个空闲表项的第一可用行,若判断出所述TCAM中具有所述第一可用行,则执行步骤210,否则若判断出所述TCAM中不具有所述第一可用行,则执行步骤220。步骤210,将N> 1的所述前缀数据存储于所述第一可用行中的连续N个空闲表项中。例如,如图4所示,假设在前述步骤100中接收到的待存储的前缀数据为N = 4的标签前缀2,在此之前,TCAM中已经存储有N = 1的路由前缀1 4及标签前缀1。假如在步骤200中判断出所述TCAM中具有第一可用行(在图4中为箭头所指的行),则将该标签前缀2存储在该行中。通过判断TCAM中是否具有包含连续N个空闲表项的第一可用行,若判断出所述 TCAM中具有所述第一可用行,则将N > 1的所述前缀数据存储于所述第一可用行中的连续 N个空闲表项中,从而实现了不同长度前缀数据在TCAM中的动态共享存储,避免了 TCAM存储资源的浪费,提高了 TCAM的有效利用率。另外,若判断出所述TCAM中不具有所述第一可用行,则可以进一步采取如下措施步骤220,将包含至少一个空闲表项的行中已存储的前缀数据删除,以形成第二可用行。其中,所述第二可用行是指在进行调整前包含空闲表项,但所包含的连续空闲表项的数量不足N个,而在进行调整后才达到连续N个空闲表项的行。例如可以先从包含至少一个空闲表项的行中选出空闲表项数最多的行作为备选行,然后再将所述备选行中已存储的前缀数据删除,以形成第二可用行。包含的空闲表项数越多,需要删除的前缀数据的个数越少,从而在下述步骤MO 中存储回所述TCAM中剩余空闲表项中的前缀数据也就越少,因此,优先选择空闲表项数最多的行作为备选行以形成第二可用行更有利于减少整个存储过程的工作量,以减轻操作负担。步骤230,将N> 1的所述前缀数据存储于所述第二可用行中的连续N个空闲表项中。经过上述步骤220的调整后形成的第二可用行中也包含连续N个空闲表项,从而可以用于存储所述前缀数据。步骤M0,将被删除的所述前缀数据重新添加到所述TCAM中剩余的空闲表项中。具体地,如果被删除的所述前缀数据没有顺序约束关系,则可以在所述TCAM中剩余的空闲表项中任选一个空闲表项进行存储;如果被删除的所述前缀数据为IPv4路由前缀,则可以根据所述IPv4路由前缀的掩码长度,将该IPv4路由前缀重新添加到所述TCAM 中剩余的一个空闲表项中,使得该IPv4路由前缀与所述TCAM中已存储的IPv4路由前缀满足预设的顺序约束关系。具体的添加方法为现有技术,此处不再赘述。步骤300,将所述前缀数据存储在所述TCAM中的一个空闲表项中。
5
具体地,如果接收的所述前缀数据没有顺序约束关系,则可以在所述TCAM中任选一个空闲表项进行存储;如果接收的所述前缀数据为IPv4路由前缀,则可以根据所述IPv4 路由前缀的掩码长度,将该IPv4路由前缀存储在所述TCAM中的一个空闲表项中,使得该 IPv4路由前缀与所述TCAM中已存储的IPv4路由前缀满足预设的顺序约束关系。本实施例所述方法通过对前缀数据进行删除和重新添加,使TCAM可以空出连续N 个空闲表项以存储N> 1的前缀数据,从而实现了不同长度前缀数据在TCAM中的动态共享存储,避免了 TCAM存储资源的浪费,提高了 TCAM的有效利用率。以下详细说明上述步骤220的可选实施例方式,如图5所示,该步骤220可以包括步骤221,判断所述TCAM中是否具有包含N-n个空闲表项的第η备选行,其中,η 为整数,η从1开始,且1 < η < N,若所述TCAM中具有所述第η备选行,则执行步骤222, 否则若所述TCAM中不具有所述第η备选行,则执行步骤223。步骤222,将所述第η备选行中已存储的η个N= 1的前缀数据删除,以形成所述
第二可用行。步骤223,令η = η+1,并返回执行步骤221,继续判断所述TCAM中是否具有包含 N-n个空闲表项的第η备选行,直至形成所述第二可用行。例如,假设在前述步骤100中接收到的待存储的前缀数据为N = 4的标签前缀,则在上述步骤221中先判断所述TCAM中是否具有包含连续N-I个空闲表项的第一备选行,如果具有第一备选行,则在步骤222中将所述第一备选行中已存储的一个N= 1的前缀数据删除,以形成所述第二可用行。否则若所述TCAM中不具有所述第一备选行,则执行步骤223,令η = 2,并返回执行步骤221继续判断所述TCAM中是否具有包含连续Ν-2个空闲表项的第二备选行,如果具有第二备选行,则在步骤222中将所述第二备选行中已存储的两个N = 1的前缀数据删除, 以形成所述第二可用行。否则若所述TCAM中不具有所述第二备选行,则执行步骤223,令η = 3,并返回执行步骤221继续判断所述TCAM中是否具有包含连续Ν-3个空闲表项的第三备选行,如果具有第三备选行,则在步骤222中将所述第三备选行中已存储的三个N = 1的前缀数据删除, 以形成所述第二可用行。由于在前述步骤100中已经判断出M > N,即表明TCAM当前有足够的空闲表项用于存储接收到的前缀数据,因此,至少存在第一备选行、第二备选行或第三备选行,因此也就一定能够形成包含连续N个空闲表项的第二可用行。从上述过程中可以看出,η越小,需要删除的N= 1的前缀数据的个数越少,从而在步骤MO中存储回所述TCAM中剩余空闲表项中的前缀数据也就越少,因此,按照η从小到大的顺序逐一尝试形成所述第二可用行更有利于减少整个存储过程的工作量,以减轻操作负担。图6为本发明所述TCAM共享存储装置实施例的结构示意图,能够实现上述各方法实施例,如图所示,该TCAM共享存储装置10至少包括接收模块11、比较模块12、判断模块 13及存储模块14,其工作原理如下接收模块11接收到待存储的前缀数据后,由将比较模块12将该接收模块11接收到的所述前缀数据在TCAM中的占用表项数N与所述TCAM中的空闲表项数M进行比较;当比较模块12比较出M < N时,存储失败;当比较模块12比较出M彡N且N = 1时,由存储模块14将所述前缀数据存储在所述TCAM中的一个空闲表项中;当比较模块12比较出M > N 且N > 1时,继续由判断模块13判断所述TCAM中是否具有包含连续N个空闲表项的第一可用行。通过判断TCAM中是否具有包含连续N个空闲表项的第一可用行,若判断出所述 TCAM中具有所述第一可用行,则将N > 1的所述前缀数据存储于所述第一可用行中的连续 N个空闲表项中,从而实现了不同长度前缀数据在TCAM中的动态共享存储,避免了 TCAM存储资源的浪费,提高了 TCAM的有效利用率。另外,若判断模块13判断出所述TCAM中具有所述第一可用行时,则可以进一步由存储模块14将N> 1的所述前缀数据存储于所述第一可用行中的连续N个空闲表项中,具体的举例可参见图4及其相关内容。另外,如图6所示,该TCAM共享存储装置10中还可以进一步包括调整模块15和添加模块16。当判断模块13判断出所述TCAM中不具有所述第一可用行时,由调整模块15 将包含至少一个空闲表项的行中已存储的前缀数据删除,以形成第二可用行。其中,所述第二可用行是指在进行调整前包含空闲表项,但所包含的连续空闲表项的数量不足N个,而在进行调整后才达到连续N个空闲表项的行。例如可以先从包含至少一个空闲表项的行中选出空闲表项数最多的行作为备选行,然后再将所述备选行中已存储的前缀数据删除,以形成第二可用行。包含的空闲表项数越多,需要删除的前缀数据的个数越少,从而在下述步骤MO 中存储回所述TCAM中剩余空闲表项中的前缀数据也就越少,因此,优先选择空闲表项数最多的行作为备选行以形成第二可用行更有利于减少整个存储过程的工作量,以减轻操作负担。此后,由所述存储模块14将N > 1的所述前缀数据存储于由调整模块15形成的所述第二可用行中的连续N个空闲表项中;并由添加模块16将被调整模块15删除的所述前缀数据重新添加到所述TCAM中剩余的空闲表项中。具体的添加方法为现有技术,此处不再赘述。本实施例所述装置通过对占用表项数前缀数据进行删除和重新添加,使TCAM可以空出连续N个空闲表项以存储N > 1的前缀数据,从而实现了不同长度前缀数据在TCAM 中的动态共享存储,避免了 TCAM存储资源的浪费,提高了 TCAM的有效利用率。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1.一种TCAM共享存储方法,其特征在于包括接收到待存储的前缀数据后,将该前缀数据在TCAM中的占用表项数N与所述TCAM中的空闲表项数M进行比较;当M≥N且N > 1时,判断所述TCAM中是否具有包含连续N个空闲表项的第一可用行;若判断出所述TCAM中具有所述第一可用行,则将N > 1的所述前缀数据存储于所述第一可用行中的连续N个空闲表项中。
2.根据权利要求1所述的方法,其特征在于还包括若判断出所述TCAM中不具有所述第一可用行,则将包含至少一个空闲表项的行中已存储的前缀数据删除,以形成第二可用行;将N>1的所述前缀数据存储于所述第二可用行中的连续N个空闲表项中; 将被删除的所述前缀数据重新添加到所述TCAM中剩余的空闲表项中。
3.根据权利要求2所述的方法,其特征在于所述形成第二可用行包括 从包含至少一个空闲表项的行中选出空闲表项数最多的行作为备选行; 将所述备选行中已存储的前缀数据删除,以形成所述第二可用行。
4.根据权利要求1所述的方法,其特征在于当M> N且N= 1时,将所述前缀数据存储在所述TCAM中的一个空闲表项中。
5.根据权利要求4所述的方法,其特征在于当接收的所述前缀数据为IPv4路由前缀时,将所述前缀数据存储在所述TCAM中的一个空闲表项中包括根据所述IPv4路由前缀的掩码长度,将该IPv4路由前缀存储到所述TCAM中的一个空闲表项中,使得该IPv4路由前缀与所述TCAM中已存储的IPv4路由前缀满足预设的顺序约束关系。
6.一种TCAM共享存储装置,其特征在于,包括 接收模块,用于接收待存储的前缀数据;比较模块,用于将接收模块接收到的所述前缀数据在TCAM中的占用表项数N与所述 TCAM中的空闲表项数M进行比较;判断模块,用于当比较模块比较出M彡N且N > 1时,判断所述TCAM中是否具有包含连续N个空闲表项的第一可用行;存储模块,用于当判断模块判断出所述TCAM中具有所述第一可用行时,将N > 1的所述前缀数据存储于所述第一可用行中的连续N个空闲表项中。
7.根据权利要求6所述的装置,其特征在于还包括调整模块,用于当判断模块判断出所述TCAM中不具有所述第一可用行时,将包含至少一个空闲表项的行中已存储的前缀数据删除,以形成第二可用行;添加模块,用于将被调整模块删除的所述前缀数据重新添加到所述TCAM中剩余的空闲表项中;所述存储模块还用于将N > 1的所述前缀数据存储于由调整模块形成的所述第二可用行中的连续N个空闲表项中。
8.根据权利要求6所述的装置,其特征在于所述存储模块还用于当比较模块比较出 M ≥ N且N = 1时,将所述前缀数据存储在所述TCAM中的一个空闲表项中。
全文摘要
本发明提供一种TCAM共享存储方法及装置。其中方法包括接收到待存储的前缀数据后,将该前缀数据在TCAM中的占用表项数N与所述TCAM中的空闲表项数M进行比较;当M≥N且N>1时,判断所述TCAM中是否具有包含连续N个空闲表项的第一可用行;若判断出所述TCAM中具有所述第一可用行,则将N>1的所述前缀数据存储于所述第一可用行中的连续N个空闲表项中。本发明实现了不同长度前缀数据在TCAM中的动态共享存储,避免了TCAM存储资源的浪费,提高了TCAM的有效利用率。
文档编号H04L29/12GK102185756SQ20111006206
公开日2011年9月14日 申请日期2011年3月15日 优先权日2011年3月15日
发明者陈涛 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1