CN118282943A - 一种查找路由表项的方法及装置 - Google Patents
一种查找路由表项的方法及装置 Download PDFInfo
- Publication number
- CN118282943A CN118282943A CN202211662870.6A CN202211662870A CN118282943A CN 118282943 A CN118282943 A CN 118282943A CN 202211662870 A CN202211662870 A CN 202211662870A CN 118282943 A CN118282943 A CN 118282943A
- Authority
- CN
- China
- Prior art keywords
- target
- subtree
- root node
- address
- routing table
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 claims description 15
- 230000003068 static effect Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- RJKFOVLPORLFTN-LEKSSAKUSA-N Progesterone Chemical compound C1CC2=CC(=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H](C(=O)C)[C@@]1(C)CC2 RJKFOVLPORLFTN-LEKSSAKUSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Abstract
本申请涉及通信技术领域,公开了一种查找路由表项的方法及装置,该方法为:在SRAM中查找与目标IP地址相匹配的目标子树根节点,上述SRAM包括用于指示路由表项信息的子树根节点集合,每个子树根节点携带前缀,基于目标子树根节点的前缀确定第一目标路由表项,基于目标子树根节点,在DRAM中的目标子树中查找与剩余IP地址相匹配的第二目标路由表项,并将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项,上述将路由信息分级灵活存储在子树根节点和子树的方式,能快捷高效的查找到与目标IP地址相匹配的路由表项。
Description
技术领域
本申请涉及通信技术领域,提供了一种查找路由表项的方法及装置。
背景技术
目前,路由器作为Internet互连的核心设备,它是网络通信的主要瓶颈之一,其性能则直接影响着网络互联的质量。高效的IP地址查找算法是影响路由器转发效率的重要因素。随着Internet网络规模的扩大,核心路由器中路由表项的大小与日俱增,随着无分类域间路由(Classless Inter Domain Routing,CIDR)的引入,IP地址查找从一个精确匹配的问题转变成为一个最优匹配的问题,须采用最长前缀匹配(Longest Prefix Match,LPM)算法,从而大大增加了IP地址查找的复杂性。在TCP/IP中,转发信息表(ForwardingInformation Base,FIB)是路由表项的一个缩影,存储着有效的、聚合的路由信息,直接用于指导数据包的转发。
并且,随着通信网络扩大及IPv6的普及,FIB条目数量与日俱增,前缀分布更为广泛,这对FIB查找算法的要求也进一步提高,同时受高速存储器容量的限制,对如何存储和快速查找提出了新的要求。
现有技术中有以下几种查找方式:一是基于TCAM的查找,尽管基于TCAM的查找速度快,但是其功耗大、价格昂贵,同时其容量通常较小,很难作为大容量FIB查找的解决方案;二是基于GPU的查找,时延较大,若单个分组进行查找,则FIB查找的带宽无法满足网络上大量转发的需求,另外路由更新的复杂度也因为特殊设计的跳转表等结构而增大;三是基于CPU和DRAM的查找,由于CPU中cache容量极小,因此需要进行多次的DRAM访问,无法满足核心路由器的时延需求。
发明内容
本申请实施例提供一种查找路由表项的方法及装置,用以快捷高效地查找到与目标IP地址相匹配的路由表项。
本申请提供的具体技术方案如下:
第一方面,本申请实施例提供了一种查找路由表项的方法,包括:
在静态随机存取存储器SRAM中查找与目标IP地址相匹配的目标子树根节点,其中,SRAM包括用于指示路由表项信息的子树根节点集合,子树根节点集合包括相连接的多个子树根节点,多个子树根节点中的每个子树根节点包括前缀,多个子树根节点的前缀的长度不固定,目标子树根节点的前缀用于表征目标子树根节点与子树根节点集合的树根节点之间的路由信息;
基于目标子树根节点的前缀确定第一目标路由表项;
基于目标子树根节点,在动态随机存取存储器DRAM中查找与剩余IP地址相匹配的目标子树,基于目标子树确定第二目标路由表项,其中,剩余IP地址是目标IP地址中,除与第一目标路由表项相一致的IP地址之外的剩余部分;目标子树根节点包括至少一个子树,至少一个子树用于表征目标子树根节点包括的路由信息;目标子树为至少一个子树中之一;
将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项。
可选地,还包括建立子树根节点集合;
建立子树根节点集合包括:
将树根节点与两个子树根节点串相连接,其中,每个子树根节点串均包括串行连接的多个子树根节点;
将除了子树根节点集合的树根节点之外的每个子树根节点均通过前缀与前一个子树根节点相连接,其中,前缀包括第一方向前缀和/或第二方向前缀,第一方向前缀表征的路由数值为0,第二方向前缀表征的路由数值为1;
将除了子树根节点集合的树根节点之外的每个子树根节点均与至少一个子树相关联,其中,每个子树包括第一方向子树信息和/或第二方向子树信息,第一方向子树信息表征的路由数值为0,第二方向子树信息表征的路由数值为1;
基于树根节点、两个子树根节点串中的每个子树根节点、前缀和子树,建立子树根节点集合。
可选地,在SRAM中查找与目标IP地址相匹配的目标子树根节点,包括:
将目标IP地址的起始路径信息与SRAM中预先存储的子树根节点集合的树根节点对齐;
基于与第N个子树根节点相连接的前缀,查找与目标IP地址相匹配的第N+1个子树根节点,其中,N的取值均为从1开始的自然数;
将第N+1个子树根节点确定为目标子树根节点。
可选地,基于目标子树根节点的前缀确定第一目标路由表项,包括:
基于树根节点、第N个子树根节点和第N+1个子树根节点,确定前缀的路由顺序;
基于路由顺序,将前缀按照第一方向前缀和/或第二方向前缀表征的路由数值进行组合,并将组合后的路由数值确定为第一目标路由表项。
可选地,基于目标子树根节点,在DRAM中查找与剩余IP地址相匹配的目标子树,基于目标子树确定第二目标路由表项,包括:
在DRAM中查找与目标子树根节点的存储地址相对应的目标子树地址;
将目标子树地址中存储的子树确定为与剩余IP地址相匹配的目标子树;
基于最长前缀匹配算法,将目标子树中与剩余IP地址相匹配的路由信息确定为第二目标路由表项。
可选地,将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项,包括:
确定第一目标路由表项中的最后一个路由数值;
将第一目标路由表项的最后一个路由数值与第二目标路由表项进行串行连接,得到串行连接后的第一目标路由表项和第二目标路由表项;
将串行连接后的第一目标路由表项和第二目标路由表项,确定为与目标IP地址相匹配的目标路由表项。
可选地,还包括:
确定并输出与目标路由表项对应的下一跳信息。
第二方面,本申请实施例还提供了一种查找路由表项的装置,包括:
第一查找单元,用于在静态随机存取存储器SRAM中查找与目标IP地址相匹配的目标子树根节点,其中,SRAM包括用于指示路由表项信息的子树根节点集合,子树根节点集合包括相连接的多个子树根节点,多个子树根节点中的每个子树根节点包括前缀,多个子树根节点的前缀的长度不固定,目标子树根节点的前缀用于表征目标子树根节点与子树根节点集合的树根节点之间的路由信息;
确定单元,用于基于目标子树根节点的前缀确定第一目标路由表项;
第二查找单元,用于基于目标子树根节点,在动态随机存取存储器DRAM中查找与剩余IP地址相匹配的目标子树,基于目标子树确定第二目标路由表项,其中,剩余IP地址是目标IP地址中,除与第一目标路由表项相一致的IP地址之外的剩余部分;目标子树根节点包括至少一个子树,至少一个子树用于表征目标子树根节点包括的路由信息;目标子树为至少一个子树中之一;
组合单元,用于将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项。
第三方面,一种智能终端,包括:
存储器,用于存储可执行指令;
处理器,用于读取并执行存储器中存储的可执行指令,以实现如第一方面任一项的方法。
第四方面,一种计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行上述第一方面任一项所述的方法。
本申请有益效果如下:
综上所述,本申请实施例中,提供的一种查找路由表项的方法及装置,该方法包括:在SRAM中查找与目标IP地址相匹配的目标子树根节点,其中,SRAM包括用于指示路由表项信息的子树根节点集合,子树根节点集合包括相连接的多个子树根节点,多个子树根节点中的每个子树根节点包括前缀,多个子树根节点的前缀的长度不固定,目标子树根节点的前缀用于表征目标子树根节点与子树根节点集合的树根节点之间的路由信息,基于目标子树根节点的前缀确定第一目标路由表项,基于目标子树根节点,在DRAM中查找与剩余IP地址相匹配的目标子树,基于目标子树确定第二目标路由表项,其中,剩余IP地址是目标IP地址中,除与第一目标路由表项相一致的IP地址之外的剩余部分,目标子树根节点包括至少一个子树,至少一个子树用于表征目标子树根节点包括的路由信息,目标子树为至少一个子树中之一,将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项,上述将路由信息分级灵活存储在子树根节点和子树的方式,便于快捷高效的查找到与目标IP地址相匹配的路由表项。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中查找路由表项的系统架构示意图;
图2为本申请实施例中查找路由表项的流程示意图;
图3为本申请实施例中确定目标子树根节点的流程示意图;
图4为本申请实施例中确定第一目标路由表项的流程示意图;
图5为本申请实施例中确定目标子树的流程示意图;
图6为本申请实施例中确定目标路由表项的流程示意图;
图7为本申请实施例中确定一种子树根节点集合的示意图;图8为本申请实施例中一种查找路由表项的装置的逻辑架构示意图;
图9为本申请实施例中一种智能终端的实体架构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够使用除了在这里图示或描述的那些以外的顺序实施。
下面结合附图对本申请优选的实施方式进行详细说明。
参阅图1所示,本申请实施例中,系统中包含了至少一个智能终端,在图1中,将目标IP地址输入到智能终端中,智能终端会在预先存储的大容量转发信息表(ForwardingInformation Base,FIB)中查找与目标IP地址最为匹配的路由,上述FIB是路由表项的一个缩影,其中,存储着大量有效的、聚合的路由信息,直接用于指导数据包的转发。
本申请实施例中,一种查找路由表项的方法的实现,主要在智能终端侧执行,下面进行具体介绍。
参阅图2所示,本申请实施例中,一种查找路由表项的具体流程如下:
步骤201:在静态随机存取存储器(Static Random-Access Memory,SRAM)中查找与目标IP地址相匹配的目标子树根节点,其中,SRAM包括用于指示路由表项信息的子树根节点集合,子树根节点集合包括相连接的多个子树根节点,多个子树根节点中的每个子树根节点包括前缀,多个子树根节点的前缀的长度不固定,目标子树根节点的前缀用于表征目标子树根节点与子树根节点集合的树根节点之间的路由信息。
下面具体介绍下本申请实施例中子树根节点集合的创建方式,建立子树根节点集合包括:
(1)将树根节点与两个子树根节点串相连接,其中,每个子树根节点串均包括串行连接的多个子树根节点。
本申请实施例中,子树根节点集合的起始点为树根节点,该树根节点与两个子树根节点串相连接,上述两个子树根节点串包括第一子树根节点串和第二子树根节点串,所述第一子树根节点串和所述第二子树根节点串的不同之处在于,其中所述第一子树根节点串包括与该树根节点通过第一方向前缀相连接的第二个子树根节点,所述第二子树根节点串包括与该树根节点通过第二方向前缀相连接的下一个子树根节点。
需要说明的是,上述第一子树根节点也可以与三个或者更多个子树根节点串相连接,本申请对此不做限制。此外,每个子树根节点串均包括串行连接的多个子树根节点,每个子树根节点串包括的子树根节点的个数可以相同,也可以不同。
(2)将除了子树根节点集合的树根节点之外的每个子树根节点均通过前缀与树根节点相连接,其中,前缀包括第一方向前缀和/或第二方向前缀,第一方向前缀表征的路由数值为0,第二方向前缀表征的路由数值为1。
本申请实施例中,树根节点的前缀是空集,也就是说,除了树根节点之外,各个子树根节点均通过前缀与前一个子树根节点相连接,但每两个子树根节点之间的前缀的长度不同,并且,前缀的方向也不确定,具体的,第一方向前缀表征的路由数值为0,第二方向前缀表征的路由数值为1,即每两个子树根节点之间的0和/或1的数量不同。
(3)将除了子树根节点集合的树根节点之外的每个子树根节点均与一个子树相关联,其中,子树包括第一方向子树信息和/或第二方向子树信息,第一方向子树信息表征的路由数值为0,第二方向子树信息表征的路由数值为1。
本申请实施例中,根据最长前缀匹配原则,为目标IP地址确定了相匹配的子树根节点之后,即确定与上述相匹配的子树根节点相连接的下一个子树根节点不再与目标IP地址相匹配之后,会继续为剩余IP地址查找相匹配的目标子树,基于此,引入子树的概念。
考虑到每个子树根节点都有可能会被确定为是与目标IP地址相匹配的最后一个子树根节点,因此,这里的除了子树根节点集合的树根节点之外的每个子树根节点均与一个子树相关联,并且,子树信息的方向包括第一方向子树信息和/或第二方向子树信息,本申请实施例中,第一方向子树信息表征的路由数值为0,第二方向子树信息表征的路由数值为1。这里每个子树根节点的第一方向子树信息和/或第二方向子树信息的数量和方向都不确定,因而,形成的子树的长度和方向也不确定。
(4)基于树根节点、两个子树根节点串中的每个子树根节点、前缀和子树,建立子树根节点集合。
本申请实施例中,将上述树根节点、两个子树根节点串中的每个子树根节点、前缀和子树组成的路由信息表,称为子树根节点集合。
现有技术中,子树根节点的划分方式通常是固定的,即任意两个子树根节点之间的前缀的数量是固定的,本申请实施例中,为满足速度要求,一次查找过程仅能访问一次DRAM,由于,DRAM节点的最大宽度是相同的,即等效的数据总线宽度Width是一个固定值。为了实现子树根节点和子树的灵活划分,提出了以下两种类型的数据结构,显然,上述类型一和类型二定义的内容不同,如果子树中的节点可以按照类型一或者类型二来构建,构建过程中,类型一与类型二可随时进行转换,即某一子树按照类型一或类型二进行编码存储,它的长度可能是不一定的,如果采用类型一来构建子树的话长度大于Width,如果采用类型二来构建子树的话长度小于Width,这种情况下,就采用类型二来存储子树,反之亦然。如果,采用类型二仍不能保证长度小于Width的话,就需要将上述某个子树进行分裂,即通过更多的子树的构建来保证不超过DRAM节点的最大宽度。这样,划分出来的子树的长度是灵活的,并且,子树根节点的数目也是最少的,进而能够满足快速查找的需要。
另外,需要补充说明的是,如果插入一个新路由表项时,导致类型一和类型二都无法使长度小于Width,则应该重新划分子树,新建一个子树根节点。
类型一
类型二
在划分完子树后,进而将各个子树根节点存储在SRAM中,将各个子树存储在DRAM中。
在确定了子树根节点集合后,会先根据该子树根节点集合查找与目标IP地址最长匹配的子树根节点,这里将相匹配的子树根节点称为目标子树根节点,在SRAM中查找与目标IP地址相匹配的目标子树根节点,参阅图3所示,包括:
步骤2011:将目标IP地址的起始路径信息与SRAM中预先存储的子树根节点集合的树根节点对齐。
由于,目标路由表项是一个长度不确定的由若干个0和若干个1组成的字符串的路径信息集合,为了确定出与目标IP地址相匹配的路由表项,实施过程中,需要从目标IP地址的第一位逐位查找,实施过程中,将目标IP地址的起始路径信息与SRAM中预先存储的子树根节点集合的树根节点对齐,即将SRAM中的树根节点作为查找过程的起点。
步骤2012:基于与第N个子树根节点相连接的前缀,查找与目标IP地址的前M位信息相匹配的第N+1个子树根节点,其中,N和M的取值均为从1开始的自然数。
实施过程中,从树根节点相连接的前缀开始,假设,每次查找的路径信息的位数均为2,如果,树根节点与第二个子树根节点之间的前缀与目标IP地址的前2位信息相匹配,那么,继续看第二个子树根节点与第三个子树根节点之间的前缀是否与目标IP地址的下面2位信息相匹配,以此类推,直到查找到与目标IP地址的前M位信息相匹配的第N+1个子树根节点,也即在子树根节点集合中,目标IP地址的第M+1位信息不存在相匹配的第N+2个子树根节点。
步骤2013:将第N+1个子树根节点确定为目标子树根节点。
基于此,在确定出与目标IP地址的前M位信息相匹配的第N+1个子树根节点后,将第N+1个子树根节点确定为目标子树根节点。
步骤202:基于目标子树根节点的前缀确定第一目标路由表项。参阅图4所示,包括:
步骤2021:基于树根节点、第N个所述子树根节点和第N+1个子树根节点,确定前缀的路由顺序。
考虑到各个子树根节点之间是有先后顺序的,相应的,确定出的各前缀信息也是有先后顺序的,实施过程中,在确定出第N+1个子树根节点后,根据第一个子树根节点、第二个子树根节点、…、第N个子树根节点和第N+1个子树根节点的先后顺序,确定前缀的路由顺序。
即在确定出了目标子树根节点后,根据树根节点与目标子树根节点对应的前缀来确定第一目标路由表项。
步骤2022:基于路由顺序,将前缀按照第一方向前缀和/或第二方向前缀表征的路由数值进行组合,并将组合后的路由数值确定为第一目标路由表项。
在确定了上述路由顺序后,按照路由顺序将前缀进行组合,即将前缀按照第一方向前缀信息和/或第二方向前缀信息表征的路由数值,即前缀表征的0和/或1进行组合,上述进行组合后的路由数值即确定为第一目标路由表项。
即实施过程中,将目标子树根节点对应的前缀按照第一方向前缀和/或第二方向前缀表征的路由数值,即0和/或1进行组合,上述进行组合后的各路由数值即确定为第一目标路由表项。
步骤203:基于目标子树根节点,在动态随机存取存储器(Dynamic RandomAccessMemory,DRAM)中查找与剩余IP地址相匹配的目标子树,基于目标子树确定第二目标路由表项,其中,剩余IP地址是目标IP地址中,除与第一目标路由表项相一致的IP地址之外的剩余部分。目标子树根节点包括至少一个子树,至少一个子树用于表征目标子树根节点包括的路由信息;目标子树为至少一个子树中之一。
实施过程中,在SRAM中确定出相匹配的第N+1个子树根节点后,进一步的,在DRAM中查找与剩余IP地址相匹配的目标子树。需要进行说明的是,上述剩余IP地址即为目标IP地址中,除了与第一目标路由表项相一致的IP地址之外的剩余的地址。
考虑到子树根节点集合中,相匹配的第N+1个子树根节点到底是哪一个子树根节点是不确定的,为了描述与剩余IP地址相匹配的部分,引入了子树的概念,除了树根节点之外的每个子树根节点都包括至少一个子树,子树用于表征对应的当前子树根节点包括的路由信息。目标子树根节点包括至少一个子树,至少一个子树用于表征目标子树根节点包括的路由信息。
基于目标子树根节点,在DRAM中查找与剩余IP地址相匹配的目标子树,基于目标子树确定第二目标路由表项,参阅图5所示,包括:
步骤2031:在DRAM中查找与目标子树根节点的存储地址相对应的目标子树地址。
为了便于查找子树,每一个子树根节点的存储地址和该子树根节点包括的子树地址都是相对应的,即子树根节点的存储地址和子树地址之间存在一对一的对应关系(例如,地址相同等),实施过程中,在确定出相匹配的第N+1个子树根节点即目标子树根节点后,在DRAM的所有地址中查找与目标子树根节点的存储地址相对应的目标子树地址。
步骤2032:将目标子树地址中存储的子树确定为与剩余IP地址相匹配的目标子树。
在确定了目标子树地址后,将该目标子树地址中存储的子树确定为与剩余IP地址相匹配的目标子树,通常,目标子树根节点的存储地址与对应的目标子树的存储地址是一致的,进一步,将该目标子树的路由信息与剩余IP地址进行逐位匹配。
步骤2033:基于最长前缀匹配算法,将目标子树中与剩余IP地址相匹配的路由信息确定为第二目标路由表项。
实施过程中,根据最长前缀匹配算法,在目标子树中查找与剩余IP地址相匹配的路由信息,如果能够在目标子树中的找到与剩余IP地址相匹配的左子树(由第一方向子树信息和/或第二方向子树信息组成)或者右子树(由第一方向子树信息和/或第二方向子树信息组成),即将上述左子树或右子树确定为第二目标路由表项,如果在目标子树中找不到与剩余IP地址相匹配的路由信息,则将第二目标路由表项设置为空,上述左子树第一位子树信息的方向为第一方向,右子树第一位子树信息的方向为第二方向。
需要补充的是,上述第一方向子树信息表征的路由数值为0,第二方向子树信息表征的路由数值为1。
步骤204:将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项。
具体的,将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项,参阅图6所示,包括:
步骤2041:确定第一目标路由表项中的最后一个路由数值。
考虑到剩余IP地址为目标IP地址的后半部分,相应的,上述第二目标路由表项是需要连接在第一目标路由表项后面的,基于此,先确定出第一目标路由表项中的最后一个路由数值,即确定出第一目标路由表项中的最后一位的0或者1。
步骤2042:将第一目标路由表项的最后一个路由数值与第二目标路由表项进行串行连接,得到串行连接后的第一目标路由表项和第二目标路由表项。
实施过程中,在确定出上述最后一个路由数值后,将上述最后一个路由数值与第二目标路由表项中的第一个路由数值进行串行连接,即实现第一目标路由表项和第二目标路由表项的串行连接。
步骤2043:将串行连接后的第一目标路由表项和第二目标路由表项,确定为与目标IP地址相匹配的目标路由表项。
将上述串行连接后的第一目标路由表项和第二目标路由表项,确定为与目标IP地址相匹配的目标路由表项。
需要进行说明的是,在确定了目标路由表项后,上述还包括:确定并输出与目标路由表项对应的下一跳信息。
为了使目标IP地址能够继续在网络中进行传输,需要找到下一跳信息,本申请实施例中,目标子树根节点和目标子树都与下一跳信息相对应,在确定了目标路由表项后,进一步根据目标子树根节点或者目标子树确定对应的下一跳信息,根据目标IP地址找到下一跳信息,并继续传输的过程与现有技术相同,这里不再赘述。
参阅图7所示的子树根节点集合,以查找177.30.44.88这一目标IP来进行举例说明。
目标IP地址177.30.44.88对应的二进制表示为10110001 000111100010110001011000,首先,在SRAM中查找相匹配的目标子树根节点,根据IP地址第1位为1,查看与树根节点以第二方向前缀相连接的子树根节点T3,确定T3的10110001000,和目标IP地址的前11位匹配;根据IP地址的第12位为1继续查找,查看与子树根节点T3以第二方向前缀相连接的子树根节点T4,确定T4与树根节点之间的前缀,与目标IP地址的第0到18位匹配,而目标IP地址的第19位不再与任何子树根节点相匹配,故确定出目标子树根节点为T4,并确定出第一目标路由表项为10110001 00011110 00。
基于目标IP地址和第一目标路由表项,确定出剩余IP地址为10110001011000,根据目标子树根节点T4,在DRAM中查找与剩余IP地址相匹配的目标子树,即DRAM中存储的剩余比特1011000101,和剩余IP地址的前10位相匹配,基于最长前缀匹配算法,将1011000101确定为所述第二目标路由表项,进一步的,将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项为10110001 00011110 00101100 0101,并输出与目标路由表项对应的下一跳信息为H。
基于同一发明构思,参阅图8所示,本申请实施例中提供一种查找路由表项的装置,包括:
第一查找单元801,用于在静态随机存取存储器SRAM中查找与目标IP地址相匹配的目标子树根节点,其中,SRAM包括用于指示路由表项信息的子树根节点集合,子树根节点集合包括相连接的多个子树根节点,多个子树根节点中的每个子树根节点包括前缀,多个子树根节点的前缀的长度不固定,目标子树根节点的前缀用于表征目标子树根节点与子树根节点集合的树根节点之间的路由信息;
确定单元802,用于基于目标子树根节点的前缀确定第一目标路由表项;
第二查找单元803,用于基于目标子树根节点,在动态随机存取存储器DRAM中查找与剩余IP地址相匹配的目标子树,基于目标子树确定第二目标路由表项,其中,剩余IP地址是目标IP地址中,除与第一目标路由表项相一致的IP地址之外的剩余部分;目标子树根节点包括至少一个子树,至少一个子树用于表征目标子树根节点包括的路由信息;目标子树为至少一个子树中之一;
组合单元804,用于将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项。
基于同一发明构思,参阅图9所示,本申请实施例提供一种智能终端,包括:存储器901,用于存储可执行指令;处理器902,用于读取并执行存储器中存储的可执行指令,并执行上述第一方面的任意一种方法。
基于同一发明构思,本申请实施例提供一种计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行上述第一方面任一项所述的方法。
综上所述,本申请实施例中,提供的一种查找路由表项的方法及装置,该方法包括:在SRAM中查找与目标IP地址相匹配的目标子树根节点,其中,SRAM包括用于指示路由表项信息的子树根节点集合,子树根节点集合包括相连接的多个子树根节点,多个子树根节点中的每个子树根节点包括前缀,多个子树根节点的前缀的长度不固定,目标子树根节点的前缀用于表征目标子树根节点与子树根节点集合的树根节点之间的路由信息,基于目标子树根节点的前缀确定第一目标路由表项,基于目标子树根节点,在DRAM中查找与剩余IP地址相匹配的目标子树,基于目标子树确定第二目标路由表项,其中,剩余IP地址是目标IP地址中,除与第一目标路由表项相一致的IP地址之外的剩余部分,目标子树根节点包括至少一个子树,至少一个子树用于表征目标子树根节点包括的路由信息,目标子树为至少一个子树中之一,将第一目标路由表项和第二目标路由表项进行组合,得到与目标IP地址相匹配的目标路由表项,上述将路由信息分级存储在子树根节点和子树的方式,便于快捷高效的查找到与目标IP地址相匹配的路由表项。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品系统。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品系统的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品系统的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种查找路由表项的方法,其特征在于,所述方法包括:
在静态随机存取存储器SRAM中查找与目标IP地址相匹配的目标子树根节点,其中,所述SRAM包括用于指示路由表项信息的子树根节点集合,所述子树根节点集合包括相连接的多个子树根节点,所述多个子树根节点中的每个子树根节点包括前缀,所述多个子树根节点的前缀的长度不固定,所述目标子树根节点的前缀用于表征所述目标子树根节点与所述子树根节点集合的树根节点之间的路由信息;
基于所述目标子树根节点的前缀确定第一目标路由表项;
基于所述目标子树根节点,在动态随机存取存储器DRAM中查找与剩余IP地址相匹配的目标子树,基于所述目标子树确定第二目标路由表项,其中,所述剩余IP地址是所述目标IP地址中,除与所述第一目标路由表项相一致的IP地址之外的剩余部分;所述目标子树根节点包括至少一个子树,所述至少一个子树用于表征所述目标子树根节点包括的路由信息;所述目标子树为所述至少一个子树中之一;
将所述第一目标路由表项和所述第二目标路由表项进行组合,得到与所述目标IP地址相匹配的目标路由表项。
2.如权利要求1所述的方法,其特征在于,所述方法还包括建立所述子树根节点集合;
所述建立所述子树根节点集合包括:
将所述树根节点与两个子树根节点串相连接,其中,每个所述子树根节点串均包括串行连接的多个所述子树根节点;
将除了子树根节点集合的树根节点之外的每个子树根节点均通过所述前缀与前一个所述子树根节点相连接,其中,所述前缀包括第一方向前缀和/或第二方向前缀,所述第一方向前缀表征的路由数值为0,所述第二方向前缀表征的路由数值为1;
将除了子树根节点集合的树根节点之外的每个子树根节点均与至少一个所述子树相关联,其中,每个所述子树包括第一方向子树信息和/或第二方向子树信息,所述第一方向子树信息表征的路由数值为0,所述第二方向子树信息表征的路由数值为1;
基于所述树根节点、所述两个子树根节点串中的每个所述子树根节点、所述前缀和所述子树,建立所述子树根节点集合。
3.如权利要求2所述的方法,其特征在于,所述在SRAM中查找与目标IP地址相匹配的目标子树根节点,包括:
将所述目标IP地址的起始路径信息与所述SRAM中预先存储的所述子树根节点集合的所述树根节点对齐;
基于与所述第N个所述子树根节点相连接的所述前缀,查找与所述目标IP地址相匹配的第N+1个所述子树根节点,其中,N的取值均为从1开始的自然数;
将所述第N+1个所述子树根节点确定为所述目标子树根节点。
4.如权利要求3所述的方法,其特征在于,所述基于所述目标子树根节点的前缀确定第一目标路由表项,包括:
基于所述树根节点、所述第N个所述子树根节点和所述第N+1个所述子树根节点,确定所述前缀的路由顺序;
基于所述路由顺序,将所述前缀按照所述第一方向前缀和/或所述第二方向前缀表征的路由数值进行组合,并将组合后的所述路由数值确定为所述第一目标路由表项。
5.如权利要求2所述的方法,其特征在于,所述基于所述目标子树根节点,在DRAM中查找与剩余IP地址相匹配的目标子树,基于所述目标子树确定第二目标路由表项,包括:
在DRAM中查找与所述目标子树根节点的存储地址相对应的目标子树地址;
将所述目标子树地址中存储的子树确定为与剩余IP地址相匹配的所述目标子树;
基于最长前缀匹配算法,将所述目标子树中与所述剩余IP地址相匹配的路由信息确定为所述第二目标路由表项。
6.如权利要求1所述的方法,其特征在于,所述将所述第一目标路由表项和所述第二目标路由表项进行组合,得到与所述目标IP地址相匹配的目标路由表项,包括:
确定所述第一目标路由表项中的最后一个路由数值;
将所述第一目标路由表项的所述最后一个路由数值与所述第二目标路由表项进行串行连接,得到串行连接后的第一目标路由表项和第二目标路由表项;
将所述串行连接后的第一目标路由表项和第二目标路由表项,确定为与所述目标IP地址相匹配的所述目标路由表项。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
确定并输出与所述目标路由表项对应的下一跳信息。
8.一种查找路由表项的装置,其特征在于,包括:
第一查找单元,用于在静态随机存取存储器SRAM中查找与目标IP地址相匹配的目标子树根节点,其中,所述SRAM包括用于指示路由表项信息的子树根节点集合,所述子树根节点集合包括相连接的多个子树根节点,所述多个子树根节点中的每个子树根节点包括前缀,所述多个子树根节点的前缀的长度不固定,所述目标子树根节点的前缀用于表征所述目标子树根节点与所述子树根节点集合的树根节点之间的路由信息;
确定单元,用于基于所述目标子树根节点的前缀确定第一目标路由表项;
第二查找单元,用于基于所述目标子树根节点,在动态随机存取存储器DRAM中查找与剩余IP地址相匹配的目标子树,基于所述目标子树确定第二目标路由表项,其中,所述剩余IP地址是所述目标IP地址中,除与所述第一目标路由表项相一致的IP地址之外的剩余部分;所述目标子树根节点包括至少一个子树,所述至少一个子树用于表征所述目标子树根节点包括的路由信息;所述目标子树为所述至少一个子树中之一;
组合单元,用于将所述第一目标路由表项和所述第二目标路由表项进行组合,得到与所述目标IP地址相匹配的目标路由表项。
9.一种智能终端,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于读取并执行所述存储器中存储的可执行指令,以实现如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行如权利要求1-7任一项所述的方法。
Publications (1)
Publication Number | Publication Date |
---|---|
CN118282943A true CN118282943A (zh) | 2024-07-02 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7418505B2 (en) | IP address lookup using either a hashing table or multiple hash functions | |
Basu et al. | Fast incremental updates for pipelined forwarding engines | |
US6633548B2 (en) | Method and apparatus for ternary content addressable memory (TCAM) table management | |
US6434144B1 (en) | Multi-level table lookup | |
JP5529976B2 (ja) | 高速ipルックアップのためのシストリック・アレイ・アーキテクチャ | |
US6880064B1 (en) | Method and apparatus for physical width expansion of a longest prefix match lookup table | |
US6985483B2 (en) | Methods and systems for fast packet forwarding | |
KR100745693B1 (ko) | Tcam 테이블 관리 방법 | |
Bando et al. | Flashtrie: Hash-based prefix-compressed trie for IP route lookup beyond 100Gbps | |
US20040008634A1 (en) | Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match | |
Le et al. | Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning | |
JP4995125B2 (ja) | 固定長データの検索方法 | |
US20050083937A1 (en) | IP address lookup method using pipeline binary tree, hardware architecture, and recording medium | |
WO2003069509A2 (en) | Efficient ipv4/ipv6 best matching prefix method and apparatus | |
JP5960863B1 (ja) | 検索装置、検索方法、プログラム、及び記録媒体 | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
US10771386B2 (en) | IP routing search | |
US7478109B1 (en) | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes | |
CN114884877B (zh) | 一种哈希表和HOT相结合的IPv6路由查找方法 | |
Lim et al. | Binary searches on multiple small trees for IP address lookup | |
CN118282943A (zh) | 一种查找路由表项的方法及装置 | |
US10476785B2 (en) | IP routing search | |
Park et al. | An efficient IP address lookup algorithm based on a small balanced tree using entry reduction | |
Jangid et al. | Prefix length-based disjoint set tries for IPv6 lookup |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |