支持多nexthop的TCAM高速查找方法及其系统的制作方法

文档序号:7846667阅读:278来源:国知局
专利名称:支持多nexthop的TCAM高速查找方法及其系统的制作方法
技术领域
支持多nexthop的TCAM高速查找方法及其系统属于互联网中高速IP地址查找领域。
近年来,研究人员提出了许多机制和算法解决高速路由查找问题。这些算法大多数基于DRAM、SRAM等传统的存储设备。例如Degermark提出一种基于压缩转发表的快速查找算法。对于一个具有40,000个表项的大路由表,算法可以把它压缩成150K-160Kbytes大小的转发表。由于压缩后的转发表很小,它可以用高速的存储设备进行存储。如果用硬件实现该算法,进行一次路由查找所需的最小内存访问次数为2,最大内存访问次数为9。Gupta提出一个基于大DRAM存储的24-8多分支Tries树路由查找算法。算法进行一次路由查找时最多只需两次访问内存。算法所需DRAM存储空间约为33MBytes。通过增加中间表可以把算法对内存的需求减小到9MBytes,但算法查找一次的最大内存访问次数将达到3。这类基于DRAM、SRAM的查找算法,一般可以获得较高的路由查找速度,但在存储空间、更新速度和扩展性等方面具有比较差的性能。
TCAM(Ternary Content Addressable Memory三态内容可寻址存储器)技术是近年出现的一种硬件查找技术,它可以实现高速的路由查找。TCAM芯片内部使用并行技术,可获得O(1)的查找复杂度。目前市场上可获得的TCAM芯片查找速度最快可达100M次/秒。TCAM在存储空间和扩展性方面同样具有很好的性能。TCAM芯片内部采用三态逻辑,对于路由前缀可以达到O(1)的存储复杂度。TCAM技术对于IPv6也具有很好的扩展性,通过配置芯片内部的存储器,可以实现高速的IPv6路由查找。可见,和其他路由查找技术相比,TCAM技术在路由查找速度、存储空间和扩展性方面具有比较明显的优势。但TCAM技术的缺点也是明显的,它主要存在下面三个缺点1、成本高。TCAM芯片要比相同存储空间的SRAM,DRAM贵很多。2、功耗大。TCAM芯片内部采用并行技术进行关键字的比较,内部的功耗很大。3、路由更新复杂。用TCAM技术实现最长前缀查找时,路由前缀在TCAM芯片内需要按照一定的顺序进行排序,这使得路由更新操作相对复杂。低效率的路由更新会大大影响TCAM的路由查找性能。TCAM技术的三个缺点可以通过路由压缩、有效的路由更新等手段在一定程度上得到解决。总的来看,虽然TCAM技术存在着缺点,但它仍是一种比较好的路由查找方案。
路由表是路由器中重要的数据单元,它是路由查找转发的依据。我们对Internet中实际的路由表进行考查,发现路由表中存在相当数量的路由表项,它们具有多个nexthops(下一跳),可见多nexthops路由的存在是路由表的重要特征,但这一特征在介绍路由查找算法和方案的几乎所有的文章中都未被提及和考虑。多nexthops路由的存在增加了路由查找方案设计的复杂度。目前还没有研究者提出一个既满足高速查找要求,又支持多nexthops的路由查找方案。
本发明提出的查找方法的特征在于,它是一种采用索引方式对路由表项中的多个下一跳(Nexthop)组成以块(Block)的形式进行存储,同时再把下一跳地址、端口和相应的下一跳组成Nexthop映射表索引来进行高速查找的方法,它针对几乎所用的路由表项的下一跳个数都低于4个这一个规律同时以下一跳的个数为8个作为上限,建立了一、二两级下一跳索引表;它是在具有高速路由查找性能的三态内容可寻址的存储器(TCAM)的基础上实现的,依次含用如下的步骤(1)初始化在TCAM中按单元k存储路由前缀信息;在SRAM1中,与TCAM的存储单元k相一一对应,按下述三类数据结构存储一级下一跳索引信息,组成一级索引表;a类共16位,第1位是0,表示只有一个下一跳;其余15位是该下一跳的映射表索引;b类共16位,第1位是1,表示下一跳个数大于1;第2~3位是块号(Block number),表示块内的路由表项存在2、3或4个下一跳;第4~16位表示二级下一跳索引表的块内偏移(Block offset);用BN表示二级下一跳索引表内的块编号,BN=0、1、2分别表示相应的块内依次着2、3或4个下一跳;c类共16位,第1位是1,表示下一跳多于一个;第2~3位表示块号BN=3,意义同上;第4~6位表示该块号3内的下一跳数(Nexthop number),它的取值在2~8之间;第7~16位表示块内偏移,意义同上,用BO来表示;在SRAM2中存储下一跳映射表的索引,组成二级下一跳索引表;该索引表分成4块,前三块分别存储下一跳个数为2、3或4的路由表项的映射表索引,第4块存储下一跳个数为2~8之间的路由表项的映射表索引;其中,路由表项的多个下一跳的映射表索引在二级索引表中连续存储;在SRAM3中存储转发信息,内容为下一跳的IP地址和出端口号,组成下一跳映射表,设定下一跳映射表的深度为256;在现场可编程门阵列(FPGA)中存储二级下一跳索引表中4个块的基地址(BA,baseaddress),即每一块内第一个下一跳的首地址;(2)输入分组的源地址和分组的目的地址;(3)根据目的IP地址查找TCAM芯片,得到最长匹配前缀所在单元k;(4)访问一级下一跳索引表的单元k;(5)判断单元k的第1位若第1位为0,则从单元k中获得下一跳映射表索引,跳到步骤(9);若第1位为1,则执行步骤(6);(6)把一级索引表单元k中的BN、BO和NN传送到FPGA存储及控制电路;(7)FPGA根据BN、BO和NN计算出要访问的二级下一跳索引表的单元位置,它依次含有以下的步骤7.1通过BN,得到相应块的基地址BA;7.2判断BN的值若BN<3,则得到相应的NN,即BN=0,1,2分别对应NN=2,3,4;若BN=3,则从一级下一跳索引表中的c类数据结构中得到NN,即下一跳数目;7.3根据下述策略选择转发的下一跳映射表索引7.3.1根据下式得到选择的下一跳的索引(index)(分组的源地址+分组的目的地址)/NN;7.3.2通过计算(BA+BO+index)得到要访问的二级索引表的单元位置;(8)根据FPGA计算的结果访问二级索引表,得到下一跳映射表索引;(9)根据下一跳映射表索引,访问映射表,得到转发信息。本发明提出的查找系统的特征在于,它含有TCAM输入为分组目的IP地址;SRAM1输入为TCAM输出的最长匹配前缀所在单元k;FPGA存储和控制器,输入为一级下一跳索引表SRAM1输出的BN、BO和NN;SRAM2输入为FPGA存储和控制器输出的二级索引表SRAM2中要访问的单元位置;
SRAM3下一跳的映射表,输入是SRAM1输出的下一跳映射表索引,或者是SRAM2输出的下一跳映射表索引。
试验证明本发明具有支持多个下一跳、查找速度可达100M次/秒、较小的存储空间、对IPv6路由查找有很好的扩展性的优点。
图2.一级下一跳索引单元的数据结构图a第1位为0时;b第1位为1,且2~3位小于3时;c第1位为1,且2~3位等于3时;图3.查找方法的程序流程4.查找的两个实例示意5.查找系统的电路原理图。
一级nexthop索引表存储单元与TCAM芯片的存储单元一一对应。比如某条路由表项的路由前缀信息存储在TCAM芯片中的第k个单元,则相应的一级索引信息存储在一级索引表的第k个单元。一级索引表的存储单元宽度为16bits(这个宽度可根据二级索引表的大小进行调整),它有如图2所示三类结构。图2(a)所示单元表示该路由表项只存在一个nexthop,单元后15bits存储nexthop映射表的索引,根据这个索引可在nexthop映射表中得到(下一跳IP,出端口)的转发信息。图2(b)所示单元表示该路由表项存在2,3或4个nexthops。BN的取值分别为0,1,2。BN为二级nexthop索引表的块编号。BO为二级索引表的块内偏移。图3(b)所示单元表示该路由表项存在2个或2个以上的nexthops。BN的取值为3,NN指明路由表项nexthop的个数,它的取值可为2到8,BO为二级索引表的块内偏移。
二级nexthop索引表存储nexthop映射表的索引,单元数据宽度为8bits(后面会解释为什么选择8bits)。二级索引表分为4个块。前三块分别存储nexthop个数为2,3,4的路由表项的映射表索引。第4块可存储nexthop个数为2到8之间的路由表项的映射表索引。块4一般不存储nexthop个数为2,3,4的路由表项。只有块1、块2和块3无空余空间时,才会存储相应的路由表项。路由表项的多个nexthop的映射表索引在二级索引表中连续存储。比如某个路由表项有k个nexthops,第一个nexthop的映射表索引存储在二级索引表的的第n个单元,则其余k-1个映射表索引依次存储在n+1,n+2,...,n+k-1的k-1个连续单元里。
二级nexthop索引表是实现多nexthops支持的关键部分。二级索引表分为4个块,这主要是因为通过考查实际路由表,我们发现几乎所有的路由表项的下一跳个数都不超过4个。实际中块1、块2和块3就可以满足要求,设计中保留块4主要是为了满足特殊的要求。二级索引表中块1、块2、块3的大小可根据实际路由表中多nexthops路由表项的统计规律来确定,比如nexthop个数为2,3,4的路由表项所占百分比为r2%,r3%,r4%,一级nexthop索引表的深度为N,则块1,块2和块3的大小分别为N*2*r2%,N*3*r3%,N*4*r4%。对于块4的大小可根据实际需要来决定。
nexthop映射表单元存储(下一跳IP,出端口)的转发信息。nexthop映射表的深度为256。深度为256主要是因为真实路由器的接口数都是比较少的,不同(下一跳IP,出端口)对的数目也就较少。我们对Internet上真实的路由表进行考查,发现不同(下一跳IP,出端口)对的数目远远小于256,同时深度选为256也可以减少存储空间。由于映射表的深度为256,二级nexthop索引表存储着映射表的索引,所以8bits的数据宽度就可以满足二级索引表的设计要求。
FPGA存储和控制器完成路由查找过程中所有的逻辑计算,同时还存储着二级nexthop索引表4个块的基地址(BA,base address)。FPGA存储与控制器的一个重要功能是通过一级nexthop索引表单元中的BN、BO和NN域计算出要访问的二级nexthop索引表单元位置,FPGA控制模块具体计算过程如下1.通过BN,得到相应块的基地址BA;2.如果BN小于3,则通过BN得到对应的NN;具体来说,BN=0,1,2分别对应NN=2,3,4;如果BN=3,NN可从一级nexthop索引表单元中得到;3.根据转发策略,从多个nexthops中选择一个做为转发的下一跳;简单的策略,可根据(分组的源地址+分组的目的地址)/NN得到选择的nexthop的index(索引);4.最后计算获得要访问的二级索引表的单元位置(BA+BO+index);本方案查找过程可分为4个阶段TCAM芯片查找、一级nexthop索引表访问、二级nexthop索引表访问、nexthop映射表访问。4个阶段互相独立,没有共享资源冲突,可以使用流水线技术进一步提高查找速度。比如TCAM芯片采用100M次/秒的查找芯片、其他部分的存储都采用10ns的SRAM,那么使用流水线技术,可以获得100M次/秒的查找速度。
方案对IPv6有很好的扩展性。由于一级索引表与二级索引表都采用索引方式对路由进行存储,索引与协议是无关的,所以方案从IPv4升级到IPv6,只需要扩充nexthop映射表单元数据宽度就可以要求。
方案中nexthop存储部分所需空间是比较小的。对多nexthops的存储我们主要都是采用索引的形式,这大大减小了对存储空间的需求。
整个查找过程可用图3所示的流程图表示。
图4为两个具体路由查找的例子。例子一为对目的地址1.1.1.2的查找。首先在TCAM芯片内根据最长匹配原则,找到与之匹配的前缀1.0.0.0/8。根据前缀1.0.0.0/8所在单元的位置,访问对应的一级nexthop索引表单元。一级索引表单元的内容为(0,14),单元第一个bit位为0,所以单元后15个bits的内容为nexthop映射表的索引(14)。访问索引表的第14个单元得到(下一跳IP,出端口)的转发信息(1.1.1.2,2)。例子二为对目的地址10.9.1.2的查找。首先在TCAM芯片内找到与之最长匹配的前缀10.9.1.0/24。根据前缀10.9.1.0/24所在单元的位置,访问对应的一级nexthop索引表单元。一级索引表单元内容为(1,0,50),单元第一个bit为1,所以单元后两个域分别为BN(0),BO(50)。把BN和BO交给FPGA模块。FPGA模块通过分组的源地址、目的地址和BN,得到选择的nexthop索引index(1),并最终计算出要访问二级索引表单元位置(BA+BO+1),访问二级索引表对应单元得到nexthop映射表的索引(26)。访问映射表的第26个单元,得到(3.1.1.1,4)的转发信息。
本发明具有下面几个特征1、支持多nexthops;2、支持高速的路由查找(目前可以达到100M次/秒的查找速度);3、较小的存储空间;4、对IPv6路由具有很好的扩展性。
权利要求
1.支持多nexthop的TCAM高速查找方法,其特征在于它是一种采用索引方式对路由表项中的多个下一跳(Nexthop)组成以块(Block)的形式进行存储,同时再把下一跳地址、端口和相应的下一跳组成Nexthop映射表索引来进行高速查找的方法,它针对几乎所用的路由表项的下一跳个数都低于4个这一个规律同时以下一跳的个数为8个作为上限,建立了一、二两级下一跳索引表;它是在具有高速路由查找性能的三态内容可寻址的存储器(TCAM)的基础上实现的,依次含用如下的步骤(1)初始化在TCAM单元k存储路由前缀信息;在SRAM1中,与TCAM的存储单元k一一对应,按下述三类数据结构存储一级下一跳索引信息,组成一级索引表;a类共16位,第1位是0,表示只有一个下一跳;其余15位是该下一跳的映射表索引;b类共16位,第1位是1,表示下一跳个数大于1;第2~3位是块号(Block number),表示块内的路由表项存在2、3或4个下一跳;第4~16位表示二级下一跳索引表的块内偏移(Block offset);用BN表示二级下一跳索引表内的块编号,BN=0、1、2分别表示相应的块内依次存在着2、3或4个下一跳;c类共16位,第1位是1,表示下一跳多于一个;第2~3位表示块号BN=3,意义同上;第4~6位表示该块号3内的下一跳数(Nexthop number),它的取值在2~8之间;第7~16位表示块内偏移,意义同上,用BO来表示;在SRAM2中存储下一跳映射表的索引,组成二级下一跳索引表;该索引表分成4块,前三块分别存储下一跳个数为2、3或4的路由表项的映射表索引,第4块存储下一跳个数为2~8之间的路由表项的映射表索引;其中,路由表项的多个下一跳的映射表索引在二级索引表中连续存储;在SRAM3中存储转发信息,内容为下一跳的IP地址和出端口号,组成下一跳映射表,设定下一跳映射表的深度为256;在现场可编程门阵列(FPGA)中存储二级下一跳索引表中4个块的基地址(BA,baseaddress),即每一块内第一个下一跳的首地址;(2)输入分组的源地址和分组的目的地址;(3)根据目的IP地址查找TCAM芯片,得到最长匹配前缀所在单元k;(4)访问一级下一跳索引表的单元k;(5)判断单元k的第1位若第1位为0,则从单元k中获得下一跳映射表索引,跳到步骤(9);若第1位为1,则执行步骤(6);(6)把一级索引表单元k中的BN、BO和NN传送到FPGA存储和控制电路;(7)FPGA根据BN、BO和NN计算出要访问的二级下一跳索引表的单元位置,它依次含有以下的步骤7.1通过BN,得到相应块的基地址BA;7.2判断BN的值若BN<3,则得到相应的NN,即BN=0,1,2分别对应NN=2,3,4;若BN=3,则从一级下一跳索引表中的c类数据结构中得到NN,即下一跳数目;7.3根据下述策略选择转发的下一跳映射表索引7.3.1根据下式得到选择的下一跳的索引(index)(分组的源地址+分组的目的地址)/NN;7.3.2通过计算(BA+BO+index)得到要访问的二级索引表的单元位置;(8)根据FPGA计算的结果访问二级索引表,得到下一跳映射表索引;(9)根据下一跳映射表索引,访问映射表,得到转发信息。
2.根据权利要求1所述的支持多nexthop的TCAM高速查找方法及提出的系统,其特征在于,它含有TCAM输入为分组目的IP地址;SRAM1输入为TCAM输出的最长匹配前缀所在单元k;FPGA存储和控制器,输入为一级下一跳索引表SRAM1输出的BN、BO和NN;SRAM2输入为FPGA存储和控制器输出的二级索引表SRAM2中要访问的单元位置;SRAM3下一跳的映射表,输入是SRAM1输出的下一跳映射表索引,或者是SRAM2输出的下一跳映射表索引。
全文摘要
支持多nexthop的TCAM的高速查找方法及其系统属于互联网中IP地址高速查找技术领域,其特征在于它是一种基于三态内容可寻址存储器TCAM的采用索引方式对路由表项中的多个下一跳(nexthop)以块的形式进行存储,同时再把下一跳地址、端口组成nexthop映射表来进行高速查找的方法,它针对几乎所用的路由表项的下一跳个数都低于4这一规律同时以下一跳的个数为8个作为上限建立了一、二两级下一跳索引表。它具有高速查找、存储空间少、支持IPv6的扩展以及可支持多个下一跳等优点。
文档编号H04L12/26GK1441579SQ03121149
公开日2003年9月10日 申请日期2003年3月28日 优先权日2003年3月28日
发明者徐恪, 梁志勇 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1