CN102301342A - 正则表达式匹配方法和系统及查找装置 - Google Patents
正则表达式匹配方法和系统及查找装置 Download PDFInfo
- Publication number
- CN102301342A CN102301342A CN2009801552228A CN200980155222A CN102301342A CN 102301342 A CN102301342 A CN 102301342A CN 2009801552228 A CN2009801552228 A CN 2009801552228A CN 200980155222 A CN200980155222 A CN 200980155222A CN 102301342 A CN102301342 A CN 102301342A
- Authority
- CN
- China
- Prior art keywords
- data flow
- tagged word
- hash
- keyword
- character
- 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.)
- Granted
Links
- 230000014509 gene expression Effects 0.000 title claims abstract description 106
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000001914 filtration Methods 0.000 claims abstract description 48
- 238000013507 mapping Methods 0.000 claims abstract description 34
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 240000002853 Nelumbo nucifera Species 0.000 description 2
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 2
- 235000006510 Nelumbo pentapetala Nutrition 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- ZPUCINDJVBIVPJ-LJISPDSOSA-N cocaine Chemical compound O([C@H]1C[C@@H]2CC[C@@H](N2C)[C@H]1C(=O)OC)C(=O)C1=CC=CC=C1 ZPUCINDJVBIVPJ-LJISPDSOSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- 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/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种正则表达式匹配方法和系统及查找装置。该方法包括将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤;将通过字符串过滤的数据流进行正则表达式过滤。本发明实施例中的字符串过滤过程是当所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集时,即表明所述数据流通过字符串过滤,无需保存关键字,也不需要进一步比较关键字和特征字,可以节省存储空间,提高性能。
Description
正则表达式匹配方法和系统及查找装置
技术领域
本发明涉及信息处理技术, 特别涉及一种正则表达式匹配方法和系统及 查找装置。 背景技术
随着 IP网络承载业务的日益丰富、 网络安全需求的日益重要, 数据通信 设备仅仅识别传输控制协议 I国际协议 ( Transfer Control Protocol/Internet Protocol, TCP/IP ) 协议族四层和四层以下的信息是不够的。 深度报文识别 ( Deep Packet Inspection, DPI )技术可以实现才艮文的深层解析, DPI的工作 过程是报文静荷的数据流和特征字库比较的过程, 通过判断报文静荷是否与 特征字库中的一个或多个匹配, 进而进行相应的处理。 其中匹配可以分为字 符串匹配和正则表达式匹配。 现有可以证明用正则表达式匹配可以使 DPI效 率更高, 但是, 正则表达式匹配的运算复杂度与待匹配的报文的长度成正比, 当报文的长度较长时, 正则表达式匹配的运算复杂度较高。
现有解决方案之一是采用改进的正则表达式匹配方法, 流程大致如下: 对待匹配的报文的数据流首先进行字符串过滤, 对通过字符串过滤的数据流 再进行正则表达式过滤, 每个过滤过程中采用对应的字符串匹配或者正则表 达式匹配采用的算法。 这样就相当于对报文首先进行分组, 而每个分组的长 度较短, 对应的正则表达式较少, 相比于将整个报文整体进行正则表达式过 滤, 可以降低运算复杂度。 现有技术中, 在字符串过滤时采用的是精确匹配 的方法, 即只有在待匹配的数据流中的关键字与特征字完全一致时才能通过 字符串过滤。 这种精确匹配的方式需要保存待匹配的数据流中的关键字, 并 可能需要进一步比较关键字和特征字。
术需要保存数据流中的关键字, 占用较多的空间; 需要进一步比较关键字和 特征字时性能会下降。 发明内容
本发明提供一种正则表达式匹配方法和系统及查找装置, 解决现有需要 保存关键字造成的占用空间较大, 及需要进一步比较关键字和特征字造成的 性能下降问题。
本发明实施例提供了一种正则表达式匹配方法, 包括:
将待匹配的数据流进行字符串过滤, 当所述数据流中的关键字与预先设 定的特征字具有至少一相同特征时, 则表明所述数据流通过字符串过滤; 将通过字符串过滤的数据流进行正则表达式过滤。
本发明实施例提供了一种查找装置, 包括:
字符串过滤模块, 用于将待匹配的数据流进行字符串过滤, 当所述数据 流中的关键字与预先设定的特征字具有至少一相同特征时, 则表明所述数据 流通过字符串过滤;
正则表达式过滤模块, 用于将通过字符串过滤的数据流进行正则表达式 过滤。
本发明实施例提供了一种正则表达式匹配系统, 包括上述的查找装置, 还包括更新装置, 所述更新装置包括:
划分模块, 用于将输入规则划分为特征字和正则表达式;
字符串规则库, 用于根据所述特征字得到, 所述字符串过滤模块具体用 于根据所述字符串规则库进行字符串过滤;
正则表达式规则库, 用于保存所述正则表达式, 所述正则表达式过滤模
由上述技术方案可知, 本发明实施例中的字符串过滤过程是当所述数据 流中的关键字与预先设定的特征字具有相同的特征时,而无须两者完全相同,
即表明所述数据流通过字符串过滤, 因此无需保存关键字, 也不需要进一步 比较关键字和特征字, 可以节省存储空间, 提高性能。 附图说明
图 1为本发明实施例参考的布隆过滤器的初始化状态的结构示意图; 图 2为本发明实施例参考的布隆过滤器置位后的结构示意图;
图 3为本发明实施例参考的布隆过滤器判定时的结构示意图;
图 4为本发明第一实施例的方法流程示意图;
图 5为本发明第二实施例的方法流程示意图;
图 6为本发明第二实施例中初始化字符串规则库的方法流程示意图; 图 7 为本发明第二实施例中字符串规则库的添加流程的方法流程示意 图;
图 8 为本发明第二实施例中字符串规则库的删除流程的方法流程示意 图;
图 9为本发明第二实施例中的字符串过滤的方法流程示意图;
图 10为本发明第一实施例中进行正则表达式过滤的方法流程示意图; 图 11为本发明第三实施例的查找装置的结构示意图;
图 12为本发明第四实施例的系统的结构示意图。 具体实施方式
下面通过附图和实施例, 对本发明的技术方案做进一步的详细描述。 为了更好地理解本发明实施例, 下面先介绍一下本发明实施例参考的布 隆过滤器( Bloom Filter )技术。
布隆过滤器是一种空间效率很高的随机数据结构, 它利用位数组很简洁 地表示一个集合, 并能判断一个元素是否属于这个集合。 布隆过滤器可能会 把不属于这个集合的元素判定为属于这个集合, 但不会把属于这个集合的元
素判定为不属于这个集合。 在能容忍低错误率的应用场合下, 布隆过滤器通 过极少的错误换取了存储空间的极大节省。
图 1为本发明实施例参考的布隆过滤器的初始化状态的结构示意图。 参 见图 1, 在初始状态时, 布隆过滤器是一个包含 m位的位数组, 每一位都置 为 0。
图 2为本发明实施例参考的布隆过滤器置位后的结构示意图。 为了表达 S = }这样一个 n个元素的集合,布隆过滤器使用 k个相互独立的哈 希( hash )函数,它们分别将集合中的每个元素映射到 { 1 , ... ,m}的位置范围中。 对任意一个元素 X, 第 i 个哈希函数映射的位置/^ X)中的数值就会被置为 1 ( \<i<k )0当一个位置中的数值多次被置为 1时,那么只有第一次会起作用, 后面几次将没有任何效果。 例如, 参见图 2, 本实施例以 k=3, 且有两个哈希 函数选中同一个位置 (从左边数第五位)为例。
图 3为本发明实施例参考的布隆过滤器判定时的结构示意图。 在判断 y 是否属于这个集合(S)时,首先对 y进行 k次哈希运算,如果所有/^ ( ( \<i<k ) 的位置都是 1, 那么就认为 y是这个集合中的元素, 否则就认为 y不是这个 集合中的元素。 例如, 参见图 3, 不是这个集合中的元素, 2是这个集合中 的元素。 当然, 由于不同元素也可能被哈希到同一个位置, 因此 2可能事实上 属于这个集合, 也可能事实上不属于这个集合, 是被误判属于这个集合的。
在现有技术精确字符串过滤时, 当确定一个元素映射的位置均为 1后, 为了避免误判, 还需要继续进行关键字和特征字的比较。 即现有技术中, 对 应上述的布隆过滤器的某一位下挂一个链表, 该链表用于保存特征字 (例如 上述的集合 S), 当确定一个关键字映射的位置均为 1后, 还需要保存该关键 字(例如 2 ), 之后, 再比对 j2和集合 S, 判定 2是否确实属于 S, 当 2确实 属于 S时, 才表明 Λ通过字符串过滤。
但是, 由于正则表达式匹配过程是包括字符串过滤和正则表达式过滤的, 对于通过字符串过滤的数据流还要进行后续的正则表达式过滤, 而后续的正
则表达式过滤已被证明效率及精度都很高, 因此, 之前的字符串过滤是无需 这样精确的,并且精确的字符串过滤需要占用大量的存储空间及多次的查找 , 以大空间占用和性能下降换取意义不大的精确字符串过滤是不适合的。
本发明实施例正是为了克服正则表达式匹配时, 精确字符串过滤存在的 上述问题。 本发明实施例主要基于如下的思路:
1、本发明实施例同样采用字符串过滤和正则表达式过滤结合的方式进行 正则表达式匹配。
由于将待匹配的数据流整体进行正则表达式过滤时, 运算量较大。 例如, 从理论的最坏情况看, 长度为 n 的正则表达式用非确定性有限状态机 ( Non-deterministic Finite Automata, NFA )表示的空间复杂度是 0(n), 时间 复杂度是 0("2), 用确定性有限状态机(Deterministic Finite Automata, DFA ) 表示的空间复杂度是 0(2"), 时间复杂度是 0(1)。 而字符串过滤和正则表达式 过滤结合的方式具有如下优点:
首先, 字符串过滤的处理比较简单;
其次, 字符串过滤可以将正则表达式分组, 一个组只对应少数几个正则 表达式, 对于 snort (—种网络工具, 可以用于协议分析), 大多数的组只有 一个正则表达式, 自然的降低了正则表达式处理的复杂度;
再次, 只有匹配上字符串部分的报文或报文片段才需要继续进行正则表 达式匹配, 减轻了正则表达式匹配的压力, 有助于提高性能。
2、 本发明实施例在字符串过滤时并不采用精确过滤, 即并不需要关键字 与特征字完全一致, 因此不需要保存关键字和进行关键字与特征字的比对, 因此可以节省存储空间, 提高性能。
图 4为本发明第一实施例的方法流程示意图, 包括:
41 : 查找装置将待匹配的数据流进行字符串过滤, 当所述数据流中的关 键字与预先设定的特征字具有至少一相同特征时, 则表明所述数据流通过字 符串过滤;
42: 查找装置将通过字符串过滤的数据流进行正则表达式过滤。
本实施例中字符串过滤过程是当所述数据流中的关键字与预先设定的特 征字具有相同的特征时, 而无须两者完全相同, 即表明所述数据流通过字符 串过滤, 因此无需保存关键字, 也不需要进一步比较关键字和特征字, 可以 节省存储空间, 提高性能。
在字符串过滤及正则表达式过滤时可以根据预先得到的规则库进行, 因 此, 本发明实施例在第一实施例的基础上进一步包括在数据流匹配之前得到 对应的规则库的过程。 具体可以如第二实施例所述:
图 5为本发明第二实施例的方法流程示意图, 包括:
51 : 更新装置根据输入规则得到字符串规则库和正则表达式规则库。 由于正则表达式匹配的效率更高, 因此目前通常的输入规则都是正则表 达式, 为了进行字符串匹配, 需要在为正则表达式的输入规则中提取出字符 串, 利用提取出的字符串进行字符串匹配, 其中, 提取出的字符串称为特征 字。 具体实施例中, 例如, 假定待匹配的数据流的关键字的最大长度为 L, 则可以将为正则表达式的输入规则中的第一个长度为 L 的字符串作为特征 字, 如果输入规则中不能提取出长度为 L的字符串, 也可以将长度最接近 L 的字符串作为特征字。
之后, 用特征字构建字符串规则库, 用提取特征字后的输入规则构建正 则表达式规则库。 其中, 用特征字构建字符串规则库的流程可以是一个动态 维护的流程, 即首先初始化字符串规则库, 之后, 可以动态添加或者删除特 征字。
52: 查找装置将待匹配的数据流, 根据字符串规则库进行字符串过滤。 当所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集时, 表明所述数据流通过字符串过滤。
53: 查找装置将通过字符串匹配的数据流, 根据正则表达式规则库进行 正则表达式过滤。
本实施例中的字符串过滤过程是当所述数据流的关键字哈希映射的位置 属于特征字哈希映射的位置时, 即表明所述数据流通过字符串过滤, 无需保 存关键字, 也不需要进一步比较关键字和特征字, 可以节省存储空间, 提高 性能。
其中, 可以参考布隆过滤器的方法用特征字构建并动态维护字符串规则 库。 但是, 现有布隆过滤器的位数组的每位只能是 0或 1 , 当多个特征字映射 到同一位时, 该位仍旧只能是 1 , 当需要删除该多个特征字中的任一个时, 该 映射的位置处的处理会出现问题。 例如, 当删除某一特征字时, 该特征字原来 映射的位置应该被置 0, 而不再是 1 , 但是, 由于还存在其他的特征字映射到 该位, 因此还不能修改为 0, 这样便会存在矛盾, 难以确定该位是置 0还是 1。
为了解决上述矛盾的问题, 本发明实施例还可以对应布隆过滤器的位数 组设置一个计数数组, 该计数数组的每一个计数元素分别与布隆过滤器的位 数组的每一位对应, 用于计算映射到对应位的特征字的个数。 例如, 布隆过 滤器的位数组为 m位(即哈希运算得到的哈希值为 l〜m ), 则构建的计数数 值包括 m个计数元素,每个计数元素的位宽为「log2 N] ,其中「*]表示向上取整, N为特征字的个数。 之所以将每个计数元素的位宽设置为「log2 N] , 是可以保 证所有的特征字都映射到某一位这种极端情况。 在实施例时通常特征字的个 数不是 4艮多, 通常每个计数元素的位宽取为 16位(bit )或 32位即可。
在上述分析的基础上, 本发明实施例的维护字符串规则库的流程可以包 括初始化流程、 添加流程和删除流程。 具体如下:
图 6为本发明第二实施例中初始化字符串规则库的方法流程示意图, 本 包括:
61 : 开始。
62: 将计数数组的计数元素置 0。
63 : 将计数数组的计数元素对应的链表指针初始化为空指针。
类似现有布隆过滤器用位元素下挂链表的方式, 本实施例用计数元素下
挂链表, 该链表用于保存特征字, 当然, 该链表也可以下挂在位数组的位元 素下。
64: 结束。
图 7 为本发明第二实施例中字符串规则库的添加流程的方法流程示意 图, 包括:
701 : 开始。
702: 将待添加的特征字用 k个相互独立的哈希函数进行 k次哈希运算, 得到 M个哈希值。 其中, k的数值及哈希函数可以根据实际需要设定。
703: 在 M个哈希值中确定一个用于下挂链表, 该链表用于保存特征字, 例如, 将得到的 M个哈希值中的最小值确定为用于下挂链表的地址。
704: 遍历该最小值下挂的链表中是否有该特征字, 若有, 执行 705 , 否 则, 执行 706。
705: 返回 "重复添加" 信息。 之后, 执行 710。
步骤 706: 将该特征字添加到该链表中。
707: 将该 M个哈希值对应的计数元素的值增加 1。 例如, M个哈希值 分别为 1、 3、 5 , 则将计数数组的第 1、 3、 5个计数元素的值 +1。
708: 判断是否存在某一计数元素的值由 0变为非 0 (例如 1 ), 若是, 执 行 709, 否则, 执行 710。
709: 将该计数元素对应的位元素的值置为 1。 其中, 位元素为位数组中 的元素, 位数组为布隆过滤器。
710: 结束。
对于每个特征字都执行上述的流程, 从上述流程可知, 计数元素的值可 能为 0〜N†的任一个值, 其中, N为特征字的个数。 但是, 位元素的值只能 是 0或 1 , 与布隆过滤器类似, 只有第一次映射起作用。
图 8 为本发明第二实施例中字符串规则库的删除流程的方法流程示意 图, 包括:
801 : 开始。
802: 将待删除的特征字用 k个相互独立的哈希函数进行 k次哈希运算, 得到 M个哈希值。
803: 在 M个哈希值中确定一个用于下挂链表, 该链表用于保存特征字, 例如, 将得到的 M个哈希值中的最小值确定为用于下挂链表的地址。
804: 遍历该最小值下挂的链表中是否有该特征字, 若有, 执行 806, 否 则, 执行 805。
805: 返回 "删除不存在的特征字" 信息。 之后, 执行 810。
806: 将该特征字从该链表中删除。
807: 将该 M个哈希值对应的计数元素的值减 1。 例如, M个哈希值分 别为 1、 3、 5 , 则将计数数组的第 1、 3、 5个计数元素的值 -1。
808: 判断计数元素的值是否由非 0变为 0, 若是, 执行 809, 否则, 执 行 810。
809: 将该计数元素对应的位元素的值置为 0。 其中, 位元素为位数组中 的元素, 位数组为布隆过滤器。 例如, 计数数组的第 1个计数元素由非 0变 为 0 (由于计数元素的值是依次减 1的, 因此这里通常是由 1变为 0 ), 则将 位数组中的第 1 个位元素置 0。 也就是说, 当存在多个特征字映射到同一个 位置时, 只有在该多个特征字都被删除后, 该对应的位置上的值才被置 0, 否则保持为 1。
810: 结束。
对于每个特征字都执行上述的流程,从上述流程可知,通过设置计数数组, 可以在多个特征字映射到同一个位置时, 只有在该多个特征字都被删除后, 该 对应的位置上的值才被置 0, 解决现有只有位数组造成的删除冲突问题。
在上述构建了字符串规则库的基础上, 本发明实施例在字符串过滤时便 可以根据构建的字符串规则库进行字符串过滤。 具体可以参见如下实施例: 图 9为本发明第二实施例中的字符串过滤的方法流程示意图, 包括:
91 : 开始。
92: 查找装置将待匹配的数据流中的关键字(Key )用 k个哈希函数进行 k次哈希运算, 得到一个或多个哈希值。 其中, k个哈希函数需要与特征字处 理时的 k个哈希函数相同。
93 : 查找装置根据字符串规则库中的位数组, 判断该一个或多个哈希值 对应的位元素的值是否均为 1 , 若是, 执行 94, 否则, 执行 95。
根据图 7所示的实施例可知, 当特征字映射到位数组的某一位时, 该位 即被置为 1 , 当 93中的哈希值对应的位元素的值为 1时, 表明了该关键字哈 希映射的位置属于特征字哈希映射的位置, 该关键字将通过字符串过滤。
94: 得到该数据流通过字符串过滤。 之后, 执行 96。
在现有技术的精确字符串匹配过程中, 当关键字的哈希值对应的位元素 均为 1 时, 还不能得到该数据流通过字符串匹配, 其还要进一步比较关键值 和特征字, 只有在关键值和特征字完全相同时, 才表明通过字符串匹配。 而 本实施例无需进行后续的进一步比较的过程, 与现有精确字符串匹配相比, 本实施例可以称为模糊字符串匹配。 由于数据流通过字符串匹配后还要进行 正则表达式匹配, 而正则表达式匹配的精度较高, 在此之前的字符串匹配的 精度可以无需太高, 之前的字符串匹配主要实现分组的目的, 这样可以降低 纯粹正则表达式匹配的运算复杂度。 并且, 本实施例虽然是模糊匹配, 但是 由于进行了 k次哈希运算, 在一定程度上是可以提高精度的。
95: 得到该数据流未通过字符串过滤。 之后, 执行 96。
96: 结束。
本实施例中的字符串过滤过程是当所述数据流的关键字哈希映射的位置 属于特征字哈希映射的位置时, 即表明所述数据流通过字符串过滤, 无需保 存关键字, 也不需要进一步比较关键字和特征字, 可以节省存储空间, 提高 性能。
上述对字符串过滤的流程进行了描述, 当通过字符串过滤的数据流之后
了特征字后的输入规则。 该正则表达式可以保存在片外随机访问存储器
( Random Access Memory , RAM ) 中, 具体可以采用动态随机访问存储器 ( Dynamic Random Access Memory DRAM ), 也可以采用静态随机访问存储 器( Static Random Access Memory SRAM )。 并且, 正则表达式保存的首地址 可以根据对应的特征字的哈希值确定, 例如, 一个输入规则被划分为了第一 特征字和第一正则表达式, 则第一正则表达式的首地址 A可以采用如下方法 确定: 利用上述 k个哈希函数中的一个或者其他的某一哈希函数(哈希函数 H ), 对该第一特征字进行哈希运算得到哈希值 B, 之后, 根据第一正则表达 式的大小确定一个左移的位数 b, 然后, 将 B左移 b位后得到八。 之后, 将 第一正则表达式保存在以 A为首地址的 RAM中。
在上述正则表达式保存在片外 RAM 的基础上, 本发明实施例进行正则 表达式过滤的流程如下:
图 10为本发明第一实施例中进行正则表达式过滤的方法流程示意图, 包 括:
101 : 得到通过字符串过滤的数据流。 之后, 分别执行 102和 105。
102: 对该数据流的关键字再进行一次哈希运算, 得到第一哈希地址, 该 哈希运算采用的哈希函数为保存正则表达式时采用的哈希函数 H。
103: 对第一哈希地址进行左移, 得到第二哈希地址, 该左移的位数为保 存正则表达式时的 b。
104: 根据第二哈希地址从片外 RAM中得到正则表达式。
105: 对该数据流进行延时处理, 延时处理的时间与在片外 RAM中获取 正则表达式的时间相同。
106: 用该正则表达式对该数据流进行正则表达式过滤。
其中, 进行正则表达式过滤时采用的算法可以为 NFA、 DFA或者 HFA ( NFA和 DFA的混合算法)。 本发明实施例的重点是在正则表达式匹配时处
于预匹配阶段的字符串过滤采用上述模糊匹配的方式, 而在具体的正则表达 式过滤阶段的具体算法则不限定, 可以采用现有任何一种(或混合的)正则 表达式过滤方法。
图 11为本发明第三实施例的查找装置的结构示意图, 包括字符串过滤模 块 111和正则表达式过滤模块 112。字符串过滤模块 111用于将待匹配的数据 流进行字符串过滤, 当所述数据流中的关键字与预先设定的特征字具有至少 一相同特征时,则表明所述数据流通过字符串过滤;正则表达式过滤模块 112 用于将通过字符串过滤的数据流进行正则表达式过滤。
具体地, 字符串模块可以包括第一单元、 第二单元和第三单元; 第一单 元用于将所述数据流的关键字进行哈希运算, 得到关键字的哈希值; 第二单 元用于判断所述数据流的关键字哈希映射的位置是否为特征字哈希映射的位 置的子集; 第三单元用于当所述数据流的关键字哈希映射的位置是特征字哈 希映射的位置的子集时, 得到所述数据流通过字符串过滤。
本实施例中的字符串过滤过程是当所述数据流中的关键字与预先设定的 特征字具有相同的特征时, 而无须两者完全相同, 即表明所述数据流通过字 符串过滤, 因此无需保存关键字, 也不需要进一步比较关键字和特征字, 可 以节省存储空间, 提高性能。
图 12为本发明第四实施例的系统的结构示意图, 包括如图 11所述的查 找装置, 即包括字符串过滤模块 121 和正则表达式过滤模块 122, 还包括更 新模块, 该更新模块包括划分模块 123、 字符串规则库 124和正则表达式规 则库 125。 划分模块 123用于将输入规则划分为特征字和正则表达式; 字符 串规则库 124用于根据所述特征字得到, 所述字符串过滤模块 121具体用于 根据所述字符串规则库进行字符串过滤; 正则表达式规则库 125用于保存所 述正则表达式, 所述正则表达式过滤模块 122具体用于根据所述正则表达式 规则库进行正则表达式过滤。
具体地, 字符串规则库可以包括初始化单元和添加单元; 初始化单元用
于建立对应特征字的位数组、 与位数组对应的计数数组和用于保存特征字的 下挂链表; 并将所述计数数组中的计数元素均置为 0, 将指向所述链表的链 表指针置为空指针。 添加单元用于对待添加的特征字用 k个哈希函数进行 k 次哈希运算, 得到待添加的特征字的哈希值; 将待添加的特征字的哈希值对 应的计数数组中计数元素的值增加 1 ; 将从 0变为非 0的计数元素对应的位 元素的值置为 1。 此时, 所述第二单元具体用于对所述数据流的关键字用所 述 k个哈希函数进行哈希运算后得到关键字的哈希值, 当所述关键字的哈希 值对应的位元素的值均为 1 时, 判断得到所述数据流的关键字哈希映射的位 置是特征字哈希映射的位置的子集。
本实施例的字符串规则库还可以包括: 删除单元, 用于对待删除的特征 字用所述 k个哈希函数进行 k次哈希运算, 得到待删除的特征字的哈希值; 将待删除的特征字的哈希值对应的计数数组中计数元素的值减 1 ; 将从非 0 变为 0的计数元素对应的位元素的值置为 0。
本实施例中的字符串过滤过程是当所述数据流中的关键字与预先设定的 特征字具有相同的特征时, 而无须两者完全相同, 即表明所述数据流通过字 符串过滤, 因此无需保存关键字, 也不需要进一步比较关键字和特征字, 可 以节省存储空间, 提高性能。
本领域普通技术人员可以理解: 实现上述方法实施例的全部或部分步骤 可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取 存储介质中, 该程序在执行时, 执行包括上述方法实施例的步骤; 而前述的存 储介质包括: ROM、 RAM, 磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是: 以上实施例仅用以说明本发明的技术方案而非对其进 行限制, 尽管参照较佳实施例对本发明进行了详细的说明, 本领域的普通技 术人员应当理解: 其依然可以对本发明的技术方案进行修改或者等同替换, 而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的 4青神和范围。
Claims (13)
- 权 利 要 求1、 一种正则表达式匹配方法, 其特征在于, 包括:将待匹配的数据流进行字符串过滤, 当所述数据流中的关键字与预先设 定的特征字具有至少一相同特征时, 则表明所述数据流通过字符串过滤; 将通过字符串过滤的数据流进行正则表达式过滤。
- 2、 根据权利要求 1所述的方法, 其特征在于,所述具有至少一相同特征为: 所述数据流的关键字哈希映射的位置是特 征字哈希映射的位置的子集;所述将待匹配的数据流进行字符串过滤, 当所述数据流中的关键字与预 先设定的特征字具有至少一相同特征时, 则表明所述数据流通过字符串过滤 包括:将所述数据流的关键字进行哈希运算, 得到关键字的哈希值;判断所述数据流的关键字哈希映射的位置是否属于特征字哈希映射的位 置;当所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集 时 , 得到所述数据流通过字符串过滤。
- 3、 根据权利要求 2所述的方法, 其特征在于, 还包括:根据输入规则得到字符串规则库和正则表达式规则库;所述将待匹配的数据流进行字符串过滤包括: 根据所述字符串规则库, 将待匹配的数据流进行字符串过滤;所述将通过字符串过滤的数据流进行正则表达式过滤包括: 根据所述正 则表达式规则库, 将通过字符串过滤的数据流进行正则表达式过滤。
- 4、 根据权利要求 3所述的方法, 其特征在于, 所述根据输入规则得到字 符串规则库包括:在所述输入规则中提取出特征字;建立对应特征字的位数组、 与位数组对应的计数数组和用于保存特征字 的下挂链表;根据所述计数数组、 位数组和链表得到字符串规则库。
- 5、 根据权利要求 4所述的方法, 其特征在于, 所述得到字符串规则库包 括初始化字符串规则库,所述初始化字符串规则库包括:将所述计数数组中的计数元素均置为 0;将指向所述链表的链表指针置为空指针。
- 6、 根据权利要求 5所述的方法, 其特征在于, 所述得到字符串规则库还 包括在字符串规则库中添加特征字的流程,所述在字符串规则库中添加特征字的流程包括:对待添加的特征字用 k个哈希函数进行 k次哈希运算, 得到待添加的特 征字的哈希值;将待添加的特征字的哈希值对应的计数数组中计数元素的值增加 1; 将从 0变为非 0的计数元素对应的位元素的值置为 1 ;所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集具 体为: 所述数据流的关键字用所述 k个哈希函数进行哈希运算后得到的哈希 值对应的位元素的值均为 1。
- 7、 根据权利要求 6所述的方法, 其特征在于, 还包括:在所述待添加的特征字的哈希值中确定一个用于下挂所述链表; 当所述链表中没有所述待添加的特征字时, 将所述待添加的特征字添加 到所述链表中。
- 8、 根据权利要求 6所述的方法, 其特征在于, 所述得到字符串规则库还 包括在字符串规则库中删除特征字的流程,所述在字符串规则库中删除特征字的流程包括:对待删除的特征字用所述 k个哈希函数进行 k次哈希运算, 得到待删除 的特征字的哈希值; 将待删除的特征字的哈希值对应的计数数组中计数元素的值减 1; 将从非 0变为 0的计数元素对应的位元素的值置为 0。
- 9、 根据权利要求 8所述的方法, 其特征在于, 还包括:当所述链表中存在所述待删除的特征字时, 将所述待删除的特征字从所 述链表中删除。
- 10、 根据权利要求 1所述的方法, 其特征在于, 所述将通过字符串过滤 的数据流进行正则表达式过滤包括:获取用于正则表达式过滤的正则表达式;将所述通过字符串过滤的数据流进行延时处理, 所述延时处理的时间与 获取正则表达式的时间相同;用所述正则表达式, 对所述通过字符串过滤的数据流进行正则表达式过 滤。
- 11、 一种查找装置, 其特征在于, 包括:字符串过滤模块, 用于将待匹配的数据流进行字符串过滤, 当所述数据 流中的关键字与预先设定的特征字具有至少一相同特征时, 则表明所述数据 流通过字符串过滤;正则表达式过滤模块, 用于将通过字符串过滤的数据流进行正则表达式 过滤。
- 12、 根据权利要求 11所述的查找装置, 其特征在于, 所述字符串过滤模 块包括:第一单元, 用于将所述数据流的关键字进行哈希运算, 得到关键字的哈 希值;第二单元, 用于判断所述数据流的关键字哈希映射的位置是否为特征字 哈希映射的位置的子集;第三单元, 用于当所述数据流的关键字哈希映射的位置是特征字哈希映 13、 一种正则表达式匹配系统, 其特征在于, 包括权利要求 11所述的查 找装置, 还包括更新装置, 所述更新装置包括:划分模块, 用于将输入规则划分为特征字和正则表达式;字符串规则库, 用于根据所述特征字得到, 所述字符串过滤模块具体用 于根据所述字符串规则库进行字符串过滤;正则表达式规则库, 用于保存所述正则表达式, 所述正则表达式过滤模 则表达式规则库进行正则表达式过; ¾14、根据权利要求 13所述的系统,其特征在于,所述字符串规则库包括: 初始化单元, 用于建立对应特征字的位数组、 与位数组对应的计数数组 和用于保存特征字的下挂链表; 并将所述计数数组中的计数元素均置为 0, 将指向所述链表的链表指针置为空指针;添加单元, 用于对待添加的特征字用 k个哈希函数进行 k次哈希运算, 得到待添加的特征字的哈希值; 将待添加的特征字的哈希值对应的计数数组 中计数元素的值增加 1 ;将从 0变为非 0的计数元素对应的位元素的值置为 1 ; 所述第二单元具体用于对所述数据流的关键字用所述 k个哈希函数进行 哈希运算后得到关键字的哈希值, 当所述关键字的哈希值对应的位元素的值 均为 1 时, 判断得到所述数据流的关键字哈希映射的位置是特征字哈希映射 的位置的子集。
- 15、 根据权利要求 14所述的系统, 其特征在于, 所述字符串规则库还包 括:删除单元, 用于对待删除的特征字用所述 k个哈希函数进行 k次哈希运 算, 得到待删除的特征字的哈希值; 将待删除的特征字的哈希值对应的计数 数组中计数元素的值减 1 ; 将从非 0变为 0的计数元素对应的位元素的值置 为 0。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2009/072982 WO2011011916A1 (zh) | 2009-07-29 | 2009-07-29 | 正则表达式匹配方法和系统及查找装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102301342A true CN102301342A (zh) | 2011-12-28 |
CN102301342B CN102301342B (zh) | 2014-07-30 |
Family
ID=43528689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980155222.8A Expired - Fee Related CN102301342B (zh) | 2009-07-29 | 2009-07-29 | 正则表达式匹配方法和系统及查找装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9390134B2 (zh) |
EP (1) | EP2437173A4 (zh) |
CN (1) | CN102301342B (zh) |
WO (1) | WO2011011916A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103218379A (zh) * | 2012-01-19 | 2013-07-24 | 北京千橡网景科技发展有限公司 | 用于解析图释的方法及装置 |
CN107122222A (zh) * | 2017-04-20 | 2017-09-01 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
CN107423084A (zh) * | 2017-04-24 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 程序修改方法及装置 |
CN111736806A (zh) * | 2020-05-14 | 2020-10-02 | 广州三七网络科技有限公司 | 控件注入方法、装置及终端设备 |
CN113886656A (zh) * | 2021-10-25 | 2022-01-04 | 联想(北京)有限公司 | 一种信息查询方法、装置和电子设备 |
CN114168809A (zh) * | 2021-11-22 | 2022-03-11 | 中核核电运行管理有限公司 | 基于相似度的文档字符串编码匹配方法及装置 |
CN116150442A (zh) * | 2023-02-23 | 2023-05-23 | 成都卓讯智安科技有限公司 | 一种基于tcam的网络数据检测方法和设备 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9858051B2 (en) * | 2011-06-24 | 2018-01-02 | Cavium, Inc. | Regex compiler |
CN102387050A (zh) * | 2011-12-13 | 2012-03-21 | 曙光信息产业(北京)有限公司 | 一种利用自动机实现报文深度检测的系统和方法 |
CN102523139B (zh) * | 2012-01-06 | 2015-01-14 | 深圳市共进电子股份有限公司 | 高速网络协议深度检测装置及检测方法 |
CN103365528A (zh) * | 2012-04-02 | 2013-10-23 | 鸿富锦精密工业(深圳)有限公司 | 专利核驳历程显示系统及方法 |
CN103455753B (zh) * | 2012-05-30 | 2016-07-13 | 北京金山安全软件有限公司 | 一种样本文件分析方法及装置 |
CN102880726B (zh) * | 2012-10-23 | 2015-08-05 | 深圳市宜搜科技发展有限公司 | 一种图像过滤方法及系统 |
US9887911B2 (en) | 2013-02-28 | 2018-02-06 | Xaptum, Inc. | Systems, methods, and devices for adaptive communication in a data communication network |
US9208442B2 (en) | 2013-04-26 | 2015-12-08 | Wal-Mart Stores, Inc. | Ontology-based attribute extraction from product descriptions |
CN103631966B (zh) * | 2013-12-18 | 2017-10-10 | 用友网络科技股份有限公司 | 一种可配置的解析多值匹配字段的方法 |
US9542456B1 (en) * | 2013-12-31 | 2017-01-10 | Emc Corporation | Automated name standardization for big data |
CN103957131B (zh) * | 2014-04-11 | 2017-04-12 | 烽火通信科技股份有限公司 | 一种基于有限自动机的深度报文检测方法 |
CN107608981B (zh) * | 2016-07-11 | 2021-11-12 | 深圳市丰驰顺行信息技术有限公司 | 基于正则表达式的字符匹配方法及系统 |
CN106815349B (zh) * | 2017-01-19 | 2021-04-23 | 银联国际有限公司 | 基于哈希算法和正则匹配的时间过滤方法及事件过滤方法 |
US11057352B2 (en) | 2018-02-28 | 2021-07-06 | Xaptum, Inc. | Communication system and method for machine data routing |
US10965653B2 (en) | 2018-03-28 | 2021-03-30 | Xaptum, Inc. | Scalable and secure message brokering approach in a communication system |
US10805439B2 (en) | 2018-04-30 | 2020-10-13 | Xaptum, Inc. | Communicating data messages utilizing a proprietary network |
US10924593B2 (en) | 2018-08-31 | 2021-02-16 | Xaptum, Inc. | Virtualization with distributed adaptive message brokering |
US10938877B2 (en) | 2018-11-30 | 2021-03-02 | Xaptum, Inc. | Optimizing data transmission parameters of a proprietary network |
US10912053B2 (en) | 2019-01-31 | 2021-02-02 | Xaptum, Inc. | Enforcing geographic restrictions for multitenant overlay networks |
CN109976896B (zh) * | 2019-04-09 | 2021-06-29 | 中国联合网络通信集团有限公司 | 业务排重处理方法和装置 |
CN110096509A (zh) * | 2019-05-16 | 2019-08-06 | 普元信息技术股份有限公司 | 大数据环境下实现历史数据拉链表存储建模处理的系统及方法 |
CN111858902A (zh) * | 2019-12-12 | 2020-10-30 | 马上消费金融股份有限公司 | 正则匹配推荐方法及相关装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003023553A2 (en) * | 2001-09-12 | 2003-03-20 | Raqia Networks Inc. | Method of generating a dfa state machine that groups transitions into classes in order to conserve memory |
US7444515B2 (en) * | 2003-08-14 | 2008-10-28 | Washington University | Method and apparatus for detecting predefined signatures in packet payload using Bloom filters |
US20050273450A1 (en) * | 2004-05-21 | 2005-12-08 | Mcmillen Robert J | Regular expression acceleration engine and processing model |
CN101075980A (zh) * | 2006-07-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 对通讯系统中的通讯信息进行过滤的方法和过滤系统 |
US7539032B2 (en) | 2006-09-19 | 2009-05-26 | Netlogic Microsystems, Inc. | Regular expression searching of packet contents using dedicated search circuits |
US8051022B2 (en) * | 2006-12-08 | 2011-11-01 | Pandya Ashish A | Embedded programmable intelligent search memory (PRISM) that simultaneously performs regular expression based search and signature pattern based search |
CN101359325B (zh) * | 2007-08-01 | 2010-06-16 | 北京启明星辰信息技术股份有限公司 | 一种快速内容分析的多关键词匹配方法 |
-
2009
- 2009-07-29 CN CN200980155222.8A patent/CN102301342B/zh not_active Expired - Fee Related
- 2009-07-29 WO PCT/CN2009/072982 patent/WO2011011916A1/zh active Application Filing
- 2009-07-29 EP EP09847702A patent/EP2437173A4/en not_active Withdrawn
-
2011
- 2011-12-28 US US13/339,043 patent/US9390134B2/en not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103218379A (zh) * | 2012-01-19 | 2013-07-24 | 北京千橡网景科技发展有限公司 | 用于解析图释的方法及装置 |
CN107122222A (zh) * | 2017-04-20 | 2017-09-01 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
CN107423084A (zh) * | 2017-04-24 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 程序修改方法及装置 |
CN107423084B (zh) * | 2017-04-24 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 程序修改方法及装置 |
CN111736806A (zh) * | 2020-05-14 | 2020-10-02 | 广州三七网络科技有限公司 | 控件注入方法、装置及终端设备 |
CN113886656A (zh) * | 2021-10-25 | 2022-01-04 | 联想(北京)有限公司 | 一种信息查询方法、装置和电子设备 |
CN114168809A (zh) * | 2021-11-22 | 2022-03-11 | 中核核电运行管理有限公司 | 基于相似度的文档字符串编码匹配方法及装置 |
CN114168809B (zh) * | 2021-11-22 | 2024-08-09 | 中核核电运行管理有限公司 | 基于相似度的文档字符串编码匹配方法及装置 |
CN116150442A (zh) * | 2023-02-23 | 2023-05-23 | 成都卓讯智安科技有限公司 | 一种基于tcam的网络数据检测方法和设备 |
CN116150442B (zh) * | 2023-02-23 | 2023-09-15 | 成都卓讯智安科技有限公司 | 一种基于tcam的网络数据检测方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
EP2437173A4 (en) | 2012-05-09 |
EP2437173A1 (en) | 2012-04-04 |
US20120102055A1 (en) | 2012-04-26 |
US9390134B2 (en) | 2016-07-12 |
WO2011011916A1 (zh) | 2011-02-03 |
CN102301342B (zh) | 2014-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102301342A (zh) | 正则表达式匹配方法和系统及查找装置 | |
Lakshminarayanan et al. | Algorithms for advanced packet classification with ternary CAMs | |
US9984144B2 (en) | Efficient lookup of TCAM-like rules in RAM | |
Kumar et al. | Advanced algorithms for fast and scalable deep packet inspection | |
Dharmapurikar et al. | Fast and scalable pattern matching for content filtering | |
US7860849B1 (en) | Optimizing search trees by increasing success size parameter | |
Yu et al. | Efficient multimatch packet classification and lookup with TCAM | |
CN103973684B (zh) | 规则编译匹配方法及装置 | |
CN101577721A (zh) | 一种索引拆分布鲁姆过滤器及其插入、删除和查询方法 | |
CN102437937B (zh) | 一种深度包检测方法 | |
CN108011823B (zh) | 多域流表的多级化方法及装置、多级流表查找方法及装置 | |
Eppstein | Cuckoo filter: Simplification and analysis | |
KR100960120B1 (ko) | 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법 | |
Yu et al. | SSA: A power and memory efficient scheme to multi-match packet classification | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN102427428A (zh) | 基于多域最长匹配的流识别方法及设备 | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
CN112131356B (zh) | 一种基于tcam的报文关键字匹配方法和装置 | |
CN103957012B (zh) | 一种dfa矩阵的压缩方法及装置 | |
CN114567688B (zh) | 一种基于fpga的协同网络协议解析方法和装置 | |
US9851902B2 (en) | Searching memory for a search key | |
CN107045535B (zh) | 数据库表索引 | |
Sun et al. | NFA-based pattern matching for deep packet inspection | |
CN108399152A (zh) | 数字查找树的压缩表示方法、系统、存储介质及规则匹配装置 | |
CN105791124B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140730 |