一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

访问控制列表构建和数据报文处理方法、装置、系统与流程

2023-02-04 16:36:27 来源:中国专利 TAG:


1.本公开涉及互联网技术领域,尤其涉及访问控制列表技术领域。


背景技术:

2.访问控制列表(access control list,acl)是路由器和交换机接口的指令列表,包括一条或多条访问控制列表acl规则,每条acl规则是描述数据报文匹配条件的判断语句,用于进行数据报文的规则匹配并对数据报文执行与相匹配的acl规则对应的执行动作,以防止网络遭到恶意攻击,实现对网络访问行为的控制、限制网络流量、提高网络性能等。
3.现有技术中,acl规则的匹配方式需要多次串行查找,这会带来多次存储器的访问,加大了处理的延时,效率较低。


技术实现要素:

4.本公开提供了一种的访问控制列表构建和数据报文处理方法、装置、系统、电子设备、存储介质、计算机程序产品、网络设备。
5.根据本公开的第一方面,提供了一种访问控制列表构建方法,包括:
6.根据匹配项掩码对访问控制列表acl集合包含的acl规则进行分组,得到至少两个规则组,每个规则组对应一个匹配项掩码且每个规则组中acl规则包含的匹配项与所述匹配项掩码相匹配;
7.生成对应于各个规则组的访问控制列表;所述对应于各个规则组的访问控制列表用于并行匹配数据报文的acl规则。
8.根据本公开的第二方面,提供了一种数据报文处理方法,包括:
9.确定数据报文的匹配项;
10.根据所述数据报文的匹配项,从至少两个访问控制列表中并行匹配出与所述数据报文相匹配的目标acl规则;其中,所述至少两个访问控制列表根据至少两个规则组生成,所述至少两个规则组根据匹配项掩码对acl集合包含的acl规则进行分组得到,每个规则组对应一个匹配项掩码且每个规则组中acl规则包含的匹配项与所述匹配项掩码相匹配;
11.对所述数据报文执行所述目标acl规则对应的执行动作。
12.根据本公开的第三方面,提供了一种报文处理系统,包括:
13.处理器,用于确定数据报文的匹配项并将所述匹配项发送给存储有至少两个访问控制列表的存储器;其中,所述至少两个访问控制列表根据至少两个规则组生成,所述至少两个规则组根据匹配项掩码对acl集合包含的acl规则进行分组得到,每个规则组对应一个匹配项掩码且每个规则组中acl规则包含的匹配项与所述匹配项掩码相匹配;
14.存储器,用于根据所述数据报文的匹配项从所述至少两个访问控制列表中并行匹配出与所述数据报文相匹配的目标acl规则,并将所述目标acl规则发送给所述处理器;
15.所述处理器,还用于对所述数据报文执行所述目标acl规则对应的执行动作。
16.根据本公开的第四方面,提供了一种访问控制列表构建装置,包括:
17.分组模块,用于根据匹配项掩码对访问控制列表acl集合包含的acl规则进行分组,得到至少两个规则组,每个规则组对应一个匹配项掩码且每个规则组中acl规则包含的匹配项与所述匹配项掩码相匹配;
18.生成模块,用于生成对应于各个规则组的访问控制列表;所述对应于各个规则组的访问控制列表用于并行匹配数据报文的acl规则。
19.根据本公开的第五方面,提供了一种数据报文处理装置,包括:
20.确定模块,用于确定数据报文的匹配项;
21.匹配模块,用于根据所述数据报文的匹配项,从至少两个访问控制列表中并行匹配出与所述数据报文相匹配的目标acl规则;其中,所述至少两个访问控制列表根据至少两个规则组生成,所述至少两个规则组根据匹配项掩码对acl集合包含的acl规则进行分组得到,每个规则组对应一个匹配项掩码且每个规则组中acl规则包含的匹配项与所述匹配项掩码相匹配;
22.处理模块,用于对所述数据报文执行所述目标acl规则对应的执行动作。
23.根据本公开的第六方面,提供了一种电子设备,包括:
24.至少一个处理器;以及
25.与所述至少一个处理器通信连接的存储器;其中,
26.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任一项所述的方法。
27.根据本公开的第七方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述任一项所述的方法。
28.根据本公开的第八方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述任一项所述的方法。
29.根据本公开的第九方面,提供了一种网络设备,包括:
30.至少一个处理器;以及
31.与所述至少一个处理器通信连接的存储器;其中,
32.所述存储器中存储有至少两个访问控制列表;其中,所述至少两个访问控制列表根据上述任一项所述的访问控制列表构建方法得到;
33.处理器,用于确定数据报文的匹配项并根据所述数据报文的匹配项从所述至少两个访问控制列表中并行匹配出与所述数据报文相匹配的目标acl规则,以及对所述数据报文执行所述目标acl规则对应的执行动作。
34.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
35.附图用于更好地理解本方案,不构成对本公开的限定。其中:
36.图1为本公开一示例性实施例提供的一种访问控制列表构建方法的流程图;
37.图2为本公开一示例性实施例提供的一种访问控制列表构建方法中对acl规则进行分组的流程图;
38.图3为本公开一示例性实施例提供的一种访问控制列表构建方法中更新访问控制
列表的流程图;
39.图4为本公开一示例性实施例提供的一种报文处理方法的流程图;
40.图5为本公开一示例性实施例提供的一种报文处理系统的结构示意图;
41.图6为本公开一示例性实施例提供的一种访问控制列表构建装置的模块示意图;
42.图7为本公开一示例性实施例提供的一种数据报文处理装置的模块示意图;
43.图8是本公开一示例性实施例提供的一种电子设备的框图。
具体实施方式
44.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
45.acl是一种网络数据报文过滤技术,包括一条或多条acl规则,每条acl规则是描述数据报文匹配条件的判断语句。数据报文匹配条件可以根据实际需求自行定义,数据报文匹配条件包含的匹配项包括以下至少之一:数据报文的源地址、目的地址、源端口号、目的端口号、分片标记、时间段信息、协议类型、源mac(media access control,介质访问控制)地址和目的mac地址等,每条acl规则配置相应的执行动作,执行动作可以但不限于数据报文丢弃、数据报文转发等。
46.acl规则的匹配分为范围匹配和完全匹配。对于范围匹配的acl规则,其包含通配符掩码,通配符掩码决定acl规则的匹配项中哪些字段是需要精确匹配,哪些字段是不需要匹配,从而使一条acl规则对应一段匹配范围。完全匹配的acl规则不包含通配符掩码或者通配符掩码视为0,需要对匹配项的所有字段进行精确匹配。网络设备基于这些acl规则对数据报文进行匹配,并对数据报文执行与其相匹配的acl规则对应的执行动作,且该相匹配的acl规则为优先级最高的规则。
47.随着计算机网络带宽的不断提高和接入网络设备数量的爆炸式增长,网络设备对acl规则匹配的表项规模和匹配速率的要求也越来越高。目前不管是基于软件实现的acl匹配的方式还是基于软硬件结合实现acl匹配的方式,其匹配效率已经远远满足不了线速处理网络数据报文的需求。
48.本公开实施例提供一种访问控制列表构建方法,能够提高acl规则的匹配效率。
49.图1为本公开一示例性实施例提供的一种访问控制列表构建方法的流程图,该访问控制列表构建方法包括以下步骤:
50.步骤101、根据匹配项掩码对acl集合包含的acl规则进行分组,得到至少两个规则组。
51.其中,每个规则组对应一个匹配项掩码且每个规则组中acl规则包含的匹配项与该规则组的匹配项掩码相匹配。
52.acl集合中包含的acl规则的数量可以根据实际情况自行设置,可以是1条也可以是多条。acl集合中包含的acl规则的规则类型包括范围匹配的acl规则和/或完全匹配的acl规则。范围匹配的acl规则包含通配符掩码。acl规则的匹配项可以根据实际情况自行设置,包括以下至少之一:数据报文的源地址、目的地址、源端口号、目的端口号、分片标记和
时间段信息、协议类型、源mac(media access control,介质访问控制)地址和目的mac地址等。
53.匹配项掩码决定了规则组的数量。
54.在一个实施例中,匹配项掩码根据经验值确定。
55.在一个实施例中,匹配项掩码根据acl规则的通配符掩码确定。根据基于通配符掩码确定的匹配项掩码对acl规则进行分组,能够更好地寻找不同acl规则的共同点,使得分组得到的规则组的数量以及每个规则组包含的acl规则的数量均较适合,不会太多,也不会太少。避免规则组的数量太多,后续生成的访问控制列表占用较大的存储空间,从而严重限制并行匹配acl规则的数量。避免规则组的数量太少,致使每个规则组包含的acl规则的数量太多,而影响匹配效率。
56.具体的,可以根据acl集合中所有范围匹配的acl规则的通配符掩码的分布特征确定匹配项掩码集合,该匹配项掩码集合中包含至少一个匹配项掩码。通配符掩码的分布特征包括不同通配符掩码的数量、通配符掩码的取值大小等。
57.举例来说,以源地址sip以及目的地址dip作为数据报文匹配条件的匹配项为例,假设一条范围匹配的acl规则的数据报文匹配条件为[192.168.0.0/23,10.2.0.0/23],其中,192.168.0.0表示源地址sip,10.2.0.0表示目的地址dip,23表示通配符掩码。如果按以下规则[sip/0,dip/0]进行拆分,其中匹配项掩码为0,也即将该范围匹配的acl规则拆分成完全匹配的acl规则,得到29×29
=262144组规则组,每组规则组包含一条拆分后的acl规则。而如果按以下规则[sip/24,dip/24]进行拆分,其中24表示匹配项掩码,将该范围匹配的acl规则拆分成2
×
2=4组规则组。容易看出,acl规则拆分后的数量由acl规则中的通配符掩码与匹配项掩码的差值决定,差值越小,则规则组的数量越少。
[0058]
为了得到较适宜的规则组的数量,匹配项掩码与通配符掩码的差值小于差值阈值。其中,差值阈值为整数,可以根据实际情况自行设置,例如差值阈值的取值范围为[0,6]。
[0059]
在一个实施例中,为了提高规则匹配的效率,下述步骤102得到的每个访问控制列表通过至少一个控制器匹配数据报文的acl规则。因此在确定规则组的数量时,需要考虑控制器的数量,也即根据控制器的第一数量确定规则组的第二数量,使得规则组的第二数量小于等于控制器的第一数量,进而根据规则组的第二数量确定匹配项掩码,以确保有足够的控制器对步骤102生成的访问控制列表进行acl规则匹配,进而确保能够并行匹配数据报文的acl规则。
[0060]
在一个实施例中,将各个访问控制列表部署于网络设备的双倍速率同步动态随机存储器中,以实现数据报文的acl规则匹配,用于acl规则匹配的控制器采用双倍速率同步动态随机存储器ddr控制器。因此在确定规则组的数量时,需要考虑ddr控制器的数量,也即根据ddr控制器的第一数量确定规则组的第二数量,使得规则组的第二数量小于等于ddr控制器的第一数量,进而根据规则组的第二数量确定匹配项掩码,以确保有足够的ddr控制器对步骤102生成的访问控制列表进行acl规则匹配,进而确保能够并行匹配数据报文的acl规则。
[0061]
在一个实施例中,根据通配符掩码和ddr控制器的数量同时确定匹配项掩码。每确定一次匹配项掩码,判断基于该匹配项掩码进行分组得到的规则组的第二数量是否小于等
于ddr控制器的第一数量;若是,则确定该匹配项掩码较合适,可以使用该匹配项掩码对acl规则进行分组;若否,则更新匹配项掩码,并判断基于更新后的匹配项掩码进行分组得到的规则组的第二数量是否小于等于ddr控制器的第一数量。对匹配项掩码迭代更新,直至根据更新后的匹配项掩码进行分组得到的规则组的第二数量小于等于ddr控制器的第一数量。
[0062]
根据通配符掩码和ddr控制器的数量两个维度的参数同时确定匹配项掩码,能够快速、准确地确定出较合适的匹配项掩码。
[0063]
需要说明的是,当acl规则的数据报文匹配条件包含多个匹配项时,对于各个匹配项,匹配项掩码可以设置为相同也可以设置为不同。以数据报文匹配条件包含的匹配项为sip和dip为例,匹配项掩码的设置方式可以但不限于包括:sip的匹配项掩码为16,dip的匹配项掩码为16;或者,sip的匹配项掩码为16,dip的匹配项掩码为24。
[0064]
acl规则包括范围匹配的acl规则和/或精确匹配的acl规则。范围匹配的acl规则包含通配符掩码,精确匹配的acl规则不包含通配符掩码或者通配符掩码视为0。对于不同类型的acl规则分组方式不同,参见图2,根据匹配项掩码对acl规则进行分组的步骤包括:
[0065]
步骤101-0、确定匹配项掩码。
[0066]
步骤101-1、判断acl规则是否包含通配符掩码。
[0067]
若步骤101-1的判断结果为是,说明acl规则为范围匹配的acl规则,则执行步骤101-2。若步骤101-1的判断结果为否,说明acl规则为精确匹配的acl规则,则执行步骤101-3。
[0068]
需要说明的是,步骤101-0和步骤101-1的执行顺序不限于图2示出的先确定匹配项掩码,再判断acl规则是否包含通配符掩码;还可以先判断acl规则是否包含通配符掩码,再确定匹配项掩码;或者判断acl规则是否包含通配符掩码与确定匹配项掩码并行执行。
[0069]
步骤101-2、根据匹配项掩码对范围匹配的acl规则的匹配项进行拆分,并将拆分后的匹配项对应的acl规则划分入相匹配的匹配项掩码对应的规则组。
[0070]
对acl规则进行拆分,得到至少两个等价规则,拆分后的acl规则只属于特定的规则组。
[0071]
步骤101-3、将精确匹配的acl规则划分入相匹配的匹配项掩码对应的规则组。
[0072]
对于不同类型的acl规则采用不同的分组方式,确保acl规则分组的准确性。
[0073]
以表1示出的acl集合为例,acl集合包括3条acl规则,其中,规则a和规则b为范围匹配规则,规则c为完全匹配规则。
[0074]
表1
[0075][0076]
若按照拆分规则[sip/24,dip/24]对acl进行分组,其中,24为匹配项掩码,分组结果参见表2。规则a的匹配项被拆分为4个等价规则,分别为[192.168.0.0/24,10.2.0.0/24]、[192.168.0.0/24,10.2.1.0/24]、[192.168.1.0/24,10.2.0.0/24]和[192.168.1.0/24,10.2.1.0/24],分别对应组a~组b。规则b的匹配项与组d的匹配项掩码相匹配,无需对
其拆分,则将规则b划分入组d。规则c为完全匹配的acl规则,无需考虑拆分,并且组a~组d的匹配项掩码与规则c的匹配项不匹配,则规则c单独划分至组e。
[0077]
表2
[0078][0079]
对于不同类型的acl规则采用不同的手段实现分组,能够确保规则组的数量以及每个规则组中包含的acl规则的数量较适宜。
[0080]
步骤102、生成对应于各个规则组的访问控制列表。
[0081]
对应于各个规则组的访问控制列表用于并行匹配数据报文的acl规则。
[0082]
可以理解的,步骤102生成的访问控制列表的数量与规则组的数量相同。将所有访问控制列表部署于网络设备,即可对数据报文进行acl规则的并行匹配。
[0083]
在一个实施例中,将步骤102生成的各个规则组的访问控制列表同步至高带宽内存(high bandwidth memory,hbm)的双倍速率同步动态随机存储器(double-data-rate,ddr)中,每个访问控制列表对应一个双倍速率同步动态随机存储器,每个ddr通过至少一个控制器执行acl规则的匹配,且各个ddr的控制器并行执行acl规则匹配。再将hbm部署于网络设备,即可对数据报文进行acl规则的并行匹配。
[0084]
需要说明的是,对于每个访问控制列表所使用的ddr控制器的数量可以是一个也可以是多个。对于每个访问控制列表所使用的ddr控制器的数量可以根据该访问控制列表包含的表项数量决定,对于包含表项数量较大的访问控制列表可以使用两个或以上的ddr控制器。表项数量也即记录于访问控制列表中的acl规则数量。
[0085]
关于访问控制列表的同步,可以但不限于通过pcie(peripheral component interconnect express,一种高速串行计算机扩展总线)实现。
[0086]
hbm是一种基于3d堆栈工艺的高性能dram(动态随机存储器),将很多个ddr堆叠在一起实现大容量、高性能的ddr组合阵列。每一个ddr有独立的控制器,可以并发访问互不干扰。本公开实施例借助hbm多路并发实现acl规则匹配,可以支持百万量级规则的范围匹配和精确匹配,匹配速率最高可达每秒一亿八千万次以上。
[0087]
参见表1,一般每条acl规则都有优先级。在一个实施例中,每个访问控制列表按照acl规则的优先级从高到低的顺序构建顺序链表进行管理,参见表2,规则a和规则b的等价规则均划分入组d,组d的顺序链表长度为2,规则a的优先级低于规则b的优先级,从而规则a的等价条件的优先级低于规则b的等价条件的优先级,也就是说,若一个数据报文的匹配项
与组d的匹配项掩码相匹配,则执行规则b对应的执行动作。
[0088]
本公开实施例中,通过匹配项掩码对acl规则进行分组,生成对应于各个规则组的访问控制列表,能够实现并行匹配数据报文的acl规则,提高acl规则匹配的准确度和匹配效率,能够满足计算机网络带宽的不断提高和接入网络设备数量的爆炸式增长。
[0089]
本公开实施例特别适用于包含大量acl规则的acl集合,通过匹配项掩码对acl规则进行分组,能够得到数量较少的规则组,对应得到数量较少的访问控制列表,各个访问控制列表采用并行匹配的方式,从而对各个访问控制列表进行一次并行匹配或者少量几次匹配就能匹配出数据报文的目标acl规则,无需进行多次串行匹配,准确度和匹配效率大大提高。
[0090]
在一个实施例中,通过线性表生成访问控制列表,该方式实现简单,计算量小。
[0091]
在一个实施例中,通过哈希运算生成访问控制列表。具体的,对各个规则组中的acl规则的匹配项分别进行哈希运算,生成对应于各个规则组的访问控制列表。
[0092]
本公开实施例中,使用目标哈希函数(可根据实际情况自行设置)将acl规则的全部或者部分匹配项作为关键字内容存入特定地址。访问控制列表查找算法是一种实现精确匹配查找最为广泛应用的一种算法,具有查找速度快、容量大等特点。本公开实施例中,通过哈希运算生成访问控制列表,以便于在进行acl规则匹配时,可以快速精确的匹配出与数据报文相匹配的acl规则。
[0093]
在一个实施例中,对各个规则组中的acl规则的精确匹配项分别进行哈希运算,生成对应于各个规则组的访问控制列表。精确匹配项为匹配项中排除了匹配项掩码对应的位数之外的部分。以acl规则的匹配项sip为192.168.0.0,匹配项掩码为24举例说明,匹配项sip的位数为32位,匹配项掩码为24,意味着sip的位数中前24未必须得完全匹配,后8位可以匹配也可以不匹配,那么可将192.168.0作为acl规则的精确匹配项。
[0094]
访问控制列表的访问控制列表项索引为该规则组内所有拆分后acl规则的精确匹配项的哈希运算结果,访问控制列表项内容则是这些精确匹配项对应的唯一或优先级最高的acl规则内容,包括精确匹配项、执行动作、优先级等。
[0095]
需要说明的是,匹配项掩码可以对应匹配项中前面的位数,也可以对应匹配项中后面的位数,还可以对应匹配项中中间的位数,本公开实施例对此不作特别限定。
[0096]
使用精确匹配项进行哈希运算可以极大降低访问控制列表的表项数量。对于包含表项数量较大的访问控制列表可以使用两个或以上的ddr控制器,各个ddr控制器可以使用不同的哈希算法来计算存储地址。
[0097]
在一个实施例中,哈希运算可能会存在哈希碰撞,即不同的匹配项通过哈希运算得到的存储地址相同。可以通过多桶哈希的方式来降低哈希碰撞的影响。对于一些拆分后acl规则数量较多的规则组,还可以通过布谷鸟哈希来解决。
[0098]
在一个实施中,用户可以根据实际需求更新网络设备中的访问控制列表,包括新增acl规则和删除访问控制列表中的acl规则。修改acl规则的实现方式与新增acl规则类似。
[0099]
对于新增acl规则且待新增acl规则为范围匹配的acl规则,参见图3,步骤102之后还包括以下步骤:
[0100]
步骤103-1、响应于规则新增指令,获取待新增acl规则,并根据待新增acl规则的
通配符掩码确定待新增acl规则待分入的规则组。
[0101]
步骤103-2、根据待分入的规则组的匹配项掩码对待新增acl规则进行拆分。
[0102]
根据该规则组的预设掩码将acl规则拆分成一条或者多条规则,并且通过匹配项掩码来精简这些拆分后acl规则的匹配项,也即将匹配项中排除了匹配项掩码对应的位数之外的部分作为该acl规则的精确匹配项,实现匹配项的精简。
[0103]
步骤103-2的具体实现方式与步骤10-2类似,此处不再赘述。
[0104]
步骤103-3、将拆分后的待新增acl规则分入待分入的规则组以更新规则组,并根据更新后的规则组更新访问控制列表。
[0105]
对于新增acl规则且待新增acl规则为完全匹配的acl规则,根据待新增acl规则确定待新增acl规则待分入的规则组,直接将待新增acl规则分入待分入的规则组以更新规则组,并根据更新后的规则组更新访问控制列表,无需拆分待新增acl规则。
[0106]
本公开实施例中,能够实现acl集合的任意扩展,操作方便,灵活性高,且能够满足当前计算机网络带宽的不断提高和接入网络设备数量的爆炸式增长对acl规则匹配的表项规模要求。
[0107]
在一个实施例中,还将更新后的访问控制列表同步到hbm中。由于每一条acl规则只会属于特定的规则组,因此一条acl规则的新增只需更新对应的访问控制列表即可,操作简单,计算量小,且不会干扰其他访问控制列表。
[0108]
在一个实施例中,更新访问控制列表之前先判断访问控制列表中是否存在与拆分后的待新增acl规则的匹配项相同的待替换规则;若不存在,也即也即访问控制列表中不存在与拆分后的待新增acl规则的匹配项相同的待替换规则,则执行根据更新后的规则组更新访问控制列表的步骤;若存在,也即访问控制列表中存在与拆分后的待新增acl规则的匹配项相同的待替换规则,则分别确定拆分后的待新增acl规则与待替换规则的优先级,并将拆分后的待新增acl规则与相同的规则中优先级较高的保留于访问控制列表中。也就说,若访问控制列表中存在与拆分后的待新增acl规则的匹配项相同的待替换规,需要进一步判断拆分后的待新增acl规则的优先级是否高于待替换规则的优先级;若是,也即拆分后的待新增acl规则的优先级高于待替换规则的优先级,则将待替换规则从访问控制列表中删除,并将拆分后的待新增acl规则增加至访问控制列表中;若否,也即拆分后的待新增acl规则的优先级低于待替换规则的优先级,则不动作,也即待替换规则保留于访问控制列表中。通过优先级的判断能够确保访问控制列表中acl规则的优先级的准确性,避免匹配到错误的acl规则。
[0109]
关于将拆分后的待新增acl规则增加至访问控制列表,通过对拆分后的待新增acl规则进行哈希运算实现,具体实现方式与生成访问控制列表类似,此处不再赘述。
[0110]
在一个实施例中,访问控制列表通过顺序链表表征。顺序链表由同一规则组中的多个匹配项相同的acl规则组成,头节点为优先级最高的acl规则,其余节点按照规则的优先级从高到低的顺序连接。顺序链表的长度为规则组中的acl规则的数量,以表2中的组d为例,其中包含2个acl规则,对应的顺序链表长度为2。根据更新后的规则组更新访问控制列表,也即根据拆分后的acl规则的匹配项或者精确匹配项来更新顺序链表。对于新增规则,判断本规则组的访问控制列表中是否有相同的精确匹配项。如果没有,则直接将拆分后的acl规则(等价规则)写入到访问控制列表。如果有,则判断该拆分后的acl规则的优先级是
否高于哈希访问控制列表中现有的表项,高于则将拆分后的acl规则写入到哈希访问控制列表覆盖原有表项。如果没有,则将该拆分后的acl规则根据优先级插入顺序链表中,以确保该顺序链表中的acl规则根据优先级从高到低的顺序排列。且通过顺序列表的方式,能够快速匹配出与数据报文相匹配的acl规则。
[0111]
在一个实施例中,将各个规则组的访问控制列表同步至hbm中。当需要写入新的表项内容时,如果ddr控制器对应的ddr存储位置有空位,则直接写入即可。如果所有的ddr控制器对应存储位置都已经写满,则任选一个ddr控制器将原来存储的表项踢出来,然后写入新的表项。被踢出的表项再写到同个规则组的其他ddr控制器对应的ddr存储位置,直到没有表项被踢出。
[0112]
对于删除acl规则,响应于规则删除指令,先确定待删除acl规则所在的访问控制列表并确定该待删除acl规则是否为访问控制列表中优先级最高的acl规则。若是,也即删除acl规则是访问控制列表中优先级最高的acl规则,则将访问控制列表中的待删除acl规则删除,并重新确定删除了待删除acl规则之后的访问控制列表中acl规则的优先级;若否,也即待删除acl规则不是访问控制列表中优先级最高的acl规则,则将访问控制列表中的待删除acl规则删除。
[0113]
确定待删除acl规则所在的访问控制列表的实现方式与待新增acl规则确定待分入的访问控制列表的实现方式类似,此处不再赘述。
[0114]
在一个实施例中,当访问控制列表通过顺序链表表征时,对于删除规则,判断其精确匹配项对应的顺序链表的长度是否为1。如果顺序链表的长度为1,则可直接将该精确匹配项对应的访问控制列表表项和顺序链表删除。如果顺序链表的长度大于1,则需要判断该acl规则是否为顺序链表的头节点。如果是头节点,则需要将其从顺序链表中删除并更新该顺序链表的头节点,同时将新的头节点的规则写入到访问控制列表覆盖原有的表项。如果不是头节点,则只需要将其从顺序链表中删除,不需要另外更新访问控制列表。
[0115]
在一个实施例中,还将删除了待删除acl规则之后的访问控制列表同步到hbm中。
[0116]
acl集合发生变化时,比如新增或删除一条acl规则,本公开实施例可以计算出需要作出变更的访问控制列表。由于每一条acl规则只会属于特定的规则组,因此一条acl规则的新增或删除只需更新对应的访问控制列表即可,在更新访问控制列表时,不会干扰其他访问控制列表。
[0117]
本公开实施例还提供一种报文处理方法,参见图4,该数据报文处理方法包括以下步骤:
[0118]
步骤401、确定数据报文的匹配项。
[0119]
数据报文的匹配项与acl规则的匹配项相对应,包括以下至少之一:数据报文的源地址、目的地址、源端口号、目的端口号、分片标记和时间段信息、协议类型、源mac(media access control,介质访问控制)地址和目的mac地址等。
[0120]
在一个实施例中,网络设备接收到数据报文之后先对数据报文进行解析,从中提取匹配项,同时将数据报文存放在报文缓存区。
[0121]
步骤402、根据所述数据报文的匹配项,从至少两个访问控制列表中并行匹配出与数据报文相匹配的目标acl规则。
[0122]
每一个分组则通过访问控制列表查找算法实现精确匹配,最后将各个分组的匹配
结果汇总输出。
[0123]
步骤402中的至少两个访问控制列表根据上述任一实施例提供的访问控制列表生成,具体实现过程此处不再赘述。
[0124]
若从至少两个访问控制列表中并行匹配出多个与数据报文相匹配的acl规则,则将多个相匹配的acl规则中优先级最高的确定为目标acl规则。
[0125]
步骤403、对数据报文执行目标acl规则对应的执行动作。
[0126]
本公开实施例中,通过匹配项掩码对acl规则进行分组而生成的对应于各个规则组的访问控制列表,能够实现并行匹配数据报文的acl规则,提高acl规则匹配的准确度和匹配效率,能够满足计算机网络带宽的不断提高和接入网络设备数量的爆炸式增长。
[0127]
若访问控制列表通过对各个规则组中的acl规则的匹配项分别进行哈希运算生成,在匹配acl规则时,则对数据报文的匹配项进行哈希运算,根据哈希运算的运算结果从至少两个访问控制列表中并行匹配出与数据报文相匹配的目标acl规则。
[0128]
本公开实施例中,通过哈希运算生成访问控制列表,以便于在进行acl规则匹配时,可以快速精确的匹配出与数据报文相匹配的acl规则。
[0129]
若访问控制列表通过对各个规则组中的acl规则的精确匹配项分别进行哈希运算生成,在匹配acl规则时,则先根据各规则组对应的匹配项掩码从数据报文的匹配项中确定出精确匹配项,对数据报文的精确匹配项进行哈希运算,根据哈希运算的运算结果从至少两个访问控制列表中并行匹配出与数据报文相匹配的目标acl规则。
[0130]
使用精确匹配项进行哈希运算可以极大降低访问控制列表的表项数量。对于包含表项数量较大的访问控制列表可以使用两个或以上的ddr控制器,各个ddr控制器可以使用不同的哈希算法来计算存储地址。
[0131]
在一个实施例中,进行acl规则匹配之前,先判断本规则组的访问控制列表是否有效,如果无效则直接输出无效结果。如果有效,对数据报文的匹配项或者精确匹配项(取决于构建访问控制列表时所采用的是匹配项还是精确匹配项)进行哈希运算。哈希运算后的结果作为读取访问控制列表的地址以获得对应的表项。将匹配项或者精确匹配项与访问控制列表中存储的匹配项或者精确匹配项进行比对后,确定相匹配的acl规则。
[0132]
在一个实施例中,将各个规则组的访问控制列表同步至hbm中,借助hbm实现acl规则的并行匹配。
[0133]
由于hbm是基于同步动态随机存储器(sdram)实现的存储器,需要在使用过程中不断地进行刷新和预充电,限制了存储器接口的访问带宽。为了保证查找效率,hbm中的各个ddr控制器都使用表项复制,即复制多份访问控制列表,并将多份访问控制列表在双倍速率同步动态随机存储器的多个行bank上进行存储。在进行表项查找时轮询这些bank,从而避免由于刷新和预充电带来的长时间等待,提高带宽利用率。
[0134]
本公开实施例还提供一种报文处理系统,参见图5,该报文处理系统包括:
[0135]
处理器51,用于确定数据报文的匹配项并将所述匹配项发送给存储有至少两个访问控制列表的存储器。
[0136]
其中,至少两个访问控制列通过上述任一实施例提供的访问控制列表构建方法生成。
[0137]
存储器52,用于根据所述数据报文的匹配项从所述至少两个访问控制列表中并行
匹配出与所述数据报文相匹配的目标acl规则,并将所述目标acl规则发送给所述处理器;
[0138]
所述处理器51,还用于对所述数据报文执行所述目标acl规则对应的执行动作。
[0139]
本公开实施例中,通过软件和硬件结合的方式实现acl匹配,成本较低,实现简单可靠,且能同时满足网络设备对acl规则匹配的表项规模和匹配速率的要求。通过高效的哈希查找算法,能够及时对接收到的多个数据报文进行acl规则匹配,实现数据报文的连续处理,匹配效率最高可达每秒一亿八千万次以上,满足100g小包、1t大包的线速处理能力。
[0140]
可选地,所述存储器为高带宽内存,所述高带宽内存包括至少两个双倍速率同步动态随机存储器,每个双倍速率同步动态随机存储器用于存储一个访问控制列表;
[0141]
每个双倍速率同步动态随机存储器的控制器用于从对应的双倍速率同步动态随机存储器中进行acl规则匹配。
[0142]
可选地,所述控制器还用于复制多份所述访问控制列表,并将多份访问控制列表在所述双倍速率同步动态随机存储器的多个行上进行存储。
[0143]
由于hbm是基于同步动态随机存储器实现的存储器,需要在使用过程中不断地进行刷新和预充电,限制了存储器接口的访问带宽。为了保证查找效率,hbm中的各个ddr控制器都使用表项复制,即复制多份访问控制列表,并将多份访问控制列表在双倍速率同步动态随机存储器的多个行bank上进行存储。在进行表项查找时轮询这些bank,从而避免由于刷新和预充电带来的长时间等待,提高带宽利用率。
[0144]
可选地,处理器为fpga(field-programmable gate array,现场可编程门阵列)。
[0145]
本公开实施例中,通过软件和硬件结合的方式实现acl匹配,成本较低,实现简单可靠,且能同时满足网络设备对acl规则匹配的表项规模和匹配速率的要求。通过高效的哈希查找算法,实现匹配效率最高可达每秒一亿八千万次以上,满足100g小包、1t大包的线速处理能力。
[0146]
与前述访问控制列表构建方法、数据报文处理方法实施例相对应,本公开还提供了访问控制列表构建装置、数据报文处理装置的实施例。
[0147]
图6为本公开一示例性实施例提供的一种访问控制列表构建装置的模块示意图,该访问控制列表构建装置包括:
[0148]
分组模块61,用于根据匹配项掩码对访问控制列表acl集合包含的acl规则进行分组,得到至少两个规则组,每个规则组对应一个匹配项掩码且每个规则组中acl规则包含的匹配项与所述匹配项掩码相匹配;
[0149]
生成模块62,用于生成对应于各个规则组的访问控制列表;所述对应于各个规则组的访问控制列表用于并行匹配数据报文的acl规则。
[0150]
可选地,还包括:
[0151]
确定模块,用于根据各个acl规则的通配符掩码和/或控制器的第一数量确定所述匹配项掩码;其中,每个控制器用于从一个访问控制列表中匹配所述数据报文的acl规则。
[0152]
可选地,所述匹配项掩码与所述通配符掩码的差值小于差值阈值。
[0153]
可选地,根据所述匹配项掩码得到的规则组的第二数量小于等于所述第一数量。
[0154]
可选地,所述分组模块包括:
[0155]
第一确定单元,用于确定控制器的第一数量;每个控制器用于从一个访问控制列表中匹配所述数据报文的acl规则;
[0156]
第二确定单元,用于确定根据所述匹配项掩码对所述acl规则进行分组得到的规则组的第二数量;
[0157]
判断单元,用于判断所述第二数量是否大于所述第一数量;
[0158]
分组模块,用于在所述第二数量大于所述第一数量的情况下,更新所述匹配项掩码,并根据更新后的匹配项掩码对acl规则进行重新分组,以使重新分组得到的规则组的第二数量小于等于所述第一数量。
[0159]
可选地,所述分组模块包括:
[0160]
判断单元,用于判断所述acl规则是否包含通配符掩码;
[0161]
若所述acl规则包含通配符掩码,则所述判断单元调用第一分组单元;若所述acl规则不包含通配符掩码,则所述判断单元调用第二分组单元;
[0162]
所述第一分组单元,用于根据所述匹配项掩码对所述acl规则的匹配项进行拆分,并将拆分后的匹配项对应的acl规则划分入相匹配的匹配项掩码对应的规则组;
[0163]
所述第二分组单元,用于将所述acl规则划分入相匹配的匹配项掩码对应的规则组。
[0164]
可选地,所述生成模块具体用于:
[0165]
对各个规则组中的acl规则的匹配项或者精确匹配项分别进行哈希运算,生成对应于各个规则组的访问控制列表;其中,所述精确匹配项为所述匹配项中排除了匹配项掩码对应的位数之外的部分。
[0166]
可选地,还包括:
[0167]
更新模块,用于响应于规则新增指令,获取待新增acl规则,根据所述待新增acl规则的通配符掩码确定所述待新增acl规则待分入的规则组,并根据所述待分入的规则组的匹配项掩码,对所述待新增acl规则进行拆分,以及将拆分后的待新增acl规则分入待分入的规则组以更新规则组,根据更新后的规则组更新所述访问控制列表。
[0168]
可选地,所述访问控制列表中的acl规则按照优先级从高到低的顺序排列;在根据更新后的规则组更新所述访问控制列表时,所述更新模块用于:
[0169]
判断所述访问控制列表中是否存在与所述拆分后的待新增acl规则的匹配项相同的待替换规则:
[0170]
若不存在,则执行所述根据更新后的规则组更新所述访问控制列表的步骤;
[0171]
若存在,则判断所述拆分后的待新增acl的优先级是否高于待替换规则的优先级;
[0172]
若是,则将所述待替换规则从所述访问控制列表中删除,并将所述拆分后的待新增acl规则增加至所述访问控制列表中。
[0173]
可选地,所述访问控制列表中的acl规则按照优先级从高到低的顺序排列;所述访问控制列表构建装置还包括:
[0174]
更新模块,用于响应于规则删除指令,确定待删除acl规则是否为所述待删除acl规则所在的访问控制列表中优先级最高的acl规则;若所述待删除acl规则是访问控制列表中优先级最高的acl规则,则将所述访问控制列表中的待删除acl规则删除,并重新确定删除了所述待删除acl规则之后的访问控制列表中acl规则的优先级;若所述待删除acl规则不是访问控制列表中优先级最高的acl规则,则将访问控制列表中的待删除acl规则删除。
[0175]
可选地,还包括:
[0176]
同步模块,用于将所述各个规则组的访问控制列表同步至高带宽内存的双倍速率同步动态随机存储器中,每个访问控制列表对应一个双倍速率同步动态随机存储器。
[0177]
图7为本公开一示例性实施例提供的一种数据报文处理装置的模块示意图,该数据报文处理装置包括:
[0178]
确定模块71,用于确定数据报文的匹配项;
[0179]
匹配模块72,用于根据所述数据报文的匹配项,从至少两个访问控制列表中并行匹配出与所述数据报文相匹配的目标acl规则;其中,所述至少两个访问控制列表根据至少两个规则组生成,所述至少两个规则组根据匹配项掩码对acl集合包含的acl规则进行分组得到,每个规则组对应一个匹配项掩码且每个规则组中acl规则包含的匹配项与所述匹配项掩码相匹配;
[0180]
处理模块73,用于对所述数据报文执行所述目标acl规则对应的执行动作。
[0181]
可选地,所述访问控制列表通过对各个规则组中的acl规则分别进行哈希运算生成;
[0182]
所述匹配模块具体用于:
[0183]
对所述数据报文的匹配项进行哈希运算,根据所述哈希运算的运算结果从所述至少两个访问控制列表中并行匹配出与所述数据报文相匹配的目标acl规则。
[0184]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0185]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0186]
图8是本公开一示例性实施例提供的一种电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0187]
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(rom)802中的计算机程序或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序,来执行各种适当的动作和处理。在ram803中,还可存储设备800操作所需的各种程序和数据。计算单元801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
[0188]
设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0189]
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如访问控制列表构建方法、数据报文处理方法。例如,在一些实施例中,访问控制列表构建方法、数据报文处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由rom 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到ram 803并由计算单元801执行时,可以执行上文描述的访问控制列表构建方法、数据报文处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行访问控制列表构建方法、数据报文处理方法。
[0190]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0191]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0192]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0193]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0194]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据
服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0195]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0196]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0197]
本公开实施例还提供一种网络设备,该网络设备包括:
[0198]
至少一个处理器;以及
[0199]
与所述至少一个处理器通信连接的存储器;其中,
[0200]
所述存储器中存储有至少两个访问控制列表;其中,所述至少两个访问控制列表根据上述任一实施例提供的访问控制列表构建方法得到;
[0201]
处理器,用于确定数据报文的匹配项并根据所述数据报文的匹配项从所述至少两个访问控制列表中并行匹配出与所述数据报文相匹配的目标acl规则,以及对所述数据报文执行所述目标acl规则对应的执行动作。
[0202]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献