一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

范围信息的编码、匹配方法和计算机存储介质与流程

2021-01-12 10:31:00 来源:中国专利 TAG:信息 匹配 编码 计算机 方法
范围信息的编码、匹配方法和计算机存储介质与流程

本申请涉及信息处理领域,尤指一种范围信息的编码、匹配方法和计算机存储介质。



背景技术:

tcam(ternarycontentaddressablememory,三态内容寻址存储器)执行包分类时,如果存储条目中需要范围类型的字段,需要将范围进行分解,转换成前缀,而将范围转化为前缀会导致存储条目数量明显增加。例如,单个16bit范围最多会分解为31个前缀。典型的包分类条目通常包含两个16bit范围,最多分解为31*31=961个前缀,上述情况称为范围膨胀。在产品应用过程中,范围膨胀会导致某些包分类规则集对应的tcam资源利用率急剧降低。

相关技术中,针对范围膨胀问题,解决方案是使用优化的通用范围编码技术,通过使用额外的tcam资源对范围进行编码,以此来降低范围膨胀的代价,其聚焦点是任意类型的规则集,不基于规则集的观察。

在实际的规则集使用的过程中,由于其通用性的特征,范围膨胀代价仍然很高,两个范围域的平均膨胀度无法满足产品需求。



技术实现要素:

为了解决上述技术问题,本申请提供了一种三态内容寻址存储器中范围信息的编码方法和装置,能够克服现有技术中存在的tcam范围膨胀问题。

为了达到本申请目的,本申请提供了一种范围信息的编码方法,包括:

获取新的基本范围,其中所述新的基本范围用于分解所述三态内容寻址存储器tcam中存储的条目的范围信息;

根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,其中每个预先存储的基本范围有各自的编码信息;

根据所述展开结果,确定所述新的基本范围所对应的编码信息。

在一个示例性实施例中,所述根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果之前,所述方法还包括:

确定所述新的基本范围展开为前缀的条目数量;

在所述新的基本范围展开为前缀的条目数量不为1时,再执行对所述新的基本范围执行展开操作。

在一个示例性实施例中,所述根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,包括,

在预先存储的每个基本范围均有各自对应的域时,选择包括最多数量的基本范围的域作为目标域;

使用所述目标域上的基本范围将所述新的基本范围展开,得到展开后的各部分范围。

在一个示例性实施例中,所述使用所述目标域上的基本范围将所述新的基本范围展开,得到展开后的各部分范围,包括:

遍历所述目标域的全部基本范围,使用数量最少的基本范围对所述新的基本范围进行展开操作,其中所使用的基本范围覆盖范围不超过所述新的基本范围的进行展开操作。

在一个示例性实施例中,所述使用所述目标域上的基本范围将所述新的基本范围展开,得到展开后的各部分范围,包括:

在使用所述目标域的基本范围展开所述新的基本范围后,判断所使用的基本范围是否完全覆盖所述新的基本范围;

如果所述使用的基本范围无法覆盖所述新的基本范围,则获取所述新的基本范围中无法覆盖的部分范围;

对所述部分范围进行前缀展开,得到所述部分范围对应的条目。

在一个示例性实施例中,所述根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,包括:

获取所述新的基本范围按照预先获取的基本范围执行展开操作后的条目数量;

将所述新的基本范围执行展开操作后的条目数量与预先获取的所述新的基本范围转换为前缀的条目数量进行比较;

如果所述新的基本范围转换为前缀的条目数量小于所述新的基本范围执行展开操作后的条目数量,则使用展开操作后的前缀作为所述新的基本范围对应的条目信息,否则,根据所述新的基本范围展开结果中各组成部分对应的条目信息,确定所述新的基本范围的条目信息。

在一个示例性实施例中,所述预先存储的基本范围的编码信息包括域信息对应的编码信息和范围信息对应的编码信息。

为了达到本申请目的,本申请提供了一种计算机存储介质,包括处理器和存储器,其中所述存储器存储有计算机程序,所述处理器用以调用所述存储器中的计算机程序以实现上文任一所述的方法。

为了达到本申请目的,本申请提供了一种范围信息的匹配方法,包括:

从得到的数据包中获取所述数据包携带的范围信息;

将所述范围信息与采用上文任一所述编码将所述范围信息与采用上文任一所述编码得到的基本范围进行匹配,得到匹配结果;

根据所述匹配结果,对所述数据包进行处理。

为了达到本申请目的,本申请提供了一种计算机存储介质,包括处理器和存储器,其中所述存储器存储有计算机程序,所述处理器用以调用所述存储器中的计算机程序以实现上文所述的方法。

本申请实施例提供的技术方案,获取新的基本范围,根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,再根据所述展开结果,确定所述新的基本范围所对应的编码信息,实现利用已有的基本范围对新的基本范围进行编码的目的,克服现有技术中存在的tcam范围膨胀问题,提高了资源的利用率。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。

图1为本申请实施例提供的范围信息的编码方法的流程图;

图2为本申请实施例提供的范围编码方法的流程图;

图3为本申请实施例提供的新的基础范围的示意图;

图4为图3所示的新的基本信息的展开结果的示意图;

图5为图3所示的新的基本信息的展开结果的另一示意图;

图6为本申请实施例提供的范围信息的匹配方法的流程图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1为本申请实施例提供的范围信息的编码方法的流程图。图1所示方法包括:

步骤101、获取新的基本范围,其中所述新的基本范围用于分解所述tcam中存储的条目的范围信息;

在一个示例性实施例中,基本范围用于分解tcam中存储的条目的范围信息,不同的基本范围可以相互不重叠,或者,有部分范围重叠。

步骤102、根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,其中每个预先存储的基本范围有各自的编码信息;

在一个示例性实施例中,预先存储的基本范围是通过如下方式得到的,包括:

在本地没有存储基本范围时,当收到基本范围时,可以将该基本范围转换成前缀,以前缀对应的条目信息对该基本范围进行存储;

在得到的基本范围达到预先存储的数量阈值时,可以采用本申请实施例提供的方法对新接收的基本范围进行处理。

在一个示例性实施例中,所述根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,包括:

在预先存储的每个基本范围均有各自对应的域时,选择包括最多数量的基本范围的域作为目标域;

使用所述目标域上的基本范围将所述新的基本范围展开,得到展开后的各部分范围。

遍历所有已分配基本范围的域,并查找在这些域中展开条目最多的域作为目标域,再利用目标域上的基本范围对新的基本范围进行展开。

步骤103、根据所述展开结果,确定所述新的基本范围所对应的编码信息。

在一个示例性实施例中,与相关技术中范围信息先分解再转换为前缀,本申请实施例利用已存储的基本范围展开新的基本范围,实现利用已有的基本范围标记新的基本范围的目的,减少了对基本范围的存储消耗。

本申请实施例提供的方法,获取新的基本范围,根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,再根据所述展开结果,确定所述新的基本范围所对应的编码信息,实现利用已有的基本范围对新的基本范围进行编码的目的,克服现有技术中存在的tcam范围膨胀问题,提高了资源的利用率。

下面对本申请提供的方法作进一步说明:

在一个示例性实施例中,所述根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果之前,所述方法还包括:

确定所述新的基本范围展开为前缀的条目数量;

在所述新的基本范围展开为前缀的条目数量不为1时,再执行对所述新的基本范围执行展开操作。

通过判断所述新的基本范围展开为前缀的条目数量是否为1,在执行基于基本范围的展开操作,可以有效控制执行基于基本范围的展开操作的执行次数,提高处理效率。

在一个示例性实施例中,所述使用所述目标域上的基本范围将所述新的基本范围展开,得到展开后的各部分范围,包括:

遍历所述目标域的全部基本范围,使用数量最少的基本范围对所述新的基本范围进行展开操作,其中所使用的基本范围覆盖范围不超过所述新的基本范围的进行展开操作。

在目标域包括至少两个基本范围时,可以对目标域中基本范围进行组合,使组合后的覆盖范围不超过所述新的基本范围;通过采用数量最少的基本范围,可以使新的基本范围的条目数量最少,提高管理的效率。

在一个示例性实施例中,所述使用所述目标域上的基本范围将所述新的基本范围展开,得到展开后的各部分范围,包括:

在使用所述目标域的基本范围展开所述新的基本范围后,判断所使用的基本范围是否完全覆盖所述新的基本范围;

如果所述使用的基本范围无法覆盖所述新的基本范围,则获取所述新的基本范围中无法覆盖的部分范围;

对所述部分范围进行前缀展开,得到所述部分范围对应的条目。

通过对展开结果的覆盖范围进行判断,利用对未覆盖的部分范围进行前缀展开,通过结合基础范围的展开和前缀的展开,使新的基本范围能够得到完整覆盖。

在一个示例性实施例中,所述根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,包括:

获取所述新的基本范围按照预先获取的基本范围执行展开操作后的条目数量;

将所述新的基本范围执行展开操作后的条目数量与预先获取的所述新的基本范围转换为前缀的条目数量进行比较;

如果所述新的基本范围转换为前缀的条目数量小于所述新的基本范围执行展开操作后的条目数量,则使用展开操作后的前缀作为所述新的基本范围对应的条目信息,否则,根据所述新的基本范围展开结果中各组成部分对应的条目信息,确定所述新的基本范围的条目信息。

图2为本申请实施例提供的范围编码方法的流程图。如图2所示,所示方法包括:

步骤201、进行基本前缀范围展开流程,统计当前条目范围转换为前缀的个数,记为p_range_num;

步骤202、判断p_range_num是否为1,若为1则进行步骤206,否则进行步骤203;

步骤203、进行基本范围展开流程,统计当前条目基本范围展开个数,记为b_range_num;

步骤204、比较p_range_num与b_range_num,若p_range_num小于b_range_num,则进行步骤206,否则进行步骤205;

步骤205、使用基本范围编码存储至tcam存储模块;

步骤206、直接使用分解前缀存储至tcam存储模块。

通过上述方式,可以实现对新的基本范围的编码管理。

在一个示例性实施例中,所述预先存储的基本范围的编码信息包括域信息对应的编码信息和范围信息对应的编码信息。

利用基本范围内的域信息的编码信息,可以实现对域的识别;范围信息的编码信息可以采用1bit进行标记,简化基本范围的编码的占用。

下面对本申请实施例提供的方法进行说明:

针对带范围包分类规则集,将单个基本范围编码为一个bit,并提供一套优化编码策略,结合硬件并行比较功能,从而解决tcam范围膨胀问题,由于少量的基本范围可以重组为多个合成范围,在tcam资源有限的情况下,可以最大化地提升资源利用率。

本发明所述范围编码的方法包括以下步骤:

一个ipv4类型的规则集包含n个k-bit的范围域分别记为r_field_0、r_field_1、......、r_field_n。给定额外的m个bit宽度可用于范围编码的条目宽度扩展n个范围域,共享32个bit。其中范围编码流程如下:

步骤1、可以动态下发或一次性下发,预先配置全部m个bit所表示的基本范围,其中基本范围区分所在的域;如未配置,则使用最先遇到的m个无法直接转化成前缀表示(即前缀展开后条目数不为1)的范围作为基本范围。

步骤2、在m个基本范围全部分配完成后,每次下发规则的展开方式如下:

a)先进行前缀展开数的统计,如果能够直接展开,则直接存入tcam,结束;否则,继续执行步骤b);

b)遍历所有已分配基本范围的域,并找到规则在这些域中展开条目最多的域,如果最大展开条目数为1,则直接存入tcam;如果最大展开条目数大于1,继续步骤c);

c)将规则在该域的映射记为range,将range使用该域上的基本范围展开,遍历所有该域的基本范围,找到最少数量的、最大程度覆盖但不超过range边界的基本范围,无法覆盖的部分采用前缀展开进行展开;

d)比较该域使用基本范围展开的总条目数量与直接使用前缀展开的条目数量,选择较小的一个,展开后存入tcam。

其中,将range使用该域上的基本范围展开的步骤如下:

基本范围展开采用所有基本范围遍历建树的方式进行,从而找到最优的展开组合。如果一个基本范围不在<range>内,则跳过;如果一个基本范围在<range>内,则使用该范围作为根结点建树,并统计完整展开后的扩展条目数。

图3为本申请实施例提供的新的基础范围的示意图。如图3所示,选择<e1>作为根节点,对<range>进行展开。<range>左右端点分别为original_min和original_max,如果<range>包含<e1>,但是original_min小于<e1>的左端点,则说明左边有未覆盖部分,将剩余的范围记为<left_field>;同样的,右边有未覆盖部分,记为<right_field>。

在图3所示的范围,新建左右子节点,分别存放<left_field>和<right_field>的展开数量;此时<e1>存在根节点中,根节点的展开数为1;那么<range>的总展开数为1 num(left) num(right),这里num(left)和num(right)分别为左右子节点存放范围的展开数量。

分别递归处理左右剩余范围的展开,以得到num(left)和num(right);以<left_field>为例,先使用前缀展开方式尝试展开,如果前缀展开数为1,则停止向下建树;如果前缀展开数不为1,寻找能够完全包含<left_field>且在<range>范围内的基本范围,如图中的<e2>,此时也停止向下建树;如果仍无法找到,如图中的<right_field>,则继续遍历所有部分覆盖<right_field>且被<range>包含的范围,并继续尝试展开(如图中的<e3> <right_field’>),直到展开完成或者继续分解下去的展开数已大于直接用前缀展开的数目,则停止建树。

其中,范围信息的编码流程,包括:

tcam存储时,每使用到一个ei,则产生一个条目。rule针对某个范围域的映射<range>使用了基本范围展开,假设范围域位宽为8,额外使用了4个bit对该域进行基本范围编码,且ei(i>1)对应第(i-1)个bit。

图4为图3所示的新的基本信息的展开结果的示意图。如图4所示,<range>最终确定的方案是使用e1、e2和e3展开,那么将得到3个需要存入tcam的条目,如下:

条目1:********1***

条目2:*********1**

条目3:**********1*

图5为图3所示的新的基本信息的展开结果的另一示意图。如图5所示,<range>最终确定的方案是使用e1、e2以及额外的两个前缀范围进行展开,那么将得到4个需要存入tcam的条目,如下:

条目1:********1***

条目2:*********1**

条目3:xxxxxxxx****

条目4:xxxxxxxx****

其中,x组成的序列代表某个前缀形式的三态比特串,*代表三态中的“don’tcare”。

本申请实施例系统提供的方法,在真实规则集中,不同范围的个数通常比较有限,本发明结合该规则集特点,基于前缀展开法,进行针对性的范围编码,但性能明显优于前缀展开法,展开数量针对不同规则集有不同程度的优化。在系统负荷较大,预处理失败时,本方法完全兼容前缀展开的编码和规则下发方法,存在理论下界。与现有技术相比,通过使用少量的额外tcam资源,明显降低了范围膨胀问题所带来的资源利用率低的问题,同时由于可以利用多个基本范围同时编码的特性,资源利用率的稳定性也明显增加。

本申请实施例提供一种计算机存储介质,包括处理器和存储器,其中所述存储器存储有计算机程序,所述处理器用以调用所述存储器中的计算机程序以实现上文图1至图5任一所述的方法。

本申请实施例提供的计算机存储介质,获取新的基本范围,根据预先存储的基本范围,对所述新的基本范围执行展开操作,得到展开结果,再根据所述展开结果,确定所述新的基本范围所对应的编码信息,实现利用已有的基本范围对新的基本范围进行编码的目的,克服现有技术中存在的tcam范围膨胀问题,提高了资源的利用率。

图6为本申请实施例提供的范围信息的匹配方法的流程图。图6所示方法,包括:

步骤601、从得到的数据包中获取所述数据包携带的范围信息;

步骤602、将所述范围信息与采用上文任一所述编码将所述范围信息与采用上文任一所述编码得到的基本范围进行匹配,得到匹配结果;

在一个示例性实施例中,将输入键值中的范围字段与预设的n个基本范围全并行比较,key值计算的具体方法是将packet的范围字段与所有对应域的基本范围进行比较,如落入该范围则对应bit编码为1,如未落入则编码为0。下发至tcam进行比较的key值的所有比特均为确定的二进制数值(0或1)。

步骤603、根据所述匹配结果,对所述数据包进行处理。

本申请实施例提供的方法,从得到的数据包中获取所述数据包携带的范围信息,将所述范围信息与采用上文任一所述编码将所述范围信息与采用上文任一所述编码得到的基本范围进行匹配,得到匹配结果,并根据所述匹配结果,对所述数据包进行处理,利用基本范围的编码对范围信息进行匹配,提高对范围信息的查找效率。

本申请实施例提供一种计算机存储介质,包括处理器和存储器,其中所述存储器存储有计算机程序,所述处理器用以调用所述存储器中的计算机程序以实现上文图6所述的方法。

本申请实施例提供的计算机存储介质,从得到的数据包中获取所述数据包携带的范围信息,将所述范围信息与采用上文任一所述编码将所述范围信息与采用上文任一所述编码得到的基本范围进行匹配,得到匹配结果,并根据所述匹配结果,对所述数据包进行处理,利用基本范围的编码对范围信息进行匹配,提高对范围信息的查找效率。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜