处理网络数据包的方法、装置及存储介质与流程

文档序号:23823675发布日期:2021-02-03 17:14阅读:60来源:国知局
处理网络数据包的方法、装置及存储介质与流程

[0001]
本发明涉及网络技术领域,更具体地,涉及一种处理网络数据包的方法、装置及存储介质。


背景技术:

[0002]
网络数据包分类(packet classification)技术在交换机、路由器、防火墙及深度包检测等网络功能中的广泛应用,使之成为网络技术中至关重要的一部分。网包分类算法是用给定的分类规则,对网络数据包进行分类处理的算法。网包分类算法首先对网络数据包进行协议解析和字段抽取操作,然后依据协议类型和分类字段对网络数据包进行分类。同时,网包分类算法还需要考虑如何在分类规则集合中加入新的规则,即如何更新分类规则集合。
[0003]
随着网络流量的持续增长,尤其是视频、多媒体流量的持续增长,传统网络暴露出来越来越多的问题。软件定义网络(software-defined network,sdn)技术分离网络设备的控制层和转发层,以构建开放可编程的网络环境,被认为是解决现有问题的关键技术方向。分类规则集合规模变大,使得网络数据包分类算法对规则冗余的容忍度降低。更新频率增加使得网络数据包分类算法对实时动态更新性能要求更高。主流sdn网络架构中,网络数据包的转发规则是以流表的形式由控制器动态地下发至交换机进行配置。因此,相比于传统网络,sdn技术对交换机进行规则动态更新的性能提出了更高的要求。


技术实现要素:

[0004]
为解决现有技术中的上述问题,本发明实施例提出一种处理网络数据包的方法、装置及存储介质,能够更为灵活地实现网络数据包的分类,为同时实现高匹配性能与高更新性能提供技术基础。
[0005]
本发明的一个方面提供了一种处理网络数据包的方法。该方法包括:根据第一分类规则集合与所述网络数据包的包头信息,生成第一匹配向量,其中所述第一匹配向量中的各个元素分别用于表示所述网络数据包与所述第一分类规则集合中的各个分类规则是否匹配;根据第一优先级编码矩阵与所述第一匹配向量,生成第一报告向量,其中所述第一优先级编码矩阵中的各个元素分别用于表示所述第一分类规则集合中的各个分类规则之间的优先级高低关系,所述第一报告向量用于标识在所述第一分类规则集合中所述网络数据包匹配的优先级最高的分类规则;输出所述第一报告向量,以便根据所述网络数据包匹配的优先级最高的分类规则转发所述网络数据包。
[0006]
本发明的另一方面提供了一种处理网络数据包的装置。该装置包括:匹配模块,用于根据第一分类规则集合与所述网络数据包的包头信息,生成第一匹配向量,其中所述第一匹配向量中的各个元素分别用于表示所述网络数据包与所述第一分类规则集合中的各个分类规则是否匹配;第一选择模块,用于根据第一优先级编码矩阵与所述第一匹配向量,生成第一报告向量,其中所述第一优先级编码矩阵中的各个元素分别用于表示所述第一分
类规则集合中的各个分类规则之间的优先级高低关系,所述第一报告向量用于标识在所述第一分类规则集合中所述网络数据包匹配的优先级最高的分类规则;输出模块,用于输出所述第一报告向量,以便根据所述网络数据包匹配的优先级最高的分类规则转发所述网络数据包。
[0007]
本发明的另一方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行上述方法的指令。
附图说明
[0008]
为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:
[0009]
图1是现有技术中tcam芯片方案的匹配方法的示意性原理图;
[0010]
图2是现有技术中tcam芯片方案的更新方法的示意性原理图;
[0011]
图3为根据本发明一个实施例的处理网络数据包的方法的示意性流程图;
[0012]
图4为根据本发明一个实施例的优先级编码矩阵的示意图;
[0013]
图5为根据本发明一个实施例的使用优先级编码矩阵生成报告向量的示意性流程图;
[0014]
图6为根据本发明一个实施例的优先级编码矩阵的存储结构的示意图;
[0015]
图7为根据本发明一个实施例的更新优先级编码矩阵的示意图;
[0016]
图8为根据本发明一个实施例的8t sram的列写过程的示意图;
[0017]
图9为根据本发明一个实施例的8t sram的列写过程的另一示意图;
[0018]
图10为根据本发明另一实施例的使用优先级编码矩阵生成报告向量的示意性流程图;
[0019]
图11为根据本发明一个实施例的处理网络数据包的装置的示意性框图;以及
[0020]
图12为根据本发明一个实施例的处理网络数据包的装置的另一示意性框图。
具体实施方式
[0021]
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。另外,本发明以下提供的各个实施例以及实施例中的各技术特征可以以任意方式相互组合。
[0022]
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
[0023]
现有技术中网络数据包分类技术的实现分为硬件和软件两类。对于交换机、路由器等网络设备,由于数据包流量巨大,为了提供最好的匹配性能,常见的商用交换机产品采用三态内容寻址存储器(ternary content-addressable memory,tcam)芯片方案。但是tcam芯片方案的分类规则更新性能较差,且其更新性能随着分类规则数量的增加而下降。
若无法及时更新分类规则,便会存在更新过渡期,进而导致网络数据包被错误地转发、丢包以及网络拥塞等问题。近几年出现了以ovs(openvswitch)虚拟交换机为代表的纯软件实现的网络数据包分类技术。在软件实现的方案中,虽然更新性能不受分类规则数量的影响,但匹配性能比硬件tcam至少慢3个数量级。因此,软件实现的方案目前主要用在流量有限的地方,比如云计算虚拟化的网卡、深度包检测等。
[0024]
在现有tcam芯片方案的基础上,本发明提出一种处理网络数据包的方法、装置及存储介质,能够消除tcam芯片方案在更新性能上的技术壁垒,并进一步提供兼具高匹配性能与高更新性能的技术方案。应理解,本发明提出的技术方案的使用场景不限于sdn网络,还可以应用于其它实现网络数据分类技术的场景。
[0025]
下面结合图1和图2详细描述tcam芯片方案的实现原理,以更好地理解本发明的技术方案以及所实现的有益效果。
[0026]
图1是现有技术中tcam芯片方案的匹配方法的示意性原理图。如图1中(a)所示,分类规则集合包含四个分类规则,标识(rule id,rid)分别为r0,r1,r2及r3。分类规则一栏为各个分类规则的具体内容,其中符号“*”为通配符。优先级一栏为各个分类规则的优先级。其中,优先级栏的数字越大表示对应的分类规则的优先级越高。如图1中(b)所示,上述四个分类规则在tcam中的存放顺序按照优先级高低排列,优先级越高分类规则的存储地址越靠前(即,存储地址越高)。
[0027]
以网络数据包的包头信息中携带的分类规则为1010为例:将该网络数据包的分类规则1010输入至tcam芯片后,得到该网络数据包与以上四个分类规则r0,r1,r2及r3的匹配结果。由于通配符的存在,图中阴影显示的分类规则r2,r3及r0均与该网络数据包匹配。将匹配结果输入至优先级编码器,输出存储地址最靠前的分类规则的标识r2,即为网络数据包匹配的优先级最高的分类规则的标识。
[0028]
当有新的分类规则加入时,还涉及如何更新tcam中存储的分类规则的问题。图2是现有技术中tcam芯片方案的更新方法的示意性原理图。如图2中(a)和(b)所示,新的分类规则r4的优先级为3。按照前文所述的存放规则,新的分类规则r4应存储于分类规则r2之后以及分类规则r1之前。因此在更新分类规则r4时,需要将分类规则r1,r3及r0分别向后移动一位,导致tcam芯片方案的更新效率较低。尤其是在分类规则数量庞大时,更新分类规则所耗时间过长,将严重影响网络设备的性能。
[0029]
为了克服tcam芯片更新效率较低的问题,本发明提出了新的解决方案。图3为根据本发明一个实施例的处理网络数据包的方法的示意性流程图。如图1所示,该方法包括操作s301、操作s302和操作s303。
[0030]
在操作s301中,根据第一分类规则集合与所述网络数据包的包头信息,生成第一匹配向量。其中,所述第一匹配向量中的各个元素分别用于表示所述网络数据包与所述第一分类规则集合中的各个分类规则是否匹配。
[0031]
应理解,第一分类规则集合为包含多个分类规则的集合。还应理解的是,网络数据包的分类规则标识通常存储于其包头信息中。为了便于描述,此处直接将技术方案表述为根据网络数据包的包头信息生成第一匹配向量。但应理解,将网络数据包的分类规则标识存储于其它位置的技术方案,应属于本发明的等同技术特征,因此也应落在本发明实施例的保护范围内。
[0032]
例如,可以使用tcam实现操作s301,也可使用其它的三态内容寻址存储器(content-addressable memory,cam)实现操作s301,本发明对此不作限定。cam是一种基础的存储器件,用于高速搜索。给定一个输入数据,cam能够将它与cam存储的所有数据同时进行比较,然后返回匹配数据所在的地址。tcam是cam的一种。应理解,无论使用tcam还是其它cam实现操作s301,分类规则集合中各个分类规则在硬件中的存储顺序都与其优先级高低无关。
[0033]
当网络数据包同时与分类规则集合中的多个分类规则匹配时,本发明实施例可以通过下述操作s302选择出优先级最高的分类规则,而非使用分类规则所在的存储地址的高低选择出优先级最高的分类规则。
[0034]
在操作s302中,根据第一优先级编码矩阵与所述第一匹配向量,生成第一报告向量。其中,所述第一优先级编码矩阵中的各个元素分别用于表示所述第一分类规则集合中的各个分类规则之间的优先级高低关系。所述第一报告向量用于标识在所述第一分类规则集合中所述网络数据包匹配的优先级最高的分类规则。
[0035]
在本发明实施例中,将分类规则的优先级高低与其存储地址高低解耦,通过优先级编码矩阵表示分类规则集合中各个分类规则之间的优先级高低关系,进而借助优先级编码矩阵选出网络数据包所匹配的具有最高优先级的分类规则。应理解,所述第一优先级编码矩阵应能够通过其元素表示第一分类规则集合中任意两个分类规则之间的优先级高低关系,但本发明实施例不限定优先级编码矩阵的具体形式。
[0036]
在操作s303中,输出所述第一报告向量,以便根据所述网络数据包匹配的优先级最高的分类规则转发所述网络数据包。
[0037]
在解耦分类规则优先级高低与存储地址高低之间对应关系的基础上,本发明实施例提供了一种全新的网络数据包的处理方法。根据该处理方法能够更为灵活地实现网络数据包的分类,为同时实现高匹配性能与高更新性能提供技术基础。
[0038]
可选地,在本发明的一个实施例中,所述第一分类规则集合为构成分类规则全集的多个分类规则子集中的一个分类规则子集。所述多个分类规则子集中的每个分类规则子集分别对应一个优先级区间,且所述多个分类规则子集能够按照优先级高低依次排序。
[0039]
在这种情况下,在根据第一优先级编码矩阵与第一匹配向量生成第一报告向量之前,需先从所述多个分类规则子集中各个分类规则子集对应的局部优先级编码矩阵中选出所述第一优先级编码矩阵。其中,所述第一优先级编码矩阵为优先级最高且包含与所述网络数据包匹配的分类规则的分类规则子集所对应的局部优先级编码矩阵。例如,可以用存储地址或其它信息标识各个分类规则子集的优先级高低。这样,可以根据存储地址或其它信息很容易地选出优先级最高的分类规则子集,进而找到所述第一优先级编码矩阵。
[0040]
也就是说,当所述第一分类规则集合只包含全部分类规则中的部分分类规则时,需先从多个分类规则子集中选出所述第一分类规则集合。应理解,在本发明实施例中第一分类规则集合与第一优先级编码矩阵有对应关系。也就是说,第一优先级编码矩阵不能表示除第一分类规则集合包含的分类规则之外的分类规则之间的优先级高低关系。
[0041]
应理解,各个分类规则子集对应的优先级区间除区间端点外不应相互重叠。例如,各个优先级区间可以为闭区间或半开半闭区间,但应保证所有分类规则子集的优先级区间之和能够覆盖分类规则全集的优先级区间。还应理解,多个分类规则子集能够按照优先级
高低依次排序的含义为排序后的多个分类规则子集的分类规则之间不存在逆序关系,即排序后分类规则也呈现按照优先级高低排列的顺序(其中,优先级相同的多个分类规则之间可任意排序)。
[0042]
可选地,在本发明的一个实施例中,从所述多个分类规则子集中各个分类规则子集对应的局部优先级编码矩阵中选出所述第一优先级编码矩阵时,先根据所述多个分类规则子集中各个分类规则子集的局部匹配向量,生成全局匹配向量。其中,所述第一匹配向量为所述各个分类规则子集中第一分类规则集合的局部匹配向量;所述全局匹配向量中的各个元素分别用于表示所述各个分类规则子集是否包含与所述网络数据包匹配的分类规则。
[0043]
然后,根据全局优先级编码矩阵与所述全局匹配向量,生成全局报告向量。其中,所述全局优先级编码矩阵中的各个元素分别用于表示所述多个分类规则子集中各个分类规则子集之间的优先级高低关系;所述全局报告向量用于标识所述第一优先级编码矩阵。应理解,由于局部优先级编码矩阵与分类规则子集一一对应,因此全局报告向量用于标识所述第一分类规则集合等价于用于表示所述第一优先级编码矩阵。还应理解,所述全局优先级编码矩阵应能够通过其元素表示多个分类规则子集中任意两个分类规则子集之间的优先级高低关系,但本发明实施例不限定全局优先级编码矩阵的具体形式。
[0044]
也就是说,当所述多个分类规则子集之间的优先级高低不能使用存储地址等信息表示时,可以使用全局优先级编码矩阵选出所述第一分类规则集合及所述第一优先级编码矩阵。例如,可以先根据所述多个分类规则子集与网络数据包的包头信息,生成所述多个分类规则子集中各个分类规则子集的局部匹配向量。其中,第一匹配向量为第一分类规则集合的局部匹配向量。然后,根据各个分类规则子集的局部匹配向量,生成全局匹配向量。这样,在分类规则子集的数量较大时,仍能同时保持较高的匹配速度和更新速度。
[0045]
可选地,在本发明的一个实施例中,可以先分别生成各个分类规则子集先对应的局部报告向量,再选择出第一优先级编码矩阵对应的第一报告向量。然后,根据第一报告向量转发网络数据包。
[0046]
可选地,在本发明的一个实施例中,所述第一分类规则集合包括n个分类规则;所述第一匹配向量m为n维向量。所述第一匹配向量m中的第i个元素m
i
用于表示所述网络数据包是否与所述第一分类规则集合中的第i个分类规则匹配。所述第一优先级编码矩阵p为n阶方阵。所述第一优先级编码矩阵p中的第i行j列元素p
ij
用于表示所述第一分类规则集合中的第i个分类规则与第j个分类规则之间的优先级高低关系。所述第一报告向量r为n维独热向量(例如,第一报告向量r中仅有一个元素为1)。其中,1≤i,j≤n,且i、j与n均为正整数。
[0047]
图4为根据本发明一个实施例的优先级编码矩阵的示意图。如图4所示,第一分类规则集合包含4个分类规则r0,r1,r2及r3(各个分类规则后的数字用于表示其优先级),第一优先级编码矩阵为4阶方阵。第一优先级编码矩阵中的各个元素用于表示分类规则r0,r1,r2及r3之间的优先级高低关系。在图4所示的第一优先级编码矩阵中:当第一分类规则集合中第i个分类规则的优先级大于第j个分类规则的优先级时,第一优先级编码矩阵中第i行j列元素p
ij
的取值为真(即,为1);否则为假(即,为0)。按照这种定义方式,该矩阵中第一行第二列的元素p
12
与第二行第一列的元素p
21
均表示分类规则r0与r1之间的优先级高低关系。为便于描述,在本说明书中优先级的数字越大表示优先级越高。所以,第一分类规则集合中第i
个分类规则的优先级大于第j个分类规则的优先级等价于,第一分类规则集合中第i个分类规则的优先级高于第j个分类规则的优先级。
[0048]
由此可知,第一优先级编码矩阵中元素代表的含义与分类规则之间的排列顺序有关。应理解,为提高计算效率,分类规则r0,r1,r2及r3之间的排列顺序应与在操作s301中它们的存储顺序一致。还应理解,上述优先级编码矩阵的定义方式仅是一具体实施例,本发明的保护范围不受限于此。任何能够通过其元素表示分类规则集合中任意两个分类规则之间优先级高低关系的优先级编码矩阵,都应落在本发明的保护范围内。
[0049]
可选地,在本发明的一个实施例中,所述第i行j列元素p
ij
为1时表示所述第一分类规则集合中的第i个分类规则的优先级大于第j个分类规则的优先级。所述第i行j列元素p
ij
为0时表示所述第一分类规则集合中的第i个分类规则的优先级小于等于第j个分类规则的优先级。所述第i个元素m
i
为1时表示所述网络数据包与所述第一分类规则集合中的第i个分类规则匹配。所述第i个元素m
i
为0时表示所述网络数据包与所述第一分类规则集合中的第i个分类规则不匹配。
[0050]
在这种情况下,根据第一优先级编码矩阵与所述第一匹配向量,生成第一报告向量时,根据公式(1)计算所述第一报告向量r中的第j个元素r
j

[0051][0052]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反。符号m
j
表示所述第一匹配向量m中的第j个元素。所述第j个元素r
j
为1时,表示所述第一分类规则集合中的第j个分类规则为所述网络数据包匹配的优先级最高的分类规则。
[0053]
下面结合图5详细描述公式(1)的实现流程。应理解,下文中各公式的实现流程,均可参考图5中公式(1)的实现流程实施。
[0054]
图5为根据本发明一个实施例的使用优先级编码矩阵生成报告向量的示意性流程图。如图5所示,分类规则r0,r1,r2及r3不再按照优先级高低存储于tcam中,而是按照插入时间或其它便于实施的顺序存储于tcam中。同样以图4所示的第一优先级编码矩阵以及网络数据包的包头信息中携带的分类规则为1010为例:将该网络数据包的分类规则1010输入至tcam后,得到该网络数据包与以上4个分类规则r0,r1,r2及r3的第一匹配向量(1,0,1,1)
t
。该第一匹配向量表示:网络数据包与tcam中存储的第1个分类规则r0、第3个分类规则r2及第4个分类规则r3匹配,而与第2个分类规则r1不匹配。
[0055]
由于前文中对第一优先级编码矩阵的定义为:当第一分类规则集合中第i个分类规则的优先级大于第j个分类规则的优先级时,第一优先级编码矩阵中第i行j列元素p
ij
的取值为真(即,为1);否则为假(即,为0)。这意味着选出上述匹配的分类规则所在的行与列(即,图5的优先级编码矩阵中阴影显示的行与列)后,优先级最高的分类规则所在的列中所有元素应均为0,而其它匹配的分类规则所在的列中至少有一个元素为1。按照这个原理,当选出的列的列内各个元素或非后的结果为1时,表示该列对应的分类规则为网络数据包匹配的分类规则中优先级最高的分类规则。
[0056]
以上仅说明了匹配规则所在的列的计算方式,但是为了方便计算和标识,第一报告向量中的各个元素应依次对应于第一分类规则集合中的各个分类规则。因此,在上述公式(1)中,第一优先级编码矩阵的所有列都参与列内或非的逻辑运算,然后将各列或非的运
算结果与第一匹配向量中对应的元素求与,进而得到第一报告向量中的各个元素。这样,元素在第一报告向量中的位置能够用来标识其对应哪个分类规则。例如,图5中的第一报告向量为(0,0,1,0),其中第3个元素为1表示第3个分类规则为该网络数据包匹配的分类规则中优先级最高的分类规则。
[0057]
可选地,在本发明的一个实施例中,所述第一优先级编码矩阵按照元素的排列顺序存储于具有存内计算(processing in memory,pim)功能的八管静态随机存取存储器(8 transistor static random access memory,8t sarm)中。其中,所述第一优先级编码矩阵中的一个元素占用所述第一八管静态随机存取存储器的一个存储器单元。图6为根据本发明一个实施例的优先级编码矩阵的存储结构的示意图。如图6所示,图5中的优先级编码矩阵按照元素的排列顺序存储于具有pim功能的八管静态随机存取存储器中。
[0058]
应理解,所述第一优先级编码矩阵还可以存储于寄存器或其它具有存内计算功能的存储器中,如六管静态随机存取存储器(6 transistor static random access memory,6t sarm)或电阻式随机存取存储器(resistive random access memory,reram)。还应理解,具有pim功能的存储器是指能够在存储器阵列中实现计算功能的存储器。对于存储器类型的选择,可结合公式包含的计算逻辑做判断。或者,也可以根据公式设计具有相应存内计算功能的存储器。最优地,所选择的存储器应该具备在常数时间复杂度下更新优先级编码矩阵的功能。
[0059]
可选地,在一个实施例中,所述根据前述公式(1)计算所述第一报告向量r中的第j个元素r
j
时,预充所述第一匹配向量中取值为1的元素所对应的所述第一八管静态随机存取存储器的读位线(read bit line,rbl),以及激活所述第一匹配向量中取值为1的元素所对应的所述第一八管静态随机存取存储器的读字线(read word line,rwl),其中从所述第一八管静态随机存取存储器的第j个读取位线读取的值为所述报告向量r中的第j个元素r
j
的取值。
[0060]
这样,可以同时按照上述公式(1)计算得到第一报告向量中的各个元素,而且从所述第一八管静态随机存取存储器的第j个读取位线输出的值为所述第一报告向量r中的第j个元素r
j
的取值。应理解,没有被预充的读位线以及没有被激活的读字线都需接地。这样,根据本发明实施例,仅需一个时钟周期就能根据优先级编码矩阵在匹配的分类规则中选出优先级最高的分类规则,因此具有较高的匹配性能。
[0061]
如图6所示,由于第一匹配向量为(1,0,1,1)
t
,那么需要预充的读位线为rbl1、rbl3与rbl4,需要激活的读字线为rwl1、rwl3与rwl4。其中各个读位线末端都连接有灵敏放大器(sense amplifier,sa)。sa可以用于检测所在的读位线是否放电。若sa检测到放电则输出1,若sa没有检测到放电则输出0。图6中4个sa输出的四个数据(0,0,1,0)便是第一报告向量。因此,根据该第一报告向量,第3个分类规则(即为r2)为网络数据包匹配的分类规则中优先级最高的分类规则。
[0062]
可选地,在本发明的一个实施例中,当有新分类规则加入所述第一分类规则集合时,可以根据如下步骤更新优先级编码矩阵:
[0063]
首先,根据所述新分类规则的优先级与所述第一分类规则集合中各个分类规则的优先级之间的高低关系,生成在所述第一优先级编码矩阵中所述新分类规则对应的行与列。接着,将所述新分类规则对应的行与列写入所述第一八管静态随机存取存储器的所述
新分类规则的行与列中,以更新所述第一八管静态随机存取存储器中存储的所述第一优先级编码矩阵。
[0064]
图7为根据本发明一个实施例的更新优先级编码矩阵的示意图。如图7中(a)所示,新加入的分类规则为r4。分类规则r4的优先级为3,第一分类规则集合中原有的分类规则及其优先级可以存储于外围存储器中。按照前述第一优先级编码矩阵的定义,其优先级与其它分类规则的优先级高低关系如图7中(b)所示。据此,得到分类规则r4在该优先级编码矩阵中对应的行与列,如图7中(b)的阴影显示的行与列所示。
[0065]
然后,将该行与列写入具有pim功能的第一八管静态随机存取存储器中,以完成第一优先级编码矩阵的更新。应理解,新分类规则r4排在第5的位置以及其在第一优先级编码矩阵中对应第5行与第5列,仅是一具体的实施例。在实际实施的过程中,新分类规则的位置可以是任意位置。例如,当第一分类规则集合中有分类规则失效时,更新时也可以将新分类规则插入到失效的原分类规则的位置。应理解,不论新分类规则的位置为何,新分类规则在tcam中的顺序都应与第一优先级编码矩阵中的顺序一致。
[0066]
可选地,本发明的一个实施例中,在写入所述第一八管静态随机存取存储器的列时,所述新分类规则对应的列中取值为1的元素与取值为0的元素各占用一个写周期。例如,更新第一优先级编码矩阵时,可以在一个时钟周期将待更新行中的各个数据一次性写入具有pim功能的8t sram中;而将待更新列中的数据分两个时钟周期写入具有pim功能的8t sram中。具体地,在写入所述8t sram的列时,取值为1的元素与取值为0的元素各占用一个时钟周期。也就是说,在一个时钟周期将待更新列中所有为1的元素写入8t sram,以及在另一个时钟周期将待更新列中所有为0的元素写入8t sram。这样,仅需三个时钟周期就能完成优先级编码矩阵的更新,而且更新效率不会随着分类规则数量的增加而降低。
[0067]
可选地,本发明的一个实施例中,在写入所述第一八管静态随机存取存储器的列时,使用低电压驱动所述第一八管静态随机存取存储器的待写列的存储器单元,以及使用常规电压驱动所述第一八管静态随机存取存储器的非待写列的存储器单元。应理解,待写列为新分类规则对应的列。还应理解,常规电压为向存储器写入数据时常用的电压值,而低电压为低于常规电压的电压值。根据本发明实施例,使用双电压驱动8t sram的方法实现列写,能够防止由于数据干扰带来的非待写列的伪写操作,进而有效保证存储器中优先级编码矩阵数据的正确性。
[0068]
为便于描述,下文中将写入8t sram中一行存储器单元的过程称为行写,将写入8t sram中一列存储器单元的过程称为列写。其中,行写的过程可以利用现有技术实现,下文仅就列写的过程展开详细描述。下面结合图8和图9,描述更新前述新分类规则r4时使用双电压驱动8t sram实现列写的过程。
[0069]
图8为根据本发明一个实施例的8t sram的列写过程的示意图。如图8所示,分类规则r4对应的第5行数据(1,1,0,1,0)已经写入到8t sram中(由于第5行第5列的数据将会被列写数据再次覆盖,因此图中将其显示为未写入的状态),正欲写入其对应的第5列数据。分类规则r4对应的第5列数据为(0,0,1,0,0)
t
,据此可以确定列写时所需的驱动信号。在图8所示的实施例中,列写时先将第5列中的数据1写入8t sram。由于该数据1应写入第5列中的第3行,因此驱动信号8001应为(0,0,1,0,0)
t
。在驱动信号8001的驱动下,8t sram中仅有第3个写字线wwl3被驱动,其它的写字线都未被驱动。同时,将待写入的数据1加在第5列的写位
线(write bit line,wbl)wbl5上。这样,便可以将数据1写入第5列第3行的存储器单元中。
[0070]
优选地,使用双电压vdd和vdd_low驱动该8t sram。其中vdd为常规电压,vdd_low为低电压。如图8所示,8011~8016为6个顶部开关(header switch)。该6个顶部开关用于控制并择一地接通常规电压vdd和低电压vdd_low。上述在第5列第3行的存储器单元中写入数据1时,顶部开关8015接通低电压(即,以低电压驱动待写列的存储器单元),顶部开关8011、8012、8013和8014接通常规电压(即,以常规电压驱动非待写列的存储器单元)。同时,顶部开关8016也接通低电压,以使第3个写字线wwl3被低电压驱动,进而保证数据能够写入上述第5列第3行的存储器单元中。这样,本发明实施例能够防止产生数据串扰,保证了8t sram中存储数据的正确性。
[0071]
图9为根据本发明一个实施例的8t sram的列写过程的另一示意图。在完成图8所示的列写第一步后,继续完成图9所示的列写的第二步。如图9所示,在前述列写第一步中,第5列中的数据1已写入至8t sram的第5列第3行的位置。在列写的第二步中,将第5列数据为(0,0,1,0,0)
t
中的数据0写入对应位置。由于数据0应写入第5列第1行、第2行、第4行及第5行的位置,因此驱动信号9001应为(1,1,0,1,1)
t
。在驱动信号9001的驱动下,8t sram的写字线wwl1、wwl2、wwl4及wwl5被驱动,其它写字线都未被驱动。同时,将待写入的数据0加在第5列的写位线(write bit line,wbl)wbl5上。这样,便可以将数据0写入第5列第1行、第2行、第4行及第5行的存储器单元中。
[0072]
相似地,在优选实施例中,使用双电压vdd和vdd_low驱动该8t sram。在写入数据0时,顶部开关8015和8016接通低电压,顶部开关8011、8012、8013和8014接通常规电压,以保证数据能够准确写入第5列第1行、第2行、第4行及第5行的位置。
[0073]
应理解的是,上述第一优先级编码矩阵的更新顺序仅是一具体的实施例,本发明的保护范围并不受限于此。例如,在具体实施时,也可以先列写再行写;以及在实现列写时,也可以先写0再写1。因此,不应将图8及图9描述的实施例解读为对本发明的限定。
[0074]
还应理解,为了便于描述,图6、图8及图9仅各自示出了八管静态随机存取存储器的部分结构,因此不应将图6、图8及图9解读为对八管静态随机存取存储器的结构限定。
[0075]
可选地,在本发明的一个实施例中,所述分类规则全集包括m个分类规则子集。所述全局匹配向量gm为m维向量。所述全局匹配向量gm中的第s个元素gm
s
用于表示所述m个分类规则子集中的第s个分类规则子集是否包含与所述网络数据包匹配的分类规则。所述全局优先级编码矩阵gp为m阶方阵。所述全局编码矩阵gp中的第s行t列元素gp
st
用于表示所述m个分类规则子集中的第s个分类规则子集与第t个分类规则子集之间的优先级高低关系。所述全局报告向量gr为m维独热向量。其中,1≤s,t≤m,且s、t与m均为正整数。
[0076]
可选地,在本发明的一个实施例中,所述第s行t列元素gp
st
为1时表示所述m个分类规则子集中的第s个分类规则子集的优先级大于第t个分类规则子集的优先级。所述第s行t列元素gp
st
为0时表示所述m个分类规则子集中的第s个分类规则子集的优先级小于等于第t个分类规则子集的优先级。所述第s个元素gm
s
为1时表示所述m个分类规则子集中的第s个分类规则子集包含与所述网络数据包匹配的分类规则。所述第s个元素gm
s
为0时表示所述m个分类规则子集中的第s个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0077]
这种情况下,根据所述全局优先级编码矩阵与所述全局匹配向量,生成全局报告向量时,可以根据公式(2)计算所述全局报告向量gr中的第t个元素gr
t

[0078][0079]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反,符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第t个元素gr
t
为1时,表示所述m个分类规则子集中的第t个分类规则子集对应的局部优先级编码矩阵为所述第一优先级编码矩阵。
[0080]
图10为根据本发明另一实施例的使用优先级编码矩阵生成报告向量的示意性流程图。下面结合图10详细描述根据公式(2)选出第一优先级编码矩阵,继而生成第一报告向量的过程。如图10所示,分类规则全集共包括5个分类规则r0,r1,r2,r3及r4(各个分类规则后的数字用于表示其优先级),拆分为3个分类规则子集t1,t2和t3。其中,分类规则子集t1包含1个分类规则,分类规则子集t2包含2个分类规则,分类规则子集t3包含2个分类规则。根据各自包含的分类规则的优先级可知,3个分类规则子集按照优先级从高到低依次为:t2,t3,t1。为便于识别,分别用数字2、1和0表示3个分类规则子集的优先级,数字越大表示优先级越高。
[0081]
同样以网络数据包的包头信息中携带的分类规则为1010为例:将该网络数据包的分类规则1010分别输入至各个分类规则子集的tcam后,得到以上3个分类规则子集的局部匹配向量分别为(1)
t
,(1,1)
t
,(0,1)
t
。由于每个局部匹配向量都包含取值为1的元素,因此全局匹配向量为(1,1,1)
t
。前文中全局优先级编码矩阵的定义为:当m个分类规则子集中的第s个分类规则子集的优先级大于第t个分类规则子集的优先级时,全局优先级编码矩阵中的第s行t列元素gp
st
的取值为真(即,为1);否则为假(即,为0)。因此,全局优先级编码矩阵各列或非后的结果为全局报告向量(0,1,0)。根据该全局报告向量,第2个分类规则子集(即分类规则子集t2)的局部优先级编码矩阵为第一优先级编码矩阵。
[0082]
为便于描述,本说明书中将用作计算优先级最高的分类规则的优先级编码矩阵统称为第一优先级编码矩阵。因此,虽然与图5中的优先级编码矩阵不同,上述选出的第2个分类规则子集的局部优先级编码矩阵也称为第一优先级编码矩阵。因此,不应因术语一致而造成技术方案的混淆。根据第一优先级编码矩阵计算第一报告向量的过程可以参照前文描述,为避免重复,在此不再赘述。
[0083]
可选地,在本发明的一个实施例中,所述全局优先级编码矩阵按照元素的排列顺序存储于具有存内计算功能的第二八管静态随机存取存储器中。其中,所述全局优先级编码矩阵中的一个元素占用所述第二八管静态随机存取存储器的一个存储器单元。同样地,所述全局优先级编码矩阵还可以存储于寄存器或其它具有存内计算功能的存储器中,如六管静态随机存取存储器或电阻式随机存取存储器,本发明实施例对此不作限定。
[0084]
可选地,在本发明的一个实施例中,根据公式(2)计算所述全局报告向量gr中的第t个元素gr
t
时,预充所述全局匹配向量中取值为1的元素所对应的所述第二八管静态随机存取存储器的读位线rbl,以及激活所述全局匹配向量中取值为1的元素所对应的所述第二八管静态随机存取存储器的读字线rwl。其中,从所述第二八管静态随机存取存储器的第t个读取位线读取的值为所述全局报告向量gr中的第t个元素gr
t
的取值。同样地,没有被预充的读位线以及没有被激活的读字线都需接地。这样,可以同时按照上述公式(2)计算得到全局报告向量中的各个元素。根据本发明实施例,仅需一个时钟周期就能根据优先级编码矩阵在匹配的分类规则中选出优先级最高的分类规则,因此具有较高的匹配性能。上述计
算过程可以参考第一报告向量的计算过程,为避免重复,在此不再赘述。
[0085]
可选地,在本发明的一个实施例中,当有新分类规则子集加入所述分类规则全集时,可以根据以下步骤更新全局编码矩阵:首先,根据所述新分类规则子集的优先级与所述m个分类规则子集中各个分类规则子集的优先级之间的高低关系,生成在所述全局优先级编码矩阵中所述新分类规则子集对应的行与列。接着,将所述新分类规则子集对应的行与列写入所述第二八管静态随机存取存储器的所述新分类规则子集的行与列中,以更新所述第二八管静态随机存取存储器中存储的所述全局优先级编码矩阵。
[0086]
例如,当有新分类规则加入时,若待插入的分类规则子集已满(或者对应的存储器已满),可以根据对应的局部优先级编码矩阵选出待插入的分类规则子集中优先级最高的分类规则,并将其重新插入至优先级紧邻且高于该分类规则子集的分类规则子集中;或者,也可以新建一个分类规则子集,也即在所述分类规则全集中插入新分类规则子集,并将该新分类规则插入至新分类规则子集中。应理解,随着上述由新分类规则加入所带来的一系列变动,我们可能需要重新调整相应分类规则子集的优先级区间,以使其符合前文所述的优先级区间的定义,并便于具体方案的实施。还应理解,前述插入新分类规则子集的过程仅为一例,符合本发明思想的各种实施例变形都应落在本发明的保护范围内。
[0087]
此外,上述在第二八管静态随机存取存储器中更新全局编码矩阵的过程,可以参照前文描述的第一编码矩阵的更新过程。为避免重复,在此不再赘述。
[0088]
可选地,在本发明的一个实施例中,在写入所述第二八管静态随机存取存储器的列时,所述新分类规则子集对应的列中取值为1的元素与取值为0的元素各占用一个写周期。例如,更新全局优先级编码矩阵时,可以在一个时钟周期将待更新行中的各个数据一次性写入具有pim功能的8t sram中;而将待更新列中的数据分两个时钟周期写入具有pim功能的8t sram中。这样,仅需三个时钟周期就能完成全局优先级编码矩阵的更新,而且更新效率不会随着分类规则数量的增加而降低。具体的列写过程可以参照前文描述的过程,为避免重复,在此不再赘述。
[0089]
可选地,在本发明的一个实施例中,在写入所述第二八管静态随机存取存储器的列时,使用低电压驱动所述第二八管静态随机存取存储器的待写列的存储器单元,以及使用常规电压驱动所述第二八管静态随机存取存储器的非待写列的存储器单元。应理解,待写列为新分类规则子集对应的列。还应理解,常规电压为向存储器写入数据时常用的电压值,而低电压为低于常规电压的电压值。根据本发明实施例,使用双电压驱动8t sram的方法实现列写,能够防止由于数据干扰带来的非待写列的伪写操作,进而有效保证存储器中全局优先级编码矩阵数据的正确性。
[0090]
可选地,在本发明的另一实施例中,所述第i行j列元素p
ij
为1时表示所述第一分类规则集合中的第i个分类规则的优先级大于等于第j个分类规则的优先级。所述第i行j列元素p
ij
为0时,表示所述第一分类规则集合中的第i个分类规则的优先级小于第j个分类规则的优先级。所述第i个元素m
i
为1时,表示所述网络数据包与所述第一分类规则集合中的第i个分类规则相匹配。所述第i个元素m
i
为0时,表示所述网络数据包与所述第一分类规则集合中的第i个分类规则不匹配。
[0091]
在这种情况下,根据第一优先级编码矩阵与第一匹配向量生成第一报告向量时,根据如下公式(3)计算所述第一报告向量r中的第i个元素r
i

[0092][0093]
其中,运算符号∧表示逻辑与。符号m
i
表示所述第一匹配向量m中的第j个元素。所述第i个元素r
i
为1时,表示所述第一分类规则集合中的第i个分类规则为所述网络数据包匹配的优先级最高的分类规则。
[0094]
可选地,在本发明的又一实施例中,所述第i行j列元素p
ij
为1时表示所述第一分类规则集合中的第j个分类规则的优先级大于第i个分类规则的优先级。所述第i行j列元素p
ij
为0时,表示所述第一分类规则集合中的第j个分类规则的优先级小于等于第i个分类规则的优先级。所述第i个元素m
i
为l时,表示所述网络数据包与所述第一分类规则集合中的第i个分类规则相匹配。所述第i个元素m
i
为0时,表示所述网络数据包与所述第一分类规则集合中的第i个分类规则不匹配。
[0095]
在这种情况下,根据第一优先级编码矩阵与第一匹配向量生成第一报告向量时,根据如下公式(4)计算所述第一报告向量r中的第i个元素r
i

[0096][0097]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反。符号m
j
表示所述第一匹配向量m中的第j个元素。所述第i个元素r
i
为1时,表示所述第一分类规则集合中的第i个分类规则为所述网络数据包匹配的优先级最高的分类规则。
[0098]
可选地,在本发明的又一实施例中,所述第i行j列元素p
ij
为1时表示所述第一分类规则集合中的第j个分类规则的优先级大于等于第i个分类规则的优先级。所述第i行j列元素p
ij
为0时,表示所述第一分类规则集合中的第j个分类规则的优先级小于第i个分类规则的优先级。所述第i个元素m
i
为1时,表示所述网络数据包与所述第一分类规则集合中的第i个分类规则相匹配。所述第i个元素m
i
为0时,表示所述网络数据包与所述第一分类规则集合中的第i个分类规则不匹配。
[0099]
在这种情况下,根据第一优先级编码矩阵与第一匹配向量生成第一报告向量时,根据如下公式(5)计算所述第一报告向量r中的第j个元素r
j

[0100][0101]
其中,运算符号∧表示逻辑与。符号m
j
表示所述第一匹配向量m中的第j个元素。所述第j个元素r
j
为1时,表示所述第一分类规则集合中的第j个分类规则为所述网络数据包匹配的优先级最高的分类规则。
[0102]
可选地,在本发明的另一实施例中,所述第s行t列元素gp
st
为1时表示所述m个分类规则子集中的第s个分类规则子集的优先级大于等于第t个分类规则子集的优先级。所述第s行t列元素gp
st
为0时,表示所述m个分类规则子集中的第s个分类规则子集的优先级小于第t个分类规则子集的优先级。所述第s个元素gm
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集包含与所述网络数据包匹配的分类规则。所述第s个元素gm
s
为0时,表示所述m个分类规则子集中的第s个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0103]
在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(6)计算所述全局报告向量gr中的第s个元素gr
s

[0104]
[0105]
其中,运算符号∧表示逻辑与。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第s个元素gr
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集对应的局部优先级编码矩阵为所述第一优先级编码矩阵。
[0106]
可选地,在本发明的又一实施例中,所述第s行t列元素gp
st
为1时表示所述m个分类规则子集中的第t个分类规则子集的优先级大于第s个分类规则子集的优先级。所述第s行t列元素gp
st
为0时,表示所述m个分类规则子集中的第t个分类规则的优先级小于等于第s个分类规则的优先级。所述第s个元素gm
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集包含与所述网络数据包匹配的分类规则。所述第s个元素gm
s
为0时,表示所述m个分类规则子集中的第s个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0107]
在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(7)计算所述全局报告向量gr中的第s个元素gr
s

[0108][0109]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第s个元素gr
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集对应的局部优先级编码矩阵为所述第一优先级编码矩阵。
[0110]
可选地,在本发明的又一实施例中,所述第s行t列元素gp
st
为1时,表示所述m个分类规则子集中的第t个分类规则子集的优先级大于等于第s个分类规则子集的优先级。所述第s行t列元素gp
st
为0时,表示所述所述m个分类规则子集中的第t个分类规则子集的优先级小于第s个分类规则子集的优先级。所述第s个元素gm
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集包含与所述网络数据包匹配的分类规则。所述第s个元素gm
s
为0时,表示所述m个分类规则子集中的第s个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0111]
在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(8)计算所述第一报告向量gr中的第t个元素gr
t

[0112][0113]
其中,运算符号∧表示逻辑与。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第t个元素gr
t
为1时,表示所述m个分类规则子集中的第t个分类规则子集对应的局部优先级编码矩阵为所述第一优先级编码矩阵。
[0114]
应理解,上述公式(3)至(8)的具体实现方式可参考公式(1)和(2)的实现方式的总体思想。
[0115]
图11为根据本发明一个实施例的处理网络数据包的装置的示意性框图。如图11所示,该装置1100包括匹配模块1110、第一选择模块1120和输出模块1130。其中,该装置1100用于执行上文描述的方法,为了避免重复,下文省略部分相同的描述。
[0116]
匹配模块1110,用于根据第一分类规则集合与所述网络数据包的包头信息,生成第一匹配向量。其中,所述第一匹配向量中的各个元素分别用于表示所述网络数据包与所述第一分类规则集合中的各个分类规则是否匹配。
[0117]
第一选择模块1120,用于根据第一优先级编码矩阵与所述第一匹配向量,生成第
一报告向量。其中,所述第一优先级编码矩阵中的各个元素分别用于表示所述第一分类规则集合中的各个分类规则之间的优先级高低关系。所述第一报告向量用于标识在所述第一分类规则集合中所述网络数据包匹配的优先级最高的分类规则。
[0118]
输出模块1130,用于输出所述第一报告向量,以便根据所述网络数据包匹配的优先级最高的分类规则转发所述网络数据包。
[0119]
在解耦分类规则优先级高低与存储地址高低之间对应关系的基础上,本发明实施例提供了一种全新的网络数据包的处理方案。根据该处理方案能够更为灵活地实现网络数据包的分类,为同时实现高匹配性能与高更新性能提供技术基础。
[0120]
可选地,在本发明的一个实施例中,所述第一分类规则集合为构成分类规则全集的多个分类规则子集中的一个分类规则子集。其中,所述多个分类规则子集中的每个分类规则子集分别对应一个优先级区间,且所述多个分类规则子集能够按照优先级高低依次排序。
[0121]
这种情况下,所述装置1100还包括全局选择模块1150。全局选择模块1150用于从所述多个分类规则子集中各个分类规则子集对应的局部优先级编码矩阵中选出所述第一优先级编码矩阵。其中,所述第一优先级编码矩阵为优先级最高且包含与所述网络数据包匹配的分类规则的分类规则子集所对应的局部优先级编码矩阵。
[0122]
也就是说,当所述第一分类规则集合只包含全部分类规则中的部分分类规则时,需先从多个分类规则子集中选出所述第一分类规则集合。应理解,在本发明实施例中第一分类规则集合与第一优先级编码矩阵有对应关系。也就是说,第一优先级编码矩阵不能表示除第一分类规则集合包含的分类规则之外的分类规则之间的优先级高低关系。
[0123]
应理解,各个分类规则子集对应的优先级区间除区间端点外不应相互重叠。例如,各个优先级区间可以为闭区间或半开半闭区间,但应保证所有分类规则子集的优先级区间之和能够覆盖分类规则全集的优先级区间。还应理解,多个分类规则子集能够按照优先级高低依次排序的含义为排序后的多个分类规则子集的分类规则之间不存在逆序关系,即排序后分类规则也呈现按照优先级高低排列的顺序(其中,优先级相同的多个分类规则之间可任意排序)。
[0124]
可选地,在本发明的一个实施例中,全局选择模块1150具体用于:
[0125]
先根据所述多个分类规则子集中各个分类规则子集的局部匹配向量,生成全局匹配向量。其中,所述第一匹配向量为所述各个分类规则子集中第一分类规则集合的局部匹配向量。所述全局匹配向量中的各个元素分别用于表示所述各个分类规则子集是否包含与所述网络数据包匹配的分类规则。然后,根据全局优先级编码矩阵与所述全局匹配向量,生成全局报告向量。其中,所述全局优先级编码矩阵中的各个元素分别用于表示所述多个分类规则子集中各个分类规则子集之间的优先级高低关系。所述全局报告向量用于标识所述第一优先级编码矩阵。
[0126]
应理解,所述全局优先级编码矩阵应能够通过其元素表示多个分类规则子集中任意两个分类规则子集之间的优先级高低关系,但本发明实施例不限定全局优先级编码矩阵的具体形式。还应理解,由于局部优先级编码矩阵与分类规则子集一一对应,因此全局报告向量用于标识所述第一分类规则集合等价于用于表示所述第一优先级编码矩阵。根据本发明实施例,在分类规则子集的数量较大时,仍能同时保持较高的匹配速度和更新速度。
[0127]
可选地,在本发明的一个实施例中,所述第一分类规则集合包括n个分类规则。所述第一匹配向量m为n维向量。所述第一匹配向量m中的第i个元素m
i
用于表示所述网络数据包是否与所述第一分类规则集合中的第i个分类规则匹配。所述第一优先级编码矩阵p为n阶方阵。所述第一优先级编码矩阵p中的第i行j列元素p
ij
用于表示所述第一分类规则集合中的第i个分类规则与第j个分类规则之间的优先级高低关系。所述第一报告向量r为n维独热向量。其中,1≤i,j≤n,且i、j与n均为正整数。
[0128]
可选地,在本发明的一个实施例中,所述第i行j列元素p
ij
为1时表示所述第一分类规则集合中的第i个分类规则的优先级大于第j个分类规则的优先级。所述第i行j列元素p
ij
为0时表示所述第一分类规则集合中的第i个分类规则的优先级小于等于第j个分类规则的优先级。所述第i个元素m
i
为1时表示所述网络数据包与所述第一分类规则集合中的第i个分类规则匹配。所述第i个元素m
i
为0时表示所述网络数据包与所述第一分类规则集合中的第i个分类规则不匹配。
[0129]
这种情况下,所述第一选择模块1120具体用于根据公式(9)计算所述第一报告向量r中的第j个元素r
i

[0130][0131]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反。符号m
j
表示所述第一匹配向量m中的第j个元素。所述第j个元素r
j
为1时,表示所述第一分类规则集合中的第j个分类规则为所述网络数据包匹配的优先级最高的分类规则。
[0132]
应理解,所述第一选择模块1120还可以参照前文所述的公式(3)至(5)计算第一报告向量。为避免重复,在此不再赘述。
[0133]
可选地,在本发明的一个实施例中,所述第一优先级编码矩阵按照元素的排列顺序存储于具有存内计算功能的第一八管静态随机存取存储器中,其中所述第一优先级编码矩阵中的一个元素占用所述第一八管静态随机存取存储器的一个存储器单元。
[0134]
应理解,所述第一优先级编码矩阵还可以存储于寄存器或其它具有存内计算功能的存储器中,如六管静态随机存取存储器或电阻式随机存取存储器。还应理解,具有pim功能的存储器是指能够在存储器阵列中实现计算功能的存储器。对于存储器类型的选择,可结合公式包含的计算逻辑做判断。或者,也可以根据公式设计具有相应存内计算功能的存储器。最优地,所选择的存储器应该具备在常数时间复杂度下更新优先级编码矩阵的功能。
[0135]
可选地,在本发明的一个实施例中,所述第一选择模块1120具体用于,预充所述第一匹配向量中取值为1的元素所对应的所述第一八管静态随机存取存储器的读位线,以及激活所述第一匹配向量中取值为1的元素所对应的所述第一八管静态随机存取存储器的读字线,其中从所述第一八管静态随机存取存储器的第j个读取位线读取的值为所述报告向量r中的第j个元素r
j
的取值。
[0136]
这样,可以同时按照上述公式(9)计算得到第一报告向量中的各个元素,而且从所述第一八管静态随机存取存储器的第j个读取位线输出的值为所述第一报告向量r中的第j个元素r
j
的取值。应理解,没有被预充的读位线以及没有被激活的读字线都需接地。这样,根据本发明实施例,仅需一个时钟周期就能根据优先级编码矩阵在匹配的分类规则中选出优先级最高的分类规则,因此具有较高的匹配性能。
[0137]
可选地,在本发明的一个实施例中,所述装置1100还包括第一更新模块1140。所述第一更新模块1140用于,当有新分类规则加入所述第一分类规则集合时,根据所述新分类规则的优先级与所述第一分类规则集合中各个分类规则的优先级之间的高低关系,生成在所述第一优先级编码矩阵中所述新分类规则对应的行与列。然后,将所述新分类规则对应的行与列写入所述第一八管静态随机存取存储器的所述新分类规则的行与列中,以更新所述第一八管静态随机存取存储器中存储的所述第一优先级编码矩阵。
[0138]
可选地,在本发明的一个实施例中,在所述第一更新模块1140写入所述第一八管静态随机存取存储器的列时,所述新分类规则对应的列中取值为1的元素与取值为0的元素各占用一个写周期。
[0139]
可选地,在本发明的一个实施例中,在所述第一更新模块1140写入所述第一八管静态随机存取存储器的列时,使用低电压驱动所述第一八管静态随机存取存储器的待写列的存储器单元,以及使用常规电压驱动所述第一八管静态随机存取存储器的非待写列的存储器单元。
[0140]
应理解,待写列为新分类规则对应的列。还应理解,常规电压为向存储器写入数据时常用的电压值,而低电压为低于常规电压的电压值。根据本发明实施例,使用双电压驱动8t sram的方法实现列写,能够防止由于数据干扰带来的非待写列的伪写操作,进而有效保证存储器中优先级编码矩阵数据的正确性。
[0141]
可选地,在本发明的一个实施例中,所述分类规则全集包括m个分类规则子集。所述全局匹配向量gm为m维向量。所述全局匹配向量gm中的第s个元素gm
s
用于表示所述m个分类规则子集中的第s个分类规则子集是否包含与所述网络数据包匹配的分类规则。所述全局优先级编码矩阵gp为m阶方阵。所述全局编码矩阵gp中的第s行t列元素gp
st
用于表示所述m个分类规则子集中的第s个分类规则子集与第t个分类规则子集之间的优先级高低关系。所述全局报告向量gr为m维独热向量。其中,1≤s,t≤m,且s、t与m均为正整数。
[0142]
可选地,在本发明的一个实施例中,所述第s行t列元素gp
st
为1时表示所述m个分类规则子集中的第s个分类规则子集的优先级大于第t个分类规则子集的优先级。所述第s行t列元素gp
st
为0时表示所述m个分类规则子集中的第s个分类规则子集的优先级小于等于第t个分类规则子集的优先级。所述第s个元素gm
s
为1时表示所述m个分类规则子集中的第s个分类规则子集包含与所述网络数据包匹配的分类规则。所述第s个元素gm
s
为0时表示所述m个分类规则子集中的第s个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0143]
这种情况下,所述全局选择模块1150具体用于根据公式(10)计算所述全局报告向量gr中的第t个元素gr
t

[0144][0145]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第t个元素gr
t
为1时,表示所述m个分类规则子集中的第t个分类规则子集对应的局部优先级编码矩阵为所述第一优先级编码矩阵。
[0146]
应理解,所述全局选择模块1150还可以参照前文所述的公式(6)至(8)计算全局报告向量。为避免重复,在此不再赘述。
[0147]
可选地,在本发明的一个实施例中,所述全局优先级编码矩阵按照元素的排列顺
序存储于具有存内计算功能的第二八管静态随机存取存储器中,其中所述全局优先级编码矩阵中的一个元素占用所述第二八管静态随机存取存储器的一个存储器单元。同样地,所述全局优先级编码矩阵还可以存储于寄存器或其它具有存内计算功能的存储器中,如六管静态随机存取存储器或电阻式随机存取存储器,本发明实施例对此不作限定。
[0148]
可选地,在本发明的一个实施例中,所述全局选择模块1150具体用于,预充所述全局匹配向量中取值为1的元素所对应的所述第二八管静态随机存取存储器的读位线,以及激活所述全局匹配向量中取值为1的元素所对应的所述第二八管静态随机存取存储器的读字线,其中从所述第二八管静态随机存取存储器的第t个读取位线读取的值为所述全局报告向量gr中的第t个元素gr
t
的取值。同样地,没有被预充的读位线以及没有被激活的读字线都需接地。这样,可以同时按照上述公式(10)计算得到全局报告向量中的各个元素。根据本发明实施例,仅需一个时钟周期就能根据优先级编码矩阵在匹配的分类规则中选出优先级最高的分类规则,因此具有较高的匹配性能。
[0149]
可选地,在本发明的一个实施例中,所述装置1100还包括全局更新模块1160。所述全局更新模块1160用于,当有新分类规则子集加入所述分类规则全集时,根据所述新分类规则子集的优先级与所述m个分类规则子集中各个分类规则子集的优先级之间的高低关系,生成在所述全局优先级编码矩阵中所述新分类规则子集对应的行与列。然后,将所述新分类规则子集对应的行与列写入所述第二八管静态随机存取存储器的所述新分类规则子集的行与列中,以更新所述第二八管静态随机存取存储器中存储的所述全局优先级编码矩阵。
[0150]
可选地,在本发明的一个实施例中,在所述全局更新模块1160写入所述第二八管静态随机存取存储器的列时,所述新分类规则子集对应的列中取值为1的元素与取值为0的元素各占用一个写周期。
[0151]
可选地,在本发明的一个实施例中,在所述全局更新模块1160写入所述第二八管静态随机存取存储器的列时,使用低电压驱动所述第二八管静态随机存取存储器的待写列的存储器单元,以及使用常规电压驱动所述第二八管静态随机存取存储器的非待写列的存储器单元。应理解,待写列为新分类规则子集对应的列。还应理解,常规电压为向存储器写入数据时常用的电压值,而低电压为低于常规电压的电压值。根据本发明实施例,使用双电压驱动8t sram的方法实现列写,能够防止由于数据干扰带来的非待写列的伪写操作,进而有效保证存储器中全局优先级编码矩阵数据的正确性。
[0152]
图12为根据本发明一个实施例的处理网络数据包的装置的另一示意性框图。如图12所示,该装置1200包括处理器1210与计算机可读存储介质1220。该装置1200可以实现上面参考图3~图10描述的方法。
[0153]
具体地,处理器1210例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或可重构处理器和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器1210还可以包括用于缓存用途的板载存储器。处理器1210可以是用于执行参考图3~图10描述的根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0154]
计算机可读存储介质1220,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光
存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。
[0155]
计算机可读存储介质1220可以包括计算机程序1221,该计算机程序1221可以包括代码/计算机可执行指令,其在由处理器1210执行时使得检测处理器1210执行例如上面结合图3~图10所描述的方法流程及其任何变形。
[0156]
计算机程序1221可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序1221中的代码可以包括一个或多个程序模块,例如包括模块1221a、模块1221b、
……
。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器1210执行时,使得处理器1210可以执行例如上面结合图3~图10所描述的方法流程及其任何变形。
[0157]
根据本发明的实施例,匹配模块1100、第一选择模块1120、输出模块1130、第一更新模块1140、全局选择模块1150和全局更新模块1160中的至少一个可以实现为参考图12描述的计算机程序模块,在其被处理器1210执行时,可以实现上面描述的相应操作。
[0158]
根据本发明各实施例的上述方法、装置、单元和/或模块可以通过有计算能力的电子设备执行包含计算机指令的软件来实现。该系统可以包括存储设备,以实现上文所描述的各种存储。该有计算能力的电子设备可以包含通用处理器、数字信号处理器、专用处理器、可重构处理器等能够执行计算机指令的装置,但不限于此。执行这样的指令使得电子设备被配置为执行根据本发明的上述各项操作。上述各设备和/或模块可以在一个电子设备中实现,也可以在不同电子设备中实现。这些软件可以存储在计算机可读存储介质中。计算机可读存储介质存储一个或多个程序(软件模块),该一个或多个程序包括指令,当电子设备中的一个或多个处理器执行该指令时,该指令使得电子设备执行本发明的方法。
[0159]
应理解,本说明书中“第一分类规则集合”、“第一优先级编码矩阵”、“第一八管静态随机存取存储器”以及“第二八管静态随机存取存储器”等术语中,其中的序数词“第一”、“第二”仅为与下文中的其它同类名词相区分,而无顺序或其它特殊的含义。还应理解,在本发明实施例的基础上,本领域的普通技术人员不经创造性劳动就可实现上述匹配向量、优先级编码矩阵及报告向量中二进制数字0与1含义互换后的技术方案。因此,此类简单的变换都应落在本发明的保护范围内。
[0160]
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0161]
因此,本发明的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本发明的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本发明的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。
计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。
[0162]
根据本发明各实施例的上述方法、装置、单元和/或模块可以通过有计算能力的电子设备执行包含计算机指令的软件来实现。该系统可以包括存储设备,以实现上文所描述的各种存储。该有计算能力的电子设备可以包含通用处理器、数字信号处理器、专用处理器、可重构处理器等能够执行计算机指令的装置,但不限于此。执行这样的指令使得电子设备被配置为执行根据本发明的上述各项操作。上述各设备和/或模块可以在一个电子设备中实现,也可以在不同电子设备中实现。这些软件可以存储在计算机可读存储介质中。计算机可读存储介质存储一个或多个程序(软件模块),该一个或多个程序包括指令,当电子设备中的一个或多个处理器执行该指令时,该指令使得电子设备执行本发明的方法。
[0163]
这些软件可以存储为易失性存储器或非易失性存储装置的形式(比如类似rom等存储设备),不论是可擦除的还是可重写的,或者存储为存储器的形式(例如ram、存储器芯片、设备或集成电路),或者被存储在光可读介质或磁可读介质上(比如,cd、dvd、磁盘或磁带等等)。应该意识到,存储设备和存储介质是适于存储一个或多个程序的机器可读存储装置的实施例,该一个程序或多个程序包括指令,当该指令被执行时,实现本发明的实施例。实施例提供程序和存储这种程序的机器可读存储装置,该程序包括用于实现本发明的任何一项权利要求该的装置或方法的代码。此外,可以经由任何介质(比如,经由有线连接或无线连接携带的通信信号)来电传递这些程序,多个实施例适当地包括这些程序。
[0164]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
[0165]
本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
[0166]
尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1