CN117453733A - 一种基于fpga的tcam快速查询系统 - Google Patents
一种基于fpga的tcam快速查询系统 Download PDFInfo
- Publication number
- CN117453733A CN117453733A CN202311799679.0A CN202311799679A CN117453733A CN 117453733 A CN117453733 A CN 117453733A CN 202311799679 A CN202311799679 A CN 202311799679A CN 117453733 A CN117453733 A CN 117453733A
- Authority
- CN
- China
- Prior art keywords
- tcam
- address
- index
- submodule
- data
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 56
- 238000001334 liquid-phase micro-extraction Methods 0.000 claims abstract description 13
- 230000017105 transposition Effects 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 21
- 239000011159 matrix material Substances 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 11
- 230000009467 reduction Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 11
- 230000011218 segmentation Effects 0.000 description 6
- 230000005055 memory storage Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 241000764238 Isis Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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/24553—Query execution of query operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于FPGA的TCAM快速查询系统,属于网络安全的技术领域,包括:构建最小系统:位宽的TCAM最小系统,在miniTCAM中,进一步对进行分组,以达到进一步减少单个RAM容量。所述miniTCAM包括:TCAM控制单元TCAM_CTL、存储集单元SETRAM、间接索引转置单元IITRAM和最长前缀匹配编码器单元LPME。本发明是基于FPGA实现的TCAM快速查询系统,便于裁剪、移植,以满足不同项目中对查询系统的要求,例如查询内容,带宽,深度,及是否需要掩码。本发明用FPGA来实现TCAM在功耗方面更有优势,方便应用于轻量型的设备中。发明也可应用于网络安全芯片中,查询速率更快,功耗更低。
Description
技术领域
本发明公开一种基于FPGA的TCAM快速查询系统,属于网络安全的技术领域。
背景技术
随着网络安全提出更高的要求,需要部署IPSec系统的场景越来越多,许多边缘的网络节点也有了应用IPSec的需求,轻量型、低功耗、低时延的IPSec系统成为一个新的发展趋势。
传统用于实现检索SPD、SAD数据库的TCAM技术大体分为2类,一类是用软件实现TCAM,一类是直接用TCAM芯片。第一类软件实现TCAM延时大,对CPU的性能要求高,无法做到轻量型、低功耗、低延时,第二类TCAM芯片功耗大、成本高,都无法广泛的应用于网络节点上。
鉴于传统的TCAM实现方法存在各种不足,使用 FPGA 中的逻辑资源和存储资源来构建 TCAM 成为了研究热点。基于 FPGA 的 TCAM 实现方案主要包括3种,分别是基于块存储器( BRAM) 的方案,基于分布式存储器( DRAM) 的方案和基于触发器(FF)的方案。3种方案也各自具有优缺点。BRAM TCAM 主要使用 FPGA 内的块存储器资源构建,具备良好的可扩展性,但是它的工作时钟频率普遍不高; DRAM TCAM 使用 FPGA 内的LUT RAM 资源构建,这种方式相对于BRAM方案的优点是硬件开销较低,但是DRAM方案缺乏可扩展性,它的大规模部署会因为布线复杂度过高而无法实现;FF TCAM使用 FPGA 内的触发器资源构建,在部署规模较小的前提下它具备最高的性能和最低的硬件开销,但是 FF TCAM 和DRAM TCAM一样不具备可扩展性,因为它们都使用 FPGA 内的逻辑资源构建。根据对不同方案的评估与比较得出,在对 TCAM 的部署规模要求较高时,应采用基于BRAM的方案; 而对部署规模要求较低且性能要求较高时,可采用基于FF或DRAM的方案。来源于:黄逍颖,郭志川《基于FPGA 的 TCAM 实现方法综述》,记载于《网络新媒体技术》。
IPSec系统中SAD、SPD的检索属于规模较大的应用场景,所以本发明提出的基于FPGA的TCAM快速查询系统,是基于BRAM和DRAM实现间接索引TCAM(IITAM),兼具可扩展性和高性能等特点。间接索引TCAM(IITAM)的架构参考Abdelhadi A M S的Modular block-RAM-based longest -prefix match ternary content -addressable memories(International Conference on Field Programmable Logic and Applications),但其扩展比较困难,需要调整整个架构的参数。本发明将间接索引TCAM固定成一个最小系统miniTCAM,工程设计中需要应用多少个miniTCAM,由匹配数据的带宽决定,极易扩展,可操作性强。
发明内容
针对现有技术的不足,本发明提出的一种基于FPGA实现的TCAM快速查询系统,用于实现“地址-内容”类型数据库的快速反向检索,以解决轻量型、低功耗、低延时的IPSec研发需求。
TCAM工作原理:CAM是英文Content Addressable Memory的缩写,中文为内容寻址存储器,可在单个时钟周期内搜索某个内存空间以获取特定值,返回匹配地址,是一种大规模并行搜索引擎。TCAM是英文Ternary Content Addressable Memory的缩写,中文是三态内容寻址存储器,是目前最常用的CAM形式,每个bit位的有三种状态,除了“0”或“1”外,还有一个“don’t care”状态,通过掩码来实现,TCAM既可以进行精确匹配查找,又可以进行模糊匹配查找。
内容寻址存储器的原理是将写入的内容wData作为内存的地址,而写入的wAddr作为数据存入内存中,当需要匹配的mData输入到CAM中,其中命名中的m是“match”的意思,将mData作为地址直接读取内存的数据:当有匹配值时,输出的内容就是事先写入的wAddr;当没有匹配值时,输出的内容无效,代表之前在mData为地址的空间中从未写入一个有效的内容。这就是CAM能够在单个周期返回匹配地址的主要原因。在TCAM中引入了掩码wMask的变量,写内存的时候,将作为写入地址,匹配的时候,将/>作为读取地址,其他不变。
本发明涉及的TCAM,具有并行查找、速率快,宽度、深度可灵活配置,低功耗等特点,适用于多种报文格式,不仅可以应用于FPGA实现的小型化网络安全设备,也可应用于网络安全芯片中。
本发明详细的技术方案如下:
一种基于FPGA的TCAM快速查询系统,其特征在于,包括:
写入的内容wData位宽为,写入的地址wAddr的位宽为/>,则TCAM中RAM的深度是/>,当/>和/>足够小时,使用单个RAM就可实现TCAM的功能,但在实际应用中,/>的位宽取值范围比较大,以IPv4版本的IPSec设备为例,网络报文需要提取五元组进行策略查询:源IP地址32bit,目的IP地址32bit,源端口号16bit,目的端口号16bit,协议号8bit,确定对报文的操作是明通、加密还是丢弃,如果采用TCAM快速查找计数,五元组作为wData写入TCAM中,wData的位宽至少是104bit,构建一个深度为/>的RAM几乎是不可能的事情;
构建最小系统:位宽的TCAM最小系统,即miniTCAM,所涉及的miniTCAM是一个宽度为8bit,深度可调的间接索引最长前缀匹配的TCAM最小系统,可以单独使用,也可多组并行使用,针对不同应用场景中TCAM对/>的要求不同,灵活选择多组miniTCAM并行拼接实现,大大减少了RAM资源的消耗,也减少了更改源码参数带来的巨大工作量,TCAM中miniTCAM的个数由/>决定,RAM的深度为:
(1)
在公式(1)中,写入的内容wData位宽为,写入的地址wAddr的位宽为/>,
在miniTCAM中,进一步对进行分组,以达到进一步减少单个RAM容量的目的。
根据本发明优选的,所述miniTCAM包括:TCAM控制单元TCAM_CTL、存储集单元SETRAM、间接索引转置单元IITRAM和最长前缀匹配编码器单元LPME ,如图1所示,其中,wTdata是写入的数据,位宽是为8bit;wTaddr是写入地址,位宽是/>大小可调;wTmask为写入掩码,与wTdata位宽一致;mTdata是需要匹配的输入数据,与wTdata、wTmask位宽一致;Tmatch是输出的是否匹配的标志位,“1”代表匹配,“0”代表不匹配;mTaddr是匹配后输出的地址,与wTaddr位宽一致。
根据本发明优选的,所述TCAM控制单元TCAM_CTL包括:Tcam_Ctl模块,用于控制整个存储和匹配过程的时序及完成计数操作;所述Tcam_Ctl模块包括状态机控制子模块FSM、索引计数子模块Idxcnt和计数器子模块Datacnt,如图2所示;
所述状态机控制子模块FSM采用状态机的形式控制写入和匹配的全过程:输入信号wEn是写入数据的使能信号,是FSM中整个状态机的开始标志;输出信号wEn_setram是存储集单元SETRAM中SetRAM子模块的使能信号;输出信号wEn_cIdx是索引计数子模块Idxcnt的计数使能信号;输出信号rst_cIdx是索引计数子模块Idxcnt复位信号;输出信号wEn_cTdata是计数器子模块Datacnt的计数使能信号;输出信号rst_cTdata是计数器子模块Datacnt复位信号;输入信号cTdatalast是状态机控制子模块FSM的状态机中写操作的结束信号,由cTdata按位取“与”后得到。总体来说,状态机控制子模块FSM除了通过wEn_setram直接控制存储集单元SETRAM外,通过控制索引计数子模块Idxcnt和计数器子模块Datacnt的计数间接控制存储集单元SETRAM和间接索引转置单元IITRAM;
所述索引计数子模块Idxcnt是一个位宽为(-5)的计数器,输出信号cIndx用于为间接索引转置单元IITRAM单元中标识存储模块IndcRAM中的每个不同指示数据setIndc分配不同的索引,指示数据setIndc按位取“或”后与状态机控制子模块FSM的输出信号wEn_cIdx“与”在一起作为计数器的增长使能信号。状态机控制子模块FSM的输出信号rst_cIdx作为计数器的复位信号;
所述计数器子模块Datacnt是位宽为的计数器,在计数的过程中与写入的数据wTdata进行比对,生成指示数据setIndc,因为/>是8bit,输出信号cTdata的计数范围是0~255,状态机控制子模块FSM的输出信号wEn_cTdata作为计数器的增长使能信号,状态机控制子模块FSM的输出信号rst_cTdata作为计数器的复位信号。
根据本发明优选的,所述存储集单元SETRAM包括:存储集子单元SetRAM和比较器子单元Compare,如图3所示;集合而成的RAM矩阵,接收所有写入数据wTdata及写入掩码wTmask,根据地址,存储在RAM矩阵的特定位置,与计数器进行比对后,生成一个指示数据setIndc,标识wTdata和wTaddr的对应关系;
所述存储集单元SETRAM用于处理低位地址TaddrL与wTdata或wTmask的对应关系,高位地址TaddrH放在间接索引转置单元IITRAM处理,存储集子单元SetRAM中对输入信号wTaddr进行分段,分为低位地址TaddrL和高位地址TaddrH。分段处理主要是基于2个原因,其一是为了避免内存膨胀,和并行使用多个miniTCAM是相同的思路,其二是控制指示数据setIndc的有效带宽,防止出现时序问题。
存储集子单元SetRAM子模块由个元素组成的m行n列的最小存储单元矩阵式存储wTdata和wTmask值。n是固定值,取值32。m大小可调,/>。每一个矩阵元素包括一个有效位1bit,一个数据data存储单元,位宽是/>,一个掩码mask存储单元,位宽是/>。
在存储集子单元SetRAM中对输入信号wTaddr进行分段,分为低位地址TaddrL和高位地址TaddrH,由于FPGA中BlockRAM的最小容量是36Kb,综合考虑低位地址TaddrL选择带宽为5bit,即
,
低位地址TaddrL带宽为5bit,指向RAM矩阵的32列;高位地址TaddrH位宽是-5,指向RAM矩阵的/>列;
假设是10bit,wTaddr的取值是0x048,写入数据wTdata是0xab,掩码wTmask是0x3c,低位地址TaddrL和高位地址TaddrH的取值是:
因此wTdata和wTmask存入第2行,第8列(从0计数)的存储单元中,即第2行的。
比较器子单元Compare主要负责对数据进行逻辑计算,一旦新数据存入存储集子单元SetRAM,在比较器子单元Compare中与cTdata完整集做对比,生成指示数据setIndc,如果和从存储集子单元SetRAM读取的数据/>相等,且数据有效,则指示数据setIndc的相应位置“1”。
还以wTaddr是0x048,写入数据wTdata是0xab,掩码wTmask是0x3c为例,按照图3所示,只处理RAM矩阵的每列的状态,则指示数据setIndc的位宽是32bit。由于,在/>的位置,指示数据setIndc取值是0x00000100(即从低位开始数的第8位),标记低位地址TaddrL有效地址的位置,即在cTdata计数到0x28,0x29,0x2a,0x2b,0x68,0x69,0x6a,0x6b,0xa8,0xa9,0xaa,0xab,……,0x1a8,0x1a9,0x1aa,0x1ab等24个数时,指示数据setIndc取值0x00000100,其他计数下,指示数据setIndc全部为0,代表并没有数值写入,见图4。
根据本发明优选的,所述间接索引转置单元IITRAM包括gn个索引存储模块IndxRAM和gm*gn个标识存储模块IndcRAM,框图如图5所示;
索引存储模块IndxRAM用于存储索引计数器cIndx和cTdata的关系,标识存储模块IndcRAM存储指示数据setIndc和索引计数器cIndx的对应关系,这也是间接索引转置IITRAM的由来。
在匹配的过程中,mTdata作为IndxRAM的读地址,读取到的数据恰好是标识存储模块IndcRAM的读地址,将读取的标识存储模块IndcRAM的指示数据setIndc进行拼接,生成匹配指示数组mIndc,位宽是。
IITRAM单元设计思想与SETRAM单元类似,对高位地址TaddrH继续分段,用分段的地址控制IndxRAM和标识存储模块IndcRAM的数量,防止出现内存膨胀和时序问题,即gm和gn的大小由高位地址TaddrH分段决定。
假设高位地址TaddrH分段后成为高位地址低位部分TaddrHL和高位地址高位部分TaddrHH,a的大小由实际应用场景来决定:
索引存储模块IndxRAM用于存储索引计数器cIndx和cTdata的关系。对每一个索引存储模块IndxRAM编号为gj(gj=0,1,2,…,(gn-1))。IndxRAM(gi)的写使能由gj是否等于高位地址高位部分TaddrHH来决定,也就是当TaddrHH=1时,ndxRAM(1)写使能有效。IndxRAM(gi)的写数据是存储索引计数器cIndx。IndxRAM(gi)的写地址是cTdata和高位地址低位部分TaddrHL拼接而成,cTdata在高位,高位地址低位部分TaddrHL在低位。IndxRAM(gi)的读地址是mTdata,读出的数据indx(gi)的位宽是,也就是由mTdata=cTdata时,遍历地址TaddrHL取值从0~(/>-1)所对应的索引计数器cIndx拼接而成。虽然读数据indx(gi)更宽了,但从低到高,每(/>-5)bit值都和高位地址低位部分TaddrHL一一对应。总体来说,indx是一个有gn个元素,且标记计数器cTdata和高位地址TaddrH对应关系的索引数组。
标识存储模块IndcRAM用于存储指示数据setIndc和索引计数器cIndx的对应关系。标识存储模块IndcRAM是一个gm行gn列的存储单元矩阵。对每一个标识存储模块IndcRAM编号为(gi,gj),其中gi=0,1,2,…,(gm-1);gj=0,1,2,…,(gn-1)。IndcRAM(gi,gj)的写地址存储索引计数器cIndx,写数据是指示数据setIndc,写使能是由gj是否等于TaddrHH且gj是否等于高位地址低位部分TaddrHL来决定,也就是TaddrHH=1,且TaddrHL=1时,IndcRAM(1,1)写使能有效,往地址cIndx写入指示数据setIndc。IndcRAM(gi,gj)读地址是indx[gi][gj*5 +: 5],也就是mTdata=cTdata时,indx数组中与gi,gj对应的索引值,而IndcRAM(gi,gj)读数据就是与索引值对应的指示数据setIndc。gm行gn列的标识存储模块IndcRAM的读数据拼接而成位宽是的匹配指示数组mIndc,其中只有满足mTdata=cTdata,gj=TaddrHH,且gj=TaddrHL对应的标识存储模块IndcRAM输出有效的指示数据setIndc,其他的字段都为0。
mTdata匹配的地址就是匹配指示数组mIndc中置“1”的位置。假设是10bit,已存入miniTCAM中的6个数据及地址关系如表1所示,当mTdata=0x40时, 6个地址的数据都可以匹配,则匹配指示数组mIndc的值见图6。
IITRAM单元中IndxRAM和标识存储模块IndcRAM的数量由高位地址TaddrH分段决定。IndxRAM的数量由高位地址高位部分TaddrHH决定,即,每个IndxRAM对应的标识存储模块IndcRAM数量由高位地址高位部分TaddrHH决定,即/>,标识存储模块IndcRAM的总数量是
在IITRAM单元中,IndxRAM和标识存储模块IndcRAM的数目取决的位宽:
的最小值是5,此时不存在高位地址TaddrH,指示数据setIndc与匹配指示数组mIndc相等;
当时,a取值为1,即需要1个IndxRAM,标识存储模块IndcRAM的数目是个;
当时,a取值为/>,IndxRAM的数目是/>个,标识存储模块IndcRAM的数目是/>个。
不难看出,IndxRAM和标识存储模块IndcRAM的资源占用是随着增大呈指数级增长,在实际应用中,选择查询的条目/>的时候,要根据技术需求和硬件资源统筹考虑。
根据本发明优选的,所述最长前缀匹配编码器单元是最长前缀匹配编码器,用于给定一个匹配指示数组和一个前缀长度数组,将查找最长的前缀匹配的位置。在本发明中前缀长度就是掩码中有效的长度,以表1中前2行的wTmask举例:
表1TCAM中存入数据实例
在表1中,第一个wTmask=0xff的前缀长度是8bit,第2个wTmask=0xfe的前缀长度是7bit。最长前缀匹配编码器单元LPME作用就是在所有匹配项中,以前缀长度作为衡量标准,查找最优匹配值。
最长前缀匹配编码器单元LPME的输入接口是IITRAM单元输出的匹配指示数组mIndc,输出接口是Tmatch匹配标志位Tmatch和最优匹配地址mTaddr。
匹配指示数组mIndc的位宽是,假设n=/>,Tmaskn是n个wTmask的掩码集合,Tmatch是1bit的标志位,标识是否匹配,mTaddr带宽为/>的最优匹配地址。输出结果见以下公式,其中i,j是大于等于0,小于n的整数:
Tmatch是匹配指示数组mIndc的所有位取“或”,如果Tmatch为“1”,代表有匹配的值。mTaddr是匹配指示数组mIndc中所有数值为“1”的位置中wTmask最长的地址。
最长前缀匹配编码器单元LPME在计算最优匹配地址时,采用的是递归的方法:
在递归的第一层,位宽为的匹配指示数组mIndc被分割成/>个相等的片段,每一个片段包含2bit的匹配指示数组mIndc内容。将每个片段送到最小的编码器Encoder,进行处理,处理的过程主要包括有效位的检测及前缀长度的比较。输出的信号包括一个有效标志信号Valid,一个标记高低位有效的信号Bin。如果Valid为“0”,代表不存在有效位;如果Valid为“1”,Bin为“1”,代表高位有效;如果Valid为“1”,Bin为“0”,代表低位有效。在这一层中共例化/>个Encoder编码器,共产生/>个Valid,和Bin信号。
在递归的第二层,将个Valid分割成/>个相等的片段,每一个片段包含相邻的2个1bit的Valid,再将每个片段送到编码器Encoder中,进行处理,输出的信号进行整合,输出1bit的Valid和2bit的Bin。Valid标记是否有效,Bin标记有效的地址。如果Valid为“0”,代表不存在有效位;如果Valid为“1”,Bin为“3”,代表第一层中2个相邻的片段4bit的匹配指示数组mIndc内容中第3位是有效位。在这一层中共例化/>个Encoder编码器,共产生/>个Valid、Bin信号。
在递归的第三层,将个Valid分割成/>个相等的片段,每一个片段包含相邻的2个1bit的Valid,再将每个片段送到编码器Encoder中,进行处理,输出的信号进行整合,输出1bit的Valid和3bit的Bin。Valid标记是否有效,Bin标记有效的地址。如果Valid为“0”,代表不存在有效位;如果Valid为“1”,Bin为“7”,代表第一层中4个相邻的片段8bit的匹配指示数组mIndc内容中第7位是有效位。在这一层中共例化/>个Encoder编码器,共产生/>个Valid、Bin信号。
以此类推,在递归的第层,只剩2个Valid信号,只需要1个编码器Encoder进行处理,输出的信号进行层层整合后,输出1bit的Valid和/>bit的Bin,此时的Valid等于Tmatch,而Bin等于mTaddr,也就是最终结果。
以表1中的数值关系为例,如果mTdata=0x40,如图6所示,匹配指示数组mIndc中有6个位置数值是“1”,则Tmatch=1,然后再比较6个数值中wTmask的长度,其中地址0x020中的wTmask=0xff是最长前缀,所以mTaddr=0x020 。
本发明的技术优势
1、本发明是基于FPGA实现的TCAM快速查询系统,便于裁剪、移植,以满足不同项目中对查询系统的要求,例如查询内容,带宽,深度,及是否需要掩码。
2、本发明支持并行查找,查询内容的带宽增加并不会延长查询时长,查询结果的输出只和深度相关,例如在1024条策略中查询到适合的策略,只需要log21024个时钟,与查询的内容宽度无关。
3、相比较软件实现,用FPGA来实现TCAM在功耗方面更有优势,方便应用于轻量型的设备中。
4、本发明也可应用于网络安全芯片中,查询速率更快,功耗更低。
附图说明
图1 是本发明中TCAM最小系统miniTCAM框架示意图,在图1中:
在TCAM控制单元TCAM_CTL中,wEn_setram是指存储集单元SETRAM中SetRAM子模块的使能信号;cIndx为间接索引转置单元IITRAM单元中标识存储模块IndcRAM中的每个不同指示数据setIndc分配不同的索引;cTdata是指计数器;
在存储集单元SETRAM中,wTdata是指写入的数据;wTaddr是指写入地址;wTmask是指写入掩码;setIndc是指指示数据;
在间接索引转置单元IITRAM中,mTdata是指需要匹配的输入数据;IndxRAM是指索引存储模块;IndcRAM是指标识存储模块;mIndc是指匹配指示数组;
在最长前缀匹配编码器单元LPME中,Tmatch是指输出的是否匹配的标志位;mTaddr是指匹配后输出的地址;
图2 是本发明中TCAM控制单元TCAM_CTL框架示意图,在图2中,在状态机FSM中:
wEn是指wEn;cTdatalast是指状态机控制子模块FSM的状态机中写操作的结束信号;wEn_setram是指存储集单元SETRAM中SetRAM子模块的使能信号;wEn_cIdx是指索引计数子模块Idxcnt的计数使能信号;rst_cIdx是指索引计数子模块Idxcnt复位信号;wEn_cTdata是指计数器子模块Datacnt的计数使能信号;rst_cTdata是指计数器子模块Datacnt复位信号;
在索引计数子模块Idxcnt中,cIndx是指索引计数器;
在计数器子模块Datacnt中,cTdata是指计数器;
图3 是本发明中存储集单元SETRAM框架示意图,在图3中,在存储集单元SETRAM中,wTdata是指写入的数据;wTmask是指写入掩码;wTaddr是指写入地址;wEn_setram是指存储集单元SETRAM中SetRAM子模块的使能信号;cTdata是指cTdata;setIndc是指指示数据;
图4 是本发明中setIndc生成时序图;
图5 是本发明中间接索引转置单元IITRAM框架示意图;在图5中,间接索引转置单元IITRAM中:
wTaddr是指写入地址;mTdata是指需要匹配的输入数据;setIndc是指指示数据;cTdata是指计数器;cIndx是指索引计数器;mIndc是指匹配指示数组;IndxRAM是指索引存储模块;IndcRAM是指标识存储模块;
图6 本发明中mIndc结果示意图;
图7 本发明中,TCAM在IPSec中的应用示意图;
图8 本发明应用于IPSec策略查询的TCAM框架示意图;
图9 本发明实施例中仿真时序图。
具体实施方式
下面结合实施例和说明书附图对本发明做详细的说明,但不限于此。
实施例
一种基于FPGA的TCAM快速查询系统,包括:
wData位宽为,wAddr的位宽为/>,则TCAM中RAM的深度是/>,当和/>足够小时,使用单个RAM就可实现TCAM的功能,但在实际应用中,/>的位宽取值范围比较大,以IPv4版本的IPSec设备为例,网络报文需要提取五元组进行策略查询:源IP地址32bit,目的IP地址32bit,源端口号16bit,目的端口号16bit,协议号8bit,确定对报文的操作是明通、加密还是丢弃,如果采用TCAM快速查找计数,五元组作为wData写入TCAM中,wData的位宽至少是104bit,构建一个深度为/>的RAM几乎是不可能的事情;
构建最小系统:位宽的TCAM最小系统,即miniTCAM,所涉及的miniTCAM是一个宽度为8bit,深度可调的间接索引最长前缀匹配的TCAM最小系统,可以单独使用,也可多组并行使用,针对不同应用场景中TCAM对/>的要求不同,灵活选择多组miniTCAM并行拼接实现,大大减少了RAM资源的消耗,也减少了更改源码参数带来的巨大工作量,TCAM中miniTCAM的个数由/>决定,RAM的深度由/>变成:
(1)
在公式(1)中,wData位宽为,wAddr的位宽为/>,
在miniTCAM中,进一步对进行分组,以达到进一步减少单个RAM容量。
所述miniTCAM包括:TCAM控制单元TCAM_CTL、存储集单元SETRAM、间接索引转置单元IITRAM和最长前缀匹配编码器单元LPME ,如图1所示,其中,wTdata是写入的数据,位宽是为8bit;wTaddr是写入地址,位宽是/>大小可调;wTmask为写入掩码,与wTdata位宽一致;mTdata是需要匹配的输入数据,与wTdata、wTmask位宽一致;Tmatch是输出的是否匹配的标志位,“1”代表匹配,“0”代表不匹配;mTaddr是匹配后输出的地址,与wTaddr位宽一致。
所述TCAM控制单元TCAM_CTL包括:Tcam_Ctl模块,用于控制整个存储和匹配过程的时序及完成计数操作;所述Tcam_Ctl模块包括状态机控制子模块FSM、索引计数子模块Idxcnt和计数器子模块Datacnt,如图2所示;
所述状态机控制子模块FSM采用状态机的形式控制写入和匹配的全过程:输入信号wEn是写入数据的使能信号,是FSM中整个状态机的开始标志;输出信号wEn_setram是存储集单元SETRAM中SetRAM子模块的使能信号;输出信号wEn_cIdx是索引计数子模块Idxcnt的计数使能信号;输出信号rst_cIdx是索引计数子模块Idxcnt复位信号;输出信号wEn_cTdata是计数器子模块Datacnt的计数使能信号;输出信号rst_cTdata是计数器子模块Datacnt复位信号;输入信号cTdatalast是状态机控制子模块FSM的状态机中写操作的结束信号,由cTdata按位取“与”后得到。总体来说,状态机控制子模块FSM除了通过wEn_setram直接控制存储集单元SETRAM外,通过控制索引计数子模块Idxcnt和计数器子模块Datacnt的计数间接控制存储集单元SETRAM和间接索引转置单元IITRAM;
所述索引计数子模块Idxcnt是一个位宽为(-5)的计数器,输出信号cIndx用于为间接索引转置单元IITRAM单元中标识存储模块IndcRAM中的每个不同指示数据setIndc分配不同的索引,指示数据setIndc按位取“或”后与状态机控制子模块FSM的输出信号wEn_cIdx“与”在一起作为计数器的增长使能信号。状态机控制子模块FSM的输出信号rst_cIdx作为计数器的复位信号;
所述计数器子模块Datacnt是位宽为的计数器,在计数的过程中与写入的数据wTdata进行比对,生成指示数据setIndc,因为/>是8bit,输出信号cTdata的计数范围是0~255,状态机控制子模块FSM的输出信号wEn_cTdata作为计数器的增长使能信号,状态机控制子模块FSM的输出信号rst_cTdata作为计数器的复位信号。
所述存储集单元SETRAM包括:存储集子单元SetRAM和比较器子单元Compare,如图3所示;集合而成的RAM矩阵,接收所有写入数据wTdata及写入掩码wTmask,根据地址,存储在RAM矩阵的特定位置,与计数器进行比对后,生成一个指示数据setIndc,标识wTdata和wTaddr的对应关系;
所述存储集单元SETRAM用于处理低位地址TaddrL与wTdata或wTmask的对应关系,高位地址TaddrH放在间接索引转置单元IITRAM处理,存储集子单元SetRAM中对输入信号wTaddr进行分段,分为低位地址TaddrL和高位地址TaddrH。分段处理主要是基于2个原因,其一是为了避免内存膨胀,和并行使用多个miniTCAM是相同的思路,其二是控制指示数据setIndc的有效带宽,防止出现时序问题。
存储集子单元SetRAM子模块由个元素组成的m行n列的最小存储单元矩阵式存储wTdata和wTmask值。n是固定值,取值32。m大小可调,/>。每一个矩阵元素包括一个有效位1bit,一个数据data存储单元,位宽是/>,一个掩码mask存储单元,位宽是/>。
在存储集子单元SetRAM中对输入信号wTaddr进行分段,分为低位地址TaddrL和高位地址TaddrH,由于FPGA中BlockRAM的最小容量是36Kb,综合考虑低位地址TaddrL选择带宽为5bit,即
,
低位地址TaddrL带宽为5bit,指向RAM矩阵的32列;高位地址TaddrH位宽是-5,指向RAM矩阵的/>列;
假设是10bit,wTaddr的取值是0x048,写入数据wTdata是0xab,掩码wTmask是0x3c,低位地址TaddrL和高位地址TaddrH的取值是:
因此wTdata和wTmask存入第2行,第8列(从0计数)的存储单元中,即第2行的。
比较器子单元Compare主要负责对数据进行逻辑计算,一旦新数据存入存储集子单元SetRAM,在比较器子单元Compare中与cTdata完整集做对比,生成指示数据setIndc,如果和从存储集子单元SetRAM读取的数据/>相等,且数据有效,则指示数据setIndc的相应位置“1”。
还以wTaddr是0x048,写入数据wTdata是0xab,掩码wTmask是0x3c为例,按照图3所示,只处理RAM矩阵的每列的状态,则指示数据setIndc的位宽是32bit。由于,在/>的位置,指示数据setIndc取值是0x00000100(即从低位开始数的第8位),标记低位地址TaddrL有效地址的位置,即在cTdata计数到0x28,0x29,0x2a,0x2b,0x68,0x69,0x6a,0x6b,0xa8,0xa9,0xaa,0xab,……,0x1a8,0x1a9,0x1aa,0x1ab等24个数时,指示数据setIndc取值0x00000100,其他计数下,指示数据setIndc全部为0,代表并没有数值写入,见图4。
所述间接索引转置单元IITRAM包括gn个索引存储模块IndxRAM和gm*gn个标识存储模块IndcRAM,框图如图5所示;
索引存储模块IndxRAM用于存储索引计数器cIndx和cTdata的关系,标识存储模块IndcRAM存储指示数据setIndc和索引计数器cIndx的对应关系,这也是间接索引转置IITRAM的由来。
在匹配的过程中,mTdata作为IndxRAM的读地址,读取到的数据恰好是标识存储模块IndcRAM的读地址,将读取的标识存储模块IndcRAM的指示数据setIndc进行拼接,生成匹配指示数组mIndc,位宽是。
IITRAM单元设计思想与SETRAM单元类似,对高位地址TaddrH继续分段,用分段的地址控制IndxRAM和标识存储模块IndcRAM的数量,防止出现内存膨胀和时序问题,即gm和gn的大小由高位地址TaddrH分段决定。
假设TaddrH分段后成为高位地址低位部分TaddrHL和高位地址高位部分TaddrHH,a的大小由实际应用场景来决定:
索引存储模块IndxRAM用于存储索引计数器cIndx和cTdata的关系。对每一个索引存储模块IndxRAM编号为gj(gj=0,1,2,…,(gn-1))。IndxRAM(gi)的写使能由gj是否等于高位地址高位部分TaddrHH来决定,也就是当TaddrHH=1时,ndxRAM(1)写使能有效。IndxRAM(gi)的写数据是存储索引计数器cIndx。IndxRAM(gi)的写地址是cTdata和高位地址低位部分TaddrHL拼接而成,cTdata在高位,TaddrHL在低位。IndxRAM(gi)的读地址是mTdata,读出的数据indx(gi)的位宽是,也就是由mTdata=cTdata时,遍历地址TaddrHL取值从0~(/>-1)所对应的索引计数器cIndx拼接而成。虽然读数据indx(gi)更宽了,但从低到高,每(/>-5)bit值都和高位地址低位部分TaddrHL一一对应。总体来说,indx是一个有gn个元素,且标记计数器cTdata和高位地址TaddrH对应关系的索引数组。
标识存储模块IndcRAM用于存储指示数据setIndc和索引计数器cIndx的对应关系。标识存储模块IndcRAM是一个gm行gn列的存储单元矩阵。对每一个标识存储模块IndcRAM编号为(gi,gj),其中gi=0,1,2,…,(gm-1);gj=0,1,2,…,(gn-1)。IndcRAM(gi,gj)的写地址存储索引计数器cIndx,写数据是指示数据setIndc,写使能是由gj是否等于TaddrHH且gj是否等于TaddrHL来决定,也就是TaddrHH=1,且TaddrHL=1时,IndcRAM(1,1)写使能有效,往地址cIndx写入指示数据setIndc。IndcRAM(gi,gj)读地址是indx[gi][gj*5+: 5],也就是mTdata=cTdata时,indx数组中与gi,gj对应的索引值,而IndcRAM(gi,gj)读数据就是与索引值对应的指示数据setIndc。gm行gn列的IndcRAM的读数据拼接而成位宽是的匹配指示数组mIndc,其中只有满足mTdata=cTdata,gj=TaddrHH,且gj=TaddrHL对应的IndcRAM输出有效的指示数据setIndc,其他的字段都为0。
mTdata匹配的地址就是匹配指示数组mIndc中置“1”的位置。假设是10bit,已存入miniTCAM中的6个数据及地址关系如表1所示,当mTdata=0x40时, 6个地址的数据都可以匹配,则匹配指示数组mIndc的值见图6。
IITRAM单元中IndxRAM和标识存储模块IndcRAM的数量由高位地址TaddrH分段决定。IndxRAM的数量由高位地址高位部分TaddrHH决定,即,每个IndxRAM对应的标识存储模块IndcRAM数量由高位地址高位部分TaddrHH决定,即/>,标识存储模块IndcRAM的总数量是
在IITRAM单元中,IndxRAM和标识存储模块IndcRAM的数目取决的位宽:
的最小值是5,此时不存在高位地址TaddrH,指示数据setIndc与匹配指示数组mIndc相等;
当时,a取值为1,即需要1个IndxRAM,标识存储模块IndcRAM的数目是个;
当时,a取值为/>,IndxRAM的数目是/>个,标识存储模块IndcRAM的数目是/>个。
不难看出,IndxRAM和标识存储模块IndcRAM的资源占用是随着增大呈指数级增长,在实际应用中,选择查询的条目/>的时候,要根据技术需求和硬件资源统筹考虑。
所述最长前缀匹配编码器单元是最长前缀匹配编码器,用于给定一个匹配指示数组和一个前缀长度数组,将查找最长的前缀匹配的位置。在本发明中前缀长度就是掩码中有效的长度,以表1中前2行的wTmask举例:
表1TCAM中存入数据实例
在表1中,第一个wTmask=0xff的前缀长度是8bit,第2个wTmask=0xfe的前缀长度是7bit。最长前缀匹配编码器单元LPME作用就是在所有匹配项中,以前缀长度作为衡量标准,查找最优匹配值。
最长前缀匹配编码器单元LPME的输入接口是IITRAM单元输出的匹配指示数组mIndc,输出接口是Tmatch匹配标志位Tmatch和最优匹配地址mTaddr。
匹配指示数组mIndc的位宽是,假设n=/>,Tmaskn是n个wTmask的掩码集合,Tmatch是1bit的标志位,标识是否匹配,mTaddr带宽为/>的最优匹配地址。输出结果见以下公式,其中i,j是大于等于0,小于n的整数:
Tmatch是匹配指示数组mIndc的所有位取“或”,如果Tmatch为“1”,代表有匹配的值。mTaddr是匹配指示数组mIndc中所有数值为“1”的位置中wTmask最长的地址。
最长前缀匹配编码器单元LPME在计算最优匹配地址时,采用的是递归的方法:
在递归的第一层,位宽为的匹配指示数组mIndc被分割成/>个相等的片段,每一个片段包含2bit的匹配指示数组mIndc内容。将每个片段送到最小的编码器Encoder,进行处理,处理的过程主要包括有效位的检测及前缀长度的比较。输出的信号包括一个有效标志信号Valid,一个标记高低位有效的信号Bin。如果Valid为“0”,代表不存在有效位;如果Valid为“1”,Bin为“1”,代表高位有效;如果Valid为“1”,Bin为“0”,代表低位有效。在这一层中共例化/>个Encoder编码器,共产生/>个Valid,和Bin信号。
在递归的第二层,将个Valid分割成/>个相等的片段,每一个片段包含相邻的2个1bit的Valid,再将每个片段送到编码器Encoder中,进行处理,输出的信号进行整合,输出1bit的Valid和2bit的Bin。Valid标记是否有效,Bin标记有效的地址。如果Valid为“0”,代表不存在有效位;如果Valid为“1”,Bin为“3”,代表第一层中2个相邻的片段4bit的匹配指示数组mIndc内容中第3位是有效位。在这一层中共例化/>个Encoder编码器,共产生/>个Valid、Bin信号。
在递归的第三层,将个Valid分割成/>个相等的片段,每一个片段包含相邻的2个1bit的Valid,再将每个片段送到编码器Encoder中,进行处理,输出的信号进行整合,输出1bit的Valid和3bit的Bin。Valid标记是否有效,Bin标记有效的地址。如果Valid为“0”,代表不存在有效位;如果Valid为“1”,Bin为“7”,代表第一层中4个相邻的片段8bit的匹配指示数组mIndc内容中第7位是有效位。在这一层中共例化/>个Encoder编码器,共产生/>个Valid、Bin信号。
以此类推,在递归的第层,只剩2个Valid信号,只需要1个编码器Encoder进行处理,输出的信号进行层层整合后,输出1bit的Valid和/>bit的Bin,此时的Valid等于Tmatch,而Bin等于mTaddr,也就是最终结果。
以表1中的数值关系为例,如果mTdata=0x40,如图6所示,匹配指示数组mIndc中有6个位置数值是“1”,则Tmatch=1,然后再比较6个数值中wTmask的长度,其中地址0x020中的wTmask=0xff是最长前缀,所以mTaddr=0x020 。
在IPSec设备中,出栈的报文通过五元组:源IP地址、目的IP地址、源端口号、目的端口号、IP协议号,关键字段来检索“安全策略数据库”,英文Security Policy Database,下文简称“SPD”,匹配到相应的SPD后,读取action字段,完成加密、明通或丢弃操作。
入栈的加密报文则通过三元组:目的IP地址、SPI序列号、IP协议号,关键字段来检索“安全组织数据库”,英文Security Association Database,下文简称“SAD”,查匹配到相应的SAD后,读取封装模式、密钥等字段,完成解密操作。
不管五元组查找SPD,还是三元组查到SAD,在数据库比较庞大,条目众多的情况下,传统的查询方法都无法满足网络报文对时延的要求,需要采用TCAM查询技术。
本实施例在本应用场景中,将完整的SPD、SAD存入片外安全的DDR中,在TCAM中只维护每个条目五元组、三元组和对应的序列号的关系,与TCAM相关的策略查询模块的部分示意框图如图7所示,本应用例以五元组查询SPD为例展开说明:
管理系统通过网口下发SPD,FPGA接收完整的数据包后,进行策略识别,SPD_check模块中提取五元组及序列号,将完整的策略存入DDR中对应的地址中,完整的策略包括五元组、action、封装模式等信息,在IPsec_TCAM中只存储五元组、与序列号的关系。当进行策略查询时,首先将五元组写入IPsec_TCAM中进行匹配,如果可以匹配,则返回匹配地址,再读取DDR中对应地址的完整策略,对网络报文进行加解密封装处理,如果不匹配,则删除当前的网络报文。
五元组作为TCAM的写数据wData,位宽是,远远大于nimiTCAM中wTdata带宽/>,需要将五元组按照位宽/>拆分成q(/>)组,采用并行q个nimiTCAM的形式来实现,如图8所示。其中q组nimiTCAM和图1所示的nimiTCAM不是完全相同,只包括SETRAM单元和IITRAM单元2部分,TCAM_CTL单元不再是nimiTCAM的控制单元,而是整个IPsec_TCAM系统的控制单元,负责整个系统的写入、匹配及计数操作,LPME单元也不再是nimiTCAM的最长前缀匹配编码器,q组匹配指示数组mIndc匹配指示数组按位“与”后进入LPME单元,再计算出匹配标志位match和最佳匹配地址mAddr。
上述TCAM的实现方法,在目前研发的相关网络安全项目中得到了有效验证。具体技术要求是:
1.版本号IPv4;2.查询策略条目1000条;3.支持网络掩码。以下是具体实施方法。
根据表2所示,如果是通过五元组查询SPD,IPv4版本下,wData带宽是104bit,需要13组nimiTCAM。
表2五元组查找wData带宽计算
根据表3所示,如果是通过三元组查询SAD,IPv4版本下,wData带宽是72bit,需要9组nimiTCAM。满足1000条的查询策略,wAddr带宽是10bit,即=10。nimiTCAM的wTaddr带宽也是10bit,/>,/>。IITRAM单元中IndxRAM的数目是4个,标识存储模块IndcRAM的数目是32个。SetRAM和IITRAM占用RAM资源为2.4Mb。匹配指示数组mIndc的位宽是1024bit,查询周期是/>。
表3三元组查找wData带宽计算
仿真时序如图9所示,当用五元组查询时,将一条策略写入TCAM的0x48地址,五元组的五个元素分别为:源地址wSrc_ip为192.168.171.138,目的地址wDst_ip为192.168.10.11,源端口号wSport为8000,目的端口号wDport为8080,协议号wTran_proto为6(TCP),源地址掩码wSrc_ip_mask为255.255.252.0,目的地址掩码wDst_ip_mask为255.255.255.0,源端口号掩码和目的端口号掩码是0xffff。当输入一条五元组查询策略,数据内容分别为源地址mSrc_ip为192.168.171.138,目的地址mDst_ip为192.168.10.11,源端口号mSport为8000,目的端口号mDport为8080,协议号mTran_proto为6(TCP),输出的match标志位变高,mAddr为0x48,见图9的矩形框标注部分,说明查询成功。
Claims (6)
1.一种基于FPGA的TCAM快速查询系统,其特征在于,包括:
构建最小系统:位宽的TCAM最小系统,即miniTCAM,TCAM中miniTCAM的个数由决定,RAM的深度为:
(1)
在公式(1)中,写入的内容wData位宽为,写入的地址wAddr的位宽为/>,
在miniTCAM中,进一步对进行分组,以达到进一步减少单个RAM容量的目的。
2.根据权利要求1所述的一种基于FPGA的TCAM快速查询系统,其特征在于,所述miniTCAM包括:TCAM控制单元TCAM_CTL、存储集单元SETRAM、间接索引转置单元IITRAM和最长前缀匹配编码器单元LPME 。
3.根据权利要求2所述的一种基于FPGA的TCAM快速查询系统,其特征在于,所述TCAM控制单元TCAM_CTL包括:Tcam_Ctl模块,用于控制整个存储和匹配过程的时序及完成计数操作;所述Tcam_Ctl模块包括状态机控制子模块FSM、索引计数子模块Idxcnt和计数器子模块Datacnt;
所述状态机控制子模块FSM采用状态机的形式控制写入和匹配的全过程:输入信号wEn是写入数据的使能信号,是FSM中整个状态机的开始标志;输出信号wEn_setram是存储集单元SETRAM中SetRAM子模块的使能信号;输出信号wEn_cIdx是索引计数子模块Idxcnt的计数使能信号;输出信号rst_cIdx是索引计数子模块Idxcnt复位信号;输出信号wEn_cTdata是计数器子模块Datacnt的计数使能信号;输出信号rst_cTdata是计数器子模块Datacnt复位信号;输入信号cTdatalast是状态机控制子模块FSM的状态机中写操作的结束信号,由cTdata按位取“与”后得到;
所述索引计数子模块Idxcnt是一个位宽为(-5)的计数器;
所述计数器子模块Datacnt是位宽为的计数器,在计数的过程中与写入的数据wTdata进行比对,生成指示数据setIndc。
4.根据权利要求2所述的一种基于FPGA的TCAM快速查询系统,其特征在于,所述存储集单元SETRAM包括:存储集子单元SetRAM和比较器子单元Compare;集合而成的RAM矩阵,接收所有写入数据wTdata及写入掩码wTmask,根据地址,存储在RAM矩阵的特定位置,与计数器进行比对后,生成一个指示数据setIndc,标识wTdata和wTaddr的对应关系;
所述存储集单元SETRAM用于处理低位地址TaddrL与wTdata或wTmask的对应关系,高位地址TaddrH放在间接索引转置单元IITRAM处理,存储集子单元SetRAM中对输入信号wTaddr进行分段,分为低位地址TaddrL和高位地址TaddrH。
5.根据权利要求2所述的一种基于FPGA的TCAM快速查询系统,其特征在于,所述间接索引转置单元IITRAM包括gn个索引存储模块IndxRAM和gm*gn个标识存储模块IndcRAM;
索引存储模块IndxRAM用于存储索引计数器cIndx和cTdata的关系,标识存储模块IndcRAM存储指示数据setIndc和索引计数器cIndx的对应关系;
在IITRAM单元中,IndxRAM和标识存储模块IndcRAM的数目取决的位宽:
的最小值是5,此时不存在高位地址TaddrH,指示数据setIndc与匹配指示数组mIndc相等;
当时,a取值为1,即需要1个IndxRAM,标识存储模块IndcRAM的数目是/>个;
当时,a取值为/>,IndxRAM的数目是/>个,标识存储模块IndcRAM的数目是/>个。
6.根据权利要求2所述的一种基于FPGA的TCAM快速查询系统,其特征在于,所述最长前缀匹配编码器单元是最长前缀匹配编码器,用于给定一个匹配指示数组和一个前缀长度数组,将查找最长的前缀匹配的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311799679.0A CN117453733B (zh) | 2023-12-26 | 2023-12-26 | 一种基于fpga的tcam快速查询系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311799679.0A CN117453733B (zh) | 2023-12-26 | 2023-12-26 | 一种基于fpga的tcam快速查询系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117453733A true CN117453733A (zh) | 2024-01-26 |
CN117453733B CN117453733B (zh) | 2024-04-09 |
Family
ID=89595258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311799679.0A Active CN117453733B (zh) | 2023-12-26 | 2023-12-26 | 一种基于fpga的tcam快速查询系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453733B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070061692A1 (en) * | 2005-08-18 | 2007-03-15 | John Wickeraad | Parallel parity checking for content addressable memory and ternary content addressable memory |
CN107506310A (zh) * | 2017-07-13 | 2017-12-22 | 北京东土军悦科技有限公司 | 一种地址查找、关键字存储方法及设备 |
CN109981464A (zh) * | 2019-02-28 | 2019-07-05 | 中国人民解放军陆军工程大学 | 一种在fpga中实现的tcam电路结构及其匹配方法 |
CN113806403A (zh) * | 2021-09-22 | 2021-12-17 | 浙江锐文科技有限公司 | 一种在智能网卡/dpu内降低查找匹配逻辑资源的方法 |
US20220156575A1 (en) * | 2020-11-19 | 2022-05-19 | Apple Inc. | Multi-dimensional tensor support extension in neural network processor |
-
2023
- 2023-12-26 CN CN202311799679.0A patent/CN117453733B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070061692A1 (en) * | 2005-08-18 | 2007-03-15 | John Wickeraad | Parallel parity checking for content addressable memory and ternary content addressable memory |
CN107506310A (zh) * | 2017-07-13 | 2017-12-22 | 北京东土军悦科技有限公司 | 一种地址查找、关键字存储方法及设备 |
CN109981464A (zh) * | 2019-02-28 | 2019-07-05 | 中国人民解放军陆军工程大学 | 一种在fpga中实现的tcam电路结构及其匹配方法 |
US20220156575A1 (en) * | 2020-11-19 | 2022-05-19 | Apple Inc. | Multi-dimensional tensor support extension in neural network processor |
CN113806403A (zh) * | 2021-09-22 | 2021-12-17 | 浙江锐文科技有限公司 | 一种在智能网卡/dpu内降低查找匹配逻辑资源的方法 |
Non-Patent Citations (2)
Title |
---|
MUHAMMAD IRFAN等: ""D-TCAM: A High-Performance Distributed RAM Based TCAM Architecture on FPGAs"", 《IEEE ACCESS ( VOLUME: 7)》, 5 July 2019 (2019-07-05), pages 1 - 4 * |
张磊等: ""基于 SRAM 的 TCAM 设计与 FPGA 实现"", 《网络安全技术与应用》, 31 December 2018 (2018-12-31), pages 23 - 24 * |
Also Published As
Publication number | Publication date |
---|---|
CN117453733B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lakshminarayanan et al. | Algorithms for advanced packet classification with ternary CAMs | |
US10496680B2 (en) | High-performance bloom filter array | |
US9984144B2 (en) | Efficient lookup of TCAM-like rules in RAM | |
US8780926B2 (en) | Updating prefix-compressed tries for IP route lookup | |
US7281085B1 (en) | Method and device for virtualization of multiple data sets on same associative memory | |
US9967187B2 (en) | Exact match lookup with variable key sizes | |
US7356663B2 (en) | Layered memory architecture for deterministic finite automaton based string matching useful in network intrusion detection and prevention systems and apparatuses | |
US6775737B1 (en) | Method and apparatus for allocating and using range identifiers as input values to content-addressable memories | |
US20200159654A1 (en) | Pipelined hash table with reduced collisions | |
US20060248095A1 (en) | Efficient RAM lookups by means of compressed keys | |
CN110858823B (zh) | 一种数据包的分类方法、装置及计算机可读存储介质 | |
WO2006074014A2 (en) | Database query processor | |
US8375165B2 (en) | Bit weaving technique for compressing packet classifiers | |
JP7170905B2 (ja) | トラフィック分類方法及び装置 | |
CN112667526B (zh) | 一种访问控制列表电路实现方法及其电路 | |
US9703484B2 (en) | Memory with compressed key | |
CN117453733B (zh) | 一种基于fpga的tcam快速查询系统 | |
US10795580B2 (en) | Content addressable memory system | |
US20160105363A1 (en) | Memory system for multiple clients | |
Zec et al. | Pushing the envelope: Beyond two billion IP routing lookups per second on commodity CPUs | |
CN112769703A (zh) | 一种高效的基于sram的tcam实现方法 | |
EP3255571B1 (en) | System and method for efficient interval search using locality-preserving hashing | |
Shen et al. | A space-and power-efficient multi-match packet classification technique combining TCAMs and SRAMs | |
Shen et al. | A hybrid TCAM+ SRAM scheme for multi-match packet classification | |
Febiani et al. | An Advanced Firewall Rule Matching Algorithm |
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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A Fast Query System for TCAM Based on FPGA Granted publication date: 20240409 Pledgee: Huaxia Bank Co.,Ltd. Jinan Branch Pledgor: SHANDONG HUAYI MICRO-ELECTRONICS Co.,Ltd. Registration number: Y2024980024862 |