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

ACL规则处理方法、装置、计算机设备和可读介质与流程

2022-03-01 22:08:58 来源:中国专利 TAG:

acl规则处理方法、装置、计算机设备和可读介质
技术领域
1.本公开涉及通信技术的包分类领域,具体涉及一种acl规则处理方法、装置、计算机设备和可读介质。


背景技术:

2.acl(access control lists,访问控制列表)硬件实现方案,分为tcam(ternary content addressable memory,三态内容寻址存储器)与ram(random access memory,随机存取存储器)两类,其中tcam实现方案利用tcam硬件特性直接存储acl规则。ram类方案通过高效的算法将acl规则组织存储于ram结构中,配合定制的转发面架构,通常具备较低的面积功耗实现代价。
3.由于acl业务本身具备多匹配特性,因此在转发面架构中需要设计优先级仲裁模块,用于选取多条匹配规则中优先级最高的规则输出至后级,基于ram实现的算法方案在规则优先级仲裁方面与tcam实现方案有所区别,ram方案将规则过滤方法信息与规则对应的优先级信息共同存储于ram规则中,在多规则匹配优先级仲裁时,基于规则存储对应的优先级高低来决策最终结果。而tcam方案通常为通过命中规则存储地址的高低来决策最终结果。
4.在用户动态更新acl表的场景中,仅指定当前下发规则与已下发的某个规则的优先级高低关系,在ram类算法实现方案中,受限于转发面匹配特性,每条规则必须指定一项全局优先级值,用于最终结果仲裁,因此控制面需要对用户下发的规则进行隐式的优先级分配。业内常用的解决方案是将规则集顺序编码,初始下发的规则优先级置为0(假设0为最高优先级),在某些场景下,后续下发的规则的优先级指定比某条已下发规则的优先级高,先将低于当前下发规则优先级的全部已下发规则的优先级的值加1,从而空出一个优先级数值,将新下发规则的优先级置为该优先级数值。
5.在上述方案场景中,每次下发一条规则,最差情况下需要修改全部已下发规则优先级,即修改规则优先级的操作次数为n,n为已下发规则的总数量。对于容量较大的acl,修改规则优先级的操作次数较多,会增加acl规则从配置到生效的时间,降低acl规则的配置效率。


技术实现要素:

6.本公开针对现有技术中存在的上述不足,提供一种acl规则处理方法、装置、计算机设备和可读介质。
7.第一方面,本公开实施例提供一种acl规则处理方法,应用于acl规则处理装置,所述acl规则处理装置内acl规则的存储地址为acl规则的相对优先级,所述acl处理装置内预设有优先级基线指针参数,所述优先级基线指针参数指向已存储的优先级最高的acl规则,且所述优先级基线指针参数的值为所述已存储的优先级最高的acl规则的相对优先级,所述方法包括:
8.根据待存储acl规则与已存储acl规则的优先级关系,确定所述待存储acl规则的存储地址;
9.若所述存储地址中当前已存储有acl规则,则根据所述存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离所述存储地址最近的空洞地址和高地址方向上距离所述存储地址最近的空洞地址,确定搬移方向;
10.至少根据所述搬移方向确定搬移的目标地址;
11.根据所述搬移方向和目标地址逐条搬移acl规则,直到空出所述存储地址,其中,每搬移一次acl规则,更新当前搬移的acl规则的相对优先级;
12.将所述待存储acl规则存储在所述存储地址,并根据所述存储地址记录所述待存储acl规则的相对优先级。
13.在一些实施例中,所述根据所述存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离所述存储地址最近的空洞地址和高地址方向上距离所述存储地址最近的空洞地址,确定搬移方向,包括:
14.根据所述存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离所述存储地址最近的空洞地址,计算低地址方向的搬移代价;
15.根据所述存储地址和高地址方向上距离所述存储地址最近的空洞地址,计算高地址方向的搬移代价;
16.根据所述低地址方向的搬移代价和所述高地址方向的搬移代价,确定搬移方向。
17.在一些实施例中,所述根据所述低地址方向的搬移代价和所述高地址方向的搬移代价,确定搬移方向,包括:
18.确定所述低地址方向的搬移代价和所述高地址方向的搬移代价中的最小值,将所述最小值对应的方向作为搬移方向。
19.在一些实施例中,所述根据所述存储地址和高地址方向上距离所述存储地址最近的空洞地址,计算高地址方向的搬移代价,包括:
20.计算所述高地址方向上距离所述存储地址最近的空洞地址与所述存储地址之差,得到高地址方向的搬移代价。
21.在一些实施例中,所述根据所述存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离所述存储地址最近的空洞地址,计算低地址方向上的搬移代价,包括:
22.根据所述存储地址、优先级基线指针参数和acl规则的最大存储地址,计算第一搬移代价,所述第一搬移代价为从所述存储地址搬移到所述优先级基线指针参数指向的acl规则地址的搬移代价;
23.根据所述存储地址、低地址方向上距离所述存储地址最近的空洞地址和acl规则的最大存储地址,计算第二搬移代价,所述第二搬移代价为从所述存储地址搬移到所述低地址方向上距离所述存储地址最近的空洞地址的搬移代价;
24.确定所述第一搬移代价和所述第二搬移代价中的最小值,将所述最小值作为低地址方向上的搬移代价。
25.在一些实施例中,所述根据所述存储地址、优先级基线指针参数和acl规则的最大存储地址,计算第一搬移代价,包括:
26.若所述存储地址小于所述优先级基线指针参数的值,则将用于存储acl规则的地址形成闭环,并向低地址方向环式计算第一搬移代价;
27.若所述存储地址大于或等于所述优先级基线指针参数的值,则向高地址方向计算第一搬移代价。
28.在一些实施例中,所述根据所述存储地址、低地址方向上距离所述存储地址最近的空洞地址和acl规则的最大存储地址,计算第二搬移代价,包括:
29.若所述存储地址小于低地址方向上距离所述存储地址最近的空洞地址,则将用于存储acl规则的地址形成闭环,并向低地址方向环式计算第二搬移代价;
30.若所述存储地址大于或等于低地址方向上距离所述存储地址最近的空洞地址,则向高地址方向计算第二搬移代价。
31.在一些实施例中,所述至少根据所述搬移方向确定搬移的目标地址,包括:
32.若所述搬移方向为低地址方向,且低地址方向的搬移代价为第一搬移代价,则搬移的目标地址为优先级基线指针参数的值减1;
33.若所述搬移方向为低地址方向,且低地址方向的搬移代价为第二搬移代价,则搬移的目标地址为低地址方向上距离所述存储地址最近的空洞地址;
34.若所述搬移方向为高地址方向,则搬移的目标地址为高地址方向上距离所述存储地址最近的空洞地址。
35.在一些实施例中,若所述搬移方向为低地址方向,且低地址方向上的搬移代价为所述第一搬移代价,则在至少根据所述搬移方向确定搬移的目标地址之后,所述方法还包括:将所述优先级基线指针参数的值减1。
36.在一些实施例中,所述根据待存储acl规则与已存储acl规则的优先级关系,确定所述待存储acl规则的存储地址,包括:
37.若待存储acl规则的优先级小于已存储acl规则的最低优先级k,则所述待存储acl规则的存储地址为(k 1);
38.若待存储acl规则的优先级大于已存储acl规则的最低优先级k且小于已存储acl规则的最高优先级,则确定已存储acl规则中小于待存储acl规则的优先级的最大优先级p,并确定所述待存储acl规则的存储地址为p。
39.在一些实施例中,所述acl规则处理方法还包括:
40.从已存储acl规则中删除待删除acl规则;
41.若所述待删除acl规则的存储地址与所述优先级基线指针参数的值相等,则将所述优先级基线指针参数的值加1。
42.在一些实施例中,所述acl规则处理方法还包括:
43.若接收到业务报文且所述业务报文命中至少2个acl规则,则确定命中的各acl规则的相对优先级,至少根据所述命中的各acl规则的相对优先级和所述优先级基线指针参数,计算所述命中的各acl规则的绝对优先级。
44.在一些实施例中,所述至少根据所述命中的各acl规则的相对优先级和所述优先级基线指针参数,计算所述命中的各acl规则的绝对优先级,包括:
45.若命中的acl规则的相对优先级大于或等于所述优先级基线指针参数的值,则根据所述命中的acl规则的相对优先级和所述优先级基线指针参数的值,向高地址方向计算
所述命中的acl规则的绝对优先级;
46.若命中的acl规则的相对优先级小于所述优先级基线指针参数的值,则将用于存储acl规则的地址形成闭环,并根据所述命中的acl规则的相对优先级、所述优先级基线指针参数的值、所述acl规则的最大存储地址,向低地址方向环式计算命中的acl规则的绝对优先级。
47.又一方面,本公开实施例还提供一种acl规则处理装置,所述acl规则处理装置内acl规则的存储地址为acl规则的相对优先级,所述acl处理装置内预设有优先级基线指针参数,所述优先级基线指针参数指向已存储的优先级最高的acl规则,且所述优先级基线指针参数的值为所述已存储的优先级最高的acl规则的相对优先级;所述acl规则处理装置包括:结果存储模块和优先级处理模块,所述优先级处理模块包括存储地址确定单元、搬移方向确定单元、目标地址确定单元、搬移单元和处理单元;
48.所述存储地址确定单元用于,根据待存储acl规则与已存储acl规则的优先级关系,确定所述待存储acl规则的存储地址;
49.所述搬移方向确定单元用于,当所述存储地址中当前已存储有acl规则时,根据所述存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离所述存储地址最近的空洞地址和高地址方向上距离所述存储地址最近的空洞地址,确定搬移方向;
50.所述目标地址确定单元用于,至少根据所述搬移方向确定搬移的目标地址;
51.所述搬移单元用于,根据所述搬移方向和目标地址逐条搬移acl规则,直到空出所述存储地址,其中,每搬移一次acl规则,更新当前搬移的acl规则的相对优先级;
52.所述第一处理单元用于,将所述待存储acl规则存储在所述存储地址;
53.所述结果存模块用于,根据所述存储地址记录所述待存储acl规则的相对优先级。
54.又一方面,本公开实施例还提供一种计算机设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前所述的acl规则处理方法。
55.又一方面,本公开实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,所述程序被执行时实现如前所述的acl规则处理方法。
56.本公开实施例提供的acl规则处理方法及装置,根据待存储acl规则与已存储acl规则的优先级关系,确定待存储acl规则的存储地址;若存储地址中当前已存储有acl规则,则根据存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离存储地址最近的空洞地址和高地址方向上距离存储地址最近的空洞地址,确定搬移方向;至少根据搬移方向确定搬移的目标地址;根据搬移方向和目标地址逐条搬移acl规则,直到空出所述存储地址;将待存储acl规则存储在所述存储地址,并根据存储地址记录待存储acl规则的相对优先级。本公开实施例在全局维护优先级基线指针参数,使其一直指向优先级最高的acl规则,在搬移已存储的acl规则的过程中,将优先级基线指针参数作为确定搬移方向的考量因素,能够降低acl规则的搬移代价,搬移次数至少可以减少一半,从而减少硬件操作次数,提升acl动态下表速率,提高acl规则更新效率。
附图说明
57.图1a为本公开实施例提供的转发面ram硬件存储示意图;
58.图1b为本公开实施例提供的控制面链表管理示意图;
59.图2为本公开实施例提供的acl规则处理流程示意图之一;
60.图3为本公开实施例提供的确定搬移方向的流程示意图;
61.图4为本公开实施例提供的计算低地址方向上的搬移代价的流程示意图;
62.图5为本公开实施例提供的acl规则处理流程示意图之二;
63.图6为本公开实施例提供的计算acl规则的绝对优先级的流程示意图;
64.图7为本公开实施例提供的不修改优先级基线指针参数场景的acl规则搬移示意图;
65.图8为本公开实施例提供的修改优先级基线指针参数场景的acl规则搬移示意图;
66.图9为本公开实施例提供的acl规则处理装置的结构示意图之一;
67.图10为本公开实施例提供的acl规则处理装置的结构示意图之二;
68.图11为本公开实施例提供的acl规则处理装置的结构示意图之三。
具体实施方式
69.在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
70.如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
71.本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由
……
制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或其群组。
72.本文所述实施例可借助本公开的理想示意图而参考平面图和/或截面图进行描述。因此,可根据制造技术和/或容限来修改示例图示。因此,实施例不限于附图中所示的实施例,而是包括基于制造工艺而形成的配置的修改。因此,附图中例示的区具有示意性属性,并且图中所示区的形状例示了元件的区的具体形状,但并不旨在是限制性的。
73.除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
74.本公开实施例提供的acl规则处理方案涉及转发面与控制面两部分,转发面由硬件实现,负责完成匹配报文的优先级存储与优先级仲裁功能,控制面使用软件实现,负责用户下发规则隐式优先级的分配与ram硬件读写控制。
75.假设转发面ram全局地址范围为0-max_addr,max_addr为acl规则的最大存储地址,如图1a所示,转发面ram中已存储的acl规则按照控制面分配的相对优先级从小到大存储,低优先级值代表高优先级。转发面存储优先级基线指针参数prio_base,优先级基线指针参数的初始值为0,同时控制面软件全局存储并管理该优先级基线指针参数。各个acl规则在转发面ram中存储的相对优先级为其存储地址序号。
76.如图1b所示,控制面使用链表管理用户下发的规则,链表中头部节点(最左侧节点)对应最高优先级的acl规则,每个链表节点中记录acl规则与该acl规则的相对优先级(即该acl规则的存储地址)。
77.本公开实施例提供的acl规则处理方法,应用于acl规则处理装置,所述acl规则处理装置内acl规则的存储地址为acl规则的相对优先级,所述acl处理装置内预设有优先级基线指针参数prio_base,优先级基线指针参数指向已存储的优先级最高的acl规则,且优先级基线指针参数的值为已存储的优先级最高的acl规则的相对优先级。
78.如图2所示,本公开实施例提供的acl规则处理方法包括以下步骤:
79.步骤11,根据待存储acl规则与已存储acl规则的优先级关系,确定待存储acl规则的存储地址。
80.在本步骤中,根据用户指定的待存储acl规则与已存储acl规则的优先级关系,将待存储acl规则插入到控制面链表中,确定待存储acl规则在ram中的存储位置(及存储地址),记为ins_pos。
81.在一些实施例中,若待存储acl规则的优先级小于已存储acl规则的最低优先级k,说明待存储acl规则的优先级最低,则待存储acl规则的存储地址为(k 1),即待存储acl规则插入链表尾部(最右侧)。若待存储acl规则的优先级大于已存储acl规则的最低优先级k且小于已存储acl规则的最高优先级,说明待存储acl规则的优先级处于已存储acl规则的优先级的中间位置,则确定已存储acl规则中小于待存储acl规则的优先级的最大优先级p,并确定待存储acl规则的存储地址为p,即待存储acl规则插入链表中小于待存储acl规则的优先级的最大优先级p的节点之前,也就是说,链表中待存储acl规则紧邻的后继节点的优先级为比该待存储acl规则的优先级小的各个优先级中的最大的优先级。
82.步骤12,若存储地址中当前已存储有acl规则,则根据存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离存储地址最近的空洞地址和高地址方向上距离存储地址最近的空洞地址,确定搬移方向。
83.搬移方向包括低地址方向和高地址方向。控制面管理优先级基线指针参数prio_base、acl规则的最大存储地址max_addr、低地址方向上距离存储地址最近的空洞地址m和高地址方向上距离存储地址最近的空洞地址n。
84.在本步骤中,若存储地址ins_pos当前已存储有其他acl规则,则需要确定该acl规则的搬移方向,使该存储地址ins_pos空出,以便存储待存储acl规则。需要说明的是,若存储地址ins_pos当前为空,说明该存储地址ins_pos没有存储有其他acl规则,无需进行acl规则搬移,则直接将待存储acl规则存储在存储地址ins_pos。
85.步骤13,至少根据搬移方向确定搬移的目标地址。
86.目标地址记为dst_pos。
87.步骤14,根据搬移方向和目标地址逐条搬移acl规则,直到空出存储地址。
88.需要说明的是,每搬移一次acl规则,由于该acl规则的存储地址发生了变化,相应的,就要更新当前搬移的acl规则的相对优先级。也就是说,每次搬移acl规则之后,修改控制面链表中记录的acl规则的相对优先级值信息,并将该acl规则的更新后的相对优先级值同步写入ram中。
89.在本步骤中,若搬移方向为低地址方向,则先将存储地址为(dst_pos 1)的acl规
则搬移至存储地址为dst_pos的位置,再将存储地址为(dst_pos 2)的acl规则搬移至存储地址为(dst_pos 1)的位置,以此类推,直到空出存储地址ins_pos(该存储地址即为待插入acl规则的位置)。若搬移方向为高地址方向,则先将存储地址为(dst_pos-1)acl规则搬移至存储地址为dst_pos的位置,再将存储地址为(dst_pos-2)的acl规则搬移至存储地址为(dst_pos-1)的位置,以此类推,直到空出存储地址ins_pos。
90.步骤15,将待存储acl规则存储在存储地址,并根据存储地址记录待存储acl规则的相对优先级。
91.在本步骤中,在存储地址ins_pos中插入待存储acl规则,并将该待存储acl规则的相对优先级写入ram中。
92.本公开实施例提供的acl规则处理方法及装置,根据待存储acl规则与已存储acl规则的优先级关系,确定待存储acl规则的存储地址;若存储地址中当前已存储有acl规则,则根据存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离存储地址最近的空洞地址和高地址方向上距离存储地址最近的空洞地址,确定搬移方向;至少根据搬移方向确定搬移的目标地址;根据搬移方向和目标地址逐条搬移acl规则,直到空出所述存储地址;将待存储acl规则存储在所述存储地址,并根据存储地址记录待存储acl规则的相对优先级。本公开实施例在全局维护优先级基线指针参数,使其一直指向优先级最高的acl规则,在搬移已存储的acl规则的过程中,将优先级基线指针参数作为确定搬移方向的考量因素,能够降低搬移代价,搬移次数至少可以减少一半,从而减少硬件操作次数,提升acl动态下表速率,提高acl规则更新效率。
93.在一些实施例中,如图2所示,所述根据存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离存储地址最近的空洞地址和高地址方向上距离存储地址最近的空洞地址,确定搬移方向(即步骤12)包括以下步骤:
94.步骤21,根据存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离所述存储地址最近的空洞地址,计算低地址方向的搬移代价。
95.计算低地址方向的搬移代价cost_low的具体实现方式后续结合图4再详细说明。
96.步骤22,根据存储地址和高地址方向上距离存储地址最近的空洞地址,计算高地址方向的搬移代价。
97.在一些实施例中,通过计算高地址方向上距离存储地址最近的空洞地址n与存储地址ins_pos之差,得到高地址方向的搬移代价cost_high,即cost_high=n-ins_pos。
98.步骤23,根据低地址方向的搬移代价和高地址方向的搬移代价,确定搬移方向。
99.在一些实施例中,所述根据低地址方向的搬移代价和高地址方向的搬移代价,确定搬移方向,包括:确定低地址方向的搬移代价和高地址方向的搬移代价中的最小值,将所述最小值对应的方向作为搬移方向。
100.需要说明的是,步骤21和步骤22的执行顺序不限,也可同步执行。
101.通过步骤21-23可以看出,搬移代价反映了acl规则搬移次数,搬移代价越小,说明搬移acl规则的次数越少。通过比较低地址方向的搬移代价cost_low与高地址方向的搬移代价cost_high的大小,选定最小值对应的搬移方向作为本次acl规则的搬移方向,可以减少搬移次数。
102.在一些实施例中,如图4所示,所述根据所述存储地址、优先级基线指针参数、acl
规则的最大存储地址、低地址方向上距离所述存储地址最近的空洞地址,计算低地址方向上的搬移代价(即步骤21),包括以下步骤:
103.步骤121,根据存储地址、优先级基线指针参数和acl规则的最大存储地址,计算第一搬移代价。
104.第一搬移代价cost_base为从存储地址ins_pos搬移到优先级基线指针参数prio_base指向的acl规则地址的搬移代价。
105.在一些实施例中,若存储地址小于优先级基线指针参数的值,则将用于存储acl规则的地址形成闭环,并向低地址方向环式计算第一搬移代价,即若ins_pos《piro_base,则第一搬移代价cost_base=acl规则的最大存储地址max_addr-优先级基线指针参数的值piro_base 2 存储地址ins_pos。也就是说,在ins_pos《piro_base的情况下,需要向低地址方向环式计算第一搬移代价。
106.若存储地址大于或等于优先级基线指针参数的值,则向高地址方向计算第一搬移代价,即若ins_pos(即p)≥piro_base,则第一搬移代价cost_base=存储地址ins_pos-优先级基线指针参数的值piro_base 1,也就是说,在ins_pos(即p)≥piro_base的情况下,不需要环式计算第一搬移代价,而是直接向高地址方向计算第一搬移代价。
107.环式计算是指,在低地址方向从存储地址为0的位置跨越至地址最右侧位置形成地址环,根据该地址环进行计算。环式计算可以在计算第一搬移代价cost_base时使用,也可以在计算第二搬移代价cost_m时使用。
108.步骤122,根据存储地址、低地址方向上距离存储地址最近的空洞地址和acl规则的最大存储地址,计算第二搬移代价。
109.第二搬移代价cost_m为从存储地址ins_pos搬移到低地址方向上距离存储地址ins_pos最近的空洞地址m的搬移代价。
110.在一些实施例中,若存储地址小于低地址方向上距离存储地址最近的空洞地址,则将用于存储acl规则的地址形成闭环,并向低地址方向环式计算第二搬移代价。即若ins_pos《m,则第二搬移代价cost_m=acl规则的最大存储地址max_addr 1-低地址方向上距离存储地址最近的空洞地址m 存储地址ins_pos。也就是说,在ins_pos《m的情况下,需要向低地址方向环式计算第二搬移代价。
111.若存储地址大于或等于低地址方向上距离存储地址最近的空洞地址,则向高地址方向计算第二搬移代价。即若ins_pos≥m,则第二搬移代价cost_m=存储地址ins_pos-低地址方向上距离存储地址最近的空洞地址m,也就说,在ins_pos≥m的情况下,不需要环式计算第二搬移代价,而是直接向高地址方向计算第二搬移代价。
112.由于优先级基线指针参数的设计,允许acl规则搬移朝着低地址方向从存储地址为0的位置向空洞位置或优先级基线指针参数指向的位置搬移,从存储地址为0的位置搬移至max_addr位置的搬移代价为1,因此当目的地址值(即m或piro_base)大于原始地址值(ins_pos)时,低地址方向搬移代价为max_addr 1-目的地址值 原始地址值。需要说明的是,当计算第一搬移代价时,目的地址值实际上是prio_base-1。
113.步骤123,确定第一搬移代价和第二搬移代价中的最小值,将所述最小值作为低地址方向上的搬移代价。
114.在本步骤中,低地址方向搬移代价=min(cost_base,cost_m)。
115.在一些实施例中,述至少根据搬移方向确定搬移的目标地址(即步骤13),包括:若搬移方向为低地址方向,且低地址方向的搬移代价为第一搬移代价,则搬移的目标地址为优先级基线指针参数的值减1。若搬移方向为低地址方向,且低地址方向的搬移代价为第二搬移代价,则搬移的目标地址为低地址方向上距离所述存储地址最近的空洞地址。若搬移方向为高地址方向,则搬移的目标地址为高地址方向上距离存储地址最近的空洞地址。也就是说,若选定搬移方向为低地址方向,且min(cost_base,cost_m)=cost_base,则dst_pos=piro_base-1。若选定搬移方向为低地址方向,且min(cost_base,cost_m)=cost_m,则dst_pos=m。若选定搬移方向为高地址方向,则dst_pos=n。
116.在一些实施例中,若搬移方向为低地址方向,且低地址方向上的搬移代价为第一搬移代价,则在至少根据搬移方向确定搬移的目标地址之后,所述方法还包括以下步骤:将优先级基线指针参数的值减1。也就是说,在搬移方向为低地址方向,且min(cost_base,cost_m)=cost_base的情况下,需要搬移优先级基线指针参数piro_base指向的acl规则,相应的,在确定出搬移的目标地址之后,优先级基线指针参数piro_base的值也需要相应进行调整(仍然指向位置搬移后的优先级最高的acl规则)。需要说明的是,在搬移方向为低地址方向,且低地址方向的搬移代价为第二搬移代价的情况下,以及,在搬移方向为高地址方向的情况下,优先级基线指针参数piro_base指向的acl规则没有发生搬移,相应的,不用调整优先级基线指针参数piro_base的值。
117.需要说明的是,步骤121和步骤122的执行顺序不限,也可同步执行。
118.以上为存储acl规则(写入ram)的流程。以下结合图5详细说明删除acl规则的流程。
119.如图5所示,所述acl规则处理方法还可以包括以下步骤:
120.步骤31,从已存储acl规则中删除待删除acl规则。
121.在本步骤中,根据用户下发的删除acl规则信息索引至控制面链表对应的链表节点,根据链表节点记录的优先级信息清空转发面ram位置存储的acl规则。
122.步骤32,若待删除acl规则的存储地址与优先级基线指针参数的值相等,则将优先级基线指针参数的值加1。
123.在一些实施例中,在步骤32之后,还包括:在控制面的链表中删除与已删除的acl规则对应的链表节点。
124.ram中存储的acl规则的优先级为相对优先级,但是在业务报文转发阶段,是根据acl规则的绝对优先级进行优先级仲裁,因此,需要将acl规则的相对优先级转换为绝对优先级。因此,如图6所示,所述acl规则处理方法还包括以下步骤:
125.步骤41,若接收到业务报文且业务报文命中至少2个acl规则,则确定命中的各acl规则的相对优先级。
126.步骤42,至少根据命中的各acl规则的相对优先级和优先级基线指针参数,计算命中的各acl规则的绝对优先级。
127.在一些实施例中,若命中的acl规则的相对优先级r_prio大于或等于优先级基线指针参数prio_base的值,则根据命中的acl规则的相对优先级r_prio和优先级基线指针参数prio_base的值,向高地址方向计算命中的acl规则的绝对优先级prio。即若r_prio≥prio_base,则prio=r_prio-prio_base。也就是说,在r_prio≥prio_base的情况下,不需
要环式计算绝对优先级,而是直接向高地址方向计算绝对优先级。
128.若命中的acl规则的相对优先级r_prio小于优先级基线指针参数prio_base的值,则将用于存储acl规则的地址形成闭环,并根据命中的acl规则的相对优先级r_prio、优先级基线指针参数prio_base的值、acl规则的最大存储地址max_addr,向低地址方向环式计算命中的acl规则的绝对优先级prio。即若r_prio《prio_base,则prio=max_addr 1-prio_base r_prio,也就是说,在r_prio《prio_base的情况下,需要向低地址方向环式计算绝对优先级。
129.为了清楚说明本公开实施例的方案,以下分别结合图7和图8,对不修改优先级基线指针参数场景和修改优先级基线指针参数场景下的acl规则搬移过程进行详细说明。
130.如图7所示,待存储acl规则为rule8,其存储地址ins_pos为当前rule3的存储位置,优先级基线指针参数prio_base指向rule0,rule4后一个位置为高地址方向上距离存储地址最近的空洞地址n,低地址方向上无空洞,因此低地址方向的搬移代价cost_low即为cost_base=4,高地址方向的搬移代价cost_high=2,因此,搬移方向为高地址方向。由于搬移方向为高地址方向,因此不用修改优先级基线指针参数prio_base的值。逐条将rule4和rule3向高地址方向搬移,直到空出存储地址ins_pos的位置,将rule8存储在该位置。
131.如图8所示,待存储acl规则为rule8,其存储地址ins_pos为当前rule3的存储位置,优先级基线指针参数prio_base指向rule0,rule7后一个位置为高地址方向上距离存储地址最近的空洞地址n,低地址方向上无空洞,因此低地址方向的搬移代价cost_low即为cost_base=4,高地址方向的搬移代价cost_high=5,因此,搬移方向为低地址方向,且低地址方向的搬移代价cost_low与cost_base相等(均为4),则将优先级基线指针参数prio_base的值减1。确定目标地址为dst_pos为优先级基线指针参数prio_base当前指向的位置,逐条将rule0、rule1、rule2、rule3向低地址方向搬移,其中,rule0搬移至prio_base当前指向的位置,直到空出存储地址ins_pos的位置,将rule8存储在该位置。
132.基于相同的技术构思,本公开实施例还提供一种acl规则处理装置,如图9所示,包括:结果存储模块101和优先级处理模块102,结果存储模块101用于存储acl规则对应的相对优先级;优先级处理模块102用于,接收结果存储模块101输出的多条acl规则对应的相对优先级,进行优先级处理,得到绝对优先级,并将绝对优先级与对应的acl规则及其结果发送至优先级比较模块。
133.在一些实施例中,所示acl规则处理装置还包括优先级比较模块103,优先级比较模块103,用于比较其输入的多个绝对优先级,并输出优先级最高的acl规则对应的结果。
134.结合图9和图10所示,所述acl规则处理装置内acl规则的存储地址为acl规则的相对优先级,所述acl处理装置内预设有优先级基线指针参数,所述优先级基线指针参数指向已存储的优先级最高的acl规则,且所述优先级基线指针参数的值为所述已存储的优先级最高的acl规则的相对优先级。
135.优先级处理模块102包括存储地址确定单元1021、搬移方向确定单元1022、目标地址确定单元1023、搬移单元1024和第一处理单元1025,存储地址确定单元1021用于,根据待存储acl规则与已存储acl规则的优先级关系,确定所述待存储acl规则的存储地址。
136.搬移方向确定单元1022用于,当所述存储地址中当前已存储有acl规则时,根据所述存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离所述存储
地址最近的空洞地址和高地址方向上距离所述存储地址最近的空洞地址,确定搬移方向。
137.目标地址确定单元1023用于,至少根据所述搬移方向确定搬移的目标地址。
138.搬移单元1024用于,根据所述搬移方向和目标地址逐条搬移acl规则,直到空出所述存储地址,其中,每搬移一次acl规则,更新当前搬移的acl规则的相对优先级。
139.第一处理单元1025用于,将所述待存储acl规则存储在所述存储地址。
140.结果存模块101用于,根据所述存储地址记录所述待存储acl规则的相对优先级。
141.在一些实施例中,搬移方向确定单元1022用于,根据所述存储地址、优先级基线指针参数、acl规则的最大存储地址、低地址方向上距离所述存储地址最近的空洞地址,计算低地址方向的搬移代价;根据所述存储地址和高地址方向上距离所述存储地址最近的空洞地址,计算高地址方向的搬移代价;根据所述低地址方向的搬移代价和所述高地址方向的搬移代价,确定搬移方向。
142.在一些实施例中,搬移方向确定单元1022用于,确定所述低地址方向的搬移代价和所述高地址方向的搬移代价中的最小值,将所述最小值对应的方向作为搬移方向。
143.在一些实施例中,搬移方向确定单元1022用于,计算所述高地址方向上距离所述存储地址最近的空洞地址与所述存储地址之差,得到高地址方向的搬移代价。
144.在一些实施例中,搬移方向确定单元1022用于,根据所述存储地址、优先级基线指针参数和acl规则的最大存储地址,计算第一搬移代价,所述第一搬移代价为从所述存储地址搬移到所述优先级基线指针参数指向的acl规则地址的搬移代价;根据所述存储地址、低地址方向上距离所述存储地址最近的空洞地址和acl规则的最大存储地址,计算第二搬移代价,所述第二搬移代价为从所述存储地址搬移到所述低地址方向上距离所述存储地址最近的空洞地址的搬移代价;确定所述第一搬移代价和所述第二搬移代价中的最小值,将所述最小值作为低地址方向上的搬移代价。
145.在一些实施例中,搬移方向确定单元1022用于,当所述存储地址小于所述优先级基线指针参数的值时,将用于存储acl规则的地址形成闭环,并向低地址方向环式计算第一搬移代价;当所述存储地址大于或等于所述优先级基线指针参数的值时,向高地址方向计算第一搬移代价。
146.在一些实施例中,搬移方向确定单元1022用于,当所述存储地址小于低地址方向上距离所述存储地址最近的空洞地址时,将用于存储acl规则的地址形成闭环,并向低地址方向环式计算第二搬移代价;当所述存储地址大于或等于低地址方向上距离所述存储地址最近的空洞地址时,向高地址方向计算第二搬移代价。
147.在一些实施例中,目标地址确定单元1023用于,当所述搬移方向为低地址方向,且低地址方向的搬移代价为第一搬移代价时,搬移的目标地址为优先级基线指针参数的值减1;当所述搬移方向为低地址方向,且低地址方向的搬移代价为第二搬移代价时,搬移的目标地址为低地址方向上距离所述存储地址最近的空洞地址;当所述搬移方向为高地址方向时,搬移的目标地址为高地址方向上距离所述存储地址最近的空洞地址。
148.在一些实施例中,目标地址确定单元1023还用于,当所述搬移方向为低地址方向,且低地址方向上的搬移代价为所述第一搬移代价时,在至少根据所述搬移方向确定搬移的目标地址之后,将所述优先级基线指针参数的值减1。
149.在一些实施例中,存储地址确定单元1021用于,当待存储acl规则的优先级小于已
存储acl规则的最低优先级k时,所述待存储acl规则的存储地址为(k 1);当待存储acl规则的优先级大于已存储acl规则的最低优先级k且小于已存储acl规则的最高优先级时,确定已存储acl规则中小于待存储acl规则的优先级的最大优先级p,并确定所述待存储acl规则的存储地址为p。
150.在一些实施例中,第一处理单元1025还用于,从已存储acl规则中删除待删除acl规则;当所述待删除acl规则的存储地址与所述优先级基线指针参数的值相等时,将所述优先级基线指针参数的值加1。
151.在一些实施例中,如图11所示,优先级处理模块102还包括第二处理单元1026,第二处理单元1026用于,当接收到业务报文且所述业务报文命中至少2个acl规则时,确定命中的各acl规则的相对优先级,至少根据所述命中的各acl规则的相对优先级和所述优先级基线指针参数,计算所述命中的各acl规则的绝对优先级。
152.在一些实施例中,第二处理单元1026用于,当命中的acl规则的相对优先级大于或等于所述优先级基线指针参数的值时,根据所述命中的acl规则的相对优先级和所述优先级基线指针参数的值,向高地址方向计算所述命中的acl规则的绝对优先级;当命中的acl规则的相对优先级小于所述优先级基线指针参数的值时,将用于存储acl规则的地址形成闭环,并根据所述命中的acl规则的相对优先级、所述优先级基线指针参数的值、所述acl规则的最大存储地址,向低地址方向环式计算命中的acl规则的绝对优先级。
153.本公开实施例还提供了一种计算机设备,该计算机设备包括:一个或多个处理器以及存储装置;其中,存储装置上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如前述各实施例所提供的acl规则处理方法。
154.本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,其中,该计算机程序被执行时实现如前述各实施例所提供的acl规则处理方法。
155.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
156.本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当
被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本发明的范围的情况下,可进行各种形式和细节上的改变。
再多了解一些

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

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

相关文献