CN117857447A - 规则处理、规则查找方法、装置、设备及可读存储介质 - Google Patents
规则处理、规则查找方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN117857447A CN117857447A CN202211536277.7A CN202211536277A CN117857447A CN 117857447 A CN117857447 A CN 117857447A CN 202211536277 A CN202211536277 A CN 202211536277A CN 117857447 A CN117857447 A CN 117857447A
- Authority
- CN
- China
- Prior art keywords
- rule
- address
- code
- packet
- encoding
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 119
- 238000012545 processing Methods 0.000 title claims abstract description 35
- 230000015654 memory Effects 0.000 claims abstract description 83
- 238000003672 processing method Methods 0.000 claims description 25
- 238000001914 filtration Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 abstract description 22
- 230000008569 process Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 26
- 238000004590 computer program Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004549 pulsed laser deposition Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- 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 Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了规则处理、规则查找方法、装置、设备及可读存储介质,属于通信技术领域。方法包括:编码设备获取多个规则地址;确定多个规则地址中的各个规则地址的覆盖关系;之后,编码设备可以根据各个规则地址的覆盖关系对各个规则地址进行编码,得到各个规则地址的第一编码,并将访问控制规则中包括的规则地址替换为规则地址的第一编码,其中,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则中包括的一个字段,第一编码的长度小于第一编码对应的规则地址的长度。通过将访问控制规则包括的规则地址编码为长度更小的第一编码,有效减少了访问控制规则占用的内存,从而减少了ACL的存储资源。
Description
本申请要求于2022年10月9日提交的申请号为202211226469.8、发明名称为“查找方法、装置和网络设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,特别涉及规则处理、规则查找方法、装置、设备及可读存储介质。
背景技术
报文在从源端口传输到目的端口的过程中,会在多个网络设备之间进行转发。而网络设备转发报文时需要从访问控制列表(access control list,ACL)中确定该报文匹配的访问控制规则,从而执行所匹配的访问控制规则指示的动作,以实现报文的转发。例如,访问控制规则中包括多个字段,通过将多个字段与报文中携带的字段进行匹配,以确定该访问控制规则与报文的匹配结果。
然而,随着通信技术的发展,通过网络设备传输的报文量日益增多,基于此,访问控制规则需要包括更多种类的字段,导致访问控制规则占用的内存过高。因此,需要一种规则处理方法,以节省需要查找的访问控制规则占用的内存。
发明内容
本申请提供了一种规则处理、规则查找方法、装置、设备及可读存储介质,以节省需要查找的访问控制规则占用的内存,技术方案如下:
第一方面,提供了一种规则处理方法,该方法包括:编码设备获取多个规则地址;确定多个规则地址中的各个规则地址的覆盖关系;之后,编码设备可以根据各个规则地址的覆盖关系对各个规则地址进行编码,得到各个规则地址的第一编码,并将访问控制规则中包括的规则地址替换为规则地址的第一编码,其中,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则中包括的一个字段,第一编码的长度小于第一编码对应的规则地址的长度。
通过将访问控制规则包括的规则地址编码为长度更小的第一编码,有效减少了访问控制规则占用的内存,从而减少了ACL的存储资源,减少包分类模块输入总线宽度,节省逻辑资源,而访问控制规则的长度减少后,访问控制规则内可以增加其他匹配字段,规则扩展性增加。并且,由于第一编码是根据各个规则地址的覆盖关系确定,第一编码之间的覆盖关系与各个规则地址之间的覆盖关系一致,使得替换后的访问控制规则能够用于执行报文匹配过程。
在一种可能的实现方式中,获取多个规则地址,包括:编码设备获取多条访问控制规则;从多条访问控制规则中分别提取初始地址,得到多个初始地址;对多个初始地址中重复的初始地址进行过滤,将过滤得到的初始地址作为多个规则地址。过滤掉初始地址中的重复部分,有效控制需要编码的规则地址的数量,进而减少编码任务量,提高编码效率。
在一种可能的实现方式中,根据各个规则地址的覆盖关系对各个规则地址进行编码,得到各个规则地址的第一编码,包括:按照各个规则地址的覆盖关系将多个规则地址划分到不同分组,其中,划分得到的一个分组中包括一个规则地址和该规则地址覆盖的至少一个规则地址;之后,编码设备可以以分组为单位,对各个分组内包括的各个规则地址进行编码,得到各个规则地址的第二编码;再根据第二编码确定第一编码。将多个规则地址划分到不同的分组中,再以分组为单位进行编码,将多个规则地址的编码任务拆分执行,执行效率高。
在一种可能的实现方式中,对各个分组内包括的各个规则地址进行编码,得到各个规则地址的第二编码,包括:根据各个分组包括的规则地址的数量确定各个分组的编码长度;随后,编码设备按照各个分组的编码长度对各个分组包括的规则地址进行编码,得到各个分组包括的规则地址的初始编码;组合任一规则地址在不同分组内编码得到的初始编码,得到任一规则地址的第二编码,其中,一个分组内包括的多个规则的初始编码不同。先根据分组包括的规则地址数量确定最少需要多少个码字才可以区分开该分组内包括的规则地址,也即编码长度,从而实现初始编码的长度的限制,由此得到的第二编码长度小。
在一种可能的实现方式中,将任一规则地址在不同分组内编码得到的初始编码进行组合之前,还包括:基于任一规则地址位于一个分组内,且不同分组中不存在级别高于任一规则地址位于的分组,将参考编码作为任一规则地址在其他分组的初始编码,其中,分组的级别根据分组包括的规则地址的覆盖关系确定,参考编码按照参考组的编码长度编码得到,而参考组属于级别低于任一规则地址位于的一个分组的分组;或者,基于任一规则地址位于一个分组内,且不同分组中存在级别高于任一规则地址位于的分组,确定覆盖任一规则地址的基础地址,随后,将基础地址在其他分组的初始编码作为任一规则地址在其他分组的初始编码。由于还存在规则地址只位于一个分组,导致该规则地址只有一个初始编码的情况,因此,还需要设置该规则地址的另一个初始编码,针对规则地址位于的分组属于不同级别,编码设备可通过不同方式设置初始编码,灵活度高。
在一种可能的实现方式中,对各个分组内包括的各个规则地址进行编码,得到各个规则地址的第二编码,包括:根据各个分组包括的规则地址的重合情况对各个分组包括的规则地址进行调整,以使调整后的不同分组包括的规则地址不同;之后,编码设备可确定各个调整后的分组的前缀编码;再根据各个调整后的分组的前缀编码生成各个调整后的分组包括的规则地址的第二编码,其中,前缀编码用于指示调整后的分组内包括的各个规则地址的第二编码的相同部分。在确定分组的前缀编码后,可以直接根据前缀编码确定该规则地址的第二编码,确定过程简单,并且,第二编码可以是组合初始编码得到,也可以是基于前缀编码确定,获取方式多样,通用性广。
在一种可能的实现方式中,确定各个调整后的分组的前缀编码,包括:根据各个调整后的分组包括的规则地址的数量,确定各个调整后的分组的编码长度;按照各个调整后的分组的编码长度从多个调整后的分组中选择至少两个调整后的分组进行合并,从而根据合并结果确定各个调整后的分组的前缀编码。根据编码长度选择分组进行合并,以控制合并得到的分组的编码长度,基于此种方式获取的前缀编码,所生成的第二编码的长度得到控制与优化。
在一种可能的实现方式中,根据第二编码确定第一编码,包括:将第二编码作为第一编码;或者,从第二编码中选择至少一个码字,将至少一个码字替换为掩码,将替换掩码之后的码字作为第一编码。不限定根据第二编码确定第一编码的方式,灵活度高。
在一种可能的实现方式中,得到各个规则地址的第二编码之后,还包括:存储第二编码与规则地址的第一对应关系,以根据第一对应关系确定报文匹配的访问控制规则。通过第一对应关系,后续在确定报文匹配的访问控制规则时,无需将访问控制规则中携带的第一编码还原成规则地址,匹配过程涉及的操作简单,效率高。
在一种可能的实现方式中,规则地址包括访问控制规则中的源地址和目的地址中的至少一种。本申请不限定规则地址的类型和数量,通用性高。
第二方面,提供了一种规则查找方法,该方法包括:查找设备接收待转发的报文;之后,确定该报文匹配的访问控制规则,访问控制规则中会包括基于规则地址的覆盖关系对规则地址进行编码得到的第一编码,而第一编码的长度小于规则地址的长度,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段。
由于访问控制规则中包括的第一编码的长度小于规则地址,该访问控制规则占用的内存小,并且在进行规则查找时,无需对第一编码进行解码,即可确定报文匹配的访问控制规则,规则查找涉及的操作简单,效率更高。
在一种可能的实现方式中,确定报文匹配的访问控制规则,包括:确定报文地址匹配的规则地址;根据报文地址匹配的规则地址查找规则地址与编码的第一对应关系,确定与报文地址匹配的规则地址对应的编码,将确定出的编码作为与报文地址匹配的第二编码;之后,查找设备根据第二编码查找得到报文匹配的访问控制规则,该报文匹配的访问控制规则包括的第一编码与第二编码匹配。通过第一对应关系,无需对编码进行解码,即可确定出报文地址匹配的第二编码,由于第二编码可以直接与第一编码匹配,因此,可以利用第二编码在访问控制规则中查找,查找过程简单,查找效率高。
在一种可能的实现方式中,规则地址包括访问控制规则中的源地址和目的地址中的至少一种。不限定规则地址,灵活度高。
第三方面,提供了一种规则处理装置,该装置应用于编码设备,装置包括:获取模块,用于获取多个规则地址,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段;确定模块,用于确定多个规则地址中的各个规则地址的覆盖关系;编码模块,用于根据各个规则地址的覆盖关系对各个规则地址进行编码,得到各个规则地址的第一编码,将访问控制规则中包括的规则地址替换为规则地址的第一编码,第一编码的长度小于第一编码对应的规则地址的长度。
在一种可能的实现方式中,获取模块,用于获取多条访问控制规则;从多条访问控制规则中分别提取初始地址,得到多个初始地址;对多个初始地址中重复的初始地址进行过滤,将过滤得到的初始地址作为多个规则地址。
在一种可能的实现方式中,编码模块,用于按照各个规则地址的覆盖关系将多个规则地址划分到不同分组,一个分组包括一个规则地址和一个规则地址覆盖的至少一个规则地址;对各个分组内包括的各个规则地址进行编码,得到各个规则地址的第二编码;根据第二编码确定第一编码。
在一种可能的实现方式中,编码模块,用于根据各个分组包括的规则地址的数量确定各个分组的编码长度;按照各个分组的编码长度对各个分组包括的规则地址进行编码,得到各个分组包括的规则地址的初始编码,一个分组包括的多个规则地址的初始编码不同;将任一规则地址在不同分组内编码得到的初始编码进行组合,得到任一规则地址的第二编码。
在一种可能的实现方式中,编码模块,还用于基于任一规则地址位于一个分组内,且不同分组中不存在级别高于任一规则地址位于的分组,将参考编码作为任一规则地址在其他分组的初始编码,分组的级别根据分组包括的规则地址的覆盖关系确定,参考编码按照参考组的编码长度编码得到,参考组为级别低于一个分组的分组;或者,基于任一规则地址位于一个分组内,且不同分组中存在级别高于任一规则地址位于的分组,确定覆盖任一规则地址的基础地址,将基础地址在其他分组的初始编码作为任一规则地址在其他分组的初始编码。
在一种可能的实现方式中,编码模块,用于根据各个分组包括的规则地址的重合情况对各个分组包括的规则地址进行调整,调整后的不同分组包括的规则地址不同;确定各个调整后的分组的前缀编码,前缀编码用于指示调整后的分组内包括的各个规则地址的第二编码的相同部分;根据各个调整后的分组的前缀编码生成各个调整后的分组包括的规则地址的第二编码。
在一种可能的实现方式中,编码模块,用于根据各个调整后的分组包括的规则地址的数量,确定各个调整后的分组的编码长度;按照各个调整后的分组的编码长度从多个调整后的分组中选择至少两个调整后的分组进行合并,根据合并结果确定各个调整后的分组的前缀编码。
在一种可能的实现方式中,编码模块,用于将第二编码作为第一编码;或者,从第二编码中选择至少一个码字,将至少一个码字替换为掩码,将替换掩码之后的码字作为第一编码。
在一种可能的实现方式中,装置还包括:存储模块,用于存储第二编码与规则地址的第一对应关系,第一对应关系用于确定报文匹配的访问控制规则。
在一种可能的实现方式中,规则地址包括访问控制规则中的源地址和目的地址中的至少一种。
第四方面,提供了一种规则查找装置,该装置应用于查找设备,装置包括:接收模块,用于接收待转发的报文;确定模块,用于确定报文匹配的访问控制规则,访问控制规则包括基于规则地址的覆盖关系对规则地址进行编码得到的第一编码,第一编码的长度小于规则地址的长度,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段。
在一种可能的实现方式中,确定模块,用于确定报文地址匹配的规则地址;根据报文地址匹配的规则地址查找规则地址与编码的第一对应关系,确定与报文地址匹配的规则地址对应的编码,将确定出的编码作为与报文地址匹配的第二编码;根据第二编码查找得到报文匹配的访问控制规则,报文匹配的访问控制规则包括的第一编码与第二编码匹配。
在一种可能的实现方式中,规则地址包括访问控制规则中的源地址和目的地址中的至少一种。
第五方面,提供了一种计算设备,设备包括处理器;该处理器用于加载并运行至少一条指令,以使计算设备实现第一方面任一所述的规则处理方法,或者实现第二方面任一所述的规则查找方法。
在一种可能的实现方式中,计算设备还包括存储器,该存储器用于存储至少一条指令。
第六方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有至少一条指令,指令由处理器加载并执行以实现第一方面任一所述的规则处理方法,或者实现第二方面任一所述的规则查找方法。
第七方面,提供了一种计算机程序产品,计算机程序产品包括计算机程序/指令,计算机程序/指令被处理器执行,以使计算机实现第一方面任一所述的规则处理方法,或者实现第二方面任一所述的规则查找方法。
第八方面,提供了一种规则管理系统,该规则管理系统包括编码设备和查找设备,编码设备用于实现第一方面任一所述的规则处理方法,查找设备用于实现第二方面任一所述的规则查找方法。
第九方面,提供了一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该处理器执行第一方面或第一方面的任一种可能的实施方式中的方法,或者执行第二方面或第二方面的任一种可能的实施方式中的方法。
可选地,所述处理器为一个或多个,所述存储器为一个或多个。
可选地,所述存储器可以与所述处理器集成在一起,或者所述存储器与处理器分离设置。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型以及存储器与处理器的设置方式不做限定。
第十方面,提供了一种芯片,包括处理器,用于从存储器中调用并运行所述存储器中存储的运行程序指令或代码,使得安装有所述芯片的通信设备执行上述各方面中的方法。
第十一方面,提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的代码,当所述代码被执行时,所述处理器用于执行上述各方面中的方法。
应当理解的是,上述第三方面至第十一方面的技术方案及对应的可能的实现方式所取得的有益效果可以参见上述对第一方面和第二方面及其对应的可能的实现方式的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种实施环境的示意图;
图2为本申请实施例提供的一种规则处理方法的流程图;
图3为本申请实施例提供的一种访问控制规则的结构示意图;
图4为本申请实施例提供的另一种访问控制规则的结构示意图;
图5为本申请实施例提供的一种规则地址的覆盖关系的示意图;
图6为本申请实施例提供的另一种规则地址的覆盖关系的示意图;
图7为本申请实施例提供的又一种规则地址的覆盖关系的示意图;
图8为本申请实施例提供的一种分组示意图;
图9为本申请实施例提供的一种分组的合并示意图;
图10为本申请实施例提供的一种字段拼接示意图;
图11为本申请实施例提供的一种规则插入的流程图;
图12为本申请实施例提供的一种规则查找方法的流程图;
图13为本申请实施例提供的一种第一编码和第二编码的传输示意图;
图14为本申请实施例提供的另一种第一编码和第二编码的传输示意图;
图15为本申请实施例提供的一种规则查找的过程示意图;
图16为本申请实施例提供的一种规则处理装置的结构示意图;
图17为本申请实施例提供的一种规则查找装置的结构示意图;
图18为本申请实施例提供的一种网络设备的结构示意图;
图19为本申请实施例提供的另一种网络设备的结构示意图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
随着通信技术的发展,越来越多的应用场景涉及到报文传输。其中,报文的传输是通过多个网络设备的转发实现。网络设备在转发报文时,会从报文的报文头中提取多个字段,根据提取出的多个字段在ACL存储的多条访问控制规则中进行查找,以确定该报文匹配的访问控制规则。例如,ACL存储的访问控制规则包括多个字段,将访问控制规则中包括的多个字段与从报文头中提取的多个字段进行匹配,以根据字段匹配结果确定与报文匹配的访问控制规则。在确定与该报文匹配的访问控制规则后,网络设备可对报文执行所匹配的访问控制规则对应的动作,例如对报文执行过滤、限速、统计等动作,以实现报文的转发。
然而,随着需要传输的报文量越来越多,访问控制规则也需要包括更多种类的字段,导致访问控制规则占用的内存过高,进而对ACL的存储空间带来挑战。如果只是在将访问控制规则存储到ACL时减少访问控制规则中包括的字段数量。例如从访问控制规则包括的多个字段中选择部分字段,将仅携带部分字段的访问控制规则存储在ACL中,虽然能减少访问控制规则占用的内存。但是由于在存储时一个ACL对应一种部分字段的选择方式,会出现一个ACL按照一种选择方式来存储访问控制规则的情况,用于匹配的字段有限,通用性差。对此,本申请实施例提供了一种规则处理方法,以节省需要查找的访问控制规则占用的内存。
图1为本申请实施例提供的一种实施环境的示意图,实施环境包括:编码设备11和查找设备12。其中,编码设备11用于按照各个规则地址的覆盖关系对各个规则地址进行编码,得到各个规则地址的第一编码,并将访问控制规则中包括的规则地址替换为第一编码,将替换后的访问控制规则发送给查找设备12。而查找设备12获取到访问控制规则后,会从中确定与接收到的报文匹配的访问控制规则。可选地,本申请提供的规则处理方法可以由一台编码设备独立执行,也可由包括多台编码设备的编码设备集群交互执行。而规则查找方法也同样可以由一台查找设备独立执行,或者由包括多台查找设备的查找设备集群交互执行。
示例性地,编码设备11或查找设备12可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。服务器可以是物理服务器,还可以是提供云计算服务的云服务器。在一些实施例中,编码设备11或查找设备12也可以是台式机、笔记本电脑或者智能手机等终端设备。编码设备11或查找设备12还可以是例如路由器或交换机等可以支持数据处理的网络设备,本申请实施例对编码设备11或查找设备12的产品形态不进行限定。
本申请实施例提供一种规则处理方法,该规则处理方法可应用于上述图1所述的实施环境,该方法可由图1所示的编码设备11执行,该方法的流程图如图2所示,包括S201-S203。
S201,编码设备获取多个规则地址,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段。
示例性地,一条访问控制规则除了包括对报文执行的动作,还会包括多个字段,该多个字段用于与报文中携带的多个字段进行匹配,进而基于字段的匹配结果确定报文与访问控制规则的匹配结果。可选地,访问控制规则中包括的字段例如是互联网协议(internetprotocol,IP)、源地址、源端口号、目的地址和目的端口号等。
以上是对访问控制规则包括的字段的描述,接下来结合附图对访问控制规则中的字段做进一步说明。图3为本申请实施例提供的一种访问控制规则的结构示意图,其示出了当访问控制规则的类型为互联网协议版本第4版(internet protocol version 4,IPv4)规则时,访问控制规则中包括的字段以及各个字段的长度。参见图3,访问控制规则中包括的字段分别为长度为8比特(bits)的IP协议、长度为32比特的源IP地址、长度为16比特的源端口号、长度为32比特的目的IP地址以及长度为16比特的目的端口号。
图4为本申请实施例提供的另一种访问控制规则的结构示意图,其示出了当访问控制规则的类型为互联网协议第6版(internet protocol version 6,IPv6)规则时,访问控制规则包括的字段以及各个字段的长度。图4示出的字段与图3示出的字段含义类似,区别在于部分字段的长度不同,可参见上述实施例中关于图3的字段的描述,在此不再重复说明。
基于上述举例可知,访问控制规则中会包括用于与报文地址匹配的字段,该字段可以是源地址或目的地址中的至少一种。例如图3或图4示出的源IP地址和目的IP地址。该用于与报文匹配的字段也即是规则地址,可选地,编码设备获取规则地址的过程包括:获取多条访问控制规则;从多条访问控制规则中分别提取初始地址,得到多个初始地址;对多个初始地址中重复的初始地址进行过滤,将过滤得到的初始地址作为多个规则地址。
示例性地,编码设备获取其他网络设备发送的访问控制规则,或者,编码设备提供信息输入控件,编码对象基于信息输入控件进行访问控制规则的输入,编码设备由此获取多条访问控制规则。其中,编码对象为需要将访问控制规则存储在ACL的对象。在一种可能的实现方式中,编码设备获取的多条访问控制规则需要存储在ACL中。而多条访问控制规则可以存储在同一个ACL,也可以存储在不同的ACL。例如,基于存储ACL的网络设备的内存空间有限,无法将多条访问控制规则存储在一个内存空间内,因此,将多条访问控制规则存在不同的ACL中。
但无论访问控制规则属于上述何种获取途径或是何种存储情况,编码设备对获取的访问控制规则的处理过程是相似的,均可从访问控制规则中提取初始地址。示例性地,编码设备将访问控制规则中的源地址提取出来,作为初始地址。编码设备也可以将访问控制规则中的目的地址提取出来,作为初始地址,或者提取源地址与目的地址,将源地址和目的地址均作为初始地址。但需要说明的是,无论是将源地址作为初始地址,还是将目的地址作为初始地址,亦或是将源地址和目的地址一起作为初始地址。基于上述三种初始地址确定规则地址,并根据规则地址编码得到第一编码的过程是类似的。故本申请实施例暂以将源地址作为初始地址为例,对根据初始地址确定规则地址,编码规则地址的过程进行举例说明。初始地址为其他情况的编码过程,可参考类似描述,在此不再赘述。
在一种可能的情况下,编码设备从不同访问控制规则中提取的初始地址,可能会相同,也即存在重复的初始地址。例如,存在两个访问控制规则指示的动作不同,但是携带的字段相同,这两个访问控制规则中的初始地址相同。可选地,一个初始地址由两部分组成,分别为值(value)及前缀长度(prefix_len)。例如,访问控制规则1的初始地址10.111.0.0/16的value为10.111.0.0,prefix_len为16比特。当两个初始地址的前缀长度相同,且值也相同时,确定两个初始地址相同。编码设备确定出相同的初始地址后,将相同的初始地址进行过滤,保留其中一个。将过滤后的多个初始地址作为规则地址。通过筛选掉初始地址中重复的初始地址,从而减少需要编码的规则地址的数量,提高编码效率。
S202,编码设备确定多个规则地址中的各个规则地址的覆盖关系。
示例性地,覆盖关系用于指示两个规则地址的数字重复情况。两个规则地址的覆盖关系包括一个规则地址覆盖另一个规则地址,和一个规则地址不覆盖另一个规则地址这两种情况。表1为本申请实施例提供的一组规则地址,接下来以表1为例对规则地址的覆盖关系进行举例说明。
表1
访问控制规则 | 规则地址 |
1 | 10.111.0.0/16 |
2 | 10.111.1.1/32 |
3 | 10.111.3.0/24 |
4 | 10.111.3.1/32 |
5 | 10.111.3.2/32 |
6 | 10.111.3.10/32 |
7 | 22.128.55.0/25 |
8 | 33.135.0.0/16 |
表1中示出了访问控制规则1~访问控制规则8这8条访问规则对应的规则地址。由表1中示出的规则地址可以看出,规则地址由多个小数点“.”划分成了多组数字,一组数字代表一个网络节点,由多个网络节点组成了作为规则地址的主机IP地址。由于网络节点会存在节点覆盖现象,例如一个网络节点的集合使得网络中的每一条边都至少有一端接触集合中的网络节点,那么该网络节点覆盖了集合中的网络节点。而网络节点之间的覆盖关系可以由网络节点的数字大小体现,数字小的网络节点可以覆盖数字大的网络节点。例如规则地址1(访问控制规则1的规则地址)的最后两组数字为0.0,大于规则地址2的最后两组数字1.1,确定规则地址1的网络节点覆盖了规则地址2的网络节点。
基于节点覆盖现象的存在,由多个网络节点的数字拼接得到的规则地址之间也会存在覆盖关系,这也可以认为是规则地址存在覆盖关系的原因。例如表1中的规则地址1覆盖了规则地址2。在一种可能的实现方式中,覆盖关系可以根据规则地址的长度与数字确定。基于一个规则地址的长度X小于另一个规则地址的长度L,且长度为X的规则地址的数字与长度为L的规则地址的前X的数字相同,确定该规则地址覆盖了另一个规则地址。其中,X与L均为正整数,L大于X。也就是说上述规则地址1和规则地址2在转换为二进制比特值的时候,规则地址1的长度要小于规则地址2的长度,且规则地址2的前X数字与规则地址1相同。
基于上述内容可以理解,由于规则地址1覆盖了规则地址2,当报文携带的报文地址与规则地址2匹配成功,由于规则地址2中前X位的数字是与规则地址1相同的,因此该报文的报文地址也能与规则地址1匹配成功。也就是说,当报文携带的报文地址与一个规则地址匹配成功,那么该报文地址也与覆盖该规则地址的规则地址匹配成功。
又由于对规则地址进行编码的过程中需要保证第一编码与报文地址的匹配关系不变。也即,当规则地址与报文地址匹配成功时,编码该规则地址得到的第一编码也能与该报文地址匹配。第一编码需要保留规则地址之间的覆盖关系。故此,在对规则地址编码之前,编码设备需要根据各个规则地址的长度和比特值确定各个规则地址的覆盖关系。
可选地,编码设备根据各个规则地址的长度与数字确定各个规则地址的覆盖关系。表2为本申请实施例提供的一组规则地址。
表2
访问控制规则 | 初始地址 |
A | 10****** |
B | 100***** |
C | 1011**** |
D | 10100*** |
E | 10111*** |
F | 101010** |
G | 101101** |
H | 1010100* |
I | 1010100* |
J | 1011**** |
其中,表2中的初始地址为了方便说明,均以8比特长度来表示。编码设备在获取表2示出的多个初始地址后,先过滤表2中相同也即重复的初始地址,如访问控制规则I与访问控制规则H的初始地址相同,访问控制规则J与访问控制规则C的初始地址相同,过滤访问控制规则I的初始地址与访问控制规则J的初始地址。根据过滤得到的多个规则地址的长度与比特值,确定各个规则地址之间的覆盖关系为规则地址A能覆盖规则地址B、规则地址C、规则地址D和规则地址F,规则地址C能覆盖规则地址E和规则地址G,规则地址F能覆盖规则地址H。其中,规则地址A是指从访问控制规则A中提取的初始地址,其他规则地址的含义与规则地址A的含义类似,可参考相关描述,在此暂不一一重复说明。
在一种可能的实现方式中,各个规则地址的覆盖关系可通过多叉树的形式进行表示,例如图5所示的多叉树,用于表示表1中的多个规则地址之间的覆盖关系。而表2中的规则地址也可以用多叉树来表示它们之间的覆盖关系。
可选地,编码设备按照上述表2中的多个规则地址的覆盖关系建立的一个如图6所示的初始的多叉树。其中,图6的多叉树是按照各个规则地址的非mask(掩码)位数分层排列的,可选地,规则地址中的掩码用“*”来表示,非掩码则是“0”或“1”。图6中的白色圆形用于表示不存在规则地址的虚拟节点,黑色圆形用于表示存在规则地址的实际节点。
由于表2中不存在非掩码位数为0位和为1位的规则地址,因此,图6中用于表示这两种非掩码位数的层级上的节点属于虚拟节点用白色圆形表示。而规则地址A为10******,非掩码位数为2位,因此用于表示非掩码位数为2位的层级上具有一个实际节点,该实际节点也就是规则地址A。其他规则地址在图6的位置含义与规则地址A在图6的位置含义类似,可参考相关描述,在此不再赘述。图6中圆形之间的箭头用于指示规则地址之间的覆盖关系,例如代表规则地址A的黑色圆形指向了代表规则地址B的黑色圆形,是指规则地址A覆盖规则地址B。
按照非掩码位数分层构建分叉树,使得构建过程更有条理性。但在后续按照覆盖关系进行编码时,需要编码的是规则地址,对于分叉树上的虚拟节点,则不存在需要编码的规则地址。因此,可对分叉树进一步简化,省略分叉树中的虚拟节点。以图6为例,简化图6的分叉树得到的覆盖关系图如图7所示。通过覆盖关系图将多个规则地址之间的覆盖关系清楚的展现处理,以方便后续根据覆盖关系执行编码的操作。
S203,编码设备根据各个规则地址的覆盖关系对各个规则地址进行编码,得到各个规则地址的第一编码,将访问控制规则中包括的规则地址替换为规则地址的第一编码,第一编码的长度小于第一编码对应的规则地址的长度。
在一种可能的实现方式中,编码设备根据各个规则地址的覆盖关系进行编码的过程包括:按照各个规则地址的覆盖关系将多个规则地址划分到不同分组,一个分组包括一个规则地址和一个规则地址覆盖的至少一个规则地址;对各个分组内包括的各个规则地址进行编码,得到各个规则地址的第二编码;根据第二编码确定第一编码。
由于当一个规则地址覆盖另一个规则地址,那么该规则地址也会覆盖另一个规则地址所覆盖的规则地址,例如上述表2所示的规则地址A覆盖规则地址H。也就是说当上述规则地址A覆盖规则地址F,规则地址F覆盖规则地址H的覆盖关系已知,那么规则地址A覆盖规则地址H的覆盖关系也是可以直接得到。因此,分组的时候可以不考虑规则地址A和规则地址H之间的覆盖关系。也即划分后的一个分组内覆盖其他规则地址的规则地址的数量为1个,对于被覆盖的规则地址,该分组内不存在该规则地址覆盖的规则地址。
继续以上述表2示出的规则地址为例,在按照覆盖关系划分时,虽然被规则地址A覆盖的规则地址F还会覆盖规则地址H。但由于一个分组内存在的可以覆盖其他规则地址的规则地址的数量为1个,划分结果为规则地址A与规则地址F位于一个分组,而规则地址F和规则地址H位于另一个分组。
此外,对于分组内包括的被覆盖的规则地址的数量,可以是该规则地址覆盖的全部规则地址。例如表2中,由于规则地址A覆盖了规则地址B、规则地址C、规则地址D和规则地址F,则划分得到的一个分组包括上述五个规则地址。可选地,分组内包括的被覆盖的规则地址的数量,也可以是该规则地址覆盖的部分规则地址。由于根据包括全部规则地址和包括部分规则地址的分组,对规则地址进行编码的过程类似,下文在举例说明时,暂以包括全部规则地址的分组为例进行说明。
示例性地,划分得到的各个分组也可以用分叉树来表示。例如,对图7所示的分叉树进行划分,得到的多个分组如图8所示。划分得到的三个分组别为包括规则地址A、规则地址B、规则地址C、规则地址D和规则地址F的分组1,包括规则地址C、规则地址G和规则地址E的分组2,以及包括规则地址F和规则地址H的分组3。图8中的箭头用于表示覆盖关系,例如分组3中规则地址F指向规则地址H,就代表规则地址F覆盖了规则地址H。
编码设备在按照覆盖关系划分得到多个分组后,即可采用分组编码的方式,对分组内的规则地址编码,在一种可能的实现方式中,可通过包括但不限于如下两种方式,对分组内的规则地址进行编码。
编码方式一、根据各个分组包括的规则地址的数量确定各个分组的编码长度;按照各个分组的编码长度对各个分组包括的规则地址进行编码,得到各个分组包括的规则地址的初始编码,一个分组包括的多个规则地址的初始编码不同;将任一规则地址在不同分组内编码得到的初始编码进行组合,得到任一规则地址的第二编码。
在一种可能的实现方式中,确定各个分组的编码长度的公式为:W=logkN。其中,W为分组的编码长度,N为分组内包括的规则地址的数量,k为用于编码的码字种类数。例如,当编码设备编码时采用的是二进制码字“0”和“1”,那么码字种类数为2,此种情况下,确定编码长度的公式为W=log2N。通过公式logkN可以计算出当采用k种码字时,最少需要多少个码字才可以区分开N个规则地址。由于采用不同种类数的码字编码得到第二编码的过程类似,本申请后续在介绍编码过程时,暂以采用“0”和“1”进行编码为例。
而编码设备在采用上述公式计算各个分组的编码长度时,由于编码长度用于表示初始编码的码字个数。因此,确定的编码长度需为正整数。所以在根据上述公式确定编码长度的过程中,编码设备遵循向上取整的规则。也即,当公式计算出来的结果为整数时,将计算结果作为该分组的编码长度。以图8中的分组3为例,分组3中包括的规则地址数量为2,log22=1,确定分组3的编码长度为1。而当公式计算出来的结果不为整数时,取大于计算结果的整数中最小的一个整数。以分组为图8中的分组1为例,分组1中包括的规则地址的数量为5,3为大于log25且最接近log25的正整数,确定分组1的编码长度为3。分组2中包括的规则地址数据为3,2为大于log23且最接近log23的正整数。
随后,编码设备可根据编码长度对该分组内包括的规则地址进行编码,得到初始编码,同一个分组内不同规则地址的初始编码不同。继续以图8的分组1为例,各个规则地址的初始编码分别是:规则地址A:100,规则地址B:000,规则地址C:001,规则地址D:010和规则地址F:011。图8的分组2中各个规则地址的初始编码分别是:规则地址C:10,规则地址G:00和规则地址E:01。图8中的分组3中各个规则地址的初始编码分别是:规则地址F:1和规则地址H:0。
可选地,由于不同规则地址的第二编码的长度需要统一,因此,编码设备还需要统一同一级别的分组内的规则地址的初始编码的长度。分组的级别根据分组包括的规则地址的覆盖关系确定,这里为了便于理解,将一个分组内被覆盖的规则地址称为参考地址,将分组内用于覆盖参考地址的规则地址称为基础地址。仍以图8为例,分组3中的两个规则地址,由于规则地址F和规则地址H之间的覆盖关系为规则地址F覆盖规则地址H,因此,规则地址F属于分组3中的基础地址,规则地址H为分组3中的参考地址。
示例性地,基于任一分组内的基础地址,在其他分组内属于被覆盖的参考地址,确定任一分组的级别比其他分组的级别低一级。继续以图8示出的分组举例说明,由于分组1中的规则地址A,在多个规则地址中不存在覆盖它的规则地址,因此,确定分组1的级别最高,设置为第一级。而分组2中作为基础地址的规则地址C,在分组1中被规则地址A覆盖,因此,确定分组2的级别比分组1的级别低一级,分组2的级别为第2级。同理,分组3的级别也为第2级。
可选地,基于同一级别的分组存在编码长度不同的情况,编码设备将编码长度短的分组按照编码长度长的分组补齐。这里的补齐是指对编码长度短的分组的初始编码补充比特位数。补齐的方式例如是在高位补0,以分组3为例,由于分组2的编码长度为2,因此需要对分组3中的初始编码在高位补0,得到补齐后的初始编码为规则地址F:01和规则地址H:00。当然,还可以采用其他码字在其他位置补齐,例如在低位补1。
此外,统一初始编码的长度只要保证在拼接初始编码之前即可,编码设备可以选择如上述实施例所示在编码得到初始编码之后进行补齐,也可以选择在对规则地址进行编码得到初始编码前,通过计算同一级别的各个分组的编码长度,将最长的编码长度作为该级别的各个分组的编码长度。例如,针对分组2的编码长度为2,而分组3的编码长度为1的情况,调整分组3的编码长度为2,基于调整后的编码长度对分组3中包括的规则地址进行编码,得到分组中包括的规则地址的初始编码。
无论编码设备在何种时机统一初始编码的长度,均可拼接统一长度的初始编码,得到第二编码。可选地,对于一个规则地址来说,多个规则地址中可能存在覆盖该规则地址的规则地址,也可能存在被该规则地址覆盖的规则地址,因此,一个规则地址可能会被分到两个分组当中,也就会得到两个初始编码。编码设备可以组合该规则地址在两个分组内的初始编码,得到该规则地址的第二编码。
示例性地,组合公式为:第二编码=(初始编码1<<max(W2,W3))|初始编码2。其中,初始编码1位于的分组的级别高于初始编码2位于的分组的级别,“<<”是指向左移位,而max(W2,W3)是指初始编码1向左移位的位数为W2和W3中的最大值。W2和W3是不同分组的编码长度,不同分组的级别与初始编码2对应的级别相同。例如初始编码2的分组的级别为第二级,W2和W3也就是第二级的各个分组的编码长度,本申请提供的组合公式是以同一级别存在两个分组的情况为例,针对同一级别存在更多的分组,那么左移的位数为所有分组中编码长度的最大值。
以规则地址C为例,分组1的级别高于分组2的级别,因此初始编码1为在分组1的初始编码001,初始编码2为在分组2的初始编码10。分组2这一级别具有两个分组,编码长度分别为W2=2和W3=1,基于此,将001向左偏移两位。“|”用于表示或运算,也即移位后的初始编码1会与初始编码2进行或运算,得到的结果与将初始编码2填在初始编码1移位后右边空置的比特位上一致,组合得到的规则地址C的第二编码00110。规则地址F的第二编码为01101。
由于还存在规则地址只位于一个分组内的情况,那么规则地址也就只有一个初始编码,因此,编码设备需要再获取一个初始编码用于组合。而针对规则地址位于的分组的情况不同,对应的获取方式也存在区别。
情况一为多个分组中不存在级别高于任一规则地址所位于的分组,也就是这个规则地址的分组级别为最高级。继续以图8示出的分组为例,分组1为级别最高的分组,而分组1中规则地址A由于多条规则地址中不存在覆盖它的规则地址,因此,规则地址A只位于分组1,而分组1中的规则地址B和规则地址D,由于多条规则地址中不存在被规则地址B和规则地址D覆盖的规则地址,因此,规则地址B和规则地址D只位于分组1。
对于情况一,编码设备可将参考编码作为任一规则地址在其他分组的初始编码,将规则地址的初始编码和参考编码进行组合,得到第二编码。其中,参考编码是按照参考组的编码长度编码得到,参考组为级别低于任一规则地址所位于的分组的分组。例如,低于分组1的分组为分组2,其编码长度为2,设置参考编码为00,由此组合得到的规则地址A的第二编码为10000,规则地址B的第二编码为00000,规则地址D的第二编码为01000。
情况二为存在其他分组的级别高于该任一规则地址位于的分组的级别。仍以图8示出的3个分组为例,分组2中的规则地址G和规则地址E,由于多条规则地址中不存在被规则地址G和规则地址E覆盖的规则地址,因此,规则地址G和规则地址E只位于分组2中,而分组2并非级别最高的分组。
此种情况下,编码设备确定覆盖任一规则地址的基础地址,将基础地址在其他分组的初始编码作为任一规则地址在其他分组的初始编码。以任一规则地址为位于分组2中的规则地址G为例,覆盖任一规则地址的基础地址为规则地址C,那么基础地址在其他分组的初始编码也就是规则地址C在分组1中的初始编码001。将初始编码001与规则地址G在分组2中的初始编码00进行组合,得到规则地址G的第二编码00100。同理,得到规则地址E的第二编码00101,得到规则地址H的第二编码01100。通过分组的方式分别对规则地址进行编码,保证各个规则地址的第二编码存在不同。
需要说明的是,上述举例旨在说明通过编码方式一对规则地址进行编码的过程,而非用于限定分组的级别数量以及组合顺序。划分多个规则地址得到的多个分组,可以为上述实施例示出的三个分组,也可以为更多分组。而分组的级别可以为两个级别,也可以为更多级别。当分组的级别大于2时,可以按照上述步骤从下向上或是从上向下迭代执行并组合。此外,组合顺序可以是上述举例的将级别高的分组的初始编码放在前,也可以是将级别低的分组的初始编码放在前,还可以是将两个初始编码按比特级穿插在一起,本申请实施例对此不进行限定。
编码方式二、根据各个分组包括的规则地址的重合情况对各个分组包括的规则地址进行调整,调整后的不同分组包括的规则地址不同;确定各个调整后的分组的前缀编码,前缀编码用于指示调整后的分组内包括的各个规则地址的第二编码的相同部分;根据各个调整后的分组的前缀编码生成各个调整后的分组包括的规则地址的第二编码。
在一种可能的实现方式中,由于按照上述实施例中的分组方式,会出现一个规则地址出现在两个分组的情况,因此,需要对分组中包括的规则地址进行调整,使得不同的分组中不存在重复的规则地址。继续以图8示出的分组为例,由于分组1中包括的规则地址C还位于分组2,分组1中包括的规则地址F还位于分组3中,因此,将规则地址C和规则地址F从分组1中移除,得到包括规则地址A、规则地址B和规则地址D的分组A,而分组2中包括的规则地址与分组3中包括的规则地址保持不变。
在对分组中包括的规则地址进行调整后,编码设备可确定调整后的分组的前缀编码,确定过程包括:根据各个调整后的分组包括的规则地址的数量,确定各个调整后的分组的编码长度;按照各个调整后的分组的编码长度从多个调整后的分组中选择至少两个调整后的分组进行合并,根据合并结果确定各个调整后的分组的前缀编码。
在一种可能的情况下,合并是基于编码时采用的码字种类数执行。合并的分组数量Y和码字种类数相同。也就是说,当编码设备采用0和1的两个码字进行编码时,由于码字种类数为2,则合并分组时是将两个分组进行合并,这样一来,合并在一起的分组可以一个对应0,一个对应1,以实现区分。可选地,编码设备合并分组时,是选择编码长度最短的Y个分组进行合并,而确定各个分组的编码长度与上述编码方式一中确定各个分组的编码长度的过程类似,可参考相关描述,此处不再赘述。
以Y等于2,多个分组为上述实施例中分组A、分组2和分组3为例,由于分组3的编码长度为1,分组2的编码长度为2,分组A的编码长度为2,上述三个分组的编码长度最短为1,第二短为2。因此,从分组2和分组A中随机选择一个分组2,将它和分组3进行合并。对于合并后的分组,其编码长度的计算公式为max(W2,W3)+1。其中,W2是分组2的编码长度,W3是分组3的编码长度,从W2和W3中选择最大值,是由于对于分组2来说最少需要W2个码字才可以区分其中的规则地址,而加1是由于在通过W2个码字对分组2内的几个规则地址进行区分后,还需要一个码字将分组2与分组3内的规则地址进行区分。通过上述计算公式确定合并后的分组的编码长度,以保证该合并后的分组中的各个规则地址的第二编码不同。
编码设备根据各个分组的编码长度从多个分组中挑选出两个分组中进行合并,之后再根据合并后还剩余的分组数量继续挑选两个分组进行合并,重复上述合并操作,直至合并后的分组数量为码字种类数2个,确定分组的合并结束。继续以上述实施例中的分组A、分组2和分组3为例,由于将分组2和分组3合并成一个分组后,还剩余的分组就是一个分组A和一个合并后的分组B,分组数量为2,等于码字种类数,编码设备结束分组的合并。
在一种可能的情况下,上述过程也可以用多叉树的形式来表现,将一个分组作为一个节点,合并分组的过程也即将多叉树转换为二叉树的过程。图9为本申请实施例提供的一种分组合并示意图,参见图9,合并后的二叉树存在两个分叉,分别为指向分组B和分组A的分叉1,和指向分组2和分组3的分叉2。
之后,编码设备可以根据分组结果确定各个分组的前缀编码。对于同一个分叉上的两个分组分别用0和1区分。由于需要统一不同分组内包括的规则地址的第二编码长度,对于编码长度短的分组,编码设备还会进行补码,例如图9所示的合并后的分组图,分组A的编码长度为2,分组B的编码长度为3,分组A的编码长度小于分组B的编码长度。因此,在分组A的分配的编码后面补上码字0以完成补码,由此确定出分组A的前缀编码为10。
而对于合并后的分组,编码设备也会进一步区分组内的两个分组,也即分组2和分组3,给分组2分配码字0,给分组3分配码字1作为区分,又基于编码长度统一的原则,编码设备在编码长度短的分组3的码字后面补上0,得到的分组3的前缀编码为010,分组2的前缀编码为00。
编码设备确定各个分组的前缀编码后,即可根据各个分组的前缀编码确定各个分组内包括的规则地址的第二编码。其中,确定第二编码的过程可以是按照分组的编码长度确定分组中各个规则地址的后续编码,将前缀编码与后续编码进行拼接。
例如分组A的前缀编码为10,分组A的编码长度为2,确定规则地址A的后续编码为00,得到分组A的第二编码为1000。其他规则地址的第二编码的确定过程与规则地址A的第二编码的确定过程类似,不再一一举例说明。编码设备根据上述操作确定规则地址B的第二编码为1001,规则地址D的第二编码为1010。分组2中包括的规则地址C的第二编码为0010,规则地址G的第二编码为0000,规则地址E的第二编码为0001。分组3中包括的规则地址F的第二编码为0101,规则地址H的第二编码为0100。
无论编码设备基于何种方式编码得到第二编码,均可根据第二编码确定第一编码,确定过程包括:将第二编码作为第一编码;或者,从第二编码中选择至少一个码字,将至少一个码字替换为掩码,将替换掩码之后的码字作为第一编码。可选地,编码设备在确定第一编码时,需要满足的约束条件为,参考地址的第二编码匹配参考地址对应的基础地址的第一编码。也就是说,当一个规则地址覆盖另一个规则地址时,该规则地址的第一编码与另一个规则地址的第二编码匹配。继续以上述图8所示的分组为例,以参考地址为规则地址H,基础地址为规则地址F为例,那么规则地址H的第二编码能匹配成功规则地址F的第一编码。可选地,第二编码匹配第一编码是指第一编码中非掩码值的码字与第二编码中的码字相同。例如第二编码0000与第一编码00**匹配。
此外,还存在一个约束条件为基础地址的第二编码不匹配基础地址对应的参考地址的第一编码。继续以规则地址H为参考地址,规则地址F为基础地址为例,那么规则地址F的第二编码不能匹配规则地址H的第一编码。编码设备可基于上述约束条件从第二编码中挑选出码字替换为掩码,实现第一编码的获取。
针对编码方式不同,编码设备可以根据不同选择原则挑选码字,以使替换掩码之后的码字满足上述约束条件。以编码方式一为例,由于一个第二编码是根据两个分组中的初始编码拼接得到,因此在确定哪些码字被替换为掩码时,可以是以初始编码为单位。基于该规则地址在分组中属于覆盖其他规则地址的基础地址,该规则地址在分组中的初始编码被调整为掩码。继续以规则地址C的第二编码00110为例,它由分组1中的初始编码001和分组2中的初始编码10组成,由于规则地址C在分组2中属于基础地址,因此,分组2中规则地址C的初始编码10需要被替换为掩码**。
可选地,基于任一规则地址在分组中属于被覆盖的参考地址,保留该规则地址在分组中的初始编码。继续以任一规则地址为规则地址C为例,由于规则地址C在分组1中属于参考地址,因此,编码设备保留规则地址C在分组1中的初始编码001,不会将其替换为掩码,由此得到的规则地址C的第一编码为001**。而针对参考编码对应的码字,编码设备也会在将第二编码转换为第一编码的过程中将它调整为掩码。在一种可能的情况下,通过编码方式一对表2中提供的多个规则地址进行编码得到的第二编码,以及根据第二编码得到的第一编码如表3所示。
表3
访问控制规则 | 规则地址 | 第二编码 | 第一编码 |
A | 10****** | 10000 | ***** |
B | 100***** | 00000 | 000** |
C | 1011**** | 00110 | 001** |
D | 10100*** | 01000 | 010** |
E | 10111*** | 00101 | 00101 |
F | 101010** | 01101 | 011** |
G | 101101** | 00100 | 00100 |
H | 1010100* | 01100 | 011*0 |
而对于表2中的初始地址I和初始地址J,虽然它在过滤阶段被过滤,没有参与编码,但由于初始地址I和规则地址H相同,因此可以将规则地址H的第二编码01100作为初始地址I的第二编码,将规则地址H的第一编码011*0,作为初始地址I的第一编码。初始地址J同理,由于初始地址J和规则地址C相同,因此,可以将规则地址C的第二编码00110作为初始地址J的第二编码,将规则地址C的第一编码001**作为初始地址J的第一编码。
示例性地,针对根据编码方式二获取的第二编码,由于第二编码是根据前缀编码和后续编码组合而成,同一个分组内的规则地址的第二编码的区别在于后续编码,因此可以根据分组内的各个规则地址之间的覆盖关系,基于一个规则地址在该分组中属于基础地址,将该规则地址的后续编码设置为掩码。而对于该规则地址的前缀编码,可以根据规则地址与其他分组内的规则地址是否存在覆盖关系,判断是否需要挑选码字调整成掩码。
以编码方式二中举例的规则地址F来说明,由于它在分组3中属于基础地址,将它的后续编码调整为掩码。又因为其他分组内不存在该规则地址F覆盖的规则地址,因此,可以保留规则地址F的前缀编码,得到的第一编码为010*。规则地址C同理,得到的第一编码为00**。而对于规则地址A,由于它还覆盖分组2中的规则地址C和分组3中的规则地址F,因此,需要与这两个规则地址的第二编码匹配成功,编码设备由此将规则地址A对应的前缀编码10也调整为掩码,得到规则地址A的第一编码为****。
上述为对于分组内的基础地址的编码过程,对于分组内的参考地址,可以将参考地址的第二编码确定为第一编码。在一种可能的情况下,通过编码方式二对表2中提供的多个规则地址进行编码得到的第二编码,以及根据第二编码得到的第一编码如表4所示。
表4
访问控制规则 | 规则地址 | 第二编码 | 第一编码 |
A | 10****** | 1000 | **** |
B | 100***** | 1001 | 1001 |
C | 1011**** | 0010 | 00** |
D | 10100*** | 1010 | 1010 |
E | 10111*** | 0001 | 0001 |
F | 101010** | 0101 | 010* |
G | 101101** | 0000 | 0000 |
H | 1010100* | 0100 | 0100 |
与表3一样,编码设备也可以基于规则地址H与初始地址I相同,将规则地址H的第一编码0100作为初始地址I的第一编码,将规则地址H的第二编码0100作为初始地址I的第二编码。基于初始地址J与规则地址C相同,将规则地址C的第一编码00**作为初始地址J的第一编码,将规则地址C的第二编码0010作为初始地址J的第二编码。
而对于S202中表1示出的多个规则地址,编码设备也可以基于各个规则地址之间的覆盖关系确定各个规则地址的第二编码,并基于第二编码确定第一编码。得到的第二编码与第一编码如表5所示。
表5
访问控制规则 | 规则地址 | 第二编码 | 第一编码 |
1 | 10.111.0.0/16 | 0101 | 0*** |
2 | 10.111.1.1/32 | 0100 | 0100 |
3 | 10.111.3.0/24 | 0011 | 00** |
4 | 10.111.3.1/32 | 0000 | 0000 |
5 | 10.111.3.2/32 | 0001 | 0001 |
6 | 10.111.3.10/32 | 0010 | 0010 |
7 | 22.128.55.0/25 | 1000 | 1000 |
8 | 33.135.0.0/16 | 1001 | 1001 |
由表5可以看出,无论是将第二编码确定为第一编码,还是从第二编码中选择码字替换为掩码,以将替换掩码后的编码作为第一编码,均可以保证同一个规则地址的第一编码能与第二编码匹配成功。
示例性地,编码设备确定各个规则地址的第一编码后,将访问控制规则中包括的规则地址替换为第一编码。由于第一编码的长度小于规则地址,可以减少规则地址字段的长度,从而减少ACL模块存储资源,进而减少报文查找模块的输入总线宽度,节省逻辑资源。例如图10所示的访问控制规则的变化示意图,其中,F1-F3用于指示访问控制规则中携带的其他字段,IP代表规则地址。通过上述操作,编码设备将长度为K比特的规则地址,编码成长度为W比特的第一编码,也即图10中的重编码的规则字段(encoded rule,ER)。其中,W为正整数,K为大于W的正整数。由于访问控制规则内的规则地址的长度减少,访问控制规则内存在空间可以用来增加其他用于匹配的字段,该访问控制规则的扩展性和灵活性增加。
在一种可能的情况下,编码设备还会存储第二编码与规则地址的第一对应关系,第一对应关系用于确定报文匹配的访问控制规则。其中,在存储第一对应关系时,对含有相同的规则地址的多条访问控制规则,只需要存储一份第一对应关系,节省了内存空间。由于第二编码可以与第一编码进行匹配,存储第一对应关系使得规则查找的过程中,无需对第一编码解码,即可根据第一对应关系,在多个第二编码中确定出与报文地址匹配的第二编码,进而确定匹配的第一编码,由此实现访问控制规则的查找。
本申请实施例不限定存储第一对应关系的存储空间,可以是编码设备的存储空间。还可以是与编码设备之间建立通信连接的存储空间。例如,查找设备用于规则查找,查找设备将需要存储的访问控制规则发往编码设备,编码设备对规则地址进行编码,并将第一对应关系存储在查找设备的存储空间中。
此外,针对存储多条访问控制规则的ACL存在其他访问控制规则需要添加的情况,编码设备可以先提取该访问控制规则地址的规则地址,随后执行如图11所示的操作,确定该规则地址是否存在对应的第一编码。若存在对应的第一编码,将第一编码替换该访问控制规则中携带的规则地址,并将替换后的访问控制规则存储在ACL中。而针对不存在该规则地址对应的第一编码的情况,编码设备可执行上述实施例S202-S203中示出的步骤,对提取出的规则地址进行编码,得到第一编码,再将访问控制规则中的规则地址替换为第一编码,实现ACL插入访问控制规则。
综上所述,本申请实施例提供的规则处理方法,通过将访问控制规则包括的规则地址编码为长度更小的第一编码,有效减少了访问控制规则占用的内存,从而减少了ACL的存储资源,减少包分类模块输入总线宽度,节省逻辑资源。由于无需调整访问控制规则中携带的字段数量,并且压缩规则地址的长度后,访问控制规则中可以提供空间增加其他用于匹配的字段,因而增加了规则扩展性,通用性提高。由于第一编码是根据各个规则地址的覆盖关系确定的,第一编码之间的覆盖关系与各个规则地址之间的覆盖关系一致,使得替换后的访问控制规则能够应用在报文匹配过程中。
本申请实施例提供一种规则查找方法,该规则查找方法可由查找设备执行,该方法的流程图如图12所示,包括S1201-S1202。
S1201,查找设备接收待转发的报文。
示例性地,查找设备接收上游网络设备发送的报文,得到待转发的报文。该报文可以是任意类型的报文,包括但不限于视频类报文、图像类报文和语音类报文等。此外,查找设备可以基于任意传输协议接收待转发的报文,例如基于IPv4协议,也可以是基于IPv6协议等。
S1202,查找设备确定报文匹配的访问控制规则,访问控制规则包括基于规则地址的覆盖关系对规则地址进行编码得到的第一编码,第一编码的长度小于规则地址的长度,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段。
在一种可能的实现方式中,查找设备确定报文匹配的访问控制规则的过程包括:确定报文地址匹配的规则地址;根据报文地址匹配的规则地址查找规则地址与编码的第一对应关系,确定与报文地址匹配的规则地址对应的编码,将确定出的编码作为与报文地址匹配的第二编码;根据第二编码查找得到报文匹配的访问控制规则,报文匹配的访问控制规则包括的第一编码与第二编码匹配。
其中,报文地址是报文中携带的地址的字段,该报文地址可以是用于指示报文的发送端的源IP地址,也可以是用于指示报文需要到达的目的端的目的IP地址。同样的,规则地址也可以是源地址或目的地址中的至少一种。在一种可能的实现方式中,查找设备查找报文地址的规则地址是按照最长匹配原则。对于接收到的报文携带的报文地址,会从存储的多个规则地址中进行逐位(bit-by-bit)对比,直到找到匹配度最长的规则地址,作为该报文匹配的规则地址。随后,即可根据规则地址与第二编码之间的第一对应关系,确定报文地址匹配的第二编码。
示例性地,第二编码为用于确定第一编码的编码,第二编码与第一编码之间的关系可参见上述图2所示的实施例的S203中的相关描述,在此不再赘述。可选地,查找设备接收编码设备编码得到的第二编码,并存储第二编码与规则地址之间的第一对应关系,该第一对应关系用于指示第二编码基于哪个规则地址编码得到。
图13为本申请实施例提供的一种规则处理流程图,参见图13,编码设备会对规则地址进行编码,得到该规则地址的第一编码和第二编码。将第二编码、第二编码的第一对应关系存储在查找设备的第一查找模块中。
随后,查找设备可以从第一查找模块中查找得到报文地址匹配的第二编码,并将第二编码发往第二查找模块,以从第二查找模块中确定第二编码匹配的访问控制规则。可选地,第二查找模块可以理解为存储ACL的模块,那么图13中示出的编码设备将第一编码发送到第二查找模块的过程,也即将携带有第一编码的访问控制规则发送到第二查找模块,使得ACL存储该访问控制规则。由此可知,第二查找模块中存储多条访问控制规则,每条访问控制规则中都包括第一编码,由于第二编码可以直接与第一编码进行匹配,例如比较第一编码非掩码的码字与第二编码是否相同。查找设备可以基于第二编码从第二查找模块中找出报文匹配的访问控制规则。
由于一个第二编码不光可以匹配基于第二编码确定的第一编码。对于覆盖该第一编码的编码,第二编码也可以匹配成功。因此,通过一个第二编码可以确定多个与报文匹配的访问控制规则。以上述S203中示出的规则地址A和规则地址B为例,当第二编码为规则地址B的第二编码1001,那么规则地址B的第二编码不光可以匹配规则地址B的第一编码1001,也能匹配成功规则地址A的第一编码****,由此确定出报文匹配了访问控制规则A与访问控制规则B,保证了规则查找的全面率。
可选地,图13示出的是一个访问控制规则中只有一个规则地址被编码成第一编码后的报文查找流程。当一个访问控制规则中存在多个规则地址被编码成第一编码,例如,一个访问控制规则中包括的源地址与目的地址均被编码成第一编码。那么查找该访问控制规则的过程也就是重复上述规则查找操作。例如图14所示。对一个访问控制规则进行处理会得到两个第一编码和两个第二编码。那么在确定报文匹配的访问控制规则时,会发送两个第二编码到第二查找模块,基于访问控制规则中的两个第一编码均与第二编码匹配成功,确定该访问控制规则与报文匹配。
此外,由于报文在与访问控制规则进行匹配时进行匹配的字段存在多个,例如在匹配报文地址的基础上,还需要匹配IP协议和端口号等,因此,查找设备在查找报文匹配的访问控制规则时,还需要匹配报文中携带的其他字段与访问控制规则中携带的其他字段。而匹配其他字段的过程可以是与匹配规则地址的过程异步执行,也可以是同步执行。例如图15所示,查找设备在通过报文地址从第一查找模块中获取第二编码后,会将第二编码与报文中的其他字段进行拼接,组成主键(key),再根据key在第二查找模块查找报文匹配的访问控制规则。
可选地,图10示出了key的结构。图10中key的V1-V3代表从报文中提取的其他字段,重编码的主键字段(encoded key,EK)代表第二编码。通过图10可以发现,由于第二编码的长度小于报文地址,也就是图10中的V-IP的长度,拼接得到的key的长度也有所减小,传输长度更小的主键,传输速率更快,进而提高了规则查找效率。
综上所述,本申请实施例提供的规则查找方法,所查找的访问控制规则包括的第一编码的长度小于规则地址的长度,访问控制规则占用的内存小。由于第一编码之间的覆盖关系与规则地址之间的覆盖关系相同,通过第二编码进行规则查找的命中结果与利用报文地址查找匹配的规则地址的命中结果相同,规则查找全面,精确度更高。通过第一对应关系,不需要将访问控制规则中的第一编码还原为规则地址,即可实现报文地址和第一编码的匹配,匹配效率高。并且,由于第二编码的长度小于报文地址的长度,减小了查找key的长度,进而提高查找效率。
以上介绍了本申请实施例的规则处理方法,与上述方法对应,本申请实施例还提供了规则处理装置。图16是本申请实施例提供的一种规则处理装置的结构示意图。基于图16所示的如下多个模块,该图16所示的规则处理装置能够执行上述图2所示的全部或部分操作。应理解到,该装置可以包括比所示模块更多的附加模块或者省略其中所示的一部分模块,本申请实施例对此并不进行限制。如图16所示,该装置应用于编码设备,装置包括:
获取模块1601,用于获取多个规则地址,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段;
确定模块1602,用于确定多个规则地址中的各个规则地址的覆盖关系;
编码模块1603,用于根据各个规则地址的覆盖关系对各个规则地址进行编码,得到各个规则地址的第一编码,将访问控制规则中包括的规则地址替换为规则地址的第一编码,第一编码的长度小于第一编码对应的规则地址的长度。
在一种可能的实现方式中,获取模块1601,用于获取多条访问控制规则;从多条访问控制规则中分别提取初始地址,得到多个初始地址;对多个初始地址中重复的初始地址进行过滤,将过滤得到的初始地址作为多个规则地址。
在一种可能的实现方式中,编码模块1603,用于按照各个规则地址的覆盖关系将多个规则地址划分到不同分组,一个分组包括一个规则地址和一个规则地址覆盖的至少一个规则地址;对各个分组内包括的各个规则地址进行编码,得到各个规则地址的第二编码;根据第二编码确定第一编码。
在一种可能的实现方式中,编码模块1603,用于根据各个分组包括的规则地址的数量确定各个分组的编码长度;按照各个分组的编码长度对各个分组包括的规则地址进行编码,得到各个分组包括的规则地址的初始编码,一个分组包括的多个规则地址的初始编码不同;将任一规则地址在不同分组内编码得到的初始编码进行组合,得到任一规则地址的第二编码。
在一种可能的实现方式中,编码模块1603,还用于基于任一规则地址位于一个分组内,且不同分组中不存在级别高于任一规则地址位于的分组,将参考编码作为任一规则地址在其他分组的初始编码,分组的级别根据分组包括的规则地址的覆盖关系确定,参考编码按照参考组的编码长度编码得到,参考组为级别低于一个分组的分组;或者,基于任一规则地址位于一个分组内,且不同分组中存在级别高于任一规则地址位于的分组,确定覆盖任一规则地址的基础地址,将基础地址在其他分组的初始编码作为任一规则地址在其他分组的初始编码。
在一种可能的实现方式中,编码模块1603,用于根据各个分组包括的规则地址的重合情况对各个分组包括的规则地址进行调整,调整后的不同分组包括的规则地址不同;确定各个调整后的分组的前缀编码,前缀编码用于指示调整后的分组内包括的各个规则地址的第二编码的相同部分;根据各个调整后的分组的前缀编码生成各个调整后的分组包括的规则地址的第二编码。
在一种可能的实现方式中,编码模块1603,用于根据各个调整后的分组包括的规则地址的数量,确定各个调整后的分组的编码长度;按照各个调整后的分组的编码长度从多个调整后的分组中选择至少两个调整后的分组进行合并,根据合并结果确定各个调整后的分组的前缀编码。
在一种可能的实现方式中,编码模块1603,用于将第二编码作为第一编码;或者,从第二编码中选择至少一个码字,将至少一个码字替换为掩码,将替换掩码之后的码字作为第一编码。
在一种可能的实现方式中,装置还包括:存储模块,用于存储第二编码与规则地址的第一对应关系,第一对应关系用于确定报文匹配的访问控制规则。
在一种可能的实现方式中,规则地址包括访问控制规则中的源地址和目的地址中的至少一种。
上述装置通过将访问控制规则包括的规则地址编码为长度更小的第一编码,有效减少了访问控制规则占用的内存,从而减少了ACL的存储资源,减少包分类模块输入总线宽度,节省逻辑资源,而访问控制规则的长度减少后,访问控制规则内可以增加其他匹配字段,规则扩展性增加。并且,由于第一编码是根据各个规则地址的覆盖关系确定,第一编码之间的覆盖关系与各个规则地址之间的覆盖关系一致,使得替换后的访问控制规则能够用于执行报文匹配过程。
图17是本申请实施例提供的一种规则查找装置的结构示意图。基于图17所示的如下多个模块,该图17所示的规则查找装置能够执行上述图12所示的全部或部分操作。应理解到,该装置可以包括比所示模块更多的附加模块或者省略其中所示的一部分模块,本申请实施例对此并不进行限制。如图17所示,该装置应用于查找设备,装置包括:
接收模块1701,用于接收待转发的报文;
确定模块1702,用于确定报文匹配的访问控制规则,访问控制规则包括基于规则地址的覆盖关系对规则地址进行编码得到的第一编码,第一编码的长度小于规则地址的长度,规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段。
在一种可能的实现方式中,确定模块1702,用于确定报文地址匹配的规则地址;根据报文地址匹配的规则地址查找规则地址与编码的第一对应关系,确定与报文地址匹配的规则地址对应的编码,将确定出的编码作为与报文地址匹配的第二编码;根据第二编码查找得到报文匹配的访问控制规则,报文匹配的访问控制规则包括的第一编码与第二编码匹配。
在一种可能的实现方式中,规则地址包括访问控制规则中的源地址和目的地址中的至少一种。
上述装置由于访问控制规则中包括的第一编码的长度小于规则地址,该访问控制规则占用的内存小,并且在进行规则查找时,无需对第一编码进行解码,即可确定报文匹配的访问控制规则,规则查找涉及的操作简单,效率高。
应理解的是,上述图16和图17提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图18,图18示出了本申请一个示例性实施例提供的网络设备1800的结构示意图。图18所示的网络设备1800用于执行上述图2所示的规则处理方法所涉及的操作,或是执行上述图12所示的规则查找方法所涉及的操作。该网络设备1800例如是交换机、路由器等,该网络设备1800可以由一般性的总线体系结构来实现。
如图18所示,网络设备1800包括至少一个处理器1801、存储器1803以及至少一个通信接口1804。
处理器1801例如是通用中央处理器(central processing unit,CPU)、数字信号处理器(digital signal processor,DSP)、网络处理器(network processer,NP)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(neural-network processingunits,NPU)、数据处理单元(Data Processing Unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器1801包括专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。PLD例如是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。其可以实现或执行结合本申请实施例公开内容所描述的各种逻辑方框、模块和电路。处理器也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,DSP和微处理器的组合等等。
可选的,网络设备1800还包括总线。总线用于在网络设备1800的各组件之间传送信息。总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图18中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1803例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1803例如是独立存在,并通过总线与处理器1801相连接。存储器1803也可以和处理器1801集成在一起。
通信接口1804使用任何收发器一类的装置,用于与其它设备或通信网络通信,通信网络可以为以太网、无线接入网(RAN)或无线局域网(wireless local area networks,WLAN)等。通信接口1804可以包括有线通信接口,还可以包括无线通信接口。具体的,通信接口1804可以为以太(Ethernet)接口、快速以太(Fast Ethernet,FE)接口、千兆以太(Gigabit Ethernet,GE)接口,异步传输模式(Asynchronous Transfer Mode,ATM)接口,无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合。以太网接口可以是光接口,电接口或其组合。在本申请实施例中,通信接口1804可以用于网络设备1800与其他设备进行通信。
在具体实现中,作为一种实施例,处理器1801可以包括一个或多个CPU,如图18中所示的CPU0和CPU1。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,网络设备1800可以包括多个处理器,如图18中所示的处理器1801和处理器1805。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,网络设备1800还可以包括输出设备和输入设备。输出设备和处理器1801通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器1801通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器1803用于存储执行本申请方案的程序代码1810,处理器1801可以执行存储器1803中存储的程序代码1810。也即是,网络设备1800可以通过处理器1801以及存储器1803中的程序代码1810,来实现方法实施例提供的规则处理方法,或实现方法实施例提供的规则查找方法。程序代码1810中可以包括一个或多个软件模块。可选地,处理器1801自身也可以存储执行本申请方案的程序代码或指令。
在具体实施例中,本申请实施例的网络设备1800可对应于上述各个方法实施例中的编码设备或查找设备。
其中,图2所示的规则处理方法或图12所示的规则查找方法的各步骤通过网络设备1800的处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤,为避免重复,这里不再详细描述。
图19是本申请实施例提供的另一种网络设备的结构示意图,该网络设备例如是服务器,服务器可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器1901和一个或多个存储器1902,其中,该一个或多个存储器1902中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器1901加载并执行,以使该服务器实现上述各个方法实施例提供的规则处理方法,或是实现上述各个方法实施例提供的规则查找方法。该处理器1901例如是中央处理器(central processing units,CPU)。当然,该网络设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该网络设备还可以包括其他用于实现设备功能的部件,在此不做赘述。
本申请实施例还提供了一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该处理器执行规则处理方法或规则查找方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
进一步地,在一种可选的实施例中,上述存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data dateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。
本申请实施例还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行,以使计算机实现如上任一所述的规则处理方法,或实现如上任一所述的规则查找方法。
本申请实施例还提供了一种计算机程序(产品),当计算机程序被计算机执行时,可以使得处理器或计算机执行上述方法实施例中对应的各个步骤和/或流程。
本申请实施例还提供了一种芯片,包括处理器,用于从存储器中调用并运行所述存储器中存储的指令,使得安装有所述芯片的通信设备执行如上任一所述的规则处理方法,或执行如上任一所述的规则查找方法。
本申请实施例还提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的代码,当所述代码被执行时,所述处理器用于执行如上任一所述的规则处理方法,或执行如上任一所述的规则查找方法。
本申请实施例还提供一种规则管理系统,包括编码设备和查找设备,编码设备用于执行如上任一所述的规则处理方法,查找设备用于执行如上任一所述的规则查找方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid StateDisk)等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和模块,能够以软件、硬件、固件或者其任意组合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。作为示例,本申请实施例的方法可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。
用于实现本申请实施例的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的规则处理装置或规则查找装置的处理器,使得程序代码在被计算机或其他可编程的规则处理装置或规则查找装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
在本申请实施例的上下文中,计算机程序代码或者相关数据可以由任意适当载体承载,以使得设备、装置或者处理器能够执行上文描述的各种处理和操作。载体的示例包括信号、计算机可读介质等等。
信号的示例可以包括电、光、无线电、声音或其它形式的传播信号,诸如载波、红外信号等。
机器可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、设备和模块的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、设备或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一图像可以被称为第二图像,并且类似地,第二图像可以被称为第一图像。第一图像和第二图像都可以是图像,并且在某些情况下,可以是单独且不同的图像。
还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,术语“若”和“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“若确定...”或“若检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
Claims (30)
1.一种规则处理方法,其特征在于,所述方法包括:
编码设备获取多个规则地址,所述规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段;
所述编码设备确定所述多个规则地址中的各个规则地址的覆盖关系;
所述编码设备根据所述各个规则地址的覆盖关系对所述各个规则地址进行编码,得到所述各个规则地址的第一编码,将所述访问控制规则中包括的规则地址替换为所述规则地址的第一编码,所述第一编码的长度小于所述第一编码对应的规则地址的长度。
2.根据权利要求1所述的方法,其特征在于,所述获取多个规则地址,包括:
获取多条访问控制规则;
从所述多条访问控制规则中分别提取初始地址,得到多个初始地址;
对所述多个初始地址中重复的初始地址进行过滤,将过滤得到的初始地址作为所述多个规则地址。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述各个规则地址的覆盖关系对所述各个规则地址进行编码,得到所述各个规则地址的第一编码,包括:
按照所述各个规则地址的覆盖关系将所述多个规则地址划分到不同分组,一个分组包括一个规则地址和所述一个规则地址覆盖的至少一个规则地址;
对各个分组内包括的各个规则地址进行编码,得到所述各个规则地址的第二编码;
根据所述第二编码确定所述第一编码。
4.根据权利要求3所述的方法,其特征在于,所述对各个分组内包括的各个规则地址进行编码,得到所述各个规则地址的第二编码,包括:
根据所述各个分组包括的规则地址的数量确定所述各个分组的编码长度;
按照所述各个分组的编码长度对所述各个分组包括的规则地址进行编码,得到所述各个分组包括的规则地址的初始编码,一个分组包括的多个规则地址的初始编码不同;
将任一规则地址在不同分组内编码得到的初始编码进行组合,得到所述任一规则地址的第二编码。
5.根据权利要求4所述的方法,其特征在于,所述将任一规则地址在不同分组内编码得到的初始编码进行组合之前,还包括:
基于所述任一规则地址位于一个分组内,且所述不同分组中不存在级别高于所述任一规则地址位于的分组,将参考编码作为所述任一规则地址在其他分组的初始编码,所述分组的级别根据所述分组包括的规则地址的覆盖关系确定,所述参考编码按照参考组的编码长度编码得到,所述参考组为级别低于所述一个分组的分组;
或者,基于所述任一规则地址位于一个分组内,且所述不同分组中存在级别高于所述任一规则地址位于的分组,确定覆盖所述任一规则地址的基础地址,将所述基础地址在其他分组的初始编码作为所述任一规则地址在所述其他分组的初始编码。
6.根据权利要求3所述的方法,其特征在于,所述对各个分组内包括的各个规则地址进行编码,得到所述各个规则地址的第二编码,包括:
根据所述各个分组包括的规则地址的重合情况对所述各个分组包括的规则地址进行调整,调整后的不同分组包括的规则地址不同;
确定各个调整后的分组的前缀编码,所述前缀编码用于指示所述调整后的分组内包括的各个规则地址的第二编码的相同部分;
根据所述各个调整后的分组的前缀编码生成所述各个调整后的分组包括的规则地址的第二编码。
7.根据权利要求6所述的方法,其特征在于,所述确定各个调整后的分组的前缀编码,包括:
根据所述各个调整后的分组包括的规则地址的数量,确定所述各个调整后的分组的编码长度;
按照所述各个调整后的分组的编码长度从多个调整后的分组中选择至少两个调整后的分组进行合并,根据合并结果确定所述各个调整后的分组的前缀编码。
8.根据权利要求3-7任一所述的方法,其特征在于,所述根据所述第二编码确定所述第一编码,包括:
将所述第二编码作为所述第一编码;
或者,从所述第二编码中选择至少一个码字,将所述至少一个码字替换为掩码,将替换掩码之后的码字作为所述第一编码。
9.根据权利要求3-8任一所述的方法,其特征在于,所述得到所述各个规则地址的第二编码之后,还包括:
存储所述第二编码与所述规则地址的第一对应关系,所述第一对应关系用于确定所述报文匹配的访问控制规则。
10.根据权利要求1-9任一所述的方法,其特征在于,所述规则地址包括所述访问控制规则中的源地址和目的地址中的至少一种。
11.一种规则查找方法,其特征在于,所述方法包括:
查找设备接收待转发的报文;
所述查找设备确定所述报文匹配的访问控制规则,所述访问控制规则包括基于规则地址的覆盖关系对规则地址进行编码得到的第一编码,所述第一编码的长度小于所述规则地址的长度,所述规则地址用于与所述报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段。
12.根据权利要求11所述的方法,其特征在于,所述确定所述报文匹配的访问控制规则,包括:
确定所述报文地址匹配的规则地址;
根据所述报文地址匹配的规则地址查找规则地址与编码的第一对应关系,确定与所述报文地址匹配的规则地址对应的编码,将确定出的编码作为与所述报文地址匹配的第二编码;
根据所述第二编码查找得到所述报文匹配的访问控制规则,所述报文匹配的访问控制规则包括的第一编码与所述第二编码匹配。
13.根据权利要求11或12所述的方法,其特征在于,所述规则地址包括所述访问控制规则中的源地址和目的地址中的至少一种。
14.一种规则处理装置,其特征在于,所述装置应用于编码设备,所述装置包括:
获取模块,用于获取多个规则地址,所述规则地址用于与报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段;
确定模块,用于确定所述多个规则地址中的各个规则地址的覆盖关系;
编码模块,用于根据所述各个规则地址的覆盖关系对所述各个规则地址进行编码,得到所述各个规则地址的第一编码,将所述访问控制规则中包括的规则地址替换为所述规则地址的第一编码,所述第一编码的长度小于所述第一编码对应的规则地址的长度。
15.根据权利要求14所述的装置,其特征在于,所述获取模块,用于获取多条访问控制规则;从所述多条访问控制规则中分别提取初始地址,得到多个初始地址;对所述多个初始地址中重复的初始地址进行过滤,将过滤得到的初始地址作为所述多个规则地址。
16.根据权利要求14或15所述的装置,其特征在于,所述编码模块,用于按照所述各个规则地址的覆盖关系将所述多个规则地址划分到不同分组,一个分组包括一个规则地址和所述一个规则地址覆盖的至少一个规则地址;对各个分组内包括的各个规则地址进行编码,得到所述各个规则地址的第二编码;根据所述第二编码确定所述第一编码。
17.根据权利要求16所述的装置,其特征在于,所述编码模块,用于根据所述各个分组包括的规则地址的数量确定所述各个分组的编码长度;按照所述各个分组的编码长度对所述各个分组包括的规则地址进行编码,得到所述各个分组包括的规则地址的初始编码,一个分组包括的多个规则地址的初始编码不同;将任一规则地址在不同分组内编码得到的初始编码进行组合,得到所述任一规则地址的第二编码。
18.根据权利要求17所述的装置,其特征在于,所述编码模块,还用于基于所述任一规则地址位于一个分组内,且所述不同分组中不存在级别高于所述任一规则地址位于的分组,将参考编码作为所述任一规则地址在其他分组的初始编码,所述分组的级别根据所述分组包括的规则地址的覆盖关系确定,所述参考编码按照参考组的编码长度编码得到,所述参考组为级别低于所述一个分组的分组;或者,基于所述任一规则地址位于一个分组内,且所述不同分组中存在级别高于所述任一规则地址位于的分组,确定覆盖所述任一规则地址的基础地址,将所述基础地址在其他分组的初始编码作为所述任一规则地址在所述其他分组的初始编码。
19.根据权利要求16所述的装置,其特征在于,所述编码模块,用于根据所述各个分组包括的规则地址的重合情况对所述各个分组包括的规则地址进行调整,调整后的不同分组包括的规则地址不同;确定各个调整后的分组的前缀编码,所述前缀编码用于指示所述调整后的分组内包括的各个规则地址的第二编码的相同部分;根据所述各个调整后的分组的前缀编码生成所述各个调整后的分组包括的规则地址的第二编码。
20.根据权利要求19所述的装置,其特征在于,所述编码模块,用于根据所述各个调整后的分组包括的规则地址的数量,确定所述各个调整后的分组的编码长度;按照所述各个调整后的分组的编码长度从多个调整后的分组中选择至少两个调整后的分组进行合并,根据合并结果确定所述各个调整后的分组的前缀编码。
21.根据权利要求16-20任一所述的装置,其特征在于,所述编码模块,用于将所述第二编码作为所述第一编码;或者,从所述第二编码中选择至少一个码字,将所述至少一个码字替换为掩码,将替换掩码之后的码字作为所述第一编码。
22.根据权利要求16-21任一所述的装置,其特征在于,所述装置还包括:存储模块,用于存储所述第二编码与所述规则地址的第一对应关系,所述第一对应关系用于确定所述报文匹配的访问控制规则。
23.根据权利要求14-22任一所述的装置,其特征在于,所述规则地址包括所述访问控制规则中的源地址和目的地址中的至少一种。
24.一种规则查找装置,其特征在于,所述装置应用于查找设备,所述装置包括:
接收模块,用于接收待转发的报文;
确定模块,用于确定所述报文匹配的访问控制规则,所述访问控制规则包括基于规则地址的覆盖关系对规则地址进行编码得到的第一编码,所述第一编码的长度小于所述规则地址的长度,所述规则地址用于与所述报文携带的报文地址进行匹配,一个规则地址为一条访问控制规则包括的一个字段。
25.根据权利要求24所述的装置,其特征在于,所述确定模块,用于确定所述报文地址匹配的规则地址;根据所述报文地址匹配的规则地址查找规则地址与编码的第一对应关系,确定与所述报文地址匹配的规则地址对应的编码,将确定出的编码作为与所述报文地址匹配的第二编码;根据所述第二编码查找得到所述报文匹配的访问控制规则,所述报文匹配的访问控制规则包括的第一编码与所述第二编码匹配。
26.根据权利要求24或25所述的装置,其特征在于,所述规则地址包括所述访问控制规则中的源地址和目的地址中的至少一种。
27.一种计算设备,其特征在于,所述设备包括处理器;所述处理器用于加载并运行至少一条指令,以使所述计算设备实现权利要求1-10中任一所述的规则处理方法,或者实现权利要求11-13中任一所述的规则查找方法。
28.根据权利要求27所述的计算设备,其特征在于,所述设备还包括存储器,所述存储器用于存储所述至少一条指令。
29.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1-10中任一所述的规则处理方法,或者实现权利要求11-13中任一所述的规则查找方法。
30.一种规则管理系统,其特征在于,所述规则管理系统包括编码设备和查找设备,所述编码设备用于执行如权利要求1-10中任一所述的规则处理方法,所述查找设备用于执行如权利要求11-13中任一所述的规则查找方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2023/122494 WO2024078356A1 (zh) | 2022-10-09 | 2023-09-28 | 规则处理、规则查找方法、装置、设备及可读存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2022112264698 | 2022-10-09 | ||
CN202211226469 | 2022-10-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117857447A true CN117857447A (zh) | 2024-04-09 |
Family
ID=90540623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211536277.7A Pending CN117857447A (zh) | 2022-10-09 | 2022-12-01 | 规则处理、规则查找方法、装置、设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117857447A (zh) |
WO (1) | WO2024078356A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100670783B1 (ko) * | 2004-11-29 | 2007-01-17 | 한국전자통신연구원 | 필드 레벨을 이용한 패킷 분류 방법 및 장치 |
US9882766B2 (en) * | 2013-02-28 | 2018-01-30 | Arista Networks, Inc. | System and method for access control list conversion |
CN104301302B (zh) * | 2014-09-12 | 2017-09-19 | 深信服网络科技(深圳)有限公司 | 越权攻击检测方法及装置 |
CN112367195B (zh) * | 2020-10-29 | 2022-07-26 | 新华三技术有限公司 | 一种网络配置方法、系统及装置 |
-
2022
- 2022-12-01 CN CN202211536277.7A patent/CN117857447A/zh active Pending
-
2023
- 2023-09-28 WO PCT/CN2023/122494 patent/WO2024078356A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024078356A1 (zh) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9367645B1 (en) | Network device architecture to support algorithmic content addressable memory (CAM) processing | |
US9306851B1 (en) | Apparatus and methods to store data in a network device and perform longest prefix match (LPM) processing | |
CN108287877B (zh) | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 | |
CN115941598A (zh) | 一种流表半卸载方法、设备及介质 | |
CN114363432A (zh) | 获取报文头信息、生成报文的方法、设备及存储介质 | |
CN110166318B (zh) | 一种数据统计方法及装置 | |
CN112019492B (zh) | 访问控制方法、装置及存储介质 | |
CN117857447A (zh) | 规则处理、规则查找方法、装置、设备及可读存储介质 | |
US9201982B2 (en) | Priority search trees | |
CN114338529B (zh) | 五元组规则匹配方法及装置 | |
CN110908996A (zh) | 一种数据处理的方法和装置 | |
CN105072047A (zh) | 一种报文传输及处理方法 | |
CN114666259A (zh) | 报文传输的方法、装置、设备、存储介质及系统 | |
CN117520607B (zh) | 一种流表压缩方法、计算机设备及介质 | |
CN117527731B (zh) | 一种用于硬件卸载的包编辑方法、计算机设备及介质 | |
CN116471344B (zh) | 一种数据报文的关键字提取方法、装置及介质 | |
CN116600031B (zh) | 报文处理方法、装置、设备及存储介质 | |
CN117555903B (zh) | 一种数据处理方法、计算机设备及介质 | |
WO2024016863A1 (zh) | 规则查找方法、装置、设备及计算机可读存储介质 | |
US20240205185A1 (en) | Address Assignment Method, Node Determining Method and Apparatus, and Storage Medium | |
CN118113131A (zh) | 芯片功耗的管理方法、装置、系统及计算机可读存储介质 | |
CN118264255A (zh) | 数据压缩方法、装置、计算机设备及可读存储介质 | |
CN117200804A (zh) | 编码、解码方法、装置、设备及存储介质 | |
WO2020153154A1 (ja) | 検索装置、および、ハッシュテーブルの作成方法 | |
CN113496111A (zh) | 字符串处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |