本技術(shù)涉及無線通信,特別是涉及一種基于雙散列值的數(shù)據(jù)包識別方法、系統(tǒng)及終端。
背景技術(shù):
1、網(wǎng)絡(luò)交換設(shè)備用于連接多個(gè)網(wǎng)絡(luò)設(shè)備并進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),可通過多個(gè)輸入端口接收數(shù)據(jù)流,并檢查數(shù)據(jù)流中各數(shù)據(jù)包的流鍵以確定各數(shù)據(jù)包所屬的流組,具體技術(shù)方案為將各流鍵基于散列函數(shù)轉(zhuǎn)換為較短的散列值,以將該散列值作為散列條目表的索引去查找流鍵,進(jìn)而通過流鍵查找流鍵內(nèi)容表及其關(guān)聯(lián)的動(dòng)作信息或者出口信息表等,最終實(shí)現(xiàn)對各數(shù)據(jù)包分別執(zhí)行預(yù)設(shè)的處理流程并分別通過指定輸出端口輸出。
2、但是,基于一個(gè)散列函數(shù)將流鍵轉(zhuǎn)換為散列值時(shí),可能會將多個(gè)不同的流鍵轉(zhuǎn)換為相同的散列值,影響最終的查表效率和處理各數(shù)據(jù)包的效率;在輸入數(shù)據(jù)包以及流組的樣本量較大的情況下,更會嚴(yán)重影響網(wǎng)絡(luò)交換設(shè)備數(shù)據(jù)或網(wǎng)絡(luò)處理數(shù)據(jù)的效率。
技術(shù)實(shí)現(xiàn)思路
1、鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本技術(shù)的目的在于提供一種基于雙散列值的數(shù)據(jù)包識別方法、系統(tǒng)及終端,用于解決現(xiàn)有技術(shù)中基于一個(gè)散列函數(shù)將流鍵轉(zhuǎn)換為散列值時(shí)容易將多個(gè)流鍵轉(zhuǎn)換為相同散列值從而影響數(shù)據(jù)包識別和處理效率的問題。
2、為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本技術(shù)的第一方面提供一種基于雙散列值的數(shù)據(jù)包識別方法,所述基于雙散列值的數(shù)據(jù)包識別方法包括:提取待識別數(shù)據(jù)包中用于表征數(shù)據(jù)流身份的信息,獲得待識別流鍵;分別采用第一散列函數(shù)以及第二散列函數(shù)對所述待識別流鍵進(jìn)行散列運(yùn)算,生成所述待識別流鍵的第一散列值以及第二散列值;根據(jù)所述第一散列值,查找預(yù)構(gòu)建的散列條目表,獲得匹配的目標(biāo)散列桶,并根據(jù)所述第二散列值對所述目標(biāo)散列桶中的多個(gè)散列條目執(zhí)行cam查找操作,獲得一或多個(gè)匹配的目標(biāo)散列條目;根據(jù)各目標(biāo)散列條目,獲取與其對應(yīng)的一或多個(gè)流鍵,并從中篩選與所述待識別流鍵匹配的目標(biāo)流鍵,確定待識別數(shù)據(jù)包的處理流程信息,以對待識別數(shù)據(jù)包執(zhí)行對應(yīng)的處理流程。
3、于本技術(shù)的第一方面的一些實(shí)施例中,所述散列條目表的一種構(gòu)建方式包括:分別采用所述第一散列函數(shù)以及所述第二散列函數(shù)依次對多個(gè)數(shù)據(jù)包的流鍵進(jìn)行散列運(yùn)算,生成各流鍵的第一散列值以及第二散列值;構(gòu)建散列條目表;其中,所述散列條目表包括多個(gè)散列桶,每個(gè)散列桶包括多個(gè)散列條目;每個(gè)散列條目包括一個(gè)標(biāo)志位;篩選所述第一散列值相同的各流鍵,并將各流鍵的第二散列值分別存儲在同一散列桶的各散列條目中,將該第一散列值作為該散列桶的索引;遍歷各散列條目,依次將其存儲的第二散列值所對應(yīng)的流鍵的互聯(lián)網(wǎng)協(xié)議類型存儲在其標(biāo)志位中,以指向新建的對應(yīng)類型的流鍵內(nèi)容表;其中,所述流鍵內(nèi)容表包括多個(gè)與所述散列條目表中各散列條目對應(yīng)的流鍵條目,各流鍵條目分別用于存儲各流鍵以及各數(shù)據(jù)包的處理流程信息。
4、于本技術(shù)的第一方面的一些實(shí)施例中,根據(jù)各目標(biāo)散列條目,獲取與其對應(yīng)的一或多個(gè)流鍵,并從中篩選與所述待識別流鍵匹配的目標(biāo)流鍵,確定待識別數(shù)據(jù)包的處理流程信息的方式包括:根據(jù)各目標(biāo)散列條目的標(biāo)志位,獲取對應(yīng)的流鍵內(nèi)容表,并根據(jù)各目標(biāo)散列條目,獲取對應(yīng)的各流鍵條目,以執(zhí)行cam查找操作,篩選與所述待識別流鍵匹配的目標(biāo)流鍵,進(jìn)而確定待識別數(shù)據(jù)包的處理流程信息。
5、于本技術(shù)的第一方面的一些實(shí)施例中,所述散列桶的數(shù)量的計(jì)算公式為:;其中,n為所述散列條目表中散列桶的數(shù)量,n為所述第一散列值的位寬。
6、于本技術(shù)的第一方面的一些實(shí)施例中,根據(jù)所述第二散列值對所述目標(biāo)散列桶中的多個(gè)散列條目執(zhí)行cam查找操作的方式包括:當(dāng)查找所述目標(biāo)散列桶但未獲得與所述第二散列值匹配的目標(biāo)散列條目時(shí),判斷所述目標(biāo)散列桶是否還包括空閑的散列條目;若所述目標(biāo)散列桶還包括空閑的散列條目,則將所述待識別流鍵的第二散列值存儲在所述目標(biāo)散列桶的一空閑散列條目內(nèi),并將所述待識別流鍵學(xué)習(xí)進(jìn)所述流鍵內(nèi)容表;若所述目標(biāo)散列桶未包括空閑的散列條目,則選擇所述目標(biāo)散列桶已老化的一散列條目進(jìn)行釋放用以存儲所述待識別流鍵的第二散列值,并將所述待識別流鍵學(xué)習(xí)進(jìn)所述流鍵內(nèi)容表;其中,將所述待識別流鍵學(xué)習(xí)進(jìn)所述流鍵內(nèi)容表的方式包括:生成所述待識別數(shù)據(jù)包的處理流程信息,并將所述待識別流鍵以及所述處理流程信息存儲在對應(yīng)流鍵內(nèi)容表的對應(yīng)空閑流鍵條目中。
7、于本技術(shù)的第一方面的一些實(shí)施例中,選擇所述目標(biāo)散列桶已老化的一散列條目進(jìn)行釋放的方式包括:獲取所述目標(biāo)散列桶的所有散列條目;根據(jù)各散列條目的標(biāo)志位,獲取對應(yīng)的流鍵內(nèi)容表,并根據(jù)各散列條目,獲得對應(yīng)各數(shù)據(jù)包的處理流程信息;根據(jù)各數(shù)據(jù)包的處理流程信息,獲取各數(shù)據(jù)包的流鍵匹配次數(shù),并篩選流鍵匹配次數(shù)最少的數(shù)據(jù)包及其流鍵,選擇存儲該流鍵的第二散列值的散列條目作為已老化的散列條目進(jìn)行釋放。
8、于本技術(shù)的第一方面的一些實(shí)施例中,所述待識別流鍵包括:第一種類型流鍵或第二種類型流鍵;其中,所述第一種類型流鍵包括:待識別數(shù)據(jù)包的ip源地址、ip目的地址、源端口、目的端口以及傳輸層協(xié)議;所述第二種類型流鍵包括:待識別數(shù)據(jù)包的mac源地址以及mac目的地址。
9、于本技術(shù)的第一方面的一些實(shí)施例中,所述散列條目表的另一種構(gòu)建方式包括:分別采用所述第一散列函數(shù)以及所述第二散列函數(shù)依次對多個(gè)數(shù)據(jù)包的流鍵進(jìn)行散列運(yùn)算,生成各流鍵的第一散列值以及第二散列值;構(gòu)建散列條目表;其中,所述散列條目表包括多個(gè)散列桶,每個(gè)散列桶包括多個(gè)散列條目;每個(gè)散列條目包括一個(gè)標(biāo)志位;篩選所述第一散列值相同的各流鍵,并將各流鍵的第二散列值分別存儲在同一散列桶的各散列條目中,將對應(yīng)第一散列值作為該散列桶的索引;遍歷各散列條目,依次將其存儲的第二散列值所對應(yīng)的數(shù)據(jù)包的處理流程信息存儲在其標(biāo)志位中。
10、為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本技術(shù)的第二方面提供一種基于雙散列值的數(shù)據(jù)包識別系統(tǒng),所述基于雙散列值的數(shù)據(jù)包識別系統(tǒng)包括:流鍵獲取模塊,用于提取待識別數(shù)據(jù)包中用于表征數(shù)據(jù)流身份的信息,獲得待識別流鍵;散列運(yùn)算模塊,連接所述流鍵獲取模塊,用于分別采用第一散列函數(shù)以及第二散列函數(shù)對所述待識別流鍵進(jìn)行散列運(yùn)算,生成所述待識別流鍵的第一散列值以及第二散列值;散列條目查找模塊,連接所述散列運(yùn)算模塊,用于根據(jù)所述第一散列值,查找預(yù)構(gòu)建的散列條目表,獲得匹配的目標(biāo)散列桶,并根據(jù)所述第二散列值對所述目標(biāo)散列桶中的多個(gè)散列條目執(zhí)行cam查找操作,獲得一或多個(gè)匹配的目標(biāo)散列條目;數(shù)據(jù)包識別模塊,連接所述散列條目查找模塊,用于根據(jù)各目標(biāo)散列條目,獲取與其對應(yīng)的一或多個(gè)流鍵,并從中篩選與所述待識別流鍵匹配的目標(biāo)流鍵,確定待識別數(shù)據(jù)包的處理流程信息,以對待識別數(shù)據(jù)包執(zhí)行對應(yīng)的處理流程。
11、為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本技術(shù)的第三方面提供一種基于雙散列值的數(shù)據(jù)包識別終端,所述基于雙散列值的數(shù)據(jù)包識別終端包括:處理器及存儲器;所述存儲器用于存儲計(jì)算機(jī)程序;所述處理器用于執(zhí)行所述存儲器存儲的計(jì)算機(jī)程序,以使所述終端執(zhí)行上述各實(shí)施例中任一項(xiàng)所述基于雙散列值的數(shù)據(jù)包識別方法。
12、如上所述,本技術(shù)提供了一種基于雙散列值的數(shù)據(jù)包識別方法、系統(tǒng)及終端,通過采用兩個(gè)不同的散列函數(shù)對待識別流鍵進(jìn)行散列運(yùn)算,生成待識別流鍵的兩個(gè)散列值;并將生成的第一散列值作為索引,查找預(yù)構(gòu)建的散列條目表,獲得匹配的目標(biāo)散列桶;然后根據(jù)第二散列值,對目標(biāo)散列桶的多個(gè)散列條目執(zhí)行cam查找操作,獲得一或多個(gè)匹配的目標(biāo)散列條目;根據(jù)各目標(biāo)散列條目,獲取與其對應(yīng)的一或多個(gè)流鍵,并從中篩選與所述待識別流鍵匹配的目標(biāo)流鍵。本技術(shù)具有以下有益效果:由于多個(gè)流鍵的第一散列值以及第二散列值均相等的概率非常低,本技術(shù)能夠有效減少對流鍵的查表次數(shù),從而有效提高數(shù)據(jù)包的識別和處理效率,并減低錯(cuò)誤率。