一种调整ACL表项的方法及装置与流程

文档序号:12623640阅读:263来源:国知局
一种调整ACL表项的方法及装置与流程
本发明涉及通信
技术领域
,尤其涉及一种调整ACL表项的方法及装置。
背景技术
:ACL(AccessControlList,访问控制列表)是一种流量访问控制技术,ACL中的ACL表项为一系列指定报文的匹配条件和报文的处理动作,当报文经过网络设备时,通过匹配ACL表项中的匹配条件,并按照相应的处理动作对报文进行处理。现有技术中,在调整已有的ACL表项的优先级关系时,需要删除ACL中的部分ACL表项,并在合适的位置新增该ACL表项。但是当部分ACL表项被删除之后,再新增该ACL表项之前,若接收到匹配这部分ACL表项的报文,会造成报文匹配错误的ACL表项,导致对报文的处理错误。技术实现要素:本发明提供一种调整ACL表项的方法及装置,以解决现有技术中当部分ACL表项被删除之后,再新增该ACL表项之前,若接收到匹配这部分ACL表项的报文,会造成报文匹配错误的ACL表项,导致对报文的处理错误的问题。第一方面,本发明提供一种调整ACL表项的方法,包括:获取待调整的第一ACL表项,确定所述第一ACL表项调整前的第一优先级、调整后的第二优先级;根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向;在所述迁移方向上,确定所述第一ACL表项的调整位置;将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项。第二方面,本发明提供一种调整ACL表项的装置,包括:第一确定模块,获取待调整的第一ACL表项,确定所述第一ACL表项调整前的第一优先级、调整后的第二优先级;第二确定模块,根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向;第三确定模块,在所述迁移方向上,确定所述第一ACL表项的调整位置;复制删除模块,将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项。由本发明的实施例可见,获取待调整的第一ACL表项,确定所述第一ACL表项调整前的第一优先级、调整后的第二优先级,根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向,在所述迁移方向上,确定所述第一ACL表项的调整位置,将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项。由于本发明实施例在调整ACL表项的优先级时,先在调整位置复制新增的ACL表项,然后再将原ACL表项删除,不会出现部分ACL表项被删除的状态,因此当接收到匹配这部分ACL表项的报文时,会将报文匹配正确的ACL表项,并对报文进行正确的转发。附图说明图1是本发明一种调整ACL表项的方法的一个实施例流程图;图2是本发明一种调整ACL表项的装置所在设备的一种硬件结构图;图3是本发明一种调整ACL表项的装置的一个实施例框图。具体实施方式为了使本
技术领域
的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。在支持芯片ACL的网络设备中,通常不会将所有ACL表项都开放给用户,部分ACL表项设置为对用户是不可配置的,这部分ACL表项称为系统预留的芯片ACL表项(后续简称为预留ACL表项)。预留ACL表项的位置在用户可配的所有ACL表项之前或之后,但不会在用户可配的ACL表项之间;本发明实施例从系统预留的ACL表项中获取一个预留ACL表项,该预留ACL表项是一个对用户临时可配的ACL表项,可以用于暂时存储一个非空的ACL表项,后续还需要将该表项空出来。对于用户可配的ACL表项,又分为空闲ACL表项和非空闲ACL表项,空闲ACL表项是指表项内容为空,非空闲ACL表项是指表项内容不为空。报文进入网络设备时,网络设备将依次检查每一个非空闲ACL表项是否匹配该报文,如果匹配则执行相应的处理动作,且不再进行后续匹配;若不匹配,则继续匹配下一个非空闲ACL表项。本发明实施例,针对获取的预留ACL表项和空闲ACL表项统称为可用ACL表项,对于非空闲ACL表项称为不可用ACL表项。对于所有ACL表项,按照其在ACL表中从前到后的顺序,对于每个ACL表项(可用ACL表项和不可用ACL表项)都对应一个位置,如,第一条ACL表项对应的位置为1,第二条ACL表项对应的位置为2,……以此类推,至第n条ACL表项对应的位置为n。另外,对于每条不可用ACL表项,按其从前到后的相对位置确定一个优先级值,越靠前的ACL表项的优先级越高,对应的优先级值越小,如第一条不可用ACL表项的优先级为1,第二条不可用ACL表项的优先级为2,……以此类推,至第N条不可用ACL表项优先级为N。由于可用ACL表项无优先级,因此ACL表项对应的位置与优先级值不一定相同,但二者都保证从前往后其值从小到大的顺序。参见图1,为本发明一种的调整ACL表项方法的一个实施例流程图,包括以下步骤:步骤101:获取待调整的第一ACL表项,确定所述第一ACL表项调整前的第一优先级、调整后的第二优先级。步骤102:根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向。在一个例子中,当第一优先级大于第二优先级时,确定所述第一ACL表项的迁移方向是将所述第一ACL表项向上迁移;在另一个例子中,当第一优先级小于第二优先级时,确定所述第一ACL表项的迁移方向是将所述第一ACL表项向下迁移。步骤103:在所述迁移方向上,确定所述第一ACL表项的调整位置。在一个例子中,当所述迁移方向是将所述第一ACL表项向上迁移时,确定当前第二优先级的第二ACL表项的第一位置;将所述第一位置或者第一位置的上一位置确定为调整位置。其中,针对所述将所述第一位置或者第一位置的上一位置确定为调整位置过程,还可以包括:从第一位置开始向上依次遍历ACL表项,确定第一个可用的ACL表项的第二位置;并统计第一位置与第二位置之间的ACL表项的第一表项数;若第一表项数为0,确定第一位置的上一位置为所述调整位置;若第一表项数不为0,从第一位置开始向下依次遍历ACL表项,确定第一个可用的ACL表项的第三位置;并统计第一位置的上一位置与第三位置之间的ACL表项的第二表项数;当第一表项数小于第二表项数时,确定第一位置的上一位置为所述调整位置;当第一表项数不小于第二表项数时,确定所述第一位置为所述调整位置。在另一个例子中,当所述迁移方向是将所述第一ACL表项向下迁移时,确定比当前第二优先级低一级的第三ACL表项的第四位置;将所述第四位置或者第四位置的上一位置确定为调整位置。其中,针对所述将所述第四位置或者第四位置的上一位置确定为调整位置过程,还可以包括:从第四位置开始向上依次遍历ACL表项,确定第一个可用的ACL表项的第五位置;并统计第四位置与第五位置之间的ACL表项的第三表项数;若第三表项数为0,确定第四位置的上一位置为所述调整位置;若第三表项数不为0,从第四位置开始向下依次遍历ACL表项,确定第一个可用的ACL表项的第六位置;并统计第四位置的上一位置与第六位置之间的ACL表项的第四表项数;当第三表项数小于第四表项数时,确定第四位置的上一位置为所述调整位置;当第三表项数不小于第四表项数时,确定所述第四位置为所述调整位置。步骤104:将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项。其中,所述将所述第一ACL表项复制到所述调整位置之前,若第一表项数不为0,当第一表项数小于第二表项数时,将第一位置与第二位置之间的每个ACL表项逐个向上移动一个位置;当第一表项数不小于第二表项数时,将第一位置的上一位置至第三位置之间的ACL表项逐个向下移动一个位置。若第三表项数不为0,当第三表项数小于第四表项数时,将第四位置与第五位置之间的每个ACL表项逐个向上移动一个位置;当第三表项数不小于第四表项数时,将第四位置的上一位置至第六位置之间的ACL表项逐个向下移动一个位置。由上述实施例可见,获取待调整的第一ACL表项,确定所述第一ACL表项调整前的第一优先级、调整后的第二优先级,根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向,在所述迁移方向上,确定所述第一ACL表项的调整位置,将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项。由于本发明实施例在调整ACL表项的优先级时,先在调整位置复制新增的ACL表项,然后再将原ACL表项删除,不会出现部分ACL表项被删除的状态,因此当接收到匹配这部分ACL表项的报文时,会将报文匹配正确的ACL表项,并对报文进行正确的转发。下面以一个具体的应用实例对本发明进行说明,假设预留的ACL表项位于所有用户可配的ACL表项之前,待调整的第一ACL表项为表项a,表项a调整前的第一优先级为x、调整后的第二优先级。步骤1:获取待调整的表项a,确定表项a的调整前的第一优先级x、调整后的第二优先级y。步骤2:根据x和y,确定所述表项a的迁移方向;若x=y,结束本流程;其中,x=y时,说明表项a无需移动。若x>y,则执行步骤3;其中,x>y时,说明表项a的迁移方向是将表项a向上迁移,迁移后表项a的优先级变高。假设以表1所示ACL表为例,表项a调整前的x=4,调整后的y=3。表1位置名称内容1内容21(预留)2c3d4b5a6e7f89若x<y,则执行步骤4;其中,x<y时,说明表项a的迁移方向是将表项a向下迁移,迁移后表项a的优先级变低。步骤3:确定当前优先级y的表项b的位置,并记为y1,并执行步骤5。假设以表1所示ACL表为例,确定表项b的位置y1=4。步骤4:确定比当前第二优先级低一级的表项f的位置,记为y1,并执行步骤5。步骤5:从表项b开始向上依次遍历ACL表中的ACL表项,找到第一个可用ACL表项时,记录其位置为z1,并统计从y1到z1跨越了的不可用ACL表项的条数n1(其中n1=y1-1-z1,不包括y1本身)。若n1=0,则表明y1-1的位置即是可用ACL表项,则直接执行步骤10。因为有预留ACL表项,此过程肯定能找一个可用ACL表项。假设以表1所示ACL表为例,从表项b开始向上遍历ACL中的ACL表项,找到第一个可用ACL表项时,记录其位置z1=1,则从位置1到位置4之间的不可用ACL表项数n1=y1-1-z1=4-1-1=2。步骤6:从表项b开始向下依次遍历ACL表中的ACL表项,找到第一个可用ACL表项时,记录其位置z2,并统计从y1-1到z2之间的不可用ACL表项的条数n2(其中n2=z2-y1,不包含y1-1)。若没找到可用表项,则将n2记为一个特殊的超大值MAX(比如10000000000,该值超过任何芯片ACL表项数)。假设以表1所示ACL表为例,从表项b开始向下遍历ACL中的ACL表项,找到第一个可用ACL表项时,记录其位置z2=8,则从位置3到位置8之间的不可用ACL表项数n2=z2-y1=8-4=4。步骤7:比较n1和n2的值,若n1<n2,则执行步骤8;若n1≥n2,则执行步骤10。其中,当n1<n2时,说明从y1到z1之间的不可用ACL表项数少于y1-1到z2之间的不可用ACL表项数。其中,包含n2为MAX的情况,此时说明y1之下没有可用ACL表项。当n1≥n2时,说明y1到z1之间的不可用ACL表项不少于y1-1到z2之间的不可用ACL表项数。假设以表1所示ACL表为例,由于n1=2<n2=4,则执行步骤8。步骤8:将位置z1至y1之间的ACL表项逐个向上移动一个位置。其中,可以遍历位置z1至y1之间的ACL表项(不包含位置z1、y1),从位置z1+1的ACL表项开始,将当前ACL表项复制到当前ACL表项的上一位置,然后删除当前位置的ACL表项,直至完成位置y1-1的ACL表项的移动,然后执行步骤9。举例,假设以表1所示ACL表为例,将位置0至3之间(不包括位置0和3)的ACL表项逐个向前移一个位置,移动完成后得到如表2所示ACL。表2位置名称内容1内容21c2b34d5a6e7f89步骤9:重新获取待调整的表项a,将表项a复制到位置y1-1,并将原表项a删除。其中,由于在上述移动表项的过程中,表项a的位置可能发生了变化,因此需要重新获取表项a。举例,假设以表2所示ACL表为例,将表项a复制到位置2,并将原表项a删除,修改后的ACL表如表3所示。表3步骤10:将位置y1-1至z2之间的ACL表项逐个向下移动一个位置。其中,可以遍历位置y1-1至z2之间的ACL表项(不包含位置y1-1、z2),从位置z1+1的ACL表项开始,将当前ACL表项复制到当前ACL表项的下一位置,然后删除当前位置的ACL表项,直至完成位置y1的ACL表项的移动,然后执行步骤11。步骤11:重新获取待调整的表项a,将表项a复制到位置y1,并将原表项a删除。由于预留ACL表项对于用户是临时可配的,接收到报文时,不会匹配预留的ACL表项,需要进行将预留的ACL表项调整为可用ACL表项的过程:步骤12:判断预留ACL表项是否为可用ACL表项。如果否,则执行步骤13;如果是,则结束本流程。步骤13:从用户可配的第一个ACL表项开始遍ACL表,直到找到第一个空闲ACL表项,其位置为z0,然后将从预留ACL表项到z0-1的ACL表项逐个向下移动一个位置。举例,假设以表3所示ACL表为例,从位置1开始遍历用户可配ACL表项,直到找到一个空闲ACL表项d,其位置为z0=4,然后将从预留ACL表项到位置3的ACL表项逐个向下移动一个位置,得到如表4所示的ACL表。在另一个优选的实现方式中,在上述应用实例的步骤7中,对于n1<n2,n2≠MAX(表项b向下有空闲ACL表项),预留ACL表项为向上遍历到的第一个可用ACL表项时,首先确定表项a调整前的位置x1,当x1+y1-2<z2-y1时,执行步骤8;否则执行步骤10。其中,x1+y1-1为假设进行步骤8和13需要移动的ACL表项的次数之和,其中y1-1为执行步骤8移动的ACL表项次数,x1-1为步骤13移动的ACL表项次数;z2-y1为执行进行步骤10需要移动的ACL表项数。以表1所示ACL表为例,执行步骤8移动的ACL表项次数为y1-1=3-1=2,由与预留ACL表项不是可用ACL表项,需执行步骤13,步骤13移动的ACL表项次数x1-1=5-1=4,则步骤8和步骤13共移动ACL表项次数为6;若执行步骤10,将位置3到位置8之间的ACL表项依次向下移动一个位置,移动ACL表项次数为z2-y1=8-4=4。由于执行步骤10向下移动相比步骤8和步骤13向上移动的ACL表项次数少,因此当n1<n2,n2≠MAX(表项b向下有空闲ACL表项),预留ACL表项为向上遍历到的第一个可用ACL表项时,可选择执行步骤10。在另一个实施例中,对于新增一条ACL表项的情况,由于新增ACL表项没有当前的第一优先级,新增的ACL表项的插入ACL表后的第二优先级为y。可执行如下步骤:检查用户可配的ACL表项是否已满,如果是,则结束本流程;如果否,则执行上述应用实例的步骤3中确定当前第二优先级y的第二ACL表项的第一位置的过程,当执行步骤9或11时,不用执行重新获取新增ACL表项的过程,而是直接将新增ACL表项复制到位置y1,其余过程与上述应用实例类似。其中,由于预留ACL表项对用户是不可配的,该预留ACL表项也不会用于转发报文时的匹配过程,因此本实施例新增的ACL表项不会插入到预留的ACL表项,以避免再重复的执行步骤12、13的过程,造成执行操作的过程复杂。由上述实施例可见,获取待调整的第一ACL表项,确定所述第一ACL表项调整前的第一优先级、调整后的第二优先级,根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向,在所述迁移方向上,确定所述第一ACL表项的调整位置,将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项。由于本发明实施例在调整ACL表项的优先级时,先在调整位置复制新增的ACL表项,然后再将原ACL表项删除,没有出现部分ACL表项被删除的状态,因此当接收到匹配这部分ACL表项的报文时,会将报文匹配正确的ACL表项,并对报文进行正确的转发;且在确定所述调整位置时,能够通过较少的表项移动次数,确定所述调整位置,可以减少不必要的操作,降低对设备处理资源消耗。与前述一种调整ACL表项的方法的实施例相对应,本发明还提供了一种调整ACL表项的装置的实施例。本发明一种调整ACL表项装置的实施例可以应用在支持芯片ACL的网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在支持芯片ACL的网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本发明一种调整ACL表项装置所在的支持芯片ACL的网络设备的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的支持芯片ACL的网络设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。参见图3,为本发明的一种调整ACL表项装置的一个实施例框图,所述装置包括:第一确定模块310、第二确定模块320、第三确定模块330、复制删除模块340。其中,第一确定模块310,获取待调整的第一ACL表项,确定所述第一ACL表项调整前的第一优先级、调整后的第二优先级;第二确定模块320,根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向;第三确定模块330,在所述迁移方向上,确定所述第一ACL表项的调整位置;复制删除模块340,将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项。所述第二确定模块320,用于根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向的过程,当第一优先级大于第二优先级时,用于确定所述第一ACL表项的迁移方向是将所述第一ACL表项向上迁移;当第一优先级小于第二优先级时,用于确定所述第一ACL表项的迁移方向是将所述第一ACL表项向下迁移。所述第三确定模块330,用于在所述迁移方向上,确定所述第一ACL表项的调整位置的过程,当第二确定模块确定所述迁移方向是将所述第一ACL表项向上迁移时,确定当前第二优先级的第二ACL表项的第一位置;将所述第一位置或者第一位置的上一位置确定为调整位置;当所述第二确定模块确定迁移方向是将所述第一ACL表项向下迁移时,确定比当前第二优先级低一级的第三ACL表项的第四位置;将所述第四位置或者第四位置的上一位置确定为调整位置。所述第三确定模块330,用于将所述第一位置或者第一位置的上一位置确定为调整位置的过程,从第一位置开始向上依次遍历ACL表项,确定第一个可用的ACL表项的第二位置;并统计第一位置与第二位置之间的ACL表项的第一表项数;若第一表项数为0,确定第一位置的上一位置为所述调整位置;若第一表项数不为0,从第一位置开始向下依次遍历ACL表项,确定第一个可用的ACL表项的第三位置;并统计第一位置的上一位置与第三位置之间的ACL表项的第二表项数;当第一表项数小于第二表项数时,确定第一位置的上一位置为所述调整位置;当第一表项数不小于第二表项数时,确定所述第一位置为所述调整位置。所述第三确定模块330,用于将所述第四位置或者第四位置的上一位置确定为调整位置的过程,从第四位置开始向上依次遍历ACL表项,确定第一个可用的ACL表项的第五位置;并统计第四位置与第五位置之间的ACL表项的第三表项数;若第三表项数为0,确定第四位置的上一位置为所述调整位置;若第三表项数不为0,从第四位置开始向下依次遍历ACL表项,确定第一个可用的ACL表项的第六位置;并统计第四位置的上一位置与第六位置之间的ACL表项的第四表项数;当第三表项数小于第四表项数时,确定第四位置的上一位置为所述调整位置;当第三表项数不小于第四表项数时,确定所述第四位置为所述调整位置。所述装置还可以包括:移动模块350,用于复制删除模块将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项之前,若第一表项数不为0,当第一表项数小于第二表项数时,将第一位置与第二位置之间的每个ACL表项逐个向上移动一个位置;当第一表项数不小于第二表项数时,将第一位置的上一位置至第三位置之间的ACL表项逐个向下移动一个位置。若第三表项数不为0,当第三表项数小于第四表项数时,将第四位置与第五位置之间的每个ACL表项逐个向上移动一个位置;当第三表项数不小于第四表项数时,将第四位置的上一位置至第六位置之间的ACL表项逐个向下移动一个位置。上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。由上述实施例可见,该装置获取待调整的第一ACL表项,确定所述第一ACL表项调整前的第一优先级、调整后的第二优先级,根据第一优先级和第二优先级,确定所述第一ACL表项的迁移方向,在所述迁移方向上,确定所述第一ACL表项的调整位置,将所述第一ACL表项复制到所述调整位置,并删除原第一ACL表项。由于本发明实施例在调整ACL表项的优先级时,先在调整位置复制新增的ACL表项,然后再将原ACL表项删除,不会出现部分ACL表项被删除的状态,因此当接收到匹配这部分ACL表项的报文时,会将报文匹配正确的ACL表项,并对报文进行正确的转发。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1