字符串匹配处理方法及装置制造方法及图纸

技术编号:3542485 阅读:189 留言:0更新日期:2012-04-11 18:40
本发明专利技术实施例提供一种字符串匹配处理方法及装置。该方法包括将待匹配报文经过多哈希过滤模块过滤,获得包含可疑字符串的数个可疑数据包,并将数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中;AC引擎模块依次读取数个先进先出子模块中的可疑数据包,并应用AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对数个先进先出子模块中的可疑数据包进行字符串匹配。通过把AC引擎模块拆成四个独立的子模块构成四级流水,提高AC状态机的共享,使多个状态“fifo”分时复用四个子模块,提高SRAM读带宽的利用率,提高逻辑处理性能。

【技术实现步骤摘要】

本专利技术实施例涉及通信
,尤其涉及一种字符串匹配处理方法及装置
技术介绍
随着IP业务的飞速发展,运营商对网络安全及内容的感知方面需求越来越大,深度包检测(Deep packet inspection;以下简称:DPI)技术,可以实现对网络运营的精细化运作。字符串匹配,即从数据中搜索是否存在目标字符串,是实现DPI方案的一个重要技术。AC(Aho-Corasick)算法是一种典型的多模匹配算法,常被应用于字符串匹配技术中。AC算法使用有限状态机实现,把AC状态机的当前状态、当前输入的字符串及状态机的下一个跳转状态等参数做成表项放在外挂的随机存取存储器(random access memory;简称:RAM)里。每次输入一个字符串用AC去匹配时都要对外挂的RAM进行一次读操作查询表项,而且必须等待读回的数据进行分析。在读外挂RAM时,数据不会立刻回来,而是会有几个时钟节拍的延迟,因此报文中后续的可疑字节只能处于等待状态,造成数据处理不连续;而且由于要等读回的数据进行分析,导致两次四倍数据倍率(Quad Date Rate;以下简称:QDR)数据传输之间的读操作之间的间隔很大,QDR的读数据通道也没有充分被利用,处理性能不高。利用“MultiHash+多步长”AC的方法,即数据流先经过“MultiHash”过滤,把可疑的字符串过滤出来送给多步长AC进行查找。字符串匹配主要使用AC算法有限状态机来实现。经过“MultiHash”过滤后流量会有很大的降低,基本上是可疑字符串的流量,这样减轻了AC的负担,提高了查找的-->速度。图1为现有AC算法字符串查找示意图,图2为图1的逻辑实现方案示意图,图2中各模块功能如下:“MultiHash”模块负责过滤可疑的字符串,把可疑的字符串过滤后放到后级模块“stat_fifo”里面;“Stat_fifo”模块由状态先进先出(fifo)组成,状态“fifo”是按包为单位存储过滤出来的可疑字符串,而且是按在报文中出现的顺序依次存放;“Ac_engine”模块主要功能是对查出的可疑字符串进行精确匹配,它主要由字符选择、“ac_hash”、查询表项、结果比较等四个状态构成。在查询表项状态时读取“qdr sram”里的表项,在结果比较状态时判断此可疑串是否为真,若为真则送给结果上报模块。一个状态“fifo”要有一个对应的“Ac_engine”模块进行处理。如图1所示,先把含有“edonkey”可疑字符串的可疑报文经过“MultiHash”模块过滤,把可疑字符串“edonkey”过滤出来,由于对报文哈希时会有误报现象,“abcde”也被查出来,把查出的可疑字符串存储到“stat_fifo”中,“Ac_engine”模块会从“stat_fifo”模块里面取可疑字符串用AC算法进行更精确的匹配,在用AC算法查找的过程中会从外挂的SRAM(静态RAM)中读取表项目比较,最后将“edonkey”字符串查出来并上报给结果上报模块。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:图3为图2实现方案中AC状态机时序示意图,如图3所示,由于状态“fifo”发起读操作的条件是上一次的数据必须执行完AC状态机,这样就造成“Ac_engine”模块必须按顺序执行AC状态机,不能是前一个状态机没有完成就启动下一个状态机;用单独的一个逻辑状态机实现AC算法,AC状态机在查询表项状态时,要把查出的结果进行分析,由于读SRAM时会有读延时,导致AC状态机在查询表项时等待很长时间。而在此等待数据回来的时间内只发了一次读请求,严重浪费了SRAM的读带宽。
技术实现思路
本专利技术实施例提供一种字符串匹配处理方法及装置,用以解决现有技术-->逻辑实现AC算法时,外挂SRAM读带宽利用率低等缺陷,实现充分利用外挂SRAM读带宽,提高AC算法匹配性能。本专利技术实施例提供一种字符串匹配处理方法,包括:将待匹配报文经过多哈希过滤模块过滤,获得包含可疑字符串的数个可疑数据包,并将所述数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中;AC引擎模块依次读取所述数个先进先出子模块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配。本专利技术实施例提供一种字符串匹配处理装置,包括:多哈希过滤模块,用于对待匹配报文进行过滤,获得所述待匹配报文中含有可疑字符串的可疑数据包;先进先出模块,包括数个先进先出子模块,所述先进先出模块用于将所述多哈希过滤模块获得的可疑数据包根据一定规则存储到所述数个先进先出子模块中;AC引擎模块,用于依次读取所述数个先进先出子模块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配。本专利技术实施例提供的字符串匹配处理方法及装置,避免了用单独的一个逻辑状态机实现AC算法时,由于要等读回的数据进行分析,导致数据处理起来有等待的现象,通过把AC引擎模块拆成四个独立的模块构成四级流水,提高AC状态机的共享,使多个状态“fifo”分时复用AC引擎模块的四个子模块,减少FPGA资源;采用流水还可以提高SRAM读带宽的利用率,提高逻辑处理性能。-->附图说明图1为现有AC算法字符串查找示意图;图2为图1的逻辑实现方案示意图;图3为图2实现方案中AC状态机时序示意图;图4为本专利技术逻辑实现AC算法状态图示意图;图5为本专利技术字符串匹配处理方法实施例流程图;图6为本专利技术字符串匹配处理方法实施例流水方式实现AC状态机的时序图;图7为本专利技术字符串匹配处理装置结构示意图。具体实施方式下面结合附图和具体实施例进一步说明本专利技术实施例的技术方案。在字符串匹配技术中,经常采用AC(Aho-Corasick)算法进行字符串匹配,AC算法使用有限状态机实现,对于每个状态都有3个函数(function):“Goto function”表示跳转到下一状态、“Failure function”表示不可以跳转到下一状态、“Output function”表示这是一个可接受状态。逻辑实现AC算法时,把AC状态机的当前状态、当前输入的字符串及状态机的下一个跳转状态等参数做成表项放在外挂的SRAM里,表项的结构如表1所示:表1 当前状态当前输入的字符串下一个状态其它信息cur_stat0cur_string0next_stat0Index0cur_stat1cur_string1next_stat1Index1........cur_statncur_stringnnext_statnIndexn在字符串匹配技术中用逻辑实现AC算法时,每执行一次可疑字符串匹-->配都要查询外挂的SRAM,而查询外挂SRAM的效率成为算法实现的关键。AC算法要完全利用QDR带宽,QDR调度器要达到QDR读带宽的100%利用,要求在每个有效周期内均要发出读指令。图4为本专利技术逻辑实现AC算法状态图示意图,逻辑用AC算法完成一次字符串匹配分四个步骤执行:字符选择、“ac_hash本文档来自技高网
...

【技术保护点】
一种字符串匹配处理方法,其特征在于,包括: 将待匹配报文经过多哈希过滤模块过滤,获得包含可疑字符串的数个可疑数据包,并将所述数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中; AC引擎模块依次读取所述数个先进先出子模 块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配。

【技术特征摘要】
1、一种字符串匹配处理方法,其特征在于,包括:将待匹配报文经过多哈希过滤模块过滤,获得包含可疑字符串的数个可疑数据包,并将所述数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中;AC引擎模块依次读取所述数个先进先出子模块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配。2、根据权利要求1所述的字符串匹配处理方法,其特征在于,所述AC引擎模块依次读取所述数个先进先出子模块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配包括:所述字符选择子模块读取所述先进先出模块的前一个先进先出子模块中的前一可疑数据包,启动所述字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对所述前一个先进先出子模块中的前一可疑数据包的字符串匹配线程;所述字符选择子模块对所述前一个先进先出子模块中的前一可疑数据包进行完字符选择处理并将处理结果发送给所述AC哈希子模块后,继续应用所述字符选择子模块读取所述先进先出模块的后一个先进先出子模块中的前一可疑数据包,启动所述字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对所述后一个先进先出子模块中的前一可疑数据包的字符串匹配线程;所述字符选择子模块对所述先进先出模块的最后一个先进先出子模块中的前一可疑数据包进行完字符选择处理并将处理结果发送给所述AC哈希子模块后,继续应用所述字符选择子模块读取所述先进先出模块的首个先进先出子模块中的后一可疑数据包,启动所述字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对所述首个先进先出子模块中的后一可疑数据包的字符串匹配线程。3、根据权利要求1或2所述的字符串匹配处理方法,其特征在于,所述先进先出模块...

【专利技术属性】
技术研发人员:陈乃涛
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

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

1