CN111459938B - 一种表项处理方法、查表方法及系统 - Google Patents
一种表项处理方法、查表方法及系统 Download PDFInfo
- Publication number
- CN111459938B CN111459938B CN202010241296.1A CN202010241296A CN111459938B CN 111459938 B CN111459938 B CN 111459938B CN 202010241296 A CN202010241296 A CN 202010241296A CN 111459938 B CN111459938 B CN 111459938B
- Authority
- CN
- China
- Prior art keywords
- entry
- bit
- sub
- columns
- entries
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2468—Fuzzy queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Automation & Control Theory (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种表项处理方法、查表方法及系统,涉及通信技术领域。表项处理方法包括:将表项的所有条目划入多个子表,并为每个子表生成条目一一对应的抽样表,其中,子表的条目的键值是位宽为M的比特串,抽样表的条目均为从该子表中对应条目的键值的m个特征比特位提取并依序排列的特征比特串,且所有特征比特串均不同,A≤m≤N‑1≤M,A=ceil(log2N),ceil是向上取整函数,N为子表的条目数量,N≥1,m≥1;保存子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系。本发明便于表项的快速查找。
Description
技术领域
本发明涉及通信技术领域,具体是涉及一种表项处理方法、查表方法及系统。
背景技术
三态内容寻址存储器(Ternary Content Addressable Memory,TCAM)技术是近年来出现的一种硬件查找技术,主要用于快速查找访问控制列表(Access Control List,ACL)和路由表等表项,可以实现高速路由查找,满足互联网(Internet)网络节点大量扩增的发展需求。TCAM芯片内部采用并行技术进行条目的键值(Key)的比较,所有条目都可并行访问,相比传统的逐条比对,查询相当快,无论表内有多少条数目,性能都不会减弱,但是TCAM芯片内部的功耗很大,高功耗一直制约着TCAM芯片的发展。同时,TCAM芯片要比相同存储空间的静态随机存取存储器(Static Random Access Memory,SRAM)和动态随机存取存储器(Dynamic Random Access Memory,DRAM)贵很多,性价比不高。在实际应用中,当存储条目非常多时(例如3兆M),TCAM芯片的封装体积较大,价格昂贵,功耗很大,难以达到用户的实际应用需求。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种表项处理方法、查表方法及系统,便于表项的快速查找。
本发明提供一种表项处理方法,其包括:
将表项的所有条目划入多个子表,并为每个子表生成条目一一对应的抽样表,其中,子表的条目的键值是位宽为M的比特串,抽样表的条目均为从该子表中对应条目的键值的m个特征比特位提取并依序排列的特征比特串,且所有特征比特串均不同,A≤m≤N-1≤M,A=ceil(log2N),ceil是向上取整函数,N为子表的条目数量,N≥1,m≥1,M≥1;m、N和M均为正整数,当N=1时,m=1;
保存子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系。
在上述技术方案的基础上,对所述表项的条目进行分组,得到多个初始子表;
对于具有N个条目的初始子表,根据位宽为M的条目的键值构建N行M列的阵列,排除冗余列后得到L个剩余列,冗余列包括所有比特位均相同的列以及与剩余列相同或者等同的列;
如果在L个剩余列中找到m列,其中,L≥A,且m列组成的阵列的每行均不同,则将该初始子表保存为所述子表,将m列作为m个特征比特列,并将m个特征比特列组成的阵列的行作为所述抽样表的条目;否则,重新划分该初始子表的条目。
在上述技术方案的基础上,所述比特串的每个比特位的值为0、1或者x,x为模糊匹配;
所述m个特征比特列优先从不带x的所述剩余列中选择,且m是使得所述m个特征比特列组成的阵列的每行均不同的最小值。
在上述技术方案的基础上,从s=A开始,如果在第一待选列中找到所述m个特征比特列,结束;否则,在第二待选列中查找所述m个特征比特列;其中,第一待选列是不带x且0或者1的数量不超过2s-1的所述剩余列,第二待选列是x的数量不超过s-1且0或者1的数量不超过2s-1的所述剩余列。
在上述技术方案的基础上,所述表项的条目的键值由预定的总数据表和总掩码表计算得到;
在由总数据表和总掩码表计算得到的结果中,确定所述子表的条目的键值的位置,并分别保存总数据表、总掩码表和位置信息;或者,根据所述子表的条目的键值生成第一数据表和第一掩码表并保存;
根据所述抽样表的条目生成第二数据表和第二掩码表并保存。
本发明还提供一种查表方法,其包括:
接收待查找的关键字,关键字为比特串;
在抽样表中查找与关键字的特征比特位匹配的条目,其中,抽样表的条目是由对应的子表的条目的键值的所述特征比特位得到的,子表的条目的键值与关键字具有相同位宽,所述子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系是基于权利要求1至5任一项所述的表项处理方法得到的;
根据所述抽样表中匹配的条目获取对应的所述子表的对应条目,将对应条目的键值与关键字进行逐位比较,并输出匹配结果;
根据所有匹配结果输出最优的匹配结果。
本发明还提供一种表项处理系统,其包括:
处理模块,其用于将表项的所有条目划入多个子表,并为每个子表生成条目一一对应的抽样表,其中,子表的条目的键值是位宽为M的比特串,抽样表的条目均为从该子表中对应条目的键值的m个特征比特位提取并依序排列的特征比特串,且所有特征比特串均不同,A≤m≤N-1≤M,A=ceil(log2N),ceil是向上取整函数,N为子表的条目数量,N≥1,m≥1,M≥1;m、N和M均为正整数,当N=1时,m=1;
存储模块,其用于保存子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系。
在上述技术方案的基础上,所述处理模块用于对所述表项的条目进行分组,得到多个初始子表;对于具有N个条目的初始子表,根据位宽为M的条目的键值构建N行M列的阵列,排除冗余列后得到L个剩余列,冗余列包括所有比特位均相同的列以及与剩余列相同或者等同的列;在L个剩余列中找到m列,且m列组成的阵列的每行均不同后,将该初始子表作为所述子表,将m列作为m个特征比特列,并将m个特征比特列组成的阵列的行作为所述抽样表的条目,其中,L≥A;否则,重新划分该初始子表的条目。
在上述技术方案的基础上,所述比特串的每个比特位的值为0、1或者x,x为模糊匹配;
所述处理模块用于优先从不带x的所述剩余列中选择所述m个特征比特列,且m是使得所述m个特征比特列组成的阵列的每行均不同的最小值。
在上述技术方案的基础上,所述处理模块用于从s=A开始,在第一待选列中查找所述m个特征比特列,如果未找到,则在第二待选列中查找所述m个特征比特列;其中,第一待选列是不带x且0或者1的数量不超过2s-1的所述剩余列,第二待选列是x的数量不超过s-1且0或者1的数量不超过2s-1的所述剩余列。
在上述技术方案的基础上,所述表项的条目的键值由预定的总数据表和总掩码表计算得到;
所述处理模块用于在由总数据表和总掩码表计算得到的结果中,确定所述子表的条目的键值的位置;或者,根据所述子表的条目的键值生成第一数据表和第一掩码表;还用于根据所述抽样表的条目生成第二数据表和第二掩码表;
所述存储模块用于保存总数据表、总掩码表、位置信息、第二数据表和第二掩码表;或者,用于保存第一数据表、第一掩码表、第二数据表和第二掩码表。
本发明还提供一种查表系统:
所述查表系统包括接收模块、选择器以及多个查找模块,每个查找模块均分别连接接收模块和选择器;
所述接收模块用于接收待查找的关键字并传送给所述查找模块,关键字是比特串;
每个所述查找模块均用于保存基于权利要求1至5任一项所述的表项处理方法得到的一个子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系,其中,所述抽样表的条目是由所述子表的条目的键值的特征比特位得到的;还用于当所述子表的条目的键值与关键字具有相同位宽时,在所述抽样表中查找与关键字的特征比特位匹配的条目;根据所述抽样表中匹配的条目获取所述子表的对应条目,将对应条目的键值与关键字进行逐位比较,并输出匹配结果到所述选择器;
所述选择器用于根据所有匹配结果输出最优的匹配结果。
在上述技术方案的基础上,所述查找模块包括启动单元、提取单元、比较单元、缓存单元和匹配单元;
所述启动单元用于根据外部的启动指令,接收所述关键字并分别发送给所述提取单元和匹配单元;
所述提取单元用于存储所述特征比特位,从所述关键字的所述特征比特位提取出待查比特串,并发送给所述比较单元;
所述比较单元用于存储所述抽样表以及所述子表与所述抽样表的条目关系,在所述抽样表中查找与待查比特串匹配的条目,根据所述抽样表中匹配的条目查找所述子表的对应条目的索引,并发送到所述缓存单元;
所述缓存单元用于保存所述子表,根据对应条目的索引获取对应条目的键值并发送给所述匹配单元,以及将对应条目的索引输出到所述选择器;
所述匹配单元用于将对应条目的键值与关键字进行逐位比较,并输出匹配结果到所述选择器。
与现有技术相比,本发明实施例表项处理方法包括:将表项的所有条目划入多个子表,并为每个子表生成条目一一对应的抽样表,其中,子表的条目的键值是位宽为M的比特串,抽样表的条目均为从该子表中对应条目的键值的m个特征比特位提取并依序排列的特征比特串,且所有特征比特串均不同,A≤m≤N-1≤M,A=ceil(log2N),ceil是向上取整函数,N为子表的条目数量,N≥1,m≥1;保存子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系,便于表项的快速查找。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例表项处理方法流程图;
图2是对每个初始子表的处理方法流程图;
图3是从不带x的列中选取特征比特列的一个示例;
图4是从带x的列中选取特征比特列的一个示例;
图5是本发明实施例查表方法流程图;
图6是本发明实施例查表方法的一个应用示例;
图7是本发明实施例表项处理系统示意图;
图8是本发明实施例查表系统示意图;
图9是本发明实施例查表系统的一个示例。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种表项处理方法,表项处理方法包括:
S110将表项的所有条目划入多个子表,并为每个子表生成条目一一对应的抽样表,其中,子表的条目的键值是位宽为M的比特串,抽样表的条目均为从该子表中对应条目的键值的m个特征比特位提取并依序排列的特征比特串,且所有特征比特串均不同,A≤m≤N-1≤M,A=ceil(log2N),ceil是向上取整函数,N为子表的条目数量,N≥1,m≥1,m、N和M均为正整数。当N=1时,m=1。
S120保存子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系。
在实际应用中,表项包括许多条目,每个条目的键值是比特串,待查找的关键字也是比特串,当待查找的关键字与某个条目的键值相同时,即命中(hit)该条目,并按照命中的条目执行相应的操作。
将表项的所有条目划入多个子表时,在一个子表中,条目的键值的位宽均相同。
例如,从报文中提取特定字段或者特定内容作为待查找的关键字,与表项的所有条目进行比较,如果命中,则执行该条目对应的动作,例如报文的转发或丢弃处理、修改报文优先级策略及执行流量限速等。当待查找的关键字匹配多个条目时,则根据条目优先级策略,选定并执行最优的条目。特定字段可以是一个或者二个以上,每个特定字段的位宽可以不同。
具体的,表项可以是内容寻址存储器表项(Content Addressable Memory,CAM),也可以是TCAM表项。
在CAM表项中,条目的键值的比特位为二种状态:“0”和“1”。在TCAM表项中,条目的键值的比特位可使用三种状态:“0”、“1”和“x”(不关注,don’t care)状态,其中,“0”和“1”用于精确匹配,“x”可用于模糊匹配。
TCAM表项是用户查找的数据,包括两张表,一张是数据表,数据表是0和1组成的表;另一张是掩码表,掩码表也是0和1组成的表,其中,0代表不关注,1代表关注,掩码表的条目中为0的比特位即为模糊比特,也即x,为1则对应的比特位便是精确匹配。由数据表和掩码表计算得到整个TCAM表项。
对表项进行分组得到各子表后,从每个子表的条目的键值的特征比特位提取特征比特串,以区分该子表的各条目。关于特征比特串的特征比特位数,如果一个子表的条目总数为N,为完全区分N个条目,特征比特位数的最小值为A=ceil(log2N),其中,ceil(y)表示大于或等于y的最小整数值;特征比特位数的最大值为N-1,而且N-1≤M,即不超过该子表的条目的键值的位宽M。
实际上,特征比特位数多,查找速率并不会显著提升,特征比特位数少,不一定能完全区分各条目。选取特征比特的算法可以遵循数学上的先排除后组合,组合循环选取。
优选的,从最小值A开始,若无法找到特征比特位数为A的特征比特串,则适当增加特征比特位数。一旦能够完全区分该子表内所有条目,即可终止执行,以最快、最先找到最少位数的特征比特。
具体的,对于TCAM表项的查找,先在抽样表中进行硬件查找,只有命中抽样表的条目后,才去访问对应的子表中的对应条目,这样可避免对表项的频繁、无效访问,从而提高对TCAM表项的查找效率。既实现了用户所要求的TCAM表项的快速查找,支持掩码,又达到了大容量、低成本和低功耗的目的。
本发明实施例从各子表的条目的键值中选取一定数量的特征比特依序排列得到特征比特串,通过特征比特串来达到区分该子表内各个条目的目的。将表项划分为多个子表,每个子表的特征比特串构成抽样表,按照子表和抽样表的二级存储,在抽样表中实现快速查找,在子表中实现大容量存储。
在步骤S110中,将表项的所有条目划入多个子表的方式不作限定,例如,可以从表项的第一个条目开始,对条目进行分批处理,每批将一定数量的条目划入一个初始子表并进行处理,当前初始子表处理完成后,得到子表和抽样表并保存;否则,将当前初始子表的条目重新划入新的初始子表,再继续处理下一批,直到所有条目均划入多个子表。
作为一个可选的实施方式,可以将表项的所有条目划入多个初始子表,然后对各初始子表进行并行处理,当所有初始子表处理完毕后,结束。
对每个初始子表的处理方法包括:
S210对于具有N个条目的初始子表,根据位宽为M的条目的键值构建N行M列的阵列,排除冗余列后得到L个剩余列,冗余列包括所有比特位均相同的列以及与剩余列相同或者等同的列。
S220如果在L个剩余列中找到m列,其中,L≥A,且m列组成的阵列的每行均不同,则进入步骤S230;否则,进入步骤S240。
S230将当前初始子表保存为子表,将m列作为m个特征比特列,并将m个剩余列组成的阵列的行作为抽样表的条目。
在m个特征比特列组成的阵列中,每行均为从当前初始子表的条目的键值的m个特征比特位中提取出的依序排列的特征比特串,N个特征比特串为抽样表的N个条目。
S240将当前初始子表的条目重新划入新的初始子表,返回步骤S210。
具体的,可以将当前初始子表拆分为多个新的初始子表,或者,将当前初始子表的所有条目与表项的其他条目一起划入新的初始子表,不作限定。
优选的,比特串的每个比特位的值为0、1或者x,x为模糊匹配。m个特征比特列优先从不带x的剩余列中选择,且m是使得m个特征比特列组成的阵列的每行均不同的最小值。
进一步的,从s=A开始,如果在第一待选列中找到m个特征比特列,结束;否则,在第二待选列中查找m个特征比特列;其中,第一待选列是不带x且0或者1的数量不超过2s-1的剩余列,第二待选列是x的数量不超过s-1且0或者1的数量不超过2s-1的剩余列。
进一步的,表项的条目的键值由预定的总数据表和总掩码表计算得到。
在由总数据表和总掩码表计算得到的结果中,确定子表的条目的键值的位置,并分别保存总数据表和总掩码表和位置信息;或者,根据子表的条目的键值生成第一数据表和第一掩码表并保存。
根据抽样表的条目生成第二数据表和第二掩码表并保存。
本发明实施例表项处理方法通过软件实现,当表项的条目的键值包括掩码时,例如TCAM表项,表项的条目的键值由预定的数据表和掩码表计算得到。各初始子表和子表存储在软件的数组中,条目的键值可包含x。
由于表项查找是在硬件上进行查找,因此在进行表项处理时,根据抽样表的条目生成第二数据表和第二掩码表并保存,第二数据表和第二掩码表都是保存0和1比特串的表,x位置由掩码置0来表示,非x位置掩码置1表示。在硬件上存储抽样表时,仅存储第二数据表和第二掩码表。
在一种实施方式中,可以在由总数据表和总掩码表计算得到的结果中,确定各子表的条目的键值的位置,在硬件上存储各子表时,仅需存储总数据表、总掩码表、以及各子表的条目的键值的位置信息。
在另一种实施方式中,各子表的条目的键值也可以采用抽样表的上述处理方法,在硬件上存储各子表时,存储第一数据表和第一掩码表,用于生成该子表的条目的键值。
以下以TCAM表项为示例进行说明。
先对TCAM表项进行分组,例如可以平均分组,得到多个初始子表。对于具有N个条目的一个初始子表,根据位宽为M的条目的键值构建N行M列的阵列,然后从M列中选取m列,每行的所有比特位均为特征比特,m列即特征比特列,所选出来的特征比特必须是能够完全区分当前初始子表的各条目,并且不能打乱原有的各列的前后顺序。
根据当前的初始子表的条目的键值得到N行M列的阵列。为能区分N行,可选取的特征比特位数的最小值为A=ceil(log2N),可选取的特征比特的最大值B=min{抽样表位宽,N-1}。特征比特位数的初步选取范围为[A,B]。
每列中带x的位是非关注位,所以特征比特的选取可以分为从不带x的列和带x的列中选取两种。
示例性的,图2所示为对每个初始子表的处理方法流程图,具体说明这两种列的选取方法。
S310根据条目的键值构建N行M列的阵列,排除冗余列后得到L个剩余列。
冗余列包括所有比特位均相同的列以及与剩余列相同或者等同的列,冗余列包括整列的所有比特位都相等的列,例如全0、全1以及全x的列,以及,如果至少两列中对应的比特位相同或等同,则其中一列作为剩余列,其余列为冗余列。
具体的,排除M列中全0、全1以及全x的列,整列的比特位都相等,说明列相同。将列与列比较,x位代表该比特位等同,尽量排除含x比较多的相同的冗余列。如果两列都不带x,则尽量排除位于后面的冗余列。
S320判断是否剩余列的数量L<A,如果是,说明当前的剩余列的数量无法满足选取特征比特,需要重新分组,进入步骤S330;否则,进入步骤S340。
S330将当前初始子表的条目重新划入新的初始子表,返回步骤S310。
S340判断是否不带x的剩余列的数量C<A,如果是,说明当前不带x的列无法满足选取特征比特,直接进入步骤380;否则,进入步骤350。
S350从不带x的剩余列中选取m个特征比特列。
S360判断是否选出m个特征比特列,若是,进入步骤S370;否则,进入步骤380。
S370将当前初始子表作为子表,根据当前所选特征比特列构建抽样表,并记录特征比特的位置,结束。
S380从带x的剩余列中选取m个特征比特列。
S390判断是否选出m个特征比特列,若是,进入步骤S370;否则,返回步骤330。
在步骤S350中,可以采用容器法从不带x的剩余列中选取m个特征比特列。具体的,在不带x的剩余列中选取m个特征比特列,特征比特位数范围为[A,D],特征比特位数的最大值D=min{C,B},不带x的剩余列的集合U。
步骤S350包括:
S351从特征比特位数s=A开始,排除集合U中0/1数目>2s-1的列,得到集合U01,U01中的剩余列均为第一待选列,第一待选列的数量为R1。
S352判断是否剩余列的数量R1<A,如果是,则说明当前初始子表中无法选出s个特征比特,进入步骤S353;否则,进入步骤S354。
S353增加特征比特位数s=s+1,返回步骤S351。
具体的,对于每个组合,将首行放入一个容器,余下每一行进入容器前,与容器内所有值进行比较,一旦有相同值,立即放弃当前组合,容器清空,进入下一组合;无相同值则放入容器,直到放入N行,则说明当前组合符合区分N行,s个特征比特成功选出。
S356判断是否s=D,若否,进入步骤S357;否则,说明直到特征比特的最大数量D,依然未选出,则进入步骤S380。
S357增加特征比特位数s=s+1,返回步骤354。
图3所示为从不带x的列中选取特征比特的示意图,其中,图3a为从一个初始子表的条目的键值得到的阵列,该阵列为5行10列,即N=5,M=11,初始子表的每个条目的键值的比特位从左到右的方向依次为Bit0,Bit1,......,Bit10,该阵列的列序号从左到右的方向依次为0,1,......,10。
特征比特位数范围为[A,D],特征比特的最大数量D=min{C,B},特征比特位数的最小值为A=ceil(log25)=3,B=N-1=4。
选取特征比特的步骤包括:
1)排除冗余列:排除全1的列9,列0为10001,列4为10xx1,列4与列0等同,列5与列6等同,列10为00110,列7为00110,列10与列7相同,合法的剩余列={0,1,2,3,6,7,8},剩余列的数量L=7,L>3。
2)合法的剩余列中的非x列的数量C=6>3,优先在非x列中选取特征比特,非x列即不带x的列。
3)非x列的集合U={0,1,2,6,7,8},如果有0/1>22的列,则排除。
4)从S=3个特征比特开始,共有20种组合,对于组合{0,1,2}使用容器法,容器内5个值出现相同值,不符合区分N行(参见图3b),丢弃组合{0,1,2}。
5)对于组合{0,1,6}使用容器法,容器内5个值均不相同,符合区分该初始子表的5行,特征比特选出,特征比特位置为{0,1,6},该初始子表作为一个子表,由特征比特列构成该子表的抽样表(参见图3c)。
若在步骤350中未能成功选取到特征比特,则考虑带x的列在内,在剩余列L中选取特征比特。若N<2A,则特征比特位数的最小值A=A,否则A=A+1。
步骤S380包括:
S381特征比特的最大数量D=min{L,B}。特征比特选取范围为[A,D],所有剩余列的集合U′。从特征比特位数s=A开始,排除集合U′中0/1数量>2s-1的列,排除x数量>s-1的列,得到集合U02,U02中的剩余列均为第二待选列,第二待选列的数量为R2。
S382判断是否剩余列的数量R2<A,如果是,则说明当前初始子表中无法选出s个特征比特,进入步骤S383;否则,进入步骤S384。
S383增加特征比特位数s=s+1,返回步骤381。
具体的,对于每个组合,从首行创建二叉树,0为左节点,1为右节点,x为左右节点都有。余下每一行按序插入到二叉树中,对于当前插入树,若在插入过程中,最底层叶子节点已经存在,说明本行与前面某行有路径重叠,立即放弃当前组合,清除二叉树。进入下一组合,重新建树插树,判断是否有路径重叠。若某组合底层叶子节点无任何重叠,则说明该组合符合区分各行,特征比特选出。
优选的,从不带x的列的组合开始查找s个特征比特。
S386判断是否s=D,若否,进入步骤S387;否则,说明直到特征比特位数的最大值D,依然未选出,则说明当前初始子表无法选出能够完全区分N行的特征比特,返回步骤S330重新分组。
S387增加特征比特位数s=s+1,返回步骤384。
图4所示为从带x的剩余列中选取特征比特的示意图,其中,图4a为从一个初始子表的条目的键值得到的阵列的示意图,该阵列为5行12列,即N=5,M=13,初始子表的每个条目的键值的比特位从左到右的方向依次为Bit0,Bit1,......,Bit12,该阵列的列序号从左到右的方向依次为0,1,......,12。
特征比特位数范围为[A,D],特征比特位数的最大值D=min{L,B},特征比特位数的最小值为A=ceil(log25)=3,B=N-1=4。
选取特征比特的步骤包括:
1)排除冗余列:排除全x的列9,列2、列7、列10与列0等同,列3与列1等同,列6、列8与列5等同,列12与列4等同,排除x的数量多的冗余列,或x的数量相同时位置靠后的冗余列,合法的剩余列的集合U′{0,1,4,5,11},合法的剩余列的数量L=5>3。
2)非x列只有一列{0},C=1,1<3,非x列数不满足非x选取条件,改为考虑从带x的列中选取特征比特。
3)N=5<23,从s=3开始,排除0/1>4,x的数量>2的列{4,11},U02={0,1,5},01x与010有路径重叠,不符。
4)增加s=s+1,s=3+1=4,排除x>3的列,则U02={0,1,4,5,11}。
5)共有5种组合{0,1,4,5},{0,1,4,11},{0,1,5,11},{0,4,5,11}和{1,4,5,11},先从组合{0,1,4,5}开始建树。
6)组合{0,1,4,5}路径重叠,不符合区分(参见图4b)。
7)组合{0,1,4,11}建树,1xx1与1xxx路径重叠,不符合区分初始子表的各条目。
8)组合{0,1,5,11}建树,01xx与010x路径重叠,不符合区分初始子表的各条目。
组合{0,4,5,11},未出现路径重叠,符合区分初始子表的各条目(参见图9)4c),特征比特位置确定为{0,4,5,11},特征比特选出。
上述步骤5)至步骤9)采用建树法,此外,还可以采用容器法,而相比之下,建树法可以避免逐条逐bit进行对比。
参见图5所示,本发明实施例还提供一种查表方法,查表方法包括:
S410接收待查找的关键字,关键字为比特串。
S420在抽样表中查找与关键字的特征比特位匹配的条目,其中,抽样表的条目是由对应的子表的条目的键值的特征比特位得到的,子表的条目的键值与关键字具有相同位宽,子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系是基于前述实施例的表项处理方法得到的。
S430根据抽样表中匹配的条目获取对应的子表的对应条目,将对应条目的键值与关键字进行逐位比较,并输出匹配结果。
S440根据所有匹配结果输出最优的匹配结果。
执行步骤S410之前,首先配置子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系。
需要说明的是,对于不包括掩码的表项,例如CAM表项,直接将各子表存储到指定的存储区域,将抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系分别存储到指定的寄存器。
在步骤S420和S430的比较和查找过程中,对于不包括掩码的表项,按照逐位比较(bit-for-bit)的方式进行精确匹配。
对于包括掩码的表项,例如TCAM表项,在前述实施例的表项处理方法中,根据子表的条目的键值生成第一数据表和第一掩码表,根据抽样表的条目生成第二数据表和第二掩码表。因此,将第一数据表、第一掩码表、第二数据表和第二掩码表分别存储到指定的寄存器。
根据第一数据表和第一掩码表生成子表的条目的键值,根据第二数据表和第二掩码表生成抽样表的条目,在抽样表中查找时,按照第二掩码表中的信息,忽略不关注的比特位,实现模糊匹配。在子表中查找时,按照第一掩码表中的信息,忽略不关注的比特位,实现模糊匹配。
图6所示为本发明实施例查表方法的一个应用示例,其中,子表和抽样表均为图4中得到的,特征比特位为{0,4,5,11}。待查找的关键字为0101000101011,从关键字中提取的特征比特位为:0001,命中抽样表的条目的索引(index)为:index=1,命中条目为00xx,然后获取子表中的对应条目(即index=1)的键值为:01010xxxxx0xx,将对应条目的键值与关键字逐位比较,并输出匹配结果,匹配结果包括命中的子表的对应条目的索引(index)以及匹配信号(Hit=1)。
参见图7所示,本发明实施例还提供一种表项处理系统,表项处理系统包括处理模块和存储模块。
处理模块用于将表项的所有条目划入多个子表,并为每个子表生成条目一一对应的抽样表,其中,子表的条目的键值是位宽为M的比特串,抽样表的条目均为从该子表中对应条目的键值的m个特征比特位提取并依序排列的特征比特串,且所有特征比特串均不同,A≤m≤N-1≤M,A=ceil(log2N),ceil是向上取整函数,N为子表的条目数量,N≥1,m≥1。
存储模块用于保存子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系。
作为一个可选的实施方式,处理模块用于对表项的条目进行分组,得到多个初始子表;对于具有N个条目的初始子表,根据位宽为M的条目的键值构建N行M列的阵列,排除冗余列后得到L个剩余列,冗余列包括所有比特位均相同的列以及与剩余列相同或者等同的列;在L个剩余列中找到m列,且m列组成的阵列的每行均不同后,将该初始子表作为子表,将m列作为m个特征比特列,并将m个剩余列组成的阵列的行作为抽样表的条目,其中,L≥A;否则,重新划分该初始子表的条目。
进一步的,比特串的每个比特位的值为0、1或者x,x为模糊匹配。
处理模块用于优先从不带x的剩余列中选择m个特征比特列,且m是使得m个特征比特列组成的阵列的每行均不同的最小值。
优选的,处理模块用于从S=A开始,在第一待选列中查找m个特征比特列,如果未找到,则在第二待选列中查找m个特征比特列;其中,第一待选列是不带x且0或者1的数量不超过2s-1的剩余列,第二待选列是x的数量不超过S-1且0或者1的数量不超过2s-1的剩余列。
优选的,表项的条目的键值由预定的总数据表和总掩码表计算得到。
处理模块用于在由总数据表和总掩码表计算得到的结果中,确定子表的条目的键值的位置;或者,根据子表的条目的键值生成第一数据表和第一掩码表;还用于根据抽样表的条目生成第二数据表和第二掩码表。
存储模块用于保存总数据表、总掩码表、位置信息、第二数据表和第二掩码表;或者,用于保存第一数据表、第一掩码表、第二数据表和第二掩码表。
参见图8所示,本发明实施例还提供一种查表系统,查表系统包括接收模块、选择器以及多个查找模块,每个查找模块均分别连接接收模块和选择器。
接收模块用于接收待查找的关键字并传送给查找模块,关键字是比特串。
每个查找模块均用于保存基于前述实施例表项处理方法得到的一个子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系,其中,抽样表的条目是由子表的条目的键值的特征比特位得到的;还用于当子表的条目的键值与关键字具有相同位宽时,在抽样表中查找与关键字的特征比特位匹配的条目;根据抽样表中匹配的条目获取子表的对应条目,将对应条目的键值与关键字进行逐位比较,并输出匹配结果到选择器。
选择器用于根据所有匹配结果输出最优的匹配结果。
作为一个可选的实施方式,查找模块包括启动单元、提取单元、比较单元、缓存单元和匹配单元。
启动单元用于根据外部的启动指令,接收关键字并分别发送给提取单元和匹配单元。
提取单元用于存储特征比特位,从关键字的特征比特位提取出待查比特串,并发送给比较单元。
比较单元用于存储抽样表以及子表与抽样表的条目关系,在抽样表中查找与待查比特串匹配的条目,根据抽样表中匹配的条目查找子表的对应条目的索引,并发送到缓存单元。
缓存单元用于保存子表,根据对应条目的索引获取对应条目的键值并发送给匹配单元,以及将对应条目的索引输出到选择器。
匹配单元用于将对应条目的键值与关键字进行逐位比较,并输出匹配结果到选择器。
在实际应用时,TCAM表项的查找分为两个阶段:表项处理阶段和条目查找阶段。表项处理阶段是软件实现,为各子表选取特征比特列,存储各抽样表,条目查找阶段是在硬件上实施查找抽样表和表项。
在表项处理阶段,前述实施例表项处理方法通过选取特征比特算法,得到各子表、对应的抽样表、特征比特位以及条目索引对应关系。例如对于3×1024×1024条目,首先,将全部的条目存储到大样本空间。所有条目按顺序平均分为n组,将已经分配完毕的n组条目以组为单位,分别选取各组的特征比特,每组即为一个初始子表。
查找引擎需要装载表项处理得到的所有子表、对应的抽样表、特征比特位以及条目索引对应关系,查找引擎包括多个查找模块,每个查找模块用于一个子表的查找。每个查找模块包括多个寄存器和存储区域,例如用于存储特征比特位的寄存器,用于存储抽样表的寄存器,用于存储子表的存储区域,并需要保证抽样表和子表的条目索引映射关系。
具体的,设于外部的控制器通过查找引擎中的寄存器配置通路,控制查找引擎配置各寄存器和表项配置的写入过程。
配置完成后,查找引擎可以进入条目查找阶段,在条目查找阶段,查找引擎独立运行,接收输入的待查找的关键字,进行查找操作,并输出匹配信息和匹配的地址。
查找操作包括:根据各子表的特征比特位提取比特串,与对应的抽样表的条目进行比较,命中(Hit)抽样表的条目后,才会去访问子表的对应条目,取出对应条目的键值与关键字一一匹配,并返回相应的匹配结果。
当多个子表的条目的键值与关键字位宽相同时,查找引擎接收到待查找的关键字后,相应的查找模块同时启动查找操作,按各子表的特征比特位提取比特串,在抽样表中查找,并输出匹配的条目索引信息(index)。根据匹配的条目索引信息可读取子表的对应条目,将子表的对应条目和关键字进行匹配比较,并将匹配信息输出到该查找模块的匹配线(Match Line)上,同时,命中(Hit)的子表的对应条目的匹配地址通过匹配地址线输出到选择器。若抽样表没有匹配的条目,证明对应的子表没有匹配的条目,无需访问子表。
在存在多个组匹配的情况下,选择器根据预设的优先级规则,选择出最优的一个匹配条目。若在匹配过程中出现访问表项的条目并未及时返回时,则将传递此错误情况至搜索的发起者。
图9所示为本发明实施例查表系统的一个示例,根据特征比特位组合实现TCAM表项查找的硬件总体框架,包括n个查找模块,分别为查找模块1到查找模块n。
每个查找模块主要包含启动单元、提取单元、比较单元、缓存单元和匹配单元。
启动单元,主要是用来激活此查找模块进行查找操作,可控制查找模块是否进行查找操作,这样可有效调控参与查找的查找模块数量,降低功耗。默认情况下,一旦查找操作启动时,所有查找模块同时开始查找,将接收的待查找的关键字分别发送给提取单元和匹配单元。
提取单元中设有用于存储特征比特位的寄存器以及移位寄存器,用于按特征比特位从关键字(具有w比特位,w bits)提取特征比特,这些特征比特在经过移位寄存器的处理后,合并为比特串(sw bits),并送至比较单元。
比较单元中设有用于存储抽样表的寄存器,接受比特串(sw bits),并与抽样表的条目进行比较,若有命中,根据此命中条目的索引信息得到子表的对应条目的地址信息,并传递给缓存单元。否则,不必访问缓存单元,该查找模块无命中。在此比较过程中,比特串(sw bits)与抽样表的条目可按照bit-for-bit的方式进行精确匹配,也可按照寄存器存储的第二掩码表中的信息,忽略部分不关注的比特位,实现模糊匹配。如果掩码表全是1,则进行精确匹配;若掩码表含0,为0的比特位进行模糊匹配。
缓存单元保存子表,根据子表的对应条目的地址信息,读取存储数据,送到匹配单元。
匹配单元对子表的对应条目和关键字进行比较,由于抽样表的所有条目均不同,若抽样表中有命中条目,则仅读取子表的一个条目,并输出比较结果。在此比较过程中,两组信息可按照bit-for-bit的方式进行精确匹配,也可按照匹配单元中用于存储第一掩码表的寄存器中的信息,忽略部分不关注的比特位,实现模糊匹配。匹配结果输出至匹配线上,将匹配地址信息发送至匹配地址线上,送至选择器。
选择器从多个查找模块输出的匹配信号选择出最优的匹配选项。由于在多个查找模块中对同一关键字可能存在同时命中的现象,在此过程中,选择器需要根据相应优先级规则进行选择,例如按最小地址选择。选择器输出的数据包括索引和匹配信号,例如,对应条目的地址=缓存单元的基地址+索引。
例如当收到一条待查找的ACL或者路由信息时,所有查找模块同时开始查找操作,根据各查找模块的命中情况,选择器输出最后的匹配信号。
本发明在选取特征比特的基础上,利用前述实施例所示的表项处理方法和查找方法,能够实现基于自研的TCAM查找,并相应实现了大容量、快速查找、支持掩码、低功耗、低成本的TCAM查找目标。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。
Claims (13)
1.一种表项处理方法,其特征在于,其包括:
将表项的所有条目划入多个子表,并为每个子表生成条目一一对应的抽样表,其中,子表的条目的键值是位宽为M的比特串,抽样表的条目均为从该子表中对应条目的键值的m个特征比特位提取并依序排列的特征比特串,且所有特征比特串均不同,A≤m≤N-1≤M,A=ceil(log2N),ceil是向上取整函数,N为子表的条目数量,N≥1,m≥1,M≥1;m、N和M均为正整数,当N=1时,m=1;所述表项为CAM表项或TCAM表项,在TCAM表项中,条目的键值的比特位使用三种状态:0、1和x,其中,0和1用于精确匹配,x用于模糊匹配,且x表示不关注;
保存子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系。
2.如权利要求1所述的表项处理方法,其特征在于:
对所述表项的条目进行分组,得到多个初始子表;
对于具有N个条目的初始子表,根据位宽为M的条目的键值构建N行M列的阵列,排除冗余列后得到L个剩余列,冗余列包括所有比特位均相同的列以及与剩余列相同或者等同的列;
如果在L个剩余列中找到m列,其中,L≥A,且m列组成的阵列的每行均不同,则将该初始子表保存为所述子表,将m列作为m个特征比特列,并将m个特征比特列组成的阵列的行作为所述抽样表的条目;否则,重新划分该初始子表的条目。
3.如权利要求2所述的表项处理方法,其特征在于:
所述比特串的每个比特位的值为0、1或者x,x为模糊匹配;
所述m个特征比特列优先从不带x的所述剩余列中选择,且m是使得所述m个特征比特列组成的阵列的每行均不同的最小值。
4.如权利要求3所述的表项处理方法,其特征在于:
从s=A开始,如果在第一待选列中找到所述m个特征比特列,结束;否则,在第二待选列中查找所述m个特征比特列;其中,第一待选列是不带x且0或者1的数量不超过2s-1的所述剩余列,第二待选列是x的数量不超过s-1且0或者1的数量不超过2s-1的所述剩余列。
5.如权利要求3所述的表项处理方法,其特征在于:
所述表项的条目的键值由预定的总数据表和总掩码表计算得到;
在由总数据表和总掩码表计算得到的结果中,确定所述子表的条目的键值的位置,并分别保存总数据表、总掩码表和位置信息;或者,根据所述子表的条目的键值生成第一数据表和第一掩码表并保存;
根据所述抽样表的条目生成第二数据表和第二掩码表并保存。
6.一种查表方法,其特征在于,其包括:
接收待查找的关键字,关键字为比特串;
在抽样表中查找与关键字的特征比特位匹配的条目,其中,抽样表的条目是由对应的子表的条目的键值的所述特征比特位得到的,子表的条目的键值与关键字具有相同位宽,所述子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系是基于权利要求1至5任一项所述的表项处理方法得到的;
根据所述抽样表中匹配的条目获取对应的所述子表的对应条目,将对应条目的键值与关键字进行逐位比较,并输出匹配结果;
根据所有匹配结果输出最优的匹配结果。
7.一种表项处理系统,其特征在于,其包括:
处理模块,其用于将表项的所有条目划入多个子表,并为每个子表生成条目一一对应的抽样表,其中,子表的条目的键值是位宽为M的比特串,抽样表的条目均为从该子表中对应条目的键值的m个特征比特位提取并依序排列的特征比特串,且所有特征比特串均不同,A≤m≤N-1≤M,A=ceil(log2N),ceil是向上取整函数,N为子表的条目数量,N≥1,m≥1,M≥1;m、N和M均为正整数,当N=1时,m=1;所述表项为CAM表项或TCAM表项,在TCAM表项中,条目的键值的比特位使用三种状态:0、1和x,其中,0和1用于精确匹配,x用于模糊匹配,且x表示不关注;
存储模块,其用于保存子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系。
8.如权利要求7所述的表项处理系统,其特征在于:
所述处理模块用于对所述表项的条目进行分组,得到多个初始子表;对于具有N个条目的初始子表,根据位宽为M的条目的键值构建N行M列的阵列,排除冗余列后得到L个剩余列,冗余列包括所有比特位均相同的列以及与剩余列相同或者等同的列;在L个剩余列中找到m列,且m列组成的阵列的每行均不同后,将该初始子表作为所述子表,将m列作为m个特征比特列,并将m个特征比特列组成的阵列的行作为所述抽样表的条目,其中,L≥A;否则,重新划分该初始子表的条目。
9.如权利要求8所述的表项处理系统,其特征在于:
所述比特串的每个比特位的值为0、1或者x,x为模糊匹配;
所述处理模块用于优先从不带x的所述剩余列中选择所述m个特征比特列,且m是使得所述m个特征比特列组成的阵列的每行均不同的最小值。
10.如权利要求9所述的表项处理系统,其特征在于:
所述处理模块用于从s=A开始,在第一待选列中查找所述m个特征比特列,如果未找到,则在第二待选列中查找所述m个特征比特列;其中,第一待选列是不带x且0或者1的数量不超过2s-1的所述剩余列,第二待选列是x的数量不超过s-1且0或者1的数量不超过2s-1的所述剩余列。
11.如权利要求9所述的表项处理系统,其特征在于:
所述表项的条目的键值由预定的总数据表和总掩码表计算得到;
所述处理模块用于在由总数据表和总掩码表计算得到的结果中,确定所述子表的条目的键值的位置;或者,根据所述子表的条目的键值生成第一数据表和第一掩码表;还用于根据所述抽样表的条目生成第二数据表和第二掩码表;
所述存储模块用于保存总数据表、总掩码表、位置信息、第二数据表和第二掩码表;或者,用于保存第一数据表、第一掩码表、第二数据表和第二掩码表。
12.一种查表系统,其特征在于:
所述查表系统包括接收模块、选择器以及多个查找模块,每个查找模块均分别连接接收模块和选择器;
所述接收模块用于接收待查找的关键字并传送给所述查找模块,关键字是比特串;
每个所述查找模块均用于保存基于权利要求1至5任一项所述的表项处理方法得到的一个子表、抽样表、特征比特位、以及子表与抽样表之间的条目索引对应关系,其中,所述抽样表的条目是由所述子表的条目的键值的特征比特位得到的;还用于当所述子表的条目的键值与关键字具有相同位宽时,在所述抽样表中查找与关键字的特征比特位匹配的条目;根据所述抽样表中匹配的条目获取所述子表的对应条目,将对应条目的键值与关键字进行逐位比较,并输出匹配结果到所述选择器;
所述选择器用于根据所有匹配结果输出最优的匹配结果。
13.如权利要求12所述的查表系统,其特征在于:
所述查找模块包括启动单元、提取单元、比较单元、缓存单元和匹配单元;
所述启动单元用于根据外部的启动指令,接收所述关键字并分别发送给所述提取单元和匹配单元;
所述提取单元用于存储所述特征比特位,从所述关键字的所述特征比特位提取出待查比特串,并发送给所述比较单元;
所述比较单元用于存储所述抽样表以及所述子表与所述抽样表的条目关系,在所述抽样表中查找与待查比特串匹配的条目,根据所述抽样表中匹配的条目查找所述子表的对应条目的索引,并发送到所述缓存单元;
所述缓存单元用于保存所述子表,根据对应条目的索引获取对应条目的键值并发送给所述匹配单元,以及将对应条目的索引输出到所述选择器;
所述匹配单元用于将对应条目的键值与关键字进行逐位比较,并输出匹配结果到所述选择器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010241296.1A CN111459938B (zh) | 2020-03-30 | 2020-03-30 | 一种表项处理方法、查表方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010241296.1A CN111459938B (zh) | 2020-03-30 | 2020-03-30 | 一种表项处理方法、查表方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459938A CN111459938A (zh) | 2020-07-28 |
CN111459938B true CN111459938B (zh) | 2023-02-28 |
Family
ID=71679437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010241296.1A Active CN111459938B (zh) | 2020-03-30 | 2020-03-30 | 一种表项处理方法、查表方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459938B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112769703A (zh) * | 2021-02-09 | 2021-05-07 | 芯河半导体科技(无锡)有限公司 | 一种高效的基于sram的tcam实现方法 |
CN113672654B (zh) * | 2021-08-20 | 2023-08-18 | 平安银行股份有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604337A (zh) * | 2009-07-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
CN107967219A (zh) * | 2017-11-27 | 2018-04-27 | 北京理工大学 | 一种基于tcam的大规模字符串高速查找方法 |
-
2020
- 2020-03-30 CN CN202010241296.1A patent/CN111459938B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604337A (zh) * | 2009-07-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
CN107967219A (zh) * | 2017-11-27 | 2018-04-27 | 北京理工大学 | 一种基于tcam的大规模字符串高速查找方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111459938A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160342662A1 (en) | Multi-stage tcam search | |
US8295286B2 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
US8200686B2 (en) | Lookup engine | |
US8949574B2 (en) | Low power, hash-content addressable memory architecture | |
EP1808987B1 (en) | Longest prefix matching using tree bitmap data structures | |
US8625604B2 (en) | Hash-based prefix-compressed trie for IP route lookup | |
US7437354B2 (en) | Architecture for network search engines with fixed latency, high capacity, and high throughput | |
Waldvogel et al. | Scalable high-speed prefix matching | |
CN102333036B (zh) | 一种实现高速路由查找的方法和系统 | |
CN111459938B (zh) | 一种表项处理方法、查表方法及系统 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
US20140358886A1 (en) | Internal search engines architecture | |
US7478109B1 (en) | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes | |
US7222129B2 (en) | Database retrieval apparatus, retrieval method, storage medium, and program | |
JP2003256265A (ja) | 検索メモリ、メモリ検索用コントローラ、メモリ検索方法 | |
US6708168B2 (en) | Method and apparatus for searching a data stream for character patterns | |
CN112256704A (zh) | 一种快速join方法、存储介质及计算机 | |
US9703484B2 (en) | Memory with compressed key | |
US10795580B2 (en) | Content addressable memory system | |
CN101211346A (zh) | 一种优化存储器性能的方法 | |
CN107707479B (zh) | 五元组规则的查找方法及装置 | |
US20160105363A1 (en) | Memory system for multiple clients | |
KR101587756B1 (ko) | 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 | |
CN110334251B (zh) | 一种有效解决rehash冲突的元素序列生成方法 | |
CN112115312B (zh) | 数据名查找方法、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |