报文规则匹配方法、装置、电子设备和可读存储介质与流程

文档序号:23990905发布日期:2021-02-20 13:25阅读:60来源:国知局
报文规则匹配方法、装置、电子设备和可读存储介质与流程

[0001]
本申请涉及通信技术领域,具体而言,涉及一种报文规则匹配方法、装置、电子设备和可读存储介质。


背景技术:

[0002]
随着互联网技术的不断发展,为了提高处理业务的速度,对网络设备处理报文的性能的要求也越来越高,随之对相应报文快速匹配算法的要求也越来越高。
[0003]
目前常在配置表项中记录所有端口,在报文匹配时遍历端口对应的规则,从而找出能匹配的规则。但是,当规则较多时,使用遍历端口从而找到规则的方法,其速率较低。


技术实现要素:

[0004]
本申请提供了一种报文规则匹配方法、装置、电子设备和可读存储介质,以改善上述问题。
[0005]
本申请的实施例可以这样实现:
[0006]
第一方面,本申请提供一种报文规则匹配方法,所述方法包括:
[0007]
获取待匹配报文,所述待匹配报文中包括目的端口号;
[0008]
从预先配置的端口匹配表项中查找出所述目的端口号所属的目标端口组,以及所述目标端口组对应的至少一个规则编号,其中,所述端口匹配表项中包括至少一个端口组,以及端口号组与规则编号的对应关系;
[0009]
基于预先配置的所述规则编号与报文规则的对应关系,获取与所述待匹配报文对应的目标报文规则。
[0010]
在可选的实施方式中,每个所述端口组包括端口段起始值及掩码长度;所述从预先配置的端口匹配表项中查找出所述目的端口号所属的目标端口组的步骤包括:
[0011]
获取所述待匹配报文中的目的端口号;
[0012]
基于最长前缀匹配原则,逐位比较端口匹配表项中每个所述端口段起始值与所述目的端口号的比特位的数值,得到与所述目的端口号匹配的至少一个端口段起始值,以及与每个该端口段起始值对应的掩码长度;
[0013]
将与所述目的端口号匹配,且对应掩码长度最长的端口段起始值所属的端口组作为目标端口组。
[0014]
在可选的实施方式中,所述方法还包括:对多个端口号进行拆分并配置,得到端口匹配表项的步骤,所述步骤包括:
[0015]
将多个端口号转换为包括预设个数的比特位组成的二进制数;
[0016]
将预设比特位的数值一致的端口号划分为一组,得到多个端口组;
[0017]
将所述预设比特位的个数作为每个端口组的掩码长度,并将每个端口组的起始端口号作为该端口组的端口段起始值;
[0018]
基于多个所述端口组及多个规则编号生成对应关系表;
[0019]
将每个所述掩码长度及每个所述端口段起始值作为所述对应关系表的表项,得到端口匹配表项。
[0020]
在可选的实施方式中,与所述目标端口对应的规则编号为多个;
[0021]
所述基于预先配置的所述规则编号与规则的对应关系,获取与所述待匹配报文对应的目标报文规则的步骤包括:
[0022]
获取每个所述规则编号的优先级;
[0023]
将优先级最高的规则编号作为目标报文规则编号;
[0024]
基于预先配置的所述规则编号与规则的对应关系,获取与所述目标报文规则编号对应的目标报文规则。
[0025]
在可选的实施方式中,所述方法还包括:
[0026]
基于所述目标报文规则对所述待匹配报文进行配置。
[0027]
第二方面,本申请提供一种报文规则匹配装置,所述装置包括:
[0028]
获取模块,用于获取待匹配报文,所述待匹配报文中包括目的端口号;
[0029]
查找模块,用于从预先配置的端口匹配表项中查找出所述目的端口号所属的目标端口组,以及所述目标端口组对应的至少一个规则编号,其中,所述端口匹配表项中包括至少一个端口组,以及端口号组与规则编号的对应关系;
[0030]
基于预先配置的所述规则编号与报文规则的对应关系,获取与所述待匹配报文对应的目标报文规则。
[0031]
在可选的实施方式中,每个所述端口组包括端口段起始值及掩码长度;
[0032]
所述查找模块,用于获取所述待匹配报文中的目的端口号;
[0033]
基于最长前缀匹配原则,逐位比较端口匹配表项中每个所述端口段起始值与所述目的端口号的比特位的数值,得到与所述目的端口号匹配的至少一个端口段起始值,以及与每个该端口段起始值对应的掩码长度;
[0034]
将与所述目的端口号匹配,且对应掩码长度最长的端口段起始值所属的端口组作为目标端口组。
[0035]
在可选的实施方式中,所述装置还包括:
[0036]
配置模块,用于对多个端口号进行拆分并配置,得到端口匹配表项;
[0037]
所述配置模块还用于将多个端口号转换为包括预设个数的比特位组成的二进制数;
[0038]
将预设比特位的数值一致的端口号划分为一组,得到多个端口组;
[0039]
将所述预设比特位的个数作为每个端口组的掩码长度,并将每个端口组的起始端口号作为该端口组的端口段起始值;
[0040]
基于多个所述端口组及多个规则编号生成对应关系表;
[0041]
将每个所述掩码长度及每个所述端口段起始值作为所述对应关系表的表项,得到端口匹配表项。
[0042]
第三方面,本申请提供一种电子设备,所述电子设备包括处理器、存储器及总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器及所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行前述实施方式任意一项所述的报文规则匹配方法的步骤。
[0043]
第四方面,本申请提供一种可读存储介质,所述可读存储介质存储有计算机程序,计算机程序被执行时实现前述实施方式任意一项所述的报文规则匹配方法的步骤。
[0044]
本申请实施例提供了一种报文规则匹配方法、装置、电子设备和可读存储介质,通过将待匹配报文中的目的端口段与端口匹配表项进行匹配,查找到端口匹配表项中目的端口段所属的目标端口组,获取目标端口组对应的规则编号,进而获得目标报文规则,而无需遍历每个端口,使得匹配报文规则的时间变短,提高了报文匹配速率。
[0045]
为使本申请的上述目的、特征和优点能更明显易懂,下文特举一些举例,并配合所附附图,作详细说明。
附图说明
[0046]
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0047]
图1为本申请实施例提供的电子设备的结构框图。
[0048]
图2为本申请实施例提供的报文规则匹配方法的流程图之一。
[0049]
图3为本申请实施例提供的报文规则匹配方法的流程图之二。
[0050]
图4为本申请实施例提供的报文规则匹配装置的功能模块框图。
[0051]
图标:100-电子设备;110-存储器;120-处理器;130-报文规则匹配装置;131-获取模块;132-查找模块;133-对应模块;134-配置模块;140-通信单元。
具体实施方式
[0052]
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
[0053]
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0054]
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0055]
在本申请的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
[0056]
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0057]
需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。
[0058]
如背景技术所介绍,随着互联网技术的不断发展,对网络设备处理报文的性能要求越来越高,随之对相应报文快速匹配算法的要求也越来越高。
[0059]
目前常在配置表项中记录所有端口,每个端口均对应一个规则,在报文匹配时遍历每个端口,并找出对应的匹配规则。但是,当规则较多时,使用遍历端口从而匹配规则的方法,其速率较低。
[0060]
有鉴于此,本申请实施例提供了一种报文规则匹配方法、装置、电子设备和可读存储介质,通过将待匹配报文与端口匹配表项进行匹配,找到目标规则即可,而无需遍历,使得匹配时间变短,提高了匹配速率。
[0061]
请参阅图1,图1为本申请实施例提供的一种电子设备100的结构框图。设备可以包括处理器120、存储器110、报文规则匹配装置130及通信单元140,存储器110存储有处理器120可执行的机器可读指令,当电子设备100运行时,处理器120及存储器110之间通过总线通信,处理器120执行机器可读指令,并执行报文规则匹配方法的步骤。
[0062]
存储器110、处理器120以及通信单元140各元件相互之间直接或间接地电性连接,以实现信号的传输或交互。
[0063]
例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。报文规则匹配装置130包括至少一个可以软件或固件(firmware)的形式存储于存储器110中的软件功能模块。处理器120用于执行存储器110中存储的可执行模块,例如报文规则匹配装置130所包括的软件功能模块或计算机程序。
[0064]
其中,存储器110可以是,但不限于,随机读取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
[0065]
处理器120可以是一种集成电路芯片,具有信号处理能力。上述处理器120可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等。
[0066]
还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0067]
本申请实施例中,存储器110用于存储程序,处理器120用于在接收到执行指令后,执行程序。本申请实施例任一实施方式所揭示的流程定义的方法可以应用于处理器120中,或者由处理器120实现。
[0068]
通信单元140用于通过网络建立电子设备100与其他电子设备之间的通信连接,并用于通过网络收发数据。
[0069]
在一些实施例中,网络可以是任何类型的有线或者无线网络,或者是他们的结合。仅作为示例,网络可以包括有线网络、无线网络、光纤网络、远程通信网络、内联网、因特网、局域网(local area network,lan)、广域网(wide area network,wan)、无线局域网(wireless local area networks,wlan)、城域网(metropolitan area network,man)、广域网(wide area network,wan)、公共电话交换网(public switched telephone network,
pstn)、蓝牙网络、zigbee网络、或近场通信(near field communication,nfc)网络等,或其任意组合。
[0070]
在本申请实施例中,电子设备100的具体类型不受限制,例如,可以是,但不限于,智能手机、个人电脑(personal computer,pc)、平板电脑、个人数字助理(personal digital assistant,pda)、移动上网设备(mobile internet device,mid)、web(网站)服务器、数据服务器、网关设备等具有处理功能的设备。
[0071]
可以理解,图1所示的结构仅为示意。电子设备100还可以具有比图1所示更多或者更少的组件,或者具有与图1所示不同的配置。图1所示的各组件可以采用硬件、软件或其组合实现。
[0072]
基于上述电子设备100的实现架构,本申请实施例提供了一种报文规则匹配方法,请结合参阅2,图2为本申请实施例提供的报文规则匹配方法的流程图之一。下面结合图2所示的具体流程进行详细描述。
[0073]
步骤s1,获取待匹配报文,待匹配报文中包括目的端口号。
[0074]
步骤s2,从预先配置的端口匹配表项中查找出目的端口号所属的目标端口组,以及目标端口组对应的至少一个规则编号。
[0075]
其中,端口匹配表项中包括至少一个端口组,以及端口组与规则编号的对应关系。
[0076]
步骤s3,基于预先配置的规则编号与报文规则的对应关系,获取与待匹配报文对应的目标报文规则。
[0077]
作为一种可能的实施方式,上述电子设备100可以是网络交换设备,报文规则可以是提前配置的acl规则。该acl规则用于过滤识别不同业务的报文。
[0078]
例如,网络交换设备获取待匹配报文,获取待匹配报文中包括的目的端口号3,从预先配置的端口匹配表项中查找出目的端口号所属的目标端口组为1,该目标端口组1对应的规则编号为123。最后获取与规则编号123对应的目标报文规则。
[0079]
本申请实施例通过将待匹配报文中的目的端口段与端口匹配表项进行匹配,查找到端口匹配表项中目的端口段所属的目标端口组,获取目标端口组对应的规则编号,进而获得目标报文规则,而无需遍历每个端口,使得匹配报文规则的时间变短,提高了匹配速率。
[0080]
可选地,每个端口组包括端口段起始值及掩码长度。可基于端口段起始值及掩码长度进行匹配查找,以获取目的端口号所属的目标端口组。
[0081]
在上述基础上,作为一种可选的实施方式,步骤s2可通过一下方式实现,以查找出目的端口号所属的目标端口组:
[0082]
获取待匹配报文中的目的端口号。基于最长前缀匹配原则(longest prefix match,lpm),逐位比较端口匹配表项中每个端口段起始值与目的端口号的比特位的数值,得到与目的端口号匹配的至少一个端口段起始值,以及与每个该端口段起始值对应的掩码长度。将与目的端口号匹配,且对应掩码长度最长的端口段起始值所属的端口组作为目标端口组。
[0083]
例如,目的端口号为5,同时,如表1所示,端口段起始值包括3、4、6,对应的二进制为0011b、0100b、0110b。每个端口段起始值对应的掩码长度分别为2、3、2。
[0084]
表1
[0085]
端口组端口段起始值掩码长度规则编号33(0011b)212344(0100b)3123,12466(0110b)2124
[0086]
其中,目的端口号5利用二进制表示方法可表示为0101。
[0087]
逐位匹配目的端口号与端口段起始值每个比特位的数值,可以知道,目的端口号5与端口段起始值3匹配的比特位为1位,对应的掩码长度为2,目的端口号5与端口段起始值4匹配的比特位为3位,对应的掩码长度为3,目的端口号6与端口段起始值3匹配的比特位为2位,对应的掩码长度为2。比较可知,掩码长度最长的端口段起始值为4,其端口组为端口组4,因此端口组4为目标端口组。
[0088]
作为一种可能的实施方式,与目标端口对应的规则编号为多个,此时步骤s3可通过以下方式实现,以获取与待匹配报文对应的目标报文规则:
[0089]
获取每个规则编号的优先级。将优先级最高的规则编号作为目标报文规则编号。基于预先配置的规则编号与规则的对应关系,获取与目标报文规则编号对应的目标报文规则。
[0090]
同样使用上述举例,若目的端口号为5,同时,如表1所示,端口段起始值包括3、4、6,对应的二进制为0011b、0100b、0110b。每个端口段起始值对应的掩码长度分别为2、3、2。由上述分析可知,目标端口组为端口组4,其对应的规则编号包括123及124。
[0091]
此时,可获取规则编号123及规则编号124的优先级,例如,优先级可分为5个等级,从1-5,数字越大,优先级越高。假设规则编号123的优先级为4,规则编号124的优先级为3。对比可知,规则编号123的优先级最高,则将规则编号123作为目标报文规则编号。最后基于对于关系,获取与目标报文规则编号123对应的目标报文规则。
[0092]
如此,通过提前设定的优先级,从多个规则编号中选取目标规则,从而确定目标报文规则。
[0093]
进一步地,在获得目标报文规则之后,还可以基于目标报文规则对待匹配报文进行配置。
[0094]
可以理解的是,在不同的实施场景中,基于目标报文规则对待匹配报文进行配置的方式可以不同。
[0095]
请结合参阅图3,在步骤s1之前,本申请还可以预先进行端口匹配表项的配置。
[0096]
步骤s0,对多个端口号进行拆分并配置,得到端口匹配表项。
[0097]
作为一种可选的实施方式,步骤s0可通过以下方式实现:
[0098]
将多个端口号转换为包括预设个数的比特位组成的二进制数。将预设比特位的数值一致的端口号划分为一组,得到多个端口组。将预设比特位的个数作为每个端口组的掩码长度,并将每个端口组的起始端口号作为该端口组的端口段起始值。基于多个端口组及多个规则编号生成对应关系表。将每个掩码长度及每个端口段起始值作为对应关系表的表项,得到端口匹配表项。
[0099]
下面对端口3、端口4、端口5、端口6及端口7如何进行划分作详细举例,以帮助理解上述划分方式。如表2所示,端口号(即表2中示出的port),将上述端口转换为包括4个比特位的二进制数分别如表中所示。例如,端口号3的二进制数为0011,其第三比特位(即bit3)
的数值为0,其第二比特位(即bit2)的数值为0,其第一比特位(即bit1)的数值为1,其第零比特位(即bit0)的数值为1。其他端口号转换为二进制数后也如表2所示,在此不做例举。
[0100]
表2
[0101]
portbit3bit2bit1bit03001140100501016011070111
[0102]
若预设比特位的个数为2,比对每个转换为二进制数后的端口号可知,端口3的bit3及bit2的数值与其他端口号的bit3及bit2的数值均不相同,且端口4与端口5、端口6及端口7的bit3与bit2的数值均相同,因此,可将端口3单独划分为一个端口组,其掩码长度与预设比特位的个数相同为4,其端口段起始值与端口号相同,为3;将端口4、端口5、端口6及端口7划分为一个端口组,其掩码长度与预设比特位的个数相同,为2,其端口段起始值与端口组中端口号最小的端口相同,为4。
[0103]
若预设比特位的个数为3,比对每个转换为二进制数后的端口号可知,端口3的bit3、bit2及bit1的数值与其他端口号的bit3、bit2及bit1的数值均不相同;端口4与端口5的bit3、bit2及bit1的数值均相同,为010;端口6与端口7的前三个比特位的数值均相同,为011。因此,可将端口3单独划分为一个端口组,其掩码长度与预设比特位的个数相同,为4,其端口段起始值与最小的端口号相同,为4;将端口4及端口5划分为一个端口组,其掩码长度与预设比特位的个数相同,为3,其端口段起始值与端口组中端口号最小的端口相同,为4;将端口6及端口7划分为一个端口组,其掩码长度与预设比特位的个数相同,为3,其端口段起始值与端口组中端口号最小的端口相同,为5。
[0104]
作为一种可选的实施方式,还可通过以下方式将预设比特位的数值一致的端口号划分为一组,得到多个端口组。
[0105]
获取待划分端口的端口号,按照以下公式计算得到第一划分边界值:
[0106]
a
÷2n
=b,其中b为整数,a为待划分端口的端口号,n为第一划分边界值,且n=(0,1,

15)。
[0107]
判断待划分端口的总个数是否大于或等于2
n
,其中,n为第一划分边界值。
[0108]
若总个数大于或等于2
n
,则将[待划分端口,待划分端口+2
n-1]作为一个端口组,并对下一个剩余待划分端口作为待划分端口,再次执行获取待划分端口的端口号的步骤,直至每个端口均被划分完毕。
[0109]
若总个数小于2
n
,则将按照以下公式计算得到第二划分边界值:
[0110]
a
÷2m
≤c,其中,a为待划分端口的端口号,m为第二划分边界值,c为总个数。
[0111]
将[待划分端口,待划分端口+2
m-1]作为一个端口组,并对下一个剩余待划分端口作为待划分端口,再次执行获取待划分端口的端口号的步骤,直至每个端口均被划分完毕。
[0112]
下面同样对端口3、端口4及端口5如何进行划分作详细举例,以帮助理解上述划分方式。
[0113]
首先对端口3进行划分,即待划分端口的端口号为3。根据公式可知,n为0。待划分
端口的总个数为3(端口3+端口4+端口5),判断可知总个数3大于20,因此,可将[3,3+2
0-1]作为一个端口组,即,将端口3单独作为一个端口组。
[0114]
接着,对端口4进行划分,即待划分端口的端口号为4。根据公式可知,n为1。待划分端口的总个数为2(端口4+端口5),判断可知总个数等于21,因此,可将[4,4+2
1-1]作为一个端口组,即,将端口4及端口5共同作为一个端口组。
[0115]
基于同一发明构思,请结合参阅图4,本申请实施例中还提供了与上述报文规则匹配方法对应的报文规则匹配装置,装置包括:
[0116]
获取模块131,用于获取待匹配报文,待匹配报文中包括目的端口号。
[0117]
查找模块132,用于从预先配置的端口匹配表项中查找出目的端口号所属的目标端口组,以及目标端口组对应的至少一个规则编号,其中,端口匹配表项中包括至少一个端口组,以及端口号组与规则编号的对应关系。
[0118]
对应模块133,用于基于预先配置的规则编号与报文规则的对应关系,获取与待匹配报文对应的目标报文规则。
[0119]
作为一种可选的实施方式,每个端口组包括端口段起始值及掩码长度。查找模块132,用于获取待匹配报文中的目的端口号。基于最长前缀匹配原则,逐位比较端口匹配表项中每个端口段起始值与目的端口号的比特位的数值,得到与目的端口号匹配的至少一个端口段起始值,以及与每个该端口段起始值对应的掩码长度。将与目的端口号匹配,且对应掩码长度最长的端口段起始值所属的端口组作为目标端口组。
[0120]
作为一种可选的实施方式,装置还包括:配置模块134,用于对多个端口号进行拆分并配置,得到端口匹配表项。
[0121]
配置模块134还用于将多个端口号转换为包括预设个数的比特位组成的二进制数。将预设比特位的数值一致的端口号划分为一组,得到多个端口组。将预设比特位的个数作为每个端口组的掩码长度,并将每个端口组的起始端口号作为该端口组的端口段起始值。基于多个端口组及多个规则编号生成对应关系表。将每个掩码长度及每个端口段起始值作为对应关系表的表项,得到端口匹配表项。
[0122]
由于本申请实施例中的装置解决问题的原理与本申请实施例上述报文规则匹配方法相似,因此装置的实施原理可以参见方法的实施原理,重复之处不再赘述。
[0123]
本申请实施例也提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序被执行时实现上述的报文规则匹配方法。
[0124]
综上所述,本申请实施例提供了一种报文规则匹配方法、装置、电子设备100和可读存储介质,该方法通过获取待匹配报文,待匹配报文中包括目的端口号。接着从预先配置的端口匹配表项中查找出目的端口号所属的目标端口组,以及目标端口组对应的至少一个规则编号,其中,端口匹配表项中包括至少一个端口组,以及端口号组与规则编号的对应关系。最后基于预先配置的规则编号与报文规则的对应关系,获取与待匹配报文对应的目标报文规则,而无需遍历每个端口号,使得匹配报文的时间变短,提高了匹配速率。
[0125]
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1