CN1279716C - 消除最长前缀匹配查找的并行路由查找方法及其系统 - Google Patents

消除最长前缀匹配查找的并行路由查找方法及其系统 Download PDF

Info

Publication number
CN1279716C
CN1279716C CN 03134693 CN03134693A CN1279716C CN 1279716 C CN1279716 C CN 1279716C CN 03134693 CN03134693 CN 03134693 CN 03134693 A CN03134693 A CN 03134693A CN 1279716 C CN1279716 C CN 1279716C
Authority
CN
China
Prior art keywords
prefix
bank
node
unit
search
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN 03134693
Other languages
English (en)
Other versions
CN1529454A (zh
Inventor
吴建平
梁志勇
徐恪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN 03134693 priority Critical patent/CN1279716C/zh
Publication of CN1529454A publication Critical patent/CN1529454A/zh
Application granted granted Critical
Publication of CN1279716C publication Critical patent/CN1279716C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

消除最长前缀匹配查找的并行查找方法及系统属于互联网高速'地址查找技术领域,具有特征在于:它基于二分支树查找结构,按照当前结点的结点高度相等原则对所有路由前缀进行前缀划分;接着,对由上述步骤分成的若干个互不重叠的前缀集合用通用性很强的查找框架并行地进行下一跳出端口转发信息的查找;所述查找系统,它依次含有:分发器、bank单元集合、选择器和映射表,所述的分发器和选择器由现场可编程门阵列(简称FPGA)构成,所述映射表由同步静态存储器(简称SRAM)构成,所述bank单元集合由FPGA和SRAM串联组成。它还提出了对所述前缀集合进行前缀平衡的方法。实验证明:它提高了查找速度。

Description

消除最长前缀匹配查找的并行路由查找方法及其系统
技术领域
消除最长前缀匹配查找的并行路由查找方法及其系统属于互联网中高速IP地址查找技术领域。
背景技术
路由器在网络中负责对分组进行路由转发。转发分组时,路由器需要基于每个分组头部的目的IP地址,在路由表中进行路由查找,找到分组正确的下一跳出口。在高性能路由器中,接口速率越来越高。OC48(2.5Gbps)、OC192(10Gbps)、甚至更高速率的接口已经在高性能路由器中得到应用。在OC192接口速率下,路由器每秒钟需要转发3000万个分组(分组长度按40字节计),也就是每秒钟需要进行3000万次路由查找。快速路由查找技术成为提高路由器转发性能的关键。
Internet初期采用基于类的地址结构,随着Internet的发展,基于类的地址结构产生两个问题:1、大量地址的浪费。2、Internet全局路由表的规模指数级增长。为了解决这两个问题,1993年因特网工程任务组(IETF)提出无类域间路由(CIDR)的地址结构,与最初基于类的地址结构不同,CIDR使用任意长度的前缀作为网络地址,允许路由表中多条路由表项进行聚合。CIDR在一定程度上解决了基于类地址结构的两个问题,但它也带来了新的问题,由于允许路由表项的聚合,路由器进行路由查找时,必须找到最长匹配路由,这大大增加了路由查找的复杂性。下一代Internet采用IPv6地址结构,地址长度从32bit扩展为128bit,路由表规模进一步增加,这进一步增加路由查找的难度。
近年来,研究人员提出了许多机制和算法解决路由查找的问题。Lampson等人提出了一个地址区间的二分查找算法。算法把前缀对应为地址区间,然后对地址区间进行二分查找,算法的查找复杂度为O(log22N)(N为前缀个数)。为了进一步提高查找速度,可利用计算机中缓存列(cache line)的特点,对地址区间进行多路查找,查找复杂度可降为O(logk2N)。Waldvogel等人提出一种基于软件实现的查找算法。算法按照前缀长度把前缀分成W个集合(W为地址长度),查找过程分为两个层次,第一个层次是在W个集合间进行二分查找,第二个层次是在集合内部进行Hash查找。最坏情况下算法需要进行log2W次Hash查找。因此对于IPv4地址(W=32),算法最多需要5次Hash查找,而对IPv6地址(W=128),只需7次查找。Gupta等人提出一个基于大容量DRAM的24-8多分支Tries树查找算法。算法进行一次路由查找最多只需两次访问内存。算法所需DRAM存储空间约为33MBytes。通过增加中间表可以把算法对内存的需求减小到9MBytes,但算法查找一次的最大内存访问次数将达到3。算法可用硬件实现,使用流水线技术可以保证每个内存周期得到一个查找结果。Nen-Fu等人提出另外一种基于多分支Tries的查找算法。算法采用有效的压缩技术,可以把具有40K表项的路由表压缩至450K-470K字节。由于路由表被压缩的足够小,算法可用SRAM实现。用硬件实现该算法,采用流水线技术也可保证一个内存周期得到一个查找结果。TCAM(三重内容寻址存储器)技术是近年来非常流行的一种硬件查找技术,它可以实现快速的路由查找。TCAM的查找复杂度为O(1),目前市场上的TCAM芯片可以到达100Mpps的查找速度。TCAM也存在缺点:代价高、功耗大、更新复杂。
最长前缀匹配是路由查找的难点所在。由于前缀之间存在重叠,传统查找算法(比如:Hash查找,二分查找等)不能直接应用于路由查找。为了减少路由查找的复杂性,研究人员提出一些方法把最长前缀匹配问题转化为唯一前缀匹配问题。Srinivasan等人提出一种leafpushing的技术。二分支Trie中,具有路由信息的中间结点的存在导致路由前缀之间存在重叠。leaf pushing技术通过把中间结点的路由信息扩散到叶子结点,从而消除路由前缀间的重叠。由于路由前缀不存在重叠,最长前缀匹配查找也转化为唯一前缀匹配查找。leaf pushing技术可减少路由查找的复杂性,但也存在两个问题:1、导致大量重复路由信息。中间结点的路由信息被扩散到多个叶子结点,最初中间结点的一条路由扩展为多条路由,这造成存储空间的浪费。2、复杂的更新。增加或删除中间结点的路由信息,必须同时增加或删除多条扩展路由,这大大增加了更新操作的复杂性。Waldvogel等人中提出另一种最长前缀匹配查找的转化方法。方法按前缀长度把前缀分成若干个集合,每个集合内的前缀是非重叠的,集合内的查找为唯一匹配前缀查找。查找时,分别对各个集合进行查找,然后从多个查找结果中,选择长度最长的前缀做为最终查找结果。这种方法把最长前缀查找问题转化为若干个唯一前缀查找的问题。如果可以并行查找多个集合,可进一步提高路由查找的速度。但按长度分成的各个集合包含的前缀数目差别很大,对于实际的Internet路由表,各个集合前缀数目从几个到几十K不等。采用相同的查找算法,各个集合的查找速度与所需存储空间会差别很大。这个特点这不利于对多个集合执行并行查找。所以Waldvogel等人提出的集合划分方法虽然可以简单有效的把最长前缀匹配转化为唯一前缀匹配问题,但它难以并行实现。Mohammad等人提出另一种基于出端口的前缀集合划分方法。方法根据路由信息中出端口的不同把路由前缀划分为若干个集合,在假设路由器没有连接共享链路的情况下,集合内部的前缀是非重叠的。查找过程,先分别对各个集合进行查找,然后从多个查找结果中,选择最长的前缀。由于假设路由器没有连接共享链路,这种划分方法显然不具有普遍性。
发明内容
本发明的目的在于提出一个消除最长前缀匹配的并行路由查找系统。
本发明提出的系统有三个特征:
(1)采用新颖的基于二分支Trie树结构前缀划分方法,该方法将路由表中所有前缀划分为几个集合,并保证每个集合内的前缀没有重叠,前缀划分方法操作简单,易于更新,适用于所有路由表;
(2)采用新颖的查找框架,框架具有通用性,适用于大多数路由查找算法,框架并行的对多个前缀集合进行查找,可以有效的提高路由查找算法的查找速度,多个前缀集合内无重叠前缀,这可以大大简化路由查找算法的设计;
(3)采用独特的方法,平衡多个前缀集合内的前缀数目,使多个前缀集合具有相当的前缀数目、查找速度和存储空间。
本发明所提出的并行查找方法的特征在于:
首先,它基于二分支数查找结构,按照当前结点的结点高度相等的原则对所有路由前缀进行前缀划分并组成集合,所述的当前结点的结点高度意指选择一条包含最多前缀结点的路径,它所包含的排除当前结点后的前缀结点数目;接着,对由上述步骤分成的若干个互不重叠的前缀集合用通用性很强的查找框架并行地进行下一跳出端口转发信息的查找,所述的查找框架依次含有:接收并负责把目的IP地址分发至多个查找单元(简称bank)的分发器;bank单元集合,它负责在内部前缀集合中进行唯一匹配查找,并据此发出自己所保存的转发信息在nexthop(下一跳)映射表中的单元索引;选择器,它从多个bank的多个匹配结果中选择最小高度集合的匹配结果作为查找结果,所选的高度最小集合,它的bank编号低,所存储的匹配前缀长,所选的匹配结果即bank单元所保存的转发转发信息在nexthop映射表中的单元索引;nexthop映射表,它根据输入的与最长匹配前缀长度相应的映射表单元索引,输出对应单元存储的下一跳出端口的转发信息。
它在并行查找前,对bank单元间的前缀数目用集合高度为0的路由前缀中划分出的孤儿结点来进行前缀平衡,所述的孤儿结点意指那些从它到根结点的路径中,不存在除它之外其它前缀结点的叶子结点,平衡的方法也把这些孤儿结点按照bank间前缀数目分配均衡的原则分别加到各个bank单元中。
它依次含有以下步骤:
(1)初始化所有的前缀集合:首先,按结点高度相等的原则对所有的路由前缀进行集合划分;其次,从结点高度为0的前缀集合中划分出孤儿结点集合,按各bank单元间前缀数目均衡的原则进行各bank单元内前缀数目的平衡;从而得到各bank单元内无重叠的前缀且前缀数目也均衡的前缀数目;
(2)把步骤(1)得到的各bank单元的前缀,按bank单元编号越低、集合的结点高度越低、前缀越长的规则依次根据编号大小输入到各bank单元内;还要输入与匹配前缀对应的nexthop映射表单元索引;
(3)分发器把它从网络中收到的分组数据的目的IP地址分发给所有的bank单元;
(4)所有的bank单元并行执行查找,把查找到的与匹配前缀对应的nexthop映射表单元索引送到选择器;
(5)选择器从多个映射表单元索引中,选择来自最低编号bank单元的查找结果;
(6)根据选择器选出的映射表单元索引,访问对应的映射表单元,得到下一跳出端口转发信息。
本发明所提出的查找系统的特征在于:
它由执行分发操作的分发器,执行并行查找操作的由bank单元并联而成的bank集合,选择器以及映射表存储器依次串联而成;所述的分发器由现场可编程门阵列(简称FPGA)构成,所述的bank集合由依次由FPGA和同步随机存储器(简称SRAM)串联构成的bank单元并联而成,所述的选择器由FPGA构成,所述的映射表存储器由SRAM构成。
实验证明:本发明提出的系统可把路由查找的最长前缀匹配问题转化为唯一前缀匹配问题,可简化路由查找算法设计,提高路由查找算法的查找速度。
附图说明
图1.二分支Trie树;
图2.前缀集合划分的流程图;
图3.通用的并行查找框架;
图4.前缀平衡的流程图;
图5.硬件结构框架图。
具体实施方式
二分支Trie树是一种基本的查找结构,它具有二叉树结构,树中每个结点最多有两个分支,两个分支分别对应bit0和bit1。树中每个结点都代表一个0/1的bit串,bit串与根结点到该结点经过的路径对应。图1就是一个简单的二分支trie树,树中存储了a到j十个前缀。图1中结点的左分支代表bit0右分支代表bit1。代表前缀的结点用灰色标出,根结点到灰色结点的路径代表前缀的bit串,比如:灰色结点b,根结点到b结点的路径为“01000”,它就是前缀b的bit串。
在二分支Trie树中,代表前缀的结点,我们称为前缀结点,如图1中所有的灰色结点,它们存储着有效的路由信息;不代表前缀的结点,我们称之为非前缀结点,如图1中所有的白色结点,它们不具有有效的路由信息,它们的存在只是满足查找结构的需要。
为了把二分支Trie树中存储的前缀划分为几个互不重叠的几个前缀集合,我们定义二分支Trie树中新的结点属性结点高度。
定义1结点高度:从当前结点到多个子孙叶子结点的多条路径中,选择一条包含最多前缀结点的路径(如果有多条满足条件的路径,任选一跳),路径中包含前缀结点的数目(不包括当前结点)称为当前结点的结点高度。我们用height表示结点高度。
图1中的d结点,从d结点到叶子结点共有2条路径:d到g、d到f。其中d到g路径上包含两个前缀结点(e和g),d到f的路径只包含一个前缀结点(f),所以d结点的结点高度为2。图1中的a结点,a结点到叶子结点共有两条路径:a到b,a到c。两条路径包含相同数目的前缀结点,任选一条a到b,所以a结点的结点高度为1。另外从定义1中可知,二分支trie树中,所有叶子结点的结点高度均为0,图1中b、c、g、f、h、i和j的结点高度相应均为0。
定义2高度集合:具有相同高度的前缀结点所代表的路由前缀构成的集合,称为一个高度集合。我们用HeightSet(h)表示height=h的前缀结点所代表的前缀组成的高度集合,h称为高度集合的高度。
按照定义2,图1中的路由前缀可以分成下面几个高度集合:
HeightSet(0)={b、c、g、f、h、i、j},集合高度为0;
HeightSet(1)={a、e},集合高度为1;
HeightSet(2)={d},集合高度为2;
根据高度集合的定义,我们可以推导出下面三个和高度集合相关的定理。
定理1:高度集合中的所有前缀都是非重叠的。
定理2:对于某个高度集合,给定一个IP地址,此高度集合或者存在唯一与该IP地址匹配的前缀,或者不存在与之匹配的前缀。
定理3:一个IP地址与高度集合HeightSet(i)中前缀prefixi匹配,同时也与高度集合HeightSet(j)中的前缀prefixj匹配(i≠j),如果集合高度i<j,则prefixi的长度长于prefixj的长度,否则prefixi的长度短于prefixj的长度。
三个定理的证明略。
由定理1可知,高度集合中不存在重叠的前缀。我们把二分支Trie中的所有前缀划分为若干个高度集合,也就相当把所有前缀划分为了若干个非重叠前缀集合。所以前缀划分具体的步骤如下:
  for(所有路由前缀){h=路由前缀对应前缀结点的高度;把路由前缀加入到高度集合HeightSet(h);}
上述方框内的内容就是前缀集合的划分方法。前缀集合划分方法的流程图如图2所示。
采用前缀划分方法可以把前缀分成若干个互不重叠的前缀集合,对于若干个前缀集合的查找采用通用的并行查找框架。框架结构如图3所示,框架共分为4个部分:分发器、bank单元、选择器和nexthop映射表。
分发器负责把目的IP地址分发至多个bank查找单元,使多个bank单元可以并行的进行查找。
bank负责在内部前缀集合中进行唯一匹配查找。每个bank存储一个高度集合,编号小的bank对应高度低的高度集合,比如:bank 0对应HeightSet(0),bank 1对应HeightSet(1),...,bank4对应HeightSet(4)。bank单元共有五个,这是因为根据实验显示,Internet路由表最多可以划分为5个高度集合。bank内不存储真正的转发信息(下一跳IP,出端口),转发信息存储在nexthop映射表中,bank只保存转发信息在nexthop映射表中的单元索引(index)。与并行查找算法不同,bank查找返回的结果不是匹配的前缀,而是与其对应的nexthop映射表的单元索引。
选择器从多个bank的多个匹配结果中选择高度最小集合的匹配结果作为最终的查找结果,在图3框架中,高度最小集合对应着编号最小的bank。
nexthop映射表存储真正的转发信息,每个映射表单元存储一个(下一跳IP,出端口)。nexthop映射表根据输入的最长匹配前缀对应的映射表单元索引,输出对应单元存储的(下一跳IP、出端口)转发信息。
从总体结构中,可以看出并行查找框架的两个特点:1、bank内存储的前缀是非重叠的;2、对于某个IP地址,多个bank存在多个匹配前缀时,bank的编号越低存储的匹配前缀长度越长。
具体来讲,在图3中对目的地址1.2.3.4进行查找。首先分发器将1.2.3.4分发给五个bank(bank0到bank4)。五个bank单元并行进行查找,其中三个bank存在与1.2.3.4匹配的前缀(图3用灰色条框标出):bank 0中的1.2.3.0/24,bank 2中的1.2.0.0/16,bank 3中的1.0.0.0/8。bank 0把1.2.3.0/24对应的映射表索引10,做为查找结果送到选择器,bank 2和bank 3分别把映射表索引8和12送到选择器,选择器选出编号最低bank的查找结果,bank 0的查找结果10被选中。访问映射表的第10个单元,得到最终的转发信息(2.1.1.1,port3)。
bank内的前缀不存在重叠,bank内前缀查找为唯一匹配查找,这大大简化了查找算法的设计。大多数的查找算法都可用于bank内前缀查找,如二分查找算法,多分支Trie树,Hash查找,multiway查找等等。
图3的并行查找框架中,选择器必须在所有bank都完成查找后才可选出最终的查找结果,所以多个bank并行查找速度取决于查找速度最慢的bank。bank间前缀数目分配的不平衡会导致各个bank查找速度的不同。比如,对于二分查找算法,查找复杂度为log22N,bank内前缀数目N直接影响查找速度。而对于另一些查找算法(如Trie树,Hash表),它们的查找复杂度与前缀数目N无关,但N也会间接影响它们的查找速度。Tire树中,N增加会导致Trie树中结点增加,Trie树平均高度的增加,从而降低查找速度。Hash表中,N增加会导致Hash表中冲突增加,最终也会导致查找速度下降。
各个bank查找速度的不同不利于发挥并行查找的优势。尤其当各个bank的查找速度差别很大时,并行查找的优势很难发挥。为此我们设计了一种方法,来平衡bank间前缀数目,从而消除bank间查找速度的差异。我们的方法基于二分支Trie树中一类特殊的前缀结点——孤儿结点。
定义4孤儿结点 如果一个叶子结点,从它到根结点的路径中,不存在除它之外其他前缀结点,则此叶子结点称为孤儿结点。
从定义中可以看出,孤儿结点是一类特殊的前缀结点,它的结点高度为0,并且所有的祖先结点都不是前缀结点。图1中的叶子结点h,i,j都是孤儿结点,从它们到根结点的路径上不存在除自己外的其他前缀结点。
定义5孤儿集合 所有孤儿结点代表的前缀组成的集合,称为孤儿集合。孤儿集合用OrphanSet表示。孤儿结点的结点高度为0,孤儿集合也是高度集合HeightSet(0)的一部分。但由于孤儿集合的特殊性,我们把孤儿集合从HeightSet(0)中分离出来。后面提到HeightSet(0),如不做特殊说明,其中都不包括孤儿集合的前缀。
孤儿集合的引入,图1中的前缀可重新化分为下面几个集合。
OrphanSet={h、i、j}
HeightSet(0)={b、c、g、f}
HeightSet(1)={a、e}
HeightSet(2)={d}
定理4 孤儿结点代表的前缀与其他所有前缀非重叠。
定理4证明略。
由定理4可知,孤儿集合中的前缀与所有前缀都不重叠,我们可以把孤儿集合中的前缀加入到任何的bank内,都可以保证加入的前缀与bank内已有的任何一个前缀都不重叠。因此我们利用孤儿集合来平衡bank间前缀数目。下面是具体的前缀平衡方法:
  1.for(i:=0 to H)把HeightSet(i)的所有前缀加入到bank i;2.for(孤儿集合中每个前缀){j=包含最少前缀bank的编号;把前缀加入bank j;}
步骤1把高度集合的前缀加入到对应的bank内。H为最大集合高度,并行查找框架中H=4。步骤2利用孤儿集合平衡bank间的前缀数目。图4是前缀平衡方法的流程图。
我们用图1中的前缀说明方法的具体执行过程。图1包括10个前缀,最大结点高度H为2。下面是每个前缀的加入过程。
 1.b、c、g、f->bank 0;2.a、e->bank 1;3.d->bank 2;4.h->bank 2;5.i->bank 1;6.j->bank 2;
1,2,3步依次把HeightSet(0)、HeightSet(1)、HeightSet(2)中的前缀加入到对应编号的bank内。第4步,从孤儿集合取出前缀h,bank 2内前缀数目最少为1,将h加入bank 2。第5步,从孤儿集合取出前缀i,bank 1和bank 2内前缀数目最少都为2,任选其一将i加入(这里我们选择bank 1)。第6步,从孤儿集合取出最后一个前缀j,bank 2前缀数目最少为2,将j加入bank 2。最后,bank 0包含{b、c、g、f};bank 1包含{a、e、i};bank 2包含{d、h、j}。如果不进行平衡,bank 0包含{b、c、g、f、h、i、j};bank 1包含{a、e};bank 2包含{d}。可见,使用我们的平衡方法后,bank间前缀数目的差异变小了。
图3并行查找框架中共有5个bank,每个bank存储一个高度集合。为了进一步改善并行查找的性能,我们可以增加bank数目,使用多个bank存储一个高度集合。bank数目的增加使得每个bank内前缀数目减少,bank内查找速度提高,相应的整个框架的并行查找性能就会得到提高。
并行查找框架特点之一是bank编号越小存储的匹配前缀越长。为了保持这一特点,高度低的集合应存储在编号低的bank内,同一个高度集合应存储在编号连续的bank内。比如:增加图3的bank个数,HeightSet(0)用3个bank存储,HeightSet(1)用2个bank存储,其他高度集合各用1个bank存储,一共8个bank。相应地,HeightSet(0)应存储在bank 0,bank 1,bank 2;HeightSet(1)应存储在bank 3和bank 4。Height(2)到Height(4)依次应存储在bank 5到bank 7。
bank数目增加后,我们同样可以利用3部分的方法平衡多个bank间的前缀。
并行查找框架可以提高路由查找算法的查找速度。我们对二分查找算法在并行查找框架的查找速度进行了测试。测试平台为PC机,PC的CPU为PIII 933MHz,内存为256M DRAM。测试使用的路由表为5个实际的Internet路由表。
为了模拟并行查找,我们分别对各个bank分别进行查找,然后从中选出最慢的查找时间,做为并行查找的时间。查找的IP地址集合为随机生成的500个IP地址。对每个IP地址进行查找时,查找1000次,然后取平均值算出一次查找时间。下表中的数据为对500个IP地址查找所需的时间,时间单位为ms。
  路由表   Mae-east   Mae-west   Aads   Paix   Pacific Bell
  路由数目   22443   33953   30716   16880   42348
  binary search on intervals   8.231   8.562   8.395   8.162   9.454
  Parallel binary search(B=5)   7.321   7.341   7.330   7.261   7.921
  Parallel binary search(B=10)   6.790   6.800   6.795   6.279   7.331
  Parallel binary search(B=500)   3.710   4.220   3.766   3.705   4.456
对于所有前缀的查找,由于是最长匹配查找,不能直接应用二分查找算法,我们采用中提出的binary search on intervals算法。parallel binary search是用并行查找框架实现的二分查找算法,B表示bank的个数。从表数据可以看出,并行路由查找框架可以明显改善查找算法的性能。并且bank数目越大,并行查找速度越快。当B=500,parrallel binary search与binary searchon intervals算法相比,查找速度提高100%以上。
图5为并行查找系统的硬件结构框架图。下面对此图做一说明:
1.分发器用FPGA来实现,分布器完成IP地址的复制和分发;
2.bank单元用FPGA+SRAM来实现。FPGA完成bank单元查找过程中的所有逻辑运算,SRAM存储路由前缀和映射表索引信息;
3.选择器也用FPGA来实现,它选择来自最小编号bank中的映射表索引做为最终的查找结果;
4.映射表存储着下一跳的信息,它用SRAM来实现;
5.每个bank的FPGA部分,顶部向下的箭头表示初始化时前缀加入的通路;
6.图中为了更清晰的描述结构框架,用了多个FPGA电路,实际实现过程中,图中所有的FPGA电路,都可集成至一块FPGA中,作为FPGA电路的一个子模块;
7.图中FPGA可采用Altera公司Stratix系列芯片,比如:EP1S80;SRAM可采用Xinlix公司ZBT/NoBL系列芯片。
本发明具有下面几个特征:1、采用新颖的前缀划分方法,将最长前缀匹配查找转化为唯一前缀匹配查找;2、采用通用的并行查找框架,适合大多数查找算法;4、采用独特的方法,平衡前缀集合间前缀数目的差异;4、对IPv6具有很好的扩展性。

Claims (4)

1.消除最长前缀匹配查找的并行查找方法,包括路由器从网络中接收分组数据进行复制并按每个分组头部的目的IP地址在路由表中进行路由查找并转发的步骤,其特征在于:首先,它基于二分支数查找结构,按照当前结点的结点高度相等的原则对所有路由前缀进行前缀划分并组成集合,所述的当前结点的结点高度意指选择一条包含最多前缀结点的路径,它所包含的排除当前结点后的前缀结点数目;接着,对由上述步骤分成的若干个互不重叠的前缀集合用通用性很强的查找框架并行地进行下一跳出端口转发信息的查找,所述的查找框架依次含有:接收并负责把目的IP地址分发至多个查找单元bank的分发器;bank单元集合,它负责在内部前缀集合中进行唯一匹配查找,并据此发出自己所保存的转发信息在下一跳nexthop映射表中的单元索引;选择器,它从多个bank的多个匹配结果中选择最小高度集合的匹配结果作为查找结果,所选的高度最小集合,它的bank编号低,所存储的匹配前缀长,所选的匹配结果即bank单元所保存的转发信息在nexthop映射表中的单元索引;nexthop映射表,它根据输入的与最长匹配前缀相对应的映射表单元索引,输出对应单元存储的下一跳出端口的转发信息。
2.根据权利要求1所述的消除最长前缀匹配查找的并行查找方法其特征在于:它在并行查找前,对bank单元间的前缀数目用集合高度为0的路由前缀中划分出的孤儿结点来进行前缀平衡,所述的孤儿结点意指那些从它到根结点的路径中,不存在除它之外其它前缀结点的叶子结点,平衡的方法也把这些孤儿结点按照bank间前缀数目分配均衡的原则分别加到各个bank单元中。
3.根据权利要求1或2所述的消除最长前缀匹配查找的并行查找方法其特征在于,它依次含有以下步骤:
(1)初始化所有的前缀集合:首先,按结点高度相等的原则对所有的路由前缀进行集合划分;其次,从结点高度为0的前缀集合中划分出孤儿结点集合,按各bank单元间前缀数目均衡的原则进行各bank单元内前缀数目的平衡;从而得到各bank单元内无重叠的前缀且前缀数目也均衡的前缀数目;
(2)把步骤(1)得到的各bank单元的前缀,按bank单元编号越低、集合的结点高度越低、前缀越长的规则依次根据编号大小输入到各bank单元内;还要输入与匹配前缀对应的nexthop映射表单元索引;
(3)分发器把它从网络中收到的分组数据的目的IP地址分发给所有的bank单元;
(4)所有的bank单元并行执行查找,把查找到的与匹配前缀对应的nexthop映射表单元索引送到选择器;
(5)选择器从多个映射表单元索引中,选择来自最低编号bank单元的查找结果;
(6)根据选择器选出的映射表单元索引,访问对应的映射表单元,得到下一跳出端口转发信息。
4.根据权利要求1所述的消除最长前缀匹配查找的并行查找方法而提出的查找系统具有特征在于:它由执行分发操作的分发器,执行并行查找操作的由bank单元并联而成的bank集合,选择器以及映射表存储器依次串联而成;所述的分发器由现场可编程门阵列FPGA构成,所述的bank集合由依次由FPGA和同步随机存储器SRAM串联构成的bank单元并联而成,所述的选择器由FPGA构成,所述的映射表存储器由SRAM构成。
CN 03134693 2003-09-26 2003-09-26 消除最长前缀匹配查找的并行路由查找方法及其系统 Expired - Fee Related CN1279716C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 03134693 CN1279716C (zh) 2003-09-26 2003-09-26 消除最长前缀匹配查找的并行路由查找方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 03134693 CN1279716C (zh) 2003-09-26 2003-09-26 消除最长前缀匹配查找的并行路由查找方法及其系统

Publications (2)

Publication Number Publication Date
CN1529454A CN1529454A (zh) 2004-09-15
CN1279716C true CN1279716C (zh) 2006-10-11

Family

ID=34286173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 03134693 Expired - Fee Related CN1279716C (zh) 2003-09-26 2003-09-26 消除最长前缀匹配查找的并行路由查找方法及其系统

Country Status (1)

Country Link
CN (1) CN1279716C (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100456840C (zh) * 2003-11-25 2009-01-28 华为技术有限公司 将lpm算法拆分到两个cpu的方法
CN100442766C (zh) 2005-07-08 2008-12-10 华为技术有限公司 数据通信设备转发业务的实现方法
CN100461698C (zh) * 2006-05-31 2009-02-11 华为技术有限公司 一种转发路由表存放的方法及装置
CN101588291B (zh) * 2008-05-22 2013-01-09 原创信通电信技术(北京)有限公司 在ip电信网系统中确定分组传输路由的方法
CN102316004B (zh) * 2010-06-29 2015-04-29 上海贝尔股份有限公司 在通信网络中用于确定节点间路由信息的方法及装置
CN101895479B (zh) * 2010-08-17 2013-03-27 上海交通大学 提高路由查找速度的系统
CN106549872B (zh) * 2016-10-31 2019-05-24 西安空间无线电技术研究所 最长前缀匹配与精确匹配结合的星载快速路由查找系统
CN107220024B (zh) * 2017-05-19 2021-08-31 郑州云海信息技术有限公司 一种基于fpga的数据处理方法、装置及系统
US10541711B1 (en) * 2019-03-29 2020-01-21 Mitsubishi Electric Research Laboratories, Inc. Short block length distribution matching algorithm
CN111131015B (zh) * 2019-12-27 2021-09-03 芯启源(南京)半导体科技有限公司 一种基于PC-Trie动态更新路由的方法
CN112804153A (zh) * 2020-12-30 2021-05-14 中国科学院计算机网络信息中心 一种面向gpu加速ip查找的更新方法及系统

Also Published As

Publication number Publication date
CN1529454A (zh) 2004-09-15

Similar Documents

Publication Publication Date Title
Nilsson et al. IP-address lookup using LC-tries
Le et al. Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning
Tzeng et al. On fast address-lookup algorithms
CN100413285C (zh) 基于网络处理器的高速多维报文分类算法的设计和实现
US20090150603A1 (en) Low power ternary content-addressable memory (tcams) for very large forwarding tables
CN1216473C (zh) 支持多个下一跳的三态内容可寻址存储器查找方法及系统
CN1279716C (zh) 消除最长前缀匹配查找的并行路由查找方法及其系统
CN1774900A (zh) 有界索引可扩展的基于散列的IPv6地址查找方法
CN1859316A (zh) 数据包传送装置
CN1784678A (zh) 用于高效地搜索被分成具有界大小的、有界数量的子数据库的转发数据库的系统和方法
CN1270728A (zh) 快速路由查找的方法和系统
Pao et al. Efficient hardware architecture for fast IP address lookup
Le et al. Memory-efficient and scalable virtual routers using FPGA
Sangireddy et al. Scalable, memory efficient, high-speed IP lookup algorithms
Wuu et al. A longest prefix first search tree for IP lookup
Le et al. Scalable high throughput and power efficient ip-lookup on fpga
CN1787477A (zh) IPv6路由表的查找方法
CN103457855B (zh) 无类域间路由表建立、以及报文转发的方法和装置
Veeramani et al. Hybrid trie based partitioning of TCAM based openflow switches
Erdem et al. Hierarchical hybrid search structure for high performance packet classification
Veeramani et al. Efficient IP lookup using hybrid trie-based partitioning of TCAM-based open flow switches
Le et al. Memory-efficient ipv4/v6 lookup on fpgas using distance-bounded path compression
KR100686732B1 (ko) 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
Mahini et al. MLET: a power efficient approach for TCAM based, IP lookup engines in Internet routers
Erdem et al. Value-coded trie structure for high-performance IPv6 lookup

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20061011

Termination date: 20091026