CN101420440B - 字符串匹配处理方法及装置 - Google Patents
字符串匹配处理方法及装置 Download PDFInfo
- Publication number
- CN101420440B CN101420440B CN2008102390552A CN200810239055A CN101420440B CN 101420440 B CN101420440 B CN 101420440B CN 2008102390552 A CN2008102390552 A CN 2008102390552A CN 200810239055 A CN200810239055 A CN 200810239055A CN 101420440 B CN101420440 B CN 101420440B
- Authority
- CN
- China
- Prior art keywords
- module
- submodule
- character
- suspicious
- string matching
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种字符串匹配处理方法及装置。该方法包括将待匹配报文经过多哈希过滤模块过滤,获得包含可疑字符串的数个可疑数据包,并将数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中;AC引擎模块依次读取数个先进先出子模块中的可疑数据包,并应用AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对数个先进先出子模块中的可疑数据包进行字符串匹配。通过把AC引擎模块拆成四个独立的子模块构成四级流水,提高AC状态机的共享,使多个状态“fifo”分时复用四个子模块,提高SRAM读带宽的利用率,提高逻辑处理性能。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种字符串匹配处理方法及装置。
背景技术
随着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_stat0 | cur_string0 | next_stat0 | Index0 |
cur_stat1 | cur_string1 | next_stat1 | Index1 |
.. | .. | .. | .. |
cur_statn | cur_stringn | next_statn | Indexn |
在字符串匹配技术中用逻辑实现AC算法时,每执行一次可疑字符串匹配都要查询外挂的SRAM,而查询外挂SRAM的效率成为算法实现的关键。AC算法要完全利用QDR带宽,QDR调度器要达到QDR读带宽的100%利用,要求在每个有效周期内均要发出读指令。图4为本发明逻辑实现AC算法状态图示意图,逻辑用AC算法完成一次字符串匹配分四个步骤执行:字符选择、“ac_hash”、查询表项和结果比较,其操作顺序及各步的跳转状态如图4所示:其中,字符选择用于步长选择,根据从“fifo”中读取的状态来确定当前处理的字符串的长度和AC当前状态;“ac_hash”即哈希(Hash)运算:应用哈希(Hash)算法计算需要查找的QDR地址,即外挂SRAM表项的入口地址;查询表项(AC查表)即QDR查表,等待查询结果;结果比较,根据回读数据进行结果比较。本发明实施例的中心思想是为了避免现有使用单一AC逻辑状态机进行字符串匹配时,状态“fifo”要在上一次的数据依次执行完逻辑状态机中四个状态后再发起读操作,造成SRAM的读带宽严重浪费的现象,将单一硬件实现的AC状态机划分成四个相互独立的硬件模块,构成四级流水,提高AC状态机模块的共享;并将用于存储可疑数据包的“stat_fifo”划分出多个“fifo”状态,并分别存储以包为单位的可疑字符串,使多个状态“fifo”时分复用AC状态机的四个模块,减少现场可编程门阵列(FieldProgrammable Gate Array;简称:FPGA)资源,提高了SRAM读带宽的利用率。
图5为本发明字符串匹配处理方法实施例流程图,如图5所示,该方法包括:
步骤100,将待匹配报文经过多哈希过滤模块过滤,获得包含可疑字符串的数个可疑数据包,并将所述数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中;
在逻辑实现字符串匹配的处理过程中,将待匹配报文输入到字符串匹配***中,所述待匹配报文即为将要进行字符串匹配的报文。字符串匹配***中的多哈希过滤模块即“Multihash”过滤模块接收输入的待匹配报文后,对其进行过滤筛选,查找到所有待匹配报文中含有的可疑字符串,并以可疑字符串所在的数据包为单位采用轮循的方式将含有可疑字符串的可疑数据包分别存储在先进先出模块即“stat_fifo”模块中的数个状态“fifo”中,每个状态“fifo”对应于一个先进先出子模块,也就是说本实施例中为了配合AC引擎模块四个独立的硬件模块实现流水化处理,在“stat_fifo”模块中设置多个子模块,并且分别存储“Multihash”过滤模块过滤产生的可疑数据包,使得AC引擎模块四个硬件模块中的后续模块在处理前一个先进先出子模块中的可疑数据包的时候,AC引擎模块四个硬件模块中的前续模块可以继续处理后一个先进先出子模块中的可疑数据包,以达到流水化作业处理。
步骤101,AC引擎模块依次读取所述数个先进先出子模块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配。
“Multihash”过滤模块将数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中后,AC引擎模块开始依次读取各个先进先出子模块中的可疑数据包进行字符串匹配。AC引擎模块为了实现流水化处理,避免在查表时产生不必要的等待,将AC算法中四个状态机分别设置成四个独立的硬件模块,即字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,而且这四个子模块依次连接,其中字符选择子模块用于步长选择,根据从“fifo”中读取的状态来确定当前处理的字符串的长度和AC当前状态;AC哈希子模块应用哈希(Hash)算法计算需要查找的QDR地址,也就是外挂SRAM表项的入口地址;查询表项子模块用于QDR查表,并等待查询结果;结果比较子模块用于根据回读数据进行结果比较。一个数据包依次经过字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块后,便完成了字符串匹配处理过程,而后还可以将比较结果发送出去。
AC引擎模块中四个独立的子模块采用时分复用的方式,对各个先进先出子模块中存储的可疑数据包进行字符串匹配,所述时分复用的方式即为在同一时间内,AC引擎模块的四个子模块均处于工作状态,但每个子模块的处理对象不同,即是针对不同的字符串匹配处理线程而进行的;当AC引擎模块中前续子模块处理完毕一个线程后,该线程转入后续子模块处理;该前续子模块继续对后一个线程进行处理;犹如产品流水生产线一样,每个线程分先后进入AC引擎模块,并依次经过字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块等四个子模块;各个线程之间彼此独立且具有一定地时间间隔,保证AC引擎模块中的每个子模块工作不发生冲突。
AC引擎模块采用时分复用的方式对数个先进先出子模块中的可疑数据包进行字符串匹配具体为,字符选择子模块读取先进先出模块的前一个先进先出子模块中的前一可疑数据包,启动字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对前一个先进先出子模块中的前一可疑数据包的字符串匹配线程;在字符选择子模块对前一个先进先出子模块中的前一可疑数据包进行完字符选择处理并将处理结果发送给AC哈希子模块后,继续应用字符选择子模块读取先进先出模块的后一个先进先出子模块中的前一可疑数据包,启动字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对后一个先进先出子模块中的前一可疑数据包的字符串匹配线程;在字符选择子模块对先进先出模块的最后一个先进先出子模块中的前一可疑数据包进行完字符选择处理并将处理结果发送给AC哈希子模块后,继续应用字符选择子模块读取先进先出模块的首个先进先出子模块中的后一可疑数据包,启动字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对首个先进先出子模块中的后一可疑数据包的字符串匹配线程。具体地为,先进先出模块中的每一个先进先出子模块中均可以存储有多个可疑数据包,所述的可疑数据包为对待匹配报文进行过滤,删除不含有可疑字符串的数据包后,获得的包含有可疑字符串的数据包。字符选择子模块首先读取先进先出模块的第一个先进先出子模块中的第一个可疑数据包,启动对该可疑数据包的字符串匹配线程,对该可疑数据包进行完成字符选择处理后,将处理结果发送给AC哈希子模块后,再应用字符选择子模块读取先进先出模块的第二个先进先出子模块中的第一个可疑数据包,同理启动对该可疑数据包的字符串匹配线程,依次类推,直到字符选择子模块读取出先进先出模块的最后一个先进先出子模块中的第一个可疑数据包后,完成对所有先进先出子模块的首次轮循。在满足查询表项子模块查找外挂SRAM时钟节拍的前提下,当AC引擎模块完成对先进先出模块的第一个先进先出子模块中的第一个可疑数据包的匹配线程后,再应用字符选择子模块继续读取先进先出模块的第一个先进先出子模块中的第二个可疑数据包,并依次类推,完成对所有先进先出子模块的第二次轮循,直到将所有先进先出子模块中的所有可疑数据包均匹配结束后,本次字符串匹配过程结束。
为了更好地提高SRAM的读带宽,可以根据查询表项子模块读取外挂的SRAM数据所需的时钟周期数设置先进先出模块中子模块的数量,可以是设置先进先出子模块的个数等于查询表项子模块读取外挂的SRAM数据所需的时钟周期数,例如查询表项子模块读取外挂的SRAM数据所需的时钟周期数为5个时钟节拍,那么为了使得AC引擎模块中各个子模块在不同时间段内均处于工作状态,要求在每个有效周期内发出读指令,而且没有可疑数据包处于等待匹配的状态,则可以允许共有5个字符串匹配处理线程在AC引擎模块中同时进行,在每个时钟节拍内AC引擎模块中各个子模块均在进行相应的处理,时间恰好匹配,QDR读带宽被100%利用。当然也可以将先进先出模块中先进先出子模块的个数设置为大于查询表项子模块读取外挂的SRAM数据所需的时钟周期数,例如先进先出子模块为6个,这样可以避免先进先出子模块中没有可疑数据包时***资源的浪费。
本发明实施例提供的字符串匹配处理方法中,避免了用单独的一个逻辑状态机实现AC算法时,由于要等读回的数据进行分析,导致数据处理起来有等待的现象,通过把AC引擎模块拆成四个独立的模块构成四级流水,提高AC状态机的共享,使多个状态“fifo”分时复用AC引擎模块的四个子模块,减少FPGA资源;采用流水还可以提高SRAM读带宽的利用率,提高逻辑处理性能。
本实施例字符串匹配处理过程中,还包括***中结果比较子模块进行比较过程时若出现冲突,可以应用查询表项子模块重新查询外挂的SRAM数据,重新进行比较。在同一个字符串匹配线程中,以数个字节为匹配单位,分数个匹配流程同时对可疑字符串进行匹配,匹配流程的个数与匹配单位的字节个数相同,且在其中一个匹配流程中可根据可疑字符串的长度调节匹配单位的长度,具体为,本实施例字符串匹配处理方法中进行一个字符串匹配线程的过程中,可以以一定数目的字节为单位进行字符串匹配,并同时分成多路进行匹配,匹配路数与匹配单位的字节数的个数相同,可以避免出现匹配的遗漏,提高匹配成功率。本实施例以步长为4字节进行匹配,当可疑字符串的前四个字节均匹配成功,则继续对可疑字符串的后续字节进行匹配,例如可疑字符串为“mnkedonkeyab”,则在对该可疑字符串分4路并以4步长进行匹配,第一路首先判断“mnke”,由于没有匹配,结束该路流程;另一路首先判断“nked”由于没有匹配,结束该路流程;再一路首先判断“kedo”由于没有匹配,结束该路流程;最后一路首先判断“edon”,由于“edon”匹配成功,因此再返回字符选择子模块继续判断“keya”是否匹配,虽然“keya”没有完全匹配成功,但是其中的“key”与可疑字符串相类似,因此此时可以调节匹配单位的长度例如以3字节为步长进行匹配,由于“key”匹配成功,因此该可疑数据包的可疑字符串“mnkedonkey”匹配成功,并将匹配结果发送给结果上报模块。
图6为本发明字符串匹配处理方法实施例流水方式实现AC状态机的时序图,如图6所示,用三个状态“fifo”同时起动三个可疑字符串匹配操作线程,AC引擎模块四个独立的状态机采用时分复用的方式对数个状态“fifo”中的可疑数据包进行字符串匹配,采用四级流水后“qdr sram”发起读操作的个数连续性增加,如果把状态“fifo”个数即同时运行的可疑字符串匹配操作线程数,进行适当的增加为大于或等于总的读延迟,那么“qdr sram”发起的读操作便连续起来,外挂SRAM的读带宽能得到100%利用。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图7为本发明字符串匹配处理装置结构示意图,如图7所示,该装置包括多哈希过滤模块1、先进先出模块即“stat_fifo”模块2和AC引擎模块即“Ac_engine”模块3,其中多哈希过滤模块1用于对待匹配报文进行过滤,获得所述待匹配报文中含有可疑字符串的可疑数据包;“stat_fifo”模块2包括数个先进先出子模块,图中用“fifo”表示,附图标号均用21表示,“stat_fifo”模块2用于将多哈希过滤模块1获得的可疑数据包根据一定规则存储到数个“fifo”中;“Ac_engine”模块3用于依次读取数个“fifo”中的可疑数据包,并应用“Ac_engine”模块3中依次连接、且相互独立的字符选择子模块31、AC哈希子模块32、查询表项子模块33和结果比较子模块34,采用时分复用的方式对数个“fifo”中的可疑数据包进行字符串匹配。
具体地,由于AC算法实现时要求一个包的数据必须在一个“Ac_engine”模块中完成匹配,如果只用一个状态“fifo”即一次只能发起一个可疑字符串匹配操作线程,这样就造成“Ac_engine”模块3必须按顺序执行状态机,不能前一个状态机没有完成就启动下一个状态机。但是如果有多个可疑字符串匹配操作线程并行操作共享“Ac engine”模块3,则能够充分利用流水。本实施例提供的字符串匹配处理装置通过增加先进先出模块1里面状态“fifo”的个数(每个状态“fifo”可以起动一个可疑字符串匹配操作线程),即先进先出子模块的个数,使多个状态“fifo”可以轮循地读,从而提高“qdr sram”的读周期个数,利用AC四级流水,达到并行的目的。再有,为了实现四级流水,“Ac engine”模块3中将AC状态机分成四个独立的硬件子模块,包括字符选择子模块31、AC哈希子模块32、查询表项子模块33和结果比较子模块34。结果比较子模块34进行比较时,若出现冲突,则返回到查询表项子模块33重新进行外挂SRAM表项的查询。
为了充分利用外挂SRAM的读带宽,可以根据查询表项子模块33读取外挂的SRAM数据所需的时钟周期数设置“stat_fifo”模块2中的先进先出子模块21的个数,作为一个较佳的实施例可以将先进先出子模块21的个数设置等于查询表项子模块33读取外挂的SRAM数据所需的时钟周期数,这样SRAM的读带宽可以得到100%的利用。考虑到某一先进先出子模块21可能为空时,则可以设置先进先出子模块21的个数大于查询表项子模块33读取外挂的SRAM数据所需的时钟周期数。该装置还包括用于接收“Ac_engine”模块3发送的比较结果并进行上报的结果上报模块4。
报文输入字符串匹配处装置经过多哈希过滤模块1过滤后,可疑字符串以数据包为单位用轮循的方式分别放到数个状态“fifo”里面,同一包内的可疑字符串放到同一个状态“fifo”内,每个“fifo”对应于一个先进先出子模块21,“fifo”的个数n应该大于或等于外挂SRAM读数据所需要的总时钟周期数。“Ac_engine”模块3用四级流水实现,用轮循的方式从“stat_fifo”模块2中的一个“fifo”读取可疑字符串起动一个可疑字符串匹配操作线程。在“Ac_engine”模块3里最多有n个可疑字符串匹配操作线程同时在运行并分时复用“Ac_engine”。多个可疑字符串匹配操作线程并行运行使得外挂SRAM的读操作在连续的进行,SRAM读带宽得以充分利用,逻辑内部处理流水化,这样逻辑的性能得到较大的提升。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种字符串匹配处理方法,其特征在于,包括:
将待匹配报文经过多哈希过滤模块过滤,获得包含可疑字符串的数个可疑数据包,并将所述数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中;
AC引擎模块依次读取所述数个先进先出子模块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配;
其中,所述AC引擎模块依次读取所述数个先进先出子模块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配包括:
所述字符选择子模块读取所述先进先出模块的前一个先进先出子模块中的前一可疑数据包,启动所述字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对所述前一个先进先出子模块中的前一可疑数据包的字符串匹配线程;
所述字符选择子模块对所述前一个先进先出子模块中的前一可疑数据包进行完字符选择处理并将处理结果发送给所述AC哈希子模块后,继续应用所述字符选择子模块读取所述先进先出模块的后一个先进先出子模块中的前一可疑数据包,启动所述字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对所述后一个先进先出子模块中的前一可疑数据包的字符串匹配线程;
所述字符选择子模块对所述先进先出模块的最后一个先进先出子模块中的前一可疑数据包进行完字符选择处理并将处理结果发送给所述AC哈希子模块后,继续应用所述字符选择子模块读取所述先进先出模块的首个先进先出子模块中的后一可疑数据包,启动所述字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块对所述首个先进先出子模块中的后一可疑数据包的字符串匹配线程。
2.根据权利要求1所述的字符串匹配处理方法,其特征在于,所述先进先出模块中先进先出子模块的个数大于或等于所述查询表项子模块读取外挂的静态随机存取存储器数据所需的时钟周期数。
3.根据权利要求1所述的字符串匹配处理方法,其特征在于,所述将所述数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中包括:
采用轮循的方式将所述数个可疑数据包分别存储在先进先出模块中的数个先进先出子模块中。
4.根据权利要求1所述的字符串匹配处理方法,其特征在于,在同一个字符串匹配线程中,还包括:
若所述结果比较子模块进行比较过程中出现冲突,则应用所述查询表项子模块重新查询外挂的静态随机存取存储器数据。
5.根据权利要求1所述的字符串匹配处理方法,其特征在于,在同一个字符串匹配线程中,还包括:
以数个字节为匹配单位,分数个匹配流程同时对所述可疑字符串进行匹配,所述匹配流程的个数与匹配单位的字节个数相同,且在其中一个匹配流程中可根据可疑字符串的长度调节匹配单位的长度。
6.根据权利要求1所述的字符串匹配处理方法,其特征在于,所述方法还包括:所述AC引擎模块将比较结果发送给结果上报模块。
7.一种字符串匹配处理装置,其特征在于,包括:
多哈希过滤模块,用于对待匹配报文进行过滤,获得所述待匹配报文中含有可疑字符串的可疑数据包;
先进先出模块,包括数个先进先出子模块,所述先进先出模块用于将所述多哈希过滤模块获得的可疑数据包根据一定规则存储到所述数个先进先出子模块中;
AC引擎模块,用于依次读取所述数个先进先出子模块中的可疑数据包,并应用所述AC引擎模块中依次连接、且相互独立的字符选择子模块、AC哈希子模块、查询表项子模块和结果比较子模块,采用时分复用的方式对所述数个先进先出子模块中的可疑数据包进行字符串匹配。
8.根据权利要求7所述的字符串匹配处理装置,其特征在于,还包括:
结果上报模块,用于接收所述AC引擎模块发送的比较结果并进行上报。
9.根据权利要求8所述的字符串匹配处理装置,其特征在于,所述先进先出子模块的个数大于或等于所述查询表项子模块读取外挂的静态随机存取存储器数据所需的时钟周期数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102390552A CN101420440B (zh) | 2008-12-05 | 2008-12-05 | 字符串匹配处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102390552A CN101420440B (zh) | 2008-12-05 | 2008-12-05 | 字符串匹配处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101420440A CN101420440A (zh) | 2009-04-29 |
CN101420440B true CN101420440B (zh) | 2011-08-24 |
Family
ID=40631044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102390552A Expired - Fee Related CN101420440B (zh) | 2008-12-05 | 2008-12-05 | 字符串匹配处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101420440B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902461B (zh) * | 2010-04-07 | 2013-01-30 | 北京星网锐捷网络技术有限公司 | 一种数据流内容过滤的方法及装置 |
CN101916262B (zh) * | 2010-07-29 | 2012-07-04 | 北京用友政务软件有限公司 | 一种财政要素匹配的加速方法 |
CN103412858B (zh) * | 2012-07-02 | 2016-09-21 | 清华大学 | 用于文本或网络内容分析的大规模特征匹配的方法 |
CN105354150B (zh) * | 2015-10-31 | 2018-03-16 | 杭州华为数字技术有限公司 | 一种内容匹配方法和装置 |
CN106649836B (zh) * | 2016-12-29 | 2019-11-29 | 武汉新芯集成电路制造有限公司 | 一种基于硬件查找表的模式字符的查找方法 |
CN113163387B (zh) * | 2021-05-21 | 2023-08-15 | 南通大学 | 一种应急通信业务感知方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1392497A (zh) * | 2002-07-24 | 2003-01-22 | 彭泉 | 大字符串匹配方法 |
CN101030221A (zh) * | 2007-04-13 | 2007-09-05 | 清华大学 | 一种用于文本或网络内容分析的大规模多关键词匹配方法 |
CN101165681A (zh) * | 2006-10-17 | 2008-04-23 | 中兴通讯股份有限公司 | 一种通信***中字符串匹配信息的处理方法 |
-
2008
- 2008-12-05 CN CN2008102390552A patent/CN101420440B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1392497A (zh) * | 2002-07-24 | 2003-01-22 | 彭泉 | 大字符串匹配方法 |
CN101165681A (zh) * | 2006-10-17 | 2008-04-23 | 中兴通讯股份有限公司 | 一种通信***中字符串匹配信息的处理方法 |
CN101030221A (zh) * | 2007-04-13 | 2007-09-05 | 清华大学 | 一种用于文本或网络内容分析的大规模多关键词匹配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101420440A (zh) | 2009-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101420440B (zh) | 字符串匹配处理方法及装置 | |
CN103905311B (zh) | 流表匹配方法和装置以及交换机 | |
EP2583175B1 (en) | Parallel processing of continuous queries on data streams | |
CN107491355A (zh) | 一种基于共享内存的进程间功能调用方法及装置 | |
EP2515487B1 (en) | Method and device for storing and searching keyword | |
CN105677683A (zh) | 批量数据查询方法和装置 | |
CN104731956A (zh) | 同步数据的方法、***及相关数据库 | |
CN101604261B (zh) | 超级计算机的任务调度方法 | |
CN107959695B (zh) | 一种数据传输方法及装置 | |
RU2341902C2 (ru) | Способ и устройство для конфигурации данных в устройстве связи | |
CN109145055B (zh) | 一种基于Flink的数据同步方法和*** | |
CN102880724A (zh) | 处理哈希冲突的方法及*** | |
CN101753542A (zh) | 一种加速防火墙过滤规则匹配的方法及装置 | |
CN108776897A (zh) | 数据处理方法、装置、服务器及计算机可读存储介质 | |
US20110238677A1 (en) | Dynamic Sort-Based Parallelism | |
CN102508902A (zh) | 云存储***中可变分块大小的块数据分块方法 | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN102880628A (zh) | 哈希数据存储方法和装置 | |
US20180165333A1 (en) | Big data calculation method and system | |
CN106789697A (zh) | 一种提高大批量网络流表老化效率的方法及装置 | |
CN106648839B (zh) | 数据处理的方法和装置 | |
CN111277612A (zh) | 一种网络报文处理策略生成方法、***及介质 | |
CN112148738A (zh) | 哈希冲突处理方法及*** | |
CN101013382A (zh) | 会话表管理方法及装置 | |
CN109617821B (zh) | 一种组播报文的传输方法、主控板及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110824 Termination date: 20121205 |