CN101707588B - 基于规则集的报文处理方法和装置 - Google Patents

基于规则集的报文处理方法和装置 Download PDF

Info

Publication number
CN101707588B
CN101707588B CN200910093981A CN200910093981A CN101707588B CN 101707588 B CN101707588 B CN 101707588B CN 200910093981 A CN200910093981 A CN 200910093981A CN 200910093981 A CN200910093981 A CN 200910093981A CN 101707588 B CN101707588 B CN 101707588B
Authority
CN
China
Prior art keywords
rule
rule set
character
message
mask
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.)
Active
Application number
CN200910093981A
Other languages
English (en)
Other versions
CN101707588A (zh
Inventor
邵宗有
聂华
历军
李永成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dawning Information Industry Beijing Co Ltd
Dawning Information Industry Co Ltd
Original Assignee
Dawning Information Industry Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dawning Information Industry Beijing Co Ltd filed Critical Dawning Information Industry Beijing Co Ltd
Priority to CN200910093981A priority Critical patent/CN101707588B/zh
Publication of CN101707588A publication Critical patent/CN101707588A/zh
Application granted granted Critical
Publication of CN101707588B publication Critical patent/CN101707588B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供一种基于规则集的报文处理方法和装置,其中,该方法包括:采用Trie算法对规则集进行管理;将规则集中的掩码采用特殊字符进行表示;在接收到报文时,从所接收的报文提取规则,将规则转换成字符串,并将转换后的规则与规则集进行比较,其中,与规则集中的特殊字符的比较总是正确的;以及根据比较结果确定规则是否与规则集匹配,并根据确定结果进行后续处理。在本发明中,规则集的匹配效率高,匹配时间与规矩集的大小、掩码位置等无关,只与规矩集的字符长度相关。

Description

基于规则集的报文处理方法和装置
技术领域
本发明涉及通信领域,尤其涉及一种基于规则集的报文处理方法和装置。
背景技术
现有技术通过网卡硬件直接进行基于规则集的报文过滤、阻断及上传操作,但不支持基于掩码的规则集进行报文过滤、阻断及上传操作。现有技术中还没有关于支持基于掩码的规则集进行报文处理的方案。
发明内容
针对相关技术中存在的一个或多个问题,本发明的目的在于提供一种基于规则集的报文处理方法和装置,以解决上述问题中的至少之一。
为实现上述目的,根据本发明的一个方面,提供了一种基于规则集的报文处理方法,该方法包括:采用Trie算法对规则集进行管理;将规则集中的掩码采用特殊字符进行表示;在接收到报文时,从所接收的报文提取规则,将规则转换成字符串,并将转换后的规则与规则集进行比较,其中,与规则集中的特殊字符的比较总是正确的;以及根据比较结果确定规则是否与规则集匹配,并根据确定结果进行后续处理。
优选地,可以将规则转换为二进制字符,组成0、1字符串。
优选地,特殊字符可以为非0、1字符。
优选地,Trie算法能够对规则集进行以下至少一种操作:添加规则的操作、删除规则的操作。
优选地,在确定结果为规则与规则集匹配时,表示命中规则,进行报文过滤、阻断或上传操作;以及在规则与规则集不匹配时,不命中规则,按照默认操作对报文进行处理。
为实现上述目的,根据本发明的另一个方面,还提供了一种基于规则集的报文处理装置,该装置包括:规则集管理模块,用于采用Trie算法对规则集进行管理;掩码替换模块,用于将规则集中的掩码采用特殊字符进行表示;匹配模块,用于在接收到报文时,从所接收的报文提取规则,将规则转换成字符串,并将转换后的规则与规则集进行比较,根据比较结果确定规则是否与规则集匹配其中,与规则集中的特殊字符的比较总是正确的;以及报文处理模块,用于根据确定结果进行后续处理。
优选地,可以将规则转换为二进制字符,组成0、1字符串。
优选地,特殊字符可以为非0、1字符。
优选地,Trie算法能够对规则集进行以下至少一种操作:添加规则的操作、删除规则的操作。
优选地,在确定结果为规则与规则集匹配时,表示命中规则,进行报文过滤、阻断或上传操作;以及在规则与规则集不匹配时,不命中规则,按照默认操作对报文进行处理。
借助本发明上述至少一个技术方案,通过采用Trie算法来管理规则集,能够保存大量的字符串,并利用字符串的公共前缀来节约存储空间,并且能够采用基于掩码的规则集进行报文的过滤、阻断以及上传操作,在本发明中,规则集的匹配效率高,匹配时间与规矩集的大小、掩码位置等无关,只与规矩集的字符长度相关。本发明弥补了现有技术中不存在这种技术的缺陷并且能够带来以上技术效果。
附图说明
图1是根据本发明的Trie树的示意图;
图2是根据本发明的在Trie树中进行插入操作的示意图;
图3是根据本发明的基于规则集的报文处理方法的流程图;以及
图4是根据本发明的基于规则集的报文处理装置的框图。
具体实施方式
功能概述
考虑到相关技术中存在的的问题,本发明提出了一种基于规则集的报文处理方法和装置,通过采用Trie算法来管理规则集,能够保存大量的字符串,并利用字符串的公共前缀来节约存储空间,并且对规则中的掩码部分采用特殊字符进行表示,软件从接收到的报文中提取到规则,将规则转换成字符串,并将此规则与规则集进行比较。在规则匹配时,与特殊字符的比较总是正确,进行下一其他字符的比较,如果匹配规则集,则表示命中规则,进行报文过滤、阻断或者上传操作;如果不匹配规则集,按默认操作对报文进行后续处理。在本发明中,规则集的匹配效率高,匹配时间与规矩集的大小、掩码位置等无关,只与规矩集的字符长度相关。采用基于掩码的规则集进行报文的过滤、阻断以及上传操作,弥补了现有技术中不存在这种技术的缺陷。
以下简单介绍Trie算法中的Trie树:
Trie是一种数字搜索树(见用于数字搜索树的详情的[Knuth 1972]),[Fredkin1960]介绍了trie术语,其是“retrieval”的缩写。
Trie是有效的索引方法。它实际上还是一种决定性有限自动机(DFA)(见[Cohen 1990,例如,用于DFA的限定])。在树结构中,每个节点对应于一个DFA状态,从父节点到子节点的每个(直接)标记边缘均对应于DFA过渡。遍历在根节点处开始。然后,从头到尾,关键码串中的一个接一个的字符被用于确定下一个状态。标记有相同字符的边缘被选择经过。注意,这样经过的每一步均消耗关键码的一个字符并且使树降低一个步骤。如果关键码被消耗了并且达到叶节点,则达到了该关键码的出口。如果在一些节点受到阻碍,这是因为不存在我们拥有的标记有当前字符的分支,或者关键码在内部节点被消耗,则简单地暗示了关键码不被Trie识别。
需要注意的是,需要从根遍历到叶的时间不取决于数据库的大小,但是与关键码的长度成比例。从而,在通常情况下,一般比B树或任何基于比较的索引方法快很多。其时间复杂性可以与散列法技术相比较。
Trie树既可用于一般的字典搜索,也可用于索引查找。对于给定的一个字符串a1,a2,a3,...,an,则采用Trie树搜索经过n次搜索即可完成一次查找。不过好像还是没有B树的搜索效率高,B树搜索算法复杂度为logt(n+1/2)。当t趋向大,搜索效率变得高效。DB2的访问内存设置为虚拟内存的一个页面大小,而且帧切换频率降低,无需经常的页面切换。
Trie树当关键码是可变长时,Trie树是一种特别有用的索引结构。
1、Trie树的定义如下:
Trie树是一棵度m≥2的树,它的每一层分支不是靠整个关键码的值来确定,而是由关键码的一个分量来确定。
如图1所示的Trie树,关键码由英文字母组成。它包括两类结点:元素结点和分支结点。元素结点包含整个key数据;分支结点有27个指针,其中有一个空白字符‘b’,用来终结关键码;其它用来标识‘a’,‘b’,...,‘z’等26个英文字母。
在第0层,所有的关键码根据它们第0位字符,被划分到互不相交的27个类中。因此,root→brch.link[i]指向一棵子Trie树,该子Trie树上所包含的所有关键码都是以第i个英文字母开头。
若某一关键码第j位字母在英文字母表中顺序为i(i=0,1,?,26),则它在Trie树的第j层分支结点中从第i个指针向下找第j+1位字母所在结点。当一棵子Trie树上只有一个关键码时,就由一个元素结点来代替。在这个结点中包含有关键码,以及其它相关的信息,如对应数据对象的存放地址等。
     Trie树的类定义如下:
     const int MaxKeySize=25;//关键码最大位数
     typedef struct{//关键码类型
   char ch[MaxKeySize];//关键码存放数组
   int currentSize;//关键码当前位数
}KeyType;
   class TrieNode {//Trie树结点类定义
 friend class Trie;
protected:
 enum{branch,element}NodeType;//结点类型
  union NodeType{//根据结点类型的两种结构
    struct{//分支结点
      int num;//本结点关键码个数
      TrieNode*link[27];//指针数组
    }brch;
    struct{//元素结点
      KeyType key;//关键码
      recordNode*recptr;//指向数据对象指针
    }elem;
  }
}
    class Trie{//Trie树的类定义
private:
  TrieNode*root,*current;
public:
  RecordNode*S earch(const keyType&);
  int Insert(const KeyType&);
  int Delete(const KeyType&);
}
2、Trie树的搜索如下:
为了在Trie树上进行搜索,要求把关键码分解成一些字符元素,并根据这些字符向下进行分支。
函数Search设定current=NULL,表示不指示任何一个分支结点,如果current指向一个元素结点elem,则current→elem.key是current所指结点中的关键码。
Trie树的搜索算法如下:
  RecordNode*Trie::Search(const KeyType&x){
k=x.key;
concatenate(k,‘b’);
    current=root;
    int i=0;//扫描初始化
    while (current!=NULL&&current→NodeType!=element&&i<=
x.ch[i]){
    current=current→brch.link[ord(x.ch[i])];
    i=i++;
  };
  if(current!=NULL&&current→NodeType==element&&
current→elem.key==x)
    return current→recptr;
  else
    return NULL;
}
经验证,Trie树的搜索算法在最坏情况下搜索的时间代价是O(l)。其中,l是Trie树的层数(包括分支结点和元素结点在内)。
在用作索引时,Trie树的所有结点都驻留在磁盘上。搜索时最多做l次磁盘存取。
当结点驻留在磁盘上时,不能使用C++的指针(pointer)类型,因为C++不允许指针的输入/输出。在结点中的link指针可改用整型(integer)实现。
3、在Trie树上的插入和删除
示例:插入关键码bobwhite和bluejay。
a.插入x=bobwhite时,首先搜索Trie树寻找bobwhite所在的结点。
b.如果找到结点,并发现该结点的link[‘o’]=NULL。x不在Trie树中,可以在该处插入。插入结果参看图。
c.插入x=bluejay时,用Trie树搜索算法可找到包含有bluebird的元素结点,关键码bluebird和bluejay是两个不同的值,它们在第5个字母处不匹配。从Trie树沿搜索路径,在第4层分支。插入结果参看图。
在Trie树上插入bobwhite和bluejay后的结果如图2所示。
考虑在图2所示Trie树中删除bobwhite。此时,只要将该结点link[‘o’]置为0(NULL)即可,Trie树的其它部分不需要改变。
考虑删除bluejay。删除之后在标记为δ3的子Trie树中只剩下一个关键码,这表明可以删去结点δ3,同时结点ρ向上移动一层。对结点δ2和δ1可以做同样的工作,最后到达结点б。因为以б为根的子Trie树中有多个关键码,所以它不能删去,令该结点link[‘l’]=ρ即可。
为便于Trie树的删除,在每个分支结点中设置了一个num数据成员,它记载了结点中子女的数目。
Trie树有3个基本性质,如下:
1、根节点不包含字符,除根节点外每一个节点都只包含一个字符。
2、从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。
3、每个节点的所有子节点包含的字符都不相同。
图3是根据本发明的基于规则集的报文处理方法的流程图。如图3所示,本发明的基于规则集的处理方法包括以下步骤:
步骤S302,采用Trie算法对规则集进行管理;
步骤S304,将规则集中的掩码采用特殊字符进行表示;
步骤S306,在接收到报文时,从所接收的报文提取规则,将规则转换成字符串,并将转换后的规则与规则集进行比较,其中,与规则集中的特殊字符的比较总是正确的;以及
步骤S308,根据比较结果确定规则是否与规则集匹配,并根据确定结果进行后续处理。
其中,可以将规则转换为二进制字符,组成0、1字符串。特殊字符可以为非0、1字符。
其中,Trie算法能够对规则集进行以下至少一种操作:添加规则的操作、删除规则的操作。
在确定结果为规则与规则集匹配时,表示命中规则,进行报文过滤、阻断或上传操作;以及在规则与规则集不匹配时,不命中规则,按照默认操作对报文进行处理。
图4是根据本发明的基于规则集的报文处理装置的框图。如图4所示,本发明的基于规则集的报文处理装置包括:规则集管理模块402,用于采用Trie算法对规则集进行管理;掩码替换模块404,用于将规则集中的掩码采用特殊字符进行表示;匹配模块406,用于在接收到报文时,从所接收的报文提取规则,将规则转换成字符串,并将转换后的规则与规则集进行比较,根据比较结果确定规则是否与规则集匹配其中,与规则集中的特殊字符的比较总是正确的;以及报文处理模块408,用于根据确定结果进行后续处理。
其中,可以将规则转换为二进制字符,组成0、1字符串。特殊字符可以为非0、1字符。
其中,Trie算法能够对规则集进行以下至少一种操作:添加规则的操作、删除规则的操作。
在确定结果为规则与规则集匹配时,表示命中规则,进行报文过滤、阻断或上传操作;以及在规则与规则集不匹配时,不命中规则,按照默认操作对报文进行处理。
具体地,在本发明中,可以将规则各字段从十六进制(两个数,高位可以为0,地位也可以为0)转换成两进制数(即用0和1字符表示),组合成0、1字符串。将掩码部分用其他字符表示(非0、1字符)。
因为掩码部分表示不关心字段,所以比较时总是正确。
替换掩码的具体过程举例如下:
假如有一条规则:192.168.0.1810.0.0.216;
源IP地址:192.168.0.1;
源IP地址掩码:低8位;
目的IP地址:10.0.0.2;
目的IP地址掩码:低16位;
源IP地址十六进制数表示:C0:A8:00:01,此处0必须用十六进制00表示;
源IP地址二进制数表示:11000000-10101000-00000000-00000001;
源IP地址掩码:低8位:11000000-10101000-00000000-22222222,掩码部分用字符2表示;
这样,规则源IP地址部分转换成字符串11000000101010000000000022222222;
同样,规则目的IP地址部分转换如下:
目的IP地址十六进制数表示:0A:00:00:02,此处0必须用十六进制00表示;
目的IP地址二进制数表示:00001010-00000000-00000000-00000010;
目的IP地址掩码:低16位:11000000-10101000-22222222-22222222,掩码部分用字符2表示;
这样,规则源IP地址部分转换成字符串11000000101010002222222222222222;
这样,规则转换成字符串1100000010101000000000002222222211000000101010002222222222222222。
当接收的报文源、目的IP地址为192.168.0.111和10.0.122.34时,按上述方法将此转换成字符串,按上述步骤进行比较,可以判断命中规则。
当接收的报文源、目的IP地址为193.168.0.111和10.0.122.34时,按上述方法将此转换成字符串,按上述步骤进行比较,可以判断不命中规则。
通过本发明的利用规则集的匹配效率高,匹配时间与规矩集的大小、掩码位置等无关,只与规矩集的字符长度相关。
综上所述,借助本发明上述至少一个技术方案,通过采用Trie算法来管理规则集,能够保存大量的字符串,并利用字符串的公共前缀来节约存储空间,并且对规则中的掩码部分采用特殊字符进行表示,软件从接收到的报文中提取到规则,将规则转换成字符串,并将此规则与规则集进行比较。在规则匹配时,与特殊字符的比较总是正确,进行下一其他字符的比较,如果匹配规则集,则表示命中规则,进行报文过滤、阻断或者上传操作;如果不匹配规则集,按默认操作对报文进行后续处理。采用基于掩码的规则集进行报文的过滤、阻断以及上传操作,弥补了现有技术中不存在这种技术的缺陷。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于规则集的报文处理方法,其特征在于,所述方法包括:
采用Trie算法对规则集进行管理;
将所述规则集中的掩码采用特殊字符进行表示;
在接收到报文时,从所接收的报文提取规则,将所述规则转换成字符串,并将转换后的规则与所述规则集进行比较,其中,与所述规则集中的特殊字符的比较总是正确的;以及
根据比较结果确定所述规则是否与所述规则集匹配,并根据确定结果进行后续处理。
2.根据权利要求1所述的方法,其特征在于,将所述规则转换为二进制字符,组成0、1字符串。
3.根据权利要求2所述的方法,其特征在于,所述特殊字符为非0、1字符。
4.根据权利要求1所述的方法,其特征在于,所述Trie算法能够对所述规则集进行以下至少一种操作:添加规则的操作、删除规则的操作。
5.根据权利要求1所述的方法,其特征在于,
在所述确定结果为所述规则与所述规则集匹配时,表示命中规则,进行报文过滤、阻断或上传操作;以及
在所述规则与所述规则集不匹配时,不命中规则,按照默认操作对报文进行处理。
6.一种基于规则集的报文处理装置,其特征在于,所述装置包括:
规则集管理模块,用于采用Trie算法对规则集进行管理;
掩码替换模块,用于将所述规则集中的掩码采用特殊字符进行表示;
匹配模块,用于在接收到报文时,从所接收的报文提取规则,将所述规则转换成字符串,并将转换后的规则与所述规则集进行比较,根据比较结果确定所述规则是否与所述规则集匹配,其中,与所述规则集中的特殊字符的比较总是正确的;以及
报文处理模块,用于根据确定结果进行后续处理。
7.根据权利要求6所述的装置,其特征在于,将所述规则转换为二进制字符,组成0、1字符串。
8.根据权利要求7所述的装置,其特征在于,所述特殊字符为非0、1字符。
9.根据权利要求6所述的装置,其特征在于,所述Trie算法能够对所述规则集进行以下至少一种操作:添加规则的操作、删除规则的操作。
10.根据权利要求6所述的装置,其特征在于,
在所述确定结果为所述规则与所述规则集匹配时,表示命中规则,进行报文过滤、阻断或上传操作;以及
在所述规则与所述规则集不匹配时,不命中规则,按照默认操作对报文进行处理。
CN200910093981A 2009-09-25 2009-09-25 基于规则集的报文处理方法和装置 Active CN101707588B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910093981A CN101707588B (zh) 2009-09-25 2009-09-25 基于规则集的报文处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910093981A CN101707588B (zh) 2009-09-25 2009-09-25 基于规则集的报文处理方法和装置

Publications (2)

Publication Number Publication Date
CN101707588A CN101707588A (zh) 2010-05-12
CN101707588B true CN101707588B (zh) 2012-10-10

Family

ID=42377780

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910093981A Active CN101707588B (zh) 2009-09-25 2009-09-25 基于规则集的报文处理方法和装置

Country Status (1)

Country Link
CN (1) CN101707588B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193914A (zh) * 2011-05-26 2011-09-21 中国科学院计算技术研究所 计算机辅助翻译的方法及系统
CN103457824A (zh) * 2012-05-31 2013-12-18 中兴通讯股份有限公司 报文处理方法及装置
CN111832070B (zh) * 2020-06-12 2024-02-27 北京百度网讯科技有限公司 数据的掩码方法、装置、电子设备和存储介质
CN115103038B (zh) * 2021-12-29 2023-02-03 武汉绿色网络信息服务有限责任公司 一种基于隧道报文的匹配方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郭润伟.路由查找算法研究与分析.《科技经济市场》.2009,(第06期),22-23. *

Also Published As

Publication number Publication date
CN101707588A (zh) 2010-05-12

Similar Documents

Publication Publication Date Title
US10169426B2 (en) Fast identification of complex strings in a data stream
JP2718881B2 (ja) トークン識別システム
CN107153647B (zh) 进行数据压缩的方法、装置、系统和计算机程序产品
CN107992481A (zh) 一种基于多叉树的正则表达式匹配方法、装置及系统
US7199729B2 (en) Character code conversion methods and systems
EP1011057B1 (en) Identifying a group of words using modified query words obtained from successive suffix relationships
CN101707588B (zh) 基于规则集的报文处理方法和装置
CN106909630A (zh) 基于动态词库的敏感词过滤方法及系统
CN102955833A (zh) 一种通讯地址识别、标准化的方法
CN107423295A (zh) 一种海量地址数据智能快速匹配方法
CN102955832A (zh) 一种通讯地址识别、标准化的系统
CN110309368A (zh) 数据地址的确定方法、装置、存储介质和电子装置
CN110825919B (zh) Id数据处理方法和装置
CN109741034A (zh) 一种网格树形组织管理方法及装置
CN101465905A (zh) 邮件地址搜寻系统及方法
CN104424194B (zh) CANdb网络文件异同的比较方法及其系统
CN109101503A (zh) 一种创建组织结构层级关系树的方法及装置
CN112883704A (zh) 一种大数据相似文本去重预处理方法、装置及终端设备
CN116501897A (zh) 基于模糊匹配构建知识图谱的方法
CA2855382C (en) Fast identification of complex strings in a data stream
Amir et al. Dynamic text and static pattern matching
CN116932681A (zh) 数据存储方法和装置及数据检索方法及装置
CA2873011C (en) Fast identification of complex strings in a data stream
CN116095004A (zh) 基于Hash的报文查找方法、交换芯片和网络设备
Aoe An efficient implemenatation of string pattern matching machines for a finite number of keywords

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
C56 Change in the name or address of the patentee
CP02 Change in the address of a patent holder

Address after: 100193 Beijing, Haidian District, northeast Wang West Road, building 8, No. 36

Patentee after: Dawning Information Industry (Beijing) Co.,Ltd.

Address before: 100084 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District

Patentee before: Dawning Information Industry (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220727

Address after: 100089 building 36, courtyard 8, Dongbeiwang West Road, Haidian District, Beijing

Patentee after: Dawning Information Industry (Beijing) Co.,Ltd.

Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd.

Address before: 100193 No. 36 Building, No. 8 Hospital, Wangxi Road, Haidian District, Beijing

Patentee before: Dawning Information Industry (Beijing) Co.,Ltd.