CN102484610A - 路由表建立方法和装置及路由表查找方法和装置 - Google Patents
路由表建立方法和装置及路由表查找方法和装置 Download PDFInfo
- Publication number
- CN102484610A CN102484610A CN2010800036018A CN201080003601A CN102484610A CN 102484610 A CN102484610 A CN 102484610A CN 2010800036018 A CN2010800036018 A CN 2010800036018A CN 201080003601 A CN201080003601 A CN 201080003601A CN 102484610 A CN102484610 A CN 102484610A
- Authority
- CN
- China
- Prior art keywords
- trie
- subtrees
- routing table
- 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.)
- 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/54—Organization of routing tables
-
- 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/742—Route cache; Operation thereof
-
- 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
Abstract
公开了一种路由表建立方法和装置以及路由表查找方法和装置,其中,该路由表建立方法包括:将路由表的数据结构划分为主干和TRIE子树(101);将路由表项添加到所述TRIE子树(102);将所述TRIE子树的顶点的提升子节点保存到所述主干中,所述TRIE子树的高度小于或等于设置的高度阈值(103),所述TRIE子树的顶点的提升子节点为所述TRIE子树的顶点包括的前缀子节点中的子顶点。路由表的数据结构分为主干和TRIE子树,TRIE子树采用TRIE算法建立,可以保证路由表的高压缩率;根据高度阈值控制TRIE子树的高度,可以减少访问存储器的次数,提高查找速率,降低查找时延。
Description
路由表建立方法和装置及路由表查找方法和装置 技术领域
本发明实施例涉及通信技术领域, 特别涉及一种路由表建立方法和装置 及路由表查找方法和装置。 背景技术
为了阻止地址空间耗尽, 互联网工程任务组 ( The Internet Engineering Task Force; 简称: IETF) 于 1993 年提出了无类型域间路由 (Classless Inter-Domain Routing; 简称: CIDR) 的地址结构的临时解决办法。 CIDR是 现在实际路由查表的基石出, 脱离了传统的 A-E分类地址结构。 在 CIDR中, 一 个 IP网络由一个前缀 ( refix )表示, 该前缀由 IP地址和标识该 IP地址有 效位的掩码复合表示。 CIDR允许路由器进行路由聚合, 即大小相同、 在地址 空间中相互邻近且路由相同的 2的整数次幂个子网的路由表条目可以合并成 一条路径, 并在路由表中只占用一个路由表项。 最后的结果是: 给定的地址 块可按任意比特(bit)界限划分, 网络上的计算机将按连续范围分配地址, 但这个范围不需要相应的预先定义的类, 所以称为无类型编址。 CIDR可以避 免网络地址的过快枯竭和骨干路由器的路由表项的快速膨胀, 同时使网络地 址前缀的长度可以为任意值, 进行路由查表时必须进行最长前缀匹配(the longest prefix match)搜索。 衡量路由表的查表算法优劣的主要因素包括: 路由表查询速度(由访问存储器的次数决定)、 路由表所需要的存储器容量、 插入删除路由表项的难易程度等。
无类型路由表的数据结构可以存储在一个层状数据结构。 路由表的搜索 是沿层次向下进行的,因此可以采用二叉树( Binary Tree )或者是根树( Radix Tree)及其变形的数据结构表示, 表 1为一种示例路由表。
表 1
可以将表 1中的前缀存储到一个基本二叉树中,图 1 为现有的基本二叉树 存储的路由表的示意图, 如图 1所示, "0" 代表向左分支, "1" 代表向右分 支。 其中前缀比特值决定了从根向下的路径, 前缀 Pl、 P2、 P3、 P4分别采用 阴影表示。 该基本二叉树的节点中没有存储前缀 P1-P4的值, P1-P4 的值为抵 达对应节点的路径, 因此该基本二叉树的路径由所存储的数据(例如: 前缀 比特值)确定, 即该基本二叉树的路径表示了它所要存储的数据。 在该基本 二叉树中, 处于第 L层的节点代表了一类地址前 L比特均相同的地址空间, 且 该前 L个比特串是由从根节点到该节点的路径上的 L比特组成。 基本二叉树结 构查找和存储效率都 4艮低,比如:对于一组传统的 B类地址上划分的子网地址, 其前 16比特相同, 但遍历二叉树时, 一次只提取 "1 " 比特, 速度 ^艮慢, 若相 应的地址前缀最长为 M, 则树的深度为 M。 如果一次检查 K个比特, 则树的深度 可减少到 M/K, 这样树的内部节点包含的匹配项增加为 2的 K次幂。 这样的树被 称为 2的 K次幂分支树, 树的最大层数为 M/K。 查表算法在每个节点处检查的比 特数为 K, 也就被称为树的步长。
Pa t r i c i a# ( Binary Tree ) 的变型, Patr i c ia树允许每个 节点指定一个值, 测试连续跳过的比特数以加快搜索速度。 前缀存放在 Patr ic ia树的叶节点上,假设有 N个前缀则有 N个叶节点,另有 N-1个内部节点。 冗余的支路链被压缩到了一个节点, 因此查找算法不需要做连续的比特匹配 而是可以一次匹配多个比特来快速到达叶节点。 图 2为现有 Pa t r ic ia 树存储
的路由表的示意图, 对 Pa t r i c i a树能够较快地的搜索到叶节点, Pa t r i c i a树 对较长的前缀的搜索效率比基本二叉树要高, 如图 2所示, 如对于前缀 P4 , Pat r ic i a树经 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个 I P地址, I P地址的掩码和范围如下表 2:
如图 3所示, 为现有采用二叉树存储 IP地址掩码范围的示意图, 左边是 IP 地址的区间表示, 右边是将区间的端点放入二叉树中。 每个节点存储整个路 由表项, 且一个 IP地址前缀要分为 2个端点, 因此空间利用率低。
为了提高路由表的空间利用率低,可以采用 TRIE算法建立并查找路由表,
TRIE算法具有压缩率高、 更新速度块的优点。 但是由于 TRIE算法访问节点的 次数与、 访问存储器的次数和表项长度成正比, 随着 TRIE算法的关键(key ) 值增长,路由表高度增力口, IPv6转发信息库( Forwarding Informat ion Base ;
简称: FIB )查找访问存储器的次数较多, 造成吞吐率降低, 性能下降, 时延 增长, 容量降低。 发明内容
本发明实施例提供一种路由表建立方法和装置及路由表查找方法和装 置, 用以解决现有 TRIE算法中树的高度过高, 引起的查找路由表的速率慢, 时延增长的问题, 提高对路由表的查找速率, 降低查找时延。
本发明实施例提供了一种路由表建立方法, 包括:
将路由表的数据结构划分为主干和 TRIE子树;
将路由表项添加到所述 TRIE子树;
将所述 TRIE子树的顶点的提升子节点保存到所述主干中, 所述 TRIE子 树的高度小于或等于设置的高度阈值,所述 TRIE子树的顶点的提升子节点为 所述 TR I E子树的顶点包括的前缀子节点中的子顶点。
本发明实施例还提供了一种路由表查找方法, 其中, 路由表的数据结构 包括主干和 TRIE子树,所述子树的顶点的提升子节点保存在所述路由表的主 干中, 所述方法包括:
在所述路由表的主干中, 查找与关键字最长匹配的提升子节点; 获取所述与关键字最长匹配的提升子节点对应的 TRIE 子树的顶点的位 置;
根据所述与关键字最长匹配的提升子节点对应的 TRIE 子树的顶点的位 置, 在所述 TRIE子树中采用 TRIE算法查找所述关键字对应的查找结果。
本发明实施例还提供了一种路由表建立装置, 包括:
划分模块, 用于将路由表的数据结构划分为主干和 TRIE子树; 表项添加模块, 用于将路由表项添加到所述 TRIE子树;
保存模块, 用于将所述 TRIE 子树的顶点的提升子节点保存到所述主干
中, 所述 TRIE子树的高度小于或等于设置的高度阈值, 所述 TRIE子树的顶 点的提升子节点为所述 TRIE子树的顶点包括的前缀子节点中的子顶点。
本发明实施例还提供了一种路由表查找装置, 包括:
主干查找模块, 用于在路由表的主干中, 查找与关键字最长匹配的提升 子节点, 所述路由表的数据结构包括主干和 TRIE子树, 所述子树的顶点的提 升子节点保存在所述路由表的主干中;
子树位置获取模块, 用于获取所述与关键字最长匹配的提升子节点对应 的 TRIE子树的顶点的位置;
子树查找模块, 用于根据所述与关键字最长匹配的提升子节点对应的 TRIE子树的顶点的位置, 在所述 TRIE子树中采用 TRIE算法查找所述关键字 对应的查找结果。
本发明实施例提供了一种路由表建立方法和装置及路由表查找方法和装 置, 由于路由表的数据结构分为主干和 TRIE子树, 子树为采用 TRIE算法建 立的 TRIE子树, 可以保证路由表的高压缩率; 在添加路由表项时,控制 TRIE 子树的高度, 可以减少的访问存储器的次数, 提高了对查找路由表的速率, 降低了查找时延。 附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实 施例或现有技术描述中所需要使用的附图作一简单介绍, 下面描述中的附图 仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造 性劳动的前提下, 还可以根据这些附图获得其他的附图。
图 1 为现有的基本二叉树存储的路由表的示意图;
图 2为现有 Pat r ic ia 树存储的路由表的示意图;
图 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子树的顶点的提升子节点 为所述 TR I E子树的顶点包括的前缀子节点中的子顶点。
路由表可以存储在层状的数据结构中, 可以预先将路由表的数据结构划 分为主干和 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为本发明路由表建立方法实施例中多位(腿 l t i-b i t ) TRIE算法的 示意图, 多位 TRIE算法用 IP地址的多个位(bi t ) 的索引形成数组, 将由 IP地址的不同位形成的数组按其在 IP地址中的先后顺序关联, 查找时一次 查找多个位, 分级查找。 如图 5b中, 前 24位为第一级, 后 8位为第二级, 如果前 24位在第一存储区域 11 中匹配成功, 则可以直接将得到匹配结果发 送到转发信息库 13; 如果前 24位在第一存储区域 11中部分匹配, 则将前 24 位和后 8位结合在第二存储区域 12中匹配, 匹配成功时, 可以将得到匹配结 果发送到转发信息库 13。
图 5c为本发明路由表建立方法实施例中树位图 (Tree bi tmap ) 算法的 内位图的示意图,图 5d为本发明路由表建立方法实施例中树位图算法的外位 图的示意图。 树位图算法也属于 mul t i-bi t TRIE 算法, 树位图算法用位图 ( bi tmap )表示节点中有哪些前缀, 以及节点有哪些孩子。 内位图(Interna l bi tmap )表示节点中有哪些前缀, 如图 5c中的一个 TRIE子树的节点中可存
放 7个前缀, 但实际上仅在前缀子节点 PI、 P2、 P3的位置存放了三个前缀, 将存放前缀的内位图的位(bi t )置为 "1 " , 将未存放前缀的位置为 "0" , 可以得到 "1011000" 。 外位图 (Externa l bi tmap )可以表示 TRIE子树的一 个节点有哪些孩子, 如图 5d所示, 该节点最多可以有 8个孩子节点, 但实际 上只有三个孩子节点, 则在有孩子节点的位置上置 "1 " , 没有孩子节点的位 置上置 "0" 。
建立该路由表的数据结构时, 可以先采用 TRIE算法建立 TRIE子树, 然 后在添加路由表项或删除路由表项的具体过程中, 根据设置的高度阈值对保 存在所述路由表的主干中的提升子节点进行相应的更新,具体分为以下场景: 场景一、 添加路由表项
其中, 若所述 TRIE子树添加路由表项后的高度大于所述高度阈值, 则将 所述 TRIE子树中高度大于所述高度阈值的分支从所述 TRIE子树分裂, 得到 新 TRIE子树;
然后, 将所述新 TRIE子树的顶点的提升子节点保存到所述主干中, 所述 新 TRIE子树的顶点为所述 TRIE子树中高度大于所述高度阈值的分支、 与所 述 TR I E子树的顶点连接的节点。
图 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的提升子节点保存到主干中, 分裂后 Τ剩余的部分为 TRIE子树 Tl。 其中, 将 TRIE子树分裂得到新 TRIE 子树后, 新 TR I E子树的顶点与 TR I E子树顶点之间的对应关系不变, 新 TR I E 子树与 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剩余 的部分为 Tl。
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 Addressable Memory; 简称: 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 地址前缀, 如:
'1001***********" 。 ^叚设需要添加的 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树或三态内容寻址存储器等其他算法。 路由表具体结构
可以参照上述实施例中的相关描述和图 5 a。
其中, 在路由表的主干中查找与关键字最长匹配的提升子节点的具体过 程可以包括: 从保存在所述路由表的主干中的各个 TRIE 子树的提升子节点 中, 查找与所述关键字匹配的各个第一前缀; 从所述各个第一前缀中, 选取 掩码长度最长的第一前缀作为所述与关键字最长匹配的提升子节点。 其中, 查找与所述关键字对应的各个第一前缀时, 可以采用关键字中的部分数据与 主干中的各个提升子节点进行匹配, 匹配方法可以根据主干的建立方法选择。
302、 获取所述与关键字最长匹配的提升子节点对应的 TRIE子树的顶点 的位置;
与关键字最长匹配的提升子节点的地址信息可以指向该提升子节点所在 的 TRIE子树的顶点, 根据该地址信息可以获取该提升子节点对应的 TRIE子 树的顶点的位置。
303、 根据所述与关键字最长匹配的提升子节点对应的 TRIE子树的顶点 的位置,在所述 TRIE子树中采用 TRIE算法查找所述关键字对应的查找结果。
303具体可以包括:
根据所述与关键字最长匹配的提升子节点对应的 TRIE 子树的顶点的位 置,在所述与关键字最长匹配的提升子节点对应的所述 TRIE子树各个节点的 前缀子节点中, 查找与所述关键字匹配的各个第二前缀;
从所述各个第二前缀中, 选取掩码长度最长的第二前缀作为所述查找结 果。
其中, 查找与所述关键字对应的各个第二前缀时, 可以采用关键字中的 部分数据与 TRIE子树各个节点的前缀子节点进行匹配, 匹配方法可以采用建 立 TRIE子树时所使用的 TRIE算法。
以在上述实施例中图 6e的路由表中查找为例, 具体说明查找的过程。假 设查找的关键字为 "10111000011000" , 现在主干 TCAM中查找与关键字匹配
的提升子节点, 该与关键字匹配的提升子节点应该为一个或多个保存在 TCAM 中的提升子节点对应的 IP地址前缀。 以关键字 "10111000011000" 在图 6e 所示的路由表中查找后, 命中的提升子节点为两个 IP 地址前缀:
"1 01 1 1 0**** ****" 和 "101110000*** *" , 分别对应指向 TRIE子 4对 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 , 用于将路由表项添加到所述 TR I E子树;
保存模块 53 , 用于将所述 TRIE子树的顶点的提升子节点保存到所述主 干中, 所述 TRIE子树的高度小于或等于设置的高度阈值, 所述 TRIE子树的 顶点的提升子节点为所述 TRIE子树的顶点包括的前缀子节点中的子顶点。
具体地, 在路由表存储的数据结构中, 划分模块 51将路由表的数据结构 划分为主干和 TRIE子树, 采用 TRIE算法建立的 TRIE子树, 采用其他算法例 如: 范围匹配、 B树或三态内容寻址存储器等建立主干。 其中表项添加模块
52将路由表项添加到所述 TRI E子树后, 保存模块 53将 TRIE子树的顶点的 提升子节点保存在主干中, 且预先设置了高度阈值, TRIE子树的高度小于或 等于设置的高度阈值。 如果采用 TRIE算法建立的 TRIE子树, 在添加路由表 项例如: IP 地址前缀后的高度大于高度阈值, 则可以将添加路由表项后的 TRI E子树分裂, 将路由表的数据结构中的 TRIE子树的高度控制为高度阈值。 路由表的数据结构建立之后, 可能需要删除其中的路由表项, 删除一定的路 由表项之后, 如果删除路由表项后的 TRIE子树的高度小于或等于高度阈值, 将删除路由表项后的 TRIE子树与上一级 TRI E子树合并。 本实施例中建立路 由表的具体过程, 可以参见本发明路由表建立方法实施例中的相关描述。
本实施例由于路由表的数据结构分为主干和 TRIE子树, TRIE子树采用 TRIE算法建立, 因此可以保证路由表的高压缩率; 根据设定的高度阈值, 更 新模块可以控制 TRIE子树的高度, 因此减少了的访问存储器的次数, 提高了 查找速率, 降低了查找时延。
图 9为本发明路由表建立装置第二实施例的结构示意图, 如图 9所示, 在本发明路由表建立装置第二实施例的基石出上,路由表建立装置还可以包括: 分裂模块 54 , 用于若所述 TRIE子树添加路由表项后的高度大于所述高度阈 值, 则将所述 TRIE子树中高度大于所述高度阈值的分支从所述 TRIE子树分 裂, 得到新 TRIE子树;
此外, 保存模块 53 , 还用于将所述新 TRI E子树的顶点的提升子节点保 存到所述主干中, 所述新 TRIE子树的顶点为所述 TRIE子树中高度大于所述 高度阈值的分支、 与所述 TRIE子树的顶点连接的节点。
或者, 进一步地, 路由表建立装置还可以包括: 合并删除模块 56 , 用于 若所述 TRI E子树分裂后的高度小于所述高度阈值, 且所述 TRIE子树具有上 一级 TRIE子树, 将所述 TRIE子树的顶点合并到所述上一级 TRIE子树, 从所 述主干中删除所述 TR I E子树的顶点的提升子节点。
再进一步地, 合并删除模块 56还可以用于, 若所述 TRIE子树删除路由 表项后的高度小于所述高度阈值, 且所述 TRIE子树具有上一级 TRIE子树, 将所述 TR I E子树的顶点合并到上一级 TR I E子树,从所述主干中删除所述 TR I E 子树的顶点的提升子节点。
具体地, 在路由表存储的数据结构中, 划分模块 51可以预先将路由表的 数据结构划分为主干和 TRIE子树, TRIE子树的顶点的提升子节点保存在主 干中; 采用 TRIE算法建立 TRIE子树, 具体的建立 TRIE子树的方法可以参照 本发明路由表建立方法实施例的相关示例的描述,采用范围匹配、 B树或 TCAM 等方法建立 TRIE子树所在的主干。 表项添加模块 52将路由表项添加到所述 TRI E子树后, 保存模块 53将 TRIE子树的顶点的提升子节点保存在主干中, 且预先设置了高度阈值, TRIE子树的高度小于或等于设置的高度阈值。 在添 加路由表项时, 如果添加路由表项后的 TRI E 子树的高度大于设置的高度阈 值,分裂模块 54将所述 TRIE子树中高度大于所述高度阈值的分支从所述 TRI E 子树分裂, 得到新 TRIE子树。 如果分裂后的 TRIE子树的高度小于高度阈值, 且 TRIE子树具有上一级 TRIE子树, 合并删除模块 56将所述 TRIE子树的顶 点合并到所述上一级 TRIE子树, 从所述主干中删除所述 TRIE子树的顶点的 提升子节点。
路由表的数据结构建立之后, 可能需要删除其中的路由表项例如: IP地 址前缀, 删除一定的路由表项之后, 如果删除路由表项后的 TRIE子树的高度 小于或等于高度阈值, 且所述 TRIE子树具有上一级 TRIE子树, 合并删除模 块 56还可以用于: 将所述 TRIE子树的顶点合并到上一级 TRIE子树, 从所述 主干中删除所述 TR I E子树的顶点的提升子节点。
本实施例路由表的数据结构分为主干和 TRIE子树, TRIE子树采用 TRIE 算法建立, 因此可以保证路由表的高压缩率; 在添加路由表项时,分裂单元和 保存单元可以将大于高度阈值的 TRI E子树分裂;在删除路由表项时, 删除单
元和添加单元可以将高度小于高度阈值的 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子树中查找关键字对 应的查找结果, 可以减少访问存储器的次数, 提高查找速率, 降低查找时延。
本领域普通技术人员可以理解: 实现上述方法实施例的全部或部分步骤 可以通过程序指令相关的硬件来完成, 前述的程序可以存储于计算机可读取 存储介质中, 该程序在执行时, 执行包括上述方法实施例的步骤; 而前述的 存储介质包括: R0M、 RAM, 磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是: 以上实施例仅用以说明本发明的技术方案, 而非对其 限制; 尽管参照前述实施例对本发明进行了详细的说明, 本领域的普通技术 人员应当理解: 其依然可以对前述各实施例所记载的技术方案进行修改, 或 者对其中部分技术特征进行等同替换; 而这些修改或者替换, 并不使相应技 术方案的本质脱离本发明各实施例技术方案的范围。
Claims (1)
- 权 利 要 求1、 一种路由表建立方法, 其特征在于, 包括:将路由表的数据结构划分为主干和 TRIE子树;将路由表项添加到所述 TRIE子树;将所述 TRIE子树的顶点的提升子节点保存到所述主干中, 所述 TRIE子 树的高度小于或等于设置的高度阈值,所述 TRIE子树的顶点的提升子节点为 所述 TR I E子树的顶点包括的前缀子节点中的子顶点。2、 根据权利要求 1所述的路由表建立方法, 其特征在于, 还包括: 若所述 TRIE 子树添加路由表项后的高度大于所述高度阈值, 则将所述TRIE子树中高度大于所述高度阈值的分支从所述 TRIE子树分裂,得到新 TRIE 子树;将所述新 TRIE子树的顶点的提升子节点保存到所述主干中,所述新 TRIE 子树的顶点为所述 TRIE子树中高度大于所述高度阈值的分支、 与所述 TRIE 子树的顶点连接的节点。3、 根据权利要求 2所述的路由表建立方法, 其特征在于, 还包括: 若所述 TRIE子树分裂后的高度小于所述高度阈值, 且所述 TRIE子树具 有上一级 TRIE子树, 将所述 TRIE子树的顶点合并到所述上一级 TRIE子树, 从所述主干中删除所述 TRIE子树的顶点的提升子节点。4、 根据权利要求 1所述的路由表建立方法, 其特征在于, 还包括: 若所述 TRIE子树删除路由表项后的高度小于所述高度阈值,且所述 TRIE 子树具有上一级 TRIE子树,将所述 TRIE子树的顶点合并到上一级 TRIE子树, 从所述主干中删除所述 TRIE子树的顶点的提升子节点。5、根据权利要求 1-4任一所述的路由表建立方法,其特征在于,还包括: 采用 TRIE算法建立所述 TRIE子树, 采用范围匹配、 B树或三态内容寻 址存储器建立所述主干。 6、 一种路由表查找方法, 其特征在于, 路由表的数据结构包括主干和 TRIE子树, 所述 TRIE子树的顶点的提升子节点保存在所述路由表的主干中, 所述方法包括:在所述路由表的主干中, 查找与关键字最长匹配的提升子节点; 获取所述与关键字最长匹配的提升子节点对应的 TRIE 子树的顶点的位 置;根据所述与关键字最长匹配的提升子节点对应的 TRIE 子树的顶点的位 置, 在所述 TRIE子树中采用 TRIE算法查找所述关键字对应的查找结果。7、 根据权利要求 6所述的路由表查找方法, 其特征在于, 所述在所述路 由表的主干中, 查找与关键字最长匹配的提升子节点, 包括:从保存在所述路由表的主干中的各个 TRIE子树的提升子节点中,查找与 所述关键字匹配的各个第一前缀;从所述各个第一前缀中, 选取掩码长度最长的第一前缀作为所述与关键 字最长匹配的提升子节点。8、 根据权利要求 6或 7所述的路由表查找方法, 其特征在于, 所述根据 所述与关键字最长匹配的提升子节点对应的 TRIE子树的顶点的位置,在所述 TRIE子树中采用 TRIE算法查找所述关键字对应的查找结果, 包括:根据所述与关键字最长匹配的提升子节点对应的 TRIE 子树的顶点的位 置,在所述与关键字最长匹配的提升子节点对应的所述 TRIE子树各个节点的 前缀子节点中, 查找与所述关键字匹配的各个第二前缀;从所述各个第二前缀中, 选取掩码长度最长的第二前缀作为所述查找结 果。9、 一种路由表建立装置, 其特征在于, 包括:划分模块, 用于将路由表的数据结构划分为主干和 TRIE子树;表项添加模块, 用于将路由表项添加到所述 TRIE子树; 保存模块, 用于将所述 TRIE 子树的顶点的提升子节点保存到所述主干 中, 所述 TRIE子树的高度小于或等于设置的高度阈值, 所述 TRIE子树的顶 点的提升子节点为所述 TRIE子树的顶点包括的前缀子节点中的子顶点。10、 根据权利要求 9所述的路由表建立装置, 其特征在于, 还包括: 分裂模块,用于若所述 TRIE子树添加路由表项后的高度大于所述高度阈 值, 则将所述 TRIE子树中高度大于所述高度阈值的分支从所述 TRIE子树分 裂, 得到新 TRIE子树;所述保存模块,还用于将所述新 TRIE子树的顶点的提升子节点保存到所 述主干中, 所述新 TRIE子树的顶点为所述 TRIE子树中高度大于所述高度阈 值的分支、 与所述 TRIE子树的顶点连接的节点;或者还包括:合并删除模块, 用于若所述 TRIE子树分裂后的高度小于所述高度阈值, 且所述 TRIE子树具有上一级 TRIE子树,将所述 TRIE子树的顶点合并到所述 上一级 TRIE子树, 从所述主干中删除所述 TRIE子树的顶点的提升子节点。11、 根据权利要求 10所述的路由表建立装置, 其特征在于, 所述合并删 除模块还用于, 若所述 TRIE子树删除路由表项后的高度小于所述高度阈值, 且所述 TRIE子树具有上一级 TRIE子树,将所述 TRIE子树的顶点合并到上一 级 TRIE子树, 从所述主干中删除所述 TRIE子树的顶点的提升子节点。12、 一种路由表查找装置, 其特征在于, 包括:主干查找模块, 用于在路由表的主干中, 查找与关键字最长匹配的提升 子节点, 所述路由表的数据结构包括主干和 TRIE子树, 所述 TRIE子树的顶 点的提升子节点保存在所述路由表的主干中;子树位置获取模块, 用于获取所述与关键字最长匹配的提升子节点对应 的 TRIE子树的顶点的位置;子树查找模块, 用于根据所述与关键字最长匹配的提升子节点对应的 TRIE子树的顶点的位置, 在所述 TRIE子树中采用 TRIE算法查找所述关键字 对应的查找结果。13、 根据权利要求 12所述的路由表查找装置, 其特征在于, 所述主干查 找模块包括:第一前缀子模块,用于从保存在所述路由表的主干中的各个 TRIE子树的 提升子节点中, 查找与所述关键字匹配的各个第一前缀;最长匹配子模块, 用于从所述各个第一前缀中, 选取掩码长度最长的第 一前缀作为所述与关键字最长匹配的提升子节点。14、 根据权利要求 12或 13所述的路由表查找装置, 其特征在于, 所述 子树查找模块包括:第二前缀子模块, 用于根据所述与关键字最长匹配的提升子节点对应的 TRIE子树的顶点的位置, 在所述与关键字最长匹配的提升子节点对应的所述 TRIE子树各个节点的前缀子节点中,查找与所述关键字匹配的各个第二前缀; 查找结果子模块, 用于从所述各个第二前缀中, 选取掩码长度最长的第 二前缀作为所述查找结果。
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 true CN102484610A (zh) | 2012-05-30 |
CN102484610B 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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102739550A (zh) * | 2012-07-17 | 2012-10-17 | 中山大学 | 基于随机副本分配的多存储器流水路由体系结构 |
CN109861908A (zh) * | 2017-11-30 | 2019-06-07 | 迈普通信技术股份有限公司 | 一种路由转发方法及设备 |
CN111049746A (zh) * | 2018-10-12 | 2020-04-21 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
Families Citing this family (15)
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 |
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 |
EP3145134B1 (en) | 2014-06-10 | 2019-12-18 | Huawei Technologies Co., Ltd. | Lookup device and lookup configuration method |
US20160301658A1 (en) * | 2015-04-10 | 2016-10-13 | X15 Software, Inc. | Method, apparatus, and computer-readable medium for efficient subnet identification |
CN106330721B (zh) * | 2015-06-30 | 2019-09-17 | 新华三技术有限公司 | Ip路由查找方法及装置 |
CN106330716B (zh) * | 2015-06-30 | 2019-12-13 | 新华三技术有限公司 | Ip路由查找方法及装置 |
US10558736B2 (en) * | 2016-02-04 | 2020-02-11 | Sap Se | Metadata driven user interface layout control for web applications |
JP7152636B2 (ja) * | 2017-12-26 | 2022-10-13 | 国立大学法人京都大学 | 通信装置及び通信方法 |
CN112565072B (zh) * | 2020-11-02 | 2022-08-09 | 鹏城实验室 | 一种路由表压缩方法、路由器及存储介质 |
CN112383145B (zh) * | 2020-11-12 | 2022-09-02 | 山东鲁软数字科技有限公司 | 一种改善配电环网图成图效果的线路拆分方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1635519A1 (en) * | 2004-09-14 | 2006-03-15 | Alcatel | Optimization of routing database in a network processor |
CN1787477A (zh) * | 2004-12-09 | 2006-06-14 | 北京三星通信技术研究有限公司 | IPv6路由表的查找方法 |
CN101141389A (zh) * | 2007-09-29 | 2008-03-12 | 华为技术有限公司 | 增强多位Trie树查找方法和装置 |
CN101491015A (zh) * | 2006-07-27 | 2009-07-22 | 佛罗里达大学研究基金公司 | 用于ip查找和更新的动态树位图 |
Family Cites Families (2)
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 |
-
2010
- 2010-04-12 WO PCT/CN2010/071698 patent/WO2011127642A1/zh active Application Filing
- 2010-04-12 EP EP10849652.2A patent/EP2560327B1/en active Active
- 2010-04-12 CN CN201080003601.8A patent/CN102484610B/zh active Active
-
2012
- 2012-10-11 US US13/649,633 patent/US20130034096A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1635519A1 (en) * | 2004-09-14 | 2006-03-15 | Alcatel | Optimization of routing database in a network processor |
US20060056412A1 (en) * | 2004-09-14 | 2006-03-16 | Gregory Page | 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查找和更新的动态树位图 |
CN101141389A (zh) * | 2007-09-29 | 2008-03-12 | 华为技术有限公司 | 增强多位Trie树查找方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102739550A (zh) * | 2012-07-17 | 2012-10-17 | 中山大学 | 基于随机副本分配的多存储器流水路由体系结构 |
CN102739550B (zh) * | 2012-07-17 | 2015-11-25 | 中山大学 | 基于随机副本分配的多存储器流水路由体系结构 |
CN109861908A (zh) * | 2017-11-30 | 2019-06-07 | 迈普通信技术股份有限公司 | 一种路由转发方法及设备 |
CN111049746A (zh) * | 2018-10-12 | 2020-04-21 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
CN111049746B (zh) * | 2018-10-12 | 2022-04-22 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
US11627072B2 (en) | 2018-10-12 | 2023-04-11 | Huawei Technologies Co., Ltd. | Routing entry generation method and apparatus and trie generation method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
WO2011127642A1 (zh) | 2011-10-20 |
US20130034096A1 (en) | 2013-02-07 |
EP2560327B1 (en) | 2014-06-04 |
CN102484610B (zh) | 2015-01-21 |
EP2560327A4 (en) | 2013-04-24 |
EP2560327A1 (en) | 2013-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102484610A (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
US9269411B2 (en) | Organizing data in a hybrid memory for search operations | |
US7774538B2 (en) | Method for ternary contents address memory table management | |
CN100496019C (zh) | IPv6路由表快速查找和更新的方法 | |
CN103780491B (zh) | 一种实现IPv6快速路由查找的方法 | |
JP3570323B2 (ja) | アドレスに関するプレフィクスの格納方法 | |
CN103404092A (zh) | 路由前缀存储方法、装置及路由地址查找方法、装置 | |
CN105141525A (zh) | IPv6路由查找方法及装置 | |
CN102521334A (zh) | 一种基于分类特性和平衡二叉树的数据存储、查询方法 | |
CN106416152A (zh) | 一种查找装置、查找配置方法和查找方法 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN102045412B (zh) | IPv6地址前缀压缩存储方法及设备 | |
CN106330716B (zh) | Ip路由查找方法及装置 | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
US7478109B1 (en) | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes | |
US8364803B2 (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 | |
CN108322394A (zh) | 路由表建立、查找、删除及状态变更方法和装置 | |
CN114884877B (zh) | 一种哈希表和HOT相结合的IPv6路由查找方法 | |
Wuu et al. | A longest prefix first search tree for IP lookup | |
Mishra et al. | PC-DUOS: Fast TCAM lookup and update for packet classifiers | |
CN110995876B (zh) | 一种ip存储与查找的方法及装置 | |
WO2015192742A1 (zh) | 一种查找装置、查找方法和配置方法 | |
CN102904812B (zh) | 路由表项的存储方法、查找方法、装置及系统 | |
CN104301227B (zh) | 基于tcam的高速低功耗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 |