一种基于TCAM实现浮动字符串高速匹配方法组成比例

技术编号:24353742 阅读:27 留言:0更新日期:2020-06-03 02:07
本发明专利技术一种基于TCAM实现浮动字符串高速匹配方法,其中,包括:输入数据帧,同时为每一数据帧分配一个帧ID,用于标记查询所属数据帧;通过帧ID提取数据帧转发或丢弃;对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置;根据有效载荷偏移提取有效载荷数据;查询字符串规则并返回结果数据;通过帧ID提取输入帧,并根据帧ID标记的字符串查询结果,转发命中规则数据帧,并丢弃未命中规则数据帧。

A high speed matching method of floating string based on TCAM

【技术实现步骤摘要】
一种基于TCAM实现浮动字符串高速匹配方法
本专利技术涉及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的功能本文档来自技高网...

【技术保护点】
1.一种基于TCAM实现浮动字符串高速匹配方法,其特征在于,/n输入数据帧,同时为每一数据帧分配一个帧ID,用于标记查询所属数据帧;/n通过帧ID提取数据帧转发或丢弃;/n对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置;/n根据有效载荷偏移提取有效载荷数据;/n查询字符串规则并返回结果数据;/n通过帧ID提取输入帧,并根据帧ID标记的字符串查询结果,转发命中规则数据帧,并丢弃未命中规则数据帧。/n

【技术特征摘要】
1.一种基于TCAM实现浮动字符串高速匹配方法,其特征在于,
输入数据帧,同时为每一数据帧分配一个帧ID,用于标记查询所属数据帧;
通过帧ID提取数据帧转发或丢弃;
对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置;
根据有效载荷偏移提取有效载荷数据;
查询字符串规则并返回结果数据;
通过帧ID提取输入帧,并根据帧ID标记的字符串查询结果,转发命中规则数据帧,并丢弃未命中规则数据帧。


2.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,其特征在于,载荷数据为64字节分段组。


3.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,该结果数据包括查询命中结果、规则ID以及规则长度信息。


4.如权利要求1所述的基于TCAM实现浮动字符串高速匹配方法,其特征在于,对缓存后的数据帧进行解析,获得有效载荷数据首字节的偏移位置包括:接收以太网帧结构的输入数据帧,解析以太网数据帧MAC域、IP头部、TCP以及UDP头部,获取载荷域首字节偏移值,并将输入数据帧、帧ID和载荷域字节偏移。

<...

【专利技术属性】
技术研发人员:李进
申请(专利权)人:恒为科技上海股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1