1.一种IP路由查找方法,其特征在于,该方法包括:
分别针对每个虚拟专网VPN中的IP前缀的路由分布,构建一棵多位字典树Multibit Trie;
采用前缀扩展的方法将Multibit Trie的高1~m级IP前缀上的路由扩展到m+1级IP前缀上,m为大于1的整数;
将所述Multibit Trie的m+1级IP前缀的每一个分支作为一个分支树Branch_Tree,保存每个Branch_Tree的数据结构信息;
当对一VPN内的一IP地址进行路由查找时,根据该IP地址的高m+1位bit在该VPN对应的Multibit Trie中查找到对应的Branch_Tree,在该Branch_Tree中查找对应的路由。
2.根据权利要求1所述的方法,其特征在于,
在所述Multibit Trie中,0级前缀的默认路由存储在片外存储空间的预定区域;
所述保存每个Branch_Tree的数据结构信息为:将每个Branch_Tree的数据结构信息保存在片外存储空间的空闲区域中。
3.根据权利要求1或2所述的方法,其特征在于,所述保存每个Branch_Tree的数据结构信息进一步包括:
针对Branch_Tree维护虚拟专网入口位图VRB Table,该VRB Table包含压缩扩展路径位图CEPB和子节点指针CNP,其中,
所述CEPB共2m+1/2d bit,每2d个连续的Branch_Tree对应CEPB的一个bit,当2d个连续的Branch_Tree中存在分布路由的Branch_Tree时,则对应的CEPB位有效,d为正整数;
所述CNP表示第一个CEPB有效bit对应的2d个Branch_Tree的第一个Branch_Tree的指针;
所述根据该IP地址的高m+1bit查找到对应的Branch_Tree,在该 Branch_Tree中查找对应的路由包括:
读取该IP地址的高m+1bit,根据该IP地址的高m+1-d bit在该Multibit-Trie的VRB Table的CEPB中查找到对应的bit;
若查找到的bit有效,则根据该IP地址的高m+1bit中的低d bit确定对应的CNP,根据该CNP查找到对应的Branch_Tree的数据结构信息;
根据该Branch_Tree的数据结构信息查找该IP地址的路由。
4.根据权利要求1或2所述的方法,其特征在于,所述采用前缀扩展的方法将Multibit Trie的高1~m级IP前缀上的路由扩展到m+1级IP前缀上之前进一步包括:
按照路由分布较多的IP前缀段位于层Level底部的原则,将每棵Multibit Trie的0~8级IP前缀划分到Level 0,将最低7级IP前缀划分到最后一个Level,将中间的IP前缀以步长8划分为多个Level;
所述采用前缀扩展的方法将Multibit Trie的高1~m级IP前缀上的路由扩展到m+1级IP前缀上包括:
采用前缀扩展的方法将Multibit Trie的1~8级IP前缀上的路由扩展到9级IP前缀上。
5.根据权利要求4所述的方法,其特征在于,所述保存每个Branch_Tree的数据结构信息包括:
对于每个Branch_Tree中除Level 0外的每个Level中的每个子字典树Sub_Trie,采用前缀扩展的方式将该Sub_Trie的0、1、2级上的IP前缀的路由扩展到3级IP前缀上;
将每个Sub_Trie均匀划分成8个分段Sub_Trie,保存每个分段Sub_Trie的数据结构信息,其中,每个分段Sub_Trie以该子Sub_Trie的高3级IP前缀为索引;
所述在该Branch_Tree中查找对应的路由包括:
当查找到一Level时,根据该IP地址在本Level中对应的8bit或7bit的高3bit,在本Level的Sub_Trie中索引到对应的分段Sub_Trie,然后根据 该分段Sub_Trie的数据结构信息进行路由查找。
6.根据权利要求4所述的方法,其特征在于,所述保存每个Branch_Tree的数据结构信息包括:
对于最后一个Level内的每个Sub_Trie,该Sub_Trie的数据结构信息包括:
1)q个前缀密钥Prefix Key:每个Prefix key代表该Sub_Trie中的其中一个有路由分布的IP前缀的IP地址的最低7bit,其中,q为预设的该Sub_Trie中的有路由分布的IP前缀的最大数量;
2)结果数组指针Result Array ptr;
所述在该Branch_Tree中查找对应的路由时,当查找到最后一个Level时,将该IP地址的最低7bit与最后一个Level的各Sub_Trie的数据结构信息中的Prefix Key匹配,若匹配上,则根据对应的Result Array ptr直接确定路由。
7.根据权利要求2所述的方法,其特征在于,所述在该Branch_Tree中查找对应的路由进一步包括:
若未查找到,则从所述片外存储空间的预定区域中读取默认路由,将默认路由作为最终查找到的路由。
8.一种IP路由查找装置,其特征在于,该装置包括:
多位字典树Multibit Trie建立模块:分别针对每个虚拟专网VPN中的IP前缀的路由分布,构建一棵Multibit Trie;采用前缀扩展的方法将Multibit Trie的高1~m级IP前缀上的路由扩展到m+1级IP前缀上,m为大于1的整数;将所述Multibit Trie的m+1级IP前缀的每一个分支作为一个分支树Branch_Tree,保存每个Branch_Tree的数据结构信息;
路由查找模块:当对一VPN内的一IP地址进行路由查找时,根据该IP地址的高m+1位bit在该VPN对应的Multibit Trie中查找到对应的Branch_Tree,在该Branch_Tree中查找对应的路由。
9.根据权利要求8所述的装置,其特征在于,
所述Multibit Trie建立模块进一步用于,在所述Multibit Trie中,0级前缀的默认路由存储在片外存储空间的预定区域;
所述Multibit Trie建立模块保存每个Branch_Tree的数据结构信息为:将每个Branch_Tree的数据结构信息保存在片外存储空间的空闲区域中。
10.根据权利要求8或9所述的装置,其特征在于,所述Multibit Trie建立模块保存每个Branch_Tree的数据结构信息进一步用于,
针对Branch_Tree维护虚拟专网入口位图VRB Table,该VRB Table包含压缩扩展路径位图CEPB和子节点指针CNP,其中,所述CEPB共2m+1/2dbit,每2d个连续的Branch_Tree对应CEPB的一个bit,当2d个连续的Branch_Tree中存在分布路由的Branch_Tree时,则对应的CEPB位有效,d为正整数;所述CNP表示第一个CEPB有效bit对应的2d个Branch_Tree的第一个Branch_Tree的指针;
所述路由查找模块根据该IP地址的高m+1bit查找到对应的Branch_Tree,在该Branch_Tree中查找对应的路由包括:
读取该IP地址的高m+1bit,根据该IP地址的高m+1-d bit在该Multibit-Trie的VRB Table的CEPB中查找到对应的bit;若查找到的bit有效,则根据该IP地址的高m+1bit中的低d bit确定对应的CNP,根据该CNP查找到对应的Branch_Tree的数据结构信息;根据该Branch_Tree的数据结构信息查找该IP地址的路由。
11.根据权利要求8或9所述的装置,其特征在于,所述Multibit Trie建立模块采用前缀扩展的方法将Multibit Trie的高1~m级IP前缀上的路由扩展到m+1级IP前缀上之前进一步用于,
按照路由分布较多的IP前缀段位于层Level底部的原则,将每棵Multibit Trie的0~8级IP前缀划分到Level 0,将最低7级IP前缀划分到最后一个Level,将中间的IP前缀以步长8划分为多个Level;
所述Multibit Trie建立模块采用前缀扩展的方法将Multibit Trie的高1~m级IP前缀上的路由扩展到m+1级IP前缀上包括:
采用前缀扩展的方法将Multibit Trie的1~8级IP前缀上的路由扩展到9级IP前缀上。
12.根据权利要求11所述的装置,其特征在于,所述Multibit Trie建立模块保存每个Branch_Tree的数据结构信息包括:
对于每个Branch_Tree中除Level 0外的每个Level中的每个子字典树Sub_Trie,采用前缀扩展的方式将该Sub_Trie的0、1、2级上的IP前缀的路由扩展到3级IP前缀上;将每个Sub_Trie均匀划分成8个分段Sub_Trie,保存每个分段Sub_Trie的数据结构信息,其中,每个分段Sub_Trie以该子Sub_Trie的高3级IP前缀为索引;
所述路由查找模块在该Branch_Tree中查找对应的路由包括:
当查找到一Level时,根据该IP地址在本Level中对应的8bit或7bit的高3bit,在本Level的Sub_Trie中索引到对应的分段Sub_Trie,然后根据该分段Sub_Trie的数据结构信息进行路由查找。
13.根据权利要求11所述的装置,其特征在于,所述Multibit Trie建立模块保存每个Branch_Tree的数据结构信息包括:
对于最后一个Level内的每个Sub_Trie,该Sub_Trie的数据结构信息包括:
1)q个前缀密钥Prefix Key:每个Prefix key代表该Sub_Trie中的其中一个有路由分布的IP前缀的IP地址的最低7bit,其中,q为预设的该Sub_Trie中的有路由分布的IP前缀的最大数量;
2)结果数组指针Result Array ptr;
所述路由查找模块在该Branch_Tree中查找对应的路由时,当查找到最后一个Level时,将该IP地址的最低7bit与最后一个Level的各Sub_Trie的数据结构信息中的Prefix Key匹配,若匹配上,则根据对应的Result Array ptr直接确定路由。
14.根据权利要求9所述的装置,其特征在于,所述路由查找模块在该Branch_Tree中查找对应的路由进一步用于,
若未查找到,则从所述片外存储空间的预定区域中读取默认路由,将默认路由作为最终查找到的路由。