[发明专利]一种高频状态匹配方法及系统有效
申请号: | 202110895681.2 | 申请日: | 2021-08-05 |
公开(公告)号: | CN113347214B | 公开(公告)日: | 2021-11-12 |
发明(设计)人: | 李权;陈信龙;曾彪;李先平;何全;张晓哲;唐靖飚;陈一骄;屈晓阳 | 申请(专利权)人: | 湖南戎腾网络科技有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/741;G06F16/903 |
代理公司: | 湖南思博达律师事务所 43230 | 代理人: | 苏芳 |
地址: | 410028 湖南省长沙市长沙*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 高频 状态 匹配 方法 系统 | ||
本发明公开了一种高频状态匹配方法,包括如下步骤:获取数据报文的载荷字符;根据预设规则,判断所述载荷字符是否存在于掩码表中;若所述载荷字符存在于所述掩码表中,则获取所述掩码表中的处于置位状态的个数及存在位置;根据所述掩码表中的处于置位状态的个数及存在位置,获取偏移位置;根据所述偏移位置获取存放所述载荷字符的状态地址。该方法逻辑清晰,安全、有效、可靠且效果显著,能对高频状态下进行状态压缩,有效的节省内存资源,基于该方法的系统也同样能达到相同的效果。
技术领域
本发明涉及计算机技术领域,特别是涉及一种高频状态匹配方法及系统。
背景技术
多模式串匹配是计算机领域经典的问题之一,其目的是在任意字符文本中找出已知的一组特定字符出现的所有位置。AC算法是一种经典的多模式匹配算法,有着良好的时间复杂度,在许多领域有着广泛的应用。在匹配规则比较多的情况下,考虑匹配算法和效率,AC是最为经典的算法。
但AC算法在匹配大规模规则库时,存在空间开销大、存储效率低等问题。目前大部门基本思想是针对自动机的状态转移表,删除以空转移为主的冗余状态转移边,只保存有用的信息,在搜索过程中通过计算来查找下一跳状态。
目前,在高频状态下,AC算法并未进行状态压缩,状态不存在时占用地址表项但是是无效的,即每一个状态结构体内存放下一跳状态个数都是256,在内存资源有限情况下有很大浪费。
因此,提供一种在高频状态下进行状态压缩后,可以有效节省内存资源的匹配方法及系统是本领域技术人员亟待解决的问题。
发明内容
本发明的目的在于提供一种高频状态匹配方法及系统,该方法逻辑清晰,安全、有效、可靠且效果显著,能对高频状态下进行状态压缩,有效的节省内存资源,基于该方法的系统也同样能达到相同的效果。
基于以上目的,本发明提供的技术方案如下:
一种高频状态匹配方法,包括如下步骤:
获取数据报文的载荷字符;
根据预设规则,判断所述载荷字符是否存在于掩码表中;
若所述载荷字符存在于所述掩码表中,则获取所述掩码表中的处于置位状态的个数及存在位置;
根据所述掩码表中的处于置位状态的个数及存在位置,获取偏移位置;
根据所述偏移位置获取存放所述载荷字符的状态地址。
其中,根据预设规则,判断所述载荷字符是否存在于掩码表中,包括如下步骤:
将所述掩码表中的A位状态划分为M个B位状态;
将所述载荷字符除以B,获取商值与余数;
根据所述商值与所述余数确认所述载荷字符状态在所述掩码表中存在。
优选地,根据所述掩码表中的处于置位状态的个数及存在位置,获取偏移位置具体为:
根据所述掩码表中的处于置位状态的个数及存在位置,将C位状态划分为N个D位状态,获取D位状态存在累计表与下一跳总个数;
其中,存在状态的累计值计算公式为i=i+1;
所述下一跳总个数具体为所有所述掩码表中的处于置位状态的个数之和。
优选地,获取所述偏移位置具体为:
根据所述商值与余数获取第K个所述B位状态中余数之后的置位个数;
若所述商值等于N,则所述下一跳总个数减去所述置位个数的结果即为所述偏移位置;
若所述商值小于N,则所述D位状态存在累计表减去所述置位个数的结果即为所述偏移位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南戎腾网络科技有限公司,未经湖南戎腾网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110895681.2/2.html,转载请声明来源钻瓜专利网。