CN115633097A - 一种访问控制列表acl压缩方法及装置 - Google Patents
一种访问控制列表acl压缩方法及装置 Download PDFInfo
- Publication number
- CN115633097A CN115633097A CN202211647288.2A CN202211647288A CN115633097A CN 115633097 A CN115633097 A CN 115633097A CN 202211647288 A CN202211647288 A CN 202211647288A CN 115633097 A CN115633097 A CN 115633097A
- Authority
- CN
- China
- Prior art keywords
- acl
- group
- acls
- head
- gap
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9015—Buffering arrangements for supporting a linked list
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9021—Plurality of buffers per packet
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明实施例提供一种访问控制列表ACL压缩方法及装置,在本发明实施例中,先将节点上的所有ACL按相似度进行分组,针对每一ACL组确定对应的head和gap,并将各组对应的head记录至所述TCAM芯片,使得TCAM芯片中只需要存储ACL组对应的head,使TCAM芯片中被占用的存储空间更小,并且通过gap确定待下发至指定存储介质的各组中的ACL,使得存在交集的head间通过ACL复制消除误差,在保证ACL查找正确性的基础上提高ACL压缩比,提升TCAM的ACL存储容量。
Description
技术领域
本申请涉及数据存储领域,尤其涉及一种访问控制列表ACL压缩方法及装置。
背景技术
在通信网络的核心节点,对报文转发的性能有极高要求,单纯用软件转发模型难以达到百G甚至T级别的转发性能。TCAM作为针对ACL查找的硬件加速引擎,基本成了高端/核心路由交换设备的必选项。
随着各种用户业务的发展,需要支持的ACL规则条目越来越多,这给现在基于TCAM查ACL的模型带来了挑战。因为TCAM的三态存储介质容量非常有限,已经难以支撑日益增长的业务需求,所以ACL压缩技术就应运而生。
然而现有的ACL压缩技术是基于二进制压缩,当各个ACL位置相同而数值不同的bit位分布偏稀疏不完全连续时,会导致压缩效果不理想。
发明内容
有鉴于此,本申请提供一种访问控制列表ACL压缩方法及装置,用于解决ACL位置相同而数值不同的bit位分布偏稀疏不完全连续时,导致压缩效果不理想的问题。
具体地,本申请是通过如下技术方案实现的:
本申请提供一种访问控制列表ACL压缩方法,应用于包含三态内容寻址TCAM芯片的节点,所述方法包括:
将待压缩的所有ACL进行分组,每一组中任一ACL与同组中其它ACL的相似度大于该ACL与其它组中任一ACL的相似度;
针对每一ACL组,确定所述ACL组对应的head,所述head是基于所述ACL组中所有ACL确定的,其至少涵盖所述ACL组中所有ACL、以及至少一个gap;所述gap与所述ACL组中所有ACL不同,但具有所述ACL组中所有ACL表的共性;所述共性通过相同bit位上的数值不同表示;
依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL,并将各组对应的head记录至所述TCAM芯片。
可选的,确定所述ACL的相似度的方法包括:
通过二进制表示每一ACL;
针对每一ACL,依据所述ACL与其它各个ACL中相同bit位上的数值,从其它各个ACL中确定所述ACL相匹配的匹配ACL,所述ACL与所述匹配ACL中相同bit位上的数值相同的数量为N,N大于所述ACL与其它ACL中相同bit位上的数值相同的数量。
可选的,所述依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL包括:
针对每一组对应的head中的每一gap,若所述gap涵盖其它组中的ACL,则调整所述head对应的ACL组;其中,调整后的所述ACL组至少包括所述gap涵盖的其它组中的ACL;
将调整后的各组中的ACL,确定为待下发至指定存储介质的各组中的ACL。
可选的,所述方法还包括:
当接收到ACL时,若发现所述ACL与至少一个ACL组对应的head匹配时,则将所述ACL加入到匹配的head对应的ACL组中。
可选的,所述方法还包括:
接收到删除ACL的指令时,若发现所述指令中的ACL与至少一个ACL组对应的head匹配时,则将所述ACL从匹配的head对应的ACL组中删除。
本申请还提供一种访问控制列表ACL压缩装置,应用于包含三态内容寻址TCAM芯片的节点,所述装置包括:
分组单元:用于将待压缩的所有ACL进行分组,每一组中任一ACL与同组中其它ACL的相似度大于该ACL与其它组中任一ACL的相似度;
确定head单元:用于针对每一ACL组,确定所述ACL组对应的head,所述head是基于所述ACL组中所有ACL确定的,其至少涵盖所述ACL组中所有ACL、以及至少一个gap;所述gap与所述ACL组中所有ACL不同,但具有所述ACL组中所有ACL表的共性;所述共性通过相同bit位上的数值不同表示;
记录单元:用于依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL,并将各组对应的head记录至所述TCAM芯片。
可选的,所述分组单元用于确定所述ACL的相似度的方法包括:
通过二进制表示每一ACL;
针对每一ACL,依据所述ACL与其它各个ACL中相同bit位上的数值,从其它各个ACL中确定所述ACL相匹配的匹配ACL,所述ACL与所述匹配ACL中相同bit位上的数值相同的数量为N,N大于所述ACL与其它ACL中相同bit位上的数值相同的数量。
可选的,所述记录单元依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL包括:
针对每一组对应的head中的每一gap,若所述gap涵盖其它组中的ACL,则调整所述head对应的ACL组;其中,调整后的所述ACL组至少包括所述gap涵盖的其它组中的ACL;
将调整后的各组中的ACL,确定为待下发至指定存储介质的各组中的ACL。
可选的,所述装置还包括:
增加单元:用于在接收到ACL时,若发现所述ACL与至少一个ACL组对应的head匹配时,则将所述ACL加入到匹配的head对应的ACL组中。
可选的,所述装置还包括:
删除单元:用于接收到删除ACL的指令时,若发现所述指令中的ACL与至少一个ACL组对应的head匹配时,则将所述ACL从匹配的head对应的ACL组中删除。
由以上描述可以看出,本实施例中,先将节点上的所有ACL按相似度进行分组,针对每一ACL组确定对应的head和gap,并将各组对应的head记录至所述TCAM芯片,使得TCAM芯片中只需要存储ACL组对应的head,使TCAM芯片中被占用的存储空间更小。
进一步的,通过gap确定待下发至指定存储介质的各组中的ACL,使得存在交集的head间通过ACL复制消除误差,在保证ACL查找正确性的基础上提高ACL压缩比,提升TCAM的ACL存储容量。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本申请现有技术中的基于TCAM的报文转发架构图;
图2为本申请实施例的方法流程图;
图3为本申请实施例的装置结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种器件,但这些信息不应限于这些术语。这些术语仅用来将同一类型的器件彼此区分开。例如,在不脱离本申请范围的情况下,第一器件也可以被称为第二器件,类似地,第二器件也可以被称为第一器件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本领域技术人员更好地理解本申请实施例提供的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
首先对本申请中涉及的一些专业名词进行解释:
ACL(Access Control Lists)为访问控制列表,是应用在接口的指令列表。这些指令列表用来告诉路由器哪些可以收、哪些数据包需要拒绝。至于数据包是被接收还是拒绝,可以由类似于源地址、目的地址、等的特定指示条件来决定。
TCAM (ternary content addressable memory)是一种三态内容寻址,主要用于快速查找ACL、路由等表项。
RAM(Random Access Memory)为随机存取存储器,也叫主存,是与直接交换数据的内部存储器。它可以随时读写,通常作为或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息,可以用来暂时存储程序、数据和中间结果。
DRAM(Dynamic Random Access Memory)为动态随机存取存储器,是一种,原理是利用内存储的多寡来代表一个(bit)是1还是0。
在本实施例中,可以选择RAM或者DRAM用来存储各第一ACL。
如图1所示,是一个典型的基于TCAM的报文转发架构,CPU运行软件构成控制平面,报文处理引擎和TCAM引擎,即TCAM芯片一起构成数据平面。控制平面下发ACL给TCAM芯片,当报文进入设备时,由报文处理引擎进行处理。而当涉及查找ACL时,由于TCAM芯片中存储了大量的ACL,因此需要报文处理引擎将查找的ACL的key传给TCAM芯片,再根据TCAM芯片返回的结果完成报文处理,并处理后的报文转发出去。
然而随着各种用户业务的发展,设备需要支持的ACL规则条目越来越多,这给现在基于TCAM芯片查ACL的模型带来了挑战。因为TCAM芯片的三态存储介质容量非常有限,已经难以支撑日益增长的业务需求,所以ACL压缩技术就应运而生。
现有的ACL压缩技术的原理为:把多个ACL位置和数值都相同bit位提取出来,将不同的bit位用*表示,以生成多个ACL的head。只把head下发到TCAM,从而达到用同样大小的TCAM三态存储空间存储更多ACL规则的效果。而多个ACL组成该head的ACL组,并将ACL表存储在RAM或者DRAM中。相应的,TCAM查找得到的不再是最终结果,而是一个对应着ACL组的head。对RAM或者DRAM中的ACL组再做一次查找得到最终结果。本方案中,因为每个ACL组规模很小,实现快速查找相对简单,NP/FPGA均可实现,对总体查表性能影响有限。例如,当提取head压缩比为64时,一个head对应的ACL组可以记录64条ACL,查这样一个规模的ACL组用可编程硬件平台实现是没有难度的。通过用RAM/DRAM空间换取TCAM芯片的三态存储空间,兼顾性能的同时消除了大规模ACL存储的瓶颈。
示例性的,有四条ACL分别为:111000101、111001101、111010101、111011101时;可以压缩成1110**101一条head。将该head存储在TCAM的存储空间存储中,而这4条ACL则作为该head对应的ACL组记录到RAM/DRAM空间中,从而使得四条ACL在TCAM芯片中只占用一条存储空间。
然而如果当前只有三条ACL:111000101、111010101、111011101;如果按照现有的二进制ACL压缩方法,则会生成1110*0101和111011101两条head,三条变两条,压缩效果不明显,因此如何提高压缩比是当前ACL压缩技术面临的一个难点。
为了解决上述问题,发明人对本申请进行了第一次构思,具体方案如下:
当多条ACL的共性bit(不相等但都是0/1精确值)较多时,先近似扩展成完全二叉树处理。
例如,假设现有6条ACL111000101、111010101、111011101、100001101、101001101、110001101,其中111000101、111010101、111011101的第五位和第六位bit为共性bit,将该共性bit近似成**,生成的head1为1110**101,该head1覆盖了上述3条ACL。而另外3条ACL100001101、101001101、110001101的第二位和第三位bit为共性bit,将该共性bit近似成**,生成的head2为1**001101,该head2覆盖了上述另外3条ACL。
如下表格所示:
然而1110**101虽然包含了111000101、111010101、111011101这3条ACL,但是也包含了111001101这一条现有ACL组中不存在的ACL,并且1**001101也包含了111001101这一条现有ACL中不存在的ACL。因此,此时如果新加入一条ACL 111001101,则head1和head2都会匹配。由于TCAM的实现,当一个ACL命中多个表项时,默认返回存储地址最靠前的那一条。所以,如果head1存储位置靠前,而111001101需要加入head2对应的ACL时,则会导致111001101这一条ACL无法命中。类似的,如果head2存储位置靠前而111001101需要加入head1对应的ACL时,也会导致无法命中。
为了解决上述问题,本申请对上述方法进行改进,获得一种保证ACL查找正确性的基础上提升ACL压缩比的ACL压缩方法,以节约TCAM芯片的存储资源。
参见图2,为本发明实施例示出的一种访问控制列表ACL压缩方法的流程图,该方法应用于包含三态内容寻址TCAM芯片的节点。
如图2所示,该流程可包括以下步骤:
步骤S201,将待压缩的所有ACL进行分组,每一组中任一ACL与同组中其它ACL的相似度大于该ACL与其它组中任一ACL的相似度。
在本实施例中,将相似度高的多个ACL划分为同一ACL组,还是以6条ACL111000101、111010101、111011101、100001101、101001101、110001101为例,在本实施例中,111000101、111010101、111011101这3条ACL的第1-4、7-9位的bit值相同,将其划分为同一ACL组,记录为第一ACL组。该组中任一ACL与100001101、101001101、110001101这3条ACL相似度都小于组内其他两条ACL。
相同的,另外3条相似度高的ACL100001101、101001101、110001101组成另一个ACL组,记录为第二ACL组。该组中各ACL的第1、4-9位的bit值相同。相似度确定方法在下文中说明,此处不再进行赘述。
需要说明的是,本实施例中的第一ACL组、第二ACL组只是为便于区分而进行的命名,并非用于限定。
步骤S202,针对每一ACL组,确定所述ACL组对应的head。
在本实施例中,ACL组对应的head是基于所述ACL组中所有ACL确定的,其至少涵盖所述ACL组中所有ACL、以及至少一个gap。该gap与所述ACL组中所有ACL不同,但具有所述ACL组中所有ACL的共性。该共性通过相同bit位上的数值不同表示。
以步骤S201中已经分组好的两个ACL组为例,第一ACL组中111000101、111010101、111011101这3条ACL的第1-4、7-9位的bit值相同,其共性bit为第5位和第6位,将该共性bit近似成**,生成的head1为1110**101。此时通过ACL组中各ACL确定的head1已经涵盖组中所有ACL,并且涵盖了组中不存在的ACL111001101,则该不存在的ACL111001101被确定为head1的gap。该gap与组内其他3条ACL第1-4、7-9位的bit值相同。
相同的,第二ACL组中各ACL的第1、4-9位的bit值相同,其共性bit为第2位和第3位,将该共性bit近似成**,生成的head2为1**001101。Head2已经涵盖组中所有ACL,并且涵盖了组中不存在的ACL111001101,则该不存在的ACL111001101也被确定为head2的gap。
如下表格所示:
需要说明的是,当head对应的ACL组中的ACL已经包含了该head可以覆盖的全部ACL,例如head1110**101对应的ACL组为111000101、111001101、111010101、111011101时,此时该head对应gap并不会存在。而对于该情况,通过现有的二进制ACL压缩方法进行压缩即可。本申请不对其进行限制。
步骤S203,依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL,并将各组对应的head记录至所述TCAM芯片。
在本实施例中,用于存放各head对应的ACL的指定存储介质可以是RAM和/或DRAM。而TCAM芯片只需存储各ACL组对应的head,以节约TCAM芯片的存储资源。
在另外的实施例中,依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL包括:
针对每一组对应的head中的每一gap,若所述gap涵盖其它组中的ACL,则调整所述head对应的ACL组;其中,调整后的所述ACL组至少包括所述gap涵盖的其它组中的ACL;
将调整后的各组中的ACL,确定为待下发至指定存储介质的各组中的ACL。
在本实施例中,可以对存在交集的head进行对比,对比方法为通过head1的gap去匹配head2对应的ACL组,同时用head2的gap去匹配head1对应的ACL组,标记出存在交集也即同时属于两个head的ACL,并将同时属于两个head的ACL复制一份到另一个head所对应的ACL组。
在本实施例中,存在交集是指两个head的多个相同位置的bit值相同,而对于不同的部分,同样的bit位置,在head1中为0/1精确值,在head2中为*,或者反过来head1中为*,而head2中为0/1精确值。例如,head1为00000***, head2为***00000,head3为11100***,则head1和head2为存在交集的head,head2和head1、head3为存在交集的head,而head1和head3由于第4、5bit位的值并不相同,并且head1的值为0,而head3的值为1,因此并不是存在交集的head。
以下表为例,head1同时涵盖11100*101,而11100*101并不在head1对应的ACL组中,因此在本实施例中,11100*101为head1的gap。当确定与head1存在交集的head2后,将gap11100*101与head2对应的第一ACL组中的ACL进行对比,对比结果为11100*101包含head2对应的第一ACL组中的111001101,则将111001101加入head1对应的第一ACL组。
通过上述方法,将原本在head2对应的ACL组中的ACL加入与head2存在交集的head1中,使当一个ACL命中多个表项时,即111001101命中多个head时,由于两个head的子表,即对应的第一ACL组中都存在该ACL,并不会出现ACL无法命中的问题。这保证了ACL查找的正确性,并且提升ACL压缩比。
而将gap和其他head对应的ACL组进行对比时,若该gap中不涵盖其他ACL组中的ACL,则不需要进行处理。
至此,完成图2所示流程。
通过图2所示流程可以看出,本发明实施例中,先将节点上的所有ACL按相似度进行分组,针对每一ACL组确定对应的head和gap,并将各组对应的head记录至所述TCAM芯片,使得TCAM芯片中只需要存储ACL组对应的head,使TCAM芯片中被占用的存储空间更小。并且通过gap确定待下发至指定存储介质的各组中的ACL,使得存在交集的head间通过ACL复制消除误差,使得当一个ACL命中多个head时,并不会因为head的存储位置导致该ACL无法命中,实现了在保证ACL查找正确性的基础上提高ACL压缩比,提升TCAM的ACL存储容量。
在上述实施例中,确定ACL的相似度的方法包括:
通过二进制表示每一ACL;
针对每一ACL,依据该ACL与其它各个ACL中相同bit位上的数值,从其它各个ACL中确定该ACL相匹配的匹配ACL,所述ACL与所述匹配ACL中相同bit位上的数值相同的数量为N,N大于所述ACL与其它ACL中相同bit位上的数值相同的数量。
在本实施例中,以当前要压缩的ACL111000101、111010101、111011101、100001101、101001101、110001101为这六条为例,111000101、111010101、111011101这3条ACL之间第1-4位、7-9位的bit值相同,所以相同bit位上的数值相同的数量为7,而111000101与其他3条ACL相同bit位上数值并没有这么多,因此,通过相同bit位上的数值相同的数量来确定ACL之间的相似度,将相同bit位上的数值相同的数量最多的多条ACL划分为同一ACL组。
在另一个实施例中,上述方法还包括:
当接收到ACL时,若发现所述ACL与至少一个ACL组对应的head匹配时,则将所述ACL加入到匹配的head对应的ACL组中。
在本实施例中,接收到ACL为随着各种用户业务的发展,该节点需要新增支持的ACL。举个具体的例子,当节点当前支持的ACL如下表时:
若接收到的ACL为111001101,则该ACL匹配的head为head1和head2,需要将该第三ACL同时加入head1和head2的ACL组。而当接收到的ACL为111000101时,则该ACL匹配的目标head只有head1,只需将其加入head1对应的子表中。
需要说明的是,当通过接收到的ACL查找到匹配的head之后,还可以在该head对应的ACL组中查找是否存在上述接收到的ACL,当不存在时,在将其加入到该head对应的ACL组中,以避免该ACL组中存在重复的ACL。
在另一个实施例中,上述方法还包括:
接收到删除ACL的指令时,若发现该指令中的ACL与至少一个ACL组对应的head匹配时,则将该ACL从匹配的head对应的ACL组中删除。
在本实施例中,随着各种用户业务的发展,该节点上原本支持的ACL不再需要支持,此时需要将不再支持的ACL删除,以释放该ACL占用的空间。举个具体的例子,当节点当前支持的ACL如下表时:
当不再需要支持ACL为111001101时,该ACL匹配的head为head1和head2,需要将该ACL同时从head1和head2的ACL组中删除。而当不再需要支持的ACL为111000101时,则该ACL匹配的head只有head1,只需将其从head1对应的ACL组中删除。
在上述实施例中,当节点当前存储的ACL需要增加或者删除时,先确定匹配的head,再对该head对应的ACL组中的ACL进行增加或者删除。使得节点在提升了TCAM的ACL存储容量的基础上,还可以对节点支持的ACL进行灵活的维护。
下面通过一个实际的实施例对图2的流程进行说明:
假设节点上现有8条ACL如下:
1.1.1.8 *.*.*.*、1.1.1.9 *.*.*.*、1.1.1.12 *.*.*.*、1.1.1.14*.*.*.*、*.*.*.* 1.1.1.8、*.*.*.* 1.1.1.9、*.*.*.* 1.1.1.12、*.*.*.* 1.1.1.14。
步骤1,按照各ACL的相似度,即相同bit位上的数值相同的数量,将其分成多个ACL组:
步骤2,提取各ACL组的head,将head存储在TCAM中,并确定各head对应的gap。
步骤3,针对每一组对应的head中的每一gap,与其他ACL组中的ACL进行对比。若该gap涵盖其它组中的ACL,则调整所述head对应的ACL组。对比结果为:head1的gap包含head2对应的ACL组中的全部ACL,并且head2的gap包含head1对应ACL组中的全部ACL,所以两个head对应的ACL组都要将组中的全部ACL复制给对方,复制后的结果为:
在本实施例中,由于ACL组是存储在RAM/DRAM中,虽然最终RAM/DRAM中实际存储的ACL数目翻倍,但是TCAM中存储的head始终只有2条,使TCAM被占用的存储空间只有压缩前的25%。而head1和head2这两个存在交集的head间通过ACL复制消除误差,使得当一个ACL命中多个head时,并不会因为head的存储位置导致该ACL无法命中,实现了在保证ACL查找正确性的基础上提高ACL压缩比,提升TCAM的ACL存储容量。
至此,完成本发明方法实施例的描述。
以上对本发明实施例提供的方法进行了描述,下面对本发明实施例提供的装置进行描述:
参见图3所示,本申请还提供了一种ACL压缩装置,应用于包含TCAM芯片的节点,其特征在于,所述装置包括:
分组单元301:用于将待压缩的所有ACL进行分组,每一组中任一ACL与同组中其它ACL的相似度大于该ACL与其它组中任一ACL的相似度;
确定head单元302:用于针对每一ACL组,确定所述ACL组对应的head,所述head是基于所述ACL组中所有ACL确定的,其至少涵盖所述ACL组中所有ACL、以及至少一个gap;所述gap与所述ACL组中所有ACL不同,但具有所述ACL组中所有ACL表的共性;所述共性通过相同bit位上的数值不同表示;
记录单元303:用于依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL,并将各组对应的head记录至所述TCAM芯片。
可选的,所述分组单元301用于确定所述ACL的相似度的方法包括:
通过二进制表示每一ACL;
针对每一ACL,依据所述ACL与其它各个ACL中相同bit位上的数值,从其它各个ACL中确定所述ACL相匹配的匹配ACL,所述ACL与所述匹配ACL中相同bit位上的数值相同的数量为N,N大于所述ACL与其它ACL中相同bit位上的数值相同的数量。
可选的,所述记录单元303依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL包括:
针对每一组对应的head中的每一gap,若所述gap涵盖其它组中的ACL,则调整所述head对应的ACL组;其中,调整后的所述ACL组至少包括所述gap涵盖的其它组中的ACL;
将调整后的各组中的ACL,确定为待下发至指定存储介质的各组中的ACL。
可选的,所述装置还包括:
增加单元304:用于在接收到ACL时,若发现所述ACL与至少一个ACL组对应的head匹配时,则将所述ACL加入到匹配的head对应的ACL组中。
可选的,所述装置还包括:
删除单元305:用于接收到删除ACL的指令时,若发现所述指令中的ACL与至少一个ACL组对应的head匹配时,则将所述ACL从匹配的head对应的ACL组中删除。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法。
示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种访问控制列表ACL压缩方法,应用于包含三态内容寻址TCAM芯片的节点,其特征在于,所述方法包括:
将待压缩的所有ACL进行分组,每一组中任一ACL与同组中其它ACL的相似度大于该ACL与其它组中任一ACL的相似度;
针对每一ACL组,确定所述ACL组对应的head,所述head是基于所述ACL组中所有ACL确定的,其至少涵盖所述ACL组中所有ACL、以及至少一个gap;所述gap与所述ACL组中所有ACL不同,但具有所述ACL组中所有ACL的共性;所述共性通过相同bit位上的数值不同表示;
依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL,并将各组对应的head记录至所述TCAM芯片。
2.根据权利要求1所述的方法,其特征在于,确定所述ACL的相似度的方法包括:
通过二进制表示每一ACL;
针对每一ACL,依据所述ACL与其它各个ACL中相同bit位上的数值,从其它各个ACL中确定所述ACL相匹配的匹配ACL,所述ACL与所述匹配ACL中相同bit位上的数值相同的数量为N,N大于所述ACL与其它ACL中相同bit位上的数值相同的数量。
3.根据权利要求1所述的方法,其特征在于,所述依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL包括:
针对每一组对应的head中的每一gap,若所述gap涵盖其它组中的ACL,则调整所述head对应的ACL组;其中,调整后的所述ACL组至少包括所述gap涵盖的其它组中的ACL;
将调整后的各组中的ACL,确定为待下发至指定存储介质的各组中的ACL。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到ACL时,若发现所述ACL与至少一个ACL组对应的head匹配时,则将所述ACL加入到匹配的head对应的ACL组中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收到删除ACL的指令时,若发现所述指令中的ACL与至少一个ACL组对应的head匹配时,则将所述ACL从匹配的head对应的ACL组中删除。
6.一种访问控制列表ACL压缩装置,应用于包含三态内容寻址TCAM芯片的节点,其特征在于,所述装置包括:
分组单元:用于将待压缩的所有ACL进行分组,每一组中任一ACL与同组中其它ACL的相似度大于该ACL与其它组中任一ACL的相似度;
确定head单元:用于针对每一ACL组,确定所述ACL组对应的head,所述head是基于所述ACL组中所有ACL确定的,其至少涵盖所述ACL组中所有ACL、以及至少一个gap;所述gap与所述ACL组中所有ACL不同,但具有所述ACL组中所有ACL表的共性;所述共性通过相同bit位上的数值不同表示;
记录单元:用于依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL,并将各组对应的head记录至所述TCAM芯片。
7.根据权利要求6所述的装置,其特征在于,所述分组单元用于确定所述ACL的相似度的方法包括:
通过二进制表示每一ACL;
针对每一ACL,依据所述ACL与其它各个ACL中相同bit位上的数值,从其它各个ACL中确定所述ACL相匹配的匹配ACL,所述ACL与所述匹配ACL中相同bit位上的数值相同的数量为N,N大于所述ACL与其它ACL中相同bit位上的数值相同的数量。
8.根据权利要求6所述的装置,其特征在于,所述记录单元依据各组对应的head中的gap,确定待下发至指定存储介质的各组中的ACL包括:
针对每一组对应的head中的每一gap,若所述gap涵盖其它组中的ACL,则调整所述head对应的ACL组;其中,调整后的所述ACL组至少包括所述gap涵盖的其它组中的ACL;
将调整后的各组中的ACL,确定为待下发至指定存储介质的各组中的ACL。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
增加单元:用于在接收到ACL时,若发现所述ACL与至少一个ACL组对应的head匹配时,则将所述ACL加入到匹配的head对应的ACL组中。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
删除单元:用于接收到删除ACL的指令时,若发现所述指令中的ACL与至少一个ACL组对应的head匹配时,则将所述ACL从匹配的head对应的ACL组中删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211647288.2A CN115633097B (zh) | 2022-12-21 | 2022-12-21 | 一种访问控制列表acl压缩方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211647288.2A CN115633097B (zh) | 2022-12-21 | 2022-12-21 | 一种访问控制列表acl压缩方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115633097A true CN115633097A (zh) | 2023-01-20 |
CN115633097B CN115633097B (zh) | 2023-04-28 |
Family
ID=84910064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211647288.2A Active CN115633097B (zh) | 2022-12-21 | 2022-12-21 | 一种访问控制列表acl压缩方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115633097B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101146027A (zh) * | 2006-09-14 | 2008-03-19 | 中兴通讯股份有限公司 | 基于访问控制列表分类的方法 |
CN101411136A (zh) * | 2006-04-03 | 2009-04-15 | 极进网络股份有限公司 | 利用超过cam关键字长度的表索引执行查表操作的方法 |
CN101651628A (zh) * | 2009-09-17 | 2010-02-17 | 杭州华三通信技术有限公司 | 一种三状态内容可寻址存储器实现方法及装置 |
CN102316040A (zh) * | 2011-09-09 | 2012-01-11 | 中兴通讯股份有限公司 | 一种访问控制列表查找的方法及数据流分类装置 |
CN106411872A (zh) * | 2016-09-21 | 2017-02-15 | 杭州迪普科技有限公司 | 一种基于数据报文分类的报文压缩的方法和装置 |
CN107967219A (zh) * | 2017-11-27 | 2018-04-27 | 北京理工大学 | 一种基于tcam的大规模字符串高速查找方法 |
US20180219801A1 (en) * | 2017-01-30 | 2018-08-02 | Cavium, Inc. | Apparatus and method for scalable and flexible wildcard matching in a network switch |
US10318587B1 (en) * | 2015-09-20 | 2019-06-11 | Barefoot Networks, Inc. | Algorithmic TCAM based ternary lookup |
WO2020107484A1 (zh) * | 2018-11-30 | 2020-06-04 | 华为技术有限公司 | 一种acl的规则分类方法、查找方法和装置 |
CN111817978A (zh) * | 2019-04-12 | 2020-10-23 | 华为技术有限公司 | 一种流分类方法及装置 |
CN111966284A (zh) * | 2020-07-16 | 2020-11-20 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找架构及方法 |
CN112073357A (zh) * | 2019-06-10 | 2020-12-11 | 中兴通讯股份有限公司 | 一种访问控制列表下发方法及装置 |
CN114095215A (zh) * | 2021-11-01 | 2022-02-25 | 锐捷网络股份有限公司 | 处理访问控制列表的方法、装置、设备及介质 |
-
2022
- 2022-12-21 CN CN202211647288.2A patent/CN115633097B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101411136A (zh) * | 2006-04-03 | 2009-04-15 | 极进网络股份有限公司 | 利用超过cam关键字长度的表索引执行查表操作的方法 |
CN101146027A (zh) * | 2006-09-14 | 2008-03-19 | 中兴通讯股份有限公司 | 基于访问控制列表分类的方法 |
CN101651628A (zh) * | 2009-09-17 | 2010-02-17 | 杭州华三通信技术有限公司 | 一种三状态内容可寻址存储器实现方法及装置 |
CN102316040A (zh) * | 2011-09-09 | 2012-01-11 | 中兴通讯股份有限公司 | 一种访问控制列表查找的方法及数据流分类装置 |
US10318587B1 (en) * | 2015-09-20 | 2019-06-11 | Barefoot Networks, Inc. | Algorithmic TCAM based ternary lookup |
CN106411872A (zh) * | 2016-09-21 | 2017-02-15 | 杭州迪普科技有限公司 | 一种基于数据报文分类的报文压缩的方法和装置 |
US20180219801A1 (en) * | 2017-01-30 | 2018-08-02 | Cavium, Inc. | Apparatus and method for scalable and flexible wildcard matching in a network switch |
CN107967219A (zh) * | 2017-11-27 | 2018-04-27 | 北京理工大学 | 一种基于tcam的大规模字符串高速查找方法 |
WO2020107484A1 (zh) * | 2018-11-30 | 2020-06-04 | 华为技术有限公司 | 一种acl的规则分类方法、查找方法和装置 |
CN112425131A (zh) * | 2018-11-30 | 2021-02-26 | 华为技术有限公司 | 一种acl 的规则分类方法、查找方法和装置 |
CN111817978A (zh) * | 2019-04-12 | 2020-10-23 | 华为技术有限公司 | 一种流分类方法及装置 |
CN112073357A (zh) * | 2019-06-10 | 2020-12-11 | 中兴通讯股份有限公司 | 一种访问控制列表下发方法及装置 |
CN111966284A (zh) * | 2020-07-16 | 2020-11-20 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找架构及方法 |
CN114095215A (zh) * | 2021-11-01 | 2022-02-25 | 锐捷网络股份有限公司 | 处理访问控制列表的方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115633097B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102099544B1 (ko) | 스트리밍 데이터의 분배 처리 방법 및 디바이스 | |
CN110083601B (zh) | 面向键值存储系统的索引树构建方法及系统 | |
US10230643B2 (en) | Full flow retrieval optimized packet capture | |
JP5996088B2 (ja) | 暗号ハッシュ・データベース | |
CN107273042B (zh) | 重复删除dram系统算法架构的存储器模块及方法 | |
US20160342662A1 (en) | Multi-stage tcam search | |
US7680806B2 (en) | Reducing overflow of hash table entries | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
US7565482B1 (en) | Method and device for scalable multiple match extraction from search data | |
CN107273397B (zh) | 用于有效的存储器在线重复删除应用的虚拟桶多哈希表 | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
CN108255912B (zh) | 一种表项数据存储、查询方法及其装置 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN113377689B (zh) | 一种路由表项查找、存储方法及网络芯片 | |
CN109325022B (zh) | 一种数据处理方法和装置 | |
CN107896194B (zh) | 一种路由查找方法、装置和存储介质 | |
CN115633097B (zh) | 一种访问控制列表acl压缩方法及装置 | |
JP2006246488A (ja) | ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム | |
US9703484B2 (en) | Memory with compressed key | |
US10795580B2 (en) | Content addressable memory system | |
US11899985B1 (en) | Virtual modules in TCAM | |
US20160105363A1 (en) | Memory system for multiple clients | |
CN115563116A (zh) | 一种数据库表扫描方法、装置以及设备 | |
CN114691039A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113805787A (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 |