[发明专利]路由表存储与查找方法有效
申请号: | 201510081214.0 | 申请日: | 2015-02-15 |
公开(公告)号: | CN104679854B | 公开(公告)日: | 2018-01-26 |
发明(设计)人: | 杨仝;谢高岗 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京泛华伟业知识产权代理有限公司11280 | 代理人: | 王勇 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 路由 存储 查找 方法 | ||
技术领域
本发明涉及计算机网络技术领域,以及更具体地,涉及一种路由表存储与查找方法。
背景技术
路由器是因特网的核心设备,路由器的转发性能直接影响到整个因特网的性能。路由器转发的主要时间耗费在路由表的查找上,因此路由表的查找技术成为了一个经典的研究问题。
现有的路由表查找方法非常之多,分为软件方法和硬件方法。其中一些经典方法包括Lulea算法、PBF算法、Linux内核采用的LC-trie算法和思科路由器采用的Tree Bitmap算法。然而,现有的软件方法为加速查找而牺牲更新,或者只专注于算法更新而无法满足骨干链路查找速度需求;现有的硬件方法虽然可以实现高速查找,但往往难以支持快速更新,更重要的是硬件的高功耗和高成本严重制约了硬件算法的实际部署。
此外,路由器现存的一个重要问题是老化,随着路由表的飞速增长(年增长约15%),已部署的路由器或者无法容纳现有的路由表,或者查找速度越来越慢,所以不得不定期对路由器进行硬件升级或者更新换代。具体来说,所有路由表查找算法都会主动或者被动地将精心设计的数据结构分开存放在片内内存和片外内存。然而,随着路由表的飞速增长,片内能存储的数据结构越来越少,如果不升级片内内存,那么查找速度将越来越慢。
只有同时实现O(1)的查找时间和O(1)的片内内存,才能使得路由器的性能与路由表的变化无关,才可以避免定期对路由器进行升级或者更新换代。然而,现有技术都无法同时实现O(1)的查找时间和O(1)的片内内存。
发明内容
为解决上述问题,本发明提供一种路由表存储方法,包括:
将路由表trie树第0到n层的用于判断前缀长度的数据结构放在片内内存;
将第0到m层的用于查找下一跳的数据结构放在片外内存;以及
将第n+1到m层的用于判断前缀长度的数据结构放在片外内存;其中,m+1为路由表trie树层数,n<m,n与m为正整数。
上述方法中,对于IPv4路由表trie树,n=24。
上述方法中,路由表trie树第0到n层的用于判断前缀长度的数据结构为n+1个位图,每个位图与路由表trie树的其中一层相对应;以及,路由表trie树第0到n层的用于查找下一跳的数据结构为n+1个数组,每个数组与路由表trie树的其中一层相对应。其中,与路由表trie树第0到n层中的每层对应的位图指示路由表trie树中该层对应的前缀信息,并且指示该前缀信息对应的下一跳信息在该层对应的数组中的位置。
上述方法中,与第i层对应的位图和数组分别有2i位,且i=0,…,n,在第i层对应的位图中,每个1的位置分别指示路由表trie树中该层的每个前缀信息,其余位置为0;在第i层对应的数组中,与第i层对应的位图中指示前缀信息的位置相同的位置指示该前缀信息对应的下一跳端口号。
上述方法中,还包括根据以下步骤对第n层的内部节点进行关键层层推:
对于路由表trie树中第n层的具有下一跳信息的内部节点,如果其只有一个孩子节点,则生成其在第n+1层的另一个孩子节点,并将该内部节点的下一跳信息作为生成的孩子节点的下一跳信息;如果其有两个孩子节点,则将任何一个下一跳为空的孩子结点的下一跳信息赋值为该内部节点的下一跳信息;将该内部节点的下一跳置空;
对于路由表trie树中第n层的没有下一跳信息的内部节点,得到其具有下一跳信息的最近祖先节点的下一跳信息,如果其只有一个孩子节点,则生成其在第n+1层的另一个孩子节点,并将该祖先节点的下一跳信息作为生成的孩子节点的下一跳信息;如果其有两个孩子节点,则将任何一个下一跳为空的孩子结点的下一跳信息赋值为该祖先节点的下一跳信息。
上述方法中,对于在关键层层推之后路由表trie树中第n层的内部节点或叶子节点,第n层对应的位图中的对应位置为1,其他位置为0;对于第n层的内部节点指示的前缀信息,将第n层对应的数组中的对应位置设置为0,该层对应的数组中的其他位置与关键层层推之前相同。
上述方法中,对于IPv4路由表trie树,将该trie树推到第6、12、18、24和32层;以及对第24层的内部节点进行关键层层推。
上述方法中,对于IPv4路由表trie树,将该trie树推到第16和24层,并进行叶推。
上述方法中,对于多个IPv4路由表trie树,合并该多个路由表trie树并进行叶推,得到叠加trie树;以及将叠加trie树推到第16和24层,并进行叶推。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510081214.0/2.html,转载请声明来源钻瓜专利网。