通过存储器查找来确定数据关键字与规则的一致性的方法和系统的制作方法

文档序号:7759503阅读:415来源:国知局
专利名称:通过存储器查找来确定数据关键字与规则的一致性的方法和系统的制作方法
技术领域
本发明涉及一种用于确定数据关键字是否符合规则的方法和系统。
背景技术
当前在因特网技术上的进步已经改变了我们交换信息的方式。因特网的普遍使用已经引起了会聚的思想。不同类型的数据(例如视频、声音、图像和文本)必须穿过相同的网络,并且这已经导致了过多的协议的出现,这些协议的目的是在具有服务质量支持的单一网络上传输实时和数据业务。
这些协议中的主要协议是DiffServ、IntServ和MPLS,每一个协议均需要在对其进行接收时的实时分组分类(即,确定分组类型)。分组分类包括以下步骤·由解析设备来解析分组,以便识别分组内所关心的字节(数字关键字)。将该数据关键字中的比特数设为N。
·将数据关键字与M个用户定义的规则进行比较,其中每一个规则具有各自的优先级,以识别数据关键字是否服从任意规则,并且如果服从,则识别哪一个是所服从的、具有最高优先级的规则。
·根据已识别的规则,采取行动。
本申请涉及这三个步骤中的第二步。
由索引I标记的每一个规则由N比特规则矢量来表示。第I个规则可以写作Rule[I][N-1:0],这是具有分量为0或1且处于范围0到N-1的位置上的矢量。对于存在相应“掩码”的每一个规则,所述掩码也是具有0或1分量的N比特矢量,并且写作Mask[I][N-1:0]。数据关键字也是具有0或1分量的N比特矢量,并且写作KEY[I][N-1:0]。如果针对Mask[I]等于1的每一个比特,Rule[I]等于数据关键字的相应比特,则可以说数据关键字KEY与Rule[I]相匹配。
该标准可以表达为Rule[I]和Mask[I]按位“与”=关键字和Mask[I]按位“与”,(1)其中按位“与”操作将两个N分量矢量进行比较,并且在前两个矢量的相应分量为1时,给出分量为1的N分量矢量,否则为0。
一种简单且公知的检测规则匹配的方法在于,将掩码比特存储在一组寄存器中,并且将规则比特存储在其他寄存器中。使用触发器电路,将数据关键字比特与掩码和规则比特进行比较,以通过直接验证关系(1)是否为真来确定匹配。当规则的数量较大时,实现该方案所需的触发器的数量将是巨大的。

发明内容
本发明的目的是提出一种用于将数据关键字与规则进行比较的新的且有用的方法和系统。
概括地,本发明提出将数据关键字(N个比特)划分为块(每一个块C个比特),并且每一个块用于从存储器中提取存储在与关键字的该块相对应的存储器的地址处的数据。预先准备所述存储器,从而根据所述数据关键字的该块与掩码的按位比较是否等于掩码的该块与规则的按位比较,存储在与关键字的该块相对应的地址中的数据为1或0。因此,所提取的比特表示数据关键字的该块是否服从该规则。比较针对每一个规则的N/C个已提取比特,以确定整个数据关键字是否服从该规则。
因此,本发明允许将关键字与规则有效地进行比较,比较操作大部分由查找操作替代,这可以由便宜的硬件来实现。
优选地,将所述存储器设置为具有针对数据关键字的每一个块的块的RAM结构。存储器的每一个块具有二维结构,其中第一(“垂直”)方向标记数据关键字的块的可能值;而存储器的第二(“水平”)方向标记所述规则。因此,当将关键字与给定规则进行比较时,从与所述规则相对应的列中、特别是从具有与数据关键字的该块的值相对应的该列内的地址的位置中提取数据。
优选地,在两个步骤中,执行(N/C)个已提取比特的比较。为此,优选地,将所述块组合为L块的“部分”(这样的部分的数量是N/CL)。在第一步中,比较每一个部分中L个已提取比特(例如观察其是否全为1)。在第二步骤中,针对不同的部分来比较N/CL个比较结果。
优选地,按照与所述部分相同的方式在“垂直”方向上分割所述存储器。然后,利用存储器中的不同部分来测试不同的第二种规则。
优选地,组合所述规则,还优选地,在“水平”方向上分割存储器的部分,以提供存储“区”。优选地,将每一个存储区(即,测试针对数据关键字的相应部分的相应组的所有规则所需的存储器)实现为相应的RAM存储设备。这能够确保每一个存储设备中的数据结构的列数(即每一个组中的规则)低于每一个存储设备的行数(即,数据关键字的一块的可能值数量的L倍)。这是多个存储设备的实际需求。L决定了系统的等待时间(针对所述规则来检查所述关键字所需的周期数)。
可以根据所需的操作参数来确定C的值。
注意,所需存储器的量与关键字被划分的块数N/C乘以关键字的每一个块的可能比特值的数量2C再乘以规则数量M(即总存储尺寸NM2C/C)成正比。因此,如果该关键字具有越短的长度(即N越小),则测试相等数量的规则M的总存储器需求越小。
根据该实现,根据本发明的优选形式,可以根据关键字的长度来重新分配存储器的相同块。例如,如果第一数据关键字由第二更短(更长)的数据关键字替换,则用于测试数据关键字的每一个块的存储区数更大(更长),从而可以测试更多(更少)的规则。
优选地,关键字中的比特数为2K,并且规则数为2R,K、R为整数。


现在,参考附图,仅出于说明的目的,描述本发明的优选特征,其中图1示意地示出了本发明的第一实施例;图2示出了第一实施例的第一修改;以及图3示出了第一实施例的第二修改。
具体实施例方式
在图1所示的本发明的第一实施例中,关键字的比特数N为N=128(即27)。规则的数量为512(即29)。
考虑C=4的情况,其中将关键字划分为128/4=32个4比特的块。因此,每一个块可以取24=16个可能值。选择L的值为8,从而每一个部分由8个数据块构成。因此,整个关键字由N/CL=4个部分构成。
该实施例包括4个输入接口1、3、5、7,分别接收数据关键字的4个部分之一(并且每一个存储在N/4触发器中)比特0到31、比特32到63、比特64到95、以及比特96到127。例如,数据的第一部分(比特0到31)由以下数据关键字的8个块构成比特0到3、比特4到7、…、比特28到31。
每一个输入接口1、3、5、7对应于16个RAM存储器11、12、13、14、21、22、23、24、31、32、33、34、41、42、43、44。输入接口1、3、5、7根据要测试哪一个规则,将数据关键字的部分传递到四个相应的16RAM存储设备中所选的一个。例如,接口1将该关键字发送到存储设备11、12、13和14。这些存储设备中的每一个的宽度为128个条目,因此,提供了针对128规则的存储器位置。这是在所示实施例中需要4个存储设备(512个规则/每一个存储设备128个规则给出了4个存储设备)来测试针对关键字的每一个部分的所有512个规则的原因。例如,存储设备11、21、31、41测试针对规则0到127的数据关键字的4个相应部分。
将数据串的第一块中的4个比特用作地址2,以提取存储在存储器的相应块4的该地址处的数据。每一个数据关键字的可能值为0到2C-1=15,即16个可能值,因此,存储器的一个块4的高度是16行。
当需要检查给定数据关键字是否与给定数据关键字相匹配时,将该关键字的部分传送到具有针对该规则的列的存储设备12、13、14、21、22、23、24、31、32、33、34、41、42、43、44。例如,如图1所示,确定该关键字是否与规则400相匹配,为此,将数据关键字的四个部分发送到存储设备14、24、34、44。每一个存储器作为数据关键字的八个单独块来对待其接收到的数据关键字的部分,特别是使用该关键字的每4比特的块作为4比特地址,其使用该地址来提取表中的相应存储项。在连续周期中读出针对存储器的每一个部分的比特。因此,在八个连续周期中,存储设备14、24、34、44每一个均输出八个所提取的比特。更一般地,产生L个比特的等待时间为L个周期。因此,L确定了设备中的并行量,并且所需的L确定了其他参数的选择。
如果在数据关键字的该块中的未掩蔽比特与规则的该块中的未掩蔽比特相匹配(包括关键字和规则的该块的所有比特被掩蔽的情况),存储在表中、与该数据关键字的块相对应的地址处的比特为1,否则为0。
因此,仅在针对相应部分的所有八个块,该块中的所有未掩蔽比特与规则中相应块的未掩蔽比特相匹配的情况下,从每一个存储设备中提取的八个比特全为1。
将在连续周期中从四个存储器14、24、34和44的每一个中提取的八个比特发送到4个相应的与门114、124、134、144。实际上,每一个与门在第一周期中输出其在该周期中接收到的比特,并且在每一个稍后周期处执行其在该周期中接收到的比特与前一周期中其输出的比特的与运算,从而在第八周期中,其已经输出了其接收到的所有比特的与运算。针对每一个规则设置不同的与门,但是仅示出了针对规则400的每一个与门。此外,针对每一个规则,为其他12个存储器的每一个设置了12个相应的与门,但是为了简化从图1中省略了这些与门,由于当仅要确定与规则400的匹配时,其是无用的。
仅在数据串中的所有未掩蔽比特与规则400中的未掩蔽比特相匹配的情况下,来自与门114、124、134和144(在第八周期)的输出全为1。将这些输出传送到与门54,因此,当且仅当该关键字与规则相匹配时输出1。针对每一个规则设置与门,但是为了简化,仅示出了针对规则400的与门400。此外,针对每一个规则,还存在针对存储器的其他3个列的每一个的三个相应与门,但是为了简化从图1中省略了其,由于当仅要确定与规则400的匹配时,其是无用的。
如上所述,连续测试所有这些规则。针对每一个相应规则设置触发器200,以便存储是否获得针对该规则的匹配。然后,通过优先级编码器210找到具有最高优先级的匹配规则。
例如,考虑规则400是测试数据关键字是否表示从中获得关键字的分组来自给定的源端口。假定源端口ID对应于该关键字的位置2到7,并且仅当关键字中的位置2为1且在位置3到7中关键字为0时,该分组来自给定源端口。
换句话说,表1中示出了规则400和相应掩码400,其中X表示“随意”(该规则并不关心该关键字在源端口ID之外的位置上具有什么)。“随意”位置在相应掩码中给出了值0。

表1因此,仅针对比特0到3为01XX(即比特0到3为0100=4,0101=5,0110=6或0111=7的任一个的关键字)以及比特4到7为0000(仅对应于存储器的相应块中的一个地址(即,比特16到31的地址),即比特16)的关键字,服从该规则。
因此,将规则和掩码转换为表2所示的512比特的结果矢量


表2将该矢量插入为存储器14、24、34、44的一列。因此,当表示关键字时,仅当关键字的前4个比特(即第一块2)为01XX时,存储器14的第一输出将为1。仅当关键字的第二4比特(即第二块6)为0000时,存储器14的第二输出8将为1。存储器14和所有其他存储器24、34、44的所有其他输出将总是为1,这是由于与任意可能输入地址相对应的比特总是为1。因此,当且仅当关键字显示分组来自源端口1时,与门54的输出将为1。
更一般地,产生用于插入到存储器中的矢量如下。将规则和掩码划分为C比特的块(总共N/C个块)。每一个块具有2C种可能的状态。对于每一个状态,关键字的该块的未掩蔽比特与规则的未掩蔽比特相匹配,或者并不匹配。
考虑第k块,这对应于k2C+J的存储器中的地址,其中J的范围为从0到2C-1。对于每一个J,如果Rule[I][C比特]“与”Mask[I][C比特]等于Mask[C比特]“与”J,则将针对规则I的矢量的相应比特设置为1,否则设置为0。
注意,取决于所需的等待时间的并行查找的数量为N/(L个周期中查找的比特数)=N/CL(假定其采用一个周期从每一个存储器中提取比特之一)。
数据关键字的每一个部分所需的存储器的总尺寸为规则数M乘以2CL。假定每一个存储设备必须具有少于行数的列数,则数据关键字的每一个部分所需的存储设备的数量为
M/(2CL)。 (2)这些存储器的每一个的尺寸为(2CL)2。因此,存储设备的总数为NM/(2CL2C)(3)考虑N=128、M=512和8个周期的等待时间的情况,获得了以下可能

表3注意,还可以在本发明的范围内以C=1来操作实施例。
注意,针对固定量的存储器,能够由上述方法测试的关键字数量根据N的值而变化。针对该方法的不同的典型应用,关键字的最佳尺寸是不同的,具体如下

表4从(1)和(2)中可以看到,对于给定的C和L,值M和N的变化(例如其乘积仍为2(K+R))仅改变存储器矩阵的配置。为此,优选地,该实施例包括将连接切换到RAM存储器设备上的切换系统(为了简化,未示出)。
对于C=4、L=8和MN=216,获得了以下可能

表5此外,可以支持并非2次幂(但是大于CL)且能够表达为两个2的整数倍的和(即,2R1+2R2,R1和R2为整数)的关键字尺寸,尽管存在一些存储器的浪费。假定2R1>CL和2R2小于或等于LC,可以获得每一个2CL规则所需的存储器数(nMEM)为(2R1/CL)+(CL/2R2)。
所支持的规则总数M=nMEM(2CL)。在C=4、L=8和MN=216的情况下,给出了以下可能

表6图2和图3分别示出了这些配置的第二和第三种配置。在每一个图中所遮蔽的部分是2CL=128个规则所需的部分。
在图2和3中使用与图1相同的16个存储设备。这些图示出了针对这些配置的这些存储设备的一种特征分配,但是任何其他分配也是可能的。注意,在两种配置中,存储设备之一,即存储设备11,是无用的,因此被浪费。
因此,切换元件改变了有效配置,以在N和M之间进行可选的折中。
由于每一个配置中所采用的触发器数量为N+M(N个触发器进行关键字存储而M个触发器存储匹配的规则),所设置的触发器的数量必须是最大可能值N+M所需的。例如,当C=4、L=8和MN=216时,N=32且N+M=2080。在所有其他配置中,仅需要这些触发器的子集,如下表所示

权利要求
1.一种将数据关键字的未掩蔽比特与规则进行比较的方法,所述方法包括将关键字划分为块;使用每一个块获取相应地址以便从存储器中提取数据,根据数据关键字的该块与掩码的按位比较是否等于掩码的该块与规则的按位比较,存储在与关键字中的该块相对应的存储器地址处的数据为1或0;以及检查针对这些块的每一个所提取的数据,以确定整个数据关键字是否服从所述规则。
2.根据权利要求1所述的方法,其特征在于将存储器构造为与关键字的所述块相对应的块,并且所述块被组合为部分,所述方法包括同时针对存储器中的不同部分,连续提取针对每一个部分内的相应块的数据。
3.一种将数据关键字与多个规则的部分进行比较的方法,所述部分由相应的掩码所定义,所述方法包括将所述关键字划分为块;针对每一个所述规则,连续地(i)使用每一个块获取相应地址以便从存储器中提取数据,根据数据关键字的该块与相应掩码的按位比较是否等于相应掩码的该块与规则的按位比较,存储在与关键字中的该块相对应的存储器地址处的数据为1或0;以及(ii)检查针对这些块的每一个所提取的数据,以确定整个数据关键字是否服从所述规则。
4.根据权利要求3所述的方法,其特征在于二维地构造所述存储器,第一方向对应于不同的块,而第二方向对应于规则中的不同规则。
5.一种将数据关键字与由相应的掩码所定义的多个规则的部分进行比较的系统,所述系统包括接口,用于接收所述关键字,且将所述关键字划分为块;存储器,用于从接口中接收关键字的块,且针对连续的规则,使用数据关键字和规则的所述块作为地址数据,来提取表示数据关键字的该块与相应掩码的按位比较是否等于相应掩码的该块与规则的按位比较的数据;以及比较器,用于检查从存储器中提取的数据,以确定整个数据关键字是否服从所述规则。
6.根据权利要求5所述的系统,其特征在于二维地构造所述存储器,第一方向对应于不同的块,而第二方向对应于不同规则。
7.根据权利要求5或6所述的系统,其特征在于将存储器构造为与关键字的所述块相对应的块,并且所述块被组合为通过不同的各个存储设备来实现的部分。
8.根据权利要求6或7所述的系统,其特征在于不同的各个存储设备存储了与不同的规则组有关的数据。
9.根据权利要求5到8任一个所述的系统,其特征在于还包括用于存储关键字的、位于接口处的寄存器和用于存储不同规则的结果的、位于比较器处的寄存器。
10.根据权利要求5到9任一个所述的系统,其特征在于还包括切换装置,用于在每一个关键字存在不同的相应比特数和存在不同的相应规则数的模式之间切换所述系统的配置。
11.一种数据交换机,如以太网交换机,包括用于从接收到的分组中提取关键字的解析系统、以及用于根据规则利用所述关键字来分类所接收到的分组的、根据权利要求5到10任一个所述的系统。
全文摘要
一种将N比特数据关键字的未掩蔽比特与N比特规则进行比较的方法包括将所述关键字划分为C比特块。这些块的每一个均用作地址以从存储器12、13、14、21、22、23、24、31、32、33、34、41、42、43、44中提取数据。预先准备所述存储器,从而根据所述数据关键字的该块与掩码的按位比较是否等于掩码的该块与规则的按位比较,存储在与关键字的该块相对应的地址中的数据为1或0。因此,所提取的比特表示数据关键字的该块是否服从该规则。比较针对每一个规则的N/C个提取的比特,以确定整个数据关键字是否服从该规则。
文档编号H04L12/56GK1669288SQ02829559
公开日2005年9月14日 申请日期2002年9月6日 优先权日2002年9月6日
发明者什里达尔·穆巴拉克·米什拉, 古鲁普拉塞德·阿德哈娜利 申请人:因芬奈昂技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1