CN112425131B - 一种acl的规则分类方法、查找方法和装置 - Google Patents
一种acl的规则分类方法、查找方法和装置 Download PDFInfo
- Publication number
- CN112425131B CN112425131B CN201880095689.7A CN201880095689A CN112425131B CN 112425131 B CN112425131 B CN 112425131B CN 201880095689 A CN201880095689 A CN 201880095689A CN 112425131 B CN112425131 B CN 112425131B
- Authority
- CN
- China
- Prior art keywords
- chip
- rule
- bit
- dictionary tree
- rules
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种访问控制列表ACL的规则分类方法、查找方法和装置。其中所述ACL规则分类方法包括:网络设备获取N条规则,根据所述N条规则构建字典树,将所述第一字典树按照从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级;将所述M个层级的信息存储在至少一个随机存取存储单元中,本方法由于对字典树分层后只需保存字典树上各个节点的比特位编号,相比于原来存储N条规则而言,占用的存储空间减小,因此可以通过占用面积较小的随机存取存储单元来保存字典树中各个层级的信息,并利用索引编号来只指示N条规则,从而避免使用占用面积较大的TCAM来存储规则,节约了芯片的成本和功耗。
Description
技术领域
本申请涉及存储领域,尤其是涉及一种访问控制列表ACL的规则分类方法、查找方法和装置。
背景技术
路由设备具有对一些特殊数据包进行处理的功能,以达到控制数据流的目的。比如在防火墙中利用访问控制列表(access control list,ACL)可以允许一些数据包通过,也可以拦截一些数据包,例如将这些拦截的数据包丢弃;在网络安全协议(InternetProtocol security,IPSec)中应用ACL可以将符合规则的数据包进行加密处理,而将其它不符合规则的数据包正常转发。路由设备通过配置一系列的规则来选择数据包,其中选择的规则可以通过ACL确定。利用定义ACL可以实现对数据包的有效分流,并且针对ACL的特点,设计研发了一系列算法,例如华为公司设计的自适应决策位压缩(adaptive compressbit choice ACBC)算法来解决各种不同应用场景对ACL查找性能、容量需求的问题。
目前大部分ACL解决方案都采用三元物可寻址存储(ternary contentaddressable memory,TCAM)来实现,包括芯片上部集成TCAM和通过高速串行接口ILA(Interlaken Look-Aside)接口外挂商用TCAM芯片。如图1所示,传统方案采用内部集成TCAM和外挂商用TCAM芯片组合的方式来实现对ACL规则的存储功能,其中,为了实现片上小容量ACL规则查找和片外大容量ACL规则查找,芯片需要额外增加一个ILA接口来实现和外挂TCAM芯片的对接。
由于TCAM是一种昂贵的资源,并且TCAM占用芯片的面积较大,比如存储一个TCAM的面积相当于五、六条随机存储记忆体(random access memory,RAM),进而直接导致芯片的成本升高以及整机电路板设计成本提高,另外TCAM消耗的功耗大,导致整机散热成本和能耗成本上升,无法满足大容量存储的要求。
发明内容
本申请提供了一种ACL的规则分类方法和装置,用于解决TCAM存储ACL规则占用芯片的面积和功耗大、成本高的问题。
为解决上述问题,本申请提供了以下技术方案:
第一方面,本申请提供了一种访问控制列表ACL的规则分类方法,应用于对芯片上部ACL规则的划分,该方法可以由设备的处理器来执行,所述方法包括以下步骤:获取N条规则,N为正整数且N≥2,所述N条规则中的每条规则均由二进制表示的1或0组成,并且所述N条规则的长度均相同;根据所述N条规则构建字典树,将所述字典树按照从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥1;将所述M个层级的信息存储在至少一个随机存取存储单元中;
其中,所述N条规则可以是N条第一规则,所述字典树可以是片上字典树。
所述字典树包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条规则。
本方面提供的方法,先将N条规则构建成字典树,所述字典树的根节点和至少一个中间节点上设置有比特位的编号,然后再对该字典树进行分层和存储,由于对字典树分层后只需保存字典树上各个节点的比特位编号,相比于原来存储N条规则而言,占用的存储空间减小,因此可以通过占用面积较小的至少一个随机存取存储单元来保存字典树中各个层级的信息,并利用索引编号来只指示N条规则,从而避免了使用占用面积较大的TCAM来存储规则,节约了芯片的成本和功耗。
可选的,所述随机存取存储单元为随机存取存储器RAM。进一步地,所述RAM包括静态随机存储器SRAM和动态随机存储器DRAM,此外,所述随机存取存储单元还可以为其他的存储记忆体,本申请对此不予限制。
结合第一方面,在第一方面的一种可能的实现中,根据所述N条规则构建字典树包括:按照第一条件确定至少一个所述比特位的编号;将所述至少一个比特位的编号存储在所述字典树的至少一个节点上,所述至少一个节点包括所述根节点和所述至少一个中间节点;将至少一条规则的索引编号存储在每条分支的尾节点上。
可选的,所述第一条件为:所述至少一个比特位的编号中的第一比特位将所述N条规则分为第一规则集合和第二规则集合,其中所述第一规则集合中的第一比特位上的值为第一取值,所述第二规则集合中的第一比特位上的值为第二取值;例如第一比特位将N条规则按照第一取值“1”和第二取值“0”分成第一规则集合和第二规则集合;
如果所述第一规则集合和所述第二规则集合中的规则的数量均大于第一阈值,则继续对所述第一规则集合和所述第二规则集合按照第二比特位或第三比特位进行划分,直到每个划分后的规则集合中剩余的规则数量小于等于第一阈值时为止,所述第一阈值由所述至少一个随机存取存储单元的数据位宽决定。
本实现方式中,按照每个规则的比特位的编号将N条规则划分成不同的集合,进而可以通过二叉树的形式表示在字典树中,便于对N条规则进行分类和查找。
可选的,结合第一方面,在第一方面的另一种可能的实现中,组成所述N条规则中的二进制1或0中至少一个1或0用掩码*表示,即每条规则中的字符“1”或者“0”可以用掩码“*”来表示。本实现方式中,利用掩码表示二进制中的1或0可以灵活地表达多种不同的规则,增加了存储N条规则的灵活性。
结合第一方面,在第一方面的又一种可能的实现中,将所述M个层级的信息存储在至少一个随机存取存储单元中包括:将所述M个层级的信息存储在M个RAM中,M≥1。
结合第一方面,在第一方面的又一种可能的实现中,将所述字典树从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级包括:根据所述至少一个随机存取存储单元的数据位宽对所述字典树划分M个层级;其中所述M个层级中的第一层级包括1个根节点和与所述根节点相连接的P个中间节点,所述M个层级中的第二层级包括的中间节点的数量不超过P+1个,P为正整数且P≥1。
可选的,P=6。此外,P还可以取其他值,由所述数据位宽来确定,本实施例不予限制。
可选的,所述第一层级或所述第二层级中还可以包括至少一个尾节点,所述尾节点上设置有索引编号。
结合第一方面,在第一方面的又一种可能的实现中,所述M个层级的信息包括第一层级的信息和第二层级的信息;所述第一层级的信息包括所述根节点的比特位编号和所述P个中间节点的比特位编号,所述第二层级的信息包括不超过P+1个中间节点的比特位编号。
可选的,所述M个层级中还可以包括第三层级、第四层级或者更多的层级,具体的层级数量由所述字典树的结构来确定。
结合第一方面,在第一方面的又一种可能的实现中,所述方法还包括:将所述字典树的所有尾节点上的索引编号所指示的至少一条规则存储在X个RAM中,X为正整数且X≥1,即将N条第一规则存储在X个存储存取存储单元。其中,所述X个存储存取存储单元可以是前述第一方面的至少一个存储存取存储单元以外的存储单元;还可以是前述第一方面的至少一个存储存取存储单元中的存储单元,本实施例对此不予限制。
结合第一方面,在第一方面的又一种可能的实现中,在前述第一方面的所述字典树被存储在芯片上时,可称为片上字典树;存储在所述芯片之外的其他字典树称为片外字典树;所述方法还包括:将所述X个随机存取存储单元中的一个或多个用于存储所述片外字典树,其中,构建所述片外字典树的规则可以与所述片上字典树的N条规则相同,也可以不同。
可选的,所述方法还包括:将所述X个随机存取存储单元中的一个或多个用于存储所述片外字典树所对应的至少一条ACL规则。
结合第一方面,在第一方面的又一种可能的实现中,所述方法由处理器芯片中的核来执行,所述处理器芯片包括所述核以及X个片上RAM,所述处理器芯片与Y个片外RAM耦合,所述方法还包括:将所述至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于所述Y个片外RAM中;对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
结合第一方面,在第一方面的又一种可能的实现中,所述方法还包括:选择所述X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;或者,选择所述Y个片外RAM中的至少一个,存储所述片上字典树的至少一个层级的信息。
本实现方式中,将存储片上规则的至少一个RAM用于存储片外字典树或片外规则,使得片上任意一层级存储单元与片外字典树之间可以动态切换,从而实现了芯片片上和片外存储单元的资源共享,提高了资源配置的灵活性,从而可以满足不同的产品容量需求。
第二方面,本申请还提供了一种ACL的规则查找方法,应用于第一方面中构建的字典树,所述方法包括以下步骤:获取报文信息,所述报文信息的内容可以通过二进制表示的1或0表示;将所述报文信息的内容按照字典树上的比特位编号逐一查找,确定与所述报文信息内容相匹配的规则;
其中所述字典树由N条规则构建,N为正整数且N≥2,所述字典树包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条规则。
本方面提供的方法,利用字典树的特点,所述字典树中的各个节点上设置有比特位编号,按照字典树上的比特位编号逐一查找当前报文信息中的各个比特,最后通过字典树上尾节点的索引编号的指示来查找到与所述报文信息内容相匹配的规则,本方法实现了对由N条规则组成的字典树的快速查找。
可选的,所述报文信息包括以下一种或多种组合:地址信息、报文协议类型、端口信息等,进一步地,所述地址信息包括IP地址、MAC地址,所述报文协议类型包括:互联网协议第四版本(Internet Protocol Version 4,IPv4),也可以是基于互联网协议第六版本(Internet Protocol Version 6,IPv6),所述端口信息包括端口号,例如源端口号和目标端口号等。
可选的,所述报文信息的内容包括上述各种信息的组合,例如当前带查找的报文信息由IP地址和端口号组合,长度共32比特,其中所述IP地址占16比特,端口号占16比特长度。
可选的,所述IP地址中包括至少一个掩码,所述掩码可以表示1或者表示0。
结合第二方面,在第二方面的一种可能的实现中,将所述地址信息按照字典树上的比特位编号逐一查找包括:从所述字典树的根节点上的第一比特位的编号开始,查找所述地址信息中对应第一比特位上的值,若与所述第一比特位上的值相连接的分支不是尾节点,则继续查找所述分支所连接的中间节点上的比特位编号,直到查找出所述分支的尾节点为止。
另外,所述方法还包括:根据所述尾节点的索引编号确定至少一条规则,将所述至少一条规则中的每条规则分别与所述地址信息包含的所有字符进行逐一比对,直到找到与所述地址信息内容相同的规则为止。
结合第二方面,在第二方面的另一种可能的实现中,所述确定与所述目标IP地址相匹配的规则包括:如果按照所述尾节点上的索引编号指示的至少一条规则与所述地址信息相同,则确定存在与所述地址信息相匹配的规则;如果所述索引标号指示的至少一条规则均与所述地址信息的内容不同,则确定不存在与该地址信息相匹配的规则,即查找失败。
可选的,本方面所述的字典树可以被划分成M个层级,具体地,所述划分过程为:将所述字典树是按照从根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥1,且所述M个层级的信息存储在至少一个随机存取存储单元中。
结合第二方面,在第二方面的又一种可能的实现中,所述方法还包括:如果所述随机存取存储单元中存储有两个或两个以上字典树,则同时对所述两个或两个以上字典树按照所述报文信息的内容进行查找,具体地查找方法与本方面中上述对一个字典树的查找方法相同,即按照每个字典树上各个节点的比特位编号之一查找。本实现方式中,通过对两条或两条以上的字典树进行并行查找,提高了查找效率。
本方面提供的方法,实现了对片上单个字典树或多个字典树的查找和切换,进而达到了片上小容量存储且高性能查找的有益效果。
可以理解地,按照上述第一方面和第二方面的方法,还可实现对芯片外其他字典树的存储和快速查找,从而满足芯片外大容量存储的需求。
第三方面,本申请还提供了一种ACL的规则分类装置,所述装置用于实现前述第一方面以及第一方面各种实现方式中的ACL的规则分类方法。
可选的,所述装置包括至少一个功能单元或模块,进一步地,所述至少一个功能单元为获取单元或处理单元等。
第四方面,本申请还提供了一种ACL的规则查找装置,所述装置用于实现前述第二方面以及第二方面各种实现方式中的ACL的规则查找方法。
可选的,所述装置包括至少一个功能电路,进一步地,所述至少一个功能电路为获取电路或处理电路等,进一步地,所述装置为具备写功能的处理器。
第五方面,本申请还提供了一种通信装置,包括处理器和存储器,所述处理器与所述存储器耦合,所述存储器用于存储指令;所述处理器用于调用所述指令使得所述通信装置执行前述第一方面以及第一方面各种实现方式中的ACL的规则分类方法。
此外,所述装置中的处理器,还用于执行所述存储器中的指令,使得所述通信装置执行前述第二方面以及第二方面各种实现方式中的ACL的规则查找方法。
第六方面,本申请还提供了一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,实现如前述第一方面或第一方面各种实现方式所述的方法,或实现如前述第二方面或第二方面各种实现方式所述的方法。
第七方面,本申请还提供了一种计算机程序产品,当其在计算机上运行时,实现如前述第一方面或第一方面各种实现方式所述的方法,或实现如前述第二方面或第二方面各种实现方式所述的方法。
本申请提供的ACL规则分类方法和装置,先将N条规则构建成字典树,所述字典树的根节点和至少一个中间节点上设置有比特位的编号,然后再对该字典树进行分层和存储,由于对字典树分层后只需保存字典树上各个节点的比特位编号,相比于原来存储N条规则而言,占用的存储空间减小,因此可以通过占用面积较小的至少一个随机存取存储单元来保存字典树中各个层级的信息,并利用索引编号来只指示N条规则,从而避免了使用占用面积较大的TCAM来存储规则,节约了芯片的成本和功耗。
此外,本申请提供的ACL规则查找方法和装置,利用字典树的特点,按照字典树上的比特位编号逐一查找当前报文中的地址信息,最后通过字典树上尾节点的索引编号的指示来查找到与所述地址信息相匹配的规则,本方法实现了对由N条规则组成的字典树的快速查找。
附图说明
图1为本申请提供的一种片上TCAM和外挂商用TCAM组合的芯片结构示意图;
图2为本申请实施例提供的一种ACL规则分类方法的流程示意图;
图3为本申请实施例提供的一种ACL规则分类方法的示意图;
图4为本申请实施例提供的一种字典树的结构示意图;
图5为本申请实施例提供的一种字典树层级划分的示意图;
图6为本申请实施例提供的另一种字典树层级划分的示意图;
图7为本申请实施例提供的一种算法树与存储单元对应关系的示意图;
图8为本申请实施例提供的一种片上算法树和片上规则桶的结构示意图;
图9为本申请实施例提供的一种ACL规则查找方法的流程示意图;
图10a为本申请实施例提供的另一种ACL规则分类方法的示意图;
图10b为本申请实施例提供的一种ACL规则查找方法的示意图;
图11为本申请实施例提供的一种片上和片外ACL规则混合存储的结构示意图;
图12为本申请实施例提供的一种多个SRAM资源共享的示意图;
图13a为本申请实施例提供的一种片上规则桶切换成片外算法树之前的结构示意图;
图13b为本申请实施例提供的一种片上规则桶切换成片外算法树之后的结构示意图;
图14为本申请实施例提供的一种两个字典树并向查找的结构示意图;
图15为本申请实施例提供的一种ACL规则分类装置的结构示意图;
图16为本申请实施例提供的一种ACL规则查找装置的结构示意图;
图17为本申请实施例提供的一种通信装置的结构示意图。
具体实施方式
在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例的技术场景进行介绍。
本申请实施例提供的技术方案可应用于对ACL规则存储的技术领域。一般的对ACL规则进行存储的载体可以是三元物可寻址存储(ternary content addressable memory,TCAM),如图1所示。包括片上TCAM和外挂片外TCAM,其中片上的TCAM的容量一般可以存储32K(K=1024)条ACL规则,并且每条所述ACL规则的长度都是160比特(bit),片外的商用芯片的容量一般则可以达到存储512K条ACL规则的容量,查找性能受限于ILA接口的带宽。
在片上TCAM或片外TCAM存储ACL规则时,每条ACL规则是通过X值和Y值进行存储,根据X值和Y值的不同,可以表示三种状态,分别是:匹配0、匹配1和不匹配。如下表1所示,示出了TCAM中每1比特(bit)存储的内容,通过这三种状态的指示,能够实现对ACL规则的精确查找和模糊查找。
X值 | Y值 | 匹配状态 |
0 | 0 | 匹配0或匹配1 |
0 | 1 | 匹配1 |
1 | 0 | 匹配0 |
1 | 1 | 不匹配 |
表1
利用TCAM存储ACL规则,可以实现对多条规则的快速访问和查找。比如对于片上TCAM存储的1000条规则,每条规则均为一个长度是32bit的IP地址,首先通过配置将这1000条规则存储在片上TCAM中,然后当输入一个目标地址,该目标地址可以作为查找密钥(key),且长度也是32bit,片上TCAM存储单元能够对其存储的1000条规则同时进行查找和对比,并输出查找结果。
但是TCAM需要占用芯片的面积较大,导致芯片的成本升高以及整机电路板设计成本提高,另外TCAM消耗的功耗大,导致整机散热成本和能耗成本上升,无法满足大容量存储的要求。所以有一种需求利用占用面积较小的存储单元,比如RAM来存储ACL规则,并且也要满足对多条规则进行快速访问和查找的功能。
本申请实施例提供了一种ACL的规则分类方法,该方法揭示了一种灵活扩展ACL容量和性能的解决方案。在满足对多条规则进行快速访问和查找的同时,还能避免利用TCAM存储大量规则产生的占用芯片面积大,功耗和成本高的问题。
实施例一
如图2所示,本实施例提供的ACL的规则分类方法,所述方法可以包括:
步骤201:获取N条第一规则,N为正整数且N≥2,所述N条第一规则中的每条规则均由二进制表示的1或0组成,并且所述N条第一规则的长度均相同。
其中,所述“获取”可以理解为:设备从外部接收N条第一规则;或者还可以理解为:设备自身生成N规则并得到所述N条规则。本实施例对设备获取所述N条规则的来源不进行限制。
可选的,所述第一规则为ACL规则,即ACL中存储有N条第一规则。
可选的,每条所述规则为由若干比特位组成的IP地址。所述N条规则的长度相同是指N条规则所占用的比特数均相同,例如都是32bit或者16bit的IP地址。进一步地,每个所述二进制的IP地址可以由每个原始的IP地址经过二进制转换后生成。
可选的,组成所述N条规则中的二进制1或者0中至少一个1或0用掩码*表示,即当对某一比特位的0或1表示不关心时,可以通过掩码“*”来替代,例如“规则1”为1011101*010111,在从右往前数的第6比特位上的掩码“*”表示该比特位上的字符既可以是“1”,也可以是“0”。
参见表2,示出了5条ACL规则,N=5。应理解,还可以包括更多条规则,比如1000条,本实施例仅举出5条规则进行说明。
规则编号 | 规则内容 |
规则1 | 1011101*010111 |
规则2 | 0101*0011*1110 |
规则3 | 0110100010*010 |
规则4 | 01101010010001 |
规则5 | 11010*00111010 |
表2
步骤202:根据所述N条第一规则构建片上字典树。
可选的,所述构建的字典树为片上字典树。
所述字典树(trie)包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条规则。
具体地,根据所述N条规则构建字典树的过程包括:
1、按照第一条件确定至少一个所述比特位的编号;
2、将所述至少一个比特位的编号存储在字典树的至少一个节点上,所述至少一个节点包括所述根节点和所述至少一个中间节点;
3、将至少一条规则的索引编号存储在每条分支的尾节点上;
其中所述第一条件为:所述至少一个比特位的编号中的第一比特位将所述N条规则分为第一规则集合和第二规则集合,所述第一规则集合中的第一比特位上的值为第一取值,所述第二规则集合中的第一比特位上的值为第二取值;如果所述第一规则集合和所述第二规则集合中的规则的数量均大于第一阈值,则继续对所述第一规则集合和所述第二规则集合按照第二比特位或第三比特位进行划分,直到每个划分后的规则集合中剩余的规则数量小于等于第一阈值时为止。
可选的,所述第一阈值由所述至少一个随机存取存储单元的数据位宽决定。
在一具体应用例中,根据上面表2中的5条规则构建字典树过程为:
如图3和图4所示,先确定字典树的根节点和中间节点上的比特位编号。具体地,按照所述第一条件将5条规则尽可能地对半分,划分时尽量避免带有掩码“*”的比特位编号。可选的,如果在按照某一比特位编号进行划分时,遇到掩码“*”时,则划分的两个规则集合中均存在该带有掩码“*”的规则,因为“*”表示可1可0。
可选的,所述预设顺序为所有规则的比特位按照从右往左、从序号0开始的次序来排序,比如依次是0,1,2,3,4……。此外,还可以按照从左往右的顺序排序,本实施例对此不进行限定。
本实施例提供的片上字典树构建方法,如图3所示,遍历5条规则之后,选择第一比特位为第5bit,对5条规则进行划分,生成第一规则集合和第二规则集合,所述第一规则集合中包括{规则2、规则3、规则5},所述第二规则集合中包括{规则1、规则4},其中第一规则集合中的编号第5bit上的值为第二取值“1”,所述第二规则集合中的编号第5bit上的值为第一取值“0”。即从字典树的根节点开始,每个节点分成二叉树,其中一条分支的比特位上对应的字符为0,另一条分支的比特位上对应的字符为1。
可选的,所述第一取值为“0”,所述第二取值为“1”。本实施例对第一取值和第二取值是“1”还是“0”,或者掩码“*”不做限制。
所述第一阈值可以由随机存取存储单元的数据位宽来确定,所述数据位宽可以理解为内存或显存一次能传输的数据量,进一步地,所述数据量与所述随机存取存储单元的内存带宽相关,所述内存带宽是指内存总线所能提供的数据传输能力,该能力可以由内存芯片和内存模组的设计来确定。
本实施例中,如果第一阈值为1,则随机存取存储单元一次能够传输的规则条数为1条。可选的,如果所述第一阈值为7,则表示每次所述存储单元可以传输的数据量不超过7条规则。
本实施例中,所述方法还包括:判断第一规则集合和第二规则集合中的规则数量是否均大于1,如果是,则继续对这两个规则集合进行划分,对于第一规则集合{规则2、规则3、规则5},按照编号第2bit,划分成两个集合分别是{规则2},{规则3、规则5},其中{规则2}中第2bit上的取值为“1”,集合{规则3、规则5}中第2bit上的取值为“0”。此时,{规则2}中仅包含一条规则不超过第一阈值1,该条分支的中间节点连接有一个尾节点,满足终止划分的条件。
同理地,对集合{规则3、规则5}进行划分,按照编号第12bit划分,划分后生成{规则3}和{规则5},满足所述第一条件,则停止划分。同理地,对所述第二规则集合{规则1、规则4}按照编号为第13bit进行划分,得到两个集合分别是{规则4}和{规则1}。
根据上述步骤中划分5个规则使用的比特位编号,分别是第5bit、第2bit、第12bit和第13bit构建字典树。如图4所示,该字典树的根节点设置的第一比特位为5bit,然后与根节点相连接的中间节点的第二比特位为13bit,按照二进制0或1划分出规则1和规则4。在另一条分支中,一个中间节点的第三比特位为2bit,划分出规则2;最后通过第12比特将规则5和规则3划分出来。其中每个中间节点(包括13bit、2bit和12bit)都连接一个尾节点,每个尾节点上设置有一个索引编号,用于指示每一条规则的存储位置。
可选的,所述索引编号为一IP地址,或者包含所述IP地址的地址信息。
步骤203:将所述字典树按照从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥1。
其中,步骤203中将所述字典树划分成M个层级包括:根据所述至少一个随机存取存储单元的数据位宽对所述字典树划分M个层级。
如图5所示,划分的第一层级中包括一个根节点(5bit),三个中间节点(13bit、2bit和12bit),此外还包括5个尾节点,每个所述尾节点上均设置有索引编号。
可选的,若是字典树中包括更多的中间节点和尾节点,如图6所示,则可以按照7个节点为单位对字典树进行划分。例如,将字典树划分为M个层级,从第一层级、第二层级至第M层级,其中所述M个层级中的第一层级包括1个根节点和与所述根节点相连接的P个中间节点,所述M个层级中的第二层级包括的中间节点的数量不超过P+1个。
可选的,若P=6,则所述第一层级包括1个根节点和6个中间节点,第二层级也包括7个中间节点。
步骤204:将所述M个层级的信息存储在至少一个随机存取存储单元中。
其中,所述随机存取存储单元包括随机存取存储器(random access memory,RAM),进一步地,所述RAM包括静态随机存储器(static RAM,SRAM)和动态随机存储器(dynamic RAM,DRAM)等。
具体地,在步骤204中包括以下两种实现方式:
一种实现方式是,将M个层级的信息存储在一个RAM中。如图5所示,将第一层级存储在第一存储单元中,可以理解地,所述第一存储单元的容量足够大,可以承载字典树的所有信息,且所述第一存储单元中可以分成多个级,比如第1级、第2级、第3级、……,且每一级对应存储字典树的一个层级的信息。另外还包括:将5个索引编号指示的5条规则存储在其它存储单元中。
另一种实现方式是,将字典树的M个层级的信息存储在M个存储单元中,M≥2。如图6所示的字典树,包括多条分支,其中划分的第一层级的信息可以存储在第一存储单元中,第二层级的信息存储在第二存储单元中,第M层级的信息存储在第M存储单元中。且所述第一层级的信息包括所述根节点的比特位编号和所述P个中间节点的比特位编号,所述第二层级的信息包括不超过P+1个中间节点的比特位编号。
图6所示为一组ACL规则映射到多级字典树的过程,其中每一级字典树最多可以存储7个中间节点,当树的规模超过7个中间节点后就需要将超出部分的放到下一层级中去。图6中所示的灰色圆圈为尾节点,每个所述尾节点上设置有索引编号或者地址空间索引。以用于指示具体的规则。
本实施例提供的方法,先将N条规则构建成字典树,所述字典树的根节点和至少一个中间节点上设置有比特位的编号,然后再对该字典树进行分层和存储,由于对字典树分层后只需保存字典树上各个节点的比特位编号,相比于原来存储N条规则,占用的存储空间减小,因此可以通过占用面积较小的至少一个随机存取存储单元来保存字典树中各个层级的信息,并利用索引编号来只指示N条规则,从而避免了使用占用面积较大的TCAM来存储规则,节约了芯片的成本和功耗。
另外,本方法中还包括X个存储单元,X为大于1的正整数;所述方法还包括:将所述字典树的所有尾节点上的索引编号所指示的至少一条规则存储在X个存储单元中。进一步地,可以将N条规则存储在一个存储单元中,或者存储在两个或两个以上的存储单元中。
可选的,用于存储所述N条规则的X个存储单元可以称为规则桶(rule bucket),每个所述规则桶可以承载至少一条规则,且同一条规则可以存储在一个或多个规则桶中。
示例性地,如图7所示,用于存储N条规则的X个存储单元为SRAM或DRAM。
可选的,本申请所述的字典树可称为算法树(algorithm tree),对于存储在芯片上的算法树可称为片上算法树,对应地对于存储在芯片外,例如外挂芯片的算法树可称为片外算法树。同理地,对于存储芯片上的N条规则的存储单元可称为片上规则桶,对于存储外挂芯片算法树所对应的规则可称为片外规则桶。
一般地,在芯片上,配置用于存储片上字典树的容量与存储片上规则桶的容量之比大约在1∶6到1∶7之间。例如,存储10兆bit(1兆=1M=1024*1024)的算法树所需要的规则桶的容量大约在60Mbit至70Mbit。因为算法树中存储的是不超过P+1个节点的比特位编号以及尾节点的索引编号,所以相比于存储16bit或32bit长度的多条规则而言,占用的存储容量较小。
此外,本实施例提供的方法可以由处理器芯片中的核来执行,所述处理器芯片包括所述核以及X个片上RAM,所述处理器芯片与Y个片外RAM耦合,所述方法还包括:将至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于Y个片外RAM中;对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
此外,所述方法还包括:选择所述X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;或者,选择所述Y个片外RAM中的至少一个,存储所述片上字典树的至少一个层级的信息。
在一具体应用例中,比如对于片上(on-chip)ACL的规则存储方案,如图8所示,构建的片上字典树,或者片上算法树被划分成M个层级,具体包括第1层级至第M层级,且被存储在第一存储单元中。对于片上规则桶则被划分成多个级,例如从第1级至第X级,且每一级的片上规则桶均被存储在一个存储单元中。
一般地,对于存储每一级的片上规则桶所占用容量为4.5Mbit,在总共被划分为14级情况下,片外可达到的存储容量为14×4.5M=63M bit,对应地,63M bit的片外规则桶可以存储片上算法树的ACL规则的数量为526K(1K=1000)条,且这些规则的长度均为160bit。
本实施例提供的方法,通过X个RAM实现了对片上字典树所对应的第一规则的存储,并利用Y个RAM实现对片外字典树对应的第二规则的存储,本实施例实现了芯片上字典树的小容量存储和片外字典树的大容量存储,进而可以满足不同的需求。
本实施例中,根据上述构建字典树的算法,还提供了一种ACL的规则查找方法,如图9所示,该方法的执行主体可以是网络设备,比如路由器,所述方法包括:
步骤901:获取报文信息,所述报文信息的内容可以由二进制表示的1或0表示。
其中,所述报文信息包括以下一种或多种组合:地址信息、报文协议类型、端口信息等,进一步地,所述地址信息包括IP地址、MAC地址,所述报文协议类型包括:互联网协议第四版本(Internet Protocol Version 4,IPv4),也可以是基于互联网协议第六版本(Internet Protocol Version 6,IPv6),所述端口信息包括端口号,例如源端口号和目标端口号等。
进一步地,组成所述报文信息内容的0或1还可以通过掩码“*”表示。
可选的,所述报文信息通过报文头获得。
步骤902:将所述报文信息的内容按照字典树的比特位编号逐一查找,确定与所述报文信息相匹配的规则。
其中所述字典树由N条第一规则构建,N为正整数且N≥2,所述字典树包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条规则。
其中,所述字典树按照从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥1,且所述M个层级的信息存储在至少一个RAM中。
可选的,所述至少一个所述比特位的编号是按照第一条件确定的;其中所述第一条件为所述至少一个比特位的编号中的第一比特位将所述N条规则分为第一规则集合和第二规则集合,其中所述第一规则集合中的第一比特位上的值为第一取值,所述第二规则集合中的第一比特位上的值为第二取值;如果所述第一规则集合和所述第二规则集合中的规则的数量均大于第一阈值,则继续对所述第一规则集合和所述第二规则集合按照第二比特位或第三比特位进行划分,直到每个划分后的规则集合中剩余的规则数量小于等于第一阈值时为止。
其中,所述第一阈值由所述至少一个RAM的数据位宽决定。
进一步地,步骤901中,将所述报文信息的内容按照字典树的比特位编号逐一查找,具体包括:从所述字典树的根节点上的比特位的编号开始,查找所述报文信息内容对应比特位上的值,若与所述比特位上的值相连接的分支不是尾节点,则继续查找所述分支所连接的中间节点上的比特位编号,直到查找出所述分支的尾节点为止。
进一步地,步骤902中,确定与所述报文信息内容相匹配的规则,具体包括:如果按照所述尾节点上的索引编号指示的至少一条规则与所述报文信息的内容相同,则确定存在与所述报文信息的内容相匹配的规则,查找成功;否则,确定不存在所述相匹配的规则,即查找失败。
在一个具体的应用例中,如图10a所示,共包括规则1至规则12的12条规则,按照比特位编号的顺序对这12条规则进行划分,生成字典树/算法树如图10b所示,所述根节点上设置的第一比特位的编号为第8bit,该第8bit将12个规则划分为两个规则集合;然后再对这两个规则集合进行划分,直到满足剩余的规则数量不超过第一阈值,本实施例中,假设第一阈值为3,则划分后每个规则桶中的规则数量不得超过3条(即规则桶的桶深为3),依次划分后的第二比特为编号为第11bit,第三比特位的编号为第13bit,第四比特位的编号为第1bit;最后每一个中间节点再连接一个尾节点,每个所述尾节点上的索引编号用于指示对应规则的位置。
本实施例中,共有5个尾节点,可以指示5个规则桶,分别为:第一规则桶{规则6,规则7},第二规则桶{规则2,规则9},第三规则桶{规则1,规则3,规则4},第四规则桶{规则5,规则8,规则10},第五规则桶{规则9,规则11,规则12}。
在步骤901中,获取地址信息中指示的需要查找的IP地址为:111101010101;步骤902:将该IP地址在图10b所示的字典树中的比特位的编号逐一查找相匹配的规则,所述字典树的根节点的比特位编号为第8bit,则在所述IP地址中的第8bit上查找指示的取值为“1”,按照所述字典树的指示第二比特位编号为13bit,则对应到所述IP地址中的第13bit的取值为“1”,进而确定上述第五规则桶中包括的规则为待匹配的规则。
最后,再将第五规则桶中的{规则9,规则11,规则12}分别与所述IP地址个每个比特位进行比较,若都相同,则存在满足匹配的规则,否则不存在。本实施例中,只有规则11{1111*10101*1}与所述IP地址{111101010101}相同,所以本次查找到与所述地址信息相匹配的规则为规则11。
其中,需要说明的是,规则11中的掩码“*”既可以表示“1”也可以表示“0”,本实施例中规则11中的第1比特位编号表示0,第9比特位编号也表示0时,与所述地址信息所对应的IP地址相同。
此外,若在第五规则桶中的3条规则均与所述IP地址不同时,则确定不存在所述地址信息对应的规则,本次查找失败。
可选的,若是有两个或两个以上相匹配的规则,则可以根据所有相匹配的规则的优先级顺序,选择优先级最高的作为相匹配的规则。
实施例二
本实施例在实施例一的基础上,为避免了大量SRAM数据汇聚时发生拥塞,通过字典树这种多级的架构,可以实现和片外ACL规则的算法树复用,参见图11,提供了一种片上和片外ACL规则混合存储的技术方案。
需要说明的是,为了区别片上字典树和片外字典树,本实施例将片上字典树称为第一字典树,将片外字典树称为第二字典树。其中,所述第二字典树的构建所使用的规则与所述第一字典树的构建所使用的N条规则可以相同,也可以不同。
可选的,所述片上字典树还可以称为片上算法树,同理地,所述片外字典树可以称为片外算法树。
本实施例在实施例一的基础上,还提供了一种片上和片外存储单元的共享方法。具体地,所述方法包括:使用X个存储单元中的至少一个存储单元来存储片外的字典树(第二字典树),或者片外的至少一条规则。
其中,所述X个存储单元中的其他存储单元可用于存储第一字典树所关联的N条规则。
可选的,所述X个存储单元中用于存储第一字典树的N条规则的存储单元可称为片上规则桶;用于存储第二字典树的规则的存储单元可称为片外规则桶。
其中,所述方法由处理器芯片中的核来执行,所述处理器芯片包括所述核以及X个片上RAM,所述处理器芯片与Y个片外RAM耦合,所述方法还包括:将所述至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于所述Y个片外RAM中;对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
进一步地,所述方法还包括:选择所述X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;或者,选择Y个片外RAM中的至少一个,存储片上字典树的至少一个层级的信息,所述片上字典树由所述N条第一规则构成。
可选的,所述字典树为所述片内字典树或所述片外字典树,在所述将报文信息的内容按照字典树上的比特位编号逐一查找的步骤之前,所述方法还包括:通过模式控制信号选择将所述片外字典树确定为所述字典树,或者将所述片内字典树确定为所述字典树。
具体地,可以由寄存器里配置的控制信号来确定对片上规则桶和片外字典树的模式切换。例如,对于所述寄存器是1比特的寄存器而言,若当前寄存器指示的控制信号是“0”,则表示采用X个RAM存储片上规则桶的模式,若当前指示的控制信号是比特“1”,则表示选择X个RAM中的任意一个或多个用于存储片外算法树的模式。
处理器或处理芯片可以通过读取寄存器上的控制信号的比特值来确定当前采用的存储模式。比如,若读取的比特值是“0”,则确定当前使用存储片上规则桶模式;当需要对X个RAM进行模式切换时,可以通过控制寄存器输出控制信号“1”,来指示处理器将当前存储片上规则桶的模式切换为存储片外算法树的模式,从而达到不同模式间的自由切换,提高存储的灵活性,满足不同的容量需求。
如图11所示,对于片上算法树,左侧第1级到第X-1级的片上规则桶实现片上ACL规则的存储功能,右侧第X级到第Y级的片上规则桶用来实现片外算法树的存储功能,片外的规则桶则存放在片外存储器。其中第X级的存储单元从原来存储片上的规则切换至用于存储片外的算法树,进而实现了片上规则桶的存储单元与片外算法树的存储单元之间的自由切换。
如图12所示,片上规则桶处理逻辑(on-chip rule bucket process)是处理片上规则桶比较逻辑处理,片外算法树处理逻辑(off-chip algorithm tree process)是处理片外算法树查找逻辑处理,中间的多个SRAM为存储片上规则桶数据结构或者片外算法树数据结构的存储单元集合。其中,每一级都可以通过一个模式配置寄存器在片上规则桶和片外算法树之间切换,进而达到存储片上ACL规则占用的容量小、延时小,存储片外ACL规则占用的容量大、延时大的效果。另外,用户可以通过外接一个或多个DRAM来存储片外ACL规则,进而达到在片上和片外之间存储资源灵活切换的效果。
具体地,如图13a和图13b所示,当片外需要更大存储容量时,比如需要将片上第7级的存储单元从片上规则桶切换成用于存储片外的算法树,首先需要将第7级上存储的规则搬移到其他级的片上或者片外。图13a所示将原来存储在第7级的规则搬移到片外的DRAM,其中,在搬移的时候需要将这些规则对应的算法树也一起搬移到片外算法树上面。当第7级的片上规则桶内的规则全部搬移完成之后,就可以将该第7级的存储单元切换成用于存储片外的算法树,如图13b所示,切换以后片外算法树的存储单元可以存储容量更大的片外ACL规则,但是对应的片上用于存储ACL规则的容量会相应变小。
如下表3所示,根据每级SRAM(或每个存储单元)所能存储的容量为4.5Mbit,一共14级片上规则桶/片外算法树的时,不同级数的片上算法桶和片外算方法树所对应的ACL容量。
表3
如表3所示,以存储片外算法树的级数与存储片上规则桶的级数均为7为例,即7个存储单元(SRAM)用于存储片外算法树的信息,7个存储单元(SRAM)用于存储片上规则桶的规则。则用于存储片外的ACL规则数量(N2)可以达到80,000条,且每条规则的长度为160bit;扩展到片外用于存储算法树的ACL规则数量(N1)可以达到1,000,000条,且每条规则的长度为160bit。
需要说明的是,用于存储由N1条规则所形成的片外算法树的容量一般小于用于存储N2条规则的规则桶所占用的容量,因为用于存储算法树的容量仅包括部分比特位的编号,而用于存储规则桶的容量需要保存所有规则,所以需要占用大量空间。
此外,还可以根据不同需求将用于存储片外规则桶的存储单元切换至用于存储片上的算法树,具体的过程可以参见上述由片上规则桶切换至片外算法树的过程,本申请实施例对此不详细赘述。
本实施例提供的方法,通过多级查找结构来实现片上存储单元和片外存储单元的资源共享,用于存储片上规则桶或片外算法树的多个存储单元之间的动态切换,以提高存储资源的利用率,从而满足不同的应用场景需求。
另外,基于构建的字典树或算法树,实现用占面积较小的存储单元来存储大量ACL规则,进而节约芯片的硬件成本,相比于TCAM减少了功耗。
实施例三
本实施例在上述实施例的基础上,可进一步地提高对地址信息,比如key的查找效率。
本实施例可应用于一些对ACL规则存储的容量需求小,但是对查找性能要求比较高的场景,具体地方法包括:通过配置,动态切换成两个或两个以上字典树的存储结构,如图14所示,用于存储片上算法树的随机存取存储单元,可以存储了两个算法树,每个算法树中包括第1层级至第M层级。此外,还包括用于存储每个算法树所对应的规则桶的存储单元。
在查找过程中,本实施例中可以对两个算法树同时进行查找,即两条流水结构并行处理,可以提供每个时钟周期查找两次的性能,进而实现了多流水同时查找功能,提高了查找效率。
可以理解地,本实施例还可以拓展3条或者更多的并行流水结构,来实现快速查找功能,且对于存储片上多个算法树的容量资源分配可以通过寄存器配置来实现,片上算法树和片外规则桶的容量大小,以及之间互相切换也可以通过寄存器配置完成。
在本申请的另一个实施例中,还提供了一种ACL的规则分类装置,用于实现前述实施例所述的ACL规则分类方法。
如图15所示,所述ACL的规则分类装置包括获取单元1501和处理单元1502,此外所述装置还可以包括发送单元、存储单元等更多的单元或模块,本实施例对此不进行限制。
具体地,获取单元1501,用于获取N条规则,N为正整数且N≥2,所述N条规则中的每条规则均由二进制表示的1或0组成,并且所述N条规则的长度均相同。
处理单元1502,用于根据所述N条规则构建字典树,将所述字典树划分成M个层级,M为正整数且M≥1,以及将所述M个层级的信息存储在至少一个随机存取存储单元中,所述字典树包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条规则。
可选的,由所述N条规则构成的字典树为片上字典树,所述N条规则为N条第一规则。
可选的,在本实施例的一种可能的实现方式中,所述处理单元1502,具体用于按照第一条件确定至少一个所述比特位的编号;将所述至少一个比特位的编号存储在第一字典树的至少一个节点上,所述至少一个节点包括所述根节点和所述至少一个中间节点;将至少一条规则的索引编号存储在每条分支的尾节点上。
其中,所述第一条件为所述至少一个比特位的编号中的第一比特位将所述N条规则分为第一规则集合和第二规则集合,其中所述第一规则集合中的第一比特位上的值为第一取值,所述第二规则集合中的第一比特位上的值为第二取值;如果所述第一规则集合和所述第二规则集合中的规则的数量均大于第一阈值,则继续对所述第一规则集合和所述第二规则集合按照第二比特位或第三比特位进行划分,直到每个划分后的规则集合中剩余的规则数量小于等于第一阈值时为止,所述第一阈值由所述至少一个存储单元的数据位宽决定。
可选的,在本实施例的另一种可能的实现方式中,组成所述N条规则中的二进制1或0中至少一个1或0用掩码*表示。
可选的,在本实施例的又一种可能的实现方式中,所述处理单元1402,具体用于将所述M个层级的信息存储在M个RAM中,M为正整数且M≥2。
可选的,在本实施例的又一种可能的实现方式中,所述处理单元1402,具体用于根据所述至少一个RAM的数据位宽对所述第一字典树划分M个层级;其中所述M个层级中的第一层级包括1个根节点和与所述根节点相连接的P个中间节点,所述M个层级中的第二层级包括的中间节点的数量不超过P+1个,P为正整数且P≥1。
示例性地,所述P为6。
可选的,在本实施例的又一种可能的实现方式中,所述第一层级的信息包括所述根节点的比特位编号和所述P个中间节点的比特位编号,所述第二层级的信息包括不超过P+1个中间节点的比特位编号。
可选的,在本实施例的又一种可能的实现方式中,所述处理单元1502,还用于将所述第一字典树的所有尾节点上的索引编号所指示的至少一条规则存储在X个存储单元中,X为正整数且X≥1。
可选的,在本实施例的又一种可能的实现方式中,所述处理单元1502,还用于将所述X个存储单元中的至少一个存储单元用作存储片上字典树或者所述片上字典树的索引编号所指示的至少一条第一规则。
可选的,在本实施例的又一种可能的实现方式中,所述处理单元1502,将所述至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于所述Y个片外RAM中;对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
可选的,在本实施例的又一种可能的实现方式中,所述处理单元1502,还用于选择所述X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;或者,选择所述Y个片外RAM中的至少一个,存储所述片上字典树的至少一个层级的信息。
所述装置包括处理器芯片中的核,所述处理器芯片包括所述核以及X个片上RAM,所述处理器芯片与Y个片外RAM耦合。
另外,本实施例还提供的ACL规则的查找装置,用于对ACL的规则进行查找,具体地,如图16所示,所述查找装置包括:获取电路1601和处理电路1602,其中所述获取电路1601用于获取报文信息,所述报文信息的内容可以由二进制表示的1或0表示;处理电路1602用于将所述报文信息的内容按照字典树上的比特位编号逐一查找,确定与所述地址信息内容相匹配的至少一条规则。
可选的,所述获取电路1601和处理电路1602还可以集合于一个电路,比如处理电路。
可选的,所述查找装置为一种处理芯片或者处理器,具备写数据功能。
另外,所述方法还包括:根据所述尾节点的索引编号确定至少一条规则,将所述至少一条规则中的每条规则分别与所述地址信息包含的所有字符进行逐一比对,直到找到与所述地址信息内容相同的规则为止。
其中所述字典树由N条第一规则构建,N为正整数且N≥2,所述字典树包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条第一规则。
可选的,在本实施例的一种可能的实现方式中,所述处理电路1602,具体用于从所述字典树的根节点上的第一比特位的编号开始,查找所述报文信息内容中对应比特位上的值,若与所述比特位上的值相连接的分支不是尾节点,则继续查找所述分支所连接的中间节点比特位编号,直到查找出所述分支的尾节点为止。
可选的,在本实施例的另一种可能的实现方式中,所述处理电路1602,具体用于如果按照所述尾节点上的索引编号指示的至少一条第一规则与所述报文信息内容相同,则确定存在与所述报文信息相匹配的规则;否则,确定不存在所述相匹配的规则。
可选的,在本实施例的又一种可能的实现方式中,所述处理电路1602,具体用于将所述字典树按照从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥1,且所述M个层级的信息存储在至少一个RAM中。
可选的,在本实施例的又一种可能的实现方式中,所述至少一个所述比特位的编号是按照第一条件确定的;其中所述第一条件为所述至少一个比特位的编号中的第一比特位将所述N条第一规则分为第一规则集合和第二规则集合,其中所述第一规则集合中的第一比特位上的值为第一取值,所述第二规则集合中的第一比特位上的值为第二取值;
如果所述第一规则集合和所述第二规则集合中的规则的数量均大于第一阈值,则继续对所述第一规则集合和所述第二规则集合按照第二比特位或第三比特位进行划分,直到每个划分后的规则集合中剩余的规则数量小于等于第一阈值时为止,所述第一阈值由所述至少一个存储单元的数据位宽决定。
可选的,在本实施例的又一种可能的实现方式中,所述处理电路1602,还用于将所述至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于Y个片外RAM中;对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
可选的,在本实施例的又一种可能的实现方式中,所述处理电路1602,还用于选择所述X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;或者,选择所述Y个片外RAM中的至少一个,存储片上字典树的至少一个层级的信息,所述片上字典树由所述N条第一规则构成。
可选的,在本实施例的又一种可能的实现方式中,所述字典树为所述片内字典树或所述片外字典树,所述处理电路1602,具体用于通过模式控制信号选择将所述片外字典树确定为所述字典树,或者将所述片内字典树确定为所述字典树。
本实施例提供的ACL查找方法,按照字典树上节点的比特位编号的顺序,逐个查找报文信息内容中的比特,实现了对待查询报文信息的快速查找。另外,若包括有多个字典树时,还可以通过两条流水线并行查找与IP地址相匹配的规则,进一步地提高了查找效率。
参见图17,为本申请实施例提供的一种通信装置的结构示意图。该通信装置可以是前述实施例中的装置,比如网络设备,或者还可以是用于网络设备的部件(例如芯片)。该通信装置可以实现前述实施例中的ACL规则分类方法和查找方法。
如图17所示,所述通信装置可以包括收发器171、处理器172;进一步,还可以包括存储器173,所述存储器173可以用于存储代码或者数据。所述通信装置还可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置,本申请对此不进行限定。
其中,处理器172为通信装置的控制中心,利用各种接口和线路连接整个通信装置的各个部分,通过运行或执行存储在存储器173内的软件程序或模块,以及调用存储在存储器内的数据,以执行通信装置的各种功能或处理数据。所述处理器中包括传输模块,所述传输模块用于获取所述N条规则,此外,所述传输模块还可以用于获取其他信息,例如地址信息等。
所述处理器172可以由集成电路(integrated circuit,IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器可以仅包括中央处理器(central processing unit,CPU),也可以是GPU、数字信号处理器(digital signal processor,DSP)、或者CPU和NP的组合。
进一步地,所述处理器还可以进一步包括硬件芯片。所述硬件芯片可以是ASIC,可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
可选的,所述处理器172中包括处理芯片,所述处理芯片中可以包括一个或多个随机存取存储单元,用于存储片上字典树和片外规则桶。进一步地,所述一个或多个随机存取存储单元包括但不限于随机存取存储器(random access memory,RAM),进一步地,所述RAM包括静态随机存储器(static RAM,SRAM)和动态随机存储器(dynamic RAM,DRAM)。另外,所述存储器可以包括非易失性存储器,例如flash memory,硬盘HDD或SSD;所述存储器还可以包括上述种类的存储器的组合。
收发器171用于建立通信信道,使通信装置通过所述通信信道以连接至网络,从而实现通信装置与其他设备之间的通信传输。其中,所述收发器171可以是完成收发功能的模块。例如,所述收发器可以包括无线局域网(wireless local area network,WLAN)模块、蓝牙模块、基带(base band)模块等通信模块,以及所述通信模块对应的射频(radiofrequency,RF)电路,用于进行无线局域网络通信、蓝牙通信、红外线通信及/或蜂窝式通信系统通信,例如宽带码分多重接入(wideband code division multiple access,WCDMA)及/或高速下行封包存取(high speed downlink packet access,HSDPA)。所述收发器用于控制通信装置中的各组件的通信,并且可以支持直接内存存取(direct memory access)。
在本申请实施例中,处理器172可以用于实现前述实施例中方法的全部或部分步骤。示例性地,图15中的所述获取单元1501所要实现的功能可以由所述处理器芯片上部的传输模块来实现,所述处理单元1502所要实现的功能则可以由该通信装置的处理器芯片实现。此外,图16所示获取电路1601和处理电路1602的能够均可以通过处理器172实现。
在具体实现中,所述通信装置可以是一种网络设备,所述网络设备包括但不限于路由器、交换机等,另外所述网络设备还可以包括芯片。
需要说明的是,本实施例中所述通信装置中,还可以包括外挂芯片,所述外挂芯片用于存储片外算法树和片外规则桶。具体地,所述外挂芯片可以包括处理单元和至少一个随机存取存储单元,其中,所述处理单元用于实现对片外算法树的ACL规则分类和查找功能,所述至少一个随机存取存储单元用于存储片外字典树和片外规则。
在一具体实现中,比如通信装置为一路由器,则该路由器除了处理器的芯片上存储有字典树和规则桶之外,利用通信接口还可以外挂一个芯片,用于实现片外ACL规则的分类和查找功能,进而满足芯片上小容量存储、片外大容量存储的需求。
一种可能的实现方式中,本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本申请提供的ACL规则分类方法、ACL规则查找方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、ROM或RAM等。
此外,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行上述各实施例所述的方法全部或部分步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质,例如固态硬盘(solid state disk,SSD)等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统及装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本申请实施方式,并不构成对本申请保护范围的限定。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请的保护范围之内。
Claims (36)
1.一种访问控制列表ACL的规则分类方法,其特征在于,应用于对芯片上部ACL规则的划分,所述方法包括:
获取N条第一规则,N为正整数且N≥2,所述N条第一规则中的每条规则均由二进制表示的1或0组成,并且所述N条第一规则的长度均相同;
根据所述N条第一规则构建片上字典树,所述片上字典树包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条第一规则;
将所述片上字典树按照从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥1;
将所述M个层级的信息存储在至少一个随机存取存储单元RAM中。
2.根据权利要求1所述的方法,其特征在于,根据所述N条第一规则构建片上字典树包括:
按照第一条件确定至少一个所述比特位的编号;
将所述至少一个比特位的编号存储在所述片上字典树的至少一个节点上,所述至少一个节点包括所述根节点和所述至少一个中间节点;
将至少一条规则的索引编号存储在每条分支的尾节点上。
3.根据权利要求2所述的方法,其特征在于,
所述第一条件为所述至少一个比特位的编号中的第一比特位将所述N条第一规则分为第一规则集合和第二规则集合,其中所述第一规则集合中的第一比特位上的值为第一取值,所述第二规则集合中的第一比特位上的值为第二取值;
如果所述第一规则集合和所述第二规则集合中的规则的数量均大于第一阈值,则继续对所述第一规则集合和所述第二规则集合按照第二比特位或第三比特位进行划分,直到每个划分后的规则集合中剩余的规则数量小于等于第一阈值时为止,所述第一阈值由所述至少一个RAM的数据位宽决定。
4.根据权利要求1至3任一项所述的方法,其特征在于,组成所述N条第一规则中的二进制1或0中至少一个1或0用掩码*表示。
5.根据权利要求1至3任一项所述的方法,将所述M个层级的信息存储在至少一个RAM中,包括:
将所述M个层级的信息存储在M个RAM中。
6.根据权利要求1至3任一项所述的方法,其特征在于,将所述片上字典树从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级包括:
根据所述至少一个RAM的数据位宽对所述片上字典树划分M个层级;
其中,所述M个层级中的第一层级包括1个根节点和与所述根节点相连接的P个中间节点,所述M个层级中的第二层级包括的中间节点的数量不超过P+1个,P为正整数且P≥1。
7.根据权利要求6所述的方法,其特征在于,所述M个层级的信息包括第一层级的信息和第二层级的信息;
所述第一层级的信息包括所述根节点的比特位编号和所述P个中间节点的比特位编号,所述第二层级的信息包括不超过P+1个中间节点的比特位编号。
8.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
将所述片上字典树的所有尾节点上的索引编号所指示的至少一条第一规则存储在X个片上RAM中,X为正整数且X≥1。
9.根据权利要求1至3任一项所述的方法,其特征在于,所述方法由处理器芯片中的核来执行,所述处理器芯片包括所述核以及X个片上RAM,所述处理器芯片与Y个片外RAM耦合,所述方法还包括:
将所述至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于所述Y个片外RAM中;
对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
选择所述X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;
或者,选择所述Y个片外RAM中的至少一个,存储所述片上字典树的至少一个层级的信息。
11.一种访问控制列表ACL的规则查找方法,其特征在于,所述方法包括:
获取报文信息,所述报文信息的内容通过二进制表示的1或0表示;
将所述报文信息的内容按照字典树上的比特位编号逐一查找,确定与所述报文信息内容相匹配的规则;
其中所述字典树由N条第一规则构建,N为正整数且N≥2,所述字典树包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条第一规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条所述第一规则。
12.根据权利要求11所述的方法,其特征在于,将所述报文信息的内容按照字典树上的比特位编号逐一查找包括:
从所述字典树的根节点上的第一比特位的编号开始,查找所述报文信息内容中对应第一比特位上的值,若与所述第一比特位上的值相连接的分支不是尾节点,则继续查找所述分支所连接的中间节点上的比特位编号,直到查找出所述分支的尾节点为止。
13.根据权利要求11所述的方法,其特征在于,所述确定与所述报文信息内容相匹配的规则包括:
如果按照所述尾节点上的索引编号指示的至少一条规则与所述报文信息内容相同,则确定存在与所述报文信息相匹配的规则。
14.根据权利要求11至13任一项所述的方法,其特征在于,
所述字典树按照从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥1,且所述M个层级的信息存储在至少一个随机存取存储单元RAM中。
15.根据权利要求11至13任一项所述的方法,其特征在于,所述方法由处理器芯片中的核来执行,所述处理器芯片包括所述核以及X个片上RAM,所述处理器芯片与Y个片外RAM耦合,所述方法还包括:
将所述至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于所述Y个片外RAM中;
对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
选择所述X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;
或者,选择所述Y个片外RAM中的至少一个,存储片上字典树的至少一个层级的信息,所述片上字典树由所述N条第一规则构成。
17.根据权利要求16所述的方法,其特征在于,所述字典树为所述片上字典树或所述片外字典树,在所述将报文信息的内容按照字典树上的比特位编号逐一查找的步骤之前,所述方法还包括:
通过模式控制信号选择将所述片外字典树确定为所述字典树,或者将所述片上字典树确定为所述字典树。
18.一种访问控制列表ACL的规则分类装置,其特征在于,应用于对芯片上部ACL规则的划分,所述装置包括:
获取单元,用于获取N条第一规则,N为正整数且N≥2,所述N条第一规则中的每条规则均由二进制1或0组成,并且所述N条第一规则的长度均相同;
处理单元,用于根据所述N条第一规则构建片上字典树,将所述片上字典树按照从根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥1,以及将所述M个层级的信息存储在至少一个随机存取存储单元RAM中,
其中所述字典树包括根节点和至少两条分支,每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条所述第一规则。
19.根据权利要求18所述的装置,其特征在于,
所述处理单元,具体用于按照第一条件确定至少一个所述比特位的编号;将所述至少一个比特位的编号存储在所述片上字典树的至少一个节点上,所述至少一个节点包括所述根节点和所述至少一个中间节点;将至少一条规则的索引编号存储在每条分支的尾节点上。
20.根据权利要求19所述的装置,其特征在于,所述第一条件为所述至少一个比特位的编号中的第一比特位将所述N条第一规则分为第一规则集合和第二规则集合,其中所述第一规则集合中的第一比特位上的值为第一取值,所述第二规则集合中的第一比特位上的值为第二取值;
如果所述第一规则集合和所述第二规则集合中的规则的数量均大于第一阈值,则继续对所述第一规则集合和所述第二规则集合按照第二比特位或第三比特位进行划分,直到每个划分后的规则集合中剩余的规则数量小于等于第一阈值时为止,所述第一阈值由所述至少一个随机存取存储单元RAM的数据位宽决定。
21.根据权利要求18至20任一项所述的装置,其特征在于,组成所述N条第一规则中的二进制1或0中至少一个1或0用掩码*表示。
22.根据权利要求18至20任一项所述的装置,
所述处理单元,具体用于将所述M个层级的信息存储在M个RAM中。
23.根据权利要求18至20任一项所述的装置,其特征在于,
所述处理单元,具体用于根据所述至少一个RAM的数据位宽对所述片上字典树划分M个层级;
其中所述M个层级中的第一层级包括1个根节点和与所述根节点相连接的P个中间节点,所述M个层级中的第二层级包括的中间节点的数量不超过P+1个,P为正整数且P≥1。
24.根据权利要求23所述的装置,其特征在于,所述M个层级的信息包括第一层级的信息和第二层级的信息;
所述第一层级的信息包括所述根节点的比特位编号和所述P个中间节点的比特位编号,所述第二层级的信息包括不超过P+1个中间节点的比特位编号。
25.根据权利要求18至20任一项所述的装置,其特征在于,
所述处理单元,还用于将所述片上字典树的所有尾节点上的索引编号所指示的至少一条规则存储在X个片上RAM中,X为正整数且X≥1。
26.根据权利要求18至20任一项所述的装置,其特征在于,
所述处理单元,还用于将所述至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于Y个片外RAM中;对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
27.根据权利要求26所述的装置,其特征在于,
所述处理单元,还用于选择所述X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;或者,选择所述Y个片外RAM中的至少一个,存储所述片上字典树的至少一个层级的信息。
28.一种访问控制列表ACL的规则查找装置,其特征在于,所述装置包括:
获取电路,用于获取报文信息,所述报文信息的内容通过二进制表示的1或0表示;
处理电路,用于将所述报文信息的内容按照字典树上的比特位编号逐一查找,确定与所述报文信息内容相匹配的规则;
其中所述字典树由N条第一规则构建,N为正整数且N≥2,所述字典树包括根节点和至少两条分支,其中每条所述分支包括至少一个中间节点和一个尾节点,所述根节点和所述至少一个中间节点上设置有比特位的编号,所述比特位的编号为所述N条第一规则按照预设顺序依次排序后每个比特位所对应的次序号,所述尾节点上设置有索引编号,所述索引编号用于指示至少一条第一规则。
29.根据权利要求28所述的装置,其特征在于,
所述处理电路,具体用于从所述字典树的根节点上的第一比特位的编号开始,查找所述报文信息的内容中对应第一比特位上的值,若与所述第一比特位上的值相连接的分支不是尾节点,则继续查找所述分支所连接的中间节点上的比特位编号,直到查找出所述分支的尾节点为止。
30.根据权利要求28所述的装置,其特征在于,
所述处理电路,具体用于如果按照所述尾节点上的索引编号指示的至少一条规则与所述报文信息内容相同,则确定存在与所述报文信息相匹配的规则。
31.根据权利要求28至30任一项所述的装置,其特征在于,
所述处理电路,具体用于将所述字典树按照从所述根节点到至少一个中间节点,再从所述至少一个中间节点到尾节点的顺序划分成M个层级,M为正整数且M≥2,且所述M个层级的信息存储在至少一个RAM中。
32.根据权利要求28至30任一项所述的装置,其特征在于,
所述处理电路,还用于将所述至少一条第二规则构建成片外字典树,所述至少一条第二规则存储于Y个片外RAM中;对所述片外字典树划分至少一个层级,将所述片外字典树的每个所述层级的信息存储在所述Y个片外RAM中,其中Y为正整数且Y≥1。
33.根据权利要求32所述的装置,其特征在于,
所述处理电路,还用于选择X个片上RAM中的至少一个,存储所述片外字典树的至少一个层级的信息;或者,选择所述Y个片外RAM中的至少一个,存储片上字典树的至少一个层级的信息,所述片上字典树由所述N条第一规则构成。
34.根据权利要求33所述的装置,其特征在于,所述字典树为所述片上字典树或所述片外字典树,
所述处理电路,具体用于通过模式控制信号选择将所述片外字典树确定为所述字典树,或者将所述片上字典树确定为所述字典树。
35.一种通信装置,包括处理器和存储器,所述处理器与所述存储器耦合,其特征在于,
所述存储器用于存储指令;
所述处理器用于调用所述指令并执行如权利要求1至10中任一项所述的方法。
36.一种计算机可读存储介质,当所述计算机可读存储介质在装置上运行时,执行如权利要求1至10中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/118782 WO2020107484A1 (zh) | 2018-11-30 | 2018-11-30 | 一种acl的规则分类方法、查找方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112425131A CN112425131A (zh) | 2021-02-26 |
CN112425131B true CN112425131B (zh) | 2022-03-04 |
Family
ID=70852516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880095689.7A Active CN112425131B (zh) | 2018-11-30 | 2018-11-30 | 一种acl的规则分类方法、查找方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112425131B (zh) |
WO (1) | WO2020107484A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804206A (zh) * | 2020-12-31 | 2021-05-14 | 北京知道创宇信息技术股份有限公司 | 基于查找树的报文匹配方法、装置和电子设备 |
CN113268613B (zh) * | 2021-04-30 | 2024-04-09 | 上海右云信息技术有限公司 | 一种用于获取侵权线索的方法、设备、介质及程序产品 |
CN117472554A (zh) * | 2022-07-20 | 2024-01-30 | 华为技术有限公司 | 规则查找方法、装置、设备及计算机可读存储介质 |
CN115633097B (zh) * | 2022-12-21 | 2023-04-28 | 新华三信息技术有限公司 | 一种访问控制列表acl压缩方法及装置 |
CN116156026B (zh) * | 2023-04-20 | 2023-07-04 | 中国人民解放军国防科技大学 | 一种支持rmt的解析器、逆解析器、解析方法及交换机 |
CN116633865B (zh) * | 2023-07-25 | 2023-11-07 | 北京城建智控科技股份有限公司 | 网络流量控制方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102487374A (zh) * | 2010-12-01 | 2012-06-06 | 中兴通讯股份有限公司 | 一种访问控制列表实现方法及装置 |
CN103858386A (zh) * | 2011-08-02 | 2014-06-11 | 凯为公司 | 通过优化的决策树进行的包分类 |
CN104113516A (zh) * | 2013-04-19 | 2014-10-22 | 中国移动通信集团设计院有限公司 | 一种识别防火墙的规则冲突的方法和终端 |
CN104579941A (zh) * | 2015-01-05 | 2015-04-29 | 北京邮电大学 | 一种OpenFlow交换机中的报文分类方法 |
CN104718731A (zh) * | 2012-06-27 | 2015-06-17 | 华为技术有限公司 | 三重内容可寻址内存协助的包分类 |
CN106487769A (zh) * | 2015-09-01 | 2017-03-08 | 深圳市中兴微电子技术有限公司 | 一种访问控制列表acl的实现方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366728B2 (en) * | 2004-04-27 | 2008-04-29 | International Business Machines Corporation | System for compressing a search tree structure used in rule classification |
CN101557312B (zh) * | 2009-05-08 | 2012-07-04 | 中兴通讯股份有限公司 | 控制网络设备的访问控制列表的方法及装置 |
CN102739520B (zh) * | 2012-05-31 | 2015-03-18 | 华为技术有限公司 | 查找方法及装置 |
CN104750834B (zh) * | 2015-04-03 | 2018-01-16 | 浪潮天元通信信息系统有限公司 | 一种规则的存储方法、匹配方法及装置 |
CN106326475B (zh) * | 2016-08-31 | 2019-12-27 | 中国科学院信息工程研究所 | 一种高效的静态哈希表实现方法及系统 |
-
2018
- 2018-11-30 WO PCT/CN2018/118782 patent/WO2020107484A1/zh active Application Filing
- 2018-11-30 CN CN201880095689.7A patent/CN112425131B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102487374A (zh) * | 2010-12-01 | 2012-06-06 | 中兴通讯股份有限公司 | 一种访问控制列表实现方法及装置 |
CN103858386A (zh) * | 2011-08-02 | 2014-06-11 | 凯为公司 | 通过优化的决策树进行的包分类 |
CN104718731A (zh) * | 2012-06-27 | 2015-06-17 | 华为技术有限公司 | 三重内容可寻址内存协助的包分类 |
CN104113516A (zh) * | 2013-04-19 | 2014-10-22 | 中国移动通信集团设计院有限公司 | 一种识别防火墙的规则冲突的方法和终端 |
CN104579941A (zh) * | 2015-01-05 | 2015-04-29 | 北京邮电大学 | 一种OpenFlow交换机中的报文分类方法 |
CN106487769A (zh) * | 2015-09-01 | 2017-03-08 | 深圳市中兴微电子技术有限公司 | 一种访问控制列表acl的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020107484A1 (zh) | 2020-06-04 |
CN112425131A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112425131B (zh) | 一种acl的规则分类方法、查找方法和装置 | |
US10389633B2 (en) | Hash-based address matching | |
US8089961B2 (en) | Low power ternary content-addressable memory (TCAMs) for very large forwarding tables | |
US7606236B2 (en) | Forwarding information base lookup method | |
US9246810B2 (en) | Hash-based load balancing with per-hop seeding | |
US7325059B2 (en) | Bounded index extensible hash-based IPv6 address lookup method | |
CN111937360B (zh) | 最长前缀匹配 | |
US7096277B2 (en) | Distributed lookup based on packet contents | |
EP3276501B1 (en) | Traffic classification method and device, and storage medium | |
US9319299B2 (en) | Method and apparatus for link aggregation using links having different link speeds | |
WO2021135491A1 (zh) | 流表的匹配方法及装置 | |
US10771386B2 (en) | IP routing search | |
US10623316B2 (en) | Scaling of switching tables with high bandwidth | |
WO2020073988A1 (zh) | 一种路由表项生成方法、字典树生成方法和装置 | |
CN105791455B (zh) | 三态内容寻址存储器tcam空间的处理方法及装置 | |
US20230367720A1 (en) | Data search method and apparatus, and integrated circuit | |
CN111819552B (zh) | 访问控制列表的管理方法及装置 | |
US10476785B2 (en) | IP routing search | |
CN112822112A (zh) | 一种路由地址存储方法及装置 | |
Mikawa et al. | Run-based trie involving the structure of arbitrary bitmask rules | |
Jia et al. | FACL: A Flexible and High-Performance ACL engine on FPGA-based SmartNIC | |
CN118101577A (zh) | 采用多域并行位向量索引的包分类算法及装置 | |
CN117640513A (zh) | 一种数据处理方法、装置和系统 | |
Čiča | IP lookup as a critical functionality of packet processors | |
CN115604208A (zh) | Tcam匹配查找方法与装置 |
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 |