CN105814846A - 网络地址查询的前缀树阶段平衡 - Google Patents
网络地址查询的前缀树阶段平衡 Download PDFInfo
- Publication number
- CN105814846A CN105814846A CN201480067866.2A CN201480067866A CN105814846A CN 105814846 A CN105814846 A CN 105814846A CN 201480067866 A CN201480067866 A CN 201480067866A CN 105814846 A CN105814846 A CN 105814846A
- Authority
- CN
- China
- Prior art keywords
- prefix
- sub
- prefix trees
- trees
- memory phase
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/748—Address table lookup; Address filtering using longest matching prefix
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/741—Routing in networks with a plurality of addressing schemes, e.g. with both IPv4 and IPv6
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
平衡包括多个子前缀树的前缀树可以通过将标识前缀树的第一子前缀树的第一根和标识第二子前缀树的第二根存储于第一存储阶段来实现,其中所述第二子前缀树是所述第一子前缀树的直接或间接子项间接子项。表示多个子前缀树的顶点的多个网络地址前缀可以存储于至少一个附加存储阶段。由于所述第一子前缀树位于子前缀树顶层,所述子前缀树顶层可能包括比较少的网络地址前缀,因此将所述第二子前缀树升级至所述子前缀树顶层可以帮助提高存储器利用率。进一步,查询任何收到的网络地址可减少存储器访问时延。
Description
相关申请案交叉申请
本申请要求于2013年12月17日递交的发明名称为“网络地址查询的前缀树阶段平衡”的第14/108,581号美国专利申请的优先权,该在先申请的内容以引入的方式并入本文。
技术领域
本发明通常涉及网络通信,尤其是涉及网络地址查询的前缀树阶段平衡。
背景技术
通信系统采用报文交换,其中报文可以从一个路由器跨越网络或子网络传输至另一个路由器。为了转发流量,路由器可以使用路由表来查询下一跳的地址和出端口。这种路由表可以称为转发信息库(forwardinginformationbase,FIB),其中报文的目的地址可以是FIB中的键值。
接收到报文时,路由器可以进行网络地址查询,以找到报文的目的地址和网络地址前缀之间的最长前缀匹配,随后确定对应的出接口。因此,有效智能地存储和访问这种信息可以改进查询流程,因而是当今联网方案中的具有挑战性的问题。
前缀树查询是一种广泛应用的在路由器中实现网络地址查询的技术。前缀树可以是树形数据结构,其中树中节点的位置表示对应的路径键值。前缀树中的节点可以表示到该节点的位置的最长前缀匹配(longestprefixmatch,LPM),这一点对于在FIB中表示网络地址前缀是很有用的。前缀树查询技术可以通过检查多个比特来进行网络地址查询的多比特前缀树进一步改进。基于多比特前缀树的算法可以通过流水线式的前缀树层级或阶段实现;然而,处于不同前缀树阶段的网络地址前缀的数量有时可能极不平衡,导致前缀较少的阶段的低存储器利用率。因此,为提高网络地址查询操作的效率,需要平衡前缀树阶段和对应的存储器。
发明内容
在示例性实施例中,平衡包括多个子前缀树的前缀树可以通过将标识前缀树的第一子前缀树的第一根和标识第二子前缀树的第二根存储于第一存储阶段来实现,其中所述第二子前缀树是所述第一子前缀树的直接或间接子项。进一步,表示多个子前缀树的顶点的多个网络地址前缀可以存储于至少一个附加存储阶段中。由于所述第一子前缀树位于子前缀树顶层,所述子前缀树顶层可能包括比较少的网络地址前缀,因此将所述第二子前缀树升级至所述子前缀树顶层可以帮助提高存储器利用率。
公开的示例性实施例可有助于在查询传入的网络地址的最长前缀匹配(longestprefixmatch,LPM)时减少存储器访问时延。在收到包括网络地址的报文后,网络路由器可以先查询所述第一存储阶段,以从存储于其中的所述第一根和所述第二根中确定匹配根具有最多字节且与所述网络地址的若干最高有效位(mostsignificantbit,MSB)完全匹配。如果标识所述第二子前缀树的第二根的比特与所述MSB匹配,可以确定所述第二根为所述匹配根。相应地,可以快速查询位于所述第二子前缀树的LPM,而不需要遍历其他子前缀树,从而加快查询流程。
公开的示例性实施例可以通过先查询三态内容寻址存储器(ternarycontent-addressablememory,TCAM)来确定匹配根的全部比特都与收到的网络地址中的若干MSB匹配的来改进网络地址查询。所述匹配根可以是存储于前缀树的TCAM中的多个子前缀树根中的一个,且所述匹配根标识的顶点可以是所述前缀树的根的直接或间接子项。然后,可以查询非TCAM存储器来确定LPM与直接尾随着所述网络地址中所述MSB的第二若干比特有最长匹配。所述LPM可以是存储在非TCAM存储器中的多个网络地址前缀之一,并且可以是所述匹配根的直接或间接子项。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1示出了基于前缀树的查询算法的示例性实施例;
图2A示出了三态内容寻址存储器(ternarycontent-addressablememory,TCAM)平衡的基于前缀树的查询算法的示例性实施例;
图2B示出了在存储器系统中实现的搜索管道的示例性实施例;
图3示出了丰富前缀树平衡查询算法的示例性实施例;
图4示出了阶段间升级平衡的基于前缀树的查询算法的示例性实施例;
图5示出了在平衡的前缀树中的搜索管道的另一个示例性实施例;
图6示出了一种方法的示例性实施例;
图7示出了网络设备或单元的示例性实施例。
具体实施方式
首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
网络路由器可以有几个存储在转发信息库(forwardinginformationbase,FIB)中的网络地址前缀。这些前缀可以由前缀树上的具体节点表示。运行时,假设报文和网络地址一起到达所述路由器。然后,发起查询流程,检查所述地址中的各个比特并对所述前缀树进行对应的遍历。遍历时,每当找到与FIB中的前缀对应的节点时,查询流程则确定所述地址与所述前缀匹配。该流程继续执行直到找到存储在与所述地址相对应的FIB中的最长前缀。该匹配称为最长前缀匹配(longestprefixmatch,LPM)。后续对所述报文的转发操作基于所述LPM进行。
图1示出了示例性的基于前缀树的传统的查询实现方式10。在实现方式10中,假设长度为10比特的互联网协议(InternetProtocol,IP)地址为例,然而应当理解的是同一概念可以适用于任何其他长度或类型的网络地址,如32比特长的第四版IP(InternetProtocolversion4,IPv4)地址、128比特长的IPv6地址或64比特长的媒体接入层(MediaAccessControl,MAC)地址。如图1所示,前缀表130包括一列网络地址前缀,所述网络地址前缀表示为P1至P9并可以存储在路由器的FIB中。所述前缀表130中列出的前缀可能由更高级的系统预先确定并且可表示示例性FIB。前缀树100包括多个节点或顶点101至123并表示所述前缀表130示出的前缀。在前缀树100中,左边缘可以指示二进制0,右边缘可以指示二进制1。例如,从根节点101到节点102的右边缘对应1,从节点102到节点103的左边缘对应0。所述前缀树100中所有其他边缘都遵循同一模式。例如,从根节点101至叶子节点114的遍历可通过一次右遍历至节点102、一次右遍历至节点104、一次右遍历至节点107、一次左遍历至节点110以及一次右遍历至节点114。因此,节点114表示前缀P4:11101。进一步,如图1所示,基于广度优先顺序对节点101至121进行编号,其中父节点可优先于子节点,左子节点可优先于右子节点。
注意前缀后的星号(“*”)表示在此之后的任意比特组合,而并不是所述前缀本身的一部分。例如,所述前缀表130中P1表示“*”,表示P1可以是任何网络地址的前缀。因为在所述前缀树100中根节点101不需要任何遍历,所以节点101表示P1。又例如,P4表示“11101*”,表示P4可以是任何以“11101”开头的网络地址的前缀。换言之,P4与网络地址前缀“11101”对应并由节点114表示。同样,请注意所述前缀树100的构建是为了表示存储在网络路由中的前缀。因此,所述前缀树100中的一些节点可能不与任何前缀对应。这些非前缀或中间顶点在图1中用白色圆圈表示,而前缀节点在图1中用黑色圆圈表示。
在查询流程中,可以同时检查传入的网络地址的多个比特。每次检查的比特的数量可以称为步长。如图1所示,表示前缀P1至P9的所述前缀树100可划分为子前缀树,每个子前缀树都表示所述步长的树遍历。因此,所述前缀树100可以称为多比特前缀树。在实现方式10中,我们假设步长为3。基于所述步长,所述前缀树100划分为8个子前缀树,表示为T1至T8。对于步长3来说,少于3比特的所有前缀(前缀P1)都可以用子前缀树T1来表示。子前缀树T2是子前缀树T1的子项子前缀树,表示子前缀树T2所表示的所有前缀的前两个比特(即,所述步长之前的比特)表示经过子前缀树T1的路径遍历。例如,P2(“1000”)的前两个比特与从节点101经由节点102到节点103的路径相对应。同样地,子前缀树T3和T4是子前缀树T1的子项子前缀树,子前缀树T5是子前缀树T2的子项子前缀树,子前缀树T6和T7是子前缀树T3的子项子前缀树,子前缀树T8是子前缀树T4的子项子前缀树。请注意子项子前缀树关系是可传递的。例如,由于子前缀树T5是子前缀树T2的子项子前缀树,子前缀树T2是子前缀树T1的子项子前缀树,因此子前缀树T5也是子前缀树T1的子项子前缀树。此外,子前缀树可以分为不同层级,也可以称为前缀树阶段。例如,第一层可以包括子前缀树T1,而第二层可以包括子前缀树T2、T3和T4。第三层可以包括子前缀树T5、T6、T7和T8。
各个子前缀树的特点在于与所述前缀树相关联的一个或多个前缀,以及一个或多个子项子前缀树。因此,子前缀树可以通过以下数据结构表示:前缀树节点、前缀节点以及路由元素(routingelement,RE)阵列。在图1中,前缀树节点151至158分别表示子前缀树T1到T8。为标识所述子前缀树的子项子前缀树,每个子前缀树可以有一个前缀树节点。前缀树节点151可以保持与其子项子前缀树节点相对应的位图或其他信息。前缀节点161至168分别表示子前缀树T1至T8,且前缀树节点151至158分别指向前缀节点161至168。为标识子前缀树表示的前缀,每个子前缀树可以有一个前缀节点。前缀节点161可以保持子前缀树表示的各个前缀的其他信息对应的位图。RE阵列171至178分别表示子前缀树T1至T8,且前缀节点161至168分别指向RE阵列171至178。每个子前缀树可以有一个RE阵列。前缀节点161可以包括指向RE阵列171的指针,其中RE阵列171中的一个或多个元素可以包括前缀节点161所标识的前缀(例如,P1)的转发信息。各个前缀的转发信息可以包括下一跳网络路由器的网络地址和对应的出接口。
前缀节点标识的前缀可以通过偏移编码来表示。例如,由于步长为3,图1中的每个子前缀树都可以有多达7个节点,即使其中一些节点没有在图1中示出。这些节点可以按照它们的广度优先顺序来编号,所导致的前缀编码称为偏移编码。例如,P1是子前缀树T1的第一个节点并表示为与偏移编码值1相对应的比特串“001”。又例如,P3是子前缀树T3的第四个节点并表示为与偏移编码值4相对应的比特串“100”。
运行时,网络路由器可以接收带10比特的IP地址“1010011000”的报文。为查询该IP地址,用步长3遍历或查询前缀树100(因此总共4步)。具体地,比照第一步“101”先检查根子前缀树T1,而P1记录为根前缀树T1内的当前最长前缀匹配(longestprefixmatch,LPM)。接下来,第一步“101”可以用于选择子项子前缀树T3,通过比照第二步“001”可发现,T3中的P3为当前LPM。然后,第二步“001”可以用于选择子项子前缀树T7,通过比照第三步“100”可发现,P7为当前LPM。如图1所示,由于T7没有任何子项子前缀树,且第四步“0”是最后一步,实现方式10可以确定T7中的P7为最终LPM。一旦找到最终LPM,可以通过前缀节点167中的相应指针来访问RE阵列177,其中,可以检索到该匹配的转发信息。
实践中,该基于前缀树的多比特查询实现方式10可能需要大量的存储器空间来存储前缀树节点,以及很高的存储器宽带以在每前缀树步长的基础上访问前缀树节点和前缀节点。此外,在图1的前缀树中,前缀分布可能会歪斜,其中第一、第二、第三子前缀树层分别有1、3和5个前缀。在传统FIB中,前缀分布不平衡很典型,其中,前面几个前缀树阶段的前缀可能很少,而后面的一个或两个阶段则有大量前缀。子前缀树层可映射至对应的存储阶段,其中每个存储阶段存储与对应的子前缀树层相同数量的前缀。由于高密度存储器用于前缀树阶段,该不平衡前缀分布导致了存储器浪费,尤其是在前几个阶段。对数据中心和云应用来说,使用现有算法很难达到如高吞吐量(例如,每秒太比特)和低时延等要求。
在此所公开的是平衡前缀树阶段的示例性实施例,用以提高网络地址查询效率。由于包括多个子前缀树层或阶段的前缀树在不同子前缀树层可能包含数量不均匀的网络地址前缀,该示例性实施例可以通过将某些前缀从较后和较密集的层级升级至较前和较不密集的层级来平衡各层级。例如,在包括多个存储阶段或块的存储器系统中,第一存储阶段可以是三态内容寻址存储器(ternarycontent-addressablememory,TCAM)或非TCAM,并且可以存储多个标识不同层级上的多个子前缀树的根(例如,第一根可以标识第一子前缀树,第二根可以标识第二子前缀树,所述第二子前缀树为所述第一子前缀树的直接或间接子项)。附加存储阶段可以是非TCAM并可以存储表示所述前缀树的子前缀树的信息。
在使用中,网络地址可以由网络路由器接收,其后可进行地址查询。在搜索管道中,可以先查询第一存储阶段,用以从存储于此的多个比特中确定具有最多字节且与所述网络地址的若干最高有效位(mostsignificantbit,MSB)完全匹配的匹配根。例如,如果标识子项子前缀树的第二根的比特与所述MSB匹配,则可以确定第二根为匹配根;否则,可以确定标识前缀树本身的第一根为匹配根。此外,为了进一步平衡不均匀的前缀树,可以通过阶段间的前缀树升级来平衡子前缀树层级,其中一个或多个子前缀树可以通过丰富前缀树节点转移到较前的阶段。通过此处所公开的示例性实施例来平衡子前缀树层级可带来更高效的存储器利用率,同时降低带宽要求和存储器访问时延。
图2A示出了在网络路由器中,TCAM平衡的基于前缀树的查询实现方式20的示例性实施例。所述实现方式20可以使用包括201至223的多个节点的前缀树200,其中前缀表230示出了对应的前缀。前缀树节点251至258分别表示子前缀树T1至T8,且前缀节点261至268分别指向前缀树节点251至258。前缀节点261至268还分别表示子前缀树T1至T8,并分别指向RE阵列271至278。请注意同一标号在此处不同的图中可指不同元素(例如,T1在图1中指子前缀树101,而在图2A中指子前缀树201)。所述公开的查询实现方式20可采用TCAM280来实现前缀升级和前缀树阶段平衡。TCAM是内容可寻址存储器(contentaddressablememory,CAM)的一种特殊类型,允许对存储的数据字如网络地址中的一个或多个比特的“X”或“不必关注”的三重匹配状态。相比之下,非TCAM存储器,如二进制CAM,可以使用包括0和1的数据搜索字。
如上所述,图1中的前缀树100包含所述前缀树的不同子前缀树层级中的不均匀前缀。在实践中,这可能有益于生成一个更平衡的前缀树结构,增加存储器利用效率。在此,子前缀树T8可以从实现方式10所示的第三层升级到实现方式20所示的第一层。在实现方式10中子前缀树T8的顶顶点为节点118。从节点101至叶子节点118的遍历可能通过一次右遍历至节点102、一次右遍历至节点104、一次右遍历至节点107、一次左遍历至节点110、一次左遍历至节点113和一次右遍历至节点118。因此,节点118表示根“111001*”。图1中的节点118可对应图2A中的节点218,其中相关联的子前缀树T8现位于前缀树200的第一层。相应地,子前缀树T8对应的节点218、222和223,前缀树节点258,前缀节点268和RE阵列278也可以位于第一子前缀树层。
在示例性实施例中,TCAM280可以用于存储标识2个子前缀树的2个根,即第一根“*”和第二根“111001*”。第一根“*”可以是通配符条目,可以是任何网络地址的前缀,而所述第二根“111001*”,有时也叫路径键值,可以指示前缀树200中从根节点201到子前缀树T8的顶顶点218的遍历路径。请注意TCAM280被认为是第一存储阶段,而图2所示的1至3层级则可分别被认为是2、3和4存储阶段。
在查询过程中,当网络路由器接收到网络地址时,实现方式20中,可以首先查询存储在TCAM280中的2个根,以确定哪个根与所述网络地址有最长匹配。如果所述网络地址与前缀“111001*”不匹配,那么所述地址与通配符条目“*”匹配,所述通配符条目“*”可包括指向前缀树节点251的指针并指向子前缀树T1。实现方式20可以继续进行以检查子前缀树T1并继续遍历穿过所述前缀树的其余部分。
相反,如果网络地址与前缀“111001*”匹配,那么实现方式20中,可以访问前缀树节点258和前缀节点268。前缀“111001*”条目可包括指向前缀树节点258和前缀节点268的指针,两者都对应子前缀树T8。随后可通过前缀节点268中的对应指针来访问RE阵列278,并可从所述阵列中检索到该匹配的转发信息。例如,实现方式20可以用于查询IP地址“1110011000”。可以首先搜索TCAM280中的条目,从而可为子前缀树T8的根“111001*”找到LPM匹配。然后,可以读取前缀树节点258和前缀节点268,从而可为前缀P9找到LPM匹配。最后,可读取RE阵列278从而检索到转发信息。
应理解的是,在实施方式20中,即使子前缀树T8从第三子前缀树层升级到第一子前缀树层,子前缀树T8仍可被认为是子前缀树T4的直接子项和子前缀树T1间接子项。即,T4是T8的直接父子前缀树,T1是T8的间接父子前缀树。为了适应子前缀树T8的升级,表示为“pa_ptr”的父指针可添加到前缀节点268。指针“pa_ptr”可指向对应位于T4的P4的RE阵列274,因为P4是子前缀树T8的父前缀。例如,实现方式20可用于查询IP地址“1110010000”。在检查TCAM280后可为子前缀树T8的根“111001*”找到LPM匹配。可以读取前缀树节点258,并且可找不匹配项。因此,指针“pa_ptr”可用于读取RE阵列274,以找到前缀P4,因为P4是所找到的最佳匹配。
子前缀树的编码可以使用各种方案来进行。例如,相对密集的子前缀树可以编码为位图,而相对稀疏的子前缀树可以编码为丰富前缀节点。关于子前缀树编码、丰富前缀树节点、前缀节点等的更多细节可以在2012年5月4日Z.Wang等人递交的名称为“优化的基于前缀树的地址查询”的第13/464,840号美国专利申请案和在2013年6月18日Z.Wang等人递交的名称为“通过统一哈希前缀树的互联网协议和以太网查询”的第13/920,306号美国专利申请案中找到,两者的内容以引入的方式并入本文。
图2B示出了可在存储器系统中实现的搜索管道25的示例性实施例。管道25可采用一系列在基于前缀树的网络地址查询期间访问的存储阶段。这些存储阶段可包括升级阶段280、多个前缀树节点阶段282(编号从1到整数N)、前缀节点阶段284以及RE阶段286。换言之,第一存储阶段可用于实现所述升级阶段280,第二存储阶段可用于实现前缀树节点阶段1,第三存储阶段可用于实现前缀树节点阶段2等等。应注意的是可通过多个存储阶段或一个存储阶段来实现前缀树节点阶段。进一步,每个附加存储阶段可分别用于实现所述前缀节点阶段284和所述RE阶段286。对应于实现方式20,所述第一存储阶段可采用TCAM,而其他存储阶段可采用非TCAM存储器,如静态随机存取存储器(staticrandomaccessmemory,SRAM)和/或嵌入式动态随机存取存储器(embeddeddynamicrandomaccessmemory,eDRAM)。
在管道25中,标识图2A中的子前缀树T1和T8的TCAM根条目可存储于所述升级阶段280中。接下来,紧跟着就是所述前缀树节点阶段282,为了前缀树平衡,有需要的话可进行阶段间升级。然后,管道25可到达前缀节点阶段284,其中多个网络地址前缀存储于表示逻辑节点的数据结构中。前缀节点阶段284中的每个前缀节点可包括指向RE阶段286中的RE阵列的指针,RE阶段286可以是管道25的最后阶段。
根据此处所公开的示例性实施例,可以利用一个或多个TCAM来存储子前缀树根以及实现平衡的前缀树阶段。然而,在实践中,就面积和功率来说TCAM可能相对昂贵。此处所公开的前缀树阶段平衡的另一种方法包括添加通过非TCAM存储器实现的前缀树升级阶段。例如,片上存储器块,如SRAM或eDRAM,可用于存储信息而无需任何TCAM。
图3示出了丰富前缀树平衡的查询实现方式30的示例性实施例。所述实现方式30采用包括301至323的多个节点的前缀树300,其中前缀表330示出了对应的前缀。前缀树节点351至358分别表示子前缀树T1至T8,并分别指向前缀节点361至368。前缀节点361至368还分别表示子前缀树T1至T8,并分别指向RE阵列371至378。所公开的查询实现方式30可采用前缀树升级阶段,前缀树升级阶段可在丰富前缀树节点380中存储升级了的的子前缀树根。丰富前缀树节点可以是数据结构,通过一个或多个子前缀树根表示一个或多个子前缀树及其选择的子项子前缀树。在此,与实现方式20中的TCAM280的用途类似,丰富前缀树节点380可用于存储SRAM或eDRAM中的子前缀树根T8。
与图2中的TCAM280类似,所述丰富前缀树节点380可用于存储标识子前缀树的多个根。具体地,丰富前缀树节点380可为步长大小为3比特的子前缀树T8存储根“111001”,并可以包括2个4比特(4’b)字段:4’b1111表示为“g”且4’b0001表示为“h”。所述4比特字段“g”和“h”中的每个MSB都可以是比特标记,指示子前缀树根是否有附加字段要检查。例如,字段“g”的MSB是1,这表示该子前缀树根有更多字段(例如,字段“h”)要检查。在字段“h”中,MSB是0,这表示“h”是所述子前缀树根的最后字段。字段“h”和字段“g”中剩余的3个比特分别为“111”和“001”,分别标识所述子前缀树根的3个MSB和3个最低位(leastsignificantbit,LSB)。通常,可用一个或多个字段对升级了的子前缀树根进行编码,其中最后字段的MSB为0,其他每个字段的MSB为1。对每个字段来说,MSB后面的剩余比特表示所述子前缀树根的一部分。
在查询流程中,实现方式30中,可以首先检查存储于升级阶段的丰富前缀树节点380中的两个字段“g”和“h”的匹配。如果网络地址与子前缀树根“111001”不匹配,则访问前缀树节点351,且实现方式30中,可以如前所述一样遍历前缀树300中的剩余节点。如果网络地址与子前缀树根“111001”匹配,则可访问对应子前缀树T8的前缀树节点358。前缀树节点358可指向前缀节点368,且可访问RE阵列378来检索该匹配的转发信息。前缀节点368还可包括父指针“pa_ptr”,“pa_ptr”可指向子前缀树T8的父前缀P4所对应的RE阵列374。
存储阶段较少的前缀树可有助于在所述存储阶段中生成平衡的前缀分布。因此,在其他示例性实施例中,为了升级子项子前缀树,丰富前缀树节点也可以在前缀树层级而非第一子前缀树层级中采用。图4示出了阶段间升级平衡的基于前缀树的查询实现方式40的示例性实施例。实现方式40采用包括401至423的多个节点的前缀树400,其中前缀表430示出了对应的前缀。前缀树节点452至458分别表示子前缀树T2至T8,并分别指向前缀节点462至468。前缀节点462至468还分别表示子前缀树T2至T8,并分别指向RE阵列472至478。
实现方式40中,可通过图3所述的前缀树升级阶段,在第一丰富前缀树节点480中,存储多个子前缀树根,如标识T8和T5的子前缀树根。具体地,T8的根“111001”可存储于字段“g”和“h”中,而T5的根“100000”可存储于字段“i”和“j”中。每个所述字段都可有上述的比特标记和来自对应子前缀树根的3个比特。
进一步,为了进行阶段间升级,实现方式40可利用第二丰富前缀树节点451,其中子前缀树T6和T7从前缀树400的第三层转移至第二层。丰富前缀树节点451可指向前缀节点461,而前缀节点461可指向RE阵列471。此处,丰富前缀树节点451可用于通过3比特的步长大小,将子前缀树T6和T7的根“101000”和“101001”分别存储于四个4比特字段中。T6的根可存储于字段“m”和“n”中,而T7的根可存储于字段“o”和“p”中。如前所述,每个字段可包括比特标记MSB,后跟着关联的子前缀树根中的3个比特。
可为子前缀树T5至T8将父指针“pa_ptr”分别添加至前缀节点465至468中。每个父指针可指向与某一个子前缀树的父前缀对应的RE阵列。例如,子前缀树T5的父前缀是P2,子前缀树T6和T7的父前缀是P3,子前缀树T8的父前缀是P4。因此,子前缀树T5至T8的“pa_ptr”分别指向RE阵列475至478。在查询流程中,如果发现前缀不匹配,可以访问这些阵列。
图4中子前缀树升级的结果是可以实现平衡的两层的前缀树,其中第三层可从前缀树400中移除。如前文所述,存储阶段较少的前缀树400可在所述存储阶段中生成更平衡的前缀分布。例如,图1所示的前缀树100包括的前缀树层中挤满了数量不均匀的子前缀树和前缀。具体地,前缀树100的第一层包括1个子前缀树,而第三层包括4个子前缀树。前缀树100的第一层的对应存储阶段可能未充分利用,而第三层的存储阶段则可能过度使用或不堪重负。相比之下,通过升级子前缀树到较前层级,前缀树400包括的第一层有5个前缀而第二层也有5个前缀。因此,对IPv4或IPv6中的网络地址查询来说,前缀树400更平衡更高效。此外,通过在升级阶段和中间前缀树阶段中利用丰富前缀树节点和非TCAM存储器,丰富前缀树平衡可以避免与利用TCAM相关联的缺点。
图5示出了平衡的前缀树中搜索管道50的另一示例性实施例。普通技术人员将认识到管道50和上述管道25之间的类似点,为了简洁,进一步描述将关注不同或还未涉及的方面。搜索管道50可以采用一系列在基于前缀树的IP查询期间访问的存储阶段。这些存储阶段可包括升级阶段580、多个丰富前缀树节点阶段582(编号从1到整数N)、丰富前缀节点阶段584以及RE阶段586。换言之,第一存储阶段可用于实现所述升级阶段580,第二存储阶段可用于实现丰富前缀树节点阶段1,第三存储阶段可用于实现丰富前缀树节点阶段2等等。应注意的是可通过多个存储阶段或一个存储阶段来实现丰富前缀树节点阶段。进一步,每个附加存储阶段可分别用于实现所述前缀节点阶段584和所述RE阶段586。对应于实现方式30或40,所述多个存储阶段可采用非TCAM存储器或存储器块来实现,如SRAM和/或eDRAM。
在管道50中,标识图3中子前缀树T1和T8的根条目可存储于升级阶段580中。例如,升级阶段580可由LPM搜索键值的10个MSB来寻址并可包括丰富前缀树节点以实现前缀树升级。接下来,紧跟着就是所述前缀树节点阶段582,为了前缀树平衡,有需要的话可进行阶段间升级。然后,管道50可到达丰富前缀节点阶段584,其中多个网络地址前缀存储于表示逻辑节点的数据结构中。丰富前缀节点阶段584中的每个前缀节点可包括指向RE阶段586中的RE阵列的指针,RE阶段586可以是管道50的最后阶段。
图6示出了存储平衡的前缀树及通过所述平衡的前缀树来查询传入的网络地址的方法600的示例性实施例。方法600可以由网络单元如路由器来实现,所述路由器包括多个存储阶段,包括第一存储阶段以及耦合到第一存储阶段的至少一个附加存储阶段。请注意丰富前缀树节点阶段可包括一个或多个所述存储阶段。方法600开始于步骤610,其中标识前缀树的第一子前缀树的第一根可存储于第一存储阶段。请注意所述前缀树可包括多个子前缀树,包括第一子前缀树和第二子前缀树,所述第二子前缀树为第一子前缀树的直接或间接子项。
步骤620中,方法600可以将标识所述第二子前缀树的第二根存储于所述第一存储阶段。请注意第一存储阶段可存储任意多个根,且每个根可标识相关联的子前缀树,所述子前缀树为直接或间接子项子前缀树。第二根可指除了第一根的任意根并可指示从第一根到第二子前缀树的顶顶点的遍历路径。如上所述,所述第一存储阶段可通过任何合适的存储介质,如TCAM或非TCAM阶段或块来实现。在非TCAM的情况下,第一存储阶段可以是丰富前缀树节点阶段,第一和第一根和第二根都可作为丰富前缀树节点的条目存储于所述丰富前缀树节点阶段中。进一步,存储根如所述第二根的条目可包括若干字段,其中该条目的最后字段可包括一个表明该最后字段的后面无附加字段的MSB,而且所述条目除了最后字段的所有其他字段都可包括一个表明一个或多个附加字段的MSB。每个字段中跟在MSB后的比特可包括根的比特。若有需要,第一存储阶段可以容纳更多根(例如,在图4中,丰富前缀树节点480表示的第一存储阶段容纳了标识子前缀树T1、T5和T8的根)。
步骤630中,方法600可在所述至少一个附加存储阶段中存储多个表示多个子前缀树的顶点的路径键值。由于升级的原因,所述多个子前缀树可在不同的子前缀树层,每个子前缀树层对应所述至少一个附加存储阶段中的一个。例如,第一子前缀树层(1层)可对应第二存储阶段(因为第一存储阶段可对应第一和第二根而不是任何子前缀树层),而第二子前缀树层(2层)可对应第三存储阶段。进一步,所述多个网络地址前缀可存储于多个前缀节点中,每个前缀节点均包含一个或多个网络地址前缀。具体地,表示所述第一子前缀树和所述第二子前缀树的顶点的网络地址前缀可存储于第二存储阶段。每个附加存储阶段都可以是丰富前缀树节点阶段,更多关于在丰富前缀节点中存储前缀的格式的细节,可在编号为13/464,840的美国专利申请中找到。
步骤640中,方法600可以接收包括网络地址的报文。该报文可通过任何合适的数据通信形式来实现。在步骤650中,方法600可以查询所述第一存储阶段来确定匹配根具有所述网络地址的最多比特且与所述网络地址的若干(该数量取决于第二根的长度)MSB完全匹配,该匹配根为所述第一根和所述第二根中的一个。例如,如果标识第二子前缀树的具有最多比特的第二根的比特与所述MSB完全匹配,可以确定第二根为匹配根;否则,可以确定第一根为匹配根。
步骤660中,方法600可以查询所述至少一个附加存储阶段,以从多个网络地址前缀中确定最长前缀匹配(longestprefixmatch,LPM),其中LPM的比特于所述网络地址中的第二若干比特有最长匹配。请注意所述第二若干比特直接尾随着MSB,且LPM为该匹配根的直接或间接子项。由于存储于第一存储阶段的两个根,确定LPM可能需要查询第一子前缀树和第二子前缀树中的一个,但可无需为同一查询同时遍历第一子前缀树和第二子前缀树。更具体地,如果匹配根为第一根,可在第一子前缀树或作为第一子前缀树的直接或间接子项的任意子前缀树中查询到LPM。如果匹配根是第二根,LPM仅可在第二子前缀树中查询到。尽管第二子前缀树应该位于后面的层级,此处定位第二子前缀树的能力可有助于降低存储器访问时延。
在示例性实施例中,可通过修改上述步骤实现阶段间升级。例如,所述至少一个附加存储阶段还包括第三存储阶段,所述多个子前缀树还包括作为所述第一子前缀树的直接或间接子项的第三子前缀树(请注意所述第三子前缀树可在第二或后面子前缀树层级)例如,图4中的子前缀树T6或T7可以是所述第三子前缀树,是所述第一子前缀树T1的直接子项。在这种情况下,表示所述第三子前缀树的网络地址前缀可存储于第三存储阶段的丰富前缀树节点中,使得在第三子前缀树T6或T7中查询网络地址前缀可以不需要经过其他子前缀树如T3。
步骤670中,方法600可以读取与包含所述LPM的子前缀树所对应的前缀树节点。步骤680中,方法600可读取所述前缀树节点指向的前缀节点,以定位RE指针。步骤690中,方法600可通过读取RE指针指向的RE排列来确定下一跳路由器。最后,在步骤692中,方法600可以转发所述报文至所述下一跳路由器。本领域普通技术人员将认识到,方法600所示的步骤可基于本申请灵活修改,并且,若有需要,其他步骤可在其中并入。
图7示出了网络设备或单元700的示例性实施例,可以是任意用于通过网络传输报文的设备(例如,网络路由器)。所述网络设备700可以包括与接收器712(Rx)耦合的一个或多个入端口710,所述接收器712可用于从其他网络部件中接收报文。所述网络设备700可包括逻辑单元或处理器720,所述逻辑单元或处理器720与所述接收器712耦合,用于处理所述报文或者确定向哪个网络部件发送所述报文。所述处理器720可通过硬件或硬件和软件的组合来实现。所述处理器720可用作一个或多个中央处理器(centralprocessingunit,CPU)芯片、核芯(例如,多核处理器)、现场可编程门阵列(fieldprogrammablegatearray,FPGA)、专用集成电路(application-specificintegratedcircuit,ASIC)和/或数字信号处理器(digitalsignalprocessor,DSP)予以实现。
所述网络设备700还可以包括至少一个存储器722。所述存储器722可以仅包括非TCAM存储阶段,或TCAM和非TCAM存储阶段的组合,或任何其他类型存储器。例如,所述存储器722可以包括TCAM阶段724和非TCAM阶段726。所述TCAM阶段724可以用于存储前缀树根和子前缀树根,以实现独立前缀树。所述非TCAM阶段726可以包括一个或多个SRAM或eDRAM块,并且可以用于存储丰富前缀树节点、前缀节点和RE节点阵列。前缀树升级阶段和一个或多个丰富前缀树也可以存储于所述存储器722中。请注意,在实践中,可能存在所述网络单元700处理的双向流量,因此,一些端口可既接收也发送报文。在这种意义上,所述入端口710和出端口730可以是同位的或者可以认为是与收发机(Rx/Tx)耦合的相同端口的不同功能。所述处理器720、存储器722、接收器712和发射器732(在某些情况下有修改,如用另一个非TCAM代替所述TCAM724)也可以用于实现或支持上述的基于前缀树的实现方式,如所述实现方式20、实现方式30、实现方式40和方法600。
可以理解的是,通过将可执行指令编程和/或加载到所述网络单元700上,可以改变所述处理器720和所述存储器722中至少一个。其结果是,可以将所述网络设备700部分转换成特定的机器或装置(例如,具有本发明介绍的功能的网络路由器)。所述可执行指令可存储在所述存储器722中,并且加载到所述处理器720中执行。对于电气工程和软件工程技术至关重要的是,能够按照公认的设计规则将功能转换为硬件实现方式,所述功能可通过将可执行软件加载到计算机来实现。在软件还是硬件中实现某一概念通常取决于对于待生产单元设计稳定性和数量的考虑,而并非考虑任何涉及从软件领域到硬件领域的转换问题。通常,经常变化的设计可以优先在软件中实现,因为重编硬件实施方式要比重编软件实施方式更加昂贵。通常,稳定性好且大批量生产的设计可以优先在硬件中实现,例如,在ASIC中,由于大批量生产的运行使得硬件实施比软件实施更廉价。通常,一项设计可以以软件的形式进行开发和测试,之后根据公认的设计规则转变为专用集成电路中等效的硬件实施方式,在专用集成电路中用硬件来控制所述软件的指令。按照相同的方式,新型ASIC控制的机器是一种特定机器或装置,同样地,已编程和/或加载可执行指令的计算机也可视为一种特定的机器或装置。
本发明中的任何处理可通过使处理器(例如,通用多核处理器)执行计算机程序来实现。在这种情况下,计算机程序可以提供给使用任意类型的非瞬时计算机可读介质的计算机或网络设备。计算机程序产品可存储在计算机或网络设备的非暂时性计算机可读介质中。非暂时性计算机可读介质包括任何类型的有形存储介质。非瞬时计算机可读介质的示例包括磁存储介质(例如,软盘、磁带、硬盘驱动器等)、光磁存储介质(例如,磁光盘)、只读光盘(compactdiscread-onlymemory,CD-ROM)、可录光盘(compactdisc-recordable,CD-R)、可写光盘(compactdiscrewritable,CD-R/W)、数字多功能光盘(digitalversatiledisc,DVD)、蓝光(注册商标)光盘(Blu-raydisc,BD)和半导体存储器(例如,掩膜ROM、可编程ROM(programmableROM,PROM)、可擦除PROM、闪存ROM和RAM)。计算机程序产品还可提供给使用任意类型的瞬时计算机可读介质的计算机或网络设备。非暂时性计算机可读介质的示例包括电信号、光信号和电磁波。非暂时性计算机可读介质可通过有线通信链路(例如,电线和光纤)或无线通信线路为计算机提供程序。
本发明公开至少一项实施例,且所属领域的普通技术人员对所述实施例和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本发明的范围内。在明确说明数字范围或限制的情况下,此类表达范围或限制可以被理解成包括在明确说明的范围或限制内具有相同大小的迭代范围或限制(例如,从约为1到约为10包括2、3、4等;大于0.10包括0.11、0.12、0.13等)。例如,只要公开具有下限Rl和上限Ru的数字范围,则明确公开了此范围内的任何数字。具体而言,在所述范围内的以下数字是明确公开的:R=Rl+k*(Ru-Rl),其中k为从1%到100%范围内以1%递增的变量,即,k为1%、2%、3%、4%、5%……50%、51%、52%……95%、96%、97%、98%、99%或100%。此外,由上文所定义的两个数字R定义的任何数字范围也是明确公开的。除非另有说明,否则术语约摂是指随后数字的+/-10%。相对于权利要求的任一元素使用术语“选择性地”意味着所述元素是需要的,或者所述元素是不需要的,两种替代方案均在所述权利要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如“由……组成”、“基本上由……组成”以及“大体上由……组成”等较窄术语的支持。因此,保护范围不受上文所陈述的说明限制,而是由所附权利要求书界定,所述范围包含所附权利要求书的标的物的所有等效物。每一和每条权利要求作为进一步揭示内容并入说明书中,且所附权利要求书是本发明的实施例。对所述揭示内容中的参考进行的论述并非承认其为现有技术,尤其是具有在本申请案的在先申请优先权日期之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其它细节。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种示例实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
Claims (20)
1.一种基于前缀树的网路地址查询方法,在包括多个存储阶段的网络路由器中,其中所述多个存储阶段包括第一存储阶段和耦合到所述第一存储阶段的至少一个附加存储阶段,所述方法包括:
在第一存储阶段中存储标识前缀树的第一子前缀树的第一根,其中所述前缀树包括多个子前缀树,所述多个子前缀树包括所述第一子前缀树和第二子前缀树,所述第二子前缀树是所述第一子前缀树的直接或间接子项;
在第一存储阶段中存储标识所述第二子前缀树的第二根;
在所述至少一个附加存储阶段中存储表示所述多个子前缀树的顶点的多个网络地址前缀。
2.根据权利要求1所述的方法,其特征在于,还包括:
接收包括网络地址的报文;
查询所述第一存储阶段来确定匹配根具有所述网络地址的最多比特且与所述网络地址的若干最高有效位(mostsignificantbit,MSB)完全匹配,所述匹配根为所述第一根和所述第二根中的一个;
查询所述至少一个附加存储阶段,以在所述多个网络地址前缀中确定最长前缀匹配(longestprefixmatch,LPM),其中所述LPM的比特与所述网络地址的第二若干比特最长匹配,所述第二若干比特直接尾随着所述MSB,所述LPM是所述匹配根的直接或间接子项,确定所述LPM包括查询所述第一子前缀树和所述第二子前缀树中的一个而不是两个。
3.根据权利要求2所述的方法,其特征在于,所述多个子前缀树分为若干子前缀树层,其中,每个层对应所述至少一个附加存储阶段中的一个,所述至少一个附加存储阶段包括一个或多个丰富前缀树节点阶段,其中每个丰富前缀树节点阶段包括一个或多个丰富前缀树节点,每个丰富前缀树节点存储一个或多个遍历路径,每个所述一个或多个遍历路径表示从子前缀树的顶顶点到直接或间接子项子前缀树的顶顶点的路径,所述第二子前缀树已经从后面的子前缀树层升级至第一前缀树层。
4.根据权利要求2所述的方法,其特征在于,所述至少一个附加存储阶段包括与第一子前缀树层对应的第二存储阶段以及与第二子前缀树层对应的第三存储阶段,其中,表示所述第一子前缀树和所述第二子前缀树的顶点的网络地址前缀存储于所述第二存储阶段中,所述多个子前缀树还包括第三子前缀树,所述第三子前缀树为所述第一子前缀树的间接子项,从所述第一子前缀树到所述第三子前缀树顶顶点的遍历路径存储于所述第二存储阶段,以表明所述第三子前缀树从后面的子前缀树层升级至第二子前缀树层,表示所述第三子前缀树的网络地址前缀存储于所述第三存储阶段,以支持所述升级。
5.根据权利要求4所述的方法,其特征在于,所述第一和第二存储阶段包括在第一和第二丰富前缀树节点阶段中,所述第一根和所述第二根都作为所述第一丰富前缀树节点的条目存储于所述第一前缀树节点阶段中,所述第一子前缀树由存储于第二丰富前缀树节点阶段中的第二丰富前缀树节点中的网络地址前缀表示。
6.根据权利要求2所述的方法,其特征在于,所述第一存储阶段为三态内容寻址存储器(ternarycontent-addressablememory,TCAM),且每个所述至少一个附加存储阶段都为非TCAM阶段。
7.根据权利要求2所述的方法,其特征在于,所述第一根和第二根都存储于所述第一存储阶段中的丰富前缀树节点的条目中,且所述第一存储阶段和所述至少一个附加存储阶段通过静态随机存取存储器(staticrandomaccessmemory,SRAM)块,或加强动态随机存取存储器(embeddeddynamicrandomaccessmemory,eDRAM)块,或以上两者来实现。
8.根据权利要求7所述的方法,其特征在于,存储所述第二根的条目包括若干个字段,其中,所述条目的最后字段包括一个表明所述最后字段后面无附加字段的MSB,所述条目除了最后字段的所有其他字段均包括一个指示一个或多个附加字段的MSB,每个字段中MSB后面的比特包括所述第二根的比特。
9.根据权利要求2所述的方法,其特征在于,所述多个网络地址前缀存储于多个丰富前缀节点中,其中,每个丰富前缀节点包含一个或多个网络地址前缀,所述方法还包括:
读取包含所述LPM的子前缀树对应的丰富前缀树节点;
读取所述丰富前缀树节点指向的丰富前缀节点,以定位路由元素(routingelement,RE)指针;
通过读取所述RE指针指向的RE阵列,确定下一跳路由器;
转发所述报文至所述下一跳路由器。
10.根据权利要求9所述的方法,其特征在于,所述第二根被确定为所述匹配根,其中所述LPM位于所述第二子前缀树中,所述丰富前缀节点对应于所述第二子前缀树,并包括指向所述第二子前缀树的父节点的父指针。
11.根据权利要求2所述的方法,其特征在于,所述存储的网络地址前缀和网络地址包括互联网协议(InternetProtocol,IP)地址和媒体接入层(MediaAccessControl,MAC)地址中的至少一个。
12.一种装置,其特征在于,包括:
第一存储阶段,用于:
存储标识前缀树的第一子前缀树的第一根,其中所述前缀树包括多个子前缀树,所述多个子前缀树包括所述第一子前缀树和第二子前缀树,所述第二子前缀树为所述第一子前缀树的直接或间接子项;
存储标识所述第二子前缀树的第二根;
耦合到所述第一存储阶段的至少一个附加存储阶段,用于存储表示所述多个子前缀树的顶点的多个网络地址前缀;
接收器,用于接收包括网络地址的报文;
耦合到所述接收器、所述第一存储阶段和所述至少一个附加存储阶段的处理器,所述处理器用于确定所述多个网络地址前缀中的一个与所述网络地址有最长前缀匹配(longestprefixmatch,LPM)。
13.根据权利要求12所述的装置,其特征在于,确定所述LPM包括:
查询所述第一存储阶段来确定匹配根具有所述网络地址的最多比特且与所述网络地址的若干最高有效位(mostsignificantbit,MSB)完全匹配,所述匹配根为所述第一根和所述第二根中的一个;
查询所述至少一个附加存储阶段以确定所述LPM与所述网络地址的第二若干比特有最长匹配,其中所述第二若干比特直接尾随着所述MSB,所述LPM为所述匹配根的直接或间接子项,确定所述LPM包括查找所述第一子前缀树和所述第二子前缀树中的一个而不是两个。
14.根据权利要求13所述的装置,其特征在于,所述第一根和第二根都作为第一丰富前缀树节点的条目存储在所述第一存储阶段中,所述至少一个附加存储阶段包括与第一子前缀树层对应的第二存储阶段以及与第二子前缀树层对应的第三存储阶段,其中,表示所述第一子前缀树和所述第二子前缀树的顶点的网络地址前缀存储于所述第二存储阶段中,所述多个子前缀树还包括第三子前缀树,所述第三子前缀树为所述第一子前缀树的间接子项,从所述第一子前缀树到所述第三子前缀树顶顶点的穿越路径存储于所述第二存储阶段,以指示所述第三子前缀树从后面的子前缀树层到第二子前缀树层的升级,表示所述第三子前缀树的网络地址前缀存储于所述第三存储阶段的第二丰富子前缀树节点。
15.根据权利要求13所述的装置,其特征在于,所述第一存储阶段为三态内容寻址存储器(ternarycontent-addressablememory,TCAM),且每个所述至少一个附加存储阶段都为非TCAM阶段。
16.根据权利要求13所述的装置,其特征在于,所述第一根和第二根都存储于所述第一存储阶段的丰富前缀树节点的条目中,在第一丰富前缀树节点中存储所述第二根表明第二子前缀树从后面的子前缀树层升级至第一子前缀树层,存储第二根的条目包括若干字段,其中所述条目的最后字段包括一个表明所述最后字段后面无附加字段的MSB,所述条目除了最后字段的所有其他字段均包括一个指示一个或多个附加字段的MSB,所述条目的每个字段中MSB后面的比特包括所述第二根的比特。
17.根据权利要求16所述的装置,所述第一存储阶段和所述至少一个附加存储阶段通过加强动态随机存取存储器(embeddeddynamicrandomaccessmemory,eDRAM)实现。
18.根据权利要求16所述的装置,所述第一存储阶段和所述至少一个附加存储阶段通过静态随机存取存储器(staticrandomaccessmemory,SRAM)实现。
19.一种计算机程序产品,包括存储于非瞬时性计算机可读介质中的计算机可执行指令,使得在该命令由处理器执行时,网络单元用于:
接收包括网络地址的报文;
查询三态内容寻址存储器(ternarycontent-addressablememory,TCAM)来确定匹配根的所有比特都与所述网络地址中若干最高有效位(mostsignificantbit,MSB)匹配,所述匹配根为存储于前缀树TCAM中的多个子前缀树根中的一个,其中所述匹配根为所述前缀树的根的直接或间接子项;
查询非TCAM存储器来确定最长前缀匹配(longestprefixmatch,LPM)与尾随着所述网络地址的所述MSB的第二若干比特有最长匹配,其中所述LPM是位于包括所述匹配根的子前缀树中的多个网络地址前缀中的一个,所述LPM为所述匹配根标识的顶顶点的直接或间接子项。
20.根据权利要求19所述的计算机程序产品,还包括:使网络单元进行如下操作的指令:
读取与所述子前缀树对应的丰富前缀树节点;
读取所述丰富前缀树节点指向的丰富前缀节点,以定位路由元素(routingelement,RE)指针,其中所述子前缀树对应的所述丰富前缀节点包括指向所述子前缀树的父节点的父指针;
通过读取RE指针指向的RE阵列,识别下一跳路由器;
转发所述报文至所述下一跳路由器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/108,581 | 2013-12-17 | ||
US14/108,581 US9602407B2 (en) | 2013-12-17 | 2013-12-17 | Trie stage balancing for network address lookup |
PCT/CN2014/093920 WO2015090179A1 (en) | 2013-12-17 | 2014-12-16 | Trie stage balancing for network address lookup |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105814846A true CN105814846A (zh) | 2016-07-27 |
CN105814846B CN105814846B (zh) | 2019-06-21 |
Family
ID=53369857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480067866.2A Active CN105814846B (zh) | 2013-12-17 | 2014-12-16 | 网络地址查询的前缀树阶段平衡 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9602407B2 (zh) |
CN (1) | CN105814846B (zh) |
WO (1) | WO2015090179A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121565A (zh) * | 2016-11-28 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 生成指令集编码的方法、装置和系统 |
CN111316255A (zh) * | 2017-11-20 | 2020-06-19 | 华为技术有限公司 | 数据存储系统以及用于提供数据存储系统的方法 |
CN113196260A (zh) * | 2018-12-14 | 2021-07-30 | 美光科技公司 | 能够选择性使用键部分的键值存储树 |
CN113806403A (zh) * | 2021-09-22 | 2021-12-17 | 浙江锐文科技有限公司 | 一种在智能网卡/dpu内降低查找匹配逻辑资源的方法 |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11599552B2 (en) | 2018-10-10 | 2023-03-07 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11657092B2 (en) | 2018-12-26 | 2023-05-23 | Micron Technology, Inc. | Data tree with order-based node traversal |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9680747B2 (en) * | 2012-06-27 | 2017-06-13 | Futurewei Technologies, Inc. | Internet protocol and Ethernet lookup via a unified hashed trie |
US9602407B2 (en) | 2013-12-17 | 2017-03-21 | Huawei Technologies Co., Ltd. | Trie stage balancing for network address lookup |
US11051140B2 (en) * | 2014-09-19 | 2021-06-29 | Texas Instruments Incorporated | Compression of internet protocol version 6 addresses in wireless sensor networks |
CN104601471B (zh) * | 2015-02-02 | 2017-12-01 | 华为技术有限公司 | 一种转发信息表的读写方法及网络处理器 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040249803A1 (en) * | 2003-06-05 | 2004-12-09 | Srinivasan Vankatachary | Architecture for network search engines with fixed latency, high capacity, and high throughput |
CN1929447A (zh) * | 2006-06-01 | 2007-03-14 | 华为技术有限公司 | 地址前缀查找方法和装置以及报文转发方法和系统 |
US20070121632A1 (en) * | 2005-11-28 | 2007-05-31 | Arabella Software, Ltd. | Method and system for routing an IP packet |
CN101741646A (zh) * | 2009-12-11 | 2010-06-16 | 东南大学 | 基于数组链表的大流量网络地址前缀检测方法 |
CN102045412A (zh) * | 2010-12-28 | 2011-05-04 | 赛尔网络有限公司 | IPv6地址前缀压缩存储方法及设备 |
US20110128959A1 (en) * | 2009-12-01 | 2011-06-02 | Masanori Bando | Hash-based prefix-compressed trie for ip route lookup |
US20120023082A1 (en) * | 2010-07-22 | 2012-01-26 | Brocade Communications Systems, Inc. | Longest Prefix Match Using Binary Search Tree |
CN102597973A (zh) * | 2009-08-16 | 2012-07-18 | 康帕斯电子光学系统有限公司 | 用于改善最长前缀匹配的可扩展性的方法和设备 |
US20130034096A1 (en) * | 2010-04-12 | 2013-02-07 | Huawei Technologies Co., Ltd. | Routing table establishment method and device and routing table lookup method and device |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249149B1 (en) | 1999-08-10 | 2007-07-24 | Washington University | Tree bitmap data structures and their use in performing lookup operations |
US6977930B1 (en) | 2000-02-14 | 2005-12-20 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
US20020129086A1 (en) | 2000-08-31 | 2002-09-12 | The Regents Of The University Of California | Cluster-based aggregated switching technique (CAST) for routing data packets and information objects in computer networks |
US6532516B1 (en) | 2001-09-27 | 2003-03-11 | Coriolis Networks, Inc. | Technique for updating a content addressable memory |
US6574701B2 (en) | 2001-09-27 | 2003-06-03 | Coriolis Networks, Inc. | Technique for updating a content addressable memory |
US7899067B2 (en) | 2002-05-31 | 2011-03-01 | Cisco Technology, Inc. | Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match |
US7356033B2 (en) | 2002-11-21 | 2008-04-08 | Lucent Technologies Inc. | Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures |
US7162481B2 (en) | 2002-12-06 | 2007-01-09 | Stmicroelectronics, Inc. | Method for increasing storage capacity in a multi-bit trie-based hardware storage engine by compressing the representation of single-length prefixes |
US7426518B2 (en) * | 2003-03-28 | 2008-09-16 | Netlogic Microsystems, Inc. | System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size |
US20050083937A1 (en) | 2003-10-15 | 2005-04-21 | Hyesook Lim | IP address lookup method using pipeline binary tree, hardware architecture, and recording medium |
US7634500B1 (en) | 2003-11-03 | 2009-12-15 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
US8868790B2 (en) | 2004-02-13 | 2014-10-21 | Oracle International Corporation | Processor-memory module performance acceleration in fabric-backplane enterprise servers |
US7219319B2 (en) | 2004-03-12 | 2007-05-15 | Sensory Networks, Inc. | Apparatus and method for generating state transition rules for memory efficient programmable pattern matching finite state machine hardware |
US7412431B2 (en) | 2004-04-27 | 2008-08-12 | International Business Machines Corporation | Method for managing multi-field classification rules relating to ingress |
US7739445B1 (en) | 2004-06-11 | 2010-06-15 | Srinivasan Venkatachary | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device |
US8713295B2 (en) | 2004-07-12 | 2014-04-29 | Oracle International Corporation | Fabric-backplane enterprise servers with pluggable I/O sub-system |
US20060155915A1 (en) | 2004-12-30 | 2006-07-13 | Pereira Jose P | Database query processor |
US7707217B2 (en) | 2005-01-24 | 2010-04-27 | 3Com Corporation | Trie search engines and ternary CAM used as pre-classifier |
JP4556761B2 (ja) | 2005-05-06 | 2010-10-06 | 株式会社日立製作所 | パケット転送装置 |
US7653670B2 (en) | 2005-11-28 | 2010-01-26 | Nec Laboratories America, Inc. | Storage-efficient and collision-free hash-based packet processing architecture and method |
US7624226B1 (en) | 2005-12-20 | 2009-11-24 | Netlogic Microsystems, Inc. | Network search engine (NSE) and method for performing interval location using prefix matching |
US7725510B2 (en) | 2006-08-01 | 2010-05-25 | Alcatel-Lucent Usa Inc. | Method and system for multi-character multi-pattern pattern matching |
KR20080083828A (ko) | 2007-03-13 | 2008-09-19 | 삼성전자주식회사 | 상태기반 패킷필터링 장치 및 그 장치에서의 테이블 관리방법 |
US7805393B1 (en) | 2007-07-30 | 2010-09-28 | Netlogic Microsystems, Inc. | Assigning encoded state values to a search tree according to failure chains |
US8089961B2 (en) | 2007-12-07 | 2012-01-03 | University Of Florida Research Foundation, Inc. | Low power ternary content-addressable memory (TCAMs) for very large forwarding tables |
CN101577662B (zh) * | 2008-05-05 | 2012-04-04 | 华为技术有限公司 | 一种基于树形数据结构的最长前缀匹配方法和装置 |
US8166536B1 (en) | 2009-02-10 | 2012-04-24 | Juniper Networks, Inc. | Transformation of network filter expressions to a content addressable memory format |
US7986696B1 (en) | 2009-02-12 | 2011-07-26 | Compass Electro-Optical Systems | Method and apparatus for longest prefix matching |
US8090901B2 (en) | 2009-05-14 | 2012-01-03 | Brocade Communications Systems, Inc. | TCAM management approach that minimize movements |
US8179898B2 (en) | 2009-06-11 | 2012-05-15 | Alcatel Lucent | Packet processing using braided tries |
CN101631086B (zh) | 2009-08-10 | 2012-09-26 | 武汉烽火网络有限责任公司 | 并行ip路由查找的路由表分区和放置方法 |
US8462786B2 (en) | 2009-08-17 | 2013-06-11 | Board Of Trustees Of Michigan State University | Efficient TCAM-based packet classification using multiple lookups and classifier semantics |
US8880556B1 (en) | 2009-08-19 | 2014-11-04 | Juniper Networks, Inc. | TCAM defragmentation for heterogeneous TCAM application support |
US8566276B1 (en) | 2009-08-19 | 2013-10-22 | Juniper Networks, Inc. | TCAM defragmentation candidate search scheme |
CN101741737B (zh) | 2009-12-08 | 2013-01-16 | 中兴通讯股份有限公司 | 路由表的维护方法与装置 |
US9077669B2 (en) | 2010-06-14 | 2015-07-07 | Dynamic Invention Llc | Efficient lookup methods for ternary content addressable memory and associated devices and systems |
US8666931B2 (en) | 2010-07-16 | 2014-03-04 | Board Of Trustees Of Michigan State University | Regular expression matching using TCAMs for network intrusion detection |
US9406381B2 (en) | 2010-08-01 | 2016-08-02 | Gsi Technology Israel Ltd. | TCAM search unit including a distributor TCAM and DRAM and a method for dividing a database of TCAM rules |
US8880494B2 (en) | 2011-07-28 | 2014-11-04 | Brocade Communications Systems, Inc. | Longest prefix match scheme |
US8923298B2 (en) | 2012-05-04 | 2014-12-30 | Futurewei Technoligies, Inc. | Optimized trie-based address lookup |
US9680747B2 (en) | 2012-06-27 | 2017-06-13 | Futurewei Technologies, Inc. | Internet protocol and Ethernet lookup via a unified hashed trie |
US9602407B2 (en) | 2013-12-17 | 2017-03-21 | Huawei Technologies Co., Ltd. | Trie stage balancing for network address lookup |
-
2013
- 2013-12-17 US US14/108,581 patent/US9602407B2/en active Active
-
2014
- 2014-12-16 WO PCT/CN2014/093920 patent/WO2015090179A1/en active Application Filing
- 2014-12-16 CN CN201480067866.2A patent/CN105814846B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040249803A1 (en) * | 2003-06-05 | 2004-12-09 | Srinivasan Vankatachary | Architecture for network search engines with fixed latency, high capacity, and high throughput |
US20070121632A1 (en) * | 2005-11-28 | 2007-05-31 | Arabella Software, Ltd. | Method and system for routing an IP packet |
CN1929447A (zh) * | 2006-06-01 | 2007-03-14 | 华为技术有限公司 | 地址前缀查找方法和装置以及报文转发方法和系统 |
CN102597973A (zh) * | 2009-08-16 | 2012-07-18 | 康帕斯电子光学系统有限公司 | 用于改善最长前缀匹配的可扩展性的方法和设备 |
US20110128959A1 (en) * | 2009-12-01 | 2011-06-02 | Masanori Bando | Hash-based prefix-compressed trie for ip route lookup |
CN101741646A (zh) * | 2009-12-11 | 2010-06-16 | 东南大学 | 基于数组链表的大流量网络地址前缀检测方法 |
US20130034096A1 (en) * | 2010-04-12 | 2013-02-07 | Huawei Technologies Co., Ltd. | Routing table establishment method and device and routing table lookup method and device |
US20120023082A1 (en) * | 2010-07-22 | 2012-01-26 | Brocade Communications Systems, Inc. | Longest Prefix Match Using Binary Search Tree |
CN102045412A (zh) * | 2010-12-28 | 2011-05-04 | 赛尔网络有限公司 | IPv6地址前缀压缩存储方法及设备 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121565A (zh) * | 2016-11-28 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 生成指令集编码的方法、装置和系统 |
CN108121565B (zh) * | 2016-11-28 | 2022-02-18 | 阿里巴巴集团控股有限公司 | 生成指令集编码的方法、装置和系统 |
CN111316255A (zh) * | 2017-11-20 | 2020-06-19 | 华为技术有限公司 | 数据存储系统以及用于提供数据存储系统的方法 |
CN111316255B (zh) * | 2017-11-20 | 2023-11-03 | 华为技术有限公司 | 数据存储系统以及用于提供数据存储系统的方法 |
US11599552B2 (en) | 2018-10-10 | 2023-03-07 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
CN113196260A (zh) * | 2018-12-14 | 2021-07-30 | 美光科技公司 | 能够选择性使用键部分的键值存储树 |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
CN113196260B (zh) * | 2018-12-14 | 2022-06-17 | 美光科技公司 | 能够选择性使用键部分的键值存储树 |
US11657092B2 (en) | 2018-12-26 | 2023-05-23 | Micron Technology, Inc. | Data tree with order-based node traversal |
CN113806403A (zh) * | 2021-09-22 | 2021-12-17 | 浙江锐文科技有限公司 | 一种在智能网卡/dpu内降低查找匹配逻辑资源的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015090179A1 (en) | 2015-06-25 |
US9602407B2 (en) | 2017-03-21 |
CN105814846B (zh) | 2019-06-21 |
US20150172191A1 (en) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105814846A (zh) | 网络地址查询的前缀树阶段平衡 | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
US9680747B2 (en) | Internet protocol and Ethernet lookup via a unified hashed trie | |
US8923298B2 (en) | Optimized trie-based address lookup | |
EP2924927B1 (en) | Techniques for aggregating hardware routing resources in a multi-packet processor networking system | |
US7796513B2 (en) | Packet classification using modified range labels | |
US10284472B2 (en) | Dynamic and compressed trie for use in route lookup | |
US7706375B2 (en) | System and method of fast adaptive TCAM sorting for IP longest prefix matching | |
JP2010178342A (ja) | 階層的に構造化された可変長識別子を有するパケットを転送するためのシステム | |
CN106330716B (zh) | Ip路由查找方法及装置 | |
CN105141525A (zh) | IPv6路由查找方法及装置 | |
Hsieh et al. | A classified multisuffix trie for IP lookup and update | |
CN105074689A (zh) | 编索引成形图创建 | |
US7570644B2 (en) | Routing method for a telecommunications network and router for implementing said method | |
CA2435821C (en) | Address retrieval apparatus | |
KR100686732B1 (ko) | 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터 | |
CN109194574B (zh) | 一种IPv6路由查找方法 | |
EP3319279B1 (en) | Ip routing lookup | |
Erdem et al. | Value-coded trie structure for high-performance IPv6 lookup | |
US6895442B1 (en) | Technique for fast and efficient internet protocol (IP) address lookup | |
Sun | An improved PLC-trie based routing table design for variable length IP address lookup | |
Matoušek et al. | Towards hardware architecture for memory efficient IPv4/IPv6 Lookup in 100 Gbps networks | |
KR100920107B1 (ko) | Ip 주소의 검색 방법 및 장치 | |
Wang et al. | PPLTCAM: A parallel TCAM‐based IP address lookup structure with high incremental update performance | |
US20140351282A1 (en) | Methods and Systems for Data Packet Routing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |