本申請涉及通信領域,特別是涉及一種路由表壓縮方法、裝置、計算機設備和存儲介質(zhì)。
背景技術:
1、路由查找算法是決定三層轉(zhuǎn)發(fā)網(wǎng)元性能的主要因素之一。dpdk(data?planedevelopment?kit,數(shù)據(jù)平面開發(fā)套件)中的lpm(longest?prefix?matching,最長前綴匹配)查找表就屬于此類算法中的一種。該算法使用dir-24-8數(shù)據(jù)結(jié)構(gòu),進行路由查詢時,首先使用目的地址的前24位在第一張表(稱為tbl24)中進行檢索,檢索到匹配的條目后,繼續(xù)使用目的地址的后8位在第二張表(稱為tbl8)中進行檢索,得到目的地址的路由信息。
2、然而,當前的路由查找算法一般存在路由表占用內(nèi)存空間較大的問題。以lmp查找表舉例來說,因為tbl24中最多有2^24個條目,因此tbl8理論而言最多有2^24張,占用的空間最大能達到16gb。因此,需要提供一種能夠?qū)β酚杀磉M行壓縮的方法。
技術實現(xiàn)思路
1、基于此,有必要針對上述技術問題,提供一種路由表壓縮方法、裝置、計算機設備和存儲介質(zhì)。
2、第一方面,本申請?zhí)峁┝艘环N路由表壓縮方法。所述方法包括:
3、獲取目標路由表,并生成所述目標路由表對應的節(jié)點,所述節(jié)點至少包括路由條目信息及后繼指針,所述路由條目信息是根據(jù)所述目標路由表中的各路由條目生成的;
4、獲取所述目標路由表中,各所述路由條目對應的下一跳地址信息;
5、在各所述路由條目對應的下一跳地址信息相同的情況下,將所述下一跳地址信息設置為所述后繼指針指向的對象;或者,
6、在存在對應的下一跳地址信息不相同的路由條目的情況下,對所述目標路由表中的各個路由條目進行分組處理,得到至少一個子路由表,分別生成各所述子路由表對應的節(jié)點,基于各所述子路由表對應的節(jié)點構(gòu)建得到節(jié)點數(shù)據(jù)結(jié)構(gòu),并將所述節(jié)點數(shù)據(jù)結(jié)構(gòu)設置為所述后繼指針指向的對象,將所述子路由表作為目標路由表,并跳轉(zhuǎn)至獲取所述目標路由表中,各所述路由條目對應的下一跳地址信息的步驟。
7、第二方面,本申請還提供了一種路由表壓縮裝置。所述裝置包括:
8、生成模塊,用于獲取目標路由表,并生成所述目標路由表對應的節(jié)點,所述節(jié)點至少包括路由條目信息及后繼指針,所述路由條目信息是根據(jù)所述目標路由表中的各路由條目生成的;
9、設置模塊,用于獲取所述目標路由表中,各所述路由條目對應的下一跳地址信息,在各所述路由條目對應的下一跳地址信息相同的情況下,將所述下一跳地址信息設置為所述后繼指針指向的對象;或者在存在對應的下一跳地址信息不相同的路由條目的情況下,對所述目標路由表中的各個路由條目進行分組處理,得到至少一個子路由表,分別生成各所述子路由表對應的節(jié)點,基于各所述子路由表對應的節(jié)點構(gòu)建得到節(jié)點數(shù)據(jù)結(jié)構(gòu),并將所述節(jié)點數(shù)據(jù)結(jié)構(gòu)設置為所述后繼指針指向的對象,將所述子路由表作為目標路由表,并跳轉(zhuǎn)至獲取所述目標路由表中,各所述路由條目對應的下一跳地址信息的步驟。
10、第三方面,本申請還提供了一種計算機設備。所述計算機設備包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)以上任一項方法。
11、第四方面,本申請還提供了一種計算機可讀存儲介質(zhì)。所述計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)以上任一項方法。
12、第五方面,本申請還提供了一種計算機程序產(chǎn)品。所述計算機程序產(chǎn)品,包括計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)以上任一項方法。
13、上述路由表壓縮方法、裝置、計算機設備和存儲介質(zhì),將目標路由表表示為由路由條目信息和后繼指針組成的節(jié)點。若各個路由條目對應的下一跳地址信息均相同,則將下一跳地址信息設置為后繼指針指向的對象。若各個路由條目對應的下一跳地址信息不同,則將目標路由表拆分為子路由表,并將后繼指針連接到可訪問各個子路由表對應節(jié)點的節(jié)點數(shù)據(jù)結(jié)構(gòu)。重復上述過程,直至拆分出的每個子路由表中各路由條目對應的下一跳地址信息均相同為止。本申請實施例將路由條目壓縮為路由條目信息,并通過后繼指針提供訪問不同路由條目對應的下一跳地址信息的路徑,因此可在壓縮目標路由表大小的同時,不影響目標路由表查找下一跳地址信息的能力。
1.一種路由表壓縮方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對所述目標路由表中的各個路由條目進行分組處理,得到至少一個子路由表,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述基于各所述子路由表對應的節(jié)點構(gòu)建得到節(jié)點數(shù)據(jù)結(jié)構(gòu),包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述預設數(shù)量條件為所述目標分段的總數(shù)量為2,或者所述目標分段的總數(shù)量與所述目標路由表對應的目標分段的總數(shù)量相同。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括:
7.根據(jù)權(quán)利要求1-6中任一項所述的方法,其特征在于,所述方法還包括:
8.一種路由表壓縮裝置,其特征在于,所述裝置包括:
9.一種計算機設備,包括存儲器和處理器,所述存儲器存儲有計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)權(quán)利要求1至7中任一項所述的方法的步驟。
10.一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)權(quán)利要求1至7中任一項所述的方法的步驟。