1.一種IP路由查找方法,其特征在于,該方法包括:
分別針對每個虛擬專網(wǎng)VPN中的IP前綴的路由分布,構(gòu)建一棵多位字典樹Multibit Trie;
采用前綴擴展的方法將Multibit Trie的高1~m級IP前綴上的路由擴展到m+1級IP前綴上,m為大于1的整數(shù);
將所述Multibit Trie的m+1級IP前綴的每一個分支作為一個分支樹Branch_Tree,保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息;
當對一VPN內(nèi)的一IP地址進行路由查找時,根據(jù)該IP地址的高m+1位bit在該VPN對應(yīng)的Multibit Trie中查找到對應(yīng)的Branch_Tree,在該Branch_Tree中查找對應(yīng)的路由。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,
在所述Multibit Trie中,0級前綴的默認路由存儲在片外存儲空間的預(yù)定區(qū)域;
所述保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息為:將每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息保存在片外存儲空間的空閑區(qū)域中。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息進一步包括:
針對Branch_Tree維護虛擬專網(wǎng)入口位圖VRB Table,該VRB Table包含壓縮擴展路徑位圖CEPB和子節(jié)點指針CNP,其中,
所述CEPB共2m+1/2d bit,每2d個連續(xù)的Branch_Tree對應(yīng)CEPB的一個bit,當2d個連續(xù)的Branch_Tree中存在分布路由的Branch_Tree時,則對應(yīng)的CEPB位有效,d為正整數(shù);
所述CNP表示第一個CEPB有效bit對應(yīng)的2d個Branch_Tree的第一個Branch_Tree的指針;
所述根據(jù)該IP地址的高m+1bit查找到對應(yīng)的Branch_Tree,在該 Branch_Tree中查找對應(yīng)的路由包括:
讀取該IP地址的高m+1bit,根據(jù)該IP地址的高m+1-d bit在該Multibit-Trie的VRB Table的CEPB中查找到對應(yīng)的bit;
若查找到的bit有效,則根據(jù)該IP地址的高m+1bit中的低d bit確定對應(yīng)的CNP,根據(jù)該CNP查找到對應(yīng)的Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息;
根據(jù)該Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息查找該IP地址的路由。
4.根據(jù)權(quán)利要求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.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息包括:
對于每個Branch_Tree中除Level 0外的每個Level中的每個子字典樹Sub_Trie,采用前綴擴展的方式將該Sub_Trie的0、1、2級上的IP前綴的路由擴展到3級IP前綴上;
將每個Sub_Trie均勻劃分成8個分段Sub_Trie,保存每個分段Sub_Trie的數(shù)據(jù)結(jié)構(gòu)信息,其中,每個分段Sub_Trie以該子Sub_Trie的高3級IP前綴為索引;
所述在該Branch_Tree中查找對應(yīng)的路由包括:
當查找到一Level時,根據(jù)該IP地址在本Level中對應(yīng)的8bit或7bit的高3bit,在本Level的Sub_Trie中索引到對應(yīng)的分段Sub_Trie,然后根據(jù) 該分段Sub_Trie的數(shù)據(jù)結(jié)構(gòu)信息進行路由查找。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息包括:
對于最后一個Level內(nèi)的每個Sub_Trie,該Sub_Trie的數(shù)據(jù)結(jié)構(gòu)信息包括:
1)q個前綴密鑰Prefix Key:每個Prefix key代表該Sub_Trie中的其中一個有路由分布的IP前綴的IP地址的最低7bit,其中,q為預(yù)設(shè)的該Sub_Trie中的有路由分布的IP前綴的最大數(shù)量;
2)結(jié)果數(shù)組指針Result Array ptr;
所述在該Branch_Tree中查找對應(yīng)的路由時,當查找到最后一個Level時,將該IP地址的最低7bit與最后一個Level的各Sub_Trie的數(shù)據(jù)結(jié)構(gòu)信息中的Prefix Key匹配,若匹配上,則根據(jù)對應(yīng)的Result Array ptr直接確定路由。
7.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在該Branch_Tree中查找對應(yīng)的路由進一步包括:
若未查找到,則從所述片外存儲空間的預(yù)定區(qū)域中讀取默認路由,將默認路由作為最終查找到的路由。
8.一種IP路由查找裝置,其特征在于,該裝置包括:
多位字典樹Multibit Trie建立模塊:分別針對每個虛擬專網(wǎng)VPN中的IP前綴的路由分布,構(gòu)建一棵Multibit Trie;采用前綴擴展的方法將Multibit Trie的高1~m級IP前綴上的路由擴展到m+1級IP前綴上,m為大于1的整數(shù);將所述Multibit Trie的m+1級IP前綴的每一個分支作為一個分支樹Branch_Tree,保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息;
路由查找模塊:當對一VPN內(nèi)的一IP地址進行路由查找時,根據(jù)該IP地址的高m+1位bit在該VPN對應(yīng)的Multibit Trie中查找到對應(yīng)的Branch_Tree,在該Branch_Tree中查找對應(yīng)的路由。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,
所述Multibit Trie建立模塊進一步用于,在所述Multibit Trie中,0級前綴的默認路由存儲在片外存儲空間的預(yù)定區(qū)域;
所述Multibit Trie建立模塊保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息為:將每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息保存在片外存儲空間的空閑區(qū)域中。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述Multibit Trie建立模塊保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息進一步用于,
針對Branch_Tree維護虛擬專網(wǎng)入口位圖VRB Table,該VRB Table包含壓縮擴展路徑位圖CEPB和子節(jié)點指針CNP,其中,所述CEPB共2m+1/2dbit,每2d個連續(xù)的Branch_Tree對應(yīng)CEPB的一個bit,當2d個連續(xù)的Branch_Tree中存在分布路由的Branch_Tree時,則對應(yīng)的CEPB位有效,d為正整數(shù);所述CNP表示第一個CEPB有效bit對應(yīng)的2d個Branch_Tree的第一個Branch_Tree的指針;
所述路由查找模塊根據(jù)該IP地址的高m+1bit查找到對應(yīng)的Branch_Tree,在該Branch_Tree中查找對應(yīng)的路由包括:
讀取該IP地址的高m+1bit,根據(jù)該IP地址的高m+1-d bit在該Multibit-Trie的VRB Table的CEPB中查找到對應(yīng)的bit;若查找到的bit有效,則根據(jù)該IP地址的高m+1bit中的低d bit確定對應(yīng)的CNP,根據(jù)該CNP查找到對應(yīng)的Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息;根據(jù)該Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息查找該IP地址的路由。
11.根據(jù)權(quán)利要求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.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述Multibit Trie建立模塊保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息包括:
對于每個Branch_Tree中除Level 0外的每個Level中的每個子字典樹Sub_Trie,采用前綴擴展的方式將該Sub_Trie的0、1、2級上的IP前綴的路由擴展到3級IP前綴上;將每個Sub_Trie均勻劃分成8個分段Sub_Trie,保存每個分段Sub_Trie的數(shù)據(jù)結(jié)構(gòu)信息,其中,每個分段Sub_Trie以該子Sub_Trie的高3級IP前綴為索引;
所述路由查找模塊在該Branch_Tree中查找對應(yīng)的路由包括:
當查找到一Level時,根據(jù)該IP地址在本Level中對應(yīng)的8bit或7bit的高3bit,在本Level的Sub_Trie中索引到對應(yīng)的分段Sub_Trie,然后根據(jù)該分段Sub_Trie的數(shù)據(jù)結(jié)構(gòu)信息進行路由查找。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述Multibit Trie建立模塊保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息包括:
對于最后一個Level內(nèi)的每個Sub_Trie,該Sub_Trie的數(shù)據(jù)結(jié)構(gòu)信息包括:
1)q個前綴密鑰Prefix Key:每個Prefix key代表該Sub_Trie中的其中一個有路由分布的IP前綴的IP地址的最低7bit,其中,q為預(yù)設(shè)的該Sub_Trie中的有路由分布的IP前綴的最大數(shù)量;
2)結(jié)果數(shù)組指針Result Array ptr;
所述路由查找模塊在該Branch_Tree中查找對應(yīng)的路由時,當查找到最后一個Level時,將該IP地址的最低7bit與最后一個Level的各Sub_Trie的數(shù)據(jù)結(jié)構(gòu)信息中的Prefix Key匹配,若匹配上,則根據(jù)對應(yīng)的Result Array ptr直接確定路由。
14.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述路由查找模塊在該Branch_Tree中查找對應(yīng)的路由進一步用于,
若未查找到,則從所述片外存儲空間的預(yù)定區(qū)域中讀取默認路由,將默認路由作為最終查找到的路由。