CN102484610B - 路由表建立方法和装置及路由表查找方法和装置 - Google Patents

路由表建立方法和装置及路由表查找方法和装置 Download PDF

Info

Publication number
CN102484610B
CN102484610B CN201080003601.8A CN201080003601A CN102484610B CN 102484610 B CN102484610 B CN 102484610B CN 201080003601 A CN201080003601 A CN 201080003601A CN 102484610 B CN102484610 B CN 102484610B
Authority
CN
China
Prior art keywords
trie subtree
trie
subtree
child node
summit
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.)
Active
Application number
CN201080003601.8A
Other languages
English (en)
Other versions
CN102484610A (zh
Inventor
胡睿
陈洪飞
龚钧
翟素平
王小忠
赵鹤轩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN102484610A publication Critical patent/CN102484610A/zh
Application granted granted Critical
Publication of CN102484610B publication Critical patent/CN102484610B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/748Address table lookup; Address filtering using longest matching prefix

Abstract

本发明公开了一种路由表建立方法和装置以及路由表查找方法和装置,其中,该路由表建立方法包括:将路由表的数据结构划分为主干和TRIE子树(101);将路由表项添加到所述TRIE子树(102);将所述TRIE子树的顶点的提升子节点保存到所述主干中,所述TRIE子树的高度小于或等于设置的高度阈值(103),所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点。路由表的数据结构分为主干和TRIE子树,TRIE子树采用TRIE算法建立,可以保证路由表的高压缩率;根据高度阈值控制TRIE子树的高度,可以减少访问存储器的次数,提高查找速率,降低查找时延。

Description

路由表建立方法和装置及路由表查找方法和装置
技术领域
本发明实施例涉及通信技术领域,特别涉及一种路由表建立方法和装置及路由表查找方法和装置。
背景技术
为了阻止地址空间耗尽,互联网工程任务组(The Internet EngineeringTask Force;简称:IETF)于1993年提出了无类型域间路由(ClasslessInter-Domain Routing;简称:CIDR)的地址结构的临时解决办法。CIDR是现在实际路由查表的基础,脱离了传统的A-E分类地址结构。在CIDR中,一个I P网络由一个前缀(prefix)表示,该前缀由IP地址和标识该IP地址有效位的掩码复合表示。CIDR允许路由器进行路由聚合,即大小相同、在地址空间中相互邻近且路由相同的2的整数次幂个子网的路由表条目可以合并成一条路径,并在路由表中只占用一个路由表项。最后的结果是:给定的地址块可按任意比特(bit)界限划分,网络上的计算机将按连续范围分配地址,但这个范围不需要相应的预先定义的类,所以称为无类型编址。CIDR可以避免网络地址的过快枯竭和骨干路由器的路由表项的快速膨胀,同时使网络地址前缀的长度可以为任意值,进行路由查表时必须进行最长前缀匹配(thelongest prefix match)搜索。衡量路由表的查表算法优劣的主要因素包括:路由表查询速度(由访问存储器的次数决定)、路由表所需要的存储器容量、插入删除路由表项的难易程度等。
无类型路由表的数据结构可以存储在一个层状数据结构。路由表的搜索是沿层次向下进行的,因此可以采用二叉树(Binary Tree)或者是根树(RadixTree)及其变形的数据结构表示,表1为一种示例路由表。
表1
  前缀标号   前缀比特值   下一跳地址
  P1   111*   H1
  P2   10*   H2
  P3   1010*   H3
  P4   10101*   H4
可以将表1中的前缀存储到一个基本二叉树中,图1为现有的基本二叉树存储的路由表的示意图,如图1所示,“0”代表向左分支,“1”代表向右分支。其中前缀比特值决定了从根向下的路径,前缀P1、P2、P3、P4分别采用阴影表示。该基本二叉树的节点中没有存储前缀P1-P4的值,P1-P4的值为抵达对应节点的路径,因此该基本二叉树的路径由所存储的数据(例如:前缀比特值)确定,即该基本二叉树的路径表示了它所要存储的数据。在该基本二叉树中,处于第L层的节点代表了一类地址前L比特均相同的地址空间,且该前L个比特串是由从根节点到该节点的路径上的L比特组成。基本二叉树结构查找和存储效率都很低,比如:对于一组传统的B类地址上划分的子网地址,其前16比特相同,但遍历二叉树时,一次只提取“1”比特,速度很慢,若相应的地址前缀最长为M,则树的深度为M。如果一次检查K个比特,则树的深度可减少到M/K,这样树的内部节点包含的匹配项增加为2的K次幂。这样的树被称为2的K次幂分支树,树的最大层数为M/K。查表算法在每个节点处检查的比特数为K,也就被称为树的步长。
Patricia树是基本二叉树(Binary Tree)的变型,Patricia树允许每个节点指定一个值,测试连续跳过的比特数以加快搜索速度。前缀存放在Patricia树的叶节点上,假设有N个前缀则有N个叶节点,另有N-1个内部节点。冗余的支路链被压缩到了一个节点,因此查找算法不需要做连续的比特匹配而是可以一次匹配多个比特来快速到达叶节点。图2为现有Patricia树存储的路由表的示意图,对Patricia树能够较快地的搜索到叶节点,Patricia树对较长的前缀的搜索效率比基本二叉树要高,如图2所示,如对于前缀P4,Patricia树经3次匹配可以完成查找,而基本二叉树需要5次。
IP地址前缀可以看成一个范围,例如10.110.0.0/16实际上表示从10.110.0.0到10.110.255.255之间所有的IP地址,所以,该IP地址前缀可以用范围[10.110.0.0,10.110.255.255]表示。将所有的IP地址前缀都转换成范围,则最长前缀匹配问题可以转化为找待查IP地址在哪个范围的问题,此问题类似于排序问题,可以用二叉树的方法建立路由表。假设IP地址为8比特,共有7个IP地址,IP地址的掩码和范围如下表2:
表2
  序号   掩码表示   范围表示
  A   00000000/1   [00000000,10000000)
  B   00000100/6   [00000100,00001000)
  C   00100000/4   [00100000,00110000)
  D   00100000/5   [00100000,00101000)
  E   00101100/6   [00101100,00110000)
  F   00110000/4   [00110000,01000000)
  G   01100000/3   [01100000,10000000)
如图3所示,为现有采用二叉树存储IP地址掩码范围的示意图,左边是IP地址的区间表示,右边是将区间的端点放入二叉树中。每个节点存储整个路由表项,且一个IP地址前缀要分为2个端点,因此空间利用率低。
为了提高路由表的空间利用率低,可以采用TRIE算法建立并查找路由表,TRIE算法具有压缩率高、更新速度块的优点。但是由于TRIE算法访问节点的次数与、访问存储器的次数和表项长度成正比,随着TRIE算法的关键(key)值增长,路由表高度增加,IPv6转发信息库(Forwarding InformationBase;简称:FIB)查找访问存储器的次数较多,造成吞吐率降低,性能下降,时延增长,容量降低。
发明内容
本发明实施例提供一种路由表建立方法和装置及路由表查找方法和装置,用以解决现有TRIE算法中树的高度过高,引起的查找路由表的速率慢,时延增长的问题,提高对路由表的查找速率,降低查找时延。
本发明实施例提供了一种路由表建立方法,包括:
将路由表的数据结构划分为主干和TRIE子树;
将路由表项添加到所述TRIE子树;
将所述TRIE子树的顶点的提升子节点保存到所述主干中,所述TRIE子树的高度小于或等于设置的高度阈值,所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点。
本发明实施例还提供了一种路由表查找方法,其中,路由表的数据结构包括主干和TRIE子树,所述子树的顶点的提升子节点保存在所述路由表的主干中,所述方法包括:
在所述路由表的主干中,查找与关键字最长匹配的提升子节点;
获取所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置;
根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述TRIE子树中采用TRIE算法查找所述关键字对应的查找结果。
本发明实施例还提供了一种路由表建立装置,包括:
划分模块,用于将路由表的数据结构划分为主干和TRIE子树;
表项添加模块,用于将路由表项添加到所述TRIE子树;
保存模块,用于将所述TRIE子树的顶点的提升子节点保存到所述主干中,所述TRIE子树的高度小于或等于设置的高度阈值,所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点。
本发明实施例还提供了一种路由表查找装置,包括:
主干查找模块,用于在路由表的主干中,查找与关键字最长匹配的提升子节点,所述路由表的数据结构包括主干和TRIE子树,所述子树的顶点的提升子节点保存在所述路由表的主干中;
子树位置获取模块,用于获取所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置;
子树查找模块,用于根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述TRIE子树中采用TRIE算法查找所述关键字对应的查找结果。
本发明实施例提供了一种路由表建立方法和装置及路由表查找方法和装置,由于路由表的数据结构分为主干和TRIE子树,子树为采用TRIE算法建立的TRIE子树,可以保证路由表的高压缩率;在添加路由表项时,控制TRIE子树的高度,可以减少的访问存储器的次数,提高了对查找路由表的速率,降低了查找时延。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单介绍,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有的基本二叉树存储的路由表的示意图;
图2为现有Patricia树存储的路由表的示意图;
图3为现有采用二叉树存储IP地址掩码范围的示意图;
图4为本发明路由表建立方法实施例的流程图;
图5a为本发明路由表建立方法实施例中主干和TRIE子树的结构示意图;
图5b为本发明路由表建立方法实施例中多位TRIE算法的示意图;
图5c为本发明路由表建立方法实施例中树位图算法的内位图的示意图;
图5d为本发明路由表建立方法实施例中树位图算法的外位图的示意图;
图6a为本发明路由表建立方法实施例添加路由表项分裂前的示意图;
图6b为本发明路由表建立方法实施例添加路由表项分裂后的示意图;
图6c为本发明路由表建立方法实施例添加路由表项的流程示意图;
图6d为本发明路由表建立方法实施例中添加IP地址前缀之前的示意图;
图6e为本发明路由表建立方法实施例中添加IP地址前缀之后的示意图;
图7为本发明路由表找方法实施例的流程图;
图8为本发明路由表建立装置第一实施例的结构示意图;
图9为本发明路由表建立装置第二实施例的结构示意图;
图10为本发明路由表查找装置第一实施例的结构示意图;
图11为本发明路由表查找装置第二实施例的结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图4为本发明路由表建立方法实施例的流程图,如图4所示,该路由表建立方法包括:
101、将路由表的数据结构划分为主干和TRIE子树;
102、将路由表项添加到所述TRIE子树;
103、将所述TRIE子树的顶点的提升子节点保存到所述主干中,所述TRIE子树的高度小于或等于设置的高度阈值,所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点。
路由表可以存储在层状的数据结构中,可以预先将路由表的数据结构划分为主干和TRIE子树,将所述TRIE子树的顶点的提升子节点保存到在所述主干中,其中,TRIE子树可以采用TRIE算法建立,其中TRIE算法建立的树,又称单词查找树,是一种树形结构,是一种哈希树的变种。主干的建立方法可以采用但不限于范围匹配、B树或三态内容寻址存储器等其他算法。图5a为本发明路由表建立方法实施例中主干和TRIE子树的结构示意图,如图5a所示,采用TRIE算法建立的TRIE子树41的每个节点42中可以包括多个前缀子节点,其中TRIE子树41最上层的节点42为顶点,在TRIE子树41顶点中最上层的前缀子节点为提升子节点44,TRIE子树41的提升子节点44保存在主干45中,即提升子节点44同时属于TRIE子树41和主干45,主干相当于是一个保存提升子节点的数据库。
下面介绍两种TRIE算法:
图5b为本发明路由表建立方法实施例中多位(multi-bit)TRIE算法的示意图,多位TRIE算法用IP地址的多个位(bit)的索引形成数组,将由IP地址的不同位形成的数组按其在IP地址中的先后顺序关联,查找时一次查找多个位,分级查找。如图5b中,前24位为第一级,后8位为第二级,如果前24位在第一存储区域11中匹配成功,则可以直接将得到匹配结果发送到转发信息库13;如果前24位在第一存储区域11中部分匹配,则将前24位和后8位结合在第二存储区域12中匹配,匹配成功时,可以将得到匹配结果发送到转发信息库13。
图5c为本发明路由表建立方法实施例中树位图(Tree bitmap)算法的内位图的示意图,图5d为本发明路由表建立方法实施例中树位图算法的外位图的示意图。树位图算法也属于multi-bit TRIE算法,树位图算法用位图(bitmap)表示节点中有哪些前缀,以及节点有哪些孩子。内位图(Internalbitmap)表示节点中有哪些前缀,如图5c中的一个TRIE子树的节点中可存放7个前缀,但实际上仅在前缀子节点P1、P2、P3的位置存放了三个前缀,将存放前缀的内位图的位(bit)置为“1”,将未存放前缀的位置为“0”,可以得到“1011000”。外位图(Externa biitmap)可以表示TRIE子树的一个节点有哪些孩子,如图5d所示,该节点最多可以有8个孩子节点,但实际上只有三个孩子节点,则在有孩子节点的位置上置“1”,没有孩子节点的位置上置“0”。
建立该路由表的数据结构时,可以先采用TRIE算法建立TRIE子树,然后在添加路由表项或删除路由表项的具体过程中,根据设置的高度阈值对保存在所述路由表的主干中的提升子节点进行相应的更新,具体分为以下场景:
场景一、添加路由表项
其中,若所述TRIE子树添加路由表项后的高度大于所述高度阈值,则将所述TRIE子树中高度大于所述高度阈值的分支从所述TRIE子树分裂,得到新TRIE子树;
然后,将所述新TRIE子树的顶点的提升子节点保存到所述主干中,所述新TRIE子树的顶点为所述TRIE子树中高度大于所述高度阈值的分支、与所述TRIE子树的顶点连接的节点。
图6a为本发明路由表建立方法实施例添加路由表项分裂前的示意图,图6b为本发明路由表建立方法实施例添加路由表项分裂后的示意图。假设预设的高度阈值为“3”,在向路由表中添加路由表项例如:IP地址前缀时,如果路由表的所有TRIE子树的高度没有超出“3”,则直接将路由表项添加到路由表中对应的位置。如果添加路由表项后,某个TRIE子树的高度大于“3”,如图6a中,添加路由表项后,高度为“4”,而TRIE子树T的顶点N1的两个分支中,N1->N2->N4->N8的分支的高度大于高度阈值。此时,如图6b所示,为了保证TRIE子树T的高度可以将该TRIE子树T从N2处分裂,将分支高度大于高度阈值的分支作为新TRIE子树T2,N2为新TRIE子树T2的顶点,N2最上层的前缀子节点可以作为新TRIE子树T2的提升子节点保存到主干中,分裂后T剩余的部分为TRIE子树T1。其中,将TRIE子树分裂得到新TRIE子树后,新TRIE子树的顶点与TRIE子树顶点之间的对应关系不变,新TRIE子树与TRIE子树的提升子节点之间的关系在主干中有体现。
进一步地,在添加路由表项的过程中,若所述TRIE子树分裂后的高度小于所述高度阈值,且所述TRIE子树具有上一级TRIE子树,可以将所述TRIE子树的顶点合并到所述上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
根据上图6b,假设添加路由表项后,需要再从N3对TRIE子树T1进行分裂,分裂后的T1只剩下节点N1,此时分裂后的T1的高度为“1”,小于高度阈值,如果此时分裂后的T1具有上一级的TRIE子树,则可以将分裂后的T1合并到上一级TRIE子树中。图6c为本发明路由表建立方法实施例添加路由表项的流程示意图,如图6c所示,结合上述的图6a和图6b,该添加路由表项的流程具体可以包括:
201、TRIE子树T中的某个节点N1(顶点)发现该TRIE子树的高度大于高度阈值h。
202、从节点N1向TRIE子树T的祖先方向查找,找到高度为h的节点N2。
203、以节点N2为顶点,从TRIE子树T分裂出新TRIE子树T2,T剩余的部分为T1。
204、判断T1的高度是否小于预设的高度阈值h,如果T1有上一级TRIE子树(也可以称为父子树、父亲等)且T1的高度小于h,执行205,否则结束。
205、将TRIE子树T1合并入其上一级TRIE子树,将合并后的TRIE子树作为TRIE子树T,并返回201。
为了详细说明路由表项添加的具体过程,以向路由表中添加的路由表项为IP地址前缀为例,假设TRIE子树的高度阈值为“2”,每个TRIE子树的节点中的前缀子节点为3级,每个节点共7个前缀子节点,用14位标识IP地址前缀,主干存储在三态内容寻址存储器(Ternary Content AddressableMemory;简称:TCAM)中。如图6d所示,为本发明路由表建立方法实施例中添加IP地址前缀之前的示意图,其中,在TRIE子树A的一些前缀子节点中保存的IP地址前缀,其中P1保存的IP地址前缀为“1011101*******”,P2保存的IP地址前缀为“10111001******”,P3保存的IP地址前缀为“10111010******”,P4保存的前缀为“1011100000****”,P5保存的IP地址前缀为“1011100001****”,P6保存的IP地址前缀为“10111000001***”,P7保存的IP地址前缀为“10111000010***”,P8保存的IP地址前缀为“10111011100***”,P9保存的IP地址前缀为“10111011101***”,P10保存的IP地址前缀为“10111011110***”。TRIE子树A的顶点N1中的提升子节点虽然为保存IP地址前缀,但根据路由表的路径,N1的提升子节点T1对应的IP地址前缀应该为“101110********”,因此,主干TCAM中保存TRIE子树A提升子节点T1的IP地址前缀“101110********”。同理,主干TCAM中还可能保存其他的TRIE子树提升子节点的IP地址前缀,如:“001***********”。假设需要添加的IP地址前缀为“1011100001010*”,需要在TRIE子树A中添加一个前缀子节点P11,但添加P11后,由于TRIE子树A增加了节点N4后的高度为“3”,大于设置的高度阈值“2”,因此需要进行分裂。
如图6e所示,为本发明路由表建立方法实施例中添加IP地址前缀之后的示意图,由于TRIE子树A中将N2和N4所在的分支高度大于高度阈值,因此将该分支从TRIE子树A中分裂为新TRIE子树A2,剩余的部分为A1(包括节点N1和N3),此时A2的顶点N2的提升子节点T2对应的IP地址前缀应该为“101110000*****”;A1提升子节点T1的IP地址前缀与A相同,为“101110********”。将A2的提升子节点T2的IP地址前缀“101110000*****”保存到主干TCAM中,T2与T1的对应关系在主干中有体现,完成分裂过程。
场景二、删除路由表项;
其中,若所述TRIE子树删除路由表项后的高度小于所述高度阈值,且所述TRIE子树具有上一级TRIE子树,可以将所述TRIE子树的顶点合并到上一级TRIE子树中,从所述主干中删除所述TRIE子树的顶点的提升子节点。
其中,将所述TRIE子树的顶点合并到上一级TRIE子树中的过程与向上一级TRIE子树添加路由表项的过程相似,也可以判断上一级TRIE子树的高度是否大于高度阈值,如果大于高度阈值,则可以对上一级TRIE子树进行分裂处理,还有可能对再上一级TRIE子树进行合并或分裂处理,经过层层合并和分裂,保证每一个没有上一级TRIE子树的TRIE子树的高度为设定的高度阈值。
本实施例路由表的数据结构分为主干和TRIE子树,子树为采用TRIE算法建立的TRIE子树,因此可以保证路由表的高压缩率;根据设置的高度阈值,可以控制TRIE子树的高度,因此减少了的访问存储器的次数,提高了查找速率,降低了查找时延。
图7为本发明路由表找方法实施例的流程图,如图7所示,该路由表找方法包括:
301、在路由表的主干中,查找与关键字最长匹配的提升子节点;
其中,路由表可以存储在层状的数据结构中,路由表的数据结构包括主干和TRIE子树,TRIE子树的顶点的提升子节点保存到在所述主干中,其中,TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点。TRIE子树可以采用TRIE算法建立,主干的建立方法可以采用但不限于范围匹配、B树或三态内容寻址存储器等其他算法。路由表具体结构可以参照上述实施例中的相关描述和图5a。
其中,在路由表的主干中查找与关键字最长匹配的提升子节点的具体过程可以包括:从保存在所述路由表的主干中的各个TRIE子树的提升子节点中,查找与所述关键字匹配的各个第一前缀;从所述各个第一前缀中,选取掩码长度最长的第一前缀作为所述与关键字最长匹配的提升子节点。其中,查找与所述关键字对应的各个第一前缀时,可以采用关键字中的部分数据与主干中的各个提升子节点进行匹配,匹配方法可以根据主干的建立方法选择。
302、获取所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置;
与关键字最长匹配的提升子节点的地址信息可以指向该提升子节点所在的TRIE子树的顶点,根据该地址信息可以获取该提升子节点对应的TRIE子树的顶点的位置。
303、根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述TRIE子树中采用TRIE算法查找所述关键字对应的查找结果。
303具体可以包括:
根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述与关键字最长匹配的提升子节点对应的所述TRIE子树各个节点的前缀子节点中,查找与所述关键字匹配的各个第二前缀;
从所述各个第二前缀中,选取掩码长度最长的第二前缀作为所述查找结果。
其中,查找与所述关键字对应的各个第二前缀时,可以采用关键字中的部分数据与TRIE子树各个节点的前缀子节点进行匹配,匹配方法可以采用建立TRIE子树时所使用的TRIE算法。
以在上述实施例中图6e的路由表中查找为例,具体说明查找的过程。假设查找的关键字为“10111000011000”,现在主干TCAM中查找与关键字匹配的提升子节点,该与关键字匹配的提升子节点应该为一个或多个保存在TCAM中的提升子节点对应的IP地址前缀。以关键字“10111000011000”在图6e所示的路由表中查找后,命中的提升子节点为两个IP地址前缀:“101110********”和“101110000****”,分别对应指向TRIE子树A1和A2。由于TRIE子树A2对应的IP地址前缀“101110000****”的掩码长度比TRIE子树A1对应的IP地址前缀“101110********”长,因此,可以选则TRIE子树A2采用TRIE算法进行进一步的查找。在TRIE子树A2中,以关键字中未匹配的数据“11000”继续进行匹配,最后查找到TRIE子树A2的节点N2中的P5的IP地址前缀“1011100001****”。因此可以得出该关键字命中P5的IP地址前缀。如果命中的IP地址前缀不只是一个,可以选取掩码长度最长的IP地址前缀作为最终的查找结果。
本实施例路由表的数据结构分为主干和采用TRIE算法建立的TRIE子树,可以保证路由表的高压缩率;根据设置的高度阈值,可以控制TRIE子树的高度,因此在查找路由表时,可以减少访问存储器的次数,提高查找速率,降低查找时延。
图8为本发明路由表建立装置第一实施例的结构示意图,如图8所示,该路由表建立装置包括:划分模块51、表项添加模块52和保存模块53。
其中,划分模块51,用于将路由表的数据结构划分为主干和TRIE子树;
表项添加模块52,用于将路由表项添加到所述TRIE子树;
保存模块53,用于将所述TRIE子树的顶点的提升子节点保存到所述主干中,所述TRIE子树的高度小于或等于设置的高度阈值,所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点。
具体地,在路由表存储的数据结构中,划分模块51将路由表的数据结构划分为主干和TRIE子树,采用TRIE算法建立的TRIE子树,采用其他算法例如:范围匹配、B树或三态内容寻址存储器等建立主干。其中表项添加模块52将路由表项添加到所述TRIE子树后,保存模块53将TRIE子树的顶点的提升子节点保存在主干中,且预先设置了高度阈值,TRIE子树的高度小于或等于设置的高度阈值。如果采用TRIE算法建立的TRIE子树,在添加路由表项例如:IP地址前缀后的高度大于高度阈值,则可以将添加路由表项后的TRIE子树分裂,将路由表的数据结构中的TRIE子树的高度控制为高度阈值。路由表的数据结构建立之后,可能需要删除其中的路由表项,删除一定的路由表项之后,如果删除路由表项后的TRIE子树的高度小于或等于高度阈值,将删除路由表项后的TRIE子树与上一级TRIE子树合并。本实施例中建立路由表的具体过程,可以参见本发明路由表建立方法实施例中的相关描述。
本实施例由于路由表的数据结构分为主干和TRIE子树,TRIE子树采用TRIE算法建立,因此可以保证路由表的高压缩率;根据设定的高度阈值,更新模块可以控制TRIE子树的高度,因此减少了的访问存储器的次数,提高了查找速率,降低了查找时延。
图9为本发明路由表建立装置第二实施例的结构示意图,如图9所示,在本发明路由表建立装置第二实施例的基础上,路由表建立装置还可以包括:分裂模块54,用于若所述TRIE子树添加路由表项后的高度大于所述高度阈值,则将所述TRIE子树中高度大于所述高度阈值的分支从所述TRIE子树分裂,得到新TRIE子树;
此外,保存模块53,还用于将所述新TRIE子树的顶点的提升子节点保存到所述主干中,所述新TRIE子树的顶点为所述TRIE子树中高度大于所述高度阈值的分支、与所述TRIE子树的顶点连接的节点。
或者,进一步地,路由表建立装置还可以包括:合并删除模块56,用于若所述TRIE子树分裂后的高度小于所述高度阈值,且所述TRIE子树具有上一级TRIE子树,将所述TRIE子树的顶点合并到所述上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
再进一步地,合并删除模块56还可以用于,若所述TRIE子树删除路由表项后的高度小于所述高度阈值,且所述TRIE子树具有上一级TRIE子树,将所述TRIE子树的顶点合并到上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
具体地,在路由表存储的数据结构中,划分模块51可以预先将路由表的数据结构划分为主干和TRIE子树,TRIE子树的顶点的提升子节点保存在主干中;采用TRIE算法建立TRIE子树,具体的建立TRIE子树的方法可以参照本发明路由表建立方法实施例的相关示例的描述,采用范围匹配、B树或TCAM等方法建立TRIE子树所在的主干。表项添加模块52将路由表项添加到所述TRIE子树后,保存模块53将TRIE子树的顶点的提升子节点保存在主干中,且预先设置了高度阈值,TRIE子树的高度小于或等于设置的高度阈值。在添加路由表项时,如果添加路由表项后的TRIE子树的高度大于设置的高度阈值,分裂模块54将所述TRIE子树中高度大于所述高度阈值的分支从所述TRIE子树分裂,得到新TRIE子树。如果分裂后的TRIE子树的高度小于高度阈值,且TRIE子树具有上一级TRIE子树,合并删除模块56将所述TRIE子树的顶点合并到所述上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
路由表的数据结构建立之后,可能需要删除其中的路由表项例如:IP地址前缀,删除一定的路由表项之后,如果删除路由表项后的TRIE子树的高度小于或等于高度阈值,且所述TRIE子树具有上一级TRIE子树,合并删除模块56还可以用于:将所述TRIE子树的顶点合并到上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
本实施例路由表的数据结构分为主干和TRIE子树,TRIE子树采用TRIE算法建立,因此可以保证路由表的高压缩率;在添加路由表项时,分裂单元和保存单元可以将大于高度阈值的TRIE子树分裂;在删除路由表项时,删除单元和添加单元可以将高度小于高度阈值的TRIE子树合并,从而控制TRIE子树的高度,减少了的访问存储器的次数,提高了查找速率,降低了查找时延。
图10为本发明路由表查找装置第一实施例的结构示意图,如图10所示,该路由表查找装置包括:
主干查找模块71,用于在路由表的的主干中,查找与关键字最长匹配的提升子节点,所述路由表的数据结构包括主干和TRIE子树,所述TRIE子树的顶点的提升子节点保存在所述路由表的主干中;
子树位置获取模块72,用于获取所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置;
子树查找模块73,用于根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述TRIE子树中采用TRIE算法查找所述关键字对应的查找结果。
具体地,路由表可以存储在层状的数据结构中,路由表的数据结构包括主干和TRIE子树,TRIE子树的顶点的提升子节点保存到在所述主干中,其中,TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点。TRIE子树可以采用TRIE算法建立,主干的建立方法可以采用但不限于范围匹配、B树或三态内容寻址存储器等其他算法。主干查找模块71在所述路由表的数据结构的主干中,可以查找与关键字最长匹配的提升子节点;子树位置获取模块72则可以根据与关键字最长匹配的提升子节点中的地址信息,获取对应的TRIE子树的顶点位置;子树查找模块73根据与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,可以在对应的TRIE子树中采用TRIE算法查找到该关键字对应的查找结果。
本实施例路由表的数据结构分为主干和采用TRIE算法建立的TRIE子树,可以保证路由表的高压缩率;根据设置的高度阈值,可以控制TRIE子树的高度,因此在查找路由表时,通过主干查找模块查找到的与关键字最长匹配的提升子节点,子树位置获取模块可以获取关键字对应的TRIE子树位置,然后子树查找模块在对应的TRIE子树中查找关键字对应的查找结果,可以减少访问存储器的次数,提高查找速率,降低查找时延。
图11为本发明路由表查找装置第二实施例的结构示意图,在本发明路由表查找装置第一实施例的基础上,如图11所示,该路由表查找装置的主干查找模块71包括:
第一前缀子模块711,用于从保存在所述路由表的主干中的各个TRIE子树的提升子节点中,查找与所述关键字匹配的各个第一前缀;
最长匹配子模块712,用于从所述各个第一前缀中,选取掩码长度最长的第一前缀作为所述与关键字最长匹配的提升子节点。
进一步地,子树查找模块73包括:
第二前缀子模块731,用于根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述与关键字最长匹配的提升子节点对应的所述TRIE子树各个节点的前缀子节点中,查找与所述关键字匹配的各个第二前缀;
查找结果子模块732,用于从所述各个第二前缀中,选取掩码长度最长的第二前缀作为所述查找结果。
具体地,第一前缀子模块711从保存在所述路由表的主干中的各个TRIE子树的提升子节点中,查找与所述关键字对应的各个第一前缀后,最长匹配子模块712,从各个第一前缀中选取掩码长度最长的第一前缀作为与关键字最长匹配的提升子节点。子树位置获取模块72根据与关键字最长匹配的提升子节点获取对应的TRIE子树的顶点的位置;然后,第二前缀子模块731根据与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在与关键字最长匹配的提升子节点对应的所述TRIE子树各个节点的前缀子节点中,查找与所述关键字对应的各个第二前缀;查找结果子模块732从所述各个第二前缀中选取掩码长度最长的第二前缀作为所述查找结果。
本实施例路由表的数据结构分为主干和采用TRIE算法建立的TRIE子树,可以保证路由表的高压缩率;根据设置的高度阈值,可以控制TRIE子树的高度,因此在查找路由表时,在主干查找模块的各个子模块查找到的与关键字最长匹配的提升子节点后,子树位置获取模块可以获取关键字对应的TRIE子树位置,然后子树查找模块的各个子模块在对应的TRIE子树中查找关键字对应的查找结果,可以减少访问存储器的次数,提高查找速率,降低查找时延。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (7)

1.一种路由表建立方法,其特征在于,包括:
将路由表的数据结构划分为主干和TRIE子树;
将路由表项添加到所述TRIE子树;
将所述TRIE子树的顶点的提升子节点保存到所述主干中,所述TRIE子树的高度小于或等于设置的高度阈值,所述TRIE子树的顶点为所述TRIE子树的最上层节点,所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点;
所述路由表建立方法,还包括:
若所述TRIE子树添加路由表项后的高度大于所述高度阈值,则将所述TRIE子树中高度大于所述高度阈值的分支从所述TRIE子树分裂,得到新TRIE子树;
将所述新TRIE子树的顶点的提升子节点保存到所述主干中,所述新TRIE子树的顶点为所述TRIE子树中高度大于所述高度阈值的分支、与所述TRIE子树的顶点连接的节点;
或者还包括:若所述TRIE子树删除路由表项后的高度小于所述高度阈值,且所述TRIE子树具有上一级TRIE子树,将所述TRIE子树的顶点合并到上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
2.根据权利要求1所述的路由表建立方法,其特征在于,还包括:
若所述TRIE子树分裂后的高度小于所述高度阈值,且所述TRIE子树具有上一级TRIE子树,将所述TRIE子树的顶点合并到所述上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
3.根据权利要求1-2任一所述的路由表建立方法,其特征在于,还包括:
采用TRIE算法建立所述TRIE子树,采用范围匹配、B树或三态内容寻址存储器建立所述主干。
4.一种路由表查找方法,其特征在于,路由表的数据结构包括主干和TRIE子树,其中,所述主干采用范围匹配、B树或三态内容寻址存储器方法建立,所述TRIE子树的顶点的提升子节点保存在所述路由表的主干中,所述TRIE子树中保存路由表项,所述TRIE子树的顶点为所述TRIE子树的最上层节点,所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点,所述方法包括:在所述路由表的主干中,采用与所述主干的建立方法相应的匹配方法,查找与关键字最长匹配的提升子节点;
获取所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置;
根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述TRIE子树中采用TRIE算法查找所述关键字对应的查找结果;
其中,所述在所述路由表的主干中,查找与关键字最长匹配的提升子节点,包括:
从保存在所述路由表的主干中的各个TRIE子树的提升子节点中,查找与所述关键字匹配的各个第一前缀;
从所述各个第一前缀中,选取掩码长度最长的第一前缀作为所述与关键字最长匹配的提升子节点;
所述根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述TRIE子树中采用TRIE算法查找所述关键字对应的查找结果,包括:
根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述与关键字最长匹配的提升子节点对应的所述TRIE子树各个节点的前缀子节点中,查找与所述关键字匹配的各个第二前缀;
从所述各个第二前缀中,选取掩码长度最长的第二前缀作为所述查找结果。
5.一种路由表建立装置,其特征在于,包括:
划分模块,用于将路由表的数据结构划分为主干和TRIE子树;
表项添加模块,用于将路由表项添加到所述TRIE子树;
保存模块,用于将所述TRIE子树的顶点的提升子节点保存到所述主干中,所述TRIE子树的高度小于或等于设置的高度阈值,所述TRIE子树的顶点为所述TRIE子树的最上层节点,所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点;
所述路由表建立装置,还包括:
分裂模块,用于若所述TRIE子树添加路由表项后的高度大于所述高度阈值,则将所述TRIE子树中高度大于所述高度阈值的分支从所述TRIE子树分裂,得到新TRIE子树;
所述保存模块,还用于将所述新TRIE子树的顶点的提升子节点保存到所述主干中,所述新TRIE子树的顶点为所述TRIE子树中高度大于所述高度阈值的分支、与所述TRIE子树的顶点连接的节点;
或者还包括:合并删除模块,用于若所述TRIE子树分裂后的高度小于所述高度阈值,且所述TRIE子树具有上一级TRIE子树,将所述TRIE子树的顶点合并到所述上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
6.根据权利要求5所述的路由表建立装置,其特征在于,所述合并删除模块还用于,若所述TRIE子树删除路由表项后的高度小于所述高度阈值,且所述TRIE子树具有上一级TRIE子树,将所述TRIE子树的顶点合并到上一级TRIE子树,从所述主干中删除所述TRIE子树的顶点的提升子节点。
7.一种路由表查找装置,其特征在于,所述路由表的数据结构包括主干和TRIE子树,其中,所述主干采用范围匹配、B树或三态内容寻址存储器方法建立,所述TRIE子树的顶点的提升子节点保存在所述路由表的主干中,所述TRIE子树中保存路由表项,所述TRIE子树的顶点为所述TRIE子树的最上层节点,所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点,所述装置包括:
主干查找模块,用于在路由表的主干中,采用与所述主干的建立方法相应的匹配方法,查找与关键字最长匹配的提升子节点;
子树位置获取模块,用于获取所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置;
子树查找模块,用于根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述TRIE子树中采用TRIE算法查找所述关键字对应的查找结果;
其中,所述主干查找模块包括:
第一前缀子模块,用于从保存在所述路由表的主干中的各个TRIE子树的提升子节点中,查找与所述关键字匹配的各个第一前缀;
最长匹配子模块,用于从所述各个第一前缀中,选取掩码长度最长的第一前缀作为所述与关键字最长匹配的提升子节点;
所述子树查找模块包括:
第二前缀子模块,用于根据所述与关键字最长匹配的提升子节点对应的TRIE子树的顶点的位置,在所述与关键字最长匹配的提升子节点对应的所述TRIE子树各个节点的前缀子节点中,查找与所述关键字匹配的各个第二前缀;
查找结果子模块,用于从所述各个第二前缀中,选取掩码长度最长的第二前缀作为所述查找结果。
CN201080003601.8A 2010-04-12 2010-04-12 路由表建立方法和装置及路由表查找方法和装置 Active CN102484610B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2010/071698 WO2011127642A1 (zh) 2010-04-12 2010-04-12 路由表建立方法和装置及路由表查找方法和装置

Publications (2)

Publication Number Publication Date
CN102484610A CN102484610A (zh) 2012-05-30
CN102484610B true CN102484610B (zh) 2015-01-21

Family

ID=44798251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080003601.8A Active CN102484610B (zh) 2010-04-12 2010-04-12 路由表建立方法和装置及路由表查找方法和装置

Country Status (4)

Country Link
US (1) US20130034096A1 (zh)
EP (1) EP2560327B1 (zh)
CN (1) CN102484610B (zh)
WO (1) WO2011127642A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9077669B2 (en) * 2010-06-14 2015-07-07 Dynamic Invention Llc Efficient lookup methods for ternary content addressable memory and associated devices and systems
JP5594171B2 (ja) * 2011-02-02 2014-09-24 富士通株式会社 通信処理装置、アドレス学習プログラムおよびアドレス学習方法
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
CN102739550B (zh) * 2012-07-17 2015-11-25 中山大学 基于随机副本分配的多存储器流水路由体系结构
US9491087B1 (en) * 2012-11-28 2016-11-08 The Arizona Board Of Regents On Behalf Of The University Of Arizona Devices and methods for forwarding information base aggregation
US9602407B2 (en) * 2013-12-17 2017-03-21 Huawei Technologies Co., Ltd. Trie stage balancing for network address lookup
US9355133B2 (en) 2014-05-07 2016-05-31 Red Hat Israel, Ltd. Offline compression for limited sequence length radix tree
CN106416152B (zh) 2014-06-10 2019-09-27 华为技术有限公司 一种查找装置、查找配置方法和查找方法
US20160301658A1 (en) * 2015-04-10 2016-10-13 X15 Software, Inc. Method, apparatus, and computer-readable medium for efficient subnet identification
CN106330716B (zh) * 2015-06-30 2019-12-13 新华三技术有限公司 Ip路由查找方法及装置
CN106330721B (zh) * 2015-06-30 2019-09-17 新华三技术有限公司 Ip路由查找方法及装置
US10558736B2 (en) * 2016-02-04 2020-02-11 Sap Se Metadata driven user interface layout control for web applications
CN109861908B (zh) * 2017-11-30 2022-06-28 迈普通信技术股份有限公司 一种路由转发方法及设备
JP7152636B2 (ja) * 2017-12-26 2022-10-13 国立大学法人京都大学 通信装置及び通信方法
CN111049746B (zh) 2018-10-12 2022-04-22 华为技术有限公司 一种路由表项生成方法、字典树生成方法和装置
CN112565072B (zh) * 2020-11-02 2022-08-09 鹏城实验室 一种路由表压缩方法、路由器及存储介质
CN112383145B (zh) * 2020-11-12 2022-09-02 山东鲁软数字科技有限公司 一种改善配电环网图成图效果的线路拆分方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560610B1 (en) * 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database
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
US7706302B2 (en) * 2004-09-14 2010-04-27 Alcatel Lucent Optimization of routing forwarding database in a network processor
CN1787477A (zh) * 2004-12-09 2006-06-14 北京三星通信技术研究有限公司 IPv6路由表的查找方法
CN101491015A (zh) * 2006-07-27 2009-07-22 佛罗里达大学研究基金公司 用于ip查找和更新的动态树位图
CN101141389B (zh) * 2007-09-29 2010-06-16 华为技术有限公司 增强多位Trie树查找方法和装置

Also Published As

Publication number Publication date
WO2011127642A1 (zh) 2011-10-20
EP2560327A1 (en) 2013-02-20
EP2560327B1 (en) 2014-06-04
CN102484610A (zh) 2012-05-30
EP2560327A4 (en) 2013-04-24
US20130034096A1 (en) 2013-02-07

Similar Documents

Publication Publication Date Title
CN102484610B (zh) 路由表建立方法和装置及路由表查找方法和装置
US9269411B2 (en) Organizing data in a hybrid memory for search operations
EP2159708B1 (en) Method for selecting hash function, method for storing and searching routing table and devices thereof
US6560610B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
US7099881B2 (en) Method for increasing average storage capacity in a bit-mapped tree-based storage engine by using remappable prefix representations and a run-length encoding scheme that defines multi-length fields to compactly store IP prefixes
CN103561133B (zh) 一种ip地址归属信息索引方法及快速查询方法
CN103404092B (zh) 路由前缀存储方法、装置及路由地址查找方法、装置
CN100496019C (zh) IPv6路由表快速查找和更新的方法
CN103780491B (zh) 一种实现IPv6快速路由查找的方法
CN102333036B (zh) 一种实现高速路由查找的方法和系统
CN102405623B (zh) 路由表项的存储方法和装置
CN105119834B (zh) 一种基于复合trie树结构的源地址目的地址联合查找方法
CN105141525A (zh) IPv6路由查找方法及装置
EP1063827B1 (en) Method for address lookup
CN102045412B (zh) IPv6地址前缀压缩存储方法及设备
CN106416152A (zh) 一种查找装置、查找配置方法和查找方法
CN101286935A (zh) 一种基于ip地址范围的路由查找方法
CN108134739B (zh) 一种基于索引特里树的路由查找方法及装置
CN103107945A (zh) 一种快速查找ipv6路由的系统及方法
Wuu et al. A longest prefix first search tree for IP lookup
CN114884877B (zh) 一种哈希表和HOT相结合的IPv6路由查找方法
CN108322394A (zh) 路由表建立、查找、删除及状态变更方法和装置
CN101277252A (zh) 多分支Trie树的遍历方法
US20110113129A1 (en) Method, device, computer program product and system for representing a partition of n w-bit intervals associated to d-bit data in a data communications network
CN110995876B (zh) 一种ip存储与查找的方法及装置

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