IPv6路由查找方法及装置的制造方法_6

文档序号:9420250阅读:来源:国知局
bit-Trie的VRB Table的CEPB中查找到对应的bit ; 若查找到的bit有效,则根据该IPv6地址的高m+lbit中的低d bit确定对应的CNP,根据该CNP查找到对应的Branch_Tree的数据结构信息; 根据该Branch_Tree的Level I?p_l的数据结构信息查找该IPv6地址的路由。4.根据权利要求1或2所述的方法,其特征在于,将每棵MultibitTrie划分为n+1个层Level包括: 按照路由分布较多的IPv6前缀段位于Level底部的原则,将每棵Multibit Trie划分为8个Level:Level O?7,Level O由O?8级前缀构成,Levell?3的步长都为8,Level 4?6的步长都为24,Level 7的步长为23 ; 所述m = 8,所述P = 4。5.根据权利要求4所述的方法,其特征在于,所述保存每个BranchJree的数据结构信息包括: 保存每个Branch_Tree中除Level O外的每个Level中的Sub_Trie节点的数据结构信息,其中:除最后一个Level的最后一级Sub_Trie节点的步长为7外,其余Sub_Trie节点的步长都为8 ;对于每个Branch_Tree中除LevelO外的每个Level中的每个Sub_Trie节点,采用前缀扩展的方式将该Sub_Trie节点的0、1、2级上的前缀的路由扩展到3级前缀上;将每个Sub_Trie节点均勾划分成8个分段Sub_Trie节点,保存每个分段Sub_Trie节点的数据结构信息,其中,每个分段Sub_Trie节点以该分段Sub_Trie节点的高3级IPv6如缀为索引; 所述采用最长的Hash命中结果对应的Subjrie节点的数据结构信息指针查找路由包括: 根据该IPv6地址在对应Sub_Trie节点中的对应8bit,根据该8bit的高3bit在本Sub_Trie节点中索引到对应的分段Sub_Trie节点,根据该分段Sub_Trie节点的数据结构信息进行后续路由查找过程; 所述在该Branch_Tree的Level I?p_l中查找路由包括:当查找到Levell?p_l中的一 Level时,根据该IPv6前缀在本Level中对应的8bit的高3bit在本Level的Sub_Trie中索引到对应的分段Sub_Trie,根据该分段Sub_Trie的数据结构信息进行后续路由查找过程。6.根据权利要求4所述的方法,其特征在于,所述保存每个BranchJree的数据结构信息包括: 对于Level 3的Sub_Trie节点以及Level 7的最后一级Sub_Trie节点,该Sub_Trie节点的数据结构信息包括: 1)q个前缀密钥Prefix Key:每个Prefix key代表该Sub_Trie节点中的其中一个有路由分布的IP前缀的IP地址的最低7bit,其中,q为预设的该Sub_Trie节点中的有路由分布的IP前缀的最大数量; 2)结果数组指针ResultArray ptr ; 所述采用最长的Hash命中结果对应的Subjrie节点的数据结构信息指针查找路由时,当查找到Level 7的最后一级Sub_Trie节点时,直接将该IPv6地址的最低7bit与Level 7的各最后一级Sub_Trie节点的数据结构信息中的Prefix Key匹配,若匹配上,贝Ij根据对应的Result Array ptr直接确定路由; 所述在该Branch_Tree的Level I?p_l中查找路由时,当查找到Level 3时,直接将该IPv6地址的最低8bit与Level 3的各Sub_Trie的数据结构信息中的Prefix Key匹配,若匹配上,则根据对应的Result Array ptr直接确定路由。7.根据权利要求1所述的方法,其特征在于,预先为Levelp?η中的每个Level设置多个Hash函数,每个Hash函数对应一张Hash表,Hash表中的每个位置唯一代表一个Hash计算结果,每个位置用于存储该位置代表的Hash计算结果对应的输入Key及该输入Key对应的Sub_Trie节点的数据结构信息指针; 所述采用预设的本Level的Hash函数对输入Key进行计算包括: a、采用预设的本Level的多个Hash函数分别对输入Key进行计算,针对得到的每个Hash计算结果,在对应的Hash表中查找到对应的位置; 若在多个Hash表中查找到的多个位置中有任一个位置为空,则将当前输入key以及本Sub_Trie节点的数据结构信息指针放入该位置; 若在多个Hash表中查找到的多个位置都不为空,则在该多个位置中任选一个位置,将该位置上的原有输入Key和Sub_Trie节点的数据结构信息指针取出,将当前输入key以及本Sub_Trie节点的数据结构信息指针放入该位置; b、对于取出的输入Key,判断是否已连续取出预设数目个输入key,若是,将该取出的输入key及其对应的Sub_Trie节点的数据结构信息指针放入取出key列表中,否则,将该取出的输入key作为当前输入key,返回执行步骤a。8.根据权利要求7所述的方法,其特征在于,所述分别采用每个Level的Hash函数对针对每个Level的输入key进行计算包括: 分别采用每个Level的多个Hash函数对针对每个Level的输入key进行计算,得到多个Hash计算结果; 对于每个Hash计算结果,在对应Hash函数的Hash表中查找对应的位置,若查找到对应位置,将对应位置上存储的输入Key与构造的输入key进行匹配,若匹配上,则命中,若未匹配上,则继续在对应Level的取出key列表中查找构造的输入key。9.根据权利要求7或8所述的方法,其特征在于,所述每个Hash函数对应一张Hash表为: 所有VPN的Multibit Trie在Level p?η中的同一 Level中针对同一 Hash函数都使用同一张Hash表。10.根据权利要求2所述的方法,其特征在于,所述在该Branch_Tree的LevelI?p_l中查找路由之后进一步包括: 若未查找到,则从片外存储空间的预定区域中读取默认路由,将默认路由作为最终查找到的路由。11.一种IPv6路由查找装置,其特征在于,该装置包括: 多位字典树Multibit Trie建立及划分模块:分别针对每个虚拟专网VPN中的IPv6前缀的路由分布,构建一棵Multibit Trie ;将每棵Multibit Trie划分为n+1个层Level:Level O?η,η为大于I的整数;采用前缀扩展的方法将Multibit Trie的I?m级IPv6前缀上的路由扩展到m+Ι级IPv6前缀上,m为大于I的整数;将第m+Ι级IPv6前缀的每一个分支作为一个分支树Branch_Tree,保存每个Branch_Tree的数据结构信息; Hash映射模块:针对Level P?η中的每个第一级子字典树Sub_Trie节点,以当前VPN标识和本Sub_Trie节点的IPv6前缀的IPv6地址在本Level之前的所有位bit作为输入Key,采用预设的本Level的哈希Hash函数对输入Key进行计算,将Hash计算结果映射到本Sub_Trie节点的数据结构信息指针上,p为整数且0〈ρ〈η ; 路由查找模块:当对一 VPN内的一 IPv6地址进行路由查找时,先根据VPN标识和该IPv6地址在每个Level之前的所有bit分别构造针对每个Level的输入Key,分别采用每个Level的Hash函数对针对每个Level的输入Key进行计算,若有Hash计算结果命中,则采用最长的Hash命中结果对应的Subjrie节点的数据结构信息指针查找路由;否则,根据该IPv6地址的高m+lbit查找到对应的Branch_Tree,在该Branch_Tree的Level I?p_l中查找路由。12.根据权利要求11所述的装置,其特征在于,所述MultibitTrie建立及划分模块将O级IPv6前缀的默认路由存储在片外存储空间的预定区域,将I?m级IPv6前缀的路由存储在片外存储空间的空闲区域中; 所述Multibit Trie建立及划分模块保存每个Branch_Tree的数据结构信息为:将每个Branch_Tree的数据结构信息保存在片外存储空间的空闲区域中。13.根据权利要求11或12所述的装置,其特征在于,所述MultibitTrie建立及划分模块保存每个Branch_Tree的数据结构信息进一步包括: 针对Branch_Tree维护虚拟专网入口位图VRB Table,该VRB Table包含压缩扩展路径位图CEPB和子节点指针CNP,其中,所述CEPB共2m+1/2d bit,每2df连续的Branch_Tree对应CEPB的一个bit,当2df连续的Branch_Tree中存在在Level I?p_l中有路由分布的Branch_Tree时,则对应的CEPB位有效,d为正整数;所述CNP表示第一个CEPB有效bit对应的2df Branch_Tree的第一个Branch_Tree的指针; 所述路由查找模块根据该IPv6地址的高m+lbit查找到对应的Branch_Tree,在该Branch_Tree的Level I?p_l中查找路由包括: 读取该IPv6地址的高m+lbit,根据该IPv6地址的高m+l-d bit在该Multibit-Trie的VRB Table的CEPB中查找到对应的bit ;若查找到的bit有效,则根据该IPv6地址的高m+lbit中的低d bit确定对应的CNP,根据该CNP查找到对应的Branch_Tree的数据结构信息;根据该Branch_Tree的Level I?p_l的数据结构信息查找该IPv6地址的路由。14.根据权利要求11或12所述的装置,其特征在于,所述MultibitTrie建立及划分模块将每棵Multibit Trie划分为n+1个层Level包括: 按照路由分布较多的IPv6前缀段位于Level底部的原则,将每棵Multibit Trie划分为8个Level:Level O?7,Level O由O?8级前缀构成,Levell?3的步长都为8,Level 4?6的步长都为24,Level 7的步长为23 ;所述m = 8,所述p = 4。15.根据权利要求14所述的装置,其特征在于,所述MultibitTrie建立及划分模块保存每个Branch_Tree的数据结构信息包括: 保存每个Branch_Tree中除Level O外的每个Level中的Sub_Trie节点的数据结构信息,其中:除最后一个Level的最后一级Sub_Trie节点的步长为7外,其余Sub_Trie节点的步长都为8 ;对于每个Branch_Tree中除LevelO外的每个Level中的每个Sub_Trie节点,采用前缀扩展的方式将该Sub_Trie节点的0、1、2级上的前缀的路由扩展到3级前缀上;将每个Sub_Trie节点均勾划分成8个分段Sub_Trie节点,保存每个分段Sub_Trie节点的数据结构信息,其中,每个分段Sub_Trie节点以该分段Sub_Trie节点的高3级IPv6如缀为索引; 所述路由查找模块采用最长的Hash命中结果对应的Subjrie节点的数据结构信息指针查找路由包括: 根据该IPv6地址在对应Sub_Trie节点中的对应8bit,根据该8bit的高3bit在本Sub_Trie节点中索引到对应的分段Sub_Trie节点,根据该分段Sub_Trie节点的数据结构信息进行后续路由查找过程; 所述路由查找模块在该Branch_Tree的Level I?p_l中查找路由包括:当查找到Level I?p_l中的一 Level时,根据该IPv6前缀在本Level中对应的8bit的高3bit在本Level的Sub_Trie中索引到对应的分段Sub_Trie,根据该分段Sub_Trie的数据结构信息进行后续路由查找过程。16.根据权利要求14所述的方法,其特征在于,所述MultibitTrie建立及划分模块保存每个Branch_Tree的数据结构信息包括: 对于Level 3的Sub_Trie节点以及Level 7的最后一级Sub_Trie节点,该Sub_Trie节点的数据结构信息包括: 1)q个前缀密钥Prefix Key:每个Prefix key代表该Sub_Trie节点中的其中一个有路由分布的IP前缀的IP地址的最低7bit,其中,q为预设的该Sub_Trie节点中的有路由分布的IP前缀的最大数量; 2)结果数组指针ResultArray ptr ; 所述路由查找模块采用最长的Hash命中结果对应的Subjrie节点的数据结构信息指针查找路由时,当查找到Level 7的最后一级Sub_Trie节点时,直接将该IPv6地址的最低7bit与Level 7的各最后一级Sub_Trie节点的数据结构信息中的Prefix Key匹配,若匹配上,则根据对应的Result Array ptr直接确定路由; 所述路由查找模块在该Branch_Tree的Level I?p_l中查找路由时,当查找到Level3时,直接将该IPv6地址的最低8bit与Level 3的各Sub_Trie的数据结构信息中的PrefixKey匹配,若匹配上,则根据对应的Result Array ptr直接确定路由。17.根据权利要求11所述的装置,其特征在于,所述装置进一步包括Hash函数及Hash表构造模块,用于预先为Level p?η中的每个Level设置多个Hash函数,每个Hash函数对应一张Hash表,Hash表中的每个位置唯一代表一个Hash计算结果,每个位置用于存储该位置代表的Hash计算结果对应的输入Key及该输入Key对应的Sub_Trie节点的数据结构信息指针; 所述Hash映射模块采用预设的本Level的Hash函数对输入Key进行计算包括: a、采用预设的本Level的多个Hash函数分别对输入Key进行计算,针对得到的每个Hash计算结果,在对应的Hash表中查找到对应的位置; 若在多个Hash表中查找到的多个位置中有任一个位置为空,则将当前输入key以及本Sub_Trie节点的数据结构信息指针放入该位置; 若在多个Hash表中查找到的多个位置都不为空,则在该多个位置中任选一个位置,将该位置上的原有输入Key和Sub_Trie节点的数据结构信息指针取出,将当前输入key以及本Sub_Trie节点的数据结构信息指针放入该位置; b、对于取出的输入Key,判断是否已连续取出预设数目个输入key,若是,将该取出的输入key及其对应的Sub_Trie节点的数据结构信息指针放入取出key列表中,否则,将该取出的输入key作为当前输入key,返回执行步骤a。18.根据权利要求17所述的装置,其特征在于,所述路由查找模块分别采用每个Level的Hash函数对针对每个Level的输入key进行计算包括: 分别采用每个Level的多个Hash函数对针对每个Level的输入key进行计算,得到多个Hash计算结果; 对于每个Hash计算结果,在对应Hash函数的Hash表中查找对应的位置,若查找到对应位置,将对应位置上存储的输入Key与构造的输入key进行匹配,若匹配上,则命中,若未匹配上,则继续在对应Level的取出key列表中查找构造的输入key。19.根据权利要求17或18所述的方法,其特征在于,所述Hash函数及Hash表构造模块进一步用于,设置所有VPN的Multibit Trie在Level p?η中的同一 Level中针对同一 Hash函数都使用同一张Hash表。20.根据权利要求12所述的方法,其特征在于,所述路由查找模块在该Branch_Tree的Level I?p_l中查找路由之后进一步用于, 若未查找到,则从片外存储空间的预定区域中读取默认路由,将默认路由作为最终查找到的路由。
【专利摘要】本申请提出IPv6路由查找方法及装置。方法包括:分别针对每个VPN中的IPv6前缀的路由分布,构建一棵Multibit?Trie;将每棵Multibit?Trie划分为n+1个Level:Level?0~n;将Multibit?Trie的1~m级IPv6前缀上的路由扩展到m+1级前缀上;将第m+1级IPv6前缀的每一个分支作为一个Branch_Tree;针对Level?p~n中的每个第一级Sub_Trie节点,以当前VPN标识+本Sub_Trie节点的IPv6地址在本Level之前的所有bit作为输入Key,对输入Key进行Hash计算;当对一VPN内的一IPv6地址进行路由查找时,分别构造针对每个Level的输入Key,对针对每个Level的输入Key进行计算,采用最长的Hash命中结果查找路由。本申请提高了IPv6路由查找效率。
【IPC分类】H04L12/741
【公开号】CN105141525
【申请号】CN201510388574
【发明人】任凯, 葛长忠, 安绍亮
【申请人】杭州华三通信技术有限公司
【公开日】2015年12月9日
【申请日】2015年6月30日
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1