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

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

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

[0039][0040]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第t个元素gr
t
为1时,表示所述m个分类规则子集中的第t个分类规则子集为所述第一分类规则子集。
[0041]
应理解的是,为便于计算,全局报告向量中的各个元素应依次对应于所述多个分类规则子集中的各个分类规则子集。这样,元素在全局报告向量中的位置能够用来标识其对应哪个分类规则子集。
[0042]
下面结合图4详细描述公式(1)的实现流程。应理解,下文中各公式的实现流程,均可参考图4中公式(1)的实现流程实施。
[0043]
图4为根据本发明一个实施例的使用全局优先级编码矩阵生成全局报告向量的示意性流程图。如图4所示,分类规则全集共包括5个分类规则r0,r1,r2,r3及r4(各个分类规则后的数字用于表示其优先级),拆分为3个分类规则子集t1,t2和t3。其中,分类规则子集t1包含1个分类规则,分类规则子集t2包含2个分类规则,分类规则子集t3包含2个分类规则。根据各自包含的分类规则的优先级可知,3个分类规则子集按照优先级从高到低依次为:t2,t3,t1。为便于识别,如图4所示,分别用数字2、1和0表示3个分类规则子集的优先级,数字越大表示优先级越高。
[0044]
同样以网络数据包的包头信息中携带的分类规则为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)为第一分类规则子集。
[0045]
可选地,在本发明的一个实施例中,所述全局优先级编码矩阵按照元素的排列顺序存储于具有存内计算功能(processing in memory,pim)的八管静态随机存取存储器(8 transistor static random access memory,8t sarm)中。其中,所述全局优先级编码矩阵中的一个元素占用所述八管静态随机存取存储器的一个存储器单元。
[0046]
图5为根据本发明一个实施例的全局优先级编码矩阵的存储结构的示意图。如图5所示,图4中的全局优先级编码矩阵按照元素的排列顺序存储于具有pim功能的八管静态随机存取存储器中。
[0047]
应理解,所述第一优先级编码矩阵还可以存储于寄存器或其它具有存内计算功能
的存储器中,如六管静态随机存取存储器(6 transistor static random access memory,6t sarm)或电阻式随机存取存储器(resistive random access memory,reram)。还应理解,具有pim功能的存储器是指能够在存储器阵列中实现计算功能的存储器。对于存储器类型的选择,可结合公式包含的计算逻辑做判断。或者,也可以根据公式设计具有相应存内计算功能的存储器。最优地,所选择的存储器应该具备在常数时间复杂度下更新优先级编码矩阵的功能。
[0048]
可选地,在本发明的一个实施例中,根据公式(1)计算所述全局报告向量gr中的第t个元素gr
t
时,预充所述全局匹配向量中取值为1的元素所对应的所述八管静态随机存取存储器的读位线,以及激活所述全局匹配向量中取值为1的元素所对应的所述八管静态随机存取存储器的读字线。这种情况下,从所述八管静态随机存取存储器的第t个读取位线读取的值为所述全局报告向量gr中的第t个元素gr
t
的取值。
[0049]
应理解,没有被预充的读位线以及没有被激活的读字线都需接地。这样,可以同时按照上述公式(1)计算得到全局报告向量中的各个元素。根据本发明实施例,仅需一个时钟周期就能根据优先级编码矩阵在匹配的分类规则中选出优先级最高的分类规则,因此具有较高的匹配性能。
[0050]
下面结合图5详细描述上述计算全局报告向量的过程。如图5所示,由于全局匹配向量为(1,1,1)
t
,那么需要预充的读位线为rbl1、rbl2与rbl3,需要激活的读字线为rwl1、rwl2与rwl3。其中各个读位线末端都连接有灵敏放大器(sense amplifier,sa)。sa可以用于检测所在的读位线是否放电。若sa检测到放电则输出1,若sa没有检测到放电则输出0。图5中的3个sa输出的数据(0,1,0)便是全局报告向量。因此,根据该全局报告向量,第2个分类规则子集(即分类规则子集t2)为第一分类规则子集。
[0051]
可选地,在本发明的一个实施例中,当有新分类规则子集加入所述分类规则全集时,可以根据以下步骤更新全局编码矩阵:
[0052]
首先,根据所述新分类规则子集的优先级与所述m个分类规则子集中各个分类规则子集的优先级之间的高低关系,生成在所述全局优先级编码矩阵中所述新分类规则子集对应的行与列。接着,将所述新分类规则子集对应的行与列写入所述八管静态随机存取存储器的所述新分类规则子集的行与列中,以更新所述八管静态随机存取存储器中存储的所述全局优先级编码矩阵。
[0053]
例如,当有新分类规则加入时,我们可以根据其优先级落入的优先级区间将新分类规则插入至对应的分类规则子集中。若待插入的分类规则子集已满(或者对应的存储器已满),可以根据图1所示的方法选出待插入的分类规则子集中优先级最高的分类规则,并将其重新插入至优先级紧邻且高于该分类规则子集的分类规则子集中;或者,电可以新建一个分类规则子集,也即在所述分类规则全集中插入新分类规则子集,并将该新分类规则插入至新分类规则子集中。当建立新分类规则子集时,需根据前述方法更新全局优先级编码矩阵。
[0054]
应理解,随着上述由新分类规则加入所带来的一系列变动,我们可能需要重新调整相应分类规则子集的优先级区间,以使其符合前文所述的优先级区间的定义,并便于具体方案的实施。还应理解,前述插入新分类规则子集的过程仅为一例,符合本发明思想的各种实施例变形都应落在本发明的保护范围内。
[0055]
图6为根据本发明一个实施例的更新全局优先级编码矩阵的的示意图。如图6中(a)所示,有新分类规则r5加入所述分类规则全集,且该新分类规则r5的优先级为2。由于新分类规则r5的优先级落入分类规则子集t3的优先级区间,因此分类规则子集t3为待插入的分类规则子集。假设分类规则子集t3能够包含的分类规则的最大数量为2,此时我们可以选择新建一个分类规则子集t4来容纳该新分类规则r5。根据前文中分类规则子集的优先级区间和优先级高低的定义,新分类规则子集t4加入后,4个分类规则子集按照优先级从高到低排序为:t2,t4,t3,t1。为了便于识别,我们重新为各个分类规则子集分配数字以表示其优先级高低,t1(0),t3(1),t4(2)和t2(3)。
[0056]
按照前述全局优先级编码矩阵的定义,新分类规则子集t4在所述全局优先级编码矩阵中对应的行与列如图6中(b)的阴影显示的行与列所示。然后,将该行与列写入具有pim功能的八管静态随机存取存储器中,以完成全局优先级编码矩阵的更新。应理解,新分类规则子集t4排在第4的位置以及其在全局优先级编码矩阵中对应第4行与第4列,仅是一具体的实施例。在实际实施的过程中,新分类规则子集的位置可以是任意位置。例如,当有分类规则子集失效时,更新时也可以将新分类规则子集插入到失效的原分类规则子集的位置。应理解,不论新分类规则子集的位置为何,新分类规则子集的顺序都应与全局优先级编码矩阵中的顺序一致。
[0057]
可选地,在本发明的一个实施例中,在写入所述八管静态随机存取存储器的列时,所述新分类规则子集对应的列中取值为1的元素与取值为0的元素各占用一个写周期。例如,更新全局优先级编码矩阵时,可以在一个时钟周期将待更新行中的各个数据一次性写入具有pim功能的8t sram中;而将待更新列中的数据分两个时钟周期写入具有pim功能的8t sram中。这种情况下,如需新建分类规则子集,仅需三个时钟周期就能完成全局优先级编码矩阵的更新,而且更新效率不会随着分类规则数量的增加而降低。而在每个分类规则子集内部,由于分类规则的总数较小,也能实现较高的更新效率。
[0058]
可选地,在本发明的一个实施例中,在写入所述八管静态随机存取存储器的列时,使用低电压驱动所述八管静态随机存取存储器的待写列的存储器单元,以及使用常规电压驱动所述八管静态随机存取存储器的非待写列的存储器单元。应理解,待写列为新分类规则子集对应的列。还应理解,常规电压为向存储器写入数据时常用的电压值,而低电压为低于常规电压的电压值。根据本发明实施例,使用双电压驱动8t sram的方法实现列写,能够防止由于数据干扰带来的非待写列的伪写操作,进而有效保证存储器中全局优先级编码矩阵数据的正确性。
[0059]
为便于描述,下文中将写入8t sram中一行存储器单元的过程称为行写,将写入8t sram中一列存储器单元的过程称为列写。其中,行写的过程可以利用现有技术实现,下文仅就列写的过程展开详细描述。下面结合图7和图8,描述更新新分类规则子集t4时使用双电压驱动8t sram实现列写的过程。
[0060]
图7为根据本发明一个实施例的8t sram的列写过程的示意图。如图7所示,分类规则子集t4对应的第4行数据(1,0,1,0)已经写入到8t sram中(由于第4行第4列的数据将会被列写数据再次覆盖,因此图中将其显示为未写入的状态),正欲写入其对应的第4列数据。分类规则子集t4对应的第4列数据为(0,1,0,0)
t
,据此可以确定列写时所需的驱动信号。在图7所示的实施例中,列写时先将第4列中的数据1写入8t sram。由于该数据1应写入第4列
中的第2行,因此驱动信号7001应为(0,1,0,0)
t
。在驱动信号7001的驱动下,8t sram中仅有第2个写字线wwl2被驱动,其它的写字线都未被驱动。同时,将待写入的数据1加在第4列的写位线(write bit line,wbl)wbl4上。这样,便可以将数据1写入第4列第2行的存储器单元中。
[0061]
优选地,使用双电压vdd和vdd_low驱动该8t sram。其中vdd为常规电压,vdd_low为低电压。如图7所示,7011~7015为5个顶部开关(header switch)。该5个顶部开关用于控制并择一地接通常规电压vdd和低电压vdd_low。上述在第4列第2行的存储器单元中写入数据1时,顶部开关7014接通低电压(即,以低电压驱动待写列的存储器单元),顶部开关7011、7012和7013接通常规电压(即,以常规电压驱动非待写列的存储器单元)。同时,顶部开关7015也接通低电压,以使第2个写字线wwl2被低电压驱动,进而保证数据能够写入上述第4列第2行的存储器单元中。这样,本发明实施例能够防止产生数据串扰,保证了8t sram中存储数据的正确性。
[0062]
图8为根据本发明一个实施例的8t sram的列写过程的另一示意图。在完成图7所示的列写第一步后,继续完成图8所示的列写的第二步。如图8所示,在前述列写第一步中,第4列中的数据1已写入至8t sram的第4列第2行的位置。在列写的第二步中,将第4列数据为(0,1,0,0)
t
中的数据0写入对应位置。由于数据0应写入第4列第1行、第3行和第4行的位置,因此驱动信号8001应为(1,0,1,1)
t
。在驱动信号8001的驱动下,8t sram的写字线wwl1、wwl3及wwl4被驱动,其它写字线都未被驱动。同时,将待写入的数据0加在第4列的写位线(write bit line,wbl)wbl4上。这样,便可以将数据0写入第4列第1行、第3行和第4行的存储器单元中。
[0063]
相似地,在优选实施例中,使用双电压vdd和vdd_low驱动该8t sram。在写入数据0时,顶部开关7014和7015接通低电压,顶部开关7011、7012和7013接通常规电压,以保证数据能够准确写入上述第4列第1行、第3行和第4行的存储器单元中。
[0064]
应理解的是,上述全局优先级编码矩阵的更新顺序仅是一具体的实施例,本发明的保护范围并不受限于此。例如,在具体实施时,也可以先列写再行写;以及在实现列写时,也可以先写0再写1。因此,不应将图7及图8描述的实施例解读为对本发明的限定。
[0065]
还应理解,为了便于描述,图5、图7及图8仅各自示出了八管静态随机存取存储器的部分结构,因此不应将图5、图7及图8解读为对八管静态随机存取存储器的结构限定。
[0066]
可选地,在本发明的另一实施例中,所述第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个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0067]
在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(2)计算所述全局报告向量gr中的第s个元素gr
s

[0068][0069]
其中,运算符号∧表示逻辑与。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第s个元素gr
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集为所述第一
分类规则子集。
[0070]
可选地,在本发明的又一实施例中,所述第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个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0071]
在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(3)计算所述全局报告向量gr中的第s个元素gr
s

[0072][0073]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第s个元素gr
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集为所述第一分类规则子集。
[0074]
可选地,在本发明的又一实施例中,所述第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个分类规则子集不包含与所述网络数据包匹配的分类规则。在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(4)计算所述第一报告向量gr中的第t个元素gr
t

[0075][0076]
其中,运算符号∧表示逻辑与。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第t个元素gr
t
为1时,表示所述m个分类规则子集中的第t个分类规则子集为所述第一分类规则子集。
[0077]
应理解,上述公式(2)至(4)的具体实现方式可参考公式(1)的实现方式的总体思想。
[0078]
图9为根据本发明一个实施例的处理网络数据包的装置的示意性框图。如图9所示,该装置900包括第一选择模块910和第二选择模块920。其中,该装置900用于执行上文描述的方法,为了避免重复,下文省略部分相同的描述。
[0079]
第一选择模块910,用于根据全局优先级编码矩阵与全局匹配向量,从构成分类规则全集的多个分类规则子集中选出第一分类规则子集。其中,所述全局优先级编码矩阵中的各个元素分别用于表示所述多个分类规则子集中各个分类规则子集之间的优先级高低关系。所述全局匹配向量中的各个元素分别用于表示所述多个分类规则子集中的各个分类规则子集是否包含与所述网络数据包匹配的分类规则。所述第一分类规则子集为优先级最高且包含与所述网络数据包匹配的分类规则的分类规则子集。所述多个分类规则子集中的每个分类规则子集分别对应一个优先级区间,且所述多个分类规则子集能够按照优先级高低依次排序。
[0080]
也就是说,本发明可以将全部分类规则划分为多个分类规则子集,进而降低每个分类规则子集中的规则数量。这种情况下,在将新的分类规则插入至相应的分类规则子集时,可以避免由于分类规则数量庞大而带来的更新效率较低的问题。
[0081]
应理解,所述全局优先级编码矩阵应能够通过其元素表示多个分类规则子集中任意两个分类规则子集之间的优先级高低关系,但本发明实施例不限定全局优先级编码矩阵的具体形式。还应理解,各个分类规则子集对应的优先级区间除区间端点外不应相互重叠。例如,各个优先级区间可以为闭区间或半开半闭区间,但应保证所有分类规则子集的优先级区间之和能够覆盖分类规则全集的优先级区间。还应理解,多个分类规则子集能够按照优先级高低依次排序的含义为排序后的多个分类规则子集的分类规则之间不存在逆序关系,即排序后分类规则也呈现按照优先级高低排列的顺序(其中,优先级相同的多个分类规则之间可任意排序)。
[0082]
第二选择模块920,用于根据所述网络数据包的包头信息,从所述第一分类规则子集中选出与所述网络数据包匹配的优先级最高的分类规则,以便于根据所述优先级最高的分类规则转发所述网络数据包。
[0083]
例如,第二选择模块920可以使用图1所示的现有技术实现。也就是说,分类规则子集中的各个分类规则可以按照优先级高低的顺序存放在tcam中,因此能够在分类规则子集内实现高速的匹配。应理解,本发明还可以使用其它的三态内容寻址存储器实现第二选择模块920,因此本发明不应受限于此。因此,根据本发明实施例能够同时实现分类规则的高匹配性能与高更新性能。
[0084]
可选地,在本发明的一个实施例中,所述第一选择模块具体910用于,根据所述多个分类规则子集中各个分类规则子集的局部匹配向量,生成所述全局匹配向量,其中所述局部匹配向量中的各个元素分别用于表示其对应的分类规则子集中的各个分类规则是否与所述网络数据包匹配。然后,根据所述全局优先级编码矩阵与所述全局匹配向量,生成全局报告向量,其中所述全局报告向量用于标识所述第一分类规则子集。
[0085]
可选地,在本发明的一个实施例中,所述分类规则全集包括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均为正整数。
[0086]
可选地,在本发明的一个实施例中,所述第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个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0087]
这种情况下,第一选择模块910具体用于根据公式(5)计算所述全局报告向量gr中的第t个元素gr
t

[0088][0089]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反,符号gm
t
表示所述全局匹配向量gm中的第t个元素,所述第t个元素gr
t
为1时表示所述m个分类规则子集中的第t个分类规则子集为所述第一分类规则子集。
[0090]
可选地,在本发明的一个实施例中,所述全局优先级编码矩阵按照元素的排列顺序存储于具有存内计算功能的八管静态随机存取存储器中,其中所述全局优先级编码矩阵中的一个元素占用所述八管静态随机存取存储器的一个存储器单元。
[0091]
应理解,所述第一优先级编码矩阵还可以存储于寄存器或其它具有存内计算功能的存储器中,如六管静态随机存取存储器或电阻式随机存取存储器。还应理解,具有pim功能的存储器是指能够在存储器阵列中实现计算功能的存储器。对于存储器类型的选择,可结合公式包含的计算逻辑做判断。或者,也可以根据公式设计具有相应存内计算功能的存储器。最优地,所选择的存储器应该具备在常数时间复杂度下更新优先级编码矩阵的功能。
[0092]
可选地,在本发明的一个实施例中,所述第一选择模块910具体用于,预充所述全局匹配向量中取值为1的元素所对应的所述八管静态随机存取存储器的读位线,以及激活所述全局匹配向量中取值为1的元素所对应的所述八管静态随机存取存储器的读字线。其中,从所述八管静态随机存取存储器的第t个读取位线读取的值为所述全局报告向量gr中的第t个元素gr
t
的取值。
[0093]
可选地,在本发明的一个实施例中,所述装置900还包括更新模块930。其中,更新模块930用于,当有新分类规则子集加入所述分类规则全集时,根据所述新分类规则子集的优先级与所述m个分类规则子集中各个分类规则子集的优先级之间的高低关系,生成在所述全局优先级编码矩阵中所述新分类规则子集对应的行与列。然后,将所述新分类规则子集对应的行与列写入所述八管静态随机存取存储器的所述新分类规则子集的行与列中,以更新所述八管静态随机存取存储器中存储的所述全局优先级编码矩阵。
[0094]
可选地,在本发明的一个实施例中,在所述更新模块写入所述八管静态随机存取存储器的列时,所述新分类规则子集对应的列中取值为1的元素与取值为0的元素各占用一个写周期。例如,更新全局优先级编码矩阵时,可以在一个时钟周期将待更新行中的各个数据一次性写入具有pim功能的8t sram中;而将待更新列中的数据分两个时钟周期写入具有pim功能的8t sram中。这种情况下,如需新建分类规则子集,仅需三个时钟周期就能完成全局优先级编码矩阵的更新,而且更新效率不会随着分类规则数量的增加而降低。在每个分类规则子集内部,由于分类规则的总数较小,也能实现较高的更新效率。
[0095]
可选地,在本发明的一个实施例中,在写入所述八管静态随机存取存储器的列时,使用低电压驱动所述八管静态随机存取存储器的待写列的存储器单元,以及使用常规电压驱动所述八管静态随机存取存储器的非待写列的存储器单元。根据本发明实施例,使用双电压驱动8t sram的方法实现列写,能够防止由于数据干扰带来的非待写列的伪写操作,进而有效保证存储器中全局优先级编码矩阵数据的正确性。
[0096]
可选地,在本发明的另一实施例中,所述第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个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0097]
在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(6)计算所述全局报告向量gr中的第s个元素gr
s

[0098][0099]
其中,运算符号∧表示逻辑与。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第s个元素gr
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集为所述第一分类规则子集。
[0100]
可选地,在本发明的又一实施例中,所述第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个分类规则子集不包含与所述网络数据包匹配的分类规则。
[0101]
在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(7)计算所述全局报告向量gr中的第s个元素gr
s

[0102][0103]
其中,运算符号∨表示逻辑或,运算符号∧表示逻辑与,运算符号上划线表示逻辑取反。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第s个元素gr
s
为1时,表示所述m个分类规则子集中的第s个分类规则子集为所述第一分类规则子集。
[0104]
可选地,在本发明的又一实施例中,所述第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个分类规则子集不包含与所述网络数据包匹配的分类规则。在这种情况下,根据全局优先级编码矩阵与全局匹配向量生成全局报告向量时,根据如下公式(8)计算所述第一报告向量gr中的第t个元素gr
t

[0105][0106]
其中,运算符号∧表示逻辑与。符号gm
t
表示所述全局匹配向量gm中的第t个元素。所述第t个元素gr
t
为1时,表示所述m个分类规则子集中的第t个分类规则子集为所述第一分类规则子集。
[0107]
图10为根据本发明一个实施例的处理网络数据包的装置的另一示意性框图。如图10所示,该装置1000包括处理器1010与计算机可读存储介质1020。该装置1000可以实现上面参考图3~图8描述的方法。
[0108]
具体地,处理器1010例如可以包括通用微处理器、指令集处理器和/或相关芯片组
和/或可重构处理器和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器1010还可以包括用于缓存用途的板载存储器。处理器1010可以是用于执行参考图3~图8描述的根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0109]
计算机可读存储介质1020,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。
[0110]
计算机可读存储介质1020可以包括计算机程序1021,该计算机程序1021可以包括代码/计算机可执行指令,其在由处理器1010执行时使得检测处理器1010执行例如上面结合图3~图8所描述的方法流程及其任何变形。
[0111]
计算机程序1021可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序1021中的代码可以包括一个或多个程序模块,例如包括模块1021a、模块1021b、
……
。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器1010执行时,使得处理器1010可以执行例如上面结合图3~图8所描述的方法流程及其任何变形。
[0112]
根据本发明的实施例,第一选择模块910、第二选择模块920和更新模块930的至少一个可以实现为参考图10描述的计算机程序模块,在其被处理器1010执行时,可以实现上面描述的相应操作。
[0113]
根据本发明各实施例的上述方法、装置、单元和/或模块可以通过有计算能力的电子设备执行包含计算机指令的软件来实现。该系统可以包括存储设备,以实现上文所描述的各种存储。该有计算能力的电子设备可以包含通用处理器、数字信号处理器、专用处理器、可重构处理器等能够执行计算机指令的装置,但不限于此。执行这样的指令使得电子设备被配置为执行根据本发明的上述各项操作。上述各设备和/或模块可以在一个电子设备中实现,也可以在不同电子设备中实现。这些软件可以存储在计算机可读存储介质中。计算机可读存储介质存储一个或多个程序(软件模块),该一个或多个程序包括指令,当电子设备中的一个或多个处理器执行该指令时,该指令使得电子设备执行本发明的方法。
[0114]
应理解,本说明书中“第一分类规则子集”等术语中,其中的序数词“第一”仅为与下文中的其它同类名词相区分,而无顺序或其它特殊的含义。还应理解,在本发明实施例的基础上,本领域的普通技术人员不经创造性劳动就可实现上述匹配向量、优先级编码矩阵及报告向量中二进制数字0与1含义互换后的技术方案。因此,此类简单的变换都应落在本发明的保护范围内。
[0115]
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
[0116]
因此,本发明的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本发明的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该
计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本发明的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。
[0117]
根据本发明各实施例的上述方法、装置、单元和/或模块可以通过有计算能力的电子设备执行包含计算机指令的软件来实现。该系统可以包括存储设备,以实现上文所描述的各种存储。该有计算能力的电子设备可以包含通用处理器、数字信号处理器、专用处理器、可重构处理器等能够执行计算机指令的装置,但不限于此。执行这样的指令使得电子设备被配置为执行根据本发明的上述各项操作。上述各设备和/或模块可以在一个电子设备中实现,也可以在不同电子设备中实现。这些软件可以存储在计算机可读存储介质中。计算机可读存储介质存储一个或多个程序(软件模块),该一个或多个程序包括指令,当电子设备中的一个或多个处理器执行该指令时,该指令使得电子设备执行本发明的方法。
[0118]
这些软件可以存储为易失性存储器或非易失性存储装置的形式(比如类似rom等存储设备),不论是可擦除的还是可重写的,或者存储为存储器的形式(例如ram、存储器芯片、设备或集成电路),或者被存储在光可读介质或磁可读介质上(比如,cd、dvd、磁盘或磁带等等)。应该意识到,存储设备和存储介质是适于存储一个或多个程序的机器可读存储装置的实施例,该一个程序或多个程序包括指令,当该指令被执行时,实现本发明的实施例。实施例提供程序和存储这种程序的机器可读存储装置,该程序包括用于实现本发明的任何一项权利要求该的装置或方法的代码。此外,可以经由任何介质(比如,经由有线连接或无线连接携带的通信信号)来电传递这些程序,多个实施例适当地包括这些程序。
[0119]
本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
[0120]
尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1