一種路由表的維護方法和裝置的制造方法
【技術(shù)領域】
[0001]本發(fā)明涉及數(shù)據(jù)網(wǎng)絡通信技術(shù),尤其涉及一種路由表的維護方法和裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)協(xié)議第六版(IPV6, Internet Protocol Vers1n 6)網(wǎng)絡建設大規(guī)模的展開,合理高效的管理ipv6路由成為路由器軟件設計的關(guān)鍵。由于ipv6路由長達128位,因此,基于Donald R.Morrison所提出的Patricia樹的思想而設計的基數(shù)radix樹算法,以其適合處理非常長的、可變長度的鍵值的特性,成為了 ipv6路由管理的首選算法。
[0003]但是,目前開源的radix樹算法,是使用樹算法來動態(tài)生成和管理掩碼,如圖1所示的現(xiàn)有開源radix算法生成的路由表的組成結(jié)構(gòu)中,可以得知,路由表由掩碼樹、路由樹和普適鏈組成,其中,圓形節(jié)點表示中間節(jié)點,底色為純白的是根節(jié)點,底色為橫線陰影的是普通節(jié)點,節(jié)點中的數(shù)字表示分支的位置值;矩形節(jié)點為葉子節(jié)點,底色為純白的是根節(jié)點,底色為陰影的是普通節(jié)點,節(jié)點中的內(nèi)容為路由前綴及掩碼;六邊形節(jié)點為普適鏈結(jié)點,節(jié)點中的內(nèi)容為該結(jié)點對應的掩碼長度。此外,該路由樹中還包括了對非連續(xù)掩碼分支的支持,也就是在對路由樹進行搜索時,需要對非連續(xù)掩碼的分支進行判斷和處理。
[0004]由圖1所示的路由表的組成結(jié)構(gòu)可以得知,每次路由表維護時都需要進行掩碼樹查找以確定是否已經(jīng)存在相應的掩碼;而且,在普適鏈管理等維護操作時也進行了繁復的字節(jié)比較和移位運算,這極大的提高了算法的時間復雜度。
【發(fā)明內(nèi)容】
[0005]為解決上述技術(shù)問題,本發(fā)明實施例期望提供一種路由表的維護方法和裝置,在適當?shù)靥岣呖臻g復雜度的前提下,明顯降低了時間復雜度,從而能高效地進行路由表的維護。
[0006]本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0007]第一方面,本發(fā)明實施例提供了一種路由表的維護方法,所述方法包括:
[0008]根據(jù)待更新的IPV6路由條目中的掩碼長度查詢IPV6路由表中的掩碼表,得到所述待更新的IPV6路由條目對應的掩碼結(jié)構(gòu);其中,所述IPV6路由表包括掩碼長度與掩碼結(jié)構(gòu)對應的二維索引表和路由樹,所述路由樹為對于非連續(xù)掩碼分支進行裁剪之后的路由樹;
[0009]根據(jù)所述待更新的IPV6路由條目及所述待更新的IPV6路由條目對應的掩碼結(jié)構(gòu)對所述IPV6路由表結(jié)構(gòu)中的路由樹進行搜索,獲取所述路由樹的回溯起始節(jié)點;
[0010]從所述回溯起始節(jié)點出發(fā),向所述路由樹的頂部回溯,獲取所述待更新的IPV6路由條目的更新位置。
[0011]進一步地,所述根據(jù)所述待更新的IPV6路由條目及所述待更新的IPV6路由條目對應的掩碼結(jié)構(gòu)對所述IPV6路由表結(jié)構(gòu)中的路由樹進行搜索,獲取所述路由樹的回溯起始節(jié)點,包括:
[0012]根據(jù)所述路由樹的各中間節(jié)點記錄的選向信息與所述待更新的IPV6路由條目進行比較,得到符合路徑中的中間節(jié)點記錄的分叉位置和字節(jié)掩碼特性的葉子節(jié)點,并將該葉子節(jié)點作為回溯起始節(jié)點。
[0013]進一步地,所述從所述回溯起始節(jié)點出發(fā),向所述路由樹的頂部回溯,獲取所述待更新的IPV6路由條目的更新位置,包括:
[0014]從所述回溯起始節(jié)點出發(fā),查詢所述待更新的中間節(jié)點的上一級中間節(jié)點和下一級中間節(jié)點,其中,所述待更新的中間節(jié)點的鍵值為所述待更新的IPV6路由條目的掩碼長度;
[0015]分別對所述待更新的中間節(jié)點的上一級中間節(jié)點和下一級中間節(jié)點進行檢測,確定所述待更新的中間節(jié)點在所述路由樹的更新位置;
[0016]在所述路由樹中更新所述待更新的中間節(jié)點和葉子節(jié)點,其中,所述待更新的中間節(jié)點和葉子節(jié)點一起表征了所述待更新的IPV6路由條目的鍵值屬性。
[0017]進一步地,所述方法還包括:從所述待更新的中間節(jié)點的葉子節(jié)點的兄弟節(jié)點對應的普適鏈結(jié)點開始向上回溯所述路由樹的中間節(jié)點,并根據(jù)所述待更新的IPV6路由條目對應的掩碼長度與回溯時的路由樹的中間節(jié)點對應的普適鏈結(jié)點對所述普適鏈進行更新。
[0018]第二方面,本發(fā)明實施例提供了一種路由表的維護裝置,所述裝置包括:查詢單元、搜索單元和回溯單元,其中,
[0019]所述查詢單元,用于根據(jù)待更新的IPV6路由條目中的掩碼長度查詢IPV6路由表中的掩碼表,得到所述待更新的IPV6路由條目對應的掩碼結(jié)構(gòu);其中,所述IPV6路由表包括掩碼長度與掩碼結(jié)構(gòu)對應的二維索引表和路由樹,所述路由樹為對于非連續(xù)掩碼分支進行裁剪之后的路由樹;
[0020]所述搜索單元,用于根據(jù)所述查詢單元得到的待更新的IPV6路由條目及所述待更新的IPV6路由條目對應的掩碼結(jié)構(gòu)對所述IPV6路由表結(jié)構(gòu)中的路由樹進行搜索,獲取所述路由樹的回溯起始節(jié)點;
[0021]所述回溯單元,用于從所述搜索單元獲取的回溯起始節(jié)點出發(fā),向所述路由樹的頂部回溯,獲取所述待更新的IPV6路由條目的更新位置。
[0022]進一步地,所述搜索單元,用于根據(jù)所述路由樹的各中間節(jié)點記錄的選向信息與所述待更新的IPV6路由條目進行比較,得到符合路徑中的中間節(jié)點記錄的分叉位置和字節(jié)掩碼特性的葉子節(jié)點,并將該葉子節(jié)點作為回溯起始節(jié)點。
[0023]進一步地,所述回溯單元,用于從所述回溯起始節(jié)點出發(fā),查詢所述待更新的中間節(jié)點的上一級中間節(jié)點和下一級中間節(jié)點,其中,所述待更新的中間節(jié)點的鍵值為所述待更新的IPV6路由條目的掩碼長度;
[0024]以及,分別對所述待更新的中間節(jié)點的上一級中間節(jié)點和下一級中間節(jié)點進行檢測,確定所述待更新的中間節(jié)點在所述路由樹的更新位置;
[0025]以及,在所述路由樹中更新所述待更新的中間節(jié)點的葉子節(jié)點,其中,所述待更新的中間節(jié)點和葉子節(jié)點一起表征了所述待更新的IPV6路由條目的屬性。
[0026]進一步地,所述回溯單元,還用于從所述待更新的中間節(jié)點的葉子節(jié)點的兄弟節(jié)點對應的普適鏈結(jié)點開始向上回溯所述路由樹的中間節(jié)點,并根據(jù)所述待更新的IPV6路由條目對應的掩碼長度與回溯時的路由樹的中間節(jié)點對應的普適鏈結(jié)點對所述普適鏈進行更新。
[0027]本發(fā)明實施例提供了一種路由表的維護方法和裝置,通過對路由表的組成結(jié)構(gòu)進行更改,從而在適當?shù)靥岣呖臻g復雜度的前提下,明顯降低了時間復雜度,也能高效地進行路由表的維護。
【附圖說明】
[0028]圖1為現(xiàn)有開源radix算法生成的路由表的組成結(jié)構(gòu)示意圖;
[0029]圖2為本發(fā)明實施例提供的一種路由表的維護方法流程示意圖;
[0030]圖3為本發(fā)明實施例提供的一種IPV6路由表的組成結(jié)構(gòu)示意圖;
[0031]圖4為本發(fā)明實施例提供的一種待更新的IPV6路由條目的結(jié)構(gòu)示意圖;
[0032]圖5為本發(fā)明實施例提供的另一種路由表的維護方法流程示意圖;;
[0033]圖6為本發(fā)明實施例提供的另一種IPV6路由表的組成結(jié)構(gòu)示意圖;
[0034]圖7為本發(fā)明實施例提供的一種路由表的維護裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0035]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述。
[0036]本發(fā)明實施例的基本思想是:通過將現(xiàn)有支持IPV6路由管理的radix樹算法中的掩碼樹更改為靜態(tài)數(shù)組,并且將radix樹中關(guān)于非連續(xù)掩碼的判斷和處理分支進行裁剪,從而在適當?shù)靥岣呖臻g復雜度的前提下,明顯降低了時間復雜度,從而能高效地進行路由表的維護。
[0037]參見圖2,其示出了本發(fā)明實施例提供的一種路由表的維護方法流程,為了便于說明,本發(fā)明