一种多级索引路由查找方法及装置的制作方法

文档序号:6610057阅读:226来源:国知局
专利名称:一种多级索引路由查找方法及装置的制作方法
技术领域
本发明涉及数据通讯领域中用于路由器、三层交换机及IP构建的通讯传输设备的路由查找方法,特别涉及一种通讯传输设备节省内存开销的多级索引路由查找方法及装置。
背景技术
IP网络传输中或者以IP构建的通讯分组网中,路由查找是极其重要的一个部分。现有技术公开了一种多分枝tire树查找算法(如P.Gupta,S.Lin,andN.McKeown,“Routing lookups in hardware at memory access speeds”,inProceedings of INFOCOM,Mar.1998),是一种快速高效的路由查找算法,它是通过IP地址的某一段比特位依次查找一个tire树结构的索引表,找到对应的路由。该算法虽然查找效率极高,但内存开销较大。现有技术公开的一种改进算法(如Nen-Fu Huang,Shi-Ming Zhao,“A novel IP-routing lookup schemeand hardware architecture for multigigabit switching routers”.IEEE Journal onSelected Areas in Communications June 19991093-1104)是加入了索引压缩机制,称为二层多分枝压缩tire树算法。压缩后的索引一定程度上减少了内存开销,但是其内存开销仍很大,同时由于索引项数与添加的路由掩码长度等特征有关,使得不能预知索引表的内存大小,很难适用于内存池集的内存管理方式。

发明内容
本发明所要解决的技术问题在于,提供一种通讯传输设备多级索引路由查找方法及装置,适用于内存配置较小但需快速转发的网络设备,其在保持其高效查找的前提下,降低索引表的内存开销。
为达到上述目的,本发明提供的多级索引路由查找方法,用于IP网络传输设备中路由的查找,其特征在于,包括根据固定容量的路由表,选取索引级数及索引步长,以确定最小的索引表,并通过路由表中目的地址获取在索引块偏移的步骤;通过标志位判断索引值是路由序号还是次级索引的步骤,若判断是路由序号则输出路由,否则在下一级索引中继续查找;其中,所述多级索引间采用索引复用的形式,与所述索引块中的索引对应的标志位以标志位块的形式连续存储,且所述索引块与所述标志位块分别存储。
上述路由查找方法,其特征在于,所述索引表的索引项最大个数通过下式计算获取L=2x1+2x2M+...+2xi+...+2xnM,]]>其中,n为索引级数,M为路由表容量,x1,x2…xi…xn依次为第1、2…i…n索引级的索引步长,且x1+x2+…+xi…+xn=IP地址长度,xi<32,i<n<32。
上述路由查找方法,其特征在于,所述索引块是由索引组成的数组,所述索引级数中,除第一级索引外,每级索引都存在至少一个所述索引块,所述每个索引块在本级索引中都具有唯一的编号。
上述路由查找方法,其特征在于,所述索引级数中,除第一级索引之外的各级索引步长相等,所述每级索引的索引块个数小于所述路由表的项数,如果所述索引步长为x,则该级索引的所述索引块有2x项索引。
上述路由查找方法,其特征在于,所述索引级数中,除最后一级索引外,每个索引块都有一个索引标志位块与之对应,其中所述标志位块中的一个比特位对应所述索引块中的一个索引项。
上述路由查找方法,其特征在于,每个所述的索引项占16比特,所述索引项用于记录路由表序号或者次级索引块的编号,由与所述索引块相对应的标志位块中的一个比特位来区分。
上述路由查找方法,其特征在于,所述标志位块中的标志位置位表示所述索引项中存储着路由表序号,否则表示存储着次级索引表的编号。
上述路由查找方法,其特征在于,所述索引复用用1比特表示。
上述路由查找方法,其特征在于,所述通过目的地址获取在索引块偏移的步骤进一步包括根据第一级索引的步长L1取出所述目的地址的前L1个比特作为下标的步骤;
将所述下标作为偏移在所述索引块中获取索引值及其对应的标志位的步骤。
上述路由查找方法,其特征在于,所述通过标志位判断索引值是路由序号还是次级索引的步骤进一步包括判断所述标志位是否为零的步骤,若为零,则所述索引值为路由序号,否则,所述索引值为次级索引,在下一级索引中取出索引块循环查找直至找到路由序号。
进一步的,本发明还提供了一种利用上述路由查找方法的多级索引路由查找装置,用于IP网络传输设备中,该装置包括路由表,用于根据固定容量的路由表,选取索引级数及索引步长,以确定最小的索引表,并通过该路由表中目的地址获取在索引块偏移;多级索引模块,包括标志位块和索引块,用于通过标志位判断索引值是路由序号还是次级索引的步骤,若判断是路由序号则输出路由,否则在下一级索引中继续查找;其中,所述多级索引间采用索引复用的形式,与所述索引块中的索引对应的标志位以标志位块的形式连续存储,且所述索引块与所述标志位块分别存储。
与现有技术相比,因为采用了灵活的索引结构,同时采用索引复用的形式和标志位连续存储的方法,极大地减小了索引表的内存消耗的技术,新的索引算法既保留了多分枝tires树索引表的查找效率,又极大地节省了索引表的内存消耗,对于等量的路由表,新的索引算法在最差情形下的内存消耗是原有算法的50%或者更少。


图1是索引块与标志位块的对应关系图;图2是本发明多级索引路由查找流程图;图3是本发明实施例多级索引路由查找示意图;具体实施方式
下面结合附图和实施例对本发明进行详细描述,以更进一步了解本发明之目的、方案及功效,但并非作为对本发明所附权利要求的限制。
本发明的多级索引路由查找方法是一种通过索引表级联的形式映射路由的多层多分枝tire树,由多级索引构成,同一级索引的步长相等,但不同级之间的索引步长不要求相等。多级索引表的表项,称为索引项,由索引项组成的数组称为索引块,tire树的每个节点是一个索引块。
在本发明中,首先给出了索引表最小内存消耗的计算公式,使得路由表设计者可以根据路由表容量灵活设置索引级数和索引表大小;其次采用了索引复用的形式和标志位连续存储的方法,极大地减小了索引表的内存消耗。具体实现如下索引级数和索引步长可以根据路由表容量灵活设定,只需保证各级索引的步长总和为IP地址长度(如IPv4路由索引表的总步长为32)。所谓步长,是指索引所能表征的IP地址的位数。如果索引级数为n,索引步长为x,则该级索引的索引块有2的x次幂项索引,步长依次为x1,x2,…,xn,路由表容量为M,则所需的索引项最大个数为L=2x1+2x2M+...+2xi+...+2xnM]]>其中,x1+x2+…xi…+xn=32(xi<32,i<n<32)在路由表容量一定的前提下,可以通过选取适当的索引级数及索引步长,计算最小的索引表。不要求各级索引步长相等,但建议除第一级索引之外的各级索引步长相等,这样可以使数据结构简单。建议步长不小于3。
在多级索引中,除第一级索引外,每级索引都有可能存在多个索引块。一个索引块在本级索引中都具有唯一的编号。每一级的索引块个数不可能超过路由表的项数。除最后一级索引之外,每个索引块都有一个索引标志位块与之对应。标志位块中的一个bit位对应索引块中的一个索引,用来区分该索引所表征的含义。也就是说,索引块中所有索引项所对应的标志位被存储在一个连续的内存空间内,称之为标志位块。每个索引项是一个16比特的序号,用来记录路由表序号或者次级索引块的编号,由于索引项的序号是复用的,所以需要由与索引块相对应的标志位块中的一个bit标志位来区分索引项的含义。标志位置位表示索引项中存储着路由表序号,否则表示存储着次级索引表的编号。本发明中提出的算法最大可以支持65536条路由。
如果将标志位与索引存放到一起,由于内存的按字节存储以及字节对齐的问题,会导致标志位实际上将占用2字节而非1bit,所以引入了标志位块的概念,将各标志位连续存储,即标志位块与索引块分别存储。图1是索引块与标志位块的对应关系图,参考图1,标志位块100的每一个比特位与索引块200的每一项在逻辑上一一对应,用以区分索引项表征的内容。图1中索引块200有8项索引,对应的标志位块100便有8bits,即一个字节。每项索引与一个标志bit位对应,如果该bit为0,则表示索引含义为路由表序号(路由表为一数组,每条路由在路由表中有唯一编号,称为路由表序号);反之,表示次级索引块在次级索引中的编号。如果索引块200的项数超过8,那么对应的标志位块100将不只一个字节。第m项索引对应的标志位在标志位块100中的第m/8个字节中。由于可以采用移位运算,所以该除法运算的代价很小。
其中,索引项与标志位的对应关系可以预先存放在一个数组中,这样当要取得索引项所对应的标志位时,只需将索引项下标作为数组下标,将取出的映射关系与标志位做与运算即可。
本发明的路由查找过程与原有的索引算法类似,主要是通过待查地址的一段bits计算在索引块中的偏移,通过标志位判断是否需要在下一级索引表中查找,如果不需要则说明索引就是路由序号,如果需要则根据索引找出下一级索引块,在下一级索引中继续查找,如此反复,直到找到路由为止,参考图2,详细说明本发明的路由查找流程,其包括步骤S201,假设第一级索引的步长为L1,取出目的地址的前L1个比特作为下标。
步骤S202,将下标作为偏移,在索引块中获取索引值,在标志位块中获取与索引值对应的标志位。
步骤S203,判断标志位是否位零?如为零执行步骤S204,否则执行步骤S205。
步骤S204,标志位为零,则索引值为路由序号,在路由表中取出路由后输出。
步骤S205,标志位不位零,则索引值位次级索引编号,在次级索引中取出索引块。
步骤S206,假设本级索引的步长为Lx,取出目的地址的下Lx个比特作为下标后循环执行步骤S202直至找到路由为止。
图3是本发明应用的实施例,如图3所示,图中显示了一个三级索引表结构的路由查找示意,步长依次为16、8、8;路由表中存在一条前缀地址为0x01000000,掩码长度为20的路由。因为路由掩码长度大于第一级索引的步长16而小于前两级索引步长的总和24,所以表达该路由需要两级索引,因此图中没有画出第三级索引。如果要查找地址0x01020304所对应的路由,主要流程如下(1)因为第一级索引的步长为16,所以取待查地址0x01020304所对应的前16bits,即将0x0102作为第一级索引块的偏移量,找到索引及其对应的标志位。
(2)标志位为1,索引项为26。因为标志位为1,所以索引26代表次级索引表的编号,取出第二级索引中编号26的索引表。
(3)因为第二级索引的步长为8,所以截取待查地址0x01020304的次8bits即0x03,做为第二级索引块的偏移,找到对应的标志位和索引项。
(4)标志位为0,索引项为29。因为对应的标志位为0,所以该索引项存储的是路由表序号,即IP地址0x01020304对应的路由存放在路由表的第29项,这样便最终找到路由需要查找的路由。
本发明还提供了一种应用上述路由查找方法的路由查找装置,用于IP网络传输设备中,如图3所示,该装置包括路由表300,用于根据固定容量的路由表,选取索引级数及索引步长,以确定最小的索引表,并通过该路由表中目的地址获取在索引块偏移;多级索引模块301,包括标志位块100和索引块200,用于通过标志位判断索引值是路由序号还是次级索引的步骤,若判断是路由序号则输出路由,否则在下一级索引中继续查找;其中,所述多级索引间采用索引复用的形式,与所述索引块中的索引对应的标志位以标志位块的形式连续存储,且所述索引块与所述标志位块分别存储。
虽然本发明已以一较佳实施例揭露如上,然其并非用以限定本发明,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种多级索引路由查找方法,用于IP网络传输设备中路由的查找,其特征在于包括根据固定容量的路由表,选取索引级数及索引步长,以确定最小的索引表,并通过路由表中目的地址获取在索引块偏移的步骤;通过标志位判断索引值是路由序号还是次级索引的步骤,若判断是路由序号则输出路由,否则在下一级索引中继续查找;其中,所述多级索引间采用索引复用的形式,与所述索引块中的索引对应的标志位以标志位块的形式连续存储,且所述索引块与所述标志位块分别存储。
2.根据权利要求1所述的路由查找方法,其特征在于,所述索引表的索引项最大个数通过下式计算获取L=2x1+2x2M+...+2xi+...+2xnM,]]>其中,n为索引级数,M为路由表容量,x1,x2…xi…xn依次为第1、2…i…n索引级的索引步长,且x1+x2+…+xi…+xn=IP地址长度,xi<32,i<n<32。
3.根据权利要求1所述的路由查找方法,其特征在于,所述索引块是由索引组成的数组,所述索引级数中,除第一级索引外,每级索引都存在至少一个所述索引块,所述每个索引块在本级索引中都具有唯一的编号。
4.根据权利要求3所述的路由查找方法,其特征在于,所述索引级数中,除第一级索引之外的各级索引步长相等,所述每级索引的索引块个数小于所述路由表的项数,如果所述索引步长为x,则该级索引的所述索引块有2x项索引。
5.根据权利要求4所述的路由查找方法,其特征在于,所述索引级数中,除最后一级索引外,每个索引块都有一个索引标志位块与之对应,其中所述标志位块中的一个比特位对应所述索引块中的一个索引项。
6.根据权利要求5所述的路由查找方法,其特征在于,每个所述的索引项占16比特,所述索引项用于记录路由表序号或者次级索引块的编号,由与所述索引块相对应的标志位块中的一个比特位来区分。
7.根据权利要求6所述的路由查找方法,其特征在于,所述标志位块中的标志位置位表示所述索引项中存储着路由表序号,否则表示存储着次级索引表的编号。
8.根据权利要求1所述的路由查找方法,其特征在于,所述索引复用用1比特表示。
9.根据权利要求1所述的路由查找方法,其特征在于,所述通过目的地址获取在索引块偏移的步骤进一步包括根据第一级索引的步长L1取出所述目的地址的前L1个比特作为下标的步骤;将所述下标作为偏移在所述索引块中获取索引值及其对应的标志位的步骤。
10.根据权利要求1所述的路由查找方法,其特征在于,所述通过标志位判断索引值是路由序号还是次级索引的步骤进一步包括判断所述标志位是否为零的步骤,若为零,则所述索引值为路由序号,否则,所述索引值为次级索引,在下一级索引中取出索引块循环查找直至找到路由序号。
11.一种利用权利要求1-10中任意一项所述方法的多级索引路由查找装置,用于IP网络传输设备中,该装置包括路由表,用于根据固定容量的路由表,选取索引级数及索引步长,以确定最小的索引表,并通过该路由表中目的地址获取在索引块偏移;多级索引模块,包括标志位块和索引块,用于通过标志位判断索引值是路由序号还是次级索引的步骤,若判断是路由序号则输出路由,否则在下一级索引中继续查找;其中,所述多级索引间采用索引复用的形式,与所述索引块中的索引对应的标志位以标志位块的形式连续存储,且所述索引块与所述标志位块分别存储。
全文摘要
本发明公开了一种多级索引路由查找方法,用于IP网络传输设备中路由的查找,该方法包括根据固定容量的路由表,选取索引级数及索引步长,以确定最小的索引表,并通过路由表中目的地址获取在索引块偏移的步骤;通过标志位判断索引值是路由序号还是次级索引的步骤,若判断是路由序号则输出路由,否则在下一级索引中继续查找;其中,所述多级索引间采用索引复用的形式,与所述索引块中的索引对应的标志位以标志位块的形式连续存储,且所述索引块与所述标志位块分别存储。本发明的路由查找方法因为内存开销较小,尤其适用于内存配置较小,但需要快速转发的网络设备。
文档编号G06F17/30GK101094179SQ200710119130
公开日2007年12月26日 申请日期2007年7月16日 优先权日2007年7月16日
发明者闫新成 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1