CN110851672A - 一种基于tcam实现多命中的方法 - Google Patents
一种基于tcam实现多命中的方法 Download PDFInfo
- Publication number
- CN110851672A CN110851672A CN201911106419.4A CN201911106419A CN110851672A CN 110851672 A CN110851672 A CN 110851672A CN 201911106419 A CN201911106419 A CN 201911106419A CN 110851672 A CN110851672 A CN 110851672A
- Authority
- CN
- China
- Prior art keywords
- tcam
- hit
- key
- rule
- packet
- 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.)
- Withdrawn
Links
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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于TCAM实现多命中的方法。该方法控制TCAM的逻辑在基于FPGA的硬件平台上实现,通过利用TCAM中的uda字段,即在TCAM对当前key搜索命中后,会将该key对应规则rule的uda字段与命中结果一并返回,而FPGA内部逻辑在收到TCAM返回的响应结果后会对uda字段进行分析,以决定如何对当前命中的包进行复制。该方法通过利用TCAM中的uda字段,只需对当前包进行一次TCAM查询,无需将包缓存后查询多次,从而加快了搜索速度,提高了搜索性能。本发明提出的方法在数据匹配搜索技术领域有广泛的应用价值。
Description
技术领域
本发明涉及数据包搜索匹配技术领域,尤其涉及一种基于TCAM实现多命中的方法,用于实现基于TCAM进行搜索匹配时数据包的多命中问题。
背景技术
在数据包搜索匹配技术领域,由于TCAM具有规则存储条数多、搜索匹配速度快的优点而被广泛采用。例如,博通公司生产的TCAM芯片NLA12000可存储按160b计算的规则达52万条,且搜索匹配速度达20亿次每秒。在利用TCAM实现数据搜索匹配的方案中,一个技术难点就是多命中问题,即当前的数据包可能命中TCAM数据库database中的多条规则。但由于TCAM的优先级匹配特性,即在数据包命中优先级最高亦即存储在数据库中地址低的规则后,后面的规则即便也会命中当前包,TCAM也不会再去进行搜索匹配。所以,在使用TCAM作为数据搜索匹配方案时,如何解决多命中问题便显得尤其重要。在论文“Algorithms forAdvanced Packet Classification with Ternary CAMs”中提到如何利用TCAM实现数据搜索的多命中,其思想是,将数据包进行缓存,然后从数据包中提取key后发送到TCAM进行搜索匹配,比如匹配到地址为m的规则,接下来将地址为m的规则禁掉,将先前的key再次发送到TCAM进行搜索匹配,由于地址为m的规则已经禁掉,所以TCAM不会再命中地址m的规则,而是继续向后查找,比如又匹配到地址为n的规则,这样的过程一直反复到在将key送到TCAM后,TCAM返回未命中的结果而结束。在多次查询结束后,最后的动作是要将TCAM中先前禁掉的规则重新使能,以便不对接下来的包搜索产生影响。上述论文通过反复查询多次并配合禁掉已经命中的规则的方法,从而实现了基于TCAM的多命中。但从该论文实现的方法中可以看到,此方法需要搜索匹配多次,从而降低了搜索性能,即单位时间搜索匹配包的数量变少。所以,一种好的基于TCAM实现多命中的方法在数据搜索匹配技术领域起到了至关重要的作用。
发明内容
本发明的目的就是要解决上述技术中存在的问题,提供一种基于TCAM实现的查找速度快、搜索性能高的多命中方案,即一种基于TCAM实现多命中的方法。
本发明采取的技术方案是:一种基于TCAM实现多命中的方法,该方法控制TCAM的逻辑在基于FPGA的硬件平台上实现,其特征在于,步骤如下:
1)、收到的数据包pkg分别送到key_extract模块与pkg_filter模块,其中,key_extract模块负责从数据包中提取待搜索的key,通常该key为数据包中的IP五元组;pkg_filter模块会将收到的数据包进行缓存,因为此时还未对当前包进行搜索,并不知道如何对当前包进行处理,即是否舍弃;
2)、key_extract模块将从数据包中提取的key送至TCAM,TCAM会将此key与在数据库database中事先存储的规则rule进行对比,如果key值与rule值相等,则表明当前待搜索的数据包中有关心的信息存在,从而TCAM返回命中的结果;
TCAM中的uda字段,是用户可自定义的字段,与每一条规则一一对应,即当TCAM返回命中结果的同时,会将事先定义好的uda字段一并返回,其核心就在于此,通过利用TCAM中用户可自定义的uda字段,来告知FPGA内部逻辑在当前包命中后该如何去做;
3)、规定uda字段中包含两个字,一个字为rule_id表示规则的ID号,一个字为multi_match表示当前包实则命中了多条规则;pkg_filter模块接收TCAM返回的响应结果,并根据响应结果决定如何对先前缓存的数据包进行处理,如若TCAM返回未命中的结果,pkg_filter模块会将缓存的数据包丢掉;如若TCAM返回了命中的结果,pkg_filter会根据uda字段中的multi_match字将包复制多份,即产生多个命中结果;复制多份的原则是,multi_match字中的每个位表示有另外一条规则也会命中,故pkg_filter模块根据multi_match中的各个比特位是否为1决定rule_id加多少,比如,TCAM返回的uda={rule_id=255,multi_match =’b0000_0000_1111_1111},那么pkg_filter在读到multi_match中最低8个位为1时,便会将命中的包复制8份,并分别赋以255+0、255+1、255+2、255+3、255+4、255+5、255+6、255+7的不同ID号给新复制的8个包,用以标识有8条不同的规则实则都命中了当前包。
本发明所产生的有益效果是:在基于TCAM实现多命中的方案中,通过利用TCAM中的uda字段,只需对当前包进行一次TCAM查询,无需将包缓存后查询多次,一方面由于无需对数据包进行缓存,故节省了FPGA内的存储资源,另一方面对当前包只需搜索一次,故提高了系统搜索性能。本发明提供的方法在数据搜索匹配技术领域有广泛的应用价值。
附图说明
图1为本发明基于TCAM实现多命中方法的原理图。
具体实施方式
以下结合附图对本发明做进一步说明:
图1示意了本发明基于TCAM实现多命中方法的原理图,现从数据流的角度结合图示对本发明提出的方法做详细叙述。收到的数据包pkg分别流入key_extract模块与pkg_filter模块;其中,key_extract模块负责从数据包中提取待搜索的key,通常该key为数据包中的IP五元组;pkg_filter模块会将收到的数据包进行缓存,因为此时还未对当前包进行搜索,并不知道如何对当前包进行处理,即是否舍弃。图中的TCAM是专用于数据搜索匹配的芯片,其内部的database即数据库存储区域用于存储事先设定的规则rule,TCAM芯片本身并不规定rule的格式,可按照项目应用场景的不同自行定义rule格式,通常在网络分流技术领域中,都选定数据包中的IP五元组字段作为关心的rule信息;与每一条规则一一对应的为uda,即用户可自定义的字段,其用法是,在TCAM芯片搜索匹配命中后,比如命中了在数据库database中的地址为m的规则,那么TCAM在返回命中信息的同时,会将该地址为m规则对应的uda信息一并返回,需要强调的是,uda字段是用户自定义的,且与每一条规则一一对应。key_extract模块将从数据包中提取的key送至TCAM,TCAM会将此key与在数据库database中事先存储的规则rule进行对比,如果key值与rule值相等,则表明当前待搜索的数据包中有关心的信息存在,从而TCAM返回命中的结果,与此同时带回相应的uda值。规定uda字段中包含两个字,一个字为rule_id表示规则的ID号,一个字为multi_match表示当前包实则命中了多条规则。pkg_filter模块接收TCAM返回的响应结果,并根据响应结果决定如何对先前缓存的数据包进行处理。如若TCAM返回未命中的结果,pkg_filter模块会将缓存的数据包丢掉;如若TCAM返回了命中的结果,pkg_filter会根据uda字段中的multi_match字将包复制多份,即产生多个命中结果;复制多份的原则是,multi_match字中的每个位表示有另外一条规则也会命中,故pkg_filter模块根据multi_match中的各个比特位是否为1决定rule_id加多少,比如,TCAM返回的uda={rule_id=255,multi_match =’b0000_0000_1111_1111},那么pkg_filter在读到multi_match中最低8个位为1时,便会将命中的包复制8份,并分别赋以255+0、255+1、255+2、255+3、255+4、255+5、255+6、255+7的不同ID号给新复制的8个包,用以标识有8条不同的规则实则都命中了当前包。
从上述对本发明基于TCAM实现多命中的方法可以看出,该方法通过利用TCAM的用户可自定义的uda字段,并规定uda字段包含rule_id与multi_match两个字的方案,合理的解决了需要向TCAM查询多次以得到多个命中结果的性能瓶颈,通过扩充multi_match的位数,原则上查询一次命中多个结果的数目没有上限,这当然要根据实际使用的FPGA资源多少、项目对于多命中个数的需求等各方面因素综合考虑。综上,在基于TCAM实现多命中的搜索匹配方案时,本发明提供的方法具有查找速度快、搜索性能高的优点,在数据搜索匹配技术领域有广泛的应用价值。
Claims (1)
1.一种基于TCAM实现多命中的方法,该方法控制TCAM的逻辑在基于FPGA的硬件平台上实现,其特征在于,步骤如下:
1)、收到的数据包pkg分别送到key_extract模块与pkg_filter模块,其中,key_extract模块负责从数据包中提取待搜索的key,通常该key为数据包中的IP五元组;pkg_filter模块会将收到的数据包进行缓存,因为此时还未对当前包进行搜索,并不知道如何对当前包进行处理,即是否舍弃;
2)、key_extract模块将从数据包中提取的key送至TCAM,TCAM会将此key与在数据库database中事先存储的规则rule进行对比,如果key值与rule值相等,则表明当前待搜索的数据包中有关心的信息存在,从而TCAM返回命中的结果;
TCAM中的uda字段,是用户可自定义的字段,与每一条规则一一对应,即当TCAM返回命中结果的同时,会将事先定义好的uda字段一并返回,其核心就在于此,通过利用TCAM中用户可自定义的uda字段,来告知FPGA内部逻辑在当前包命中后该如何去做;
3)、规定uda字段中包含两个字,一个字为rule_id表示规则的ID号,一个字为multi_match表示当前包实则命中了多条规则;pkg_filter模块接收TCAM返回的响应结果,并根据响应结果决定如何对先前缓存的数据包进行处理,如若TCAM返回未命中的结果,pkg_filter模块会将缓存的数据包丢掉;如若TCAM返回了命中的结果,pkg_filter会根据uda字段中的multi_match字将包复制多份,即产生多个命中结果;复制多份的原则是,multi_match字中的每个位表示有另外一条规则也会命中,故pkg_filter模块根据multi_match中的各个比特位是否为1决定rule_id加多少,比如,TCAM返回的uda={rule_id=255,multi_match =’b0000_0000_1111_1111},那么pkg_filter在读到multi_match中最低8个位为1时,便会将命中的包复制8份,并分别赋以255+0、255+1、255+2、255+3、255+4、255+5、255+6、255+7的不同ID号给新复制的8个包,用以标识有8条不同的规则实则都命中了当前包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911106419.4A CN110851672A (zh) | 2019-11-13 | 2019-11-13 | 一种基于tcam实现多命中的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911106419.4A CN110851672A (zh) | 2019-11-13 | 2019-11-13 | 一种基于tcam实现多命中的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110851672A true CN110851672A (zh) | 2020-02-28 |
Family
ID=69600798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911106419.4A Withdrawn CN110851672A (zh) | 2019-11-13 | 2019-11-13 | 一种基于tcam实现多命中的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851672A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111404798A (zh) * | 2020-03-09 | 2020-07-10 | 湖北微源卓越科技有限公司 | 一种多用户规则匹配以及流量复制的系统和方法 |
CN113709110A (zh) * | 2021-07-27 | 2021-11-26 | 深圳市风云实业有限公司 | 一种软硬结合的入侵检测系统及方法 |
-
2019
- 2019-11-13 CN CN201911106419.4A patent/CN110851672A/zh not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111404798A (zh) * | 2020-03-09 | 2020-07-10 | 湖北微源卓越科技有限公司 | 一种多用户规则匹配以及流量复制的系统和方法 |
CN113709110A (zh) * | 2021-07-27 | 2021-11-26 | 深圳市风云实业有限公司 | 一种软硬结合的入侵检测系统及方法 |
CN113709110B (zh) * | 2021-07-27 | 2023-07-21 | 深圳市风云实业有限公司 | 一种软硬结合的入侵检测系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vamanan et al. | EffiCuts: Optimizing packet classification for memory and throughput | |
US5946679A (en) | System and method for locating a route in a route table using hashing and compressed radix tree searching | |
Goel et al. | Small subset queries and bloom filters using ternary associative memories, with applications | |
US7653670B2 (en) | Storage-efficient and collision-free hash-based packet processing architecture and method | |
KR100612256B1 (ko) | 터너리 내용 주소화 메모리 관리 장치 및 그 방법 | |
US8335780B2 (en) | Scalable high speed relational processor for databases and networks | |
CN102377664B (zh) | 一种基于tcam的区域匹配装置和方法 | |
Dong et al. | Packet classifiers in ternary CAMs can be smaller | |
US8295286B2 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
US6826561B2 (en) | Method and apparatus for performing a binary search on an expanded tree | |
AU2003214223B2 (en) | Longest prefix matching using tree bitmap data structures | |
US7592935B2 (en) | Information retrieval architecture for packet classification | |
CN111131084B (zh) | 一种QoS感知的OpenFlow流表查找方法 | |
CN107528783B (zh) | 利用对前缀长度进行两个搜索阶段的ip路由缓存 | |
CN102333036B (zh) | 一种实现高速路由查找的方法和系统 | |
CN110858823B (zh) | 一种数据包的分类方法、装置及计算机可读存储介质 | |
CN111984835B (zh) | 一种IPv4掩码五元组规则存储压缩方法及装置 | |
Dong et al. | Wire speed packet classification without TCAMs: A few more registers (and a bit of logic) are enough | |
CN110851672A (zh) | 一种基于tcam实现多命中的方法 | |
US20190294549A1 (en) | Hash Table-Based Mask Length Computation for Longest Prefix Match Caching | |
Daly et al. | Tuplemerge: Building online packet classifiers by omitting bits | |
US6970971B1 (en) | Method and apparatus for mapping prefixes and values of a hierarchical space to other representations | |
US20140114995A1 (en) | Scalable high speed relational processor for databases and networks | |
CN107248939B (zh) | 基于hash存储器的网络流高速关联方法 | |
CN111240599A (zh) | 数据流存储方法及装置 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200228 |
|
WW01 | Invention patent application withdrawn after publication |