本發(fā)明涉及路由器,尤其涉及一種ip地址匹配方法及裝置。
背景技術:
1、ip查找是網(wǎng)絡中路由轉發(fā)設備(路由器、三層交換機等)的核心功能,其性能直接決定這些網(wǎng)絡設備的數(shù)據(jù)包轉發(fā)能力。路由轉發(fā)設備根據(jù)接收數(shù)據(jù)包的目的ip地址在轉發(fā)表(forwarding?information?base,fib)中執(zhí)行最長前綴匹配(longest?prefix?match,lpm)查找,并根據(jù)匹配的最長ip前綴對應的下一跳信息將數(shù)據(jù)包轉發(fā)至下一跳。隨著移動互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡設備的接口帶寬和路由表規(guī)模都在持續(xù)增長,對高效ip查找,尤其是高效ipv6查找提出了嚴峻挑戰(zhàn)。
技術實現(xiàn)思路
1、為了解決現(xiàn)有技術中存在的問題,本申請實施例提供了一種ip地址匹配的方法、裝置、計算設備、計算機存儲介質及包含計算機程序的產(chǎn)品,能夠節(jié)省孩子節(jié)點的訪問和計算開銷,增大等效搜索步長。
2、第一方面,本申請實施例提供一種ip地址匹配方法,應用于路由轉發(fā)設備,方法包括:在路由轉發(fā)設備中構建多比特trie數(shù)據(jù)結構,多比特trie的奇數(shù)層節(jié)點為奇節(jié)點,偶數(shù)層節(jié)點為偶節(jié)點;通過奇節(jié)點存儲孫子節(jié)點的索引信息、孩子節(jié)點的索引信息與下一跳信息,偶節(jié)點存儲下一跳信息;根據(jù)目標ip地址的比特序列,從根奇節(jié)點開始逐層搜索,基于奇節(jié)點的孫子位圖判斷是否存在孫子節(jié)點;在存在孫子節(jié)點的情況下,跳過偶節(jié)點直接跳轉至下一奇節(jié)點;在不存在孫子節(jié)點的情況下,檢查奇節(jié)點的孩子位圖以定位偶節(jié)點,并在偶節(jié)點中獲取最長匹配的下一跳信息。如果沒有孩子節(jié)點,直接獲取奇節(jié)點中存儲的最長匹配的下一跳信息。
3、在一些可能的實現(xiàn)方式中,孫子節(jié)點的索引信息包括:孫子位圖數(shù)組,用于標記孫子節(jié)點的存在性;孫子指針數(shù)組,用于定位孫子節(jié)點的存儲地址;其中,孫子位圖數(shù)組和孫子指針數(shù)組通過截取ip地址的前m位進行索引,m為奇節(jié)點對應的子樹高度。孩子節(jié)點的索引信息包括:所述孩子位圖數(shù)組,用于標記孩子節(jié)點的存在性,孩子指針數(shù)組,用于定位孩子節(jié)點的存儲地址;下一跳信息用于定位下一跳的存儲地址。
4、在一些可能的實現(xiàn)方式中,偶節(jié)點的下一跳信息通過以下方式存儲:下一跳位圖,用于標記葉子節(jié)點的下一跳信息存在性;下一跳指針數(shù)組,用于連續(xù)存儲有效下一跳信息;其中,下一跳信息的定位通過截取ip地址的后n位進行偏移計算,n為偶節(jié)點對應的子樹高度。
5、在一些可能的實現(xiàn)方式中,等效搜索步長的計算方式為:奇節(jié)點對應的子樹高度m與偶節(jié)點對應的子樹高度n之和,等效步長k=m+n。
6、在一些可能的實現(xiàn)方式中,方法進一步包括:在奇節(jié)點中引入子孫位圖,用于標記有效孫子位圖的位置;通過子孫位圖壓縮存儲稀疏的孫子節(jié)點索引信息,減少無效存儲空間占用。
7、在一些可能的實現(xiàn)方式中,子孫位圖的壓縮存儲方式為:僅存儲被標記為有效的孫子位圖和孫子指針,并通過計算子孫位圖中“1”的累計數(shù)量確定孫子節(jié)點索引的偏移量。
8、在一些可能的實現(xiàn)方式中,孩子節(jié)點的定位方法為:根據(jù)奇節(jié)點的孩子位圖,截取ip地址的前m位作為索引,計算孩子位圖中“1”的累計數(shù)量,結合孩子指針確定偶節(jié)點的存儲地址。
9、在一些可能的實現(xiàn)方式中,方法支持動態(tài)調整子樹高度:奇節(jié)點的子樹高度m和偶節(jié)點的子樹高度n可獨立配置,以適配ipv4或ipv6地址的查找需求。
10、在一些可能的實現(xiàn)方式中,方法還包括:若奇節(jié)點無匹配的孩子節(jié)點和孫子節(jié)點,則直接根據(jù)當前節(jié)點的下一跳位圖獲取最長匹配的下一跳信息。
11、第二方面,本申請實施例提供一種ip地址匹配裝置,部署于路由轉發(fā)設備,裝置包括:構建模塊,用于在路由轉發(fā)設備中構建多比特trie數(shù)據(jù)結構,多比特trie的奇數(shù)層節(jié)點為奇節(jié)點,偶數(shù)層節(jié)點為偶節(jié)點;通過奇節(jié)點存儲孫子節(jié)點的索引信息,偶節(jié)點存儲下一跳信息;處理模塊,用于根據(jù)目標ip地址的比特序列,從根奇節(jié)點開始逐層搜索,基于奇節(jié)點的孫子位圖判斷是否存在孫子節(jié)點;處理模塊,還用于在存在孫子節(jié)點的情況下,跳過偶節(jié)點直接跳轉至下一奇節(jié)點;處理模塊,還用于在不存在孫子節(jié)點的情況下,檢查奇節(jié)點的孩子位圖以定位偶節(jié)點,并在偶節(jié)點中獲取最長匹配的下一跳信息。處理模塊,還用于在沒有孩子節(jié)點的情況下,直接獲取奇節(jié)點中存儲的最長匹配的下一跳信息。
12、第三方面,本申請實施例提供一種計算機可讀存儲介質,包括計算機可讀指令,當計算機讀取并執(zhí)行所述計算機可讀指令時,使得計算機執(zhí)行如第一方面任一項所述的方法。
13、第四方面,本申請實施例提供一種計算設備,包括處理器和存儲器,其中,所述存儲器中存儲有計算機程序指令,所述計算機程序指令被所述處理器運行時,執(zhí)行如第一方面任一項所述的方法。
14、第五方面,本申請實施例提供一種包含計算機程序的產(chǎn)品,當計算機程序產(chǎn)品在處理器上運行時,使得所述處理器執(zhí)行如第一方面任一項所述的方法。
1.一種ip地址匹配方法,其特征在于,應用于路由轉發(fā)設備,所述方法包括:
2.根據(jù)權利要求1所述的方法,其特征在于,所述孫子節(jié)點的索引信息包括:孫子位圖數(shù)組,用于標記孫子節(jié)點的存在性,孫子指針數(shù)組,用于定位孫子節(jié)點的存儲地址,其中,所述孫子位圖數(shù)組和孫子指針數(shù)組通過截取ip地址的前m位進行索引,m為奇節(jié)點對應的子樹高度;
3.根據(jù)權利要求1所述的方法,其特征在于,所述偶節(jié)點的下一跳信息通過以下方式存儲:
4.根據(jù)權利要求1所述的方法,其特征在于,所述等效搜索步長的計算方式為:奇節(jié)點對應的子樹高度m與偶節(jié)點對應的子樹高度n之和,等效步長k=m+n。
5.根據(jù)權利要求1所述的方法,其特征在于,所述方法進一步包括:
6.根據(jù)權利要求5所述的方法,其特征在于,所述子孫位圖的壓縮存儲方式為:
7.根據(jù)權利要求1所述的方法,其特征在于,所述孩子節(jié)點的定位方法為:
8.根據(jù)權利要求1所述的方法,其特征在于,所述方法支持動態(tài)調整子樹高度:
9.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括:
10.一種ip地址匹配裝置,其特征在于,部署于路由轉發(fā)設備,所述裝置包括: