一种使用分段压缩表实现最长前缀地址路由查找的方法

文档序号:6408428阅读:226来源:国知局
专利名称:一种使用分段压缩表实现最长前缀地址路由查找的方法
技术领域
本发明涉及数据通信技术领域。特别是一种使用分段、压缩技术实现IPv4最长前缀地址路由查找的方法。该方法可以使用于IPv4因特网中路由器、三层交换机、接入服务器等需要进行IPv4地址路由查找的设备。
背景技术
路由查找是路由器、三层交换机等设备的基本功能之一。IP地址由<网络标识,主机标识>组成,IP分组的转发按照网络标识进行。早期,IP地址根据网络标识长度固定在8、16、24位,分别对应于A、B、C类地址。无类域间路由技术(CIDR)允许任意长度地址聚合,使得IP地址的网络标识长度不再仅限于8位、16位和24位三种,而是可以为8~32的任何值。路由表中路由信息由<地址前缀/前缀长度,下一跳地址(索引)>给出。进行IPv4地址查找时,原有的完全匹配被最长前缀匹配(LPM)所替代,即需要在路由前缀数据库中查找与给定IP分组目的地址有着最长匹配前缀的表项。
由于最长前缀匹配查找较为复杂,使得处理器负担大大加重;加上网络对路由器转发速度要求的不断提高,路由查找成为影响路由器性能的主要瓶颈之一。
评价一种IP地址查找方法的性能时,必须综合考虑该本方法所能达到的查找速度(一般以每秒所能进行的分组查找数目(pps)衡量)、存储一定路由表项需要的存储器容量、查找表的更新开销、复杂度、以及实现方法的难易程度、功耗、面积等各方面,其中,查找方法的查找速度、更新开销和存储器容量更为重要。
如何提高IP地址查找方法的查找速度、降低更新开销和存储器容量,达到各方面性能的均衡成为了一些业内人士的研究方向,他们提出了众多不同查找方法。

发明内容
本发明的目的是提供一种实现IPv4最长前缀地址路由查找的方法。该方法拥有高速的IPv4最长前缀地址路由查找能力与转发表更新能力,同时需要较少的存储空间。
本发明的目的是这样实现的一种使用分段压缩表实现最长前缀地址路由查找的方法,其特征在于选定压缩偏移表路由基准索引字段位宽和压缩偏移表指针字段位宽,在存储器中通过建立两级表格64K段表(Segment Table)和压缩偏移表(Compressed Offset Table),通过将压缩偏移表中原偏移表路由索引值压缩成该索引值与本段基准路由索引差值的方法来存储路由索引信息。查找时,先使用欲查找的目标IPv4地址的高16位(IPH16)作为索引值,在64K段表中定位表项判断该表项中压缩偏移表指针值(pOffetTable)是否无效(全1值)。若指针值无效,表示此表项中段路由索引(NHseg)为该目标IPv4地址所对应下一跳路由索引值(NHI);若否,则根据此表项中压缩偏移表指针值得到该IPv4地址对应压缩偏移表的入口地址,由段路由索引字段(NHseg)值得到当前下一跳路由索引值(NHIcurrent)。使用公式1计算出该压缩偏移表表项宽度EntryWidth,使用该IPv4地址的低16位(IPL16)和压缩偏移表表项宽度通过公式2计算出此IPv4地址在压缩偏移表中的字偏移量(Offsetword)、通过公式3计算出此IPv4地址在该字中的比特偏移量(Offsetbit),计算出压缩偏移表路由基准值(BaseIndex),访问此IPv4地址对应压缩偏移表中的字偏移量字,得到比特宽度为EntryWidth的下一跳路由索引偏移量(OffsetNH)。判断下一跳路由索引偏移量值是否为全1值(2EntryWidth-1)?若是,表示此IPv4地址对应下一跳路由索引(NHI)即等于当前一跳索引值(NHIcurrent);若否,通过公式4计算得到该IPv4地址的下一跳路由索引值(NHI)。
公式1EntryWidth=2widthIndex公式2Offsetword=Int((EntryWidth×IPL16)/Widthword)公式3Offsetbit=((EntryWidth×IPL16))-(Offsetword×Widthword)公式4NHI=BaseValue+OffsetNH
其中Widthword为压缩偏移表所在存储器的位宽Int表示取整BaseValue为根据路由基准索引值(BaseIndex)得到的路由索引基准值。
上文所述的64K段表中,每条表项由段路由索引(NHseg)、压缩偏移表指针(pOffetTable)、路由基准索引(BaseIndex)和压缩表表项宽度索引(WidthIndex)四个字段组成。见图1说明。
段路由索引字段位宽为8比特,存储在表项的最高有效位置,初始化为0xFF,表示无有效下一跳路由。
压缩偏移表表项位宽索引字段为2比特,存储于表项中与压缩偏移表指针相邻的高有效位,初始化为全1,即0x3。根据压缩偏移表表项位宽索引,可以由公式1计算出压缩偏移表中每条表项所占比特位数。
压缩偏移表指针字段存储在表项的最低有效位。压缩偏移表指针字段位宽可以由具体实施方案确定,取值16比特或14比特,初始化为全1值,即分别初始化为0xFFFF(字段位宽为16比特)、0x3FFF(字段位宽为14比特),表示无效,不需要进行进一步查找;查找时,若指针值不等于初始全1值(字段位宽为14比特时为0x3FFF,字段位宽为16比特时为0xFFFF),表示需进行进一步查找,且此指针值为目标IPv4地址对应的压缩偏移表起始地址。
路由基准索引字段的位宽根据压缩偏移表指针字段位宽的不同取相应的长度,存储在表项中与段路由索引相邻的低高有效位置。当压缩偏移表指针字段位宽分别为14、16比特时,路由索引基准字段位宽分别为6比特、8比特。
上文所述的压缩偏移表中,每条表项由一个位宽为EntryWidth个比特的路由索引差值字段构成,表示路由索引值和段路由索引的差值,见图2说明。
当路由基准索引(BaseIndex)字段位宽为8比特时,路由基准值(BaseValue)等于路由基准索引字段值;当路由基准索引字段位宽为6比特时,路由基准值由以下公式5给出
公式5BaseValue=4×BaseIndex所述的64K段表每一条表项都是一个32比特的长字,由段路由索引字段(31:24比特)、压缩偏移表路由索引基准值字段(23:18比特或23:16比特)、压缩偏移表表项宽度索引字段(17:16比特或15:14比特)和压缩偏移表指针字段(15:0比特或13:0比特)共四个字段构成。
所述的64K段表,表项的最高8比特(31:24)段路由索引是指向路由表的索引,初始化为0xFF表示默认无有效下一跳路由;若段路由索引等于路由索引初始值时,表示无有效下一跳路由;若段路由索引不等于路由索引初始值,其数值为IPv4地址对应下一跳路由的索引值。
所述的64K段表,表项的压缩偏移表路由基准索引值(23:18比特或23:16比特)是压缩偏移表路由索引值的基准索引值,初始化为0x3F(字段位宽为6比特时)或0xFF(字段位宽为8比特时),仅当同表项中压缩偏移表指针不为压缩偏移表指针初始值时有意义;字段位宽为6比特时,压缩偏移表路由索引基准值等于4倍的压缩偏移表路由基准索引值;字段位宽为8比特时,压缩偏移表路由索引基准值等于压缩偏移表路由基准索引值。
所述的64K段表,表项的压缩偏移表表项宽度索引(17:16比特或15:14比特)是指明压缩偏移表表项宽度的索引值,初始化为压缩偏移表表项宽度索引初始值0x3,仅当同表项中压缩偏移表指针不为压缩偏移表指针初始值时有意义。
所述的64K段表,表项的压缩偏移表指针(15:0比特或13:0比特)是指向本表项所对应压缩偏移表起始地址的指针,初始化为0xFFFF(字段位宽为16比特时)或0x3FFF(字段宽度为14比特时),若压缩偏移表指针值等于压缩偏移表指针初始值,表示本表项不存在对应压缩偏移表,不需要进行进一步查找;若压缩偏移表指针值不等于压缩偏移表指针初始值,表示本表项存在对应压缩偏移表,需要进行进一步路由查找,且压缩偏移表指针的值为本表项对应的压缩偏移表的起始地址。
压缩偏移表路由基准值表示压缩偏移表的下一跳路由基准值,压缩偏移表路由基准值等于4倍的压缩偏移表路由基准索引值(64K段表中压缩偏移表路由基准索引字段位宽为6比特时),或压缩偏移表路由基准值等于压缩偏移表路由基准索引值(64K段表中压缩偏移表路由基准索引值字段位宽为8比特时)。
所述的压缩偏移表每一条表项由路由索引偏移字段构成,表项位宽等于2的压缩偏移表表项宽度索引值次幂,表示表项对应的下一跳路由索引值与压缩偏移表路由基准值的差值,初始化为全1值,若压缩偏移表表项值等于压缩偏移表表项初始值,表示下一跳路由索引值等于此压缩偏移表所属64K段表表项中的段路由索引值;若压缩偏移表表项的值不等于压缩偏移表表项初始值,表示下一跳路由索引值等于表项值与压缩偏移表路由基准值之和。


图1是本发明的64K段表表项构成方式一示意图。
图2是本发明的64K段表表项构成方式二示意图。
图3是本发明的压缩偏移表表项结构示意图。
图4是本发明的实施本方法的操作步骤流程图。
图5是本发明的硬件实施系统结构图。
该方法的实现分为以下步骤如图4所示。
(1)选定具体实施方案64K段表表项中压缩偏移表指针和路由基准索引字段位宽和压缩偏移表指针字段位宽。
(2)首先对原始路由信息表进行扩展、排序和分组将原始路由记录中前缀长度小于16比特的路由信息均扩展成前缀长度为16的记录;将前缀长度大于16比特且小于32比特的路由条目均扩展成长度为32比特的路由前缀,按照前缀的高16比特分组,组内按照路由前缀的长度从小到大排放;路由信息扩展指将原始路由信息中的IP地址前缀从原前缀扩展成指定长度的一组为原地址前缀所包含的一组地址前缀,但扩展后的路由信息中前缀长度的有效值和下一跳索引值不变。例如,将路由项<8.0.0.0/8,25>(前缀/前缀长度,下一跳地址)扩展到16比特后可得到的路由项组为<8.0.0.0/8,25>、<8.1.0.0/8,25>、<8.2.0.0/8,25>…<8.254.0.0/8,25>、<8.255.0.0/8,25>。
按照目标IPv4地址的高16比特分组,组内按照路由前缀的长度从小到大排放。
决定实现方案中压缩偏移表指针(pOffetTable)和路由基准索引(BaseIndex)两个字段的比特宽度。
(3)64K段表的初始化操化,构建64K段表将每组路由信息中前缀长度小于等于16比特的信息项按照前缀长度由小到大的顺序依次填入64K段表相应表项,构造64K段表。表中每条表项由段路由索引(NHseg)、压缩偏移表指针(pOffetTable)、路由基准索引(BaseIndex)和压缩表表项宽度索引(WidthIndex)四个字段组成,其中路由基准索引字段、压缩偏移表指针字段和压缩表表项宽度索引字段和段路由索引字段填入初始值(全1)。
64K段表拥有64K条表项,占用的存储空间为64K×Widthword比特(4)压缩偏移表的初始化操作,构建64K段表中各表项对应的压缩偏移表统计出每组路由信息中前缀长度大于16比特的信息所对应下一跳路由索引值中最小值NHmin和最大值NHmax,取其最小值为下一跳路由索引值(BaseValue)。若1中选定的路由基准索引字段为6,则根据公式6计算出路由准索引值;若1中选定的路由基准索引字段位宽等比8比特,则选取路由基准索引值等于路由基准值。公式6BaseIndex=Int(BaseValue/4)选取压缩偏移表表项宽度索引值WidthIndex使其同时满足以下条件WidthIndex=log Entry Width①EntryWidth={min(i)|BaseValue+2i-1>NHmax,i∈N}②申请尺寸为 EntryWidth×64K比特的存储器空间,将其首地址填入64K段表中压缩偏移表指针字段。将路由基值索引BaseIndex和压缩偏移表表项宽度索引值WidthIndex填入64K段表中各自对应字段。
使用全1初始化压缩偏移表。分别对每组路由中前缀长度大于16的路由信息条目计算路由信息中下一跳路由索引值与路由基准值间的差值,依前缀长度从小到大的顺序以位宽EntryWidth填入压缩偏移表中对应比特范围。
(5)取目标IPv4地址的高16位作为索引值,在64K段表中定位表项判断该表项中压缩偏移表指针值(pOffetTable)是否无效(全1值)。
若压缩偏移表指针无效,转入6;若压缩偏移表指针值有效,转入7。
(6)判断表项中段路由索引字段值是否无效(0xFF)?若段路由索引(NHseg)值为0xFF(全1),则该目标IPv4地址无对应有效下一跳路由;若否,则表项中路由索引值即为该目标IPv4地址所对应下一跳路由索引值(NHI)。查找结束(7)根据此表项中压缩偏移表指针值得到该IPv4地址对应压缩偏移表的入口地址、路由基准索引值(BaseIndex)和压缩表表项宽度索引值(WidthIndex),令当前下一跳路由索引值(NHIcurrent)等于段路由索引(NHseg)。使用公式1计算出该压缩偏移表表项宽度EntryWidth,使用该IPv4地址的低16位(IPL16)和压缩偏移表表项宽度通过公式2计算出此IPv4地址在压缩偏移表中的字偏移量(Offsetword)、通过公式3计算出此IPv4地址在该字中的比特偏移量(Offsetbit),并计算出压缩偏移表路由基准值。
(8)以偏移量Offsetword访问此IPv4地址对应压缩偏移表中的偏移量字,得到比特宽度为EntryWidth的下一跳路由索引值偏移量(OffsetNH)。判断下一跳路由索引偏移量值是否为2EntryWidth-1。若是,则此IPv4地址对应下一跳路由索引(NHI)即等于当前一跳索引值(NHIcurrent);若否,通过公式4计算出下一跳路由索引值(NHI)。若NHI为全1值,则此IPv4地址无对应下一跳路由;若否,则此IPv4地址对应下一跳路由即为NHI,查找结束。
本发明方法可以拥有高速的查找能力和更新能力,同时需要较少的存储空间。本发明实现IPv4路由查找方法的特点是只需建立两个结构简单的转发表一段表和压缩偏移表。表的构造过程操作步骤简单、且快速、有效。该方法相对于现有的各种分段、压缩进行IPv4路由查询方法,具有以下优点查找速度相快,仅需要2次存储器访问;实施方法所需要的存储空间较小;更新开销小。
相对于现有的各种分段、压缩实现IPv4地址快速查找算法,本方法具有更高的综合性能,较好的解决了查找速度与更新速度、查找速度与存储器容量之间的矛盾。一次IPv4地址查找最多需要2次存储器访问;二级表的压缩减少了大量存储器空间;同时,由于压缩算法简单,二级表的压缩并未增加传统分段表的更新开销。64K段表表项结构简单但信息量丰富,解决了分段算法可能发生的路由查找回溯现象。
本发明内容实现起来简单、容易。需要的存储容量小,算法简单、易实现,可以由FPGA采用硬件方式实现,也可以使用普通PC或接入服务器采用软件方式实现。本发明可以应用于三层交换机、路由器和其它需要完成IP网络路由查找的设备。
具体实施说明在64K段表和压缩偏移表中,各字段初始化为全1值,表示无效(压缩偏移表表项宽度字段除处)。查找时,若64K段表中段路由索引字段值为全1,则表示无效路由;64K段表中压缩偏移表指针字段值为全1,则表示本段不存在压缩偏移表;压缩偏移表中若某表项值为全1,表示对应下一跳路由索引值为段路由索引,而不使用公式4计算。
具体实施时,首先根据实际应用环境选定压缩偏移表路由基准索引字段的位宽和压缩偏移表指针字段的位宽。
查找时,先使用欲查找的目标IPv4地址的高16位(IPH16)作为索引值,在64K段表中定位表项判断该表项中压缩偏移表指针值(pOffetTable)是否无效(全1值)。若指针值无效,则此表项中段路由索引(NHseg)即为该目标IPv4地址所对应下一跳路由索引值(NHI);若否,则根据此表项中压缩偏移表指针值得到该IPv4地址对应压缩偏移表的入口地址、路由基准索引值(BaseIndex)和压缩表表项宽度索引值(WidthIndex),令当前下一跳路由索引值(NHIcurrent)等于段路由索引(NHseg)。计算出该压缩偏移表表项宽度EntryWidth,使用该IPv4地址的低16位(IPL16)和压缩偏移表表项宽度计算出此IPv4地址在压缩偏移表中的字偏移量(Offsetword)、比特偏移量(Offsetbit),访问此IPv4地址对应压缩偏移表中的字偏移量字,得到比特宽度为EntryWidth的下一跳路由索引值偏移量(OffsetNH)。判断下一跳路由索引偏移量值是否为全1值(2EntryWidth-1)。若是,则此IPv4地址对应下一跳路由索引(NHI)即等于当前一跳索引值(NHIcurrent);若否,通过公式4计算得到该IPv4地址的下一跳路由索引值(NHI)。
根据方法具体实施时所选取64K段表中下一跳路由基准索引字段和压缩偏移表指针字段位宽的不同,本方法的实施方式可具体分为二种情况下一跳路由基准索引字段宽度为6比特,压缩偏移表字段位宽为16比特;下一跳路由基准索引字段宽度为8比特,压缩偏移表指针字段位宽为14比特。
1 64K段表中下一跳路由基准索引字段宽度为6比特64段表中段路由索引字段位宽为8比特、下一跳路由基准索引字段位宽为6比特、压缩偏移表表项宽度索引字段位宽为2比特、压缩偏移表指针字段为16比特。各字段定义是



2 64K段表中下一跳路由索引基准字段宽度为8比特64K段表中段路由索引字段位宽为8比特、下一跳路由基准索引字段位宽为8比特、压缩偏移表项宽度索引字段位宽为2比特、压缩偏移表指针字段为14比特。压缩偏移表下一跳路由基准值等于段表中下一跳路由基准索引值。


若具体实施方案选取压缩偏移表指针字段位宽为16比特,压缩偏移表基准索引字段为6比特压缩偏移表指针字段取值范围为0-65535,去掉一个表示无效指针的数值65535(0xFFFF)后,此字段仍可以区分65535个不同压缩偏移表;同时,压缩偏移表基准索引字段受位宽限制,取值范围为0-63,无法完全表示路由索引可能的取值,本方法采用了4倍取值的算法将路由基准索引值扩展成路由基准值。在某些情况下,偏移表的压缩效率受到一定限制。
若具体实施方案选取压缩偏移表指针字段位宽为14比特,压缩偏移表基准索引字段为8比特压缩偏移表基准索引字段可以表示0-255中任意数值,偏移表压缩效率得到提高;压缩偏移表指针字段取值范转为0-16383,去掉一个表示无效指针的数值16383(0x3FFF)后,此字段可区分的不同压缩偏移表数目为16383。
由上文分析可以看出,两种字段位宽定义组合具有各自的优、缺点。在实际实施本方法时,应根据方法所应用的实际网络路由情况加以选择。
64K段表各表项所对应的压缩偏移表由路由索引偏移字段顺序构成,每一表项表示一个路由索引偏移字段。
本发明可以在普通PC机或服务器上以软件方式编程实现,表构建及最长前缀查找过程由软件完成,64K段表及压缩偏移表存储在计算机内存中。
本发明也可采用FPGA以硬件方式实现,具体实施系统结构图如图5所示。表构建和最长前缀查找过程由硬件逻辑单元完成,64K段表和压缩偏移表存储在静态随机存取存储器(SRAM)或动动态存取存储器(DRAM)。
权利要求
1.一种最长前缀地址路由查找方法,其特征在于该方法是建立64K段表和压缩偏移表,查找时,先使用欲查找的目标IPv4地址的高16位作为索引值,在64K段表中定位表项,判断该表项中压缩偏移表指针值是否无效,若指针值无效,则此表项中段路由索引即为该目标IPv4地址所对应下一跳路由索引值;若否,根据此表项中压缩偏移表指针值得到该IPv4地址对应压缩偏移表的起始地址、路由基准索引值和压缩表表项宽度索引值、段路由索引值,计算出该压缩偏移表表项宽度、压缩偏移表路由基准值,使用该IPv4地址的低16位和压缩偏移表表项宽度计算出此IPv4地址在压缩偏移表中的字偏移量、比特偏移量,访问此IPv4地址对应压缩偏移表中的字偏移量字和比特偏移量表项,得到下一跳路由索引值偏移量,判断下一跳路由索引偏移量值是否为全1值?若是,则此IPv4地址对应下一跳路由索引即等于当前一跳索引值;若否,通过公式计算得到该IPv4地址的下一跳路由索引值。
2.根据权利要求1所述的最长前缀地址路由查找方法,其特征在于所述的64K段表每一条表项都是一个32比特的长字,由段路由索引字段(31:24比特)、压缩偏移表路由索引基准值字段(23:18比特或23:16比特)、压缩偏移表表项宽度索引字段(17:16比特或15:14比特)和压缩偏移表指针字段(15:0比特或13:0比特)共四个字段构成。
3.根据权利要求2所述的最长前缀地址路由查找方法,其特征在于所述的64K段表,表项的最高8比特(31:24)段路由索引是指向路由表的索引,初始化为0xFF表示默认无有效下一跳路由;若段路由索引等于路由索引初始值时,表示无有效下一跳路由;若段路由索引不等于路由索引初始值,其数值为IPv4地址对应下一跳路由的索引值。
4.根据权利要求2所述的最长前缀地址路由查找方法,其特征在于所述的64K段表,表项的压缩偏移表路由基准索引值(23:18比特或23:16比特)是压缩偏移表路由索引值的基准索引值,初始化为0x3F(字段位宽为6比特时)或0xFF(字段位宽为8比特时),仅当同表项中压缩偏移表指针不为压缩偏移表指针初始值时有意义;字段位宽为6比特时,压缩偏移表路由索引基准值等于4倍的压缩偏移表路由基准索引值;字段位宽为8比特时,压缩偏移表路由索引基准值等于压缩偏移表路由基准索引值。
5.根据权利要求2所述的最长前缀地址路由查找方法,其特征在于所述的64K段表,表项的压缩偏移表表项宽度索引(17:16比特或15:14比特)是指明压缩偏移表表项宽度的索引值,初始化为压缩偏移表表项宽度索引初始值0x3,仅当同表项中压缩偏移表指针不为压缩偏移表指针初始值时有意义。
6.根据权利要求2所述的最长前缀地址路由查找方法,其特征在于所述的64K段表,表项的压缩偏移表指针(15:0比特或13:0比特)是指向本表项所对应压缩偏移表起始地址的指针,初始化为0xFFFF(字段位宽为16比特时)或0x3FFF(字段宽度为14比特时),若压缩偏移表指针值等于压缩偏移表指针初始值,表示本表项不存在对应压缩偏移表,不需要进行进一步查找;若压缩偏移表指针值不等于压缩偏移表指针初始值,表示本表项存在对应压缩偏移表,需要进行进一步路由查找,且压缩偏移表指针的值为本表项对应的压缩偏移表的起始地址。
7.根据权利要求1所述的最长前缀地址路由查找方法,其特征在于压缩偏移表路由基准值表示压缩偏移表的下一跳路由基准值,压缩偏移表路由基准值等于4倍的压缩偏移表路由基准索引值(64K段表中压缩偏移表路由基准索引字段位宽为6比特时),或压缩偏移表路由基准值等于压缩偏移表路由基准索引值(64K段表中压缩偏移表路由基准索引值字段位宽为8比特时)。
8.据根利要求1所述的最长前缀地址路由查找方法,其特征在于所述的压缩偏移表每一条表项由路由索引偏移字段构成,表项位宽等于2的压缩偏移表表项宽度索引值次幂,表示表项对应的下一跳路由索引值与压缩偏移表路由基准值的差值,初始化为全1值,若压缩偏移表表项值等于压缩偏移表表项初始值,表示下一跳路由索引值等于此压缩偏移表所属64K段表表项中的段路由索引值;若压缩偏移表表项的值不等于压缩偏移表表项初始值,表示下一跳路由索引值等于表项值与压缩偏移表路由基准值之和。
9.根据权利要求1所述的最长前缀地址路由查找方法,其特征在于该方法有下列实施步骤(1)选定实现方案中压缩偏移表指针和路由基准索引两个字段的比特宽度;(2)对原始路由信息表进行扩展、排序和分组将原始路由记录中前缀长度小于16比特的路由信息均扩展成前缀长度为16的记录;将前缀长度大于16比特且小于32比特的路由条目均扩展成长度为32比特的路由前缀,按照前缀的高16比特分组,组内按照路由前缀的长度从小到大排放;(3)64K段表的初始化操化,构建64K段表将每组路由信息中前缀长度小于等于16比特的信息项按照前缀长度由小到大的顺序依次填入64K段表相应表项,构造64K段表。表中每条表项由段路由索引(NHseg)、压缩偏移表指针、路由基准索引和压缩表表项宽度索引四个字段组成,其中路由基准索引字段、压缩偏移表指针字段和压缩表表项宽度索引字段和段路由索引字段填入初始值,共拥有64K条表项,占用的存储空间为64K×32比特;(4)压缩偏移表的初始化操作,构建压缩偏移表统计出每组路由信息中前缀长度大于16比特的信息所对应下一跳路由索引值中最小值NHmin和最大值NHmax,取其最小值为下一跳路由索引值,计算出路由基准索引值,选取压缩偏移表表项宽度索引值,申请尺寸为EntryWidth×64K比特的存储器空间,将其首地址填入64K段表中压缩偏移表指针字段,将路由基值索引BaseIndex和压缩偏移表表项宽度索引值WidthIndex填入64K段表中各自对应字段,使用全1初始化压缩偏移表,分别对每组路由中前缀长度大于16的路由信息条目计算路由信息中下一跳路由索引值与路由基准值间的差值,依前缀长度从小到大的顺序以位宽EntryWidth填入压缩偏移表中对应比特范围;(5)取目标IPv4地址的高16位作为索引值,在64K段表中定位表项判断该表项中压缩偏移表指针值是否无效(全1值)?若无效,转入(6);若压缩偏移表指针值有效,转入(7);(6)判断此表项中段路由索引(NHseg)值是否为0xFF?若是,则该目标IPv4地址无对应有效下一跳路由;若否,则表项中路由索引值即为该目标IPv4地址所对应下一跳路由索引值(NHI);(7)根据此表项中压缩偏移表指针值得到该IPv4地址对应压缩偏移表的入口地址、路由基准索引值和压缩表表项宽度索引值和段路由索引值,计算出该压缩偏移表表项宽度,使用该IPv4地址的低16位(IPL16)和压缩偏移表表项宽度计算出此IPv4地址在压缩偏移表中的字偏移量和比特偏移量;(8)以偏移量Offsetword访问此IPv4地址对应压缩偏移表中的偏移量字,得到比特宽度为EntryWidth的下一跳路由索引值偏移量,判断下一跳路由索引偏移量值是否为全1值?若是,则此IPv4地址对应下一跳路由索引(NHI)即等于当前一跳索引值(NHIcurrent);若否,计算出下一跳路由索引值(NHI),若NHI为全1值,则此IPv4地址无对应下一跳路由;若否,则此IPv4地址对应下一跳路由即为NHI。
全文摘要
本发明涉及数据通信技术领域,一种实现最长前缀地址路由查找的方法。该方法建立两级路由信息表格64K段表和压缩偏移表,将偏移表中路由索引值压缩成该索引值与本段基准路由索引差值,通过此方法来存储路由查找信息。查找时,先使用欲查找的目标IPv4地址的高16位作为索引值,在64K段表中定位表项判断该表项中压缩偏移表指针是否无效?若是,则此表项中路由索引即为该目标IPv4地址所对应下一跳路由索引值;若否,则根据此表项得到该IPv4地址对应压缩偏移表的指针值、基准值和压缩表表项宽度,以目标IPv4地址的低16位为偏移量访问对应压缩偏移表表项,通过计算得到该IPv4地址的下一跳路由索引值。
文档编号G06F17/30GK1588907SQ200410050069
公开日2005年3月2日 申请日期2004年7月2日 优先权日2004年7月2日
发明者徐宇锋, 李华伟, 宫曙光, 刘彤 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1