访问控制列表acl表项下发方法和装置的制作方法

文档序号:7860685阅读:564来源:国知局
专利名称:访问控制列表acl表项下发方法和装置的制作方法
技术领域
本申请涉及网络通信技术,特别涉及访问控制列表(ACL)表项下发方法和装置。
背景技术
近年来,数据中心正以前所未有的速度增长,当前的数据中心通常运行至少以下两个独立的网络以太网网络(LAN)和光纤通道的存储区域网络(SAN),其中,LAN用于客户机到服务器和服务器到服务器的通信;SAN用于服务器和存储设备的通信。为了支持数据中心运行的LAN和SAN,数据中心的服务器需为LAN和SAN配置单独的接口,比如,服务器配置LAN的以太网网络接口卡(NIC)和SAN的光纤通道主机总线适配器(HBA)。还有,为了同时为LAN提供服务并通过SAN网络完成存储功能,数据中心的服务器还需使用独立的以太网卡和光纤通道协议(FC)网卡,分别连接以太网交换机(Ethernet switch)和FC switch,其中,Ethernet switch和FC switch,以及对应的连接是相互独立的,具体如图I所示。这样,会使得数据中心中存在较多的switch和线缆,造成设备投资及维护工作量都比较大,可扩展性比较差。光纤通道以太网承载协议(FCoE)可以很好的解决上述问题。FCoE原理是在以太网上承载流量,允许LAN和SAN的流量在同一个以太网中传送。采用FCoE,数据中心的服务器只使用支持FCoE的网卡即可,并由支持FCoE的FCF (FCoE Forwarder)switch同时替换传统的Ethernet switch和FC switch,实现I/O整合,使网卡、交换机和连接线缆的数量大为减少,同时简化了网络运行的维护工作量,降低了总体成本,具体如图2所示。在图2中,服务器通过支持FCoE的以太网卡连接到支持FCoE的FCF switch上(服务器和FCF switch之间的链路可以同时收发LAN和SAN内的流量),而FCF switch通过以太网接口接入到LAN网络,通过FC接口接入到SAN网络中。在FCoE中,FCF switch实现报文转发最好的方式是由交换芯片单独支持专用的FC转发表,然而目前大多数交换芯片却还不支持专用的FC转发表,基于此,可以使用芯片的ACL表来模拟FC转发表。目前的ACL表对应的功能表至少分为图3所示的以下四个表报文匹配信息表(FP_TCAM )、动作策略表(FP_P0L I CY_TABLE )、度量表(FP_METER_TABLE )和统计表(FP_C0UNTER_TABLE),其分别由内容分析查找引擎(ContentAware lookup engine)、策略引擎(policy engine)、度量引擎(metering engine)、统计引擎(statistics engine)管理。其中,ContentAwarelookup engine 的个数为多个,这些 ContentAware lookupengine相互并行独立工作,在硬件上,可根据这些引擎的个数将FP_TCAM分成若干报文匹
配信息片(slice), slice的个数与ContentAware lookup engine的个数相同,两者--对
应。其中,不同的slice对应不同的应用,其记录的ACL表项与其对应的应用对应,具体为驱动在下发ACL表项时,根据ACL表项的类型下发到对应的slice,例如,用于认证安全的ACL表项下发到slice 0,用于模块化质量控制(MQC)的ACL表项下发到slice 1,用于FCoE转发的ACL表项(记为FCoE转发表项)下发至slice2等等。
每个slice都有自己对应的搜索机制(按照用户设定的掩码匹配查找)和对应的动作策略表。当报文进入FCF switch后,各个slice对应的ContentAware lookup engine同时在本slice内的ACL表项查找并匹配对应的动作策略表中的动作策略(policy)表项,一旦匹配,就依据匹配的policy表项执行对应的动作。但是,当需要批量下发ACL表项时,每条ACL表项的下发都有多次写硬件的操作,在此过程中会对其他ACL表项的功能造成影响且多条ACL表项下发时效率太低,特别是在对响应时间有要求的应用场景下,不仅性能达不到甚至可能会引起功能异常。因此,在下发ACL表项时采用了影子(Shadow)方式,即为相关的硬件表比如slice建立对应的软件
Shadow表,硬件表和软件Shadow表中的表项是--对应的。这样,当驱动向slice下发批
量ACL表项时,先不将该ACL表项下发至slice,而是下发至该slice对应的软件Shadow表中对应的位置,该位置与实际应该写入slice的位置相同,此时,slice还未更新。当将所有待下发的ACL表项都下发至软件Shadow表后,通过存储器直接访问(DMA)方式将软件 Shadow表的内容依次搬移到对应的slice中,这样,一次搬移操作就完成slice整张表的刷新,大大减少了直接写硬件表的次数,性能有很大提升,且对其他ACL表项的影响时间大大减小。但是,在ACL表项下发过程中,由于不同ACL表项下发的前后顺序不同,这会导致ACL表项瞬间误匹配或丢包现象。如,若已向图4a所示的一 sIice内下发了如下3条ACL表项EntryO、Entryl、Entry2,该3条ACL表项分别与该slice对应的动作策略表中的policy I、policy2、policy3对应,具体如图4a所示,此时如果再向该slice下发一条ACL表项(记为Entry3),假如该Entry3的优先级在EntryO和Entryl之间,则就需要在EntryO和Entryl之间插入该Entry3,按照上述的Shadow方式更新该slice,更新后的slice如图4b所示。但是,在slice更新后,slice对应的动作策略表可能还未更新,具体如图4b所示,如此,就致使Entry3对应的动作策略是动作策略表中的policyl,而Entryl对应的动作策略变成了动作策略表中的Po I i cy 2,这显然导致ACL表项瞬间误匹配,进而导致由于ACL表项瞬间误匹配而引起的数据包丢失问题。

发明内容
本申请提供了访问控制列表ACL表项下发方法和装置,以避免ACL表项下发时导致的ACL表项瞬间误匹配,进而避免数据包丢失。本申请提供的技术方案包括—种访问控制列表ACL表项下发方法,ACL表对应的功能表包括报文匹配信息表、动作策略表;其中,报文匹配信息表根据并行处理引擎的数目分成对应数目的报文匹配信息片slice,该方法包括确定待下发ACL表项应下发至slice的目标位置;识别所述目标位置非空闲,在所述slice中找到距所述目标位置最近的空闲表项位置;采用以下搬移方式先拷贝动作策略表中与ACL表项对应的动作策略policy表项,再拷贝ACL表项,然后删除原policy表项和ACL表项,从最靠近所述空闲表项位置的ACL表项开始,依次按照所述搬移方式将ACL表项以及对应的policy表项向其最近空闲表项位置的方向逐个搬移,直至目标位置空闲;在完成所述位置区间的遍历后,将待下发ACL表项下发至所述目标位置。—种访问控制列表ACL表项下发装置,包括位置确定单元,用于确定待下发ACL表项应下发至slice的目标位置,并在识别所述目标位置非空闲时,在所述slice中找到距所述目标位置最近的空闲表项位置;表项处理单元,用于采用以下搬移方式先拷贝动作策略表中与ACL表项对应的动作策略policy表项,再拷贝ACL表项,然后删除原policy表项和ACL表项,从最靠近所述空闲表项位置的ACL表项开始,依次按照所述搬移方式将ACL表项以及对应的policy表 项向其最近空闲表项位置的方向逐个搬移,直至目标位置空闲; 表项下发单元,用于将所述待下发ACL表项下发至所述目标位置。由以上技术方案可以看出,本发明中,在需要向slice下发ACL表项时,确定待下发ACL表项应下发至slice的目标位置,并当所述目标位置非空闲时在所述slice中找到距所述目标位置最近的空闲表项位置,采用以下搬移方式先拷贝动作策略表中与ACL表项对应的动作策略policy表项,再拷贝ACL表项,然后删除原policy表项和ACL表项,从最靠近所述空闲表项位置的ACL表项开始,依次按照所述搬移方式将ACL表项以及对应的policy表项向其最近空闲表项位置的方向逐个搬移,直至目标位置空闲,在上述搬移方式中,policy表项和ACL表项在拷贝过程中原位置不变,依然分别记录该policy表项和ACL表项,这样,即使在该policy表项拷贝过程中接收到数据包,也不会出现ACL表项瞬间误匹配的问题,进而也避免数据包丢失;并且,在采用上述搬移方式完成搬移后,由于已成功完成搬移操作,没必要重复记录上述被搬移的表项,节省存储资源,并且,由于上述表项成功被搬移,因此,即使清空之前记录上述表项的位置,也不会出现ACL表项瞬间误匹配的问题,进而也避免数据包丢失。


图I为传统数据中心组网示意图;图2为FCoE组网示意图;图3为ACL表实现示意图;图4a为ACL表项下发前示意图;图4b为ACL表项下发后示意图;图5为本发明实施例提供的方法流程图;图6a为本发明实施例提供的步骤501实现流程图;图6b为本发明实施例提供的步骤501另一实现流程图;图7为本发明实施例提供的slice和动作策略表示意图;图8为本发明实施例提供的slice的表项索引范围不意图;图9为本发明实施例提供的装置结构图。
具体实施例方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本申请提供的方法中,在向一 slice下发ACL表项时,并不采用Shadow机制,而是逐条操作该slice内的ACL表项,以保证在下发ACL表项时,避免ACL表项瞬间误匹配,进而避免数据包丢失。下面对本发明提供的方法进行描述参见图5,图5为本发明实施例提供的方法流程图。如图5所示,该流程可包括以下步骤步骤501,确定待下发ACL表项应下发至slice的目标位置。这里的slice为待下发ACL表项实际应该下发的slice,其与待下发ACL表项的类型对应。 其中,本步骤501如何确定待下发ACL表项在slice的目标位置,其具体可通过下述图6a或图6b所示流程实现,这里不再具体描述。步骤502,识别所述目标位置非空闲,在所述slice中找到距所述目标位置最近的空闲表项位置。本发明中,步骤501确定的目标位置有可能本身就空闲,比如图7所示的表项位置8,在该目标位置空闲时,就没有必要执行本发明,可直接下发所述待下发ACL表项至该目标位置。因此,为便于区分,本步骤502需要执行识别所述目标位置非空闲的操作,只有在目标位置非空闲时,执行本发明,才能体现出解决上述技术问题的效果。另外,本步骤502中,在所述slice中找到距所述目标位置最近的空闲表项位置,其可通过图7示例描述以图7所示slice为例,假如通过步骤501确定出表项位置5为目标位置,如图7所示,表项位置8空闲,且距离表项位置5最近,因此,本步骤502,就确定出表项位置8为距所述表项位置5最近的空闲表项位置。步骤503,采用以下搬移方式先拷贝动作策略表中与ACL表项对应的动作策略policy表项,再拷贝ACL表项,然后删除原policy表项和ACL表项,从最靠近所述空闲表项位置的ACL表项开始,依次按照所述搬移方式将ACL表项以及对应的policy表项向其最近空闲表项位置的方向逐个搬移,直至目标位置空闲。以图7所示slice为例,假如通过步骤501确定出表项位置5为目标位置,以及,通过步骤502确定出表项位置8为距离表项位置5最近的空闲表项位置,则,如图7所示,由于表项位置8空闲,Entryl为距表项位置8最近的表项,因此,基于步骤503描述的搬移方式,则本步骤503中,先在图7所示的动作策略表中拷贝与Entryl对应的policyl至最近的空闲表项位置即位置8,在该拷贝过程中,动作策略表中记录policyl的原位置7依然继续记录着该policyl,这样,即使在该拷贝过程接收到能够成功匹配Entryl的数据包,由于Entryl对应的policyl未发生变化,因此,不会出现ACL表项瞬间误匹配的现象,进而也不会出现丢失数据包的问题。当policyl完成拷贝后,将slice中的Entryl拷贝至其最近的空闲表项位置即表项位置8,在该拷贝过程中,slice中之前记录Entryl的原位置即表项位置7依然继续记录着该Entryl,这样即使在该拷贝过程接收到能够成功匹配Entryl的数据包,由于原表项位置7仍然记录Entryl、且该Entryl与其对应的policyl之间的对应关系未发生变化,因此,不会出现ACL表项瞬间误匹配的现象,进而也不会出现丢失数据包的问题。需要说明的是,本发明中,该policy表项拷贝的位置与其对应的ACL表项拷贝的位置两者相互对应,能够体现出policy表项与ACL表项之间的对应关系。
在完成Entryl和policyl的拷贝后,删除原Entryl和policyl,也即,清空动作策略表中之前用于记录policyl的原位置即位置7,以及slice中之前记录Entryl的原位置即表项位置7 ;之后,针对后续的ACL表项即图7中的Entry2、Entry5,依次按照类似Entryl的搬移方式执行,直至目标位置空闲。可以看出,本发明是逐条处理ACL表项的,这样,不会由于一条ACL表项的处理影响其他ACL表项。步骤504,将所述待下发ACL表项下发至所述目标位置。通过步骤503的操作,能够最终使得目标位置空闲,如此,即可将所述待下发ACL表项下发至所述目标位置。至此,完成图5所示流程。
下面对步骤501即确定待下发ACL表项在slice的目标位置的实现流程进行描述本发明中,该步骤501实现流程应用于两种不同的情况,其中一个情况是slice中不存在优先级与所述待下发ACL表项的优先级相同的ACL表项(记为情况I),仅存在优先级相近的ACL表项;另外一个情况是slice中存在优先级与所述待下发ACL表项的优先级相同的ACL表项(记为情况2)。下面分别针对这两种情况进行详细描述参见图6a,图6a为本发明实施例提供的步骤501实现流程图。该流程应用于上述的情况1,主要包括以下步骤步骤601a,在slice中找到优先级与所述待下发ACL表项的优先级最接近的目标ACL表项,如果目标ACL表项个数大于1,则执行步骤602a,如果目标ACL表项个数为1,则执行步骤603a。步骤602a,从目标ACL表项中确定出离所述slice内的空闲表项位置最近的ACL表项,将该确定出的ACL表项的表项位置作为所述目标位置。以图7所示slice为例,假设该slice记录了若干条ACL表项,每一条表项中的数字代表该表项的优先级,此时如果要向该slice下发优先级为6的ACL表项(记为Entry6),则由于该Entry6的优先级为6,与slice内ACL表项的优先级依次做比较,贝U可以得到slice内与优先级与Entry6最接近的目标ACL表项为优先级为7和5的ACL表项即Entry7和Entry5。可以看出,该得到的目标ACL表项个数大于I,大于I,如此,基于上面步骤602a的具体描述,分别从这2个目标ACL表项中选择离所述slice内的空闲表项位置最近的ACL表项,由于图7所示slice中表项位置8、以及往下的所有位置均空闲,并且,Entry5在Entry7的下方,因此,可以得到图7所示的slice中,Entry5距slice中的空闲表项位置最近,因此,确定Entry5所在的表项位置5为待下发ACL表项即Entry6应下发至slice的目标位置。步骤603a,比较该目标ACL表项的优先级与所述待下发ACL表项的优先级,依据比较结果确定待下发ACL表项在slice内的目标位置。优选地,本步骤603a中,依据比较结果确定待下发ACL表项在slice内的表项位置与slice记录ACL的方式有关,下面进行具体描述方式I :本方式I下,slice从头部至尾部顺次按照优先级递减的方式记录ACL表项。以图7所示的slice以列方式记录ACL表项为例,其他情况原理类似,在图7中,每一条表项中的数字代表该表项的优先级,则,本方式I下,优先级大的ACL表项在上方,而优先级小的ACL表项在下方,逐次递减。基于本方式I中slice记录ACL表项的方式,贝U上述步骤603a中,依据比较结果确定待下发ACL表项在slice内的目标位置具体为如果该找到的目标ACL表项的优先级小于所述待发送ACL表项的优先级,则确定该目标ACL表项的表项位置作为所述待下发ACL表项应下发至slice的目标位置,否则,确定目标ACL表项的下一个表项位置为所述待下发ACL表项应下发至slice的目标位置。仍以图7所示slice为例,假设该slice已经按本方式I的方式记录了若干条ACL表项,每一条表项中的数字代表该表项的优先级,此时如果要向该slice下发优先级为3的ACL表项(记为Entry3),则由于该Entry3的优先级为3,与slice内ACL表项的优先级依次做比较,则可以在slice内找到优先级与Entry3最接近的目标ACL表项为优先级大于I的ACL表项即Entry2,该找到的目标ACL表项个数为1,且优先级小于所述待发送ACL表项 即Entry3的优先级,如此,基于步骤603a的描述,确定该找到的Entry2的表项位置即表项位置6作为所述待下发ACL表项即Entry3应下发至slice的目标位置。同样,如果此时要向该slice下发优先级为4的ACL表项(记为Entry4),则由于该Entry4的优先级为4,与slice内ACL表项的优先级依次做比较,贝U可以在slice内找到优先级与Entry4最接近的目标ACL表项为优先级为5的ACL表项即Entry5,该找到的目标ACL表项个数为1,且优先级大于所述待发送ACL表项即Entry4的优先级,如此,基于步骤603a的描述,确定Entry5的下一个表项位置,也就是图7中优先级大于I的ACL表项即Entry2的表项位置6为所述待下发ACL表项即Entry4应下发至slice的目标位置。这能满足本方式I下slice从头部至尾部顺次按照优先级递减的方式记录ACL表项的原则。至此,完成方式I的描述。方式2 本方式2下,slice从头部至尾部顺次按照优先级递增的方式记录ACL表项,其与方式I正好相反。基于该方式2,则上述步骤603a中,依据比较结果确定待下发ACL表项在slice内的目标位置具体为如果该找到的目标ACL表项的优先级大于所述待发送ACL表项的优先级,则确定该找到的目标ACL表项的表项位置作为所述待下发ACL表项应下发至slice的目标位置,否则,确定该找到的目标ACL表项的下一个表项位置为所述待下发ACL表项应下发至slice的目标位置。本方式2,原理类似于上述的方式1,因此,这里不再举例描述。至此,完成图6a所示流程的描述。参见图6b,图6b为本发明实施例提供的步骤501另一实现流程图。该流程应用于上述的情况2,主要包括以下步骤步骤601b,在所述slice中找到优先级与所述待下发ACL表项的优先级相同的目标ACL表项,如果目标ACL表项的个数为I,执行步骤602b,如果目标ACL表项的个数大于I,则执行步骤603b。步骤602b,在所述目标ACL表项的相邻表项位置空闲时,确定所述目标位置为目标ACL表项的相邻空闲表项位置,在所述目标ACL表项的相邻表项位置均非空闲时,确定所述目标位置为目标ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。步骤603b,从目标ACL表项中找到距所述slice中空闲表项位置最近的ACL表项,确定所述目标位置为该找到的ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。优选地,本发明中,步骤603b中,在从目标ACL表项中找到距空闲表项位置最近的ACL表项之后,且在确定目标位置之前,进一步包括确定该找到的ACL表项的个数,如果该个数为1,则继续执行确定目标位置的操作,如果该个数大于1,则从该找到的ACL表项中继续查找距slice的头部最近的ACL表项,确定所述目标位置为该查找到的ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。该图6b所示流程类似图6a所示流程,这里不再一一举例描述。只不过需要说明的是,在图6b所示流程中,步骤602b中的目标ACL表项与其最近空闲表项位置之间的第一个ACL表项不为目标ACL表项,其为目标ACL至最近空闲表项位置的方向上与目标ACL表项最接近的ACL表项。以图7所示的slice为例,假如目标ACL表项为Entry5,该目标ACL表项最接近的空闲表项位置为位置8,基于此,本步骤602b中,目标ACL表项与其最近空闲表项位置之间的第一个ACL表项记为Entry2。类似,步骤603b中,该找到的ACL表项与其最近空闲表项位置之间第一个ACL表项也不为该找到的ACL表项,这里不再赘述。至此,完成图6b所示流程。从以上流程可以看出,采用本发明,在下发一条ACL表项到slice时,可能会存在多条ACL表项及其对应的policy表项的拷贝,这会影响ACL表项的下发效率,并且,对于某些需要快速下发的应用来说,本发明可能达不到性能要求。基于此,本发明并不完全舍弃之前的Shadow方式,而是与Shadow方式共存,且互相不影响,以满足各自需求,性能达到最优。具体实现方法如下
依据所述待下发ACL表项的类型确定所述待下发ACL表项应下发的slice,并确定该slice对应的应用是否要求高丢包性能,如果否,则按照现有Shadow方式下发所述待下发ACL表项,否则,按照本发明执行,即执行图5所示流程。在实际应用中,要求高丢包性能的应用可为FCoE转发,而其他的应用则无需高丢包性能,基于此,本发明可单独设置一个slice记录用于FCoE转发的ACL表项,比如由slicel5单独记录,对应的表项位置为3840 4095,而其他slice比如sliceO 14记录一些丢包性能不是很高的应用的ACL表项,基于此,本发明中,当向si ice 15下发ACL表项时,采用本发明,而当向sliceO 14下发ACL表项时,仍然按照现有Shadow方式。优选地,作为本发明的一个实施例,在上面描述中,表项位置可通过表项索引指示。其中,不同的slice对应不同的索引范围,其通过预先配置,图8示出了 slice的索引范围。针对每一 slice,其中的表项位置通过表项索引指示,比如图8中,sliceO的索引范围为0至255,则表示该sliceO存在0至255个表项位置。以上对本发明提供的方法进行了描述。下面对本发明提供的装置进行描述参见图9,图9为本发明提供的装置结构图。如图9所示,所述装置包括位置确定单元,用于确定待下发ACL表项应下发至slice的目标位置,并在识别所述目标位置非空闲时,在所述slice中找到距所述目标位置最近的空闲表项位置;表项处理单兀,用于米用以下搬移方式先拷贝动作策略表中与ACL表项对应的动作策略policy表项,再拷贝ACL表项,然后删除原policy表项和ACL表项,从最靠近所述空闲表项位置的ACL表项开始,依次按照所述搬移方式将ACL表项以及对应的policy表项向其最近空闲表项位置的方向逐个搬移,直至目标位置空闲;表项下发单元,用于将所述待下发ACL表项下发至所述目标位置。优选地,本发明中,所述位置确定单元通过以下步骤确定目标位置在所述slice中找到优先级与所述待下发ACL表项的优先级相同的目标ACL表项;如果目标ACL表项的个数为1,则在所述目标ACL表项的相邻表项位置空闲时,确定所 述目标位置为目标ACL表项的相邻空闲表项位置,在所述目标ACL表项的相邻表项位置均非空闲时,确定所述目标位置为目标ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置;如果目标ACL表项的个数大于I,则从目标ACL表项中找到距所述slice中空闲表项位置最近的ACL表项,确定所述目标位置为该找到的ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。优选地,本发明中,所述位置确定单元在从目标ACL表项中找到距空闲表项位置最近的ACL表项之后,且在确定目标位置之前,进一步确定该找到的ACL表项的个数,如果该个数为1,则继续执行确定目标位置的操作,如果该个数大于I,则从该找到的ACL表项中继续查找距slice的头部最近的ACL表项,确定所述目标位置为该查找到的ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。本发明中,所述位置确定单元还可通过以下步骤确定目标位置在所述slice中找到优先级与所述待下发ACL表项的优先级最接近的目标ACL表项;如果目标ACL表项的个数大于1,则从该2个目标ACL表项中确定出离所述slice内的空闲表项位置最近的ACL表项,将该确定出的ACL表项的表项位置作为所述目标位置;如果目标ACL表项的个数为1,则在slice按照优先级递减的方式记录ACL表项时,如果目标ACL表项的优先级小于所述待下发ACL表项的优先级,则确定目标ACL表项的表项位置为所述目标位置,否则,确定目标ACL表项的下一个表项位置为所述目标位置,而在slice按照优先级递增的方式记录ACL表项时,如果目标ACL表项的优先级大于所述待下发ACL表项的优先级,则确定目标ACL表项的表项位置为所述目标位置,否则,确定目标ACL表项的下一个表项位置为所述目标位置。另外,优选地,如图9所示,所述装置进一步包括下发方式确定单元,用于在所述位置确定单元确定目标位置之前,依据所述待下发ACL表项的类型确定所述待下发ACL表项应下发的si ice,确定该si ice对应的应用是否要求高丢包性能,如果否,则触发所述表项下发单元按照现有影子Shadow方式下发所述待下发ACL表项,否则,触发所述位置确定单元确定所述目标位置。至此,完成本发明提供的装置描述。由以上技术方案可以看出,本发明中,在需要向slice下发ACL表项时,确定待下发ACL表项应下发至slice的目标位置,并当所述目标位置非空闲时在所述slice中找到距所述目标位置最近的空闲表项位置,在从所述空闲表项位置开始至所述目标位置结束的位置区间中依次遍历ACL表项,将遍历到的ACL表项作为当前待处理ACL表项,依次拷贝动作策略表中与当前待处理ACL表项对应的动作策略policy表项和当前待处理ACL表项至对应的位置,所述policy表项和当前待处理ACL表项拷贝至的位置相互对应,且所述当前待处理ACL表项拷贝至的位置为距当前待处理ACL表项最近的空闲表项位置,在该拷贝过程中,policy表项和当前待处理表项的原位置依然分别记录policy表项和当前待处理表项,这样,即使在该policy表项拷贝过程中接收到数据包,也不会出现ACL表项瞬间误匹配的问题,进而也避免数据包丢失;并且,本发明在完成拷贝后,清空动作策略表和slice中被拷贝表项所在的原位置,这是因为已完成上述拷贝操作,没必要重复记录上述被拷贝的表项,节省存储资源,并且,由于上述表项成功被拷贝,因此,即使清空之前记录上述表项的位置,也不会出现ACL表项瞬间误匹配的问题,进而也避免数据包丢失;还有,本发明中,在确定待下发ACL表项应下发至slice的目标位置之前,依据所述待下发ACL表项的类型确定所述待下发ACL表项应下发的sI ice,并确定该sI ice对应的应用是否要求高丢包性能,如果否,则按照现有影子Shadow方式下发所述待下发ACL表项, 如果是,按照图5所示流程执行,这能够本发明和现有Shadow方式共存,两者互不影响,达到最佳性能。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种访问控制列表ACL表项下发方法,ACL表对应的功能表包括报文匹配信息表、动作策略表;其中,报文匹配信息表根据并行处理引擎的数目分成对应数目的报文匹配信息片slice,其特征在于,该方法包括 确定待下发ACL表项应下发至slice的目标位置; 识别所述目标位置非空闲,在所述slice中找到距所述目标位置最近的空闲表项位置; 采用以下搬移方式先拷贝动作策略表中与ACL表项对应的动作策略policy表项,再拷贝ACL表项,然后删除原policy表项和ACL表项,从最靠近所述空闲表项位置的ACL表项开始,依次按照所述搬移方式将ACL表项以及对应的policy表项向其最近空闲表项位置的方向逐个搬移,直至目标位置空闲; 将待下发ACL表项下发至所述目标位置。
2.根据权利要求I所述的方法,其特征在于,所述确定待下发ACL表项应下发至slice的目标位置包括 在所述slice中找到优先级与所述待下发ACL表项的优先级相同的目标ACL表项; 如果目标ACL表项的个数为1,则在所述目标ACL表项的相邻表项位置空闲时,确定所述目标位置为目标ACL表项的相邻空闲表项位置,在所述目标ACL表项的相邻表项位置均非空闲时,确定所述目标位置为目标ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置; 如果目标ACL表项的个数大于1,则从目标ACL表项中找到距空闲表项位置最近的ACL表项,确定所述目标位置为该找到的ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。
3.根据权利要求2所述的方法,其特征在于,在从目标ACL表项中找到距空闲表项位置最近的ACL表项之后,且在确定目标位置之前,进ー步包括 确定该找到的ACL表项的个数,如果该个数为1,则继续执行确定目标位置的操作,如果该个数大于1,则从该找到的ACL表项中继续查找距slice头部最近的ACL表项,确定所述目标位置为该查找到的ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。
4.根据权利要求I所述的方法,其特征在于,所述确定待下发ACL表项应下发至slice的目标位置包括 在所述slice中找到优先级与所述待下发ACL表项的优先级最接近的目标ACL表项; 如果目标ACL表项的个数大于I,则从目标ACL表项中确定出离所述slice内的空闲表项位置最近的ACL表项,将该确定出的ACL表项的表项位置作为所述目标位置; 如果目标ACL表项的个数为1,则在slice按照优先级递减的方式记录ACL表项时,如果目标ACL表项的优先级小于所述待下发ACL表项的优先级,则确定目标ACL表项的表项位置为所述目标位置,否则,确定目标ACL表项的下一个表项位置为所述目标位置,而在slice按照优先级递增的方式记录ACL表项时,如果目标ACL表项的优先级大于所述待下发ACL表项的优先级,则确定目标ACL表项的表项位置为所述目标位置,否则,确定目标ACL表项的下一个表项位置为所述目标位置。
5.根据权利要求I所述的方法,其特征在于,在确定目标位置之前,进ー步包括依据所述待下发ACL表项的类型确定所述待下发ACL表项应下发的slice ; 确定该slice对应的应用是否要求高丢包性能,如果否,则按照现有影子Shadow方式下发所述待下发ACL表项,否则,继续确定目标位置。
6.一种访问控制列表ACL表项下发装置,其特征在于,所述装置包括 位置确定单元,用于确定待下发ACL表项应下发至slice的目标位置,并在识别所述目标位置非空闲时,在所述slice中找到距所述目标位置最近的空闲表项位置; 表项处理単元,用于采用以下搬移方式先拷贝动作策略表中与ACL表项对应的动作策略policy表项,再拷贝ACL表项,然后删除原policy表项和ACL表项,从最靠近所述空闲表项位置的ACL表项开始,依次按照所述搬移方式将ACL表项以及对应的policy表项向其最近空闲表项位置的方向逐个搬移,直至目标位置空闲;表项下发単元,用于将所述待下发ACL表项下发至所述目标位置。
7.根据权利要求6所述的装置,其特征在干,所述位置确定单元通过以下步骤确定所述目标位置 在所述slice中找到优先级与所述待下发ACL表项的优先级相同的目标ACL表项; 如果目标ACL表项的个数为1,则在所述目标ACL表项的相邻表项位置空闲时,确定所述目标位置为目标ACL表项的相邻空闲表项位置,在所述目标ACL表项的相邻表项位置均非空闲时,确定所述目标位置为目标ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置; 如果目标ACL表项的个数大于1,则从目标ACL表项中找到距所述slice中空闲表项位置最近的ACL表项,确定所述目标位置为该找到的ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。
8.根据权利要求7所述的装置,其特征在于,所述位置确定单元在从目标ACL表项中找到距空闲表项位置最近的ACL表项之后,且在确定目标位置之前,进ー步确定该找到的ACL表项的个数,如果该个数为1,则继续执行确定目标位置的操作,如果该个数大于1,则从该找到的ACL表项中继续查找距slice的头部最近的ACL表项,确定所述目标位置为该查找到的ACL表项与其最近空闲表项位置之间第一个ACL表项的表项位置。
9.根据权利要求6所述的装置,其特征在干,所述位置确定单元通过以下步骤确定目标位置 在所述slice中找到优先级与所述待下发ACL表项的优先级最接近的目标ACL表项; 如果目标ACL表项的个数大于I,则从该2个目标ACL表项中确定出离所述si ice内的空闲表项位置最近的ACL表项,将该确定出的ACL表项的表项位置作为所述目标位置; 如果目标ACL表项的个数为1,则在slice按照优先级递减的方式记录ACL表项时,如果目标ACL表项的优先级小于所述待下发ACL表项的优先级,则确定目标ACL表项的表项位置为所述目标位置,否则,确定目标ACL表项的下一个表项位置为所述目标位置,而在slice按照优先级递增的方式记录ACL表项时,如果目标ACL表项的优先级大于所述待下发ACL表项的优先级,则确定目标ACL表项的表项位置为所述目标位置,否则,确定目标ACL表项的下一个表项位置为所述目标位置。
10.根据权利要求6所述的装置,其特征在于,所述装置进ー步包括 下发方式确定单元,用于在所述位置确定单元确定目标位置之前,依据所述待下发ACL表项的类型确定所述待下发ACL表项应下发的slice,确定该slice对应的应用是否要求高丢包性能,如果否,则触发所述表项下发单元按照现有影子Shadow方式下发所述待下发ACL表项,否则,触 发所述位置确定单元确定所述目标位置。
全文摘要
本申请提供了访问控制列表ACL表项下发方法和装置。方法包括确定待下发ACL表项应下发至slice的目标位置;识别目标位置非空闲并在slice中找到距目标位置最近的空闲表项位置;采用以下搬移方式先拷贝动作策略表中与ACL表项对应的动作策略policy表项,再拷贝ACL表项,然后删除原policy表项和ACL表项,从最靠近所述空闲表项位置的ACL表项开始,依次按照所述搬移方式将ACL表项以及对应的policy表项向其最近空闲表项位置的方向逐个搬移,直至目标位置空闲;将待下发ACL表项下发至目标位置。
文档编号H04L29/06GK102857510SQ20121034754
公开日2013年1月2日 申请日期2012年9月18日 优先权日2012年9月18日
发明者陈佳莹, 胡海 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1