CN111222018A - 一种基于tcam实现浮动字符串高速匹配方法 - Google Patents
一种基于tcam实现浮动字符串高速匹配方法 Download PDFInfo
- Publication number
- CN111222018A CN111222018A CN201811407868.8A CN201811407868A CN111222018A CN 111222018 A CN111222018 A CN 111222018A CN 201811407868 A CN201811407868 A CN 201811407868A CN 111222018 A CN111222018 A CN 111222018A
- Authority
- CN
- China
- Prior art keywords
- frame
- data
- rule
- byte
- tcam
- 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
- 238000007667 floating Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明一种基于TCAM实现浮动字符串高速匹配方法,其中,包括:输入数据帧,同时为每一数据帧分配一个帧ID,用于标记查询所属数据帧;通过帧ID提取数据帧转发或丢弃;对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置;根据有效载荷偏移提取有效载荷数据;查询字符串规则并返回结果数据;通过帧ID提取输入帧,并根据帧ID标记的字符串查询结果,转发命中规则数据帧,并丢弃未命中规则数据帧。
Description
技术领域
本发明涉及TCAM浮动字符串处理技术,字符串匹配是基于TCAM实现浮动字符串高速匹配的***。
背景技术
浮动字符串匹配广泛用于文本文件字符搜索,计算机病毒查找,网络传输报文关键字匹配等领域。
现有技术中,通常使用输入字符串流和预定义的字符数组(字符串规则)进行逐字节扫描匹配。而逐字节扫描匹配降低了匹配效率。以FPGA实现为例,处理模块的时钟频率通常为200MHz,逐字节扫描匹配模块每秒最大处理性能也就是200M*8bit/s=1.6Gbps。即使通过模块复制10份也不过16Gbps,而当今网络通信技术高速发展,百G以上的处理板卡以成为市场主流。使用基于逐字节扫描的匹配技术已经无法满足日益增长的网络处理需求。
发明内容
本发明的目的在于提供一种基于TCAM实现浮动字符串高速匹配方法,用于解决上述现有技术的问题。
本发明一种基于TCAM实现浮动字符串高速匹配方法,其中,包括:输入数据帧,同时为每一数据帧分配一个帧ID,用于标记查询所属数据帧;通过帧ID提取数据帧转发或丢弃;对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置;根据有效载荷偏移提取有效载荷数据;查询字符串规则并返回结果数据;通过帧ID提取输入帧,并根据帧ID标记的字符串查询结果,转发命中规则数据帧,并丢弃未命中规则数据帧。
根据本发明的基于TCAM实现浮动字符串高速匹配方法的一实施例,其中,载荷数据为64字节分段组。
根据本发明的基于TCAM实现浮动字符串高速匹配方法的一实施例,其中,该结果数据包括查询命中结果、规则ID以及规则长度信息。
根据本发明的基于TCAM实现浮动字符串高速匹配方法的一实施例,其中,对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置包括:接收以太网帧结构的输入数据帧,解析以太网数据帧MAC域、IP头部、TCP以及UDP头部,获取载荷域首字节偏移值,并将输入数据帧、帧ID和载荷域字节偏移。
根据本发明的基于TCAM实现浮动字符串高速匹配方法的一实施例,其中,根据载荷域字节偏移,提取载荷域数据,将载荷数据以64字节为单位进行分割,每分割一个64字节数据分配一个KEY_ID,每个帧单独分配,从0开始赋值,分割后的数据帧连续送往TCAM管理模块。
根据本发明的基于TCAM实现浮动字符串高速匹配方法的一实施例,其中,将64字节载荷查询数据帧偏移至80字节字符串查询数据,将80字节字符串查询数据送往TCAM芯片查询匹配,TCAM芯片返回查询结果。
根据本发明的基于TCAM实现浮动字符串高速匹配方法的一实施例,其中,根据判断浮动字符串规则是否命中,判断命中字符串规则载荷数据的偏移位置,根据帧ID读取帧首地址和帧长度,提取原始帧,将返回的字符串规则索引以及字符串规则长度信息标记在原始帧的MAC中。
根据本发明的基于TCAM实现浮动字符串高速匹配方法的一实施例,其中,为每个输入数据帧分配一个帧ID,将每个输入数据帧缓存,同时将帧的首地址和帧长度存入以帧ID为地址的帧信息RAM,以帧ID为地址读取帧地址和帧长度,提取数据帧。
本发明提供的一种基于TCAM实现浮动字符串高速匹配的方法,能够添加字符串匹配规则时将字符串在报文中可能出现的位置全部枚举并预存至CAM中,实现单周期扫描较长的字符流。
附图说明
图1所示为基于TCAM实现浮动字符串高速匹配***的模块图;
图2所示为规则配置与查询流程图;
图3所示为帧结构图;
图4所示为字符串KEY生成示意图;
图5所示为字符串规则配置示意图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
图1所示为基于TCAM实现浮动字符串高速匹配***的模块图,如图1所示,基于TCAM实现浮动字符串高速匹配***包括:TCAM芯片1、配置模块2、TCAM管理模块3、帧管理模块4、帧解析模块5、帧字符串查询控制模块6以及帧转发模块7。
如图1所示,基于TCAM实现浮动字符串高速匹配的***,从输入数据帧中提取有效载荷数据,将载荷数据以64字节分段组KEY,送到TCAM中查询预配置的字符串规则获取转发行为,并可将规则ID、规则长度、偏移位置标记于转发帧的MAC中。
具体来看,首先输入数据帧全部缓存至帧管理模块4的内部RAM中,同时为每一帧数据分配一个帧ID,用于标记查询所属帧,以及帧转发模块7通过帧ID提取帧数据转发或丢弃。缓存后的数据帧通过帧解析模块5解析其帧结构获得有效载荷数据首字节的偏移位置,方便后续模块提取载荷数据。帧字符串查询控制模块6主要是通过帧解析模块5提供的有效载荷偏移提取有效载荷数据,并将载荷数据以64字节分段组KEY送到TCAM管理模块3,TCAM管理模块3查询字符串规则并返回查询命中结果、规则ID、规则长度等信息。帧转发模块7通过帧ID提取帧管理模块4缓存的输入帧,并根据帧ID标记的字符串查询结果,可转发命中规则数据帧至特定端口和丢弃未命中规则数据帧。配置模块2管理TCAM的初始化、规则加载和管理监测其它模块寄存器操作。
图2所示为规则配置与查询流程图,图3所示为帧结构图,图4所示为字符串KEY生成示意图,图5所示为字符串规则配置示意图,如图1至图5所示,配置模块2的功能包括:a.TCAM初始化配置(通过MDIO端口配置TCAM初始化);b.TCAM浮动字符串规则加载和删除操作;c.管理其他模块的寄存器配置。
如图1至图5所示,帧管理模块4的功能包括:a.为每个输入帧分配一个帧ID(PKT_ID),从0开始赋值;b.将每个输入帧存入帧缓存RAM中。同时将帧的首地址和帧长度存入以帧ID为地址的帧信息RAM;便于以帧ID为地址读取帧地址和帧长度,提取帧数据;c.将输入帧和帧ID转发至帧解析模块5。
如图1至图5所示,帧解析模块5的功能包括,a.接收以太网帧结构的输入帧;b.解析以太网帧MAC域/IP头部/TCP、UDP头部部,获取载荷域首字节偏移值;c.将输入帧、帧ID和载荷域字节偏移转发至帧字符串查询控制模块。
如图1至图5所示,帧字符串查询控制模块6的功能包括:a.根据帧解析模块提供的载荷域字节偏移,提取载荷域数据。b.将载荷数据以64字节(512位宽)为单位进行分割,每分割一个64字节数据分配一个KEY_ID,每个帧单独分配,从0开始赋值。分割后的数据连续送往TCAM管理模块3。若当前帧载荷末周期数据未满64字节,结尾补0。c.载荷查询数据的ID(SCH_ID)由{PKT_ID,KEY_ID}组合而成。d.将载荷查询数据及其SCH_ID送往TCAM管理模块3。e.接收TCAM管理模块3返回TCAM查询结果(SCH_HIT_FLAG、SCH_HIT_INDEX、SCH_HIT_LEN、SCH_HIT_RULE_ID、SCH_HIT_ACT和SCH_ID)并转发至帧转发模块7。
如图1至图5所示,TCAM管理模块3的功能包括:a.将64字节载荷查询数据偏移至80字节字符串查询数据(参见附图说明-字符串KEY生成图);b.将80字节字符串查询数据送往TCAM芯片1查询匹配,TCAM芯片返回查询结果(SCH_HIT_FLAG、SCH_HIT_INDEX、SCH_HIT_LEN、SCH_HIT_RULE_ID、SCH_HIT_ACT);c.将TCAM芯片1返回查询结果和SCH_ID送往帧字符串查询控制模块6。
如图1至图5所示,帧转发模块7的功能包括:a.根据SCH_HIT_FLAG判断字符串规则是否命中,SCH_HIT_FLAG=1表示命中,SCH_HIT_FLAG=0表示未命中。b.SCH_HIT_INDEX提供TCAM中命中字符串规则索引。根据SCH_ID中的KEY_ID和SCH_HIT_INDEX的低6位判断命中字符串规则载荷数据的偏移位置。KEY_ID提供64字节偏移位置,SCH_HIT_INDEX的低6位提供64字节内偏移位置。c.SCH_HIT_LEN、SCH_HIT_RULE_ID和SCH_HIT_ACT为TCAM表提供的附加信息。SCH_HIT_LEN为命中字符串长度,SCH_HIT_RULE_ID为命中的规则号,SCH_HIT_ACT为命中的规则转发行为(未命中字符串规则帧可定义为丢弃或转发至特定端口)。d.根据SCH_ID中的帧ID从帧管理模块4读取帧首地址和帧长度,提取帧缓存RAM中的原始帧。e.将帧字符串查询规则模块6返回的字符串规则索引、字符串规则长度等信息标记在原始帧的MAC中,供后续设备快速定位。
如图1至图5所示,配置模块2通过本地串行或并行总线与CPU互连。CPU管理所有内部模块和TCAM芯片1的配置。TCAM芯片1配置由CPU发起,通过MDIO接口完成TCAM的初始化配置。TCAM规则配置由CPU发起,通过TCAM管理模块3的interlaken接口完成规则加载与删除。CPU管理其它模块的寄存器配置。
如图1至图5所示,帧解析模块5输入有效的以太网帧,解析MAC层/IP头部/TCP头部或UDP头部,获取载荷数据偏移位置。提取有效载荷数据,并对数据进行偏移。
如图1至图5所示,帧字符串查询控制模块6,对偏移后的载荷数据进行字符扩展(512bits->640bits)。而TCAM芯片1支持640bits匹配查询。字符扩展用于跨边界字符匹配。扩展后字符串查询TCAM,TCAM并行查询所有已加载的规则并返回查询结果。
如图1至图5所示,帧转发模块7,TCAM规则匹配查询返回规则ID、字符偏移、字符串长度、转发行为等信息。帧转发模块7的转发行为控制数据帧转发或丢弃、转发端口、MAC信息标记的功能。
如图1至图5所示,TCAM芯片1为三态内容寻址存储器,每个bit有三个状态:"0"、"1"和"don't care","don't care"通过掩码实现。以NLA12000为例,TCAM支持单条最大640位数据和掩码规则表项。表项总数12.8万个。查询速率为100M/s。单条掩码规则占用64个表项空间。每条规则可配置最大256位宽的扩展信息域,用于存放规则信息(命中字符串长度SCH_HIT_LEN、命中字符串的规则号SCH_HIT_RULE_ID、命中字符串的转发行为SCH_HIT_ACT)。
本发明一种基于TCAM实现浮动字符串高速匹配方法,包括:
输入数据帧,同时为每一数据帧分配一个帧ID,用于标记查询所属数据帧;
通过帧ID提取数据帧转发或丢弃;
对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置;
根据有效载荷偏移提取有效载荷数据;
查询字符串规则并返回结果数据;该结果数据包括查询命中结果、规则ID以及规则长度信息;
通过帧ID提取输入帧,并根据帧ID标记的字符串查询结果,转发命中规则数据帧,并丢弃未命中规则数据帧。
对于一实施例,对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置包括:接收以太网帧结构的输入数据帧,解析以太网数据帧MAC域、IP头部、TCP以及UDP头部,获取载荷域首字节偏移值,并将输入数据帧、帧ID和载荷域字节偏移。
对于一实施例,根据载荷域字节偏移,提取载荷域数据,将载荷数据以64字节为单位进行分割,每分割一个64字节数据分配一个KEY_ID,每个帧单独分配,从0开始赋值。
对于一实施例,将64字节载荷查询数据帧偏移至80字节字符串查询数据,将80字节字符串查询数据送往TCAM芯片查询匹配,TCAM芯片返回查询结果。
对于一实施例,根据判断浮动字符串规则是否命中,判断命中字符串规则载荷数据的偏移位置,根据帧ID读取帧首地址和帧长度,提取原始帧,将返回的字符串规则索引以及字符串规则长度信息标记在原始帧的MAC中。
对于一实施例,为每个输入数据帧分配一个帧ID,将每个输入数据帧缓存,同时将帧的首地址和帧长度存入以帧ID为地址的帧信息RAM,以帧ID为地址读取帧地址和帧长度,提取数据帧。
本发明提供的一种基于TCAM实现浮动字符串高速匹配的方法,能够添加字符串匹配规则时将字符串在报文中可能出现的位置全部枚举并预存至CAM中,实现单周期扫描较长的字符流。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (8)
1.一种基于TCAM实现浮动字符串高速匹配方法,其特征在于,
输入数据帧,同时为每一数据帧分配一个帧ID,用于标记查询所属数据帧;
通过帧ID提取数据帧转发或丢弃;
对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置;
根据有效载荷偏移提取有效载荷数据;
查询字符串规则并返回结果数据;
通过帧ID提取输入帧,并根据帧ID标记的字符串查询结果,转发命中规则数据帧,并丢弃未命中规则数据帧。
2.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,其特征在于,载荷数据为64字节分段组。
3.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,该结果数据包括查询命中结果、规则ID以及规则长度信息。
4.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,其特征在于,对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置包括:接收以太网帧结构的输入数据帧,解析以太网数据帧MAC域、IP头部、TCP以及UDP头部,获取载荷域首字节偏移值,并将输入数据帧、帧ID和载荷域字节偏移。
5.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,其特征在于,根据载荷域字节偏移,提取载荷域数据,将载荷数据以64字节为单位进行分割,每分割一个64字节数据分配一个KEY_ID,每个帧单独分配,从0开始赋值,分割后的数据帧连续送往TCAM管理模块。
6.如权利要求5所述的基于TCAM实现浮动字符串高速匹配方法,其特征在于,将64字节载荷查询数据帧偏移至80字节字符串查询数据,将80字节字符串查询数据送往TCAM芯片查询匹配,TCAM芯片返回查询结果。
7.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,其特征在于,根据判断浮动字符串规则是否命中,判断命中字符串规则载荷数据的偏移位置,根据帧ID读取帧首地址和帧长度,提取原始帧,将返回的字符串规则索引以及字符串规则长度信息标记在原始帧的MAC中。
8.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,其特征在于,为每个输入数据帧分配一个帧ID,将每个输入数据帧缓存,同时将帧的首地址和帧长度存入以帧ID为地址的帧信息RAM,以帧ID为地址读取帧地址和帧长度,提取数据帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811407868.8A CN111222018A (zh) | 2018-11-23 | 2018-11-23 | 一种基于tcam实现浮动字符串高速匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811407868.8A CN111222018A (zh) | 2018-11-23 | 2018-11-23 | 一种基于tcam实现浮动字符串高速匹配方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111222018A true CN111222018A (zh) | 2020-06-02 |
Family
ID=70831876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811407868.8A Pending CN111222018A (zh) | 2018-11-23 | 2018-11-23 | 一种基于tcam实现浮动字符串高速匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111222018A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150442A (zh) * | 2023-02-23 | 2023-05-23 | 成都卓讯智安科技有限公司 | 一种基于tcam的网络数据检测方法和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195977A (zh) * | 2011-04-13 | 2011-09-21 | 北京恒光创新科技股份有限公司 | 一种网络协议识别方法及装置 |
CN102253957A (zh) * | 2011-04-13 | 2011-11-23 | 北京恒光创新科技股份有限公司 | 一种tcam多模式字符串匹配方法及装置 |
CN107733736A (zh) * | 2017-09-23 | 2018-02-23 | 中国人民解放军信息工程大学 | 一种低功耗的高速网络报文检测方法及装置 |
-
2018
- 2018-11-23 CN CN201811407868.8A patent/CN111222018A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195977A (zh) * | 2011-04-13 | 2011-09-21 | 北京恒光创新科技股份有限公司 | 一种网络协议识别方法及装置 |
CN102253957A (zh) * | 2011-04-13 | 2011-11-23 | 北京恒光创新科技股份有限公司 | 一种tcam多模式字符串匹配方法及装置 |
CN107733736A (zh) * | 2017-09-23 | 2018-02-23 | 中国人民解放军信息工程大学 | 一种低功耗的高速网络报文检测方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150442A (zh) * | 2023-02-23 | 2023-05-23 | 成都卓讯智安科技有限公司 | 一种基于tcam的网络数据检测方法和设备 |
CN116150442B (zh) * | 2023-02-23 | 2023-09-15 | 成都卓讯智安科技有限公司 | 一种基于tcam的网络数据检测方法和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110301120B (zh) | 流分类装置、方法和*** | |
US5920886A (en) | Accelerated hierarchical address filtering and translation using binary and ternary CAMs | |
EP1486040B1 (en) | Vlan table management system for memory efficient lookups and inserts in hardware-based packet switches | |
US7539031B2 (en) | Inexact pattern searching using bitmap contained in a bitcheck command | |
JP4156112B2 (ja) | 高速検索方法及び高速検索装置 | |
US7529746B2 (en) | Search circuit having individually selectable search engines | |
US7539032B2 (en) | Regular expression searching of packet contents using dedicated search circuits | |
US7644080B2 (en) | Method and apparatus for managing multiple data flows in a content search system | |
US8799507B2 (en) | Longest prefix match searches with variable numbers of prefixes | |
US8924687B1 (en) | Scalable hash tables | |
CN110808910B (zh) | 一种支持QoS的OpenFlow流表节能存储架构及其方法 | |
US8767757B1 (en) | Packet forwarding system and method using patricia trie configured hardware | |
US20080192754A1 (en) | Routing system and method for managing rule entries of ternary content addressable memory in the same | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
US20120158729A1 (en) | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors | |
CN110912826B (zh) | 利用acl扩充ipfix表项的方法及装置 | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
CN111988231A (zh) | 一种掩码五元组规则匹配的方法及装置 | |
CN107248939B (zh) | 基于hash存储器的网络流高速关联方法 | |
CN112667526A (zh) | 一种访问控制列表电路实现方法及其电路 | |
US20220006737A1 (en) | Flow cache management | |
Yu et al. | Forwarding engine for fast routing lookups and updates | |
CN111222018A (zh) | 一种基于tcam实现浮动字符串高速匹配方法 | |
CN111222017A (zh) | 一种利用tcam实现浮动字符串匹配的*** |
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 |