CN112235198A - 一种基于fpga实现的多用户tcam掩码匹配算法 - Google Patents
一种基于fpga实现的多用户tcam掩码匹配算法 Download PDFInfo
- Publication number
- CN112235198A CN112235198A CN202011105097.4A CN202011105097A CN112235198A CN 112235198 A CN112235198 A CN 112235198A CN 202011105097 A CN202011105097 A CN 202011105097A CN 112235198 A CN112235198 A CN 112235198A
- Authority
- CN
- China
- Prior art keywords
- data
- cfg
- mask
- table entry
- fpga
- 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.)
- Pending
Links
- 239000000284 extract Substances 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims description 5
- 101000928335 Homo sapiens Ankyrin repeat and KH domain-containing protein 1 Proteins 0.000 claims description 3
- 101000701393 Homo sapiens Serine/threonine-protein kinase 26 Proteins 0.000 claims description 3
- 102100030617 Serine/threonine-protein kinase 26 Human genes 0.000 claims description 3
- 230000009471 action Effects 0.000 claims description 3
- 239000000463 material Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006854 communication Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种基于FPGA实现的多用户TCAM掩码匹配算法,包括以下步骤:软件通过命令行获取用户配置然后做运算,将对应的bit变为0;从之前配置的表项里依次读取各个CFG_IP_MASK_DATA做比较;根据比较的大小关系,放到合适的位置;如果表项合适的位置被其他规则占用;将CFG_MASK_DATA的数据,放到与CFG_IP_MASK_DATA排序的相同位置;设备接收到数据后,通过内部解析模块,提取IP_DATA;根据二分法原理,读取表项中间的规则,获得IP_MASK_DATA值;将IP_MASK_DATA与CFG_MASK_DATA做比较,根据比较的大小来判断继续去上半部分查找还是去下半部分查找;经过多次查找和比较,最终可以明确是否可以命中当前配置的表项,且当命中后可以得知命中的CFG_AD值。本发明与现有技术相比的优点在于:既可以将成本降下来,同时将规格条目数增加。
Description
技术领域
本发明涉及数据网络通信技术领域,具体是指一种基于FPGA实现的多用户TCAM掩码匹配算法。
背景技术
数据网络通信过程中对IP报文进行交换和路由时,需要对IP某段进行匹配或者某些单bit的模糊匹配查找,通过模糊查找可以实现少量的规则数据就满足实际使用需求。
传统路由器为了满足性能要求一般会使用硬件TCAM来实现。TCAM(ternarycontent addressable memory)是一种三态内容寻址存储器,主要用于快速查找ACL、路由等表项。它是从CAM的基础上发展而来的。一般的CAM存储器中每个bit位的状态只有两个,“0”或“1”,而TCAM中每个bit位有三种状态,除掉“0”和“1”外,还有一个“don’tcare”状态,所以称为“三态”,它是通过掩码来实现的,正是TCAM的这个第三种状态特征使其既能进行精确匹配查找,又能进行模糊匹配查找,但是由于TCAM存在价格昂贵,同时条目数较少等问题。
发明内容
本发明要解决的技术问题是克服以上技术缺陷,提供一种基于FPGA实现的多用户TCAM掩码匹配算法,利用FPGA通过算法实现TCAM功能的方法,既可以将成本降下来,同时将规格条目数增加。
为解决上述技术问题,本发明提供的技术方案为:一种基于FPGA实现的多用户TCAM掩码匹配算法,包括以下步骤:
步骤1:软件通过命令行获取用户配置的CFG_IP_DATA和CFG_MASK_DATA;
步骤2:将获取到的CFG_IP_DATA和CFG_MASK_DATA做运算,将对应CFG_IP_DATA的掩码掩掉的bit变为0,运算后CFG_IP_DATA变为了CFG_IP_MASK_DATA;
步骤3:从之前配置的表项里依次读取各个CFG_IP_MASK_DATA与当前配置CFG_IP_MASK_DATA做比较;
步骤4:根据比较的大小关系,将该条规则按照规定的顺序放到表项合适的位置;
步骤5:如果表项合适的位置被其他规则占用,需要调整移动之前的规则,以保证该条规则可以放入符合要求的位置;
步骤6:将CFG_MASK_DATA的数据,放到与CFG_IP_MASK_DATA排序的相同位置;
步骤7:同时将CFG_AD即相关的动作和出端口信息放入与CFG_IP_MASK_DATA相同位置的另个缓存里;
步骤8:设备接收到数据后,通过内部解析模块,提取IP_DATA;
步骤9:根据二分法原理,读取表项中间的规则,获取CFG_IP_DATA和CFG_MASK_DATA两组数据;
步骤10:将CFG_MASK_DATA与IP_DATA做运算,获得IP_MASK_DATA值;
步骤11:将IP_MASK_DATA与CFG_MASK_DATA做比较,根据比较的大小来判断继续去上半部分查找还是去下半部分查找;
步骤12:经过多次查找和比较,最终可以明确是否可以命中当前配置的表项,且当命中后可以得知命中的CFG_AD值。
步骤1~7中的软件配置中可以并行支持多个用户的配置,FPGA提供多个缓存供多个用户进行配置。
本发明与现有技术相比的优点在于:通过二分法算法来解决TCAM掩码匹配问题,利用FPGA通过算法实现TCAM功能的方法,既可以将成本降下来,同时将规格条目数增加。
附图说明
图1是本发明一种基于FPGA实现的多用户TCAM掩码匹配算法的软件配置掩码规则时的工作流程图结构示意图。
图2是本发明一种基于FPGA实现的多用户TCAM掩码匹配算法的对输入的数据进行掩码规则匹配流程工作图。
具体实施方式
下面结合附图对本发明做进一步的详细说明。
一种基于FPGA实现的多用户TCAM掩码匹配算法,包括以下步骤:
步骤1:软件通过命令行获取用户配置的CFG_IP_DATA和CFG_MASK_DATA;
步骤2:将获取到的CFG_IP_DATA和CFG_MASK_DATA做运算,将对应CFG_IP_DATA的掩码掩掉的bit变为0,运算后CFG_IP_DATA变为了CFG_IP_MASK_DATA;
步骤3:从之前配置的表项里依次读取各个CFG_IP_MASK_DATA与当前配置CFG_IP_MASK_DATA做比较;
步骤4:根据比较的大小关系,将该条规则按照规定的顺序放到表项合适的位置;
步骤5:如果表项合适的位置被其他规则占用,需要调整移动之前的规则,以保证该条规则可以放入符合要求的位置;
步骤6:将CFG_MASK_DATA的数据,放到与CFG_IP_MASK_DATA排序的相同位置;
步骤7:同时将CFG_AD即相关的动作和出端口信息放入与CFG_IP_MASK_DATA相同位置的另个缓存里;
步骤8:设备接收到数据后,通过内部解析模块,提取IP_DATA;
步骤9:根据二分法原理,读取表项中间的规则,获取CFG_IP_DATA和CFG_MASK_DATA两组数据;
步骤10:将CFG_MASK_DATA与IP_DATA做运算,获得IP_MASK_DATA值;
步骤11:将IP_MASK_DATA与CFG_MASK_DATA做比较,根据比较的大小来判断继续去上半部分查找还是去下半部分查找;
步骤12:经过多次查找和比较,最终可以明确是否可以命中当前配置的表项,且当命中后可以得知命中的CFG_AD值。
步骤1~7中的软件配置中可以并行支持多个用户的配置,FPGA提供多个缓存供多个用户进行配置。
如果支持64K条目的话,则是2^16条,二分法最差16拍就可以查出结果,如果将资源复制16份,利用FPGA内部的pipeline模式可以实现线速查找。
本发明通过二分法算法来解决TCAM掩码匹配问题,利用FPGA通过算法实现TCAM功能的方法,替代了硬件TCAM芯片,实现降成本,同时将规格条目数增加,另外减少硬件PCB板的空间。
以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。
Claims (2)
1.一种基于FPGA实现的多用户TCAM掩码匹配算法,其特征在于:包括以下步骤:
步骤1:软件通过命令行获取用户配置的CFG_IP_DATA和CFG_MASK_DATA;
步骤2:将获取到的CFG_IP_DATA和CFG_MASK_DATA做运算,将对应CFG_IP_DATA的掩码掩掉的bit变为0,运算后CFG_IP_DATA变为了CFG_IP_MASK_DATA;
步骤3:从之前配置的表项里依次读取各个CFG_IP_MASK_DATA与当前配置CFG_IP_MASK_DATA做比较;
步骤4:根据比较的大小关系,将该条规则按照规定的顺序放到表项合适的位置;
步骤5:如果表项合适的位置被其他规则占用,需要调整移动之前的规则,以保证该条规则可以放入符合要求的位置;
步骤6:将CFG_MASK_DATA的数据,放到与CFG_IP_MASK_DATA排序的相同位置;
步骤7:同时将CFG_AD即相关的动作和出端口信息放入与CFG_IP_MASK_DATA相同位置的另个缓存里;
步骤8:设备接收到数据后,通过内部解析模块,提取IP_DATA;
步骤9:根据二分法原理,读取表项中间的规则,获取CFG_IP_DATA和CFG_MASK_DATA两组数据;
步骤10:将CFG_MASK_DATA与IP_DATA做运算,获得IP_MASK_DATA值;
步骤11:将IP_MASK_DATA与CFG_MASK_DATA做比较,根据比较的大小来判断继续去上半部分查找还是去下半部分查找;
步骤12:经过多次查找和比较,最终可以明确是否可以命中当前配置的表项,且当命中后可以得知命中的CFG_AD值。
2.根据权利要求1所述的一种基于FPGA实现的多用户TCAM掩码匹配算法,其特征在于:步骤1~7中的软件配置中可以并行支持多个用户的配置,FPGA提供多个缓存供多个用户进行配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011105097.4A CN112235198A (zh) | 2020-10-15 | 2020-10-15 | 一种基于fpga实现的多用户tcam掩码匹配算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011105097.4A CN112235198A (zh) | 2020-10-15 | 2020-10-15 | 一种基于fpga实现的多用户tcam掩码匹配算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112235198A true CN112235198A (zh) | 2021-01-15 |
Family
ID=74118388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011105097.4A Pending CN112235198A (zh) | 2020-10-15 | 2020-10-15 | 一种基于fpga实现的多用户tcam掩码匹配算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112235198A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350771A (zh) * | 2008-07-07 | 2009-01-21 | 中国人民解放军国防科学技术大学 | 三态内容可寻址存储器条目免排序存储方法及其系统 |
CN102970150A (zh) * | 2011-09-01 | 2013-03-13 | 日电(中国)有限公司 | 用于数据中心的可扩展组播转发方法和设备 |
CN103368777A (zh) * | 2013-07-11 | 2013-10-23 | 曙光信息产业股份有限公司 | 一种数据包处理板及处理方法 |
CN105812262A (zh) * | 2016-03-10 | 2016-07-27 | 盛科网络(苏州)有限公司 | 一种在带有掩码管理的tcam中高效数据排序的实现方法 |
CN106776456A (zh) * | 2017-01-18 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于fpga+npu的高速正则表达式匹配混合系统及方法 |
CN109995645A (zh) * | 2019-03-07 | 2019-07-09 | 盛科网络(苏州)有限公司 | 一种灵活查找fdb表项的芯片实现方法 |
CN111143258A (zh) * | 2019-12-29 | 2020-05-12 | 苏州浪潮智能科技有限公司 | 一种基于Opencl的系统访问FPGA的方法、系统、设备以及介质 |
-
2020
- 2020-10-15 CN CN202011105097.4A patent/CN112235198A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350771A (zh) * | 2008-07-07 | 2009-01-21 | 中国人民解放军国防科学技术大学 | 三态内容可寻址存储器条目免排序存储方法及其系统 |
CN102970150A (zh) * | 2011-09-01 | 2013-03-13 | 日电(中国)有限公司 | 用于数据中心的可扩展组播转发方法和设备 |
CN103368777A (zh) * | 2013-07-11 | 2013-10-23 | 曙光信息产业股份有限公司 | 一种数据包处理板及处理方法 |
CN105812262A (zh) * | 2016-03-10 | 2016-07-27 | 盛科网络(苏州)有限公司 | 一种在带有掩码管理的tcam中高效数据排序的实现方法 |
CN106776456A (zh) * | 2017-01-18 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于fpga+npu的高速正则表达式匹配混合系统及方法 |
CN109995645A (zh) * | 2019-03-07 | 2019-07-09 | 盛科网络(苏州)有限公司 | 一种灵活查找fdb表项的芯片实现方法 |
CN111143258A (zh) * | 2019-12-29 | 2020-05-12 | 苏州浪潮智能科技有限公司 | 一种基于Opencl的系统访问FPGA的方法、系统、设备以及介质 |
Non-Patent Citations (3)
Title |
---|
王锦山: "一种新的层三交换表查找引擎", 《微电子学与计算机》 * |
白文磊: "第三层交换机以太网驱动的设计与实现", 《中国优秀博硕士学位论文全文数据库》 * |
边裕兰: "基于T比特路由器高速转发引擎的设计与实现", 《中国优秀博硕士学位论文全文数据库》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6665297B1 (en) | Network routing table | |
US7680806B2 (en) | Reducing overflow of hash table entries | |
Zane et al. | CoolCAMs: Power-efficient TCAMs for forwarding engines | |
US6631419B1 (en) | Method and apparatus for high-speed longest prefix and masked prefix table search | |
US8619766B2 (en) | Method and apparatus for classifying packets | |
Che et al. | DRES: Dynamic range encoding scheme for TCAM coprocessors | |
US7668160B2 (en) | Methods for performing packet classification | |
CN108875064B (zh) | 基于FPGA的OpenFlow多维数据匹配查找方法 | |
CN100418331C (zh) | 基于网络处理器的路由查找结果缓存方法 | |
EP3276501B1 (en) | Traffic classification method and device, and storage medium | |
Wang et al. | CoPTUA: Consistent policy table update algorithm for TCAM without locking | |
CN108287840A (zh) | 一种基于矩阵哈希的数据存储和查询方法 | |
US7035844B2 (en) | FFS search and edit pipeline separation | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
CN109981464A (zh) | 一种在fpga中实现的tcam电路结构及其匹配方法 | |
CN109672623A (zh) | 一种报文处理方法和装置 | |
Han et al. | A novel routing algorithm for IoT cloud based on hash offset tree | |
Bornea et al. | Adaptive join operators for result rate optimization on streaming inputs | |
Li et al. | Smart name lookup for NDN forwarding plane via neural networks | |
CN104702508B (zh) | 表项动态更新方法及系统 | |
CN112235198A (zh) | 一种基于fpga实现的多用户tcam掩码匹配算法 | |
Kuo et al. | A memory-efficient TCAM coprocessor for IPv4/IPv6 routing table update | |
CN107896193B (zh) | 一种交换机及其查找表的创建方法、查找方法 | |
CN113726660B (zh) | 一种基于完美哈希算法的路由查找器和方法 | |
US7133997B2 (en) | Configurable cache |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210115 |