一种用于数据名匹配的多模式匹配方法组成比例

技术编号:39677202 阅读:17 留言:0更新日期:2023-12-11 18:43
本发明专利技术涉及一种用于数据名匹配的多模式匹配方法,所述方法包括:对数据名任一组件,从预处理表中以该组件为

【技术实现步骤摘要】
一种用于数据名匹配的多模式匹配方法


[0001]本专利技术涉及命名数据网络

多模式匹配

数据包转发领域,尤其是一种用于数据名匹配的多模式匹配方法


技术介绍

[0002]在以命名数据为核心的新型互联网架构中,除了数据包负载中的数据,包头中的数据名也需要进行匹配识别

命名数据网络
(NDN)
作为这类新型互联网架构的代表,其标准协议栈
NDN

CXX
中内置了对数据名正则匹配的支持

然而,随着网络规模和用户数量的增长,特别是
5G
网络时代的到来,用户规则

规模可达百万级,而单模匹配的方式需要逐条规则构造模式规则
(Pattern)
进行识别,这种实现方式是不切实际的,需要采用多模式匹配的算法

[0003]现有多模式匹配算法,例如,
AC
自动机算法
、Wu

Manber
算法,以及英特尔在其开源工具
Hyperscan
中内置的多模式匹配版本的
Shift

OR
算法,被用于对数据流进行字节级的匹配,在诸多互联网应用场景中均有应用,例如入侵检测系统

访问控制系统和深度包检测系统

在这些场景中,检测目标通常是数据包报文中携带的数据流,例如
URL
字符

[0004]而数据名是一种具有层次化结构的数据类型,其最小组成单元为组件,具体形式为长度不定的字符串

例如,数据名
A
,具体内容为
/dataset/resource/data/image/png/people
,包含了
dataset、resource、data、image、png

people
共6个组件,其中,

/

符号仅作为分隔组件使用,并非数据名的必备组成部分

在进行匹配时,
Pattern
也是组件形式,例如,可与数据名
A
匹配成功的
Pattern

/dataset/resource、/data

/image/png
,无法匹配成功的
Pattern

/data/video

/resource/meta。
[0005]现有多模式匹配算法存在以下问题,导致其难以直接运用到数据名的多模式匹配场景中:第一

现有多模式匹配算法适用于扁平化的字符串数据,运用到数据名的多模式匹配,为了适配算法,首先需要将数据名转换为扁平化字符串的形式,由此,不能确保进行的匹配为组件级匹配,进而不能完全排除不匹配的模式,需要进一步校验匹配结果是否有效,例如,模式
/dataset/res
也可与数据名
A
相匹配,但匹配结束位置只是组件的部分前缀而非完整的组件,这样的匹配是无效的

第二:现有多模式匹配算法多为离线算法,更新效率低甚至不支持规则更新

第三:在处理百万级规模的
Pattern
集时,现有算法完成初始化构建需要数分钟甚至十几分钟,而存储开销则是
GB
级的,对网络设备的计算和存储需求都很高


技术实现思路

[0006]有鉴于此,本专利技术的主要目的在于提供一种用于数据名匹配的多模式匹配方法,通过组件级匹配,避免格式转换和结果校验等额外计算,实现数据名的快速

准确匹配

[0007]为达到上述目的,本申请提供了一种用于数据名匹配的多模式匹配方法,包括:
[0008]对数据名任一组件,从预处理表中以该组件为
Key
查询组件
Code
,查询到,将该组件替换为查询到的组件
Code
,并以该组件为
Key
查询
Data
指针,该查询到的
Data
指针指向的
Pattern
,为匹配的单组件
Pattern
;未查询到组件
Code
,将该组件替换为异常组件标识,得到组件化数据名;
[0009]将组件
Code
作为字符块,采用
Wu

Manber
算法,确定匹配的非单组件
Pattern

[0010]其中,所述预处理表,在初始化
Pattern
集时创建,在将其中非单组件
Pattern
的各组件替换成组件
Code
时,保存各组件和其组件
Code
的映射关系;并保存其中各单组件
Pattern
的组件和单组件
Pattern

Data
指针之间的映射关系;
[0011]所述组件
Code
和所述异常组件标识长度相同,均为固定长度的字符串

[0012]在一个可能的实现中,对于非单组件
Pattern
的任一组件,所述替换成组件
Code
,保存组件和其组件
Code
的映射关系,包括:
[0013]从预处理表中以该组件为
Key
查询组件
Code
,查询成功,以查询到的组件
Code
,替换该非单组件
Pattern
中的该组件;查询失败,将该组件转换为组件
Code
,将该组件与组件
Code
的映射关系插入预处理表中,并以该组件
Code
替换该非单组件
Pattern
中的该组件

[0014]在另一个可能的实现中,维护一个任意的初始编码
CodeBase
;相应的,
[0015]所述将组件转换为组件
Code
,包括:
[0016]将
CodeBase
递增1作为
CodeBase

[0017]以
CodeBase
作为该组件的组件
Code。
[0018]在另一个可能的实现中,对于非单组件
Pattern
的任一组件,所述替换成组件
Code
,保存组件和其组件
Code
的映射关系,包括:
[0019]从预处理表中以该组件为
Key
查询组件
C本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种用于数据名匹配的多模式匹配方法,其特征在于,包括:对数据名任一组件,从预处理表中以该组件为
Key
查询组件
Code
,查询到,将该组件替换为查询到的组件
Code
,并以该组件为
Key
查询
Data
指针,该查询到的
Data
指针指向的
Pattern
,为匹配的单组件
Pattern
;未查询到组件
Code
,将该组件替换为异常组件标识,得到组件化数据名;将组件
Code
作为字符块,采用
Wu

Manber
算法,确定匹配的非单组件
Pattern
;其中,所述预处理表,在初始化
Pattern
集时创建,在将其中非单组件
Pattern
的各组件替换成组件
Code
时,保存各组件和其组件
Code
的映射关系;并保存其中各单组件
Pattern
的组件和单组件
Pattern

Data
指针之间的映射关系;所述组件
Code
和所述异常组件标识长度相同,均为固定长度的字符串
。2.
根据权利要求1所述的方法,其特征在于,对于非单组件
Pattern
的任一组件,所述替换成组件
Code
,保存组件和其组件
Code
的映射关系,包括:从预处理表中以该组件为
Key
查询组件
Code
,查询成功,以查询到的组件
Code
,替换该非单组件
Pattern
中的该组件;查询失败,将该组件转换为组件
Code
,将该组件与组件
Code
的映射关系插入预处理表中,并以该组件
Code
替换该非单组件
Pattern
中的该组件
。3.
根据权利要求1所述的方法,其特征在于,还包括,维护一个任意的初始编码
CodeBase
;相应的,所述将组件转换为组件
Code
,包括:将
CodeBase
递增1作为
CodeBase
;以
CodeBase
作为该组件的组件
Code。4.
根据权利要求1所述的方法,其特征在于,对于非单组件
Pattern
的任一组件,所述替换成组件
Code
,保存组件和其组件
Code
的映射关系,包括:从预处理表中以该组件为
Key
查询组件
Code
,查询成功,以查询到的组件
Code
...

【专利技术属性】
技术研发人员:许可李彦彪谢高岗张大方
申请(专利权)人:中国科学院计算机网络信息中心
类型:发明
国别省市:

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

1