CN112235198A - 一种基于fpga实现的多用户tcam掩码匹配算法 - Google Patents

一种基于fpga实现的多用户tcam掩码匹配算法 Download PDF

Info

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
Application number
CN202011105097.4A
Other languages
English (en)
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.)
Dongguan Fei Si Ling Communication Technology Co ltd
Original Assignee
Dongguan Fei Si Ling Communication Technology 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 Dongguan Fei Si Ling Communication Technology Co ltd filed Critical Dongguan Fei Si Ling Communication Technology Co ltd
Priority to CN202011105097.4A priority Critical patent/CN112235198A/zh
Publication of CN112235198A publication Critical patent/CN112235198A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures 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掩码匹配算法
技术领域
本发明涉及数据网络通信技术领域,具体是指一种基于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提供多个缓存供多个用户进行配置。
CN202011105097.4A 2020-10-15 2020-10-15 一种基于fpga实现的多用户tcam掩码匹配算法 Pending CN112235198A (zh)

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)

* Cited by examiner, † Cited by third party
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的方法、系统、设备以及介质

Patent Citations (7)

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

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