本發明專利技術提出一種基于可變步寬trie樹的高速路由查找方法和裝置,其中,方法包括:根據路由表中的所有前綴構建至少一個根節點;以每個根節點對應的預設步寬s,對所有前綴接下來的s位二進制數據匹配,得到2
【技術實現步驟摘要】
基于可變步寬trie樹的高速路由查找方法和裝置
本專利技術涉及計算機應用
,尤其涉及一種基于可變步寬trie樹的高速路由查找方法和裝置。
技術介紹
路由器需要使用路由查找算法對到來的IP地址進行最長前綴匹配,從而決定對應數據包的下一跳。Poptrie算法提出了一種使用bitmap對子節點進行索引從而實現高速查找的路由查找算法。但是,現有的包括Poptrie在內的大多路由查找算法依賴于相對固定的數據結構,無法確保在具有各種分布特征的路由表中都能保持高效。因此,為了適應各個場景下規模不斷增長的路由表,需要一種靈活可變同時又能實現高速查找的路由查找算法。
技術實現思路
本專利技術旨在至少在一定程度上解決相關技術中的技術問題之一。為此,本專利技術的第一個目的在于提出一種基于可變步寬trie樹的高速路由查找方法,以實現在使用bitmap加速路由查找的同時,使trie樹節點支持可變的步寬,顯著提升了算法的靈活性。本專利技術的第二個目的在于提出一種基于可變步寬trie樹的高速路由查找裝置。本專利技術的第三個目的在于提出一種計算機設備。本專利技術的第四個目的在于提出一種非臨時性計算機可讀存儲介質。為達上述目的,本專利技術第一方面實施例提出了一種基于可變步寬trie樹的高速路由查找方法,包括以下步驟:S1:根據路由表中的所有前綴構建至少一個根節點;S2:以每個所述根節點對應的預設步寬s,對所述所有前綴接下來的s位二進制數據匹配,得到2s個子節點;S3:若所述子節點滿足預設的葉子節點的條件,則將對應的子節點作為葉子節點;若所述子節點不滿足所述預設的葉子節點的條件,則將對應的子節點作為內部節點;S4:對所述內部節點執行所述步驟S2,直至所述子節點都為所述葉子節點完成對初始trie樹的創建;S5:根據所述初始trie樹中的子節點的節點類型,構建與葉子節點對應的leaf_string和與內部節點對應的innode_string;S6:根據預設的分段長度w分別對所述leaf_string和所述innode_string分段得到多個分段數據,通過計數器對每個分段數據計數得到對應的計數結果,以便于根據所述計數結果查詢目的IP地址對應的路由。為達上述目的,本專利技術第二方面實施例提出了一種基于可變步寬trie樹的高速路由查找裝置,包括:第一構建模塊,用于根據路由表中的所有前綴構建至少一個根節點;匹配模塊,用于以每個所述根節點對應的預設步寬s,對所述所有前綴接下來的s位二進制數據匹配,得到2s個子節點;節點確定模塊,用于在所述子節點滿足預設的葉子節點的條件時,將對應的子節點作為葉子節點,在所述子節點不滿足所述預設的葉子節點的條件時,將對應的子節點作為內部節點;創建模塊,用于通過所述匹配模塊對所述內部節點以每個所述根節點對應的預設步寬s,對所述所有前綴接下來的s位二進制數據匹配,得到2s個子節點,直至所述子節點都為所述葉子節點完成對初始trie樹的創建;第二構建模塊,用于根據所述初始trie樹中的子節點的節點類型,構建與葉子節點對應的leaf_string和與內部節點對應的innode_string;查詢模塊,用于根據預設的分段長度w分別對所述leaf_string和所述innode_string分段得到多個分段數據,通過計數器對每個分段數據計數得到對應的計數結果,以便于根據所述計數結果查詢目的IP地址對應的路由。為達上述目的,本專利技術第三方面實施例提出了一種計算機設備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述處理器執行所述計算機程序時,實現如上述第一方面實施例所述的基于可變步寬trie樹的高速路由查找方法。為了實現上述目的,本專利技術第四方面實施例提出了一種非臨時性計算機可讀存儲介質,其上存儲有計算機程序,所述計算機程序被處理器執行時實現如上述第一方面實施例所述的基于可變步寬trie樹的高速路由查找方法。本專利技術的實施例,至少具有如下的技術效果:本專利技術改進了Poptrie算法,在使用bitmap加速路由查找的同時,使trie樹節點支持可變的步寬,顯著提升了算法的靈活性。本專利技術附加的方面和優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本專利技術的實踐了解到。附圖說明本專利技術上述的和/或附加的方面和優點從下面結合附圖對實施例的描述中將變得明顯和容易理解,其中:圖1為本專利技術實施例所提供的一種基于可變步寬trie樹的高速路由查找方法的流程示意圖;圖2為本專利技術實施例所提供的一種基于可變步寬trie樹的高速路由查找算法的流程示意圖;圖3為本專利技術實施例所提供的一種路由前綴及下一跳列表示意圖;圖4為本專利技術實施例所提供的一種多路trie樹拓撲圖;以及圖5為本專利技術實施例提供的一種基于可變步寬trie樹的高速路由查找裝置的結構示意圖。具體實施方式下面詳細描述本專利技術的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,旨在用于解釋本專利技術,而不能理解為對本專利技術的限制。為了解決上述技術問題,本專利技術提出了一種基于多路trie樹的路由查找算法,在保證查找效率的基礎上,通過對于可變步寬的支持,提高了算法的靈活性。算法使用bitmap索引子節點來壓縮空間加速查找,并將節點的bitmap切分并單獨儲存在位串序列中以實現不同步寬下的快速查找。下面參考附圖描述本專利技術實施例的基于可變步寬trie樹的高速路由查找方法和裝置。圖1為本專利技術實施例所提供的一種基于可變步寬trie樹的高速路由查找方法的流程示意圖。如圖1所示,該基于可變步寬trie樹的高速路由查找方法包括以下步驟:S1:根據路由表中的所有前綴構建至少一個根節點。本實施例中,根節點包含路由表中所有的前綴。S2:以每個所述根節點對應的預設步寬s,對所述所有前綴接下來的s位二進制數據匹配,得到2s個子節點。在本實施例中,根據當前節點的步寬s,對節點內所有路由前綴接下來的連續s位進行匹配,對應得到2s個子節點。S3:若所述子節點滿足預設的葉子節點的條件,則將對應的子節點作為葉子節點。若所述子節點不滿足所述預設的葉子節點的條件,則將對應的子節點作為內部節點;在本專利技術的一個實施例中,若所述子節點對應的二進制數據達到對應的前綴長度上限值,或者,所述子節點的前綴中不存在未被匹配的二進制數據,則所述子節點滿足預設的葉子節點的條件,若所述子節點的前綴中存在未被匹配的二進制數據,則所述子節點不滿足所述預設的葉子節點的條件。也就是說,在本實施例中,如果一個子節點中所有前綴在這次匹配中達到前綴長度,或是這個子節點中不存在前綴,那么這個節點是葉子節點,其對應的下一跳為最長前綴匹配規則確定的下一跳;如果一個子節點中仍然存在未匹配完全的前綴,則這個節點稱為內部節點。S4:對所述內部本文檔來自技高網...
【技術保護點】
1.一種基于可變步寬trie樹的高速路由查找方法,其特征在于,包括以下步驟:/nS1:根據路由表中的所有前綴構建至少一個根節點;/nS2:以每個所述根節點對應的預設步寬s,對所述所有前綴接下來的s位二進制數據匹配,得到2
【技術特征摘要】
1.一種基于可變步寬trie樹的高速路由查找方法,其特征在于,包括以下步驟:
S1:根據路由表中的所有前綴構建至少一個根節點;
S2:以每個所述根節點對應的預設步寬s,對所述所有前綴接下來的s位二進制數據匹配,得到2s個子節點;
S3:若所述子節點滿足預設的葉子節點的條件,則將對應的子節點作為葉子節點;
若所述子節點不滿足所述預設的葉子節點的條件,則將對應的子節點作為內部節點;
S4:對所述內部節點執行所述步驟S2,直至所述子節點都為所述葉子節點完成對初始trie樹的創建;
S5:根據所述初始trie樹中的子節點的節點類型,構建與葉子節點對應的leaf_string和與內部節點對應的innode_string;
S6:根據預設的分段長度w分別對所述leaf_string和所述innode_string分段得到多個分段數據,通過計數器對每個分段數據計數得到對應的計數結果,以便于根據所述計數結果查詢目的IP地址對應的路由。
2.如權利要求1所述的方法,其特征在于,所述若所述子節點滿足預設的葉子節點的條件,則將對應的子節點作為葉子節點,包括:
若所述子節點對應的二進制數據達到對應的前綴長度上限值,或者,所述子節點的前綴中不存在未被匹配的二進制數據,則所述子節點滿足預設的葉子節點的條件。
3.如權利要求2所述的方法,其特征在于,所述若所述子節點不滿足所述預設的葉子節點的條件,包括:
若所述子節點的前綴中存在未被匹配的二進制數據,則所述子節點不滿足所述預設的葉子節點的條件。
4.如權利要求1所述的方法,其特征在于,所述根據所述初始trie樹中的子節點的節點類型,構建與葉子節點對應的leaf_string和與內部節點對應的innode_string,包括:
根據所述內部節點對應的所有子節點的中連續且具有相同下一跳的葉子節點中的起始位置,確定所述leaf_string,其中,將所述內部節點對應的所有子節點中連續且具有相同下一跳的葉子節點中的起始位置設置為1;
根據所述內部節點對應的所有子節點的節點類型,確定與每個所述子節點對應的二進制數,根據所有的所述二進制數組成所述innode_string,其中,若所述內部節點對應的子節點的節點類型為內部節點,則確定所述二進制數為1,若所述內部節點對應的子節點的節點類型為葉子節點,則確定所述二進制數為0。
5.如權利要求4所述的方法,其特征在于,所述根據預設的分段長度w分別對所述leaf_string和所述innode_string分段得到多個分段數據,通過計數器對每個分段數據計數得到對應的計數結果,包括:
根據分段順序對所述leaf_string對應的所有第一分段數據排序,統計排序后的每個第一分段數據前面所有的第一分段數據包含的二進制數為1的數量,將該數量作為所述每個第一分段數據對應的計數結果leaf_ctr;
根據分段順序對所述innode_string對應的所有第二分段數據排序,統計排序后的每個第二分段數據前面所有的第二分段數據包含的二進制數...
【專利技術屬性】
技術研發人員:張雨軒,楊芫,徐明偉,
申請(專利權)人:清華大學,
類型:發明
國別省市:北京;11
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。