专利名称:路由查找和流分类用的高速低功耗的匹配方法及其系统的制作方法
技术领域:
路由查找和流分类用的高速低功耗的匹配方法及其系统,属于计算机网络技术领域。
背景技术:
IP查找和流分类功能是路由器的重要功能。当前,最有效的硬件方案是采用TCAM。利用“don’t care”三态技术和并行比较的方法,TCAM能实现非常高的流分类速度(每时钟周期一个流分类结果)。但TCAM利用并行比较进行IP查找和流分类,发热量很大,不利于系统设计,限制了TCAM在大数据库方面的应用。一种分区的TCAM可以在一定程度上降低功耗,但是控制复杂,且受限于分区的大小,功耗降低程度有限。常用TCAM的总体原理如图2所示。
发明内容
本发明的目的在于提出一种路由查找和流分类用的匹配方法及其系统以代替目前的TCAM方案。
本发明主要基于三个特点一是利用硬件的并行性,一次完成所有表项的某个域的比较;二是使用流水线设计的方法,每次只对一个域进行比较;三是某一个表项的某一个域是否进行比较由该表项上一个域的比较结果决定,如果上一个域已经比较失败,则本域不再进行比较。第二点和第三点是本发明的创新点。
本发明所述的匹配方法,其特征在于,在时钟电路控制下,它依次含有以下步骤(1)第一个时钟周期把一个输入关键字A1并行送入关键字寄存器1;所述的输入关键字A1是包含N个数据域的一条数据,而每个数据域内含1~R个三态比特,它保存有“1”、“0”、“*即不考虑”三种不同的状态,以下简称比特,数据域的比特数由域的长度而定,域的长度是自行指定的;对于IP查找,其长度为1比特;对于IPv4流分类,域的长度可为32比特的IP地址,或为16比特的端口号,也可为8比特长度的协议域,也可为其他自定义长度;所述的关键字寄存器的个数N也就是输入关键字A1内的数据域的个数N;(2)第二个时钟周期上述输入关键字A1由关键字寄存器1并行进入关键字寄存器2,同时所述的关键字A1的第一个域被提取并行进入域寄存器1,把第二个输入关键字A2并行输入到关键字寄存器1;所述的保存输入关键字A1内各个数据域的域寄存器也有N个;各域寄存器的长度与关键字内对应的域的长度相等第一个域寄存器的长度与关键字内第一个域的长度相等,第二个域寄存器的长度与关键字内第二个域的长度相等,其他域寄存器依次类推;(3)第三个时钟周期所述输入关键字A1由关键字寄存器2并行进入关键字寄存器3,同时A1的第二个域被提取出并行进入域寄存器2,所述的输入关键字A2由关键字寄存器1并行送入关键字寄存器2,第3个关键字A3并行进入关键字寄存器1;也是在同时,保存在域寄存器1中的数据与数据库中的所有表项的第一个数据域中的数据进行比较;所述的数据库是路由表或者流分类库中的任何一种,它由若干个并列而成的数据项和一个优先级解码器串接而成所述的数据项即表项,每一个数据项由N个1~R个三态比特存储器构成的N个数据域、分别与N个数据域中每一个数据域的输出端相连的N个比较器以及N个相邻比较器之间的输出指示信号连接线组成,上述数据域的个数N也就是所述输入关键字中的数据域的个数N,也即输入关键字的长度与表项的长度相等;所述的比较器每个有三个输入信号和一个输出信号,三个输入信号分别是输入指示信号和二个输入数据,其中,各表项中第一个比较器的输入指示信号是与关键字同时从外部发来的同一个流分类请求信号,以后各比较器的输入指示信号都是前一个比较器的输出指示信号,所述的流分类请求信号由外部与输入关键字同时输入,在图(5)中没有单独标明;二个输入数据分别来自编号相同的域寄存器和同一表项中编号相同的数据域的输出端;在比较时,若输入指示信号无效,则输出指示信号无效;若输入指示信号有效,则比较器对两个分别由域寄存器和同一表项中数据域来的数据进行比较,若相等,则输出指示信号有效,若不相等,则输出指示信号无效;(4)第4个时钟周期输入关键字A1由关键字寄存器3并行进入关键字寄存器4,同时A1的第3个域被提取出并行进入域寄存器3,接着输入关键字A2由关键字寄存器2并行进入关键字寄存器3,接着输入关键字A3由关键字寄存器1并行进入关键字寄存器2,又接着新的输入关键字A4并行进入关键字寄存器1;也是在同时,保存在域寄存器2中的数据与数据库中所有表项的第二个数据域中的数据进行比较;也是在同时,保存在域寄存器1中的数据与数据库中的所有表项的第一个数据域中的数据比较,比较时均按(3)所述方法进行;(5)依次类推,直至各输入关键字Am各自的N个数据域与数据库中N个数据域比较完成,如果数据库中没有数据项与输入关键字Am匹配,则优先级解码器输出不匹配信号;如果数据库中有一个数据项与输入关键字Am匹配,则优先级解码器输出匹配信号;如果数据库中有多个数据项与输入关键字Am匹配,则优先级解码器按设定程序从匹配的数据项中选择一个并输出匹配信号;按(1)~(5)所述的流水线方法,每个时钟周期可输入一个待查找关键字,优先级解码器每个时钟周期输出一个待查找关键字的是否匹配的信号;所述的优先级解码器的工作原理类似TCAM的优先级解码器的工作原理。
本发明所述的系统,其特征在于,输入为待匹配关键字和匹配请求,输出为是否匹配指示信号和匹配数据项的信息,所述系统含有彼此串接的流水线控制器和流分类库,还有时钟电路,其中(1)流水线控制器,含有流分类信号寄存器,存储与输入关键字同时从外部发来的流分类请求信号;保存输入的待查找关键字的关键字寄存器,该关键字寄存器的个数N也就是各输入关键字中数据域的个数N;输入关键字的域的个数和长度与下述流分类库数据项的域的个数和长度相等;域寄存器,它的个数等于输入关键字中数据域的个数N,即域寄存器保存各输入关键字的一个域;每一个域寄存器是一个由1~R个比特组成,各域寄存器的长度与关键字内对应的域的长度相等第一个域寄存器的长度与关键字内第一个域的长度相等,第二个域寄存器的长度与关键字内第二个域的长度相等,其他域寄存器依次类推;(2)流分类库,含有流分类数据库,由若干个数据项即表项并列构成,而每一个数据项又由N个数据域串接而成,N也就是一个输入关键字的数据域数,上述数据项中的数据域含有1)N个且每个由1~R个三态比特组成的存储器,也即流分类库数据域,它的个数N与所述的流水线控制器中的域寄存器的个数相同,编号也一一对应;2)N个比较器,每个有三个输入信号和一个输出信号前面的两个输入信号分别来自相同编号的所述域寄存器和所述的各数据项中相同编号的流分类库数据域;第三个输入信号,对于各数据项中的第一个数据域而言,它是启动信号,是与输入关键字同时由外部发来暂时存入一个流分类信号寄存器的流分类请求信号,对于各数据项中其余数据域而言,它是前一个比较器的输出指示信号;它的一个输出信号是当前比较器的输出指示信号;优先级解码器,它的输入端与所述流分类数据库中各数据项的输出端相连,它的输出是是否匹配的信号;(3)时钟电路,它的输出端分别与所述各关键字寄存器、各域寄存器和各流分类库数据域的时钟信号输入端相连。
本发明有以下优点1)适合用硬件实现;2)速度快;3)功耗低。
IP查找和流分类功能部件的功耗可认为与参与比较的数据域的多少成正比。例如,对一条32个数据域的输入关键字来说,如果只有4个数据域参与比较与有32个数据域参与比较相比,认为前者的功耗只有后者的八分之一。
在传统TCAM中,输入关键字需要与数据库中的所有表项的全部域进行比较;在本发明的硬件方法中,只有部分数据域需要参与比较。下面通过仿真IP查找过程,来比较在本发明的硬件结构中参与比较的数据域的数目占总数的比例,并以此说明本发明的相对于TCAM的低功耗特性。
这里采用了网上常用的三个路由表mae-west,telstra_sanitized,telstra_synth_1M(从Network Processing Forum(NPF)处获得),表项分别为28,895条、135,462条、1,000,000条,代表了路由表的各种大小级别。另外选择google、msn、Stanford university和tsinghua university四个常见IP地址作为查找实例。
仿真结果如表1。斜线上的数字表示“相同域的百分比”,指按本发明的硬件方法,整个路由表中与输入IP地址相同域(在此例中域即是比特)占总数的百分比;斜线下的数字表示考虑到“启动比较”后,实际比较域占总数的百分比。“启动比较”是指,当两个IP地址第一位就不相同的时候,也需要进行一次比较才能判断出是否相等的额外比较。
表1从表中可以看出,与传统的TCAM相比,本发明的硬件结构只需要消耗十分之一左右的功耗。对大的路由表来说,这个数字可以降到5%左右。
图1为数据域的示意图;图2为传统TCAM的原理图;图3为本发明所述流分类库的原理图;图4为表项内部流水比较的示意图;
图5为本发明硬件结构的原理图。
具体实施例方式
以下定义(1)比特即bit,存储数据的最小单位。本发明中所指的比特是三态比特,它保存的内容有三种‘1’,‘0’,‘*’(‘*’表示第三态,叫做“不考虑”态)。参见TCAM的三态存储器。
(2)数据域数据域是在硬件中存储数据的逻辑单位,是由1~n个比特组成的存储器。域的比特数由它的逻辑长度而定。例如,对于IP查找,域的长度是1比特;对于IPv4流分类,域的长度可以是32比特(IP地址)或者16比特(端口号)等;对于其他应用,也可是其他长度。参见图1。
(3)比较器比较器有三个输入信号和一个输出信号。三个输入信号分别是输入指示信号和两个输入数据。输出信号是输出指示信号。如果输入指示信号无效,则输出指示信号无效。如果输入指示信号有效,则比较器对两个输入关键字进行比较,若相等则输出指示信号有效,若不相等,则输出指示信号无效。当一个数据域的内容为“不考虑”时,无论另一个数据域为何值,比较都相等。参见图4。
(4)数据项数据项由若干数据域、每个数据域对应的比较器以及比较器之间的连接指示信号组成,是对数据进行检索和查询的单位。数据项也叫做表项。参见图4。
(5)数据库由若干数据项和“优先级解码器”等辅助模块构成的硬件结构。在本发明中,数据库可以是路由表或者流分类库。
(6)输入关键字输入的包含数个域的一条数据。它包含的域的数目与表项中的域的数目相等,它的长度与表项的长度相等。在路由器中,通过将输入关键字与数据库中所有表项进行比较,来实现IP查找或者流分类。
本发明流分类库的原理图如图3所示。数据库由许多条结构相似的表项组成,每个表项由数个域构成。每条表项的相邻两个域之间用信号线串连起来,前面一个域的比较结果做为后一个域的是否参与比较的指示信号。在有流分类请求的时候,它按照如下的步骤工作1)首先将输入关键字的第一个域与数据库中所有表项的第一个域同时并行比较;2)每个表项的第一个域的比较结果做为指示信号被传送到该表项的第二个域。如果第一个域比较成功,则下一个周期第二个域开始比较;否则,第二个域放弃比较。在这一个步骤,有可能有部分表项由于第一个域比较成功而得以进行比较;还有另外部分表项由于第一个域比较失败而没有参与比较,对于这一部分表项,由于其后的域在以后的周期里不能得到参与比较的指示信号,都会停止比较。
3)第二个域的比较结果做为指示信号被传送到第三个域。第三个域的表现与第二步中第二个域的行为相似。
4)数据库表项中所有的域按上述步骤与输入关键字中对应的域逐步流水进行比较,直到最后一个域。最后一个域的比较结果作为整条表项与输入关键字是否匹配的指示信号。如果最后一个周期比较成功,则整条表项比较成功;否则,则反之。
每条表项内部的流水线过程如图4所示。第一个比较器的输入指示信号与其他比较器的有所不同,叫做“启动信号”。它可以有两种连接方法1)可连接在时钟上,表示每个时钟周期都可启动比较过程。2)与“流分类请求”连接在一起,当有请求的时候启动比较过程。除了第一个比较器外,其他比较器的输入指示信号都连接在上一级比较器的输出指示信号上。
本发明利用“流水线控制器”来保证整个结构工作在流水线下,如图5所示。
在“流水线控制器”的入口处,需要N个“关键字寄存器”来保存输入的待查找关键字(“关键字寄存器”的个数N也就是输入关键字中域的个数,这两个数要一样,是为了流水线控制的需要)。这N个“关键字寄存器”工作在流水线下在第一个周期,输入关键字保存在“关键字寄存器1”中;第二个周期,该关键字被打入“关键字寄存器2”中,而后来的输入关键字重新占据“关键字寄存器1”的位置。其他“关键字寄存器”依此类推。
另外还需要N个“域寄存器”来保存输入关键字的每一个域。在上述的第二个周期,当输入关键字从“关键字寄存器1”打入“关键字寄存器2”的同时,该关键字的第一个域被打入“域寄存器1”;在第三个周期,该关键字从“关键字寄存器2”打入“关键字寄存器3”的同时,该关键字的第二个域被打入“域寄存器2”;依此类推。
这里以输入关键字A为例,说明流水线工作细节1.第一个时钟周期输入关键字A进入“关键字寄存器1”;2.第二个时钟周期A由“关键字寄存器1”进入“关键字寄存器2”,同时A的第一个域被提取出进入“域寄存器1”;3.第三个时钟周期A由“关键字寄存器2”进入“关键字寄存器3”,同时A的第二个域被提取出进入“域寄存器2”。同时,保存在“域寄存器1”中的数据与数据库中的所有表项的第一个域进行比较;4.第四个时钟周期A由“关键字寄存器3”进入“关键字寄存器4”,同时A的第三个域被提取出进入“域寄存器3”。同时,保存在“域寄存器2”中的数据与数据库中的所有表项的第二个域进行比较;5.依此类推,直至输入关键字的n个域与数据库中的n个域比较完成。
6.在每个时钟周期都可有新的输入关键字进入流水线控制器。
7.数据库在同一个时钟周期可对n个输入关键字的n个不同的数据域进行比较。每一个时钟周期可输出一个比较结果。
本发明所述的系统已在现场可编程门阵列FPGA上实现,其结构如图5所示,其中,流分类信号寄存器省略;时钟电路未包含在内,是独立的;相应的时钟周期信号线省略。
权利要求
1.路由查找和流分类用的高速低功耗的匹配方法,其特征在于,在时钟电路控制下,它依次含有以下步骤(1)第一个时钟周期把一个输入关键字A1并行送入关键字寄存器1;所述的输入关键字A1是包含N个数据域的一条数据,而每个数据域内含1~R个三态比特,它保存有“1”、“0”、“*即不考虑”三种不同的状态,以下简称比特,数据域的比特数由域的长度而定,域的长度是自行指定的;所述的关键字寄存器的个数N也就是输入关键字A1内的数据域的个数N;(2)第二个时钟周期上述输入关键字A1由关键字寄存器1并行进入关键字寄存器2,同时所述的关键字A1的第一个域被提取并行进入域寄存器1,把第二个输入关键字A2并行输入到关键字寄存器1;所述的保存输入关键字A1内各个数据域的域寄存器也有N个;各域寄存器的长度与关键字内对应的域的长度相等第一个域寄存器的长度与关键字内第一个域的长度相等,第二个域寄存器的长度与关键字内第二个域的长度相等,其他域寄存器依次类推;(3)第三个时钟周期所述输入关键字A1由关键字寄存器2并行进入关键字寄存器3,同时A1的第二个域被提取出并行进入域寄存器2,所述的输入关键字A2由关键字寄存器1并行送入关键字寄存器2,第3个关键字A3并行进入关键字寄存器1;也是在同时,保存在域寄存器1中的数据与数据库中的所有表项的第一个数据域中的数据进行比较;所述的数据库是路由表或者流分类库中的任何一种,它由若干个并列而成的数据项和一个优先级解码器串接而成所述的数据项即表项,每一个数据项由N个1~R个三态比特存储器构成的N个数据域、分别与N个数据域中每一个数据域的输出端相连的N个比较器以及N个相邻比较器之间的输出指示信号连接线组成,上述数据域的个数N也就是所述输入关键字中的数据域的个数N,也即输入关键字的长度与表项的长度相等;所述的比较器每个有三个输入信号和一个输出信号,三个输入信号分别是输入指示信号和二个输入数据,其中,各表项中第一个比较器的输入指示信号是与关键字同时从外部发来的同一个流分类请求信号,以后各比较器的输入指示信号都是前一个比较器的输出指示信号;二个输入数据分别来自编号相同的域寄存器和同一表项中编号相同的数据域的输出端;在比较时,若输入指示信号无效,则输出指示信号无效;若输入指示信号有效,则比较器对两个分别由域寄存器和同一表项中数据域来的数据进行比较,若相等,则输出指示信号有效,若不相等,则输出指示信号无效;(4)第4个时钟周期输入关键字A1由关键字寄存器3并行进入关键字寄存器4,同时A1的第3个域被提取出并行进入域寄存器3,接着输入关键字A2由关键字寄存器2并行进入关键字寄存器3,接着输入关键字A3由关键字寄存器1并行进入关键字寄存器2,又接着新的输入关键字A4并行进入关键字寄存器1;也是在同时,保存在域寄存器2中的数据与数据库中所有表项的第二个数据域中的数据进行比较;也是在同时,保存在域寄存器1中的数据与数据库中的所有表项的第一个数据域中的数据比较,比较时均按(3)所述方法进行;(5)依次类推,直至各输入关键字Am各自的N个数据域与数据库中N个数据域比较完成,如果数据库中没有数据项与输入关键字Am匹配,则优先级解码器输出不匹配信号;如果数据库中有一个数据项与输入关键字Am匹配,则优先级解码器输出匹配信号;如果数据库中有多个数据项与输入关键字Am匹配,则优先级解码器按设定程序从匹配的数据项中选择一个并输出匹配信号;按(1)~(5)所述的流水线方法,每个时钟周期可输入一个待查找关键字,优先级解码器每个时钟周期输出一个待查找关键字的是否匹配的信号。
2.路由查找和流分类用的高速低功耗系统,其特征在于,所述系统含有彼此串接的流水线控制器和流分类库,还有时钟电路,其中(1)流水线控制器,含有流分类信号寄存器,存储与输入关键字同时从外部发来的流分类请求信号;保存输入的待查找关键字的关键字寄存器,该关键字寄存器的个数N也就是各输入关键字中数据域的个数N;输入关键字的域的个数和长度与下述流分类库数据项的域的个数和长度相等;域寄存器,它的个数等于输入关键字中数据域的个数N,即域寄存器保存各输入关键字的一个域;每一个域寄存器是一个由1~R个比特组成,各域寄存器的长度与关键字内对应的域的长度相等第一个域寄存器的长度与关键字内第一个域的长度相等,第二个域寄存器的长度与关键字内第二个域的长度相等,其他域寄存器依次类推;(2)流分类库,含有流分类数据库,由若干个数据项即表项并列构成,而每一个数据项又由N个数据域串接而成,N也就是一个输入关键字的数据域数,上述数据项中的数据域含有1)N个且每个由1~R个三态比特组成的存储器,也即流分类库数据域,它的个数N与所述的流水线控制器中的域寄存器的个数相同,编号也一一对应;2)N个比较器,每个有三个输入信号和一个输出信号前面的两个输入信号分别来自相同编号的所述域寄存器和所述的各数据项中相同编号的流分类库数据域;第三个输入信号,对于各数据项中的第一个数据域而言,它是启动信号,是与输入关键字同时由外部发来暂时存入一个流分类信号寄存器的流分类请求信号,对于各数据项中其余数据域而言,它是前一个比较器的输出指示信号;它的一个输出信号是当前比较器的输出指示信号;优先级解码器,它的输入端与所述流分类数据库中各数据项的输出端相连,它的输出是是否匹配的信号;(3)时钟电路,它的输出端分别与所述各关键字寄存器、各域寄存器和各流分类库数据域的时钟信号输入端相连。
全文摘要
路由查找和流分类用的高速低功耗的匹配方法及其系统,属于计算机网络技术领域,其特征在于它利用硬件的并行性,一次完成所有表项的某个域的比较,但每次只对一个域进行比较;某一个表项的某一个域是否进行比较由该表项上一个域的比较结果决定,如果上一个域已经比较失败,则当前域不再进行比较。它适合硬件实现,而且速度快,功耗低。它与传统的TCAM相比,硬件结构只需要消耗十分之一左右的功耗;对大的路由表或者流分类库,可以降到5%左右。
文档编号H04L29/02GK1558619SQ20041000072
公开日2004年12月29日 申请日期2004年1月16日 优先权日2004年1月16日
发明者刘斌, 李旭东, 李竞, 刘 斌 申请人:清华大学