CN117453733A - 一种基于fpga的tcam快速查询系统 - Google Patents

一种基于fpga的tcam快速查询系统 Download PDF

Info

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
Application number
CN202311799679.0A
Other languages
English (en)
Other versions
CN117453733B (zh
Inventor
王培培
苏云学
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Huayi Microelectronic Material Co Ltd
Original Assignee
Shanghai Huayi Microelectronic Material Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Huayi Microelectronic Material Co Ltd filed Critical Shanghai Huayi Microelectronic Material Co Ltd
Priority to CN202311799679.0A priority Critical patent/CN117453733B/zh
Publication of CN117453733A publication Critical patent/CN117453733A/zh
Application granted granted Critical
Publication of CN117453733B publication Critical patent/CN117453733B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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快速查询系统
技术领域
本发明公开一种基于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快速查询系统,其特征在于,所述最长前缀匹配编码器单元是最长前缀匹配编码器,用于给定一个匹配指示数组和一个前缀长度数组,将查找最长的前缀匹配的位置。
CN202311799679.0A 2023-12-26 2023-12-26 一种基于fpga的tcam快速查询系统 Active CN117453733B (zh)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
WO2006074014A2 (en) Database query processor
CN110858823B (zh) 一种数据包的分类方法、装置及计算机可读存储介质
JP7170905B2 (ja) トラフィック分類方法及び装置
US11327974B2 (en) Field variability based TCAM splitting
CN112667526B (zh) 一种访问控制列表电路实现方法及其电路
US20120096220A1 (en) Bit weaving technique for compressing packet classifiers
CN117453733B (zh) 一种基于fpga的tcam快速查询系统
US9703484B2 (en) Memory with compressed key
US10795580B2 (en) Content addressable memory system
Zec et al. Pushing the envelope: Beyond two billion IP routing lookups per second on commodity CPUs
US20160105363A1 (en) Memory system for multiple clients
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

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