CN1588907A - 一种使用分段压缩表实现最长前缀地址路由查找的方法 - Google Patents
一种使用分段压缩表实现最长前缀地址路由查找的方法 Download PDFInfo
- Publication number
- CN1588907A CN1588907A CNA2004100500691A CN200410050069A CN1588907A CN 1588907 A CN1588907 A CN 1588907A CN A2004100500691 A CNA2004100500691 A CN A2004100500691A CN 200410050069 A CN200410050069 A CN 200410050069A CN 1588907 A CN1588907 A CN 1588907A
- Authority
- CN
- China
- Prior art keywords
- index
- value
- compression deviation
- route
- list item
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及数据通信技术领域,一种实现最长前缀地址路由查找的方法。该方法建立两级路由信息表格:64K段表和压缩偏移表,将偏移表中路由索引值压缩成该索引值与本段基准路由索引差值,通过此方法来存储路由查找信息。查找时,先使用欲查找的目标IPv4地址的高16位作为索引值,在64K段表中定位表项:判断该表项中压缩偏移表指针是否无效?若是,则此表项中路由索引即为该目标IPv4地址所对应下一跳路由索引值;若否,则根据此表项得到该IPv4地址对应压缩偏移表的指针值、基准值和压缩表表项宽度,以目标IPv4地址的低16位为偏移量访问对应压缩偏移表表项,通过计算得到该IPv4地址的下一跳路由索引值。
Description
技术领域
本发明涉及数据通信技术领域。特别是一种使用分段、压缩技术实现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)。
公式1:EntryWidth=2widthIndex
公式2:Offsetword=Int((EntryWidth×IPL16)/Widthword)
公式3:Offsetbit=((EntryWidth×IPL16))-(Offsetword×Widthword)
公式4:NHI=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给出:
公式5:BaseValue=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比特,则选取路由基准索引值等于路由基准值。公式6:BaseIndex=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比特。各字段定义是:
数据位(bit) | 字段位宽(bits) | 字段名(FieldName) | 说明(Description) |
31:24 | 8 | 段路由索引(NHseg) | 指向下一跳路由的索引值;初始化为0xFF;字段值为0xFF时表示无有效下一跳路由;字段值非0xFF时表示下一跳路由的索引值 |
23:18 | 6 | 压缩偏移表路由 | 压缩偏移表中下 |
基准索引(BaseIndex) | 一跳路由基准值的索引;初始化为0xFF;仅当压缩偏移表指针有效时有意义;路由基准值等于4倍的路由基准索引值 | ||
17:16 | 2 | 压缩偏移表表项宽度索引(WidthIndex) | 压缩路由表中每条表项所占比特宽度的索引;初始化为0xFF;仅当压缩偏移表指针有效时有意义;压缩偏移表表项宽度为2的WidthIndex次幂 |
15:0 | 16 | 压缩偏移表指针 | 指向压缩偏移表首地址;初始化为全1值(0xFFFF);值为0xFFFF时表示无效,不存在相应压缩偏移表;值不为0xFFFF时表示本表项对应压缩偏移表首 |
地址 |
2 64K段表中下一跳路由索引基准字段宽度为8比特
64K段表中段路由索引字段位宽为8比特、下一跳路由基准索引字段位宽为
8比特、压缩偏移表项宽度索引字段位宽为2比特、压缩偏移表指针字段为14比特。压缩偏移表下一跳路由基准值等于段表中下一跳路由基准索引值。
数据位(bit) | 字段位宽(bits) | 字段名(FieldName) | 说明(Description) |
31:24 | 8 | 段路由索引(NHseg) | 指向下一跳路由的索引值;初始化为0xFF;字段值为0xFF时表示无有效下一跳路由;字段值非0xFF时表示下一跳路由的索引值 |
23:16 | 8 | 压缩偏移表路由基准索引(BaseIndex) | 压缩偏移表中下一跳路由基准值的索引;初始化为0xFF;仅当压缩偏移表指针有效时有意义;路由基准值等于路由基准索引值 |
15:14 | 2 | 压缩偏移表表项 | 压缩路由表中每 |
宽度索引(WidthIndex) | 条表项所占比特宽度的索引;初始化为0xFF;仅当压缩偏移表指针有效时有意义;压缩偏移表表项宽度为2的WidthIndex次幂 | ||
13:0 | 14 | 压缩偏移表指针 | 指向压缩偏移表首地址;初始化为全1值(0x3FFF);值为0x3FFF时表示无效,不存在相应压缩偏移表;值不为0x3FFF时表示本表项对应压缩偏移表首地址 |
若具体实施方案选取压缩偏移表指针字段位宽为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)。
Claims (9)
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。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100500691A CN100375463C (zh) | 2004-07-02 | 2004-07-02 | 一种使用分段压缩表实现最长前缀地址路由查找的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100500691A CN100375463C (zh) | 2004-07-02 | 2004-07-02 | 一种使用分段压缩表实现最长前缀地址路由查找的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1588907A true CN1588907A (zh) | 2005-03-02 |
CN100375463C CN100375463C (zh) | 2008-03-12 |
Family
ID=34602165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100500691A Expired - Lifetime CN100375463C (zh) | 2004-07-02 | 2004-07-02 | 一种使用分段压缩表实现最长前缀地址路由查找的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100375463C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008028412A1 (fr) * | 2006-08-29 | 2008-03-13 | Huawei Technologies Co., Ltd. | Procédé et appareil de routage, et procédé d'enregistrement d'informations de routage |
CN101729417B (zh) * | 2007-02-09 | 2011-12-21 | 北京直真节点技术开发有限公司 | 面向电信领域的端到端业务电路资源智能查询和确认系统 |
CN102447604A (zh) * | 2010-09-30 | 2012-05-09 | 迈普通信技术股份有限公司 | 路由表信息存储方法以及路由设备 |
CN107896193A (zh) * | 2017-12-29 | 2018-04-10 | 湖南恒茂高科股份有限公司 | 一种交换机的查找表的创建方法、查找方法及查找表 |
CN108156077A (zh) * | 2016-12-02 | 2018-06-12 | 中兴通讯股份有限公司 | 一种基于IPv6数据平面的分段路由转发方法及装置 |
CN114827030A (zh) * | 2022-03-26 | 2022-07-29 | 西安电子科技大学 | 一种基于折叠sram的流分类装置及表项压缩方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266706B1 (en) * | 1997-09-15 | 2001-07-24 | Effnet Group Ab | Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams |
TW410292B (en) * | 1999-01-05 | 2000-11-01 | Huang Neng Fu | Method and system applicable for routing data construction and IP route lookup of super high speed switching router |
US6192051B1 (en) * | 1999-02-26 | 2001-02-20 | Redstone Communications, Inc. | Network router search engine using compressed tree forwarding table |
JP3492279B2 (ja) * | 2000-03-21 | 2004-02-03 | Necエレクトロニクス株式会社 | 素子分離領域の形成方法 |
-
2004
- 2004-07-02 CN CNB2004100500691A patent/CN100375463C/zh not_active Expired - Lifetime
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008028412A1 (fr) * | 2006-08-29 | 2008-03-13 | Huawei Technologies Co., Ltd. | Procédé et appareil de routage, et procédé d'enregistrement d'informations de routage |
CN101729417B (zh) * | 2007-02-09 | 2011-12-21 | 北京直真节点技术开发有限公司 | 面向电信领域的端到端业务电路资源智能查询和确认系统 |
CN102447604A (zh) * | 2010-09-30 | 2012-05-09 | 迈普通信技术股份有限公司 | 路由表信息存储方法以及路由设备 |
CN102447604B (zh) * | 2010-09-30 | 2016-01-27 | 迈普通信技术股份有限公司 | 路由表信息存储方法以及路由设备 |
CN108156077A (zh) * | 2016-12-02 | 2018-06-12 | 中兴通讯股份有限公司 | 一种基于IPv6数据平面的分段路由转发方法及装置 |
CN108156077B (zh) * | 2016-12-02 | 2021-11-12 | 中兴通讯股份有限公司 | 一种基于IPv6数据平面的分段路由转发方法及装置 |
CN107896193A (zh) * | 2017-12-29 | 2018-04-10 | 湖南恒茂高科股份有限公司 | 一种交换机的查找表的创建方法、查找方法及查找表 |
CN107896193B (zh) * | 2017-12-29 | 2020-10-16 | 湖南恒茂高科股份有限公司 | 一种交换机及其查找表的创建方法、查找方法 |
CN114827030A (zh) * | 2022-03-26 | 2022-07-29 | 西安电子科技大学 | 一种基于折叠sram的流分类装置及表项压缩方法 |
CN114827030B (zh) * | 2022-03-26 | 2023-04-07 | 西安电子科技大学 | 一种基于折叠sram的流分类装置及表项压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100375463C (zh) | 2008-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8325721B2 (en) | Method for selecting hash function, method for storing and searching routing table and devices thereof | |
CN1504912A (zh) | 用树状分段改善树搜索性能和存储器带宽的方法和系统 | |
US7418505B2 (en) | IP address lookup using either a hashing table or multiple hash functions | |
Tzeng et al. | On fast address-lookup algorithms | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
CN102333036B (zh) | 一种实现高速路由查找的方法和系统 | |
US9576073B2 (en) | Distance queries on massive networks | |
CN101594319B (zh) | 表项查找方法和装置 | |
CN106326475B (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN1838124A (zh) | 海量数据内存数据库中快速定位的网格+t树索引的方法 | |
CN102035727B (zh) | 一种路由的处理方法和设备 | |
CN101043421A (zh) | 一种基于内存的ip地址最长匹配快速查找的方法 | |
CN1462004A (zh) | 用于产生和使用改进的树形位图数据结构的方法和装置 | |
CN107330094B (zh) | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 | |
CN1216473C (zh) | 支持多个下一跳的三态内容可寻址存储器查找方法及系统 | |
CN1543150A (zh) | 分组分类装置和使用字段级特里结构的方法 | |
EP1063827A2 (en) | Method for address lookup | |
US7085235B2 (en) | Method and apparatus for constructing and searching IP address | |
CN1909518A (zh) | 一种路由方法和路由设备 | |
CN1859208A (zh) | 一种tcam路由表管理方法和系统 | |
CN1588907A (zh) | 一种使用分段压缩表实现最长前缀地址路由查找的方法 | |
CN1787477A (zh) | IPv6路由表的查找方法 | |
CN1585358A (zh) | 路由查找方法及其系统 | |
CN1279716C (zh) | 消除最长前缀匹配查找的并行路由查找方法及其系统 | |
CN1889080A (zh) | 一种用于检索字符串的方法 |
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 |