CN109981464B - 一种在fpga中实现的tcam电路结构及其匹配方法 - Google Patents
一种在fpga中实现的tcam电路结构及其匹配方法 Download PDFInfo
- Publication number
- CN109981464B CN109981464B CN201910149079.7A CN201910149079A CN109981464B CN 109981464 B CN109981464 B CN 109981464B CN 201910149079 A CN201910149079 A CN 201910149079A CN 109981464 B CN109981464 B CN 109981464B
- Authority
- CN
- China
- Prior art keywords
- tcam
- matching result
- basic
- matching
- basic search
- 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
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000008569 process Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种在FPGA中实现的TCAM电路结构及其匹配方法。该电路结构为:将TCAM划分为多个基本查找单元,每个基本查找单元的存储区存储多个表项,用户根据自身需求配置TCAM的基本查找单元个数和基本查找单元存储区的表项深度。匹配方法为:在表项匹配过程中,将待匹配字段同时发送给多个并行基本查找单元;每个基本查找单元按照地址顺序依次读出所存储的表项并进行比较;基本查找单元保留最长前缀匹配结果,作为本基本查找单元的匹配结果提供给优先级译码器;选择优先级最高的最长前缀匹配结果,作为最终匹配结果输出。本发明有效降低了比较器的数量和优先级译码器的规模,从而降低了资源消耗,提高了FPGA中的资源利用率。
Description
技术领域
本发明属于TCAM查找电路技术领域,特别是一种在FPGA中实现的TCAM电路结构及其匹配方法。
背景技术
在不同类型的网络设备中,查找电路被广泛使用。如在以太网交换机中,需要根据进入交换机的数据帧目的MAC地址查找其输出端口;在IP路由器中,需要根据输入IP包的目的IP地址查找其目的网段对应的输出端口;在网络安全设备中,需要进行某些关键字段的匹配查找,确定其操作行为。这些查找电路大致分为精确匹配查找和支持通配符(掩码)的查找两个基本类别。
目前,可以实现查找功能的电路类别很多,具体的电路结构和性能特点也有较大差异。内容可寻址存储器CAM(Content Addressable Memory)是目前交换机和路由器等网络设备中广泛使用的查找器件,是一类特殊的存储器件。在读操作时,与RAM这类根据输入地址读取指定存储区域内容的器件不同,CAM可根据输入的存储内容获取其存储的地址信息。TCAM与CAM不同,它可以支持通配符匹配,也就是说待查找用户信息中部分比特和TCAM中某个表项的对应比特内容相同就可以实现匹配。因此TCAM广泛应用于路由器中,是可实现高速路由查找的核心电路。
TCAM通常作为一种专用存储器件独立使用,也可以作为IP核集成在网络芯片中。随着FPGA在网络设备中的大量使用,很多情况下需要在FPGA中实现TCAM,其具有很高的查找速度,但其特殊的全并行电路结构使得其硬件资源消耗大,在FPGA中实现深度较大的TCAM硬件资源消耗大、效益低下。很多应用场合中,网络设备对查找速度要求并不高,属于中低速查找,此时采用标准的TCAM电路结构通常可以满足查找速度要求,但难以满足表容量(深度)要求。
发明内容
本发明的目的在于提供一种在FPGA中实现的TCAM电路结构及其匹配方法,从而在中低速情况下有效降低FPGA中硬件资源消耗。
实现本发明目的的技术解决方案为:一种在FPGA中实现的TCAM电路结构,将TCAM划分为多个基本查找单元,每个基本查找单元的存储区存储多个表项,用户根据自身需求配置TCAM的基本查找单元个数和基本查找单元存储区的表项深度。
进一步地,每个基本查找单元为基本查找单元,包括表项存储器和比较器,表项存储器中设置的表项数量大于1。
进一步地,所述表项存储器采用FPGA内部块RAM实现,块RAM中每个表项按照<IP地址,子网掩码>的形式进行存储。
进一步地,所述表项根据路由协议以及转发表确定写入的RAM以及写入的地址,然后通过总线写入TCAM中。
进一步地,TCAM的写入接口信号包括写入的表项cam_din、cam的写使能信号cam_wea和地址信号cam-addr。
进一步地,TCAM的输入接口还包括时钟信号clk、复位信号rstn、等待匹配的关键字comp_din、匹配请求信号comp_req,输出接口包括匹配成功的反馈信号comp_ack、匹配失败的反馈信号comp_nak、匹配结果输出comp_dout。
一种在FPGA中实现的TCAM电路结构的匹配方法,步骤如下:
步骤1、将待匹配字段同时发送给多个并行基本查找单元;
步骤2、每个基本查找单元按照地址顺序依次读出所存储的表项并进行比较;
步骤3、基本查找单元保留最长前缀匹配结果,作为本基本查找单元的匹配结果提供给优先级译码器;
步骤4、选择优先级最高的最长前缀匹配结果,作为最终匹配结果输出。
进一步地,步骤1所述将待匹配字段同时发送给多个并行基本查找单元,具体如下:
在进行匹配操作时,用户电路将待比配字段通过comp_din输入,同时将comp_req信号置1表示请求TCAM发起匹配操作;
TCAM发现用户请求后,将待匹配字段同时发送给各个并行基本查找单元。
进一步地,步骤4所述选择优先级最高的最长前缀匹配结果,作为最终匹配结果输出,具体如下:
优先级译码器从各个基本查找单元的输出结果中,选择优先级最高的最长前缀匹配结果,作为最终匹配结果通过comp_dout输出,同时将comp_ack置1表示当前输出的是匹配结果。
本发明与现有技术相比,其显著优点在于:(1)有效降低了比较器的数量和优先级译码器的规模,从而降低资源消耗;(2)用户可以根据自身需求灵活配置基本查找单元个数和基本查找单元存储区的表项深度,提高了FPGA中的资源利用率。
附图说明
图1是RAM的工作原理图。
图2是CAM的工作原理图。
图3是TCAM匹配操作方法示意图。
图4是TCAM查找结构示意图。
图5是本发明在FPGA中实现的TCAM电路结构的示意图。
图6是本发明实施例中TCAM查表电路的总体结构示意图。
图7是本发明实施例中表项匹配电路的结构示意图。
图8是本发明实施例中TCAM引脚功能示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细说明。
如图1所示,RAM中一般包括clk、wea、address、din、dout等引脚,分别表示时钟、写使能、地址、数据输入和数据输出。当时钟上升沿出现时,如果wea为1,当前din上的数据被写入到addr指定的地址空间;时钟上升沿出现时,如果wea为0,则将当前addr指定存储位置的数据通过dout被读出。图1为对RAM的写操作,输入地址100,这个地址存储的值为192.168.2.100,则最后的输出结果为192.168.2.100。
内容寻址存储器CAM是目前使用最多的硬件路由查找器件,相比于普通存储器SRAM和DRAM的访问方式,CAM是将输入的关键字内容与所存储表项的内容进行并行比较,返回表项的存储地址。CAM的原理结构如图2所示,与RAM相比它多出一个comp_din,即待匹配的关键字。当wea为1的时候,同样对CAM进行写操作,将din的值写入addr所对应的位置;当wea为0的时候,可以进行匹配操作,待匹配项对CAM中存储的表项并行匹配,若某个表项匹配成功,该表象所在的地址作为结果输出。图2就是CAM的匹配操作过程,待匹配项为192.168.0.129,经过匹配发现地址1003所存的表项匹配成功,此时将1003作为结果输出。
如图3所示,TCAM中每一个表项都是以<地址,掩码>的形式保存,假设输入关键字的长度为W(对于IPv4,W=32),则TCAM中每个表项的地址和掩码的长度都为W。路由器中的协议处理器根据路由协议建立路由表后,根据路由表生成转发表并将其写入到TCAM中。在写入时,根据路由表中子网掩码的长度首先进行排序(按照由高到低或者由低到高的顺序,子网掩码长度越大,优先级越高),然后将排序后的目的网络号和对应的子网掩码依次写入到TCAM中。例如,一个IP地址网络号长度为X(1≤X≤W),则该地址对应掩码的高X比特位都为1,剩余的W-X比特都为0,此时所存储的网络号的高X位存储的是网络号,低低W-X比特可以是1或是0。
在TCAM的表项匹配过程中,TCAM将输入的IP地址和掩码“按位与”,同时将所存储的网络号和掩码“按位与”,然后对两个计算结果进行比较,如果相等表示关键字与该表项可以匹配。图4为TCAM中某一个表项的匹配操作方法,图中包括TCAM中某个表项的存储内容和输入IP地址为192.168.0.177时的具体匹配操作方法。
由于可能存在多个表项同时匹配成功的情况,因此TCAM需要能在这些匹配的表项中选取一个表项作为最后的查找结果,TCAM规定在所有匹配的表项中选取优先级最高的表项的地址作为最后的匹配结果。根据TCAM的工作机制可以看出,为了能够进行最长前缀匹配查找,需要在建立TCAM中的表项时以掩码长度为优先级排列全部表项(掩码长度相同的表项排序顺序不会影响查找结果)。TCAM的内部结构如图4所示。当输入IP地址192.168.0.177进行匹配时,可以看出同时有4项可以匹配,但索引为1的表项数值最小,具有最高优先级,经过优先级译码器后最终输出的地址为1。此后可以以1为地址对存储查找结果信息的RAM进行读操作,读出建立查找表时预先写入的查找结果,最为常见的是该IP包对应的输出端口号等信息。
根据图4给出的TCAM原理结构,本发明提出了如图5所示的在FPGA中实现的TCAM电路结构,将TCAM划分为多个基本查找单元,每个基本查找单元的存储区存储多个表项,用户根据自身需求配置TCAM的基本查找单元个数和基本查找单元存储区的表项深度。
进一步地,每个基本查找单元为基本查找单元,包括表项存储器和比较器,表项存储器中设置的表项数量大于1。
进一步地,所述表项存储器采用FPGA内部块RAM实现,块RAM中每个表项按照<IP地址,子网掩码>的形式进行存储。
进一步地,所述表项根据路由协议以及转发表确定写入的RAM以及写入的地址,然后通过总线写入TCAM中。
进一步地,TCAM的写入接口信号包括写入的表项cam_din、cam的写使能信号cam_wea和地址信号cam-addr。
进一步地,TCAM的输入接口还包括时钟信号clk、复位信号rstn、等待匹配的关键字comp_din、匹配请求信号comp_req,输出接口包括匹配成功的反馈信号comp_ack、匹配失败的反馈信号comp_nak、匹配结果输出comp_dout。
一种在FPGA中实现的TCAM电路结构的匹配方法,步骤如下:
步骤1、将待匹配字段同时发送给多个并行基本查找单元;
步骤2、每个基本查找单元按照地址顺序依次读出所存储的表项并进行比较;
步骤3、基本查找单元保留最长前缀匹配结果,作为本基本查找单元的匹配结果提供给优先级译码器;
步骤4、选择优先级最高的最长前缀匹配结果,作为最终匹配结果输出。
进一步地,步骤1所述将待匹配字段同时发送给多个并行基本查找单元,具体如下:
在进行匹配操作时,用户电路将待比配字段通过comp_din输入,同时将comp_req信号置1表示请求TCAM发起匹配操作;
TCAM发现用户请求后,将待匹配字段同时发送给各个并行基本查找单元。
进一步地,步骤4所述选择优先级最高的最长前缀匹配结果,作为最终匹配结果输出,具体如下:
优先级译码器从各个基本查找单元的输出结果中,选择优先级最高的最长前缀匹配结果,作为最终匹配结果通过comp_dout输出,同时将comp_ack置1表示当前输出的是匹配结果。
综上可知,此时每一个基本查找单元(comp_cell)所管理的存储区可以存储大于一个表项,在一个基本查找单元内部采用按照固定的顺序依次匹配,保留本单元内部优先级最高的匹配结果作为本基本查找单元的匹配结果。不同基本查找单元的匹配结果通过优先级译码器后,选择出优先级最高的表项的地址作为最终的查找结果。由于一个基本查找单元内部采用依次比较的方法,因此降低了查找速度,但采用FPGA内部块RAM作为存储单元时,可以有效降低块RAM的使用量,提高块RAM存储资源利用率。通过选择每个块RAM中存储的表项数量,用户可以在查找速度和表项深度之间进行灵活的折中,在中低速情况下,可以有效的降低FPGA中硬件资源消耗。
作为一种具体示例,图6为一个表项深度为1024的最长前缀匹配TCAM路由查表电路。在这个电路中有32个块RAM且深度都是32,匹配过程中每次对32块RAM中的某一地址并行匹配,所以完成全部表项的匹配操作需要32次匹配操作。若用户追求速度,可以增加基本查找单元的数量,减少每个基本查找单元的存储深度;若对速度没有过高要求,可以减少基本查找单元的数量,增加每个基本查找单元内部块RAM的表项存储深度。
下面结合附图及具体实施例对本发明做进一步详细描述。
实施例
下面以一个深度为1024,并行度为32的TCAM为例说明本发明的具体实施方式。在本发明的电路中,CPU中运行着路由协议,完成与周围路由器的信息交互,建立和维护路由表。然后根据路由表按照一定的算法建立转发表,并将转发表的表项存入TCAM中。
本电路中包括32个并行基本查找单元(comp_cell_uX),如图6所示,每个基本查找单元内部结构如图7所示,TCAM的外部引脚如图8所示。在一个基本查找单元中包含一个用于存储查找表项块RAM,本例子中使用了其中的32个存储单元,地址为0到31,其中0为优先级最高的表项。块RAM中每个表项按照<IP地址,子网掩码>的形式进行存储。本发明中IP地址和子网掩码的总长度为64位,即IP地址和子网掩码的长度都是32位。
当CPU有新的表项要写入的时候会根据路由协议以及转发表确定该表项写入的RAM以及写入的地址。然后将写入信息通过总线写入到TCAM中。写入接口信号包括cam_din、cam_wea和cam-addr。其中64位的cam_din是写入的表项,即IP地址和子网掩码;32位的cam_wea每一位对应一个基本查找单元,当某一位为1时表示对对应的基本查找单元进行表项写操作。cam_addr是所选择基本查找单元内部块RAM的表项写入地址。
在进行匹配操作时,用户电路将待比配字段通过comp_din输入,同时将comp_req信号置1表示请求TCAM发起匹配操作。TCAM发现用户请求后,将待匹配字段同时发送给32个并行基本查找单元。每个并行基本查找单元按照地址0-31的顺序依次读出所存储的表项并进行比较。比较完成后,基本查找单元保留最长前缀匹配结果作为本基本查找单元的匹配结果提供给优先级译码器(低优先级优先)。优先级译码器从32个基本查找单元的输出结果中选择优先级最高的最长前缀匹配结果作为最终匹配结果通过comp_dout输出,同时将comp_ack置1表示当前输出的是匹配结果。
本发明有效降低了比较器的数量和优先级译码器的规模,从而降低了资源消耗;此外,用户可以根据自身需求灵活配置基本查找单元个数和基本查找单元存储区的表项深度,提高了FPGA中的资源利用率。
Claims (1)
1.一种在FPGA中实现的TCAM电路结构的匹配方法,其特征在于,该方法基于以下在FPGA中实现的TCAM电路结构:将TCAM划分为多个基本查找单元,每个基本查找单元的存储区存储多个表项,用户根据自身需求配置TCAM的基本查找单元个数和基本查找单元存储区的表项深度;
每个基本查找单元包括表项存储器和比较器,表项存储器中设置的表项数量大于1;
所述表项存储器采用FPGA内部块RAM实现,块RAM中每个表项按照<IP地址,子网掩码>的形式进行存储;
所述表项根据路由协议以及转发表确定写入的RAM以及写入的地址,然后通过总线写入TCAM中;
TCAM的写入接口信号包括写入的表项cam_din、cam的写使能信号cam_wea和地址信号cam-addr;
TCAM的输入接口还包括时钟信号clk、复位信号rstn、等待匹配的关键字comp_din、匹配请求信号comp_req,输出接口包括匹配成功的反馈信号comp_ack、匹配失败的反馈信号comp_nak、匹配结果输出comp_dout;
方法步骤如下:
步骤1、将待匹配字段同时发送给多个并行基本查找单元;
步骤2、每个基本查找单元按照地址顺序依次读出所存储的表项并进行比较;
步骤3、基本查找单元保留最长前缀匹配结果,作为本基本查找单元的匹配结果提供给优先级译码器;
步骤4、选择优先级最高的最长前缀匹配结果,作为最终匹配结果输出;
步骤1所述将待匹配字段同时发送给多个并行基本查找单元,具体如下:
在进行匹配操作时,用户电路将待比配字段通过comp_din输入,同时将comp_req信号置1表示请求TCAM发起匹配操作;
TCAM发现用户请求后,将待匹配字段同时发送给各个并行基本查找单元;
步骤4所述选择优先级最高的最长前缀匹配结果,作为最终匹配结果输出,具体如下:
优先级译码器从各个基本查找单元的输出结果中,选择优先级最高的最长前缀匹配结果,作为最终匹配结果通过comp_dout输出,同时将comp_ack置1表示当前输出的是匹配结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910149079.7A CN109981464B (zh) | 2019-02-28 | 2019-02-28 | 一种在fpga中实现的tcam电路结构及其匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910149079.7A CN109981464B (zh) | 2019-02-28 | 2019-02-28 | 一种在fpga中实现的tcam电路结构及其匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109981464A CN109981464A (zh) | 2019-07-05 |
CN109981464B true CN109981464B (zh) | 2021-03-26 |
Family
ID=67077505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910149079.7A Active CN109981464B (zh) | 2019-02-28 | 2019-02-28 | 一种在fpga中实现的tcam电路结构及其匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109981464B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647665B (zh) * | 2019-08-21 | 2022-02-11 | 丁贤根 | 一种超并行比对的方法与系统 |
CN114244772B (zh) * | 2021-12-29 | 2023-05-30 | 厦门大学 | 一种更新复杂度为o(1)的tcam实现方法及系统 |
CN114356418B (zh) * | 2022-03-10 | 2022-08-05 | 之江实验室 | 一种智能表项控制器及控制方法 |
CN117453733B (zh) * | 2023-12-26 | 2024-04-09 | 山东华翼微电子技术股份有限公司 | 一种基于fpga的tcam快速查询系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674557A (zh) * | 2005-04-01 | 2005-09-28 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
CN108875064A (zh) * | 2018-07-03 | 2018-11-23 | 湖南新实网络科技有限公司 | 基于FPGA的OpenFlow多维数据匹配查找方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101447940B (zh) * | 2008-12-23 | 2011-03-30 | 杭州华三通信技术有限公司 | 访问控制列表规则的更新方法和装置 |
CN101631086B (zh) * | 2009-08-10 | 2012-09-26 | 武汉烽火网络有限责任公司 | 并行ip路由查找的路由表分区和放置方法 |
US10268464B2 (en) * | 2017-07-07 | 2019-04-23 | Intel Corporation | Technologies for network application programming with field-programmable gate arrays |
-
2019
- 2019-02-28 CN CN201910149079.7A patent/CN109981464B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674557A (zh) * | 2005-04-01 | 2005-09-28 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
CN108875064A (zh) * | 2018-07-03 | 2018-11-23 | 湖南新实网络科技有限公司 | 基于FPGA的OpenFlow多维数据匹配查找方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109981464A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109981464B (zh) | 一种在fpga中实现的tcam电路结构及其匹配方法 | |
US7058642B2 (en) | Method and data structure for a low memory overhead database | |
US7606236B2 (en) | Forwarding information base lookup method | |
EP2643762B1 (en) | Method and apparatus for high performance, updatable, and deterministic hash table for network equipment | |
US7313667B1 (en) | Methods and apparatus for mapping fields of entries into new values and combining these mapped values into mapped entries for use in lookup operations such as for packet processing | |
US9569561B2 (en) | Label masked addressable memory | |
US6181698B1 (en) | Network routing table using content addressable memory | |
CN102377664B (zh) | 一种基于tcam的区域匹配装置和方法 | |
US7281085B1 (en) | Method and device for virtualization of multiple data sets on same associative memory | |
US7349382B2 (en) | Reverse path forwarding protection of packets using automated population of access control lists based on a forwarding information base | |
JP4742167B2 (ja) | Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 | |
Bando et al. | FlashTrie: beyond 100-Gb/s IP route lookup using hash-based prefix-compressed trie | |
EP3276501B1 (en) | Traffic classification method and device, and storage medium | |
US10606798B2 (en) | Method for configuring address table, FPGA, and network device applying FPGA | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
CN112667526B (zh) | 一种访问控制列表电路实现方法及其电路 | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
EP3920475A1 (en) | Memory management method and apparatus | |
US20170010814A1 (en) | Memory with compressed key | |
US20160105363A1 (en) | Memory system for multiple clients | |
US7773590B2 (en) | Combined interface and non-interface specific associative memory lookup operations for processing of packets | |
US20080175241A1 (en) | System and method for obtaining packet forwarding information | |
US9851902B2 (en) | Searching memory for a search key | |
US7523251B2 (en) | Quaternary content-addressable memory | |
US7941605B1 (en) | Methods and apparatus for generating a result based on a lookup result from a lookup operation using an associative memory and processing based on a discriminator portion of a lookup word |
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 |