[发明专利]一种用于数据包检测的并行模式匹配方法有效
申请号: | 202011492806.9 | 申请日: | 2020-12-17 |
公开(公告)号: | CN112506789B | 公开(公告)日: | 2022-08-02 |
发明(设计)人: | 李雪菲;姜海洋;杨晔 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F16/903;G06F8/41 |
代理公司: | 北京泛华伟业知识产权代理有限公司 11280 | 代理人: | 王勇 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 数据包 检测 并行 模式 匹配 方法 | ||
本发明提供了一种用于数据包检测的并行模式匹配方法,包括:步骤1,将特征字符串编译成AC自动机;步骤2,将数据包依据匹配线程的数量分片,每个分片由对应的线程执行AC算法,寻找匹配的特征字符串;步骤3,每个线程在处理完毕所分配的数据包分片后,除了最后一个分片对应的线程之外的其他线程跨越数据包分片分割点继续执行AC算法,通过比较各个AC自动机的状态深度和越过分割点后所检测的字符个数,确定最小冗余区域长度,寻找匹配的特征字符串。
技术领域
本发明涉及计算机技术领域,具体涉及一种用于数据包检测的并行模式匹配方法。
背景技术
深度数据包检测(Deep Packet Inspection,简称DPI)引擎是网络安全设备的核心组件,DPI引擎通过在数据包中查找模式串,以确定报文的合法性。现有技术中,大多对网络流量进行分割,采用多线程并行的方式进行负载分担,通过对数据包内容依据匹配引擎线程数进行分片,不同的线程并行检测不同的数据包部分来提升DPI的性能。这种基于数据包分片的负载均衡并行匹配方法的匹配时间复杂度与输入数据长度成正比,具有数据包分片均衡且粒度小,并行加速效果好的优点。虽然该方法检测了完整的数据包内容,但存在着分割点处漏判的问题。
目前存在的方法主要通过冗余检测来解决漏判问题,在每个分片后,划分了冗余检测区域,该区域会被两个DPI线程检测,从而保证检测到所有的模式串。
常用的冗余检测方法有两种:数据包分割并行匹配方法(Divided Data ParallelSignature Matching,简称DDP)和猜测式并行模式匹配方法(Speculative ParallelPattern Matching,简称SPPM)。
DDP处理的冗余区域长度是固定的,为Smax-1,其中,Smax表示最长的模式串长度。该方法在线程间不存在同步开销,但重叠区域大,在实际应用中时间复杂度高。
SPPM通过比较当前线程该字符跳转时的自动机状态和历史记录中其他线程处理该字符时的自动机状态减小冗余区域长度,降低了时间复杂度,但由于其始终维护历史状态表,并且相邻分片检测结果间存在依赖关系,在实际应用中同步开销很大。
发明内容
为解决上述现有技术中存在的问题,提供一种用于数据包检测的并行模式匹配方法,包括:
步骤1,将特征字符串编译成AC自动机;
步骤2,将数据包依据匹配线程的数量分片,每个数据包分片由对应的线程执行AC算法,寻找匹配的特征字符串;
步骤3,每个线程在处理完毕所分配的数据包分片后,除了最后一个数据包分片对应的线程之外的其他线程跨越数据包分片分割点继续执行AC算法,通过比较越过分割点后所检测的字符个数和当前字符的AC自动机状态深度,确定最小冗余区域长度,寻找匹配的特征字符串。
优选的,所述步骤2包括:
步骤21,每个所述匹配线程初始化一个记录AC自动机状态的状态变量。
优选的,所述步骤2还包括:
步骤22,按照AC算法逐字符检测,根据输入的字符进行状态跳转并更新状态变量。
优选的,所述步骤2还包括:
步骤23,根据状态变量判断是否发生了字符串匹配。
优选的,所述步骤3包括:
步骤31,除最后一个线程之外的其他线程分别设置步长变量,用于记录越过分割点后所检测的字符个数。
优选的,所述步骤3还包括:
步骤32,除最后一个线程之外的其他线程继续检测其后的数据包分片内容,进行状态跳转并更新状态变量,每处理一个字符,步长变量加1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011492806.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种模拟太空行走的设备
- 下一篇:一种工业用高效智能培训装置