CN108572921B - 规则集更新方法、装置、规则匹配方法及装置 - Google Patents
规则集更新方法、装置、规则匹配方法及装置 Download PDFInfo
- Publication number
- CN108572921B CN108572921B CN201710338954.7A CN201710338954A CN108572921B CN 108572921 B CN108572921 B CN 108572921B CN 201710338954 A CN201710338954 A CN 201710338954A CN 108572921 B CN108572921 B CN 108572921B
- Authority
- CN
- China
- Prior art keywords
- rule
- rules
- target
- group
- rule set
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了规则集更新方法、装置、规则匹配方法及装置,涉及计算机技术领域,应用于三态内容寻址存储器,其中,该规则集更新方法包括:在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组;然后在目标规则组中插入该目标规则,完成对目标规则集的更新。其中,对于目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,不大于目标规则集中与其相交的规则总数。应用本发明实施例提供的方案进行规则集的更新时,可以减少规则集的更新开销。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及规则集更新方法、装置、规则匹配方法及装置。
背景技术
三态内容寻址存储器,简称TCAM(Ternary Content Addressable Memory),其存储有由大量规则组成的规则集,各个规则中每一比特位除了可以为0和1以外,还可以为*(don’t care,wildcard),即不管是输入内容中的某一位是0或1,均可以匹配规则中相应位置的*。*比特的引入,使得TCAM中的规则具有了匹配范围的能力,比如一条规则为1***,表示匹配从1000到1111范围内的所有二进制序列。
TCAM中存储的各个规则所处的位置具有一定的顺序,如按照预先定义的各个规则的优先级对所有规则排序。由于顺序的存在,使得规则集的更新存在困难,如图1所示,如果要在第一个规则r1前插入一条规则,那么所有规则r1~r6都需要向后移动一个位置。当规则集中的规则数量巨大时,进行规则集的更新时,需要移动大量规则的位置,此时规则集更新的开销是巨大的;而TCAM在更新规则集时,是不能进行匹配查找的,只能将要进行匹配查找的内容缓存起来,等待TCAM上的规则集更新完成后再进行查找;所以,降低TCAM更新规则集时的更新开销是十分重要的。
TCAM中,如果两个规则具有相交的匹配范围,则可以称这两个规则相交或重叠,即这两个规则为一对相交的规则,例如,两条规则11**和111*,其都可以匹配1110,则规则11**和111*相交。另外,如果TCAM获得的输入内容可以与至少两个规则匹配,TCAM会从所匹配的各个规则中,选择顺序最靠前的规则,然后输出所选择的规则所对应的地址,即其所处的位置。
在实际应用中,TCAM中规则的摆放顺序可能与优先级定义的顺序不同,但是,只要对于任意输入内容,TCAM分别按照其中实际的规则摆放顺序以及优先级定义的顺序进行匹配查找时所命中的规则相同,则认为两种顺序语义等价,所以TCAM中只需要保证相交的规则之间的前后顺序,即只有相交的规则之间的顺序才需要维护,而不相交的规则之间的顺序则可以不用维护。所以TCAM会利用语义等价特点更新规则集,以降低规则位置的调整次数。
在现有技术中,为了进一步的降低规则集更新时的开销,通常会将规则集划分为多个规则组,且利用语义等价特点更新规则集时,只会对待插入的规则所属的规则组进行更新;而相交的一对规则可能会被划分到不同的规则组,所以待插入的规则所属的规则组中需要调整位置的规则数量会有所减少,达到降低规则集更新开销的目的。
但是,现有技术中划分规则集所得到的每个规则组中,依然存在大量相交的规则,所以利用语义等价的特点来进行规则集的更新时,依然存在更新开销大的问题。
发明内容
本发明实施例的目的在于提供一种规则集更新方法、装置、规则匹配方法及装置,以在利用语义等价的特点来进行规则集的更新时,实现降低更新开销的目的。具体技术方案如下:
为达上述目的,第一方面,本发明实施例提供了一种规则集更新方法,应用于三态内容寻址存储器,所述方法包括:
在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组;其中,对于所述目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,小于所述目标规则集中与其相交的规则总数;所述目标规则为待插入到所述目标规则集中的规则;
在所述目标规则组中插入所述目标规则,完成对所述目标规则集的更新。
优选的,划分所述目标规则集的方式包括:
确定所述目标规则集为第一规则集;
划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组;其中,第二规则组由所述第一规则集中的第一规则、与其它规则均不相交的规则以及与自身相交的规则的优先级不高于自身优先级的规则构成;所述第一规则的所有父规则中,处于所述第二规则组中的父规则数量不大于处于所述第三规则组中的父规则数量;一个规则的父规则为:与该规则相交并且优先级大于该规则的优先级的规则;
针对最新得到的两个规则组中的每一个,判断是否满足预设条件,如果满足,将该规则组确定为第一规则组,如果不满足,更新第一规则集为该规则组,返回执行划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组的步骤。
优选的,所述划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组的步骤,包括:
从所述第一规则集中确定第二规则,并对所述第二规则添加第一标记;其中,所述第二规则包括:所述第一规则集中,与其它规则均不相交的规则,以及与自身相交的规则的优先级均不高于自身优先级的规则;
从所述第一规则集中,确定父规则均为第二规则的第三规则,并对所述第三规则添加第二标记;
针对所述第一规则集中无标记的每一规则,判断其所有父规则是否均有标记;如果是,判断其所有父规则中,添加有第一标记的父规则数量是否大于添加有第二标记的父规则数量,如果大于,对该规则添加所述第二标记;如果不大于,对该规则添加所述第一标记;
判断所述第一规则集中是否存在无标记的规则;
如果存在,返回执行针对所述第一规则集中无标记的每一规则,判断其所有父规则是否均有标记的步骤;
如果不存在,创建两个新的规则组,作为第二规则组和第三规则组,并将所述第一规则集中添加有所述第一标记的所有规则以及添加有所述第二标记的所有规则,分别划分到所述第二规则组和所述第三规则组中;
相应的,在所述更新第一规则集为该规则组的步骤之后,所述方法还包括:
去除所述第一规则集中所有规则的标记,再返回执行所述从所述第一规则集中确定第二规则,并对所述第二规则添加第一标记的步骤。
优选的,所述针对最新得到的两个规则组中的每一个,判断是否满足预设条件的步骤,包括:
针对最新得到的两个规则组中的每一个,判断是否满足条件:当前已划分得到的规则组的数目未达到预设数目,且在最新得到的两个规则组中,该规则组的规则相交程度小于另一规则组;或当前已划分得到的规则组的数目达到预设数目;
其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
优选的,所述预设条件包括:
该规则组的规则相交程度不大于预设阈值;
其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
优选的,所述在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组的步骤,包括:
在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组为:随机选择的一个第一规则组。
优选的,所述在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组的步骤,包括:
针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定其中的相交规则对数;
确定目标规则所属的目标规则组为:相交规则对数最小的第一规则组。
优选的,所述在所述目标规则组中插入所述目标规则的步骤,包括:
确定所述目标规则为第四规则;
在所述目标规则组中,判断是否存在与所述第四规则相交、且优先级低于所述第四规则的第五规则;
如果存在,从所有第五规则中确定顺序最靠前的第六规则,并将所述第四规则插入到所述第六规则所处的位置,同时将所述第六规则从其所处的位置移出,将所述第六规则作为第四规则,返回执行所述在所述目标规则组中,判断是否存在与所述第四规则相交、且顺序排在所述第四规则后的第五规则的步骤;
如果不存在,将所述第四规则插入到所述目标规则组末端的空位上。
第二方面,本发明实施例提供了一种规则匹配方法,应用于三态内容寻址存储器,所述方法包括:
获得目标输入内容;
针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定该第一规则组中与所述目标输入内容相匹配的规则;其中,所述目标规则集为按照以上任一种所述的规则集更新方法进行更新的规则集;
将所确定的所有规则中优先级最高的规则作为规则匹配结果。
第三方面,本发明实施例提供了一种规则集更新装置,应用于三态内容寻址存储器,所述装置包括:
第一确定模块,用于在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组;其中,对于所述目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,小于所述目标规则集中与其相交的规则总数;所述目标规则为待插入到所述目标规则集中的规则;
更新模块,用于在所述目标规则组中插入所述目标规则,完成对所述目标规则集的更新。
优选的,所述装置还包括:
第二确定模块,用于确定所述目标规则集为第一规则集;
划分模块,用于划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组;其中,第二规则组由所述第一规则集中的第一规则、与其它规则均不相交的规则以及与自身相交的规则的优先级不高于自身优先级的规则构成;所述第一规则的所有父规则中,处于所述第二规则组中的父规则数量不大于处于所述第三规则组中的父规则数量;一个规则的父规则为:与该规则相交并且优先级大于该规则的优先级的规则;
判断模块,用于针对最新得到的两个规则组中的每一个,判断是否满足预设条件,如果满足,将该规则组确定为第一规则组,如果不满足,更新第一规则集为该规则组,再触发所述划分模块。
优选的,所述划分模块,包括:
第一添加单元,用于从所述第一规则集中确定第二规则,并对所述第二规则添加第一标记;其中,所述第二规则包括:所述第一规则集中,与其它规则均不相交的规则,以及与自身相交的规则的优先级均不高于自身优先级的规则;
第二添加单元,用于从所述第一规则集中,确定父规则均为第二规则的第三规则,并对所述第三规则添加第二标记;
第一判断单元,用于针对所述第一规则集中无标记的每一规则,判断其所有父规则是否均有标记;如果是,判断其所有父规则中,添加有第一标记的父规则数量是否大于添加有第二标记的父规则数量,如果大于,对该规则添加所述第二标记;如果不大于,对该规则添加所述第一标记;
第二判断单元,用于判断所述第一规则集中是否存在无标记的规则;如果存在,再触发所述第一判断单元;
划分单元,用于在所述第二判断单元的判断结果为否的情况下,创建两个新的规则组,作为第二规则组和第三规则组,并将所述第一规则集中添加有所述第一标记的所有规则以及添加有所述第二标记的所有规则,分别划分到所述第二规则组和所述第三规则组中;
相应的,所述判断模块,
还用于在所述更新第一规则集为该规则组的步骤之后,去除所述第一规则集中所有规则的标记,再触发所述第一添加单元。
优选的,所述判断模块,具体用于:
针对最新得到的两个规则组中的每一个,判断是否满足条件:当前已划分得到的规则组的数目未达到预设数目,且在最新得到的两个规则组中,该规则组的规则相交程度小于另一规则组;或当前已划分得到的规则组的数目达到预设数目;如果满足,将该规则组确定为第一规则组;如果不满足,更新第一规则集为该规则组,再触发所述划分模块;其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
优选的,所述预设条件包括:
该规则组的规则相交程度不大于预设阈值;
其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
优选的,所述第一确定模块,具体用于:
在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组为:随机选择的一个第一规则组。
优选的,所述第一确定模块,包括:
第一确定单元,用于针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定其中的相交规则对数;
第二确定单元,用于确定目标规则所属的目标规则组为:相交规则对数最小的第一规则组。
优选的,所述更新模块,包括:
第三确定单元,用于确定所述目标规则为第四规则;
第三判断单元,用于在所述目标规则组中,判断是否存在与所述第四规则相交、且优先级低于所述第四规则的第五规则;
处理单元,用于在所述第三判断单元的判断结果为是的情况下,从所有第五规则中确定顺序最靠前的第六规则,并将所述第四规则插入到所述第六规则所处的位置,同时将所述第六规则从其所处的位置移出,将所述第六规则作为第四规则,再触发所述第三判断单元;
插入单元,用于在所述第三判断单元的判断结果为否的情况下,将所述第四规则插入到所述目标规则组末端的空位上。
第四方面,本发明实施例提供了一种规则匹配装置,应用于三态内容寻址存储器,所述装置包括:
获得模块,获得目标输入内容;
第三确定模块,用于针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定该第一规则组中与所述目标输入内容相匹配的规则;其中,所述目标规则集为按照以上任一种的规则集更新装置进行更新的规则集;
处理模块,用于将所确定的所有规则中优先级最高的规则作为规则匹配结果。
由以上可见,本发明实施例提供的方案中,首先在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组;然后在目标规则组中插入该目标规则,完成对目标规则集的更新。其中,对于目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,不大于目标规则集中与其相交的规则总数。
与现有技术相比,本发明实施例提供的方案中,三态内容寻址存储器中的目标规则集被划分为多个第一规则组,且对于目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,不大于目标规则集中与其相交的规则总数,可以理解,存在相交关系的一对规则尽可能被划分到不同的第一规则组中,每个第一规则组中的相交规则对数少;因而,本发明实施例提供的方案在利用语义等价的特点来对上述目标规则集的进行更新时,可以减少规则位置的移动次数,即可以进一步降低规则集的更新开销,进而保证TCAM的匹配性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中在规则集中插入规则时的位置调整过程示意图;
图2为现有技术中TCAM的工作原理示意图;
图3为本发明实施例定义的“相交链”算法及“相交图”示意图;
图4为本发明实施例提供的规则集更新方法的第一种流程示意图;
图5为本发明实施例提供的规则集更新方法的第二种流程示意图;
图6为本发明实施例提供的规则集更新方法的第三种流程示意图;
图7为本发明实施例涉及的规则集划分方式的第一种流程示意图;
图8为本发明实施例涉及的规则集划分方式的第二种流程示意图;
图9为本发明实施例涉及的分组前后的“相交图”示意图;
图10为本发明实施例提供的规则匹配方法的流程示意图;
图11为本发明实施例提供的规则匹配方法的工作原理示意图;
图12为本发明实施例提供的规则集更新方法的第一种结构示意图;
图13为本发明实施例涉及的规则集划分方式的第一种结构示意图;
图14为本发明实施例涉及的规则集划分方式的第二种结构示意图;
图15为本发明实施例提供的规则集更新方法的第二种结构示意图;
图16为本发明实施例提供的规则集更新方法的第三种结构示意图;
图17为本发明实施例提供的规则匹配装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面首先针对本发明实施例涉及到的技术术语进行简单介绍。
TCAM(Ternary Content Addressable Memory),是一种内容寻址存储器;一般的记忆存储器,获得的输入是地址,输出内容;而内容寻址存储器,获得的输入是内容,输出地址。因此内容寻址器被广泛应用于内容匹配领域:如路由器的IP(Internet Protocol,网络之间互连的协议)前缀查找、ACL(Access Control List,访问控制列表)匹配等领域。
但是,TCAM具有体积大、功耗高和价格昂贵的缺点,一般设备上TCAM的容量较小,有可能无法存放大量规则,规则在处理器内存和TCAM上来回放置,因此需要进行频繁更新规则集的操作。
图2展示了TCAM的工作原理:例如,TCAM中存储了三条规则,分别为1110、1101、1001,TCAM获得的输入内容为二进制序列1110,正好匹配中了第1条规则1110,于是TCAM输出规则1110所处的地址1,即表示所获得的输入内容命中了第一条规则。
如前背景技术所述,如果TCAM获得的输入内容可以与至少两个规则匹配,TCAM会从与输入内容所匹配的各个规则中,选择顺序最靠前的规则,然后输出所选择的规则所对应的地址,即其所处的位置。
TCAM中规则集的更新通常是基于语义等价的特点进行的,当需要插入一条规则R到TCAM上某个位置A时,从A位置开始,按照规则的排列顺序从A位置开始向后寻找第一个和规则R相交的规则Rx,并覆盖规则Rx;此时Rx被覆盖,需要将规则Rx重新放置在一个合理的位置上;因此继续向后寻找第一个和规则Rx相交的规则Ry,用Rx覆盖Ry,然后迭代进行上述寻找和覆盖的操作,直到最后一个需要被重新放置的规则Rk的后面没有与其相交的规则,此时,将Rk放置在TCAM中规则集尾部的空位上即可。在整个过程中被依次覆盖的规则形成一个链:R→Rx→Ry→…→Rk;该链中,相邻的两条规则相交,在本发明实施例中,为了方便说明,定义该在规则集中插入规则的方法为“相交链”算法。
为了进一步说明上述“相交链”算法,基于图论的思想,引入“相交图”的概念。在“相交图”中,一个规则对应于一个圆形的节点,如果两个规则相交,对应于两条规则的节点之间则可以构建一条有向边,边的方向由规则之间的优先级决定:从高优先级的规则指向低优先级的规则。
如图3所示,规则r1~r5的优先级依次递减,同时,r1和r2,r1和r3,r1和r4,r3和r4以及r4和r5分别相交。假设要在规则r1上的位置插入规则rins,并假设rins和r1相交;此时由于r1和r2相交,r2和r5相交,根据“相交链”算法,需要将r1移动到r2的位置,r2移动到r5的位置;即,插入规则rins前,各个规则的顺序为r1~r5,插入规则rins后,各个规则的顺序为rins、r1、r3、r4、r2和r5。
在图3所示实例中,对应于“相交图”而言,如同规则沿着r1→r2→r5的路径移动,路径r1→r2→r5包含有3个规则,即路径的长度为3;所以,在规则的“相交图”中,路径的长度决定了“相交链”算法的复杂度,即决定了规则集的更新开销。另一方面,“相交图”中在的路径从整个规则集的角度而言,路径的数目也决定了“相交链”算法的复杂度,可以理解,路径的数目越多,在规则集中插入新规则时,就越有可能需要移动较多的规则的位置,此时规则集的更新开销大。
需要说明的是,规则在TCAM中具有一定的摆放顺序,同时,TCAM中规则的优先级通常为人为定义的,例如以自然数表示优先级,数值越小,优先级越高;另外,TCAM通常与SRAM(Static Random Access Memory,静态随机存取存储器)配合在一起使用,规则的优先级信息一般是存储在SRAM中。
下面针对现有技术的问题进行简单描述。
如前背景技术所述,现有技术中利用语义等价的特点来进行规则集的更新时,依然存在更新开销大的问题。更新开销大,表明更新规则集的时间长,而TCAM在更新规则集时,是不能进行匹配查找的,只能将要进行匹配查找的内容缓存起来,等待TCAM上的规则集更新完成后再进行查找,所以更新开销大还会带来TCAM的匹配性能下降的问题。
下面通过具体实施例来对本发明进行详细介绍。
本发明实施例提供的一种规则集更新方法,应用于三态内容寻址存储器,应该说明的是,本发明实施例中,规则集的更新方法主要针对于在规则集中插入规则的方法。如图4所示,该方法包括:
S101:在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组。其中,对于目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,小于目标规则集中与其相交的规则总数;该目标规则为待插入到目标规则集中的规则。
目标规则集中的某一规则存在相交关系,即表明在目标规则集中,存在与该规则相交的规则。可以理解,本发明实施例中,对于目标规则的划分方式可不做限定,只需保证划分后目标规则集满足条件:
对于目标规则集中的任一规则,如果该规则存在相交的规则,则在其所处的第一规则组中与其相交的规则数量,小于目标规则集中与其相交的规则总数。例如,目标规则集中的规则a具有n(n≥1)个与其相交的规则,规则a处于第一规则组A,则在第一规则组A中与规则a相交的规则的数量小于n。
由于划分后的目标规则集满足上述条件,所以在目标规则集中存在的与待插入规则相交且优先级低于该插入规则的规则的数量少,故TCAM更新规则集时,需要移动位置的规则的数量少,即更新开销小,相应的,也确保TCAM不会长时间处于不可用状态,保证了TCAM的匹配性能。
在实际应用中,由于该目标规则为待插入规则,则需要从各个第一规则组中选择一个作为目标规则组,当然,具体的选择方式本发明实施例不做限定。
作为实现步骤S101的第一种可选方式,上述在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组(S101)的步骤,可以包括:
在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组为:随机选择的一个第一规则组。
例如,当前目标规则集被划分为4个第一规则组A~D,此时可以随机选择第一规则组B作为目标规则组。
当然,规则插入到不同的第一规则组,对应的目标规则集的更新开销是不同的,为了保证目标规则插入目标规则集时,目标规则集的更新开销能够尽可能的小,在本发明实施例中,作为实现步骤S101的第二种可选方式,如图5所示,上述在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组(S101)的步骤,可以包括:
S1011:针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定其中的相交规则对数。
S1012:确定目标规则所属的目标规则组为:相交规则对数最小的第一规则组。
例如,当前目标规则集被划分为4个第一规则组A~D,第一规则组A~D中相交的规则对数分别为400、270、360和210,由于第一规则组D中相交的规则对数最小,此时可以确定第一规则组D作为目标规则组。
如图4所示,S102:在目标规则组中插入该目标规则,完成对目标规则集的更新。
在本发明实施例中,更新目标规则组的方法与现有技术相同,都是基于语义等价的特点进行的;作为一种可选的实现方式,如图6所示,上述在所述目标规则组中插入所述目标规则(S102)的步骤,包括:
S1021:确定目标规则为第四规则。
S1022:在目标规则组中,判断是否存在与第四规则相交、且优先级低于第四规则的第五规则。
如前所述,规则的优先级可以认为预先设定,并且存储在SRAM中,故TCAM在执行步骤S1022时,可以从SRAM中查询规则的优先级,以保证步骤S1022的执行。
例如,TCAM确定目标规则组中与当前的第四规则相交的规则为:规则a、d、f和g,然后,TCAM从SRAM中查询获知,当前的第四规则的优先级低于规则a的优先级,高于规则d、f和g的优先级,则此时确定规则d、f和g均为第五规则,即目标规则组中存在上述第五规则。
如果步骤S1022的执行结果为是,执行步骤S1023:从所有第五规则中确定顺序最靠前的第六规则,并将第四规则插入到第六规则所处的位置,同时将第六规则从其所处的位置移出,将第六规则作为第四规则,返回执行上述在目标规则组中,判断是否存在与第四规则相交、且顺序排在第四规则后的第五规则(S1022)的步骤。
如果步骤S1022的执行结果为否,执行步骤S1024:将第四规则插入到目标规则组末端的空位上。
针对步骤S1021~S1024,例如,待插入规则为规则a,目标规则组当前一共包含有100个规则,所有规则所处的位置分别为1~100。首先以规则a为第四规则,在目标规则组中,判断是否存在与第四规则相交、且优先级低于第四规则的第五规则,假设判断的结果为是,则首先确定出第六规则为规则b,其所处的位置为25。
此时将规则a插入到规则b所处的位置25,然后移出规则b,再以规则b为新的第四规则,在目标规则组中,判断是否存在与第四规则相交、且优先级低于第四规则的第五规则,假设判断的结果为是,再确定出新的第六规则为规则c,其所处的位置为62。
此时将规则b插入到规则c所处的位置62,然后移出规则c,再以规则c为新的第四规则,在目标规则组中,判断是否存在与第四规则相交、且优先级低于第四规则的第五规则,假设判断的结果为否,则此时直接将规则c放置到目标规则组的末端的空位上,即放置到位置101。
由以上可知,与现有技术相比,本实施例提供的方案中,三态内容寻址存储器中的目标规则集被划分为多个第一规则组,且对于目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,不大于目标规则集中与其相交的规则总数,可以理解,存在相交关系的一对规则尽可能被划分到不同的第一规则组中,每个第一规则组中的相交规则对数少;因而,本实施例提供的方案在利用语义等价的特点来对上述目标规则集的进行更新时,可以减少规则位置的移动次数,即可以进一步降低规则集的更新开销;进而保证了TCAM的匹配性能。
在本发明实施例中,于图4~6所示任一方法实施例的基础上,如图7所示,TCAM划分目标规则集的方式,可以包括:
S201:确定目标规则集为第一规则集。
S202:划分第一规则集为两个新的规则组,作为第二规则组和第三规则组。
其中,第二规则组由第一规则集中的第一规则、与其它规则均不相交的规则以及与自身相交的规则的优先级不高于自身优先级的规则构成;该第一规则的所有父规则中,处于第二规则组中的父规则数量不大于处于第三规则组中的父规则数量;一个规则的父规则为:与该规则相交并且优先级大于该规则的优先级的规则。
可以理解,第二规则组由第一规则集中的三类规则组成:第一类规则为第一规则集中与其它规则均不相交的规则,例如,第一规则集中,规则x不与任何规则相交,则规则x属于第一类规则;第二类规则为第一规则集中与自身相交的规则的优先级不高于自身优先级的规则,例如,第一规则集中,某一规则a对应的与其相交的所有规则为规则b、c和d,且规则b、c和d的优先级小于规则a的优先级,则规则a属于第二类规则。
第三类规则即上述第一规则,任一第一规则的所有父规则中,处于第二规则组中的父规则数量不大于处于第三规则组中的父规则数量,例如,在第一规则集中,规则m一共有7个父规则,其中3个父规则处于第二规则组,4个父规则处于第三规则组,由于3不大于4,所以该规则m属于第三类规则。
需要说明的是,一个规则的父规则为:与该规则相交并且优先级大于该规则的优先级的规则;例如,规则1和规则2相交,且规则1的优先级大于规则2的优先级,则规则1为规则2的父规则。
当然,上述第二规则组由第一规则集中的除上述三类规则外的所有规则构成。
如图7所示,S203:针对最新得到的两个规则组中的每一个,判断是否满足预设条件。
如果步骤S203的判断结果为是,执行步骤S204:将该规则组确定为第一规则组。
如果步骤S203的判断结果为否,执行步骤S205:更新第一规则集为该规则组,返回执行划分第一规则集为两个新的规则组,作为第二规则组和第三规则组(S202)的步骤。
上述最新得到的两个规则组中的每一个,即是指最新得到的第二规则组和第三规则组,而且,应该注意的是,由于存在多次划分的情况,所以可能会执行多次执行步骤S202,而每次执行步骤S202就能得到两个新的规则组,所以在执行步骤S203时必须用最新得到的两个规则组。
应该说明的是,此处的预设条件,是指判定某一规则组是否可以被确定为划分上述目标规则集所得到的一个第一规则组的条件。在本发明实施例中,并不限定该预设条件。
作为本发明实施例中步骤S203的第一种可选的实现方式,上述针对最新得到的两个规则组中的每一个,判断是否满足预设条件(S203)的步骤,可以包括:
针对最新得到的两个规则组中的每一个,判断是否满足条件:当前已划分得到的规则组的数目未达到预设数目,且在最新得到的两个规则组中,该规则组的规则相交程度小于另一规则组;或当前已划分得到的规则组的数目达到预设数目。
其中,上述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,上述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
首先应当说明,执行步骤S203时,还没有确定最新得到的两个规则组是否可以是否可以为上述第一规则组,所以当前已划分得到的规则组并不限定于第一规则组,当前已划分得到的规则组的数目是指:当前划分目标规则集所得到的规则组的数量。
例如,第一次执行步骤S202后,目标规则集被划分为两个规则组,则此时,该当前已划分得到的规则组的数目为2;第二次执行步骤S202,第一次执行步骤S202时获得的其中一个新的规则组被划分为两个规则组,此时已划分得到的规则组的数目为3,第三次执行步骤S202,第二次执行步骤S202时获得的其中一个新的规则组被划分为两个规则组,此时已划分得到的规则组的数目为4。
在本发明实施例中,该预设数目可以根据实际情况设置,例如,在实际使用中设置该预设数目为3或者4。而且,本发明实施例中,按照该图7和图8所示的任一方法实施例划分规则集后,在将规则集划分组数较少的情况下,即可保证有效减少规则集更新开销的效果。
另外,本发明实施例中的规则相交程度都是限定于对应的规则组中,例如,目标规则集中有3000个规则存在相交关系,而在上述第三规则组中有300个规则存在相交关系,则对应于该第三规则组的规则相交程度是300。
上述规则相交程度可以是:规则组中存在相交关系的规则总数量。例如,上述第二规则组一共包含有1000个规则,在这1000个规则中,相交的规则共有200个,则可以用200表示第二规则组的规则相交程度。
上述规则相交程度还可以是:规则组中相交的规则对数,如前所述,两个规则相交,则可以称这两个规则为一对相交规则,如规则a和规则b相交,规则b和规则c相交,则规则a、b和c中共有两对相交规则。例如,上述第三规则组一共包含有1000个规则,在这1000个规则中,共有150对相交的规则,则可以用150表示第三规则组的规则相交程度。
上述规则相交程度还可以是:规则组中目标相交链所包含的规则的数量。首先,相交链可以理解为规则组中连续相交的规则构成的一组规则,并且在相交链所处规则组中,与相交链中优先级最高的规则m所相交的所有规则的优先级均低于该规则m,与相交链中优先级最低的规则n所相交的所有规则的优先级均高于该规则n。、
本发明实施例中,上述目标相交链是指该规则组中,包含规则数量最多的相交链。如图3所示的实例,规则组r1~r5中,共有三个相交链:r1→r2→r5、r1→r3→r4→r5以及r1→r4→r5,显然的,规则组r1~r5中的目标相交链为r1→r3→r4→r5,其所包含规则的数量为4个。
本发明实施例中步骤S203的第一种可选的实现方式,结合步骤S204和步骤S205,例如,最新得到的两个规则组为规则组A和B,预设数目为4,当前已划分得到的规则组的数目为2,而规则组A中,相交的规则对数为500,规则组B中,相交的规则对数为200,则确定规则组B为上述第一规则组,而将规则组A作为新的第一规则集,返回执行步骤S202。
作为本发明实施例中步骤S203的第二种可选的实现方式,上述预设条件包括:
该规则组的规则相交程度不大于预设阈值;以及
其中,上述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
显然的,对应步骤S203的两种可选实现方式中,规则相交程度的定义相同,在此不再赘述。
结合步骤S204和步骤S205,例如,规则相交程度为规则组中存在相交关系的规则总数量,预设阈值为400,最新得到的两个规则组为规则组A和B,规则组A和B中存在相交关系的规则总数量分别为560和680,显然的,规则组A和B均不可以被确定为上述第一规则组,TCAM需要分别将规则组A和B最为新的第一规则集,返回执行步骤S202。
可以理解,图7所示方法实施例中,对第一规则集分组时,会将某一规则与其多数的父规则划分到不同的分组中,因此,在将第一规则集分成两组的情况下,能够最大程度地保证:划分第一规则集得到的两个规则组中存在相交关系的规则数量少;进而最终保证对上述目标规则集完成划分后,存在相交关系的一对规则尽可能被划分到不同的第一规则组中,每个第一规则组中的相交规则对数少,使得TCAM在利用语义等价的特点来对上述目标规则集的进行更新时,可以减少规则位置的移动次数,降低目标规则集的更新开销。
本发明实施例并不限定步骤S202的具体实现方式,而作为本发明实施例的一种可选的实现方式中,如图8所示,上述划分第一规则集为两个新的规则组,作为第二规则组和第三规则组(S202)的步骤,可以包括:
S2021:从第一规则集中确定第二规则,并对第二规则添加第一标记。其中,第二规则包括:第一规则集中,与其它规则均不相交的规则,以及与自身相交的规则的优先级均不高于自身优先级的规则。
应该说明的是,此处所述的第一标记可以是任意标识信息,只要该第一标记与下述第二标记相区别即可。
S2022:从第一规则集中,确定父规则均为第二规则的第三规则,并对第三规则添加第二标记。
需要说明的是,在步骤S2022中,只有某一规则的所有父规则为在步骤S2021全部被确定为第二规则时,才可以将该规则确定为第三规则,并对第三规则添加第二标记。例如,规则a的所有的父规则均别被确定为第二规则,则此时可以确定规则a为第三规则;若规则a的所有的父规则中,有一个未被确定为第二规则,则此时可以不能确定规则a为第三规则。
S2023:针对第一规则集中无标记的每一规则,判断其所有父规则是否均有标记;如果是,判断其所有父规则中,添加有第一标记的父规则数量是否大于添加有第二标记的父规则数量,如果大于,对该规则添加第二标记;如果不大于,对该规则添加第一标记。
可以理解,步骤S2021和S2022执行结束后,第一规则集中依然会存在无标记的规则,即存在既没有被添加第一标记,也没有被添加第二标记的规则。则在步骤S2023中,需要对自身未被标记但是其所有父规则均被标记的节点添加标记。
例如,对于第一规则集中的规则a,其所有父规则中,添加有第一标记的父规则的数量为x,添加有第二标记的父规则的数量为y,如果x不大于y,则对规则a添加第一标记;如果x大于y,则对规则a添加第二标记。
当然,执行S2023时,如果某一规则对应的所有父规则没有全部都有标记,则步骤S2023不对该规则添加任何标记。
S2024:判断第一规则集中是否存在无标记的规则;如果存在,返回执行上述针对第一规则集中无标记的每一规则,判断其所有父规则是否均有标记(S2023)的步骤。
步骤S2023执行结束后,第一规则集中可能依然存在没有被标记的规则,所以此时如果步骤S2024中的判断结果为是,需要重新返回执行步骤S2023。步骤S2023与步骤S2024可以循环执行,直至对第一规则集中的所有规则都添加上标记后,TCAM执行完步骤S2024后,才不会继续返回执行步骤S2023,而是执行下述步骤S2025。
如果步骤S2024的执行结果为否,执行步骤S2025:创建两个新的规则组,作为第二规则组和第三规则组,并将第一规则集中添加有第一标记的所有规则以及添加有第二标记的所有规则,分别划分到第二规则组和第三规则组中。
如上所述,执行步骤S2025时,当前的第一规则集中,所有的规则都已被添加标记,此时将添加有第一标记的所有规则划入第二规则组中,将添加有第二标记的所有规则划入第三规则组中;即步骤S2025所得到的两个规则组中,一个规则组中仅由携带有第一标记的规则组成,另一个规则组中仅由携带有第二标记的规则组成;即当前该第一规则集被划分为两个规则组。
相应于步骤S2021~S2025,在上述更新第一规则集为该规则组的步骤之后,如图8所示,上述方法还包括:
S206:去除第一规则集中所有规则的标记,再返回执行上述从第一规则集中确定第二规则,并对第二规则添加第一标记(S2021)的步骤。
可以理解,执行完步骤S205后,新的第一规则集中的每一个规则都被添加有标记,所以在对新的第一规则集执行步骤S2021~S2025之前,需要去除其中的规则上所附带的标记。
为了能够便于理解图8所示方法实施例,下面用图论的思想对本发明实施例的规则集划分方式进行简单介绍。
首先,根据规则的优先级和相交关系构建“相交图”,即一条规则对应于“相交图”中的一个节点,如果两条规则相交,则两节点之间有一条有向的边。边的方向由边连接的两个节点的优先级所决定:由高优先级节点指向低优先级节点,如图3所示,节点r1的优先级高于节点r2的优先级,所以节点r1和r2之间的边由r1指向r2。
根据图论的思想,定义“相交图”中节点的出度和入度:即对于某一个节点,指向该节点的边的数目为该节点的入度,从该节点出发的边的数目为该节点的出度。如图3中,r1的出度为3,入度为0,r3的出度为1,入度为1。同时定义一个节点的父节点为所有指向该节点的边的对端节点,如图3中的节点r5的父节点是r2和r4。
在上述定义的基础上,对“相交图”中的节点进行染色:首先将所有入度为0的节点染成白色;然后根据以下规则对剩余的节点迭代进行染色:1)如果要对某一个节点进行染色,其父节点必须都已经被染色;2)节点的颜色应和他的大多数父节点的颜色相反,例如,某节点的父节点中,黑色节点数量大于白色节点数量,则将该节点染为白色;如果白色节点数量大于黑色节点数量,则该将节点染为黑色,将所有的节点染色完成后,将不同颜色的节点放置在不同组中。上述这种分组的方法称之为“黑白分割”算法。
上述步骤完成后,一个规则集被划分为两个新的规则组,则此时执行操作A:对每个规则组分别重新构建“相交图”,对规则相交程度多的“相交图”再次执行“黑白分割”算法,即将规则相交程度多的一个规则组划分为两个新的规则组,直到规则集被划分为预设个规则组,否则将最新的两个规则组再次执行操作A。实际中只需要将规则集分割成3~4个规则组即可以有效降低规则组内的规则更新的开销。
如图9所示,图中的节点上所标记的黑色阴影表示该节点被染成黑色,无黑色阴影的节点被染成白色,规则集中包括规则r1~r5以及规则rx和ry,对应在相交图中,节点r1~r3均为节点rx的父节点,节点r3~r5均为节点ry的父节点。可以理解,节点rx的父节点中黑色节点和白色节点的数量分别为3和0,节点ry的父节点中黑色节点和白色节点的数量分别为1和2,所以节点rx和ry分别被标记为白色和黑色。
根据“黑白分割”算法对所有节点进行分组后,节点r1~r3以及ry处于一组,节点r4~r5以及rx处于另一组。由图9可知,分组前的“相交图”中,边的数目为6,分组后的两个“相交图”中,边的总数为1。对应于规则而言,分组后得到的每个规则组中的存在相交关系的规则的数量明显减少,因此TCAM更新的开销被有效减少。
下面通过一具体实例来对图8所示的方法实施例进行简单介绍。
TCAM首先以其内的目标规则集作为第一规则集,从当前的第一规则集中确定上述第二规则,并对第二规则添加第一标记;再在第一规则集中,确定父规则均为第二规则的第三规则,并对第三规则添加第二标记;针对第一规则集中无标记的每一规则,判断其所有父规则是否均有标记;如果是,判断其所有父规则中,添加有第一标记的父规则数量是否大于添加有第二标记的父规则数量,如果大于,对该规则添加第二标记;如果不大于,对该规则添加第一标记。
判断第一规则集中是否存在无标记的规则;假设当前存在第一规则集中存在无标记的规则,则TCAM返回执行上述针对第一规则集中无标记的每一规则,判断其所有父规则是否均有标记的步骤。
再次执行到判断第一规则集中是否存在无标记的规则时,判断结果为否,则创建两个新的规则组,作为第二规则组和第三规则组,并将第一规则集中添加有第一标记的所有规则以及添加有第二标记的所有规则,分别划分到第二规则组和第三规则组中。
针对最新得到的两个规则组中的每一个,判断是否满足条件:当前已划分得到的规则组的数目未达到3个,且在最新得到的两个规则组中,该规则组相交的规则对数小于另一规则组;或当前已划分得到的规则组的数目达到3个。
此时由于当前已划分得到的规则组的数目未达到3个,故TCAM在最新得到的两个规则组中,将存在相交的规则对数较大的规则组确定为一个第一规则组,将存在相交的规则对数较大的规则组确定为新的第一规则集,并去除新的第一规则集中所有规则的标记,再返回执行上述从第一规则集中确定第二规则,并对第二规则添加第一标记的步骤。
在将新的第一规则集划分成两个新的规则组后,再次执行针对最新得到的两个规则组中的每一个,判断是否满足条件的操作时,此时,由于当前已划分得到的规则组的数目达到3个,则TCAM将最新得到的两个规则组都确定为第一规则组。此时,TCAM将目标规则集划分为3第一规则组,完成目标规则集的划分。
本发明实施例还提供了一种规则匹配方法,应用于三态内容寻址存储器,如图10所示,该规则匹配方法包括:
S301:获得目标输入内容。
可以理解,TCAM与其它器件共同使用,所以该目标输入内容可以是其它器件发送过来的;当然,该目标输入内容也可以是人工通过一个输入界面输入的,本发明实施例并不限定目标输入内容的获得方式。
S302:针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定该第一规则组中与目标输入内容相匹配的规则;其中,目标规则集为按照图4~8所示任一方法实施例提供的规则集更新方法进行更新的规则集。
可以理解,由于目标规则集被划分为多个第一规则组,所以在每个第一规则组中,TCAM都会查找是否存在与目标输入内容相匹配的规则,如果存在,则确定出与目标输入内容相匹配的规则;更进一步的,在任意第一规则组中,TCAM还可以确定出与目标输入内容相匹配的规则中优先级最高的规则。
S303:将所确定的所有规则中优先级最高的规则作为规则匹配结果。
可以理解,目标规则集被划分为多个第一规则组,所以任意第一规则组中,都可能被确定出与目标输入内容相匹配的规则,但是,对应一个输入内容,TCAM仅会确定一个为规则匹配的结果,即将所确定的所有规则中优先级最高的规则作为规则匹配结果。当然,确定规则匹配结果后,TCAM输出规则匹配结果对应的规则所处的地址。
如图11所示,假设当前目标规则集被划分为三个第一规则组:Region1、Region2和Region3,对于同一个输入内容,TCAM用输入内容分别在Region1、Region2和Region3中匹配规则,分别得到三个输出Output1、Output2和Output3,然后,在进行仲裁:对上述三个输出Output1、Output2和Output3分别对应的规则的优先级进行比较,确定优先级最高的规则为最终的匹配结果,并最终输出所确定的规则的所处的位置。如,最终的匹配结果对应规则x,规则x处于Region2中,并且在Region2中所有的规则中排列第126位,TCAM最终输出的信息为可以为:Region2中的第126位。
由以上可知,与现有技术相比,本实施例提供的方案中,三态内容寻址存储器中的目标规则集被划分为多个第一规则组,且对于目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,不大于目标规则集中与其相交的规则总数,可以理解,存在相交关系的一对规则尽可能被划分到不同的第一规则组中,每个第一规则组中的相交规则对数少;因而,本实施例提供的方案在利用语义等价的特点来对上述目标规则集的进行更新时,可以减少规则位置的移动次数,即可以进一步降低规则集的更新开销;进而保证了TCAM的匹配性能。
相应于图4所示方法实施例,如图12所示,本发明实施例还提供了一种规则集更新装置,应用于三态内容寻址存储器,所述装置包括:
第一确定模块110,用于在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组;其中,对于所述目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,小于所述目标规则集中与其相交的规则总数;所述目标规则为待插入到所述目标规则集中的规则;
更新模块120,用于在所述目标规则组中插入所述目标规则,完成对所述目标规则集的更新。
具体的,相应于图7所示方法实施例,如图13所示,所述装置还可以包括:
第二确定模块210,用于确定所述目标规则集为第一规则集;
划分模块220,用于划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组;其中,第二规则组由所述第一规则集中的第一规则、与其它规则均不相交的规则以及与自身相交的规则的优先级不高于自身优先级的规则构成;所述第一规则的所有父规则中,处于所述第二规则组中的父规则数量不大于处于所述第三规则组中的父规则数量;一个规则的父规则为:与该规则相交并且优先级大于该规则的优先级的规则;
判断模块230,用于针对最新得到的两个规则组中的每一个,判断是否满足预设条件,如果满足,将该规则组确定为第一规则组,如果不满足,更新第一规则集为该规则组,再触发所述划分模块220。
具体的,相应于图8所示方法实施例,如图14所示,所述划分模块220,可以包括:
第一添加单元2201,用于从所述第一规则集中确定第二规则,并对所述第二规则添加第一标记;其中,所述第二规则包括:所述第一规则集中,与其它规则均不相交的规则,以及与自身相交的规则的优先级均不高于自身优先级的规则;
第二添加单元2202,用于从所述第一规则集中,确定父规则均为第二规则的第三规则,并对所述第三规则添加第二标记;
第一判断单元2203,用于针对所述第一规则集中无标记的每一规则,判断其所有父规则是否均有标记;如果是,判断其所有父规则中,添加有第一标记的父规则数量是否大于添加有第二标记的父规则数量,如果大于,对该规则添加所述第二标记;如果不大于,对该规则添加所述第一标记;
第二判断单元2204,用于判断所述第一规则集中是否存在无标记的规则;如果存在,再触发所述第一判断单元2203;
划分单元2205,用于在所述第二判断单元2204的判断结果为否的情况下,创建两个新的规则组,作为第二规则组和第三规则组,并将所述第一规则集中添加有所述第一标记的所有规则以及添加有所述第二标记的所有规则,分别划分到所述第二规则组和所述第三规则组中;
相应的,所述判断模块230,
还用于在所述更新第一规则集为该规则组的步骤之后,去除所述第一规则集中所有规则的标记,再触发所述第一添加单元2201。
在实际应用中,所述判断模块230,可以具体用于:
针对最新得到的两个规则组中的每一个,判断是否满足条件:当前已划分得到的规则组的数目未达到预设数目,且在最新得到的两个规则组中,该规则组的规则相交程度小于另一规则组;或当前已划分得到的规则组的数目达到预设数目;如果满足,将该规则组确定为第一规则组;如果不满足,更新第一规则集为该规则组,再触发所述划分模块220;其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
在实际应用中,具体的,所述预设条件可以包括:
该规则组的规则相交程度不大于预设阈值;
其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
具体的,作为本发明实施例的第一种实现方式,所述第一确定模块110,可以具体用于:
在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组为:随机选择的一个第一规则组。
具体的,作为本发明实施例的第二种实现方式,相应于图5所示方法实施例,如图15所示,所述第一确定模块110,可以包括:
第一确定单元1101,用于针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定其中的相交规则对数;
第二确定单元1102,用于确定目标规则所属的目标规则组为:相交规则对数最小的第一规则组。
在实际应用中,相应于图6所示方法实施例,如图16所示,所述更新模块120,可以包括:
第三确定单元1201,用于确定所述目标规则为第四规则;
第三判断单元1202,用于在所述目标规则组中,判断是否存在与所述第四规则相交、且优先级低于所述第四规则的第五规则;
处理单元1203,用于在所述第三判断单元1202的判断结果为是的情况下,从所有第五规则中确定顺序最靠前的第六规则,并将所述第四规则插入到所述第六规则所处的位置,同时将所述第六规则从其所处的位置移出,将所述第六规则作为第四规则,再触发所述第三判断单元1202;
插入单元1204,用于在所述第三判断单元1203的判断结果为否的情况下,将所述第四规则插入到所述目标规则组末端的空位上。
由以上可知,与现有技术相比,本实施例提供的方案中,三态内容寻址存储器中的目标规则集被划分为多个第一规则组,且对于目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,不大于目标规则集中与其相交的规则总数,可以理解,存在相交关系的一对规则尽可能被划分到不同的第一规则组中,每个第一规则组中的相交规则对数少;因而,本实施例提供的方案在利用语义等价的特点来对上述目标规则集的进行更新时,可以减少规则位置的移动次数,即可以进一步降低规则集的更新开销;进而保证了TCAM的匹配性能。
相应于图10所示方法实施例,本发明实施例还提供了一种规则匹配装置,应用于三态内容寻址存储器,如图17所示,所述装置包括:
获得模块310,获得目标输入内容;
第三确定模块320,用于针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定该第一规则组中与所述目标输入内容相匹配的规则;其中,所述目标规则集为按照图12~16所示任一规则集更新装置进行更新的规则集;
处理模块330,用于将所确定的所有规则中优先级最高的规则作为规则匹配结果。
由以上可知,与现有技术相比,本实施例提供的方案中,三态内容寻址存储器中的目标规则集被划分为多个第一规则组,且对于目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,不大于目标规则集中与其相交的规则总数,可以理解,存在相交关系的一对规则尽可能被划分到不同的第一规则组中,每个第一规则组中的相交规则对数少;因而,本实施例提供的方案在利用语义等价的特点来对上述目标规则集的进行更新时,可以减少规则位置的移动次数,即可以进一步降低规则集的更新开销;进而保证了TCAM的匹配性能。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种规则集更新方法,其特征在于,应用于三态内容寻址存储器,所述方法包括:
在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组;其中,对于所述目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,小于所述目标规则集中与其相交的规则总数;所述目标规则为待插入到所述目标规则集中的规则;
在所述目标规则组中插入所述目标规则,完成对所述目标规则集的更新;
划分所述目标规则集的方式包括:
确定所述目标规则集为第一规则集;
划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组;其中,第二规则组由所述第一规则集中的第一规则、与其它规则均不相交的规则以及与自身相交的规则的优先级不高于自身优先级的规则构成;所述第一规则的所有父规则中,处于所述第二规则组中的父规则数量不大于处于所述第三规则组中的父规则数量;一个规则的父规则为:与该规则相交并且优先级大于该规则的优先级的规则;
针对最新得到的两个规则组中的每一个,判断是否满足预设条件,如果满足,将该规则组确定为第一规则组,如果不满足,更新第一规则集为该规则组,返回执行划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组的步骤。
2.根据权利要求1所述的方法,其特征在于,
所述划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组的步骤,包括:
从所述第一规则集中确定第二规则,并对所述第二规则添加第一标记;其中,所述第二规则包括:所述第一规则集中,与其它规则均不相交的规则,以及与自身相交的规则的优先级均不高于自身优先级的规则;
从所述第一规则集中,确定父规则均为第二规则的第三规则,并对所述第三规则添加第二标记;
针对所述第一规则集中无标记的每一规则,判断其所有父规则是否均有标记;如果是,判断其所有父规则中,添加有第一标记的父规则数量是否大于添加有第二标记的父规则数量,如果大于,对该规则添加所述第二标记;如果不大于,对该规则添加所述第一标记;
判断所述第一规则集中是否存在无标记的规则;
如果存在,返回执行针对所述第一规则集中无标记的每一规则,判断其所有父规则是否均有标记的步骤;
如果不存在,创建两个新的规则组,作为第二规则组和第三规则组,并将所述第一规则集中添加有所述第一标记的所有规则以及添加有所述第二标记的所有规则,分别划分到所述第二规则组和所述第三规则组中;
相应的,在所述更新第一规则集为该规则组的步骤之后,所述方法还包括:
去除所述第一规则集中所有规则的标记,再返回执行所述从所述第一规则集中确定第二规则,并对所述第二规则添加第一标记的步骤。
3.根据权利要求1所述的方法,其特征在于,所述针对最新得到的两个规则组中的每一个,判断是否满足预设条件的步骤,包括:
针对最新得到的两个规则组中的每一个,判断是否满足条件:当前已划分得到的规则组的数目未达到预设数目,且在最新得到的两个规则组中,该规则组的规则相交程度小于另一规则组;或当前已划分得到的规则组的数目达到预设数目;
其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
4.根据权利要求1所述的方法,其特征在于,所述预设条件包括:
该规则组的规则相交程度不大于预设阈值;
其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
5.根据权利要求1所述的方法,其特征在于,所述在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组的步骤,包括:
在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组为:随机选择的一个第一规则组。
6.根据权利要求1所述的方法,其特征在于,所述在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组的步骤,包括:
针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定其中的相交规则对数;
确定目标规则所属的目标规则组为:相交规则对数最小的第一规则组。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述在所述目标规则组中插入所述目标规则的步骤,包括:
确定所述目标规则为第四规则;
在所述目标规则组中,判断是否存在与所述第四规则相交、且优先级低于所述第四规则的第五规则;
如果存在,从所有第五规则中确定顺序最靠前的第六规则,并将所述第四规则插入到所述第六规则所处的位置,同时将所述第六规则从其所处的位置移出,将所述第六规则作为第四规则,返回执行所述在所述目标规则组中,判断是否存在与所述第四规则相交、且顺序排在所述第四规则后的第五规则的步骤;
如果不存在,将所述第四规则插入到所述目标规则组末端的空位上。
8.一种规则匹配方法,其特征在于,应用于三态内容寻址存储器,所述方法包括:
获得目标输入内容;
针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定该第一规则组中与所述目标输入内容相匹配的规则;其中,所述目标规则集为按照权利要求1~7任一项所述的规则集更新方法进行更新的规则集;
将所确定的所有规则中优先级最高的规则作为规则匹配结果。
9.一种规则集更新装置,其特征在于,应用于三态内容寻址存储器,所述装置包括:
第一确定模块,用于在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组;其中,对于所述目标规则集中存在相交关系的任一规则,其所处的第一规则组中与其相交的规则数量,小于所述目标规则集中与其相交的规则总数;所述目标规则为待插入到所述目标规则集中的规则;
更新模块,用于在所述目标规则组中插入所述目标规则,完成对所述目标规则集的更新;
所述装置还包括:
第二确定模块,用于确定所述目标规则集为第一规则集;
划分模块,用于划分所述第一规则集为两个新的规则组,作为第二规则组和第三规则组;其中,第二规则组由所述第一规则集中的第一规则、与其它规则均不相交的规则以及与自身相交的规则的优先级不高于自身优先级的规则构成;所述第一规则的所有父规则中,处于所述第二规则组中的父规则数量不大于处于所述第三规则组中的父规则数量;一个规则的父规则为:与该规则相交并且优先级大于该规则的优先级的规则;
判断模块,用于针对最新得到的两个规则组中的每一个,判断是否满足预设条件,如果满足,将该规则组确定为第一规则组,如果不满足,更新第一规则集为该规则组,再触发所述划分模块。
10.根据权利要求9所述的装置,其特征在于,所述划分模块,包括:
第一添加单元,用于从所述第一规则集中确定第二规则,并对所述第二规则添加第一标记;其中,所述第二规则包括:所述第一规则集中,与其它规则均不相交的规则,以及与自身相交的规则的优先级均不高于自身优先级的规则;
第二添加单元,用于从所述第一规则集中,确定父规则均为第二规则的第三规则,并对所述第三规则添加第二标记;
第一判断单元,用于针对所述第一规则集中无标记的每一规则,判断其所有父规则是否均有标记;如果是,判断其所有父规则中,添加有第一标记的父规则数量是否大于添加有第二标记的父规则数量,如果大于,对该规则添加所述第二标记;如果不大于,对该规则添加所述第一标记;
第二判断单元,用于判断所述第一规则集中是否存在无标记的规则;如果存在,再触发所述第一判断单元;
划分单元,用于在所述第二判断单元的判断结果为否的情况下,创建两个新的规则组,作为第二规则组和第三规则组,并将所述第一规则集中添加有所述第一标记的所有规则以及添加有所述第二标记的所有规则,分别划分到所述第二规则组和所述第三规则组中;
相应的,所述判断模块,
还用于在所述更新第一规则集为该规则组的步骤之后,去除所述第一规则集中所有规则的标记,再触发所述第一添加单元。
11.根据权利要求9所述的装置,其特征在于,所述判断模块,具体用于:
针对最新得到的两个规则组中的每一个,判断是否满足条件:当前已划分得到的规则组的数目未达到预设数目,且在最新得到的两个规则组中,该规则组的规则相交程度小于另一规则组;或当前已划分得到的规则组的数目达到预设数目;如果满足,将该规则组确定为第一规则组;如果不满足,更新第一规则集为该规则组,再触发所述划分模块;其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
12.根据权利要求9所述的装置,其特征在于,所述预设条件包括:
该规则组的规则相交程度不大于预设阈值;
其中,所述规则相交程度包括规则组中存在相交关系的规则总数量、相交的规则对数或者目标相交链所包含的规则的数量,所述目标相交链为规则组中其包含的规则连续相交且数量最多的一组规则。
13.根据权利要求9所述的装置,其特征在于,所述第一确定模块,具体用于:
在划分三态内容寻址存储器的目标规则集所得到的各个第一规则组中,确定目标规则所属的目标规则组为:随机选择的一个第一规则组。
14.根据权利要求9所述的装置,其特征在于,所述第一确定模块,包括:
第一确定单元,用于针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定其中的相交规则对数;
第二确定单元,用于确定目标规则所属的目标规则组为:相交规则对数最小的第一规则组。
15.根据权利要求9~14任一项所述的装置,其特征在于,所述更新模块,包括:
第三确定单元,用于确定所述目标规则为第四规则;
第三判断单元,用于在所述目标规则组中,判断是否存在与所述第四规则相交、且优先级低于所述第四规则的第五规则;
处理单元,用于在所述第三判断单元的判断结果为是的情况下,从所有第五规则中确定顺序最靠前的第六规则,并将所述第四规则插入到所述第六规则所处的位置,同时将所述第六规则从其所处的位置移出,将所述第六规则作为第四规则,再触发所述第三判断单元;
插入单元,用于在所述第三判断单元的判断结果为否的情况下,将所述第四规则插入到所述目标规则组末端的空位上。
16.一种规则匹配装置,其特征在于,应用于三态内容寻址存储器,所述装置包括:
获得模块,获得目标输入内容;
第三确定模块,用于针对划分三态内容寻址存储器的目标规则集所得到的每个第一规则组,确定该第一规则组中与所述目标输入内容相匹配的规则;其中,所述目标规则集为按照权利要求9~15任一项所述的规则集更新装置进行更新的规则集;
处理模块,用于将所确定的所有规则中优先级最高的规则作为规则匹配结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710338954.7A CN108572921B (zh) | 2017-05-15 | 2017-05-15 | 规则集更新方法、装置、规则匹配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710338954.7A CN108572921B (zh) | 2017-05-15 | 2017-05-15 | 规则集更新方法、装置、规则匹配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108572921A CN108572921A (zh) | 2018-09-25 |
CN108572921B true CN108572921B (zh) | 2021-03-12 |
Family
ID=63576039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710338954.7A Active CN108572921B (zh) | 2017-05-15 | 2017-05-15 | 规则集更新方法、装置、规则匹配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108572921B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111935100B (zh) * | 2020-07-16 | 2022-05-20 | 锐捷网络股份有限公司 | Flowspec规则下发方法、装置、设备及介质 |
CN117743809B (zh) * | 2024-02-20 | 2024-05-24 | 之江实验室 | 一种细胞检测数据预处理方法、装置及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859208A (zh) * | 2006-03-29 | 2006-11-08 | 华为技术有限公司 | 一种tcam路由表管理方法和系统 |
CN101039271A (zh) * | 2007-03-20 | 2007-09-19 | 华为技术有限公司 | 访问控制列表规则生效的方法及装置 |
CN101350771A (zh) * | 2008-07-07 | 2009-01-21 | 中国人民解放军国防科学技术大学 | 三态内容可寻址存储器条目免排序存储方法及其系统 |
CN101515900A (zh) * | 2009-04-13 | 2009-08-26 | 武汉烽火网络有限责任公司 | 基于前缀覆盖级别的二分ip路由查找方法 |
US7809749B2 (en) * | 2003-06-11 | 2010-10-05 | International Business Machines Corporation | High run-time performance system |
CN102308533A (zh) * | 2010-06-28 | 2012-01-04 | 华为技术有限公司 | 对报文进行分类的方法及装置 |
CN103841095A (zh) * | 2013-05-10 | 2014-06-04 | 湖南大学 | 一种基于二部图的防火墙规则更新方法 |
CN106302177A (zh) * | 2016-08-23 | 2017-01-04 | 杭州迪普科技有限公司 | 一种路由过滤规则的组织方法和装置 |
-
2017
- 2017-05-15 CN CN201710338954.7A patent/CN108572921B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7809749B2 (en) * | 2003-06-11 | 2010-10-05 | International Business Machines Corporation | High run-time performance system |
CN1859208A (zh) * | 2006-03-29 | 2006-11-08 | 华为技术有限公司 | 一种tcam路由表管理方法和系统 |
CN101039271A (zh) * | 2007-03-20 | 2007-09-19 | 华为技术有限公司 | 访问控制列表规则生效的方法及装置 |
CN101350771A (zh) * | 2008-07-07 | 2009-01-21 | 中国人民解放军国防科学技术大学 | 三态内容可寻址存储器条目免排序存储方法及其系统 |
CN101515900A (zh) * | 2009-04-13 | 2009-08-26 | 武汉烽火网络有限责任公司 | 基于前缀覆盖级别的二分ip路由查找方法 |
CN102308533A (zh) * | 2010-06-28 | 2012-01-04 | 华为技术有限公司 | 对报文进行分类的方法及装置 |
CN103841095A (zh) * | 2013-05-10 | 2014-06-04 | 湖南大学 | 一种基于二部图的防火墙规则更新方法 |
CN106302177A (zh) * | 2016-08-23 | 2017-01-04 | 杭州迪普科技有限公司 | 一种路由过滤规则的组织方法和装置 |
Non-Patent Citations (1)
Title |
---|
"基于TCAM 的范围匹配方法—C-TCAM";朱国胜,余少华;《通信学报》;20120131;第33卷(第1期);第31-37页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108572921A (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8750144B1 (en) | System and method for reducing required memory updates | |
CN107077419B (zh) | 用于存储与数据元素相关联的地址的方法、设备和系统 | |
US6467019B1 (en) | Method for memory management in ternary content addressable memories (CAMs) | |
CN107800631B (zh) | 使用ram中的散列表的tcam规则的有效匹配的方法和装置 | |
US7774538B2 (en) | Method for ternary contents address memory table management | |
US8090901B2 (en) | TCAM management approach that minimize movements | |
US20140188885A1 (en) | Utilization and Power Efficient Hashing | |
CN101655861B (zh) | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 | |
CN107431660B (zh) | 检索装置、检索方法及记录介质 | |
US9143449B2 (en) | Methods and apparatuses for improving database search performance | |
US8990492B1 (en) | Increasing capacity in router forwarding tables | |
US10528328B2 (en) | Learning from input patterns in Programing-By-Example | |
CN108572921B (zh) | 规则集更新方法、装置、规则匹配方法及装置 | |
CN106789859B (zh) | 报文匹配方法及装置 | |
CN104363177A (zh) | 一种用于报文处理的规则表项的优化方法及装置 | |
WO2015192742A1 (zh) | 一种查找装置、查找方法和配置方法 | |
CN109450811B (zh) | 流量控制方法、装置及服务器 | |
CN114448890B (zh) | 寻址方法、装置、电子设备及存储介质 | |
CN115129324A (zh) | 规则匹配方法、装置、电子设备及介质 | |
CN109558520A (zh) | 一种基于用户画像的数据处理方法和装置 | |
CN114780533A (zh) | 基于双数组字典树的存储空间分配方法、装置及电子设备 | |
CN111819552A (zh) | 访问控制列表的管理方法及装置 | |
CN110990611B (zh) | 图片缓存方法、装置、电子设备及存储介质 | |
CN104537017B (zh) | 一种基于路径的文件搜索方法及装置 | |
CN104484281A (zh) | 数据存储方法、查找方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |