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

文档序号:9420250阅读:来源:国知局
函数:Hash函数11、Hash函数12、Hash函数13分别对keyl进行计算,得到三个Hash计算结果:Hash计算结果ll、Hash计算结果12、Hash计算结果13,则在Hash函数11对应的Hash表11中查找Hash计算结果11对应的位置,在Hash函数12对应的Hash表12中查找Hash计算结果12对应的位置,在Hash函数13对应的Hash表13中查找Hash计算结果13对应的位置,对于查找到的每个位置,将该位置上的输入key与keyl进行匹配,若有任一个位置匹配上,则命中,若没有任何位置匹配上,则继续在Level 4的取出key列表中查找keyl,若查找到,则命中;否则,认为Level 4中未命中任何Hash计算结果。
[0245]另外,为了节省Hash表占用的存储空间,本实施例中,可设置所有VPN的MultibitTrie在同一 Level中针对同一 Hash函数都使用同一张Hash表。
[0246]本申请实施例的有益技术效果如下:
[0247]一 )支持多VPN实例的IPv6路由;
[0248]二)通过将Multibit-Trie划分为多个Branch_Tree,提高了路由查找速度;
[0249]三)将默认路由单独存储,而不扩展到Level 1,减少了 Multibit-Trie的冗余节点,进一步提高了路由查找速度;
[0250]四)通过对Level P?η中的第一级Sub_Trie节点的指针进行Hash映射,使得在进行IPv6地址的LPM路由查找时,可在Level p?η中进行并行查找,并根据最长的Hash命中结果查找到路由,大大提高了路由查找速度;
[0251]五)通过米用Hash算法,并为Level p?η中的每个Level设置多个Hash函数,减少了 Hash冲突,提高了路由查找精度;
[0252]六)对Sub_Trie节点内部进行前缀扩展后划分为8个Segmented Sub_Trie节点,进一步提高了路由查找速度;
[0253]七)简化最后一级Level的Sub_Trie节点的数据结构,进一步提高了路由查找速度。
[0254]图12为本申请实施例提供的基于Multibit Trie的IPv6路由查找装置的组成示意图,其主要包括Trie建立及划分模块、Hash映射模块和路由查找模块,其中:
[0255]Multibit Trie建立及划分模块:分别针对每个VPN中的IPv6前缀的路由分布,构建一棵 Multibit Trie ;将每棵 Multibit Trie 划分为 n+1 个 Level:LevelO ?η,η 为大于I的整数;采用前缀扩展的方法将Multibit Trie的I?m级IPv6前缀上的路由扩展到m+1级IPv6前缀上,m为大于I的整数;将第m+1级IPv6前缀的每一个分支作为一个分支树Branch_Tree,保存每个Branch_Tree的数据结构信息。
[0256]Hash映射模块:针对Level p?η中的每个第一级Sub_Trie节点,以当前VPN标识和本Sub_Trie节点的IPv6前缀的IPv6地址在本Level之前的所有bit作为输入Key,采用预设的本Level的哈希Hash函数对输入Key进行计算,将Hash计算结果映射到本Sub_Trie节点的数据结构信息指针上,P为整数且0〈ρ〈η。
[0257]路由查找模块:当对一 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-1中查找路由。
[0258]—种实施例中,Multibit Trie建立及划分模块将O级IPv6前缀的默认路由存储在片外存储空间的预定区域,将I?m级IPv6前缀的路由存储在片外存储空间的空闲区域中;
[0259]且,Multibit Trie建立及划分模块保存每个Branch_Tree的数据结构信息为:将每个Branch_Tree的数据结构信息保存在片外存储空间的空闲区域中。
[0260]一种实施例中,Multibit Trie建立及划分模块保存每个Branch_Tree的数据结构信息进一步包括:
[0261]针对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的指针;
[0262]且,路由查找模块根据该IPv6地址的高m+lbit查找到对应的Branch_Tree,在该Branch_Tree的Level I?p_l中查找路由包括:
[0263]读取该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的Levell?p_l的数据结构信息查找该IPv6地址的路由。
[0264]—种实施例中,Multibit Trie建立及划分模块将每棵Multibit Trie划分为n+1个层Level包括:
[0265]按照路由分布较多的IPv6前缀段位于Level底部的原则,将每棵Multibit Trie划分为8个Level:Level O?7,Level O由O?8级前缀构成,Level I?3的步长都为8,Level 4?6的步长都为24,Level 7的步长为23 ;且,m = 8,所述p = 4。
[0266]—种实施例中,Multibit Trie建立及划分模块保存每个Branch_Tree的数据结构信息包括:
[0267]保存每个Branch_Tree中除Level O外的每个Level中的Sub_Trie节点的数据结构信息,其中:除最后一个Level的最后一级Sub_Trie节点的步长为7外,其余Sub_Trie节点的步长都为8 ;对于每个Branch_Tree中除Level O外的每个Level中的每个Sub_Trie节点,采用前缀扩展的方式将该Sub_Trie节点的0、1、2级上的前缀的路由扩展到3级前缀上;将每个Sub_Trie节点均勾划分成8个分段Sub_Trie节点,保存每个分段Sub_Trie节点的数据结构信息,其中,每个分段Sub_Trie节点以该分段Sub_Trie节点的高3级IPv6如缀为索引;
[0268]且,路由查找模块采用最长的Hash命中结果对应的Sub_Trie节点的数据结构信息指针查找路由包括:
[0269]根据该IPv6地址在对应Sub_Trie节点中的对应8bit,根据该8bit的高3bit在本Sub_Trie节点中索引到对应的分段Sub_Trie节点,根据该分段Sub_Trie节点的数据结构信息进行后续路由查找过程;
[0270]路由查找模块在该Branch_Tree的Level I?p_l中查找路由包括:当查找到Level I?p_l中的一 Level时,根据该IPv6前缀在本Level中对应的8bit的高3bit在本Level的Sub_Trie中索引到对应的分段Sub_Trie,根据该分段Sub_Trie的数据结构信息进行后续路由查找过程。
[0271]—种实施例中,Multibit Trie建立及划分模块保存每个Branch_Tree的数据结构信息包括:
[0272]对于Level 3的Sub_Trie节点以及Level 7的最后一级Sub_Trie节点,该Sub_Trie节点的数据结构信息包括:
[0273]I) q个前缀密钥Prefix Key:每个Prefix key代表该Sub_Trie节点中的其中一个有路由分布的IP前缀的IP地址的最低7bit,其中,q为预设的该Sub_Trie节点中的有路由分布的IP前缀的最大数量;
[0274]2)结果数组指针 Result Array ptr ;
[0275]所述路由查找模块采用最长的Hash命中结果对应的Subjrie节点的数据结构信息指针查找路由时,当查找到Level 7的最后一级Sub_Trie节点时,直接将该IPv6地址的最低7bit与Level 7的各最后一级Sub_Trie节点的数据结构信息中的Prefix Key匹配,若匹配上,则根据对应的Result Array ptr直接确定路由;
[0276]且,路由查找模块在该Branch_Tree的Level I?p_l中查找路由时,当查找到Level 3时,直接将该IPv6地址的最低8bit与Level 3的各Sub_Trie的数据结构信息中的Prefix Key匹配,若匹配上,则根据对应的Result Array ptr直接确定路由。
[0277]—种实施例中,装置进一步包括Hash函数及Hash表构造模块,用于预先为LevelP?η中的每个Level设置多个Hash函数,每个Hash函数对应一张Hash表,Hash表中的每个位置唯一代表一个Hash计算结果,每个位置用于存储该位置代表的Hash计算结果对应的输入Key及该输入Key对应的Sub_Trie节点的数据结构信息指针;
[0278]且,Hash映射模块采用预设的本Level的Hash函数对输入Key进行计算包括:
[0279]a、采用预设的本Level的多个Hash函数分别对输入Key进行计算,针对得到的每个Hash计算结果,在对应的Hash表中查找到对应的位置;
[0280]若在多个Hash表中查找到的多个位置中有任一个位置为空,则将当前输入key以及本Sub_Trie节点的数据结构信息指针放入该位置;
[0281 ] 若在多个Hash表中查找到的多个位置都不为空,则在该多个位置中任选一个位置,将该位置上的原有输入Key和Sub_Trie节点的数据结构信息指针取出,将当前输入key以及本Sub_Trie节点的数据结构信息指针放入该位置;
[0282]b、对于取出的输入Key,判断是否已连续取出预设数目个输入key,若是,将该取出的输入key及其对应的Sub_Trie节点的数据结构信息指针放入取出key列表中,否则,将该取出的输入key作为当前输入key,返回执行步骤a。
[0283]—种实施例中,路由查找模块分别采用每个Level的Hash函数对针对每个Level的输入key进行计算包括:
[0284]分别采用每个Level的多个Hash函数对针对每个Level的输入key进行计算,得到多个Hash计算结果;
[0285]对于每个Hash计算结果,在对应Hash函数的Hash表中查找对应的位置,若查找到对应位置,将对应位置上存储的输入Key与构造的输入key进行匹配,若匹配上,则命中,若未匹配上,则继续在对应Level的取出key列表中查找构造的输入key。
[0286]—种实施例中,Hash函数及Hash表构造模块进一步用于,设置所有VPN的Multibit Trie在Level P?η中的同一 Level中针对同一 Hash函数都使用同一张Hash表。
[0287]一种实施例中,路由查找模块在该Branch_Tree的Level I?p_l中查找路由之后进一步用于,
[0288]若未查找到,则从片外存储空间的预定区域中读取默认路由,将默认路由作为最终查找到的路由。
[0289]本申请实施例还提供包含IPv6路由查找装置的设备,该设备可以是软硬件结合的可编程设备,从硬件层面而言,该设备的硬件架构示意图具体可以参见图13。该设备中包括:机器可读存储介质、CPU和其它硬件,其中:
[0290]机器可读存储介质:存储指令代码;所述指令代码被CPU执行时完成的操作主要为上述IPv6路由查找装置完成的功能。
[0291]CPU:与机器可读存储介质通信,读取和执行机器可读存储介质中存储的所述指令代码,完成上述IPv6路由查找装置完成的功能。
[0292]当上述IPv6路由查找装置作为一个逻辑意义上的装置时,其是通过CPU运行机器可读存储介质中对应的计算机程序指令形成的。当对应的计算机程序指令被执行时,形成的IPv6路由查找装置用于按照上述实施例中的IPv6路由查找方法执行相应操作。
[0293]机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom AccessMemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组入口 ο
[0294]本申请所描述的任一机器可读存储介质都可以被认为是非暂时性的。
[0295]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
【主权项】
1.一种IPv6路由查找方法,其特征在于,该方法包括: 分别针对每个虚拟专网VPN中的IPv6前缀的路由分布,构建一棵多位字典树MultibitTrie ; 将每棵Multibit Trie划分为n+1个层Level:Level O?η,η为大于I的整数; 采用前缀扩展的方法将Multibit Trie的I?m级IPv6前缀上的路由扩展到m+1级IPv6前缀上,m为大于I的整数; 将第m+Ι级IPv6前缀的每一个分支作为一个分支树Branch_Tree,保存每个Branch_Tree的数据结构信息; 针对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中查找路由。2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括: 将O级IPv6前缀的默认路由存储在片外存储空间的预定区域,将I?m级IPv6前缀的路由存储在片外存储空间的空闲区域中; 所述保存每个Branch_Tree的数据结构信息为:将每个Branch_Tree的数据结构信息保存在片外存储空间的空闲区域中。3.根据权利要求1或2所述的方法,其特征在于,所述保存每个BranchJree的数据结构信息进一步包括: 针对Branch_Tree维护虚拟专网入口位图VRB Table,该VRB Table包含压缩扩展路径位图CEPB和子节点指针CNP,其中, 所述 CEPB 共 2m+1/2d bit,每 2df 连续的 Branch_Tree 对应 CEPB 的一个 bit,当 2连续的Branch_Tree中存在在Level I?p_l中有路由分布的Branch_Tree时,贝Ij对应的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在该Multi
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1