专利名称:用于改善最长前缀匹配的可扩展性的方法和设备的制作方法
技术领域:
本发明涉及用于改善用于执行最长前缀匹配的设备的可扩展性的方法和设备。
背景技术:
最长前缀匹配(LPM)是在数据库中所存储的多个前缀之中寻找与给定查找密钥匹配的最长匹配的问题。可以在许多应用中使用LPM,并且LPM不限于IP路由,但是由于IP 路由是其中一个主要LPM应用,所以将仅通过示例性实例在IP路由的环境中讨论本发明。最通常在网络桥接、路由以及类似的功能中使用前向信息库(FIB)(又被称为前向表格)来寻找这样一种合适的接口,其中输入接口应该向该合适的接口发送将由路由器传输的分组。因此,FIB包含具有对应的输出接口的前缀集合。通过寻找与查找密钥匹配的最长前缀来进行前向判决。目前最常使用的查找密钥是分组的IPv4或IPv6目的地地址。可以利用随机访问存储器(RAM)通过使用诸如M-键树、位图树之类的算法,或者利用诸如三态内容可寻址存储器(TCAM)的快速硬件查找机制,实现FIB或用于执行LPM的其他设备。虽然高级的基于RAM的FIB实现/算法足以保持数百万个前缀,但是在查找密钥宽度看来它们是不可扩展的,因为到FIB存储器的通路的数量取决于查找密钥宽度。通常,密钥越宽则需要越多的查找。另一方面,利用基于TCAM的FIB或LPM实现,查找时间是恒定的。然而,基于TCAM 的FIB或查找表格在前述数量方面而言是不可扩展的。如今已知的最高级的TCAM设备具有40M比特的容量,其可用于保持高达0. 5M个前缀。因此,长期感觉存在对于用于执行在前缀的数量方面和在查找密钥长度方面都可扩展的最长前缀匹配的方法和装置的需求。
发明内容
本发明提出的技术方案是为了通过利用具有相关联的结果RAM的TCAM设备,添加附加RAM并且向代表该附加RAM中的多个条目的TCAM插入条目来改善LPM可扩展性。将要意识到该结构提供具有特定扩展性的LPM查找表,其具有比常规方式更少的TCAM条目。 这样,能够使用更小的TCAM设备或者释放更多的TCAM条目以便有可能被其他应用使用。根据本发明提供了一种用于建立最长前缀匹配查找表的方法,包括在TCAM(三态内容可寻址存储器)中排列多个前缀条目并且向相关联的结果RAM(随机访问存储器)插入与TCAM匹配索引相对应的结果,该方法包括选择能够被减少成该TCAM中的单个条目的至少两个前缀条目的组群,其中单个条目包括用于该组群中的全部前缀条目的公共前缀; 排列来自该相关联的RAM的、由附加RAM中的前缀组群表示的结果;用指向该附加RAM中的多个结果的单个TCAM条目来替换TCAM中的该前缀条目的组群,从而使得该TCAM中的至少一个条目可用;并且由指向该附加RAM中的多个条目的一个条目来替换该相关联的RAM中的多个条目。根据本发明还提供了一种用于执行最长前缀匹配(LPM)查找的方法,该方法包括建立和维持查找表,所述查找表包括TCAM和相关联的结果随机访问存储器(RAM)以及附加 RAM,其中,由该TCAM中的一个条目来表示该附加RAM中的至少两个条目,在该TCAM中执行查找,在该相关联的结果RAM中寻找该TCAM中的指向该附加RAM中的结果组群的的一个条目的结果,并且作为响应,通过读取该附加RAM中的该结果组群来完成该查找。根据本发明还提供了一种基于三态内容可寻址存储器(TCAM)的最长前缀匹配 (LPM)查找表,其包括TCAM,其保持用于查找相关联的RAM中的结果的多个前缀条目;附加随机访问存储器(RAM),其存储来自该相关联的RAM的结果;并且该TCAM中的一个条目,其表示该附加RAM中来自该相关联的RAM的至少两个条目,从而使得该TCAM中的至少一个条目可用。
通过结合附图的以下详细描述将更好地理解并且认识本发明,其中图Ia是根据现有技术,由TCAM条目表示LPM设备条目的示意图;图Ib是根据本发明的一个示例性实施方案,由TCAM和附加RAM条目表示图Ia的 LPM条目的示意图;图加是根据现有技术的另一个实施例,由TCAM条目表示LPM设备条目的示意图;图2b是根据本发明的另一个示例性实施方案,由TCAM和附加RAM条目表示图加的LPM条目的示意图;图3a是根据现有技术的另一个实施例,由TCAM条目表示LPM设备条目的示意图;图北是根据本发明的另一个示例性实施方案,由TCAM和附加RAM条目表示图3a 的LPM条目的示意图。
具体实施例方式本发明涉及一种使用三态内容可寻址存储器(TCAM)(其相关联的随机访问存储器(RAM)用作结果存储器)和附加RAM来执行最长前缀匹配(LPM)以实现比基于TCAM的标准技术方案更好的可扩展性(对于条目的数量)的方法和装置。该方法通过存储与该 TCAM相关联的RAM中的一部分结果数据和该附加RAM中的一部分数据,并且向代表该附加 RAM中的多个条目的TCAM插入条目来改善LPM可扩展性,从而使得在基于TCAM的常规设备中占用的该TCAM条目中可用。在基于TCAM的常规LPM技术方案中,由一个TCAM条目表示每个LPM条目,其中该 TCAM条目指向相关联的结果存储器(该相关联的RAM)中的结果。在本发明中,可以由单个TCAM条目表示LPM条目的组群,其中该单个TCAM条目的前缀是该组群中的全部条目的公共前缀。在该情况中,该相关联的RAM中的相应结果指向附加RAM中的结果数组,其中该附加RAM包含该LPM条目组群中的每个条目的结果。然后可以使用查找密钥的狭窄部分来搜索附加RAM中的条目,从而可以在单个 RAM访问中获得多个结果。这样,在TCAM的查找期间将找到该结果存储器中的一些结果,并且在该附加RAM的后续查找期间将找到其中一些结果。将要认识到,如果需要,则可以提供一个(或多个)其他附加RAM访问,即可以实现多层的RAM数组,每层RAM数组指向持有其结果的一层RAM数组。使用多层RAM的算法可以对于特定尺寸的TCAM和RAM实现LPM条目的更好的可扩展性。该排列的优点在于查找时间,因为将执行多个RAM访问。前缀具有相同的长度M的TCAM条目可以涉及附加RAM中的结果数组,该结果数组包含与该TCAM条目匹配的长度为M+N的全部可能前缀。该数组将包含2N个条目(为与长度为M的特定前缀匹配的长度为M+N的前缀的数量),并且将表示具有长度为M到M+N (含) 的前缀的全部LPM条目,它们与指向该数组的TCAM条目的前缀(长度为M)匹配。当在 TCAM中可以由单个条目来表示LPM条目组群时,结果组群从相关联的结果RAM移动到该附加RAM。其结果在附加RAM中被表示成数组的LPM条目可以从该TCAM去除并且通过指向该相关联的结果RAM中的新的结果的单个条目来替换,其中该新的结果因而指向该附加RAM 中的对应的数组,从而允许用给定的TCAM大小来表示更大的LPM查找表。对应的附加RAM 数组中的后续查找将使用该查找密钥的小得多的部分,即将仅在M至(M+N-1)比特之上,使得可以在附加RAM的单个访问期间获得结果。在相关联的RAM条目中由TCAM查找所指示的结果不再包含原始结果(其现在在附加RAM中)而是包含用于允许真实结果的读取的三个参数——起始比特、步幅大小和基于该查找密钥、起始比特和步幅大小所计算的索引。这些参数指示附加RAM中的该数组的起始位置以及查找密钥的相关比特(例如在FIB中,IP地址的相关比特),其中基于该相关比特在附加RAM中执行查找,其中该起始位置和该相关比特应该用于在附加RAM的数组中获取索引。典型而言,该相关比特是该查找密钥的M至(M+N-1)比特。通过读取附加RAM 中与该数组中被TCAM匹配索引指向的经计算的索引相对应的条目来完成LPM查找。结果地址根据这些值来计算并且从附加RAM存储器获取。如图在常规TCAM查找表中一样,将用于TCAM的未被一起分组到数组中的结果放置到与该TCAM相关联的结果RAM中。可以使用该相关联的结果RAM中的结果中的比特之一来指示(相关联的RAM中的)该结果的其余部分是否是真实结果,或者包含用于指向该附加RAM中的代表真实结果的数组的指针,如上所述。虽然该方法不是强制性的,但是其有助于在结果前缀未被分组到数组中时避免附加的存储器访问。为了本发明的目的,对于具有条目的数组,N是指该数组的步幅大小。因此, 用于指向步幅大小为N的数组的、前缀长度为M的TCAM条目代表长度范围从M到M+N(含) 的多达On-I)个LPM条目。将要认识到,可以支持多个步幅大小,并且在附加RAM中可以共存不同大小的数组。用于负责LPM表格的创建的软件算法还负责辨认用于创建数组的候选前缀并且决定创建新的数组或分解现有数组。即,注意到多个查找密钥仅在最后N个比特不同,所以可以将它们一起结合在单个组群或数组中以便减少TCAM条目的数量。用于选择应该创建哪个数组的一种可能的方法是通过候选数组的“利用率”来优先级化候选数组。在本申请中,将利用率定义为当创建数组时可以减少的TCAM条目数量与数组大小(对于步幅大小为 N的数组而言是2n)之间的比率。当根据利用来优先级化时,例如可能的实施涉及例如使用全局利用门限,从而创建利用率高于特定门限的候选数组,并且分解利用率下降到低于一些其他门限的现有数组,并且单独向TCAM返回它们的LPM条目。由于查找表可以随时间改变,特别是在FIB表的情况中,所以可以在操作期间创建并且分解这些数组。在该示例性的实施中,可以通过使用LPM查找对具体应用执行测试来优化该利用率门限的值,并且该利用率门限的值将受到专用于该算法的可用TCAM大小和可用RAM大小之间的比率高度影响。RAM大小相比于TCAM 大小越大,则可以允许的利用率门限越低。例如,考虑IP路由,测试显示利用2009年4月的因特网转发表格中的因特网IPv4
条目分配,本发明的方法将实现下文的可扩展结果
权利要求
1.一种用于建立最长前缀匹配查找表的方法,包括在三态内容可寻址存储器(TCAM) 中排列多个前缀条目并且向相关联的结果随机访问存储器(RAM)中插入与所述前缀条目的TCAM匹配索引相对应的结果,所述方法包括选择能够被减少成所述TCAM中的单个条目的至少两个所述前缀条目的组群,其中的单个条目包括用于所述组群中的全部前缀条目的公共前缀;排列来自所述相关联的RAM的、由附加RAM中所述前缀组群表示的结果条目; 由指向所述附加RAM中的所述条目的结果条目来替换所述相关联的RAM中的结果条目;并且用指向所述相关联的RAM中的所述结果条目的所述单个TCAM条目来替换所述TCAM中的所述前缀条目组群,从而使得所述TCAM中的至少一个条目可用。
2.如权利要求1所述的方法,还包括将所述附加RAM中的所述多个结果条目排列成数组,其中,所述数组包含与所述单个TCAM条目匹配的全部可能的前缀。
3.如权利要求2所述的方法,还包括通过以下步骤向所述查找表增加新的前缀条目 向所述TCAM增加新的前缀条目;搜索所述附加RAM中与所述新的前缀条目具有公共前缀的数组;并且如果找到所述数组,则将与所述新的前缀条目相对应的结果添加到所述数组中。
4.如权利要求2所述的方法,还包括通过向所述TCAM添加新的前缀条目并且向所述相关联的结果RAM写入与所述新的前缀条目的匹配索引相对应的结果,向所述查找表添加新的前缀条目。
5.如权利要求2所述的方法,还包括通过以下步骤向所述查找表添加新的前缀条目 向所述TCAM输入新的前缀条目;在所述附加RAM中创建新的数组,所述新的数组包含与所述TCAM中的至少一个现有前缀条目的匹配索引相对应的结果以及与所述新的前缀条目的匹配索引相对应的结果; 在所述相关联的RAM中输入指向所述新的数组的新的公共前缀结果; 向所述TCAM中输入所述新的公共前缀以替代所述新的前缀条目。
6.如权利要求5所述的方法,还包括分解与所述新的数组中所包括的前缀相对应的全部现有数组以及全部各自的资源。
7.如权利要求1所述的方法,还包括通过由与所述删除的前缀条目匹配的最长前缀的结果覆盖与所述删除的前缀条目相对应的所述附加RAM中的结果,从所述查找表删除前缀条目。
8.如权利要求1所述的方法,还包括通过使得给定前缀的对应的TCAM条目无效,从所述表中删除前缀; 通过覆盖所述结果RAM条目或附加RAM条目中的旧的结果,更新所述前缀结果。
9.如权利要求1所述的方法,还包括在所述结果RAM中的每个条目中提供一个比特, 用于指示所述条目是否包含查找结果或所述附加RAM中的查找结果的指针。
10.如权利要求1所述的方法,其中所述选择步骤包括选择多于一个组群,所述排列步骤包括将来自每个所述组群的结果排列到所述附加RAM中对应的数组中;所述替换步骤包括用单个TCAM条目替换所述TCAM中的每个所述前缀条目组群;并且替换所述相关联的RAM中的条目的所述步骤包括由指向所述附加RAM中的所述对应的数组的条目来替换所述条目。
11.一种用于执行最长前缀匹配(LPM)查找的方法,所述方法包括 建立并且维护查找表,所述查找表包括三态内容可寻址存储器(TCAM)和相关联的结果随机访问存储器(RAM);以及附加RAM ;其中,由所述TCAM中的一个条目来表示所述附加RAM中的至少两个条目; 在所述TCAM中执行查找;在所述相关联的结果RAM中寻找所述TCAM中的指向所述附加RAM中的结果组群的条目的结果;并且作为响应,通过读取所述附加RAM中的所述结果组群中的条目来完成所述查找。
12.如权利要求11所述的方法,包括执行给定密钥的TCAM查找,以找到TCAM匹配索引;读取与所述TCAM匹配索引相对应的相关联的结果RAM条目,所述结果RAM条目包括起始比特和步幅大小;基于所述查找密钥和来自所述结果RAM条目的所述起始比特和步幅大小计算索引;并且通过读取与所述计算的索引相对应的附加RAM条目,完成所述LPM查找。
13.如权利要求12所述的方法,其中由表键树来表示所述查找表,所述表键树包括在所述TCAM中具有对应的条目的真实节点以及在所述TCAM中没有对应的条目的节点;所述建立和维护步骤还包括向与在所述TCAM中不具有条目的每个节点相对应的所述数组中插入在所述表键树中具有较短前缀并且是真实节点的第一真实节点的结果。
14.如权利要求12所述的方法,其中,所述建立和维护步骤还包括向在所述数组中的多于一个的条目中插入结果。
15.一种基于三态内容可寻址存储器(TCAM)的最长前缀匹配(LPM)查找表,包括 TCAM和相关联的结果随机访问存储器(RAM);以及附加RAM ;其中,由所述TCAM中的一个条目和所述相关联的结果RAM中的一个条目来表示所述附加RAM中的至少两个条目。
16.如权利要求14所述的查找表,其中所述TCAM是保持多个用于查找相关联的RAM中的结果的前缀条目的TCAM ; 所述相关联的RAM存储与所述前缀条目的TCAM匹配索引相对应的结果; 所述附加RAM存储来自所述相关联的RAM的结果;并且所述TCAM中的一个条目表示在所述附加RAM中来自所述相关联的RAM的至少两个条目,从而使得所述TCAM中的至少一个条目可用。
全文摘要
一种基于三态内容可寻址存储器(TCAM)的最长前缀匹配(LPM)查找表包括TCAM,其保持用于查找相关联的RAM中的结果的多个前缀条目,该相关联的RAM存储与TCAM匹配索引相对应的结果;附加的随机访问存储器(RAM),其存储来自该相关联的RAM的结果;以及该TCAM中的一个条目,其表示该附加RAM中来自该相关联的RAM的至少两个条目,从而使得该TCAM中的至少一个条目可用。
文档编号G06F13/00GK102597973SQ201080044870
公开日2012年7月18日 申请日期2010年8月16日 优先权日2009年8月16日
发明者B·施菲, V·米丽阿弗斯凯 申请人:康帕斯电子光学系统有限公司