发明名称 基于TCAM的分布式并行IP路由查找方法
摘要 基于TCAM的分布式并行IP路由查找方法,属于计算机网络技术领域,其特征在于:它把一个IP地址或路由前缀的第10到13比特作为其ID,据此把路由前缀分成16个具有相同ID的前缀组,结合索引逻辑的设计,使多个TCAM芯片分别分区存储了这些前缀,从而使得查找任务在多个TCAM芯片间并行执行成为可能;它允许对被访问频率较高的前缀组实行TCAM片间冗余存储,使得查找流量能在多个TCAM间进一步均摊;此外,自适应优先选择器又使得查找流量在微观上得到调节,进一步保证了查找吞吐量。他的特点是吞吐量很高,但功耗却低。
申请公布号 CN1279729C 申请公布日期 2006.10.11
申请号 CN200410004525.9 申请日期 2004.02.20
申请人 清华大学 发明人 郑凯;刘斌
分类号 H04L12/56(2006.01);H04L12/24(2006.01) 主分类号 H04L12/56(2006.01)
代理机构 代理人
主权项 1.基于TCAM的分布式并行IP路由查找方法,其特征在于,它依次含有以下由一个FPGA和多个TCAM来实现的步骤:(1),设定:三元内容寻址内存TCAM的片数K,以及每个TCAM的分区数P;定义一个IP地址或一个路由前缀的第10到13比特为这个IP地址或路由前缀的ID,据此把路由前缀分成16份,每一份都是具有相同的ID的路由前缀的集合即前缀组,在对每个TCAM芯片分区时,使每个分区能存的前缀数目和一个前缀组包含的前缀数目相当,相应地测定每个前缀组的被访问流量密度D_id[j],j为这个前缀组的ID,D_id[j]在数值上等于该前缀组包含的所有前缀被访问的频率之和占所有路由前缀总访问频率的百分比;当一个前缀组对应的访问频率较高时要根据冗余度KP/16,在多个不同的TCAM芯片中存储所述的前缀组;(2),形成分布式存储的路由转发表:它包含以下步骤:(2.1),预计算G[j],j=0,1,2,...,15和W[j],j=0,1,...,15;G[j]为ID等于j的这个前缀组被储存的份数,其中每一个G[j]根据下式计算:G[j]=[K×P×D_id[j],j=0,1,2,...15;[]表示取整,要求结果大于0小于K;W[j]为ID的与j的前缀组在一个TCAM芯片内的等效被访问频率,W[j]在数值上等于前缀组j的被访问流量密度除以这个前缀组被存储的总份数;每一个W[j]用下式表示:W[j]=D_id[j]/G[j];j=0,1,...,15;(2.2),初始化,其中包括:决策变量Qk,k=1,2,...K,Qk为第K个TCAM芯片存储的前缀组的集合,|Qk|表示第K个TCAM芯片存储的前缀组的个数;目标值D[k],k=1,2,...K,D[k]为第K个TCAM芯片所负担的查找流量密度,它在数值上等于所有存储在该TCAM上的前缀组的等效被访问频率W[j]=D_id[j]/G[j]的和,即:D[k]:=∑j∈QkD_id[j]/G[j];(2.3),计算Qk和D[k],它依次包含以下步骤:(2.3.1),给对应的ID组{j|j=0,1,2,...,15}重新按w[j]的值从小到大的顺序编号,其结果用{Sid[0],Sid[1],...,Sid[15]}表示,Sid表示各ID组i的流量从小到大的排序关系;(2.3.2),依据上一步得到的Sid[i]指示的顺序,把各个ID组i按以下步骤分配给TCAM存储得到Qk,k=1,2,...,K,D[k],k=1,2,...K;对于要分配的ID组Sid[i],从i=0开始,按照它所需要的分配次数G[Sid[i]]在K个TCAM里面挑选已分得流量最小的G[Sid[i]]个逐次分配,分配时要使等效被访问频率W[j]高的ID组先被分配,低的后分配,每分配一次,要按D[k]从大到小的顺序给TCAM编号,用中间变量{Sc[0],Sc[1],...,Sc[K]]表示,当满足条件:<math> <mrow> <mi>Sid</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <msub> <mrow> <mo>&NotElement;</mo> <mi>Q</mi> </mrow> <mrow> <mi>Sc</mi> <mo>[</mo> <mi>k</mi> <mo>]</mo> </mrow> </msub> </mrow> </math> 而且<math> <mrow> <mo>|</mo> <msub> <mi>Q</mi> <mrow> <mi>Sc</mi> <mo>[</mo> <mi>k</mi> <mo>]</mo> </mrow> </msub> <mo>|</mo> <mo>&lt;</mo> <munder> <mi>Min</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mi>K</mi> </mrow> </munder> <mo>|</mo> <msub> <mi>Q</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>+</mo> <mn>1</mn> </mrow> </math> 时,那么就把ID组Sid[i]分配给第Sc[k]号TCAM芯片,直到这个ID组被分配了G[Sid[i]]次;再使i=i+1,重新以上的过程,分配其它的ID组,直到i>15时分配全部结束,得到所需要的Qk和D[k],k=1,2,...,K;上述步骤(1),(2),由现场可编程门阵列FPGA来实现;(3),实现自适应均衡的并行查找,它依次包含以下步骤:(3.1),在上述FPGA控制下,提取待查找的IP地址的第10-13这4个比特,把它们送到上述FPGA内一个含有K×P个匹配器的匹配器堆构成的索引路逻辑IndexLogic部件,其中每个TCAM对应P个匹配器,每个匹配器又对应这个TCAM中的一个分区,所述P个匹配器记录着这个TCAM的P个分区内存储着的前缀组信息,这P个匹配器又对应着一个输出,该P个匹配器通过比较当前IP地址的ID和该TCAM存储的P个前缀组的ID来指示这个TCAM内是否含有与当前IP匹配的前缀;当输入的IP的ID字段和组内某个匹配器的index域匹配时,对应的值partition就被输出,即这个组的返回值,表示这个TCAM的这个分区存有和当前待查IP匹配的前缀;否则返回一个不命中信号;(3.2)上述FPGA中,由比较器构成的自适应均衡优先级选择逻辑部件在收到上述Partition值后,就从各自串联着一个TCAM的FIFO存储器构成的FIFO队列计数器中选择一个FIFO存储器,它对应于多个存储有和当前IP地址相匹配的前缀的TCAM中负载最轻的一个,把当前的待查找IP通过这个FIFO存储器分配给这个负荷最轻的TCAM实现查找;然后合并器以比TCAM查找速度快K倍的速度,把K个TCAM查找得到的结果依次返回。
地址 100084北京市100084-82信箱