CN113722103B 加密卡的調(diào)用控制方法及通信設(shè)備(奇安信科技集團(tuán)股份有限公司)_第1頁
CN113722103B 加密卡的調(diào)用控制方法及通信設(shè)備(奇安信科技集團(tuán)股份有限公司)_第2頁
CN113722103B 加密卡的調(diào)用控制方法及通信設(shè)備(奇安信科技集團(tuán)股份有限公司)_第3頁
CN113722103B 加密卡的調(diào)用控制方法及通信設(shè)備(奇安信科技集團(tuán)股份有限公司)_第4頁
CN113722103B 加密卡的調(diào)用控制方法及通信設(shè)備(奇安信科技集團(tuán)股份有限公司)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

(19)國家知識(shí)產(chǎn)權(quán)局(12)發(fā)明專利專利權(quán)人奇安信網(wǎng)神信息技術(shù)(北京)股份有限公司HO4L9/4審查員王曉明公司11227本申請(qǐng)公開了一種加密卡的調(diào)用控制方法線程對(duì)應(yīng)的處理單元對(duì)所述第一數(shù)據(jù)進(jìn)行第一第一數(shù)據(jù)?是21.一種加密卡的調(diào)用控制方法,其特征在于,應(yīng)用于通信設(shè)備,所述通信設(shè)備中包含有多個(gè)處理器內(nèi)核,每個(gè)所述處理器內(nèi)核分別對(duì)應(yīng)有一個(gè)線程池,每個(gè)所述線程池中包含多個(gè)加解密線程,每個(gè)所述加解密線程分別對(duì)應(yīng)于加密卡中的一個(gè)處理單元,所述加解密線程都是非搶占的模式,不會(huì)產(chǎn)生系統(tǒng)上的線程切換,以保證在處理加解密任務(wù)的時(shí)候不會(huì)打擾到正常的網(wǎng)絡(luò)轉(zhuǎn)發(fā),所述線程池在所述通信設(shè)備啟動(dòng)時(shí),基于檢測到的處理器內(nèi)核的在所述通信設(shè)備接收到第一數(shù)據(jù)后,判斷所述第一數(shù)據(jù)是否滿足加解密處理的條件;在所述第一數(shù)據(jù)滿足所述加解密處理的條件的情況下,啟動(dòng)所述線程池中的加解密線程,以調(diào)用所述加解密線程對(duì)應(yīng)的處理單元對(duì)所述第一數(shù)據(jù)進(jìn)行第一處理,以得到第二數(shù)2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在啟動(dòng)所述線程池中的加解密線程之前,所述方法還包括:判斷是否滿足以下任一調(diào)用條件:目標(biāo)線程處于空閑狀態(tài);所述目標(biāo)線程為所述通信設(shè)備中進(jìn)行數(shù)據(jù)傳輸?shù)闹骶€程;目標(biāo)時(shí)長到達(dá)時(shí)長閾值,所述目標(biāo)時(shí)長為從最近一次所述加解密線程被啟動(dòng)到當(dāng)前時(shí)刻的持續(xù)時(shí)長;所述第一數(shù)據(jù)的累計(jì)數(shù)量到達(dá)預(yù)設(shè)的數(shù)量閾值;在任一所述調(diào)用條件被滿足的情況下,執(zhí)行所述:啟動(dòng)所述線程池中的加解密線程。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,每個(gè)所述線程池分別設(shè)置有對(duì)應(yīng)的轉(zhuǎn)發(fā)隊(duì)列,所述轉(zhuǎn)發(fā)隊(duì)列用于存儲(chǔ)所述第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí);且,每個(gè)所述加解密線程分別設(shè)置有對(duì)應(yīng)的線程隊(duì)列,在所述轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)的累計(jì)數(shù)量到達(dá)預(yù)設(shè)的累計(jì)閾值的情況下所述轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)被分發(fā)到每個(gè)所述線程隊(duì)列,以使得所述加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行第一處理。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述轉(zhuǎn)發(fā)隊(duì)列中按照所述第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)存儲(chǔ)所述第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí),所述次序標(biāo)識(shí)表征所述第一數(shù)據(jù)所屬的數(shù)據(jù)流,以使得屬于同一數(shù)據(jù)流的所述第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)被存儲(chǔ)到同一個(gè)所述轉(zhuǎn)發(fā)隊(duì)列5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述次序標(biāo)識(shí)還表征所述第一數(shù)據(jù)是否滿足加解密處理的條件;其中,所述判斷所述第一數(shù)據(jù)是否滿足加解密處理的條件,包括:判斷所述第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)是否與預(yù)設(shè)的數(shù)據(jù)流標(biāo)識(shí)相匹配;所述數(shù)據(jù)流標(biāo)識(shí)為需要進(jìn)行加解密處理的數(shù)據(jù)流的標(biāo)識(shí);其中,如果所述第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)與所述數(shù)據(jù)流標(biāo)識(shí)相匹配,表征所述第一數(shù)據(jù)滿足所述加解密處理的條件;如果所述第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)與所述數(shù)據(jù)流標(biāo)識(shí)不匹配,表征所示第一數(shù)據(jù)不滿足加解密處理的條件。6.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述轉(zhuǎn)發(fā)隊(duì)列中的存儲(chǔ)空間等于所述轉(zhuǎn)發(fā)3隊(duì)列對(duì)應(yīng)的線程隊(duì)列的存儲(chǔ)空間之和。7.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述線程池中的加解密線程具有線程編號(hào),所述線程編號(hào)表征所述加解密線程之間的線程次序;其中,在啟動(dòng)所述線程池中的加解密線程之前,所述方法還包括:按照所述線程編號(hào),通過輪詢的方式,依次將所述轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)分發(fā)給相應(yīng)每個(gè)所述加解密線程對(duì)應(yīng)的線程隊(duì)列,以使得所述加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行第一處理。8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行第一處理,包括:所述加解密線程按照所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí),在存儲(chǔ)區(qū)域讀取所述數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù);所述加解密線程將所述第一數(shù)據(jù)發(fā)送給所述加解密線程對(duì)應(yīng)的處理單元,以使得所述處理單元對(duì)接收到的第一數(shù)據(jù)進(jìn)行加密處理或解密處理,以得到第二數(shù)據(jù);所述加解密線程將所述處理單元發(fā)送的所述第二數(shù)據(jù)按照其在所述線程隊(duì)列中對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)寫入所述存儲(chǔ)區(qū)域。9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括:在獲得到處理完成消息后,輸出所述第二數(shù)據(jù);其中,所述處理完成消息在所述線程池中的所有所述加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的所有數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)均處理完成后生成。10.根據(jù)權(quán)利要求9所述的方法,其特征在于,在輸出所述第二數(shù)據(jù)之前,所述方法還包將所述第二數(shù)據(jù)按照預(yù)設(shè)的目標(biāo)格式進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換處理,以得到所述目標(biāo)格式的第二數(shù)據(jù)。11.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述加解密線程在被啟動(dòng)之前處于休眠狀態(tài);且,所述加解密線程在調(diào)用完所述處理單元之后進(jìn)入休眠狀態(tài)。一個(gè)或多個(gè)處理器;當(dāng)所述計(jì)算機(jī)程序被所述一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述一個(gè)或多個(gè)處理器實(shí)現(xiàn)如權(quán)利要求1至11中任意一項(xiàng)所述的加密卡的調(diào)用控制方法。4加密卡的調(diào)用控制方法及通信設(shè)備技術(shù)領(lǐng)域[0001]本申請(qǐng)涉及通信技術(shù)領(lǐng)域,尤其涉及一種加密卡的調(diào)用控制方法及通信設(shè)備。背景技術(shù)[0002]為了保證傳輸數(shù)據(jù)的安全性,組網(wǎng)傳輸數(shù)據(jù)時(shí)通常采用特定的加解密算法。目前在通信設(shè)備,通常內(nèi)置加密卡,加密卡中配置有加解密算法,進(jìn)而通信設(shè)備中通過調(diào)用加密卡實(shí)現(xiàn)數(shù)據(jù)的加解密處理。[0003]目前,通信設(shè)備中在數(shù)據(jù)需要進(jìn)行加解密處理時(shí),通過切換線程來調(diào)用加密卡實(shí)現(xiàn)數(shù)據(jù)的加解密。但此時(shí)通信設(shè)備會(huì)中斷通信設(shè)備之前所調(diào)用的線程,使得線程所執(zhí)行的網(wǎng)絡(luò)轉(zhuǎn)發(fā)等業(yè)務(wù)被中斷,導(dǎo)致在該業(yè)務(wù)上的性能不穩(wěn)定。發(fā)明內(nèi)容[0004]有鑒于此,本申請(qǐng)?zhí)峁┮环N加密卡的調(diào)用控制方法及通信設(shè)備,用以解決現(xiàn)有技術(shù)最大化加密卡性能時(shí)網(wǎng)絡(luò)轉(zhuǎn)發(fā)性能上的不穩(wěn)定的技術(shù)問題。[0005]本申請(qǐng)?zhí)峁┝艘环N加密卡的調(diào)用控制方法,應(yīng)用于通信設(shè)備,所述通信設(shè)備中包含有多個(gè)處理器內(nèi)核,每個(gè)所述處理器內(nèi)核分別對(duì)應(yīng)有一個(gè)線程池,每個(gè)所述線程池中包含多個(gè)加解密線程,每個(gè)所述加解密線程分別對(duì)應(yīng)于加密卡中的一個(gè)處理單元,所述方法[0006]在所述通信設(shè)備接收到第一數(shù)據(jù)后,判斷所述第一數(shù)據(jù)是否滿足加解密處理的條[0007]在所述第一數(shù)據(jù)滿足所述加解密處理的條件的情況下,啟動(dòng)所述線程池中的加解密線程,以調(diào)用所述加解密線程對(duì)應(yīng)的處理單元對(duì)所述第一數(shù)據(jù)進(jìn)行第一處理,以得到第二數(shù)據(jù)。[0009]判斷是否滿足以下任一調(diào)用條件:[0010]目標(biāo)線程處于空閑狀態(tài);所述目標(biāo)線程為所述通信設(shè)備中進(jìn)行數(shù)據(jù)傳輸?shù)闹骶€[0012]目標(biāo)時(shí)長到達(dá)時(shí)長閾值,所述目標(biāo)時(shí)長為從最近一次所述加解密線程被啟動(dòng)到當(dāng)前時(shí)刻的持續(xù)時(shí)長;[0014]所述第一數(shù)據(jù)的累計(jì)數(shù)量到達(dá)預(yù)設(shè)的數(shù)量閾值;[0015]在任一所述調(diào)用條件被滿足的情況下,執(zhí)行所述:啟動(dòng)所述線程池中的加解密線[0016]上述方法,優(yōu)選的,每個(gè)所述線程池分別設(shè)置有對(duì)應(yīng)的轉(zhuǎn)發(fā)隊(duì)列,所述轉(zhuǎn)發(fā)隊(duì)列用于存儲(chǔ)所述第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí);5[0017]且,每個(gè)所述加解密線程分別設(shè)置有對(duì)應(yīng)的線程隊(duì)列,在所述轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)的累計(jì)數(shù)量到達(dá)預(yù)設(shè)的累計(jì)閾值的情況下所述轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)被分發(fā)到每個(gè)所述線程隊(duì)列,以使得所述加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行第一處理。[0018]上述方法,優(yōu)選的,所述轉(zhuǎn)發(fā)隊(duì)列中按照所述第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)存儲(chǔ)所述第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí),所述次序標(biāo)識(shí)表征所述第一數(shù)據(jù)所屬的數(shù)據(jù)流,以使得屬于同一數(shù)據(jù)流的所述第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)被存儲(chǔ)到同一個(gè)所述轉(zhuǎn)發(fā)隊(duì)列中。[0019]上述方法,優(yōu)選的,所述次序標(biāo)識(shí)還表征所述第一數(shù)據(jù)是否滿足加解密處理的條[0021]判斷所述第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)是否與預(yù)設(shè)的數(shù)據(jù)流標(biāo)識(shí)相匹配;所述數(shù)據(jù)流標(biāo)識(shí)為需要進(jìn)行加解密處理的數(shù)據(jù)流的標(biāo)識(shí);[0022]其中,如果所述第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)與所述數(shù)據(jù)流標(biāo)識(shí)相匹配,表征所述第一數(shù)據(jù)滿足所述加解密處理的條件;如果所述第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)與所述數(shù)據(jù)流標(biāo)識(shí)不匹配,表征所示第一數(shù)據(jù)不滿足加解密處理的條件。[0023]上述方法,優(yōu)選的,所述轉(zhuǎn)發(fā)隊(duì)列中的存儲(chǔ)空間等于所述轉(zhuǎn)發(fā)隊(duì)列對(duì)應(yīng)的線程隊(duì)列的存儲(chǔ)空間之和。[0024]上述方法,優(yōu)選的,所述線程池中的加解密線程具有線程編號(hào),所述線程編號(hào)表征所述加解密線程之間的線程次序;[0026]按照所述線程編號(hào),通過輪詢的方式,依次將所述轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)分發(fā)給相應(yīng)每個(gè)所述加解密線程對(duì)應(yīng)的線程隊(duì)列,以使得所述加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行第一處理。[0027]上述方法,優(yōu)選的,所述加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行第一處理,包括:[0028]所述加解密線程按照所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí),在存儲(chǔ)區(qū)域讀取所述數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù);[0029]所述加解密線程將所述第一數(shù)據(jù)發(fā)送給所述加解密線程對(duì)應(yīng)的處理單元,以使得所述處理單元對(duì)接收到的第一數(shù)據(jù)進(jìn)行加密處理或解密處理,以得到第二數(shù)據(jù);[0030]所述加解密線程將所述處理單元發(fā)送的所述第二數(shù)據(jù)按照其在所述線程隊(duì)列中對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)寫入所述存儲(chǔ)區(qū)域。[0033]其中,所述處理完成消息在所述線程池中的所有所述加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的所有數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)均處理完成后生成。[0035]將所述第二數(shù)據(jù)按照預(yù)設(shè)的目標(biāo)格式進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換處理,以得到所述目標(biāo)格式的第二數(shù)據(jù)。[0036]上述方法,優(yōu)選的,所述加解密線程在被啟動(dòng)之前處于休眠狀態(tài);且,所述加解密6線程在調(diào)用完所述處理單元之后進(jìn)入休眠狀態(tài)。[0037]上述方法,優(yōu)選的,所述線程池在所述通信設(shè)備啟動(dòng)時(shí),基于檢測到的處理器內(nèi)核的數(shù)量創(chuàng)建。[0038]本申請(qǐng)還提供了一種通信設(shè)備,包括:[0039]一個(gè)或多個(gè)處理器;[0040]存儲(chǔ)器,其上存儲(chǔ)有計(jì)算機(jī)程序;[0041]當(dāng)所述計(jì)算機(jī)程序被所述一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述一個(gè)或多個(gè)處理器實(shí)現(xiàn)如上述任意一項(xiàng)所述的加密卡的調(diào)用控制方法。[0042]由上述方案可知,本申請(qǐng)?zhí)峁┑囊环N加密卡的調(diào)用控制方法及通信設(shè)備中,在通信設(shè)備中針對(duì)處理器內(nèi)核創(chuàng)建相應(yīng)的加解密線程與加密卡內(nèi)各處理單元相對(duì)應(yīng),基于此,在通信設(shè)備接收到第一數(shù)據(jù)且第一數(shù)據(jù)滿足加解密處理的條件的情況下,啟動(dòng)相應(yīng)的加解密線程以調(diào)用對(duì)應(yīng)的處理單元對(duì)第一數(shù)據(jù)進(jìn)行處理,由此得到第二數(shù)據(jù)??梢?,本申請(qǐng)中針對(duì)處理器內(nèi)核創(chuàng)建相應(yīng)的線程,從而無需切換通信設(shè)備中正常網(wǎng)絡(luò)轉(zhuǎn)發(fā)對(duì)應(yīng)的線程來調(diào)用處理單元就可以實(shí)現(xiàn)加解密處理,由此就可以在不干擾數(shù)據(jù)包轉(zhuǎn)發(fā)的條件下,實(shí)現(xiàn)加密卡多個(gè)處理單元的性能最大化。附圖說明[0043]為了更清楚地說明本申請(qǐng)實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0044]圖1為本申請(qǐng)實(shí)施例提供的一種加密卡的調(diào)用控制方法的流程圖;[0045]圖2-圖4分別為本申請(qǐng)實(shí)施例的示例圖;[0046]圖5為本申請(qǐng)實(shí)施例提供的一種加密卡的調(diào)用控制方法的另一流程圖;[0047]圖6-圖9分別為本申請(qǐng)實(shí)施例的另一示例圖;[0048]圖10為本申請(qǐng)實(shí)施例提供的一種加密卡的調(diào)用控制方法的部分流程圖;[0049]圖11為本申請(qǐng)實(shí)施例的另一示例圖;[0050]圖12為本申請(qǐng)實(shí)施例提供的一種加密卡的調(diào)用控制方法的另一流程圖;[0051]圖13為本申請(qǐng)實(shí)施例提供的一種通信設(shè)備的結(jié)構(gòu)示意圖;[0052]圖14及圖15為本申請(qǐng)實(shí)施例的其他示例圖。具體實(shí)施方式[0053]本申請(qǐng)的發(fā)明人對(duì)使用加密卡的通信設(shè)備進(jìn)行研究時(shí)發(fā)現(xiàn):假設(shè)一臺(tái)通信設(shè)備上安裝一個(gè)加密卡,并且加密卡一般都是有多硬件通道構(gòu)成,這里的硬件通道是指加密卡中用于加解密處理的密碼芯片。由于每一個(gè)硬件通道的性能不是特別高,因此需要盡量的要把加密卡的所有硬件通道都使用起來,才能最大化的使性能能夠最大化。[0054]而目前為了最大化的使用加密卡的性能,需要采用多線程的方式去調(diào)用加密卡,把加密卡的性能使用到最大化,而通信設(shè)備中的操作系統(tǒng)除了需要調(diào)用加密卡之外還有轉(zhuǎn)發(fā)網(wǎng)絡(luò)流量,如果啟用很多線程調(diào)用加密卡,會(huì)給系統(tǒng)帶來很多線程上的切換,就會(huì)產(chǎn)生很7[0055]針對(duì)以上缺陷,本申請(qǐng)的發(fā)明人提出一種使用軟件線程池模擬協(xié)程來提高加密卡吞吐的實(shí)現(xiàn)技術(shù),而采用協(xié)程的優(yōu)勢一個(gè)不由通信設(shè)備的操作系統(tǒng)內(nèi)核搶占調(diào)度,而由所創(chuàng)建的進(jìn)程管理在用戶態(tài)自管理的協(xié)作式“線程”,并不會(huì)參與操作系統(tǒng)對(duì)中央處理器CPU(centralprocessingunit)時(shí)間調(diào)度,并沒有均衡分配到時(shí)間。具體的實(shí)現(xiàn)方案中,通過采用預(yù)先分配好的線程池,這些預(yù)分配的線程都是非搶占的模式,不會(huì)產(chǎn)生系統(tǒng)上的線程切換,以保證沒有加解密任務(wù)或者在處理加解密任務(wù)的時(shí)候不會(huì)打擾到正常的網(wǎng)絡(luò)轉(zhuǎn)發(fā),而在處理加解密的時(shí)候完全占用CPU,一直批量處理多個(gè)數(shù)據(jù)包,并且同時(shí)利用盡可能多的硬件加密通道,最大化的利用加密卡性能,以達(dá)到性能的最優(yōu)。[0056]下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他[0057]參考圖1,為本申請(qǐng)實(shí)施例提供的一種加密卡的調(diào)用控制方法的實(shí)現(xiàn)流程圖,該方法應(yīng)用于通信設(shè)備中,通信設(shè)備中配置有加密卡,加密卡具有多個(gè)處理單元,如圖2中所示,這里的處理單元是指加密卡中的密碼芯片,能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的加解密等處理,所實(shí)現(xiàn)的數(shù)據(jù)處理通道可以稱為加密硬件通道。而且,通信設(shè)備中包含有多個(gè)處理器內(nèi)核,而針對(duì)每個(gè)處理器內(nèi)核分別對(duì)應(yīng)于一個(gè)線程池,每個(gè)線程池中包含多個(gè)加解密線程,每個(gè)加解密線程分別對(duì)應(yīng)于加密卡中的一個(gè)處理單元。本實(shí)施例中的技術(shù)方案主要用于在不干擾數(shù)據(jù)包轉(zhuǎn)發(fā)的條件下,實(shí)現(xiàn)加密卡多個(gè)處理單元的性能最大化。[0059]步驟101:監(jiān)測通信設(shè)備上是否接收到第一數(shù)據(jù),如果接收到第一數(shù)據(jù),執(zhí)行步驟102,如果沒有接收到第一數(shù)據(jù),繼續(xù)執(zhí)行步驟101。[0060]其中,第一數(shù)據(jù)為通信設(shè)備所接收到的待處理的數(shù)據(jù)包。第一數(shù)據(jù)對(duì)應(yīng)有數(shù)據(jù)標(biāo)識(shí)和次序標(biāo)識(shí)。這里的數(shù)據(jù)標(biāo)識(shí)可以為待處理的第一數(shù)據(jù)的地址指針,地址指針用于讀取待處理數(shù)據(jù),即第一數(shù)據(jù)。次序標(biāo)識(shí)表征第一數(shù)據(jù)所屬的數(shù)據(jù)流。具體實(shí)現(xiàn)中,次序標(biāo)識(shí)可以采用五元組哈希值來表示,這里的五元組可以包含有:第一數(shù)據(jù)對(duì)應(yīng)的源端IP地址、目的端IP地址、源端的端口、目的端的端口和協(xié)議信息。另外,次序標(biāo)識(shí)也可以用其他元組的哈希值來表示。個(gè)線程池,每個(gè)線程池中包含多個(gè)加解密線程,一個(gè)加解密線程與加密卡中的一個(gè)處理單程池1、線程池2和線程池3,每個(gè)線程池中分別通過每個(gè)加解密線程對(duì)應(yīng)于加密卡中的一個(gè)對(duì)應(yīng)于加密卡中的4個(gè)硬件通道0-3,線程池1中的線程0、線程1、線程2和線程3依次對(duì)應(yīng)于加密卡中的4個(gè)硬件通道4-7,線程池2中的線程0、線程1、線程2和線程3依次對(duì)應(yīng)于加密卡中的4個(gè)硬件通道8-11,線程池3中的線程0、線程1、線程2和線程3依次對(duì)應(yīng)于加密卡中的4個(gè)硬件通道12-15。8[0062]步驟102:判斷第一數(shù)據(jù)是否滿足加解密處理的條件,如果第一數(shù)據(jù)滿足加解密處理的條件,執(zhí)行步驟103,如果第一數(shù)據(jù)不滿足加解密處理的條件,返回繼續(xù)執(zhí)行步驟101。[0063]其中,加解密處理的條件可以為:第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)與預(yù)設(shè)的數(shù)據(jù)流標(biāo)識(shí)相匹配,這里的數(shù)據(jù)流標(biāo)識(shí)即為需要進(jìn)行加解密處理的數(shù)據(jù)流的標(biāo)識(shí)。數(shù)據(jù)流標(biāo)識(shí)根據(jù)需求預(yù)設(shè)在通信設(shè)備中進(jìn)行設(shè)置?;诖?,本實(shí)施例中在接收到第一數(shù)據(jù)之后,可以判斷第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)是否與預(yù)設(shè)的數(shù)據(jù)流標(biāo)識(shí)相匹配,如果第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)與數(shù)據(jù)流標(biāo)識(shí)相匹配,那么可以確定第一數(shù)據(jù)為需要進(jìn)行加解密處理的數(shù)據(jù),即第一數(shù)據(jù)滿足加解密處理的條件,如果第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)與數(shù)據(jù)流標(biāo)識(shí)不匹配,那么可以確定第一數(shù)據(jù)不是需要進(jìn)行加解密處理的數(shù)據(jù),即第一數(shù)據(jù)不滿足加解密處理的條件?;诖?,本實(shí)施例中可以根據(jù)第一數(shù)據(jù)的源端信息和目的端信息等內(nèi)容確定第一數(shù)據(jù)是否為需要加解密處理。[0064]步驟103:啟動(dòng)線程池中的加解密線程,以調(diào)用加解密線程對(duì)應(yīng)的處理單元對(duì)第一數(shù)據(jù)進(jìn)行第一處理,以得到第二數(shù)據(jù)。[0065]具體實(shí)現(xiàn)中,本實(shí)施例中可以將第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)通過與加解密線程之間的接口發(fā)送給被啟動(dòng)的加解密線程,由此,被啟動(dòng)的加解密線程可以調(diào)用其對(duì)應(yīng)的處理單元對(duì)所接收到的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行第一處理,以得到第二數(shù)據(jù)。[0066]其中,第一處理可以為加密處理,此時(shí),第二數(shù)據(jù)為對(duì)第一數(shù)據(jù)進(jìn)行加密所得到的加密數(shù)據(jù);第一處理數(shù)據(jù)可以為解密處理,此時(shí),第二數(shù)據(jù)為對(duì)第一數(shù)據(jù)進(jìn)行解密所得到的解密數(shù)據(jù)。[0067]需要說明的是,線程池中的加解密線程默認(rèn)狀態(tài)下為休眠狀態(tài),只有在需要調(diào)用處理單元進(jìn)行第一處理時(shí),才重新啟動(dòng)即喚醒線程池中的加解密線程,由此將待處理的第一數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)發(fā)送給被喚醒的加解密線程,進(jìn)而由被喚醒的加解密線程調(diào)用相應(yīng)的處理單元進(jìn)行相應(yīng)的第一處理。進(jìn)一步的,在加解密線程調(diào)用完處理完成之后,加解密線程再次進(jìn)入休眠狀態(tài),直到下一次被啟動(dòng)。[0068]由上述方案可知,本申請(qǐng)實(shí)施例提供的一種加密卡的調(diào)用控制方法中,在通信設(shè)備中針對(duì)處理器內(nèi)核創(chuàng)建相應(yīng)的加解密線程與加密卡內(nèi)各處理單元相對(duì)應(yīng),基于此,在通信設(shè)備接收到第一數(shù)據(jù)且第一數(shù)據(jù)滿足加解密處理的條件的情況下,啟動(dòng)相應(yīng)的加解密線程以調(diào)用對(duì)應(yīng)的處理單元對(duì)第一數(shù)據(jù)進(jìn)行處理,由此得到第二數(shù)據(jù)。可見,本實(shí)施例中針對(duì)處理器內(nèi)核創(chuàng)建相應(yīng)的線程,從而無需切換通信設(shè)備中正常網(wǎng)絡(luò)轉(zhuǎn)發(fā)對(duì)應(yīng)的線程來調(diào)用處理單元就可以實(shí)現(xiàn)加解密處理,由此就可以在不干擾數(shù)據(jù)包轉(zhuǎn)發(fā)的條件下,實(shí)現(xiàn)加密卡多個(gè)處理單元的性能最大化。[0069]在一種實(shí)現(xiàn)方式中,在步驟103中啟動(dòng)線程池中的加解密線程之前,本實(shí)施例中的方法還可以包含如下步驟,如圖5中所示:[0070]步驟104:判斷調(diào)用條件是否被滿足,如果調(diào)用條件被滿足,那么執(zhí)行步驟103,如果調(diào)用條件沒有被滿足,那么繼續(xù)監(jiān)測調(diào)用條件是否被滿足。[0072]第一個(gè)調(diào)用條件可以為:目標(biāo)線程處于空閑狀態(tài),這里的目標(biāo)線程可以為通信設(shè)備中進(jìn)行數(shù)據(jù)傳輸?shù)闹骶€程。其中,在目標(biāo)線程處于空閑狀態(tài)的情況下,通信設(shè)備中處于空閑資源量較多,因此,在第一個(gè)調(diào)用條件被滿足的情況下,可以啟動(dòng)線程池中的加解密線程9在較多的空閑資源的支持下調(diào)用相應(yīng)的處理單元對(duì)第一數(shù)據(jù)進(jìn)行處理,以便于加快處理效[0073]第二個(gè)調(diào)用條件可以為:目標(biāo)時(shí)長到達(dá)時(shí)長閾值,這里的目標(biāo)時(shí)長為從最近一次加解密線程被啟動(dòng)到當(dāng)前時(shí)刻的持續(xù)時(shí)長。時(shí)間閾值可以根據(jù)需求預(yù)先設(shè)置,如100毫秒。該時(shí)間閾值可以理解為預(yù)設(shè)的時(shí)間窗口,也就是說,在前一次加解密線程被啟動(dòng)并調(diào)用處理單元完成一次第一處理之后,本實(shí)施例中開始計(jì)時(shí),并對(duì)之后接收到的第一數(shù)據(jù)進(jìn)行累計(jì),在到達(dá)時(shí)間窗口即計(jì)時(shí)的目標(biāo)時(shí)長到達(dá)時(shí)長閾值時(shí),再啟動(dòng)線程池中的加解密線程調(diào)用相應(yīng)的處理單元對(duì)累計(jì)的第一數(shù)據(jù)進(jìn)行批量處理,以避免頻繁啟動(dòng)加解密線程所造成的效率較低的情況。[0074]第三個(gè)調(diào)用條件可以為:第一數(shù)據(jù)的累計(jì)數(shù)量到達(dá)預(yù)設(shè)的數(shù)量閾值,累計(jì)數(shù)量為從最近一次加解密線程被啟動(dòng)到當(dāng)前時(shí)刻所接收到的第一數(shù)據(jù)的總量。也就是說,在前一次加解密線程被啟動(dòng)并調(diào)用處理單元完成一次第一處理之后,本實(shí)施例中對(duì)接收到的第一數(shù)據(jù)進(jìn)行累計(jì),在累計(jì)數(shù)量到達(dá)數(shù)量閾值時(shí),再啟動(dòng)線程池中的加解密線程調(diào)用相應(yīng)的處理單元對(duì)累計(jì)的第一數(shù)據(jù)進(jìn)行批量處理,以避免頻繁啟動(dòng)加解密線程所造成的效率較低的[0075]具體實(shí)現(xiàn)中,本實(shí)施例對(duì)每個(gè)線程池分別設(shè)置對(duì)應(yīng)的轉(zhuǎn)發(fā)隊(duì)列,該轉(zhuǎn)發(fā)隊(duì)列用于存儲(chǔ)第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí),如圖6中所示,線程池0具有轉(zhuǎn)發(fā)隊(duì)列0,線程池1具有轉(zhuǎn)發(fā)隊(duì)列1,線程池2具有轉(zhuǎn)發(fā)隊(duì)列2,線程池3具有轉(zhuǎn)發(fā)隊(duì)列3。[0076]進(jìn)一步的,每個(gè)加解密線程分別設(shè)置有對(duì)應(yīng)的線程隊(duì)列,在轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)的累計(jì)數(shù)量到達(dá)預(yù)設(shè)的累計(jì)閾值的情況下,轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)被分發(fā)到每個(gè)線程隊(duì)列,以使得加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)所述線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行第一處理。[0077]其中,累計(jì)閾值可以為轉(zhuǎn)發(fā)隊(duì)列的容量上限值,或者其他小于轉(zhuǎn)發(fā)隊(duì)列的容量上限值的數(shù)值。[0078]以線程池0為例,如圖7中所示,線程池0中的加解密線程0具有線程隊(duì)列0,加解密線程1具有線程隊(duì)列1,加解密線程2具有線程隊(duì)列2,加解密線程3具有線程隊(duì)列3?;诖耍谵D(zhuǎn)發(fā)隊(duì)列0中所存儲(chǔ)的數(shù)據(jù)標(biāo)識(shí)的累積數(shù)量達(dá)到轉(zhuǎn)發(fā)隊(duì)列0的容量上限時(shí),轉(zhuǎn)發(fā)隊(duì)列0中的所有數(shù)據(jù)標(biāo)識(shí)被分發(fā)到線程隊(duì)列0、線程隊(duì)列1、線程隊(duì)列2和線程隊(duì)列3中,由此,加解密線程0被啟動(dòng)并調(diào)用硬件通道0對(duì)線程隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行處理,加解密線程1調(diào)用硬件通道1對(duì)線程隊(duì)列1中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行處理,加解密線程2調(diào)用硬件通道2對(duì)線程隊(duì)列2中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行處理,加解密線程3調(diào)用硬件通道3對(duì)線程隊(duì)列3中的數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)進(jìn)行處理。[0079]需要說明的是,每個(gè)線程池對(duì)應(yīng)的轉(zhuǎn)發(fā)隊(duì)列中按照第一數(shù)據(jù)對(duì)應(yīng)的次序標(biāo)識(shí)存儲(chǔ)第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí),次序標(biāo)識(shí)表征第一數(shù)據(jù)所屬的數(shù)據(jù)流,以使得屬于同一數(shù)據(jù)流的第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)被存儲(chǔ)到同一個(gè)轉(zhuǎn)發(fā)隊(duì)列中。如圖8中所示,轉(zhuǎn)發(fā)隊(duì)列0、轉(zhuǎn)發(fā)隊(duì)列1、轉(zhuǎn)發(fā)隊(duì)列2和轉(zhuǎn)發(fā)隊(duì)列3中的數(shù)據(jù)標(biāo)識(shí)按照所屬第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)流進(jìn)行存儲(chǔ),轉(zhuǎn)發(fā)隊(duì)列0、轉(zhuǎn)發(fā)隊(duì)列1、轉(zhuǎn)發(fā)隊(duì)列2和轉(zhuǎn)發(fā)隊(duì)列3中各自所存儲(chǔ)的數(shù)據(jù)標(biāo)識(shí)所屬第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)流可以不同,分別為數(shù)據(jù)流X、數(shù)據(jù)流Y、數(shù)據(jù)流Z和數(shù)據(jù)流R,但同一個(gè)轉(zhuǎn)發(fā)隊(duì)列中所存儲(chǔ)的數(shù)據(jù)標(biāo)識(shí)所屬第一數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)流相同。中的數(shù)據(jù)標(biāo)識(shí)1發(fā)送到線程隊(duì)列1,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)2發(fā)送到線程隊(duì)列2,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)3發(fā)送給線程隊(duì)列3;將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)4發(fā)送給線程隊(duì)列0,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)5發(fā)送到線程隊(duì)列1,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)6發(fā)送到線程隊(duì)列2,發(fā)送給線程隊(duì)列0,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)9發(fā)送到線程隊(duì)列1,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)10發(fā)送到線程隊(duì)列2,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)11發(fā)送給線程隊(duì)列3;將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)12發(fā)送給線程隊(duì)列0,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)13發(fā)送到線程隊(duì)列1,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)14發(fā)送到線程隊(duì)列2,將轉(zhuǎn)發(fā)隊(duì)列0中的數(shù)據(jù)標(biāo)識(shí)15發(fā)送給線程隊(duì)列3,直到[0087]步驟1001:加解密線程按照線程隊(duì)列中的數(shù)據(jù)標(biāo)識(shí),在存儲(chǔ)區(qū)域讀取數(shù)據(jù)標(biāo)識(shí)對(duì)11應(yīng)的第一數(shù)據(jù)。[0088]其中,存儲(chǔ)區(qū)域可以為通信設(shè)備中的存儲(chǔ)區(qū)域,或者可以為與通信設(shè)備相連接的其他設(shè)備中的存儲(chǔ)區(qū)域。數(shù)據(jù)標(biāo)識(shí)可以為能夠指向第一數(shù)據(jù)的標(biāo)識(shí),如地址指針等?;诖耍咏饷芫€程在存儲(chǔ)區(qū)域中讀取線程隊(duì)列中的各個(gè)數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)。[0089]具體的,每個(gè)加解密線程可以按照線程隊(duì)列中各個(gè)數(shù)據(jù)標(biāo)識(shí)被寫入的次序讀取對(duì)應(yīng)的第一數(shù)據(jù);或者,每個(gè)加解密線程可以按照隨機(jī)次序讀取線程隊(duì)列中各個(gè)數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù);或者,每個(gè)加解密線程可以同時(shí)讀取線程隊(duì)列中各個(gè)數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一[0090]例如,在按照從加解密線程0到加解密線程3的次序?qū)⑥D(zhuǎn)發(fā)隊(duì)列0中的地址指針分別發(fā)送給線程隊(duì)列0到線程隊(duì)列3之后,加解密線程0按照線程隊(duì)列0中的各個(gè)地址指針讀取相應(yīng)的第一數(shù)據(jù),加解密線程1按照線程隊(duì)列1中的各個(gè)地址指針讀取相應(yīng)的第一數(shù)據(jù),加解密線程2按照線程隊(duì)列2中的各個(gè)地址指針讀取相應(yīng)的第一數(shù)據(jù),加解密線程3按照線程隊(duì)列3中的各個(gè)地址指針讀取相應(yīng)的第一數(shù)據(jù)。[0091]步驟1002:加解密線程將第一數(shù)據(jù)發(fā)送給加解密線程對(duì)應(yīng)的處理單元,以使得處理單元對(duì)接收到的第一數(shù)據(jù)進(jìn)行加密處理或解密處理,以得到第二數(shù)據(jù)。[0092]其中,加解密線程可以通過與相應(yīng)處理單元之間的數(shù)據(jù)接口或通路將第一數(shù)據(jù)發(fā)送給處理單元,另外,加解密線程還可以將其他數(shù)據(jù)與第一數(shù)據(jù)一起發(fā)送給對(duì)應(yīng)的處理單元,這里的其他數(shù)據(jù)為對(duì)第一數(shù)據(jù)進(jìn)行加解密等處理所需要的數(shù)據(jù),如密鑰等。[0093]基于此,在處理單元接收到第一數(shù)據(jù)之后,對(duì)第一數(shù)據(jù)進(jìn)行加解密等處理,由此得到第二數(shù)據(jù),處理單元在得到第一數(shù)據(jù)對(duì)應(yīng)的第二數(shù)據(jù)之后,將第二數(shù)據(jù)發(fā)送給加解密線程。例如,如圖11中所示,加解密線程0將讀取到的第一數(shù)據(jù)發(fā)送給硬件通道0,由硬件通道0進(jìn)行加解密處理并將得到的第二數(shù)據(jù)發(fā)送給加解密線程0,加解密線程1將讀取到的第一數(shù)據(jù)發(fā)送給硬件通道1,由硬件通道1進(jìn)行加解密處理并將得到的第二數(shù)據(jù)發(fā)送給加解密線程1,加解密線程2將讀取到的第一數(shù)據(jù)發(fā)送給硬件通道2,由硬件通道2進(jìn)行加解密處理并將得到的第二數(shù)據(jù)發(fā)送給加解密線程2,加解密線程3將讀取到的第一數(shù)據(jù)發(fā)送給硬件通道3,由硬件通道3進(jìn)行加解密處理并將得到的第二數(shù)據(jù)發(fā)送給加解密線程3。[0094]步驟1003:加解密線程將處理單元發(fā)送的第二數(shù)據(jù)按照其在線程隊(duì)列中對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)寫入存儲(chǔ)區(qū)域。[0095]例如,加解密線程0將硬件通道0發(fā)送的第二數(shù)據(jù)寫入到存儲(chǔ)區(qū)域中線程隊(duì)列0中相應(yīng)地址指針?biāo)赶虻拇鎯?chǔ)位置,加解密線程1將硬件通道1發(fā)送的第二數(shù)據(jù)寫入到存儲(chǔ)區(qū)域中線程隊(duì)列1中相應(yīng)地址指針?biāo)赶虻拇鎯?chǔ)位置,加解密線程2將硬件通道2發(fā)送的第二數(shù)據(jù)寫入到存儲(chǔ)區(qū)域中線程隊(duì)列2中相應(yīng)地址指針?biāo)赶虻拇鎯?chǔ)位置,加解密線程3將硬件通道3發(fā)送的第二數(shù)據(jù)寫入到存儲(chǔ)區(qū)域中線程隊(duì)列3中相應(yīng)地址指針?biāo)赶虻拇鎯?chǔ)位置。[0096]基于以上實(shí)現(xiàn),本實(shí)施例中在獲得到第二數(shù)據(jù)之后,本實(shí)施例中的方法還可以包[0097]步驟105:在獲得到處理完成消息后,輸出第二[0098]其中,處理完成消息在線程池中的所有加解密線程調(diào)用對(duì)應(yīng)的處理單元對(duì)線程隊(duì)列中的所有數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的第一數(shù)據(jù)均處理完成后生成。也就是說,線程池中的每個(gè)加解密線程分別接收到對(duì)應(yīng)的處理單元發(fā)送的第二數(shù)據(jù)并將第二數(shù)據(jù)寫入到存儲(chǔ)區(qū)域之后,生成處理完成消息,以表征該線程池中各個(gè)加解密線程均通過調(diào)用處理單元完成第一處理,此時(shí),可以將存儲(chǔ)區(qū)域中的第二數(shù)據(jù)進(jìn)行輸出。[0099]進(jìn)一步的,本實(shí)施例中在輸出第二數(shù)據(jù)之前,可以先按照轉(zhuǎn)發(fā)隊(duì)列中的數(shù)據(jù)標(biāo)識(shí)從相應(yīng)存儲(chǔ)區(qū)域中讀取第二數(shù)據(jù),再將第二數(shù)據(jù)按照預(yù)設(shè)的目標(biāo)格式進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換處理,以得到目標(biāo)格式的第二數(shù)據(jù),之后在將目標(biāo)格式的第二數(shù)據(jù)進(jìn)行輸出,如輸出給相應(yīng)的處理器內(nèi)核,由處理器內(nèi)核將第二數(shù)據(jù)進(jìn)行其他處理,如向外輸出或在內(nèi)部計(jì)算等。[0100]例如,在讀取到第二數(shù)據(jù)之后,先將第二數(shù)據(jù)按照IPSecVPN(InternetProtoSecurityVirtualPrivateNetwork)格式進(jìn)行數(shù)據(jù)轉(zhuǎn)換,進(jìn)而得到IPSecVPN格式的第二數(shù)據(jù),之后,再將第二數(shù)據(jù)進(jìn)行輸出。例如,本實(shí)施例中按照轉(zhuǎn)發(fā)隊(duì)列0中的各個(gè)地址指針,在通信設(shè)備的存儲(chǔ)區(qū)域中讀取到相應(yīng)的第二數(shù)據(jù),之后,將第二數(shù)據(jù)按照IPsecVPN的格式進(jìn)行轉(zhuǎn)換,之后將IPsecVPN格式的第二數(shù)據(jù)輸出給CPUO,CPUO使用第二數(shù)據(jù)進(jìn)行數(shù)據(jù)計(jì)[0101]再如,線程池0在加解密線程0-加解密線程3分別將第二數(shù)據(jù)按照相應(yīng)線程隊(duì)列中的地址指針寫入到存儲(chǔ)區(qū)域之后,生成處理完成消息,以表征轉(zhuǎn)發(fā)隊(duì)列0中的地址指針對(duì)應(yīng)的第一數(shù)據(jù)已經(jīng)完成加密處理或解密處理,進(jìn)而,在按照轉(zhuǎn)發(fā)隊(duì)列0中的地址指針讀取到第二數(shù)據(jù)之后,將第二數(shù)據(jù)按照IPsecVPN的格式進(jìn)行轉(zhuǎn)換,之后將IPsecVPN格式的第二數(shù)據(jù)輸出給CPUO;線程池1在加解密線程0-加解密線程3分別將第二數(shù)據(jù)按照相應(yīng)線程隊(duì)列中的地址指針寫入到存儲(chǔ)區(qū)域之后,生成處理完成消息,以表征轉(zhuǎn)發(fā)隊(duì)列1中的地址指針對(duì)應(yīng)的第一數(shù)據(jù)已經(jīng)完成加密處理或解密處理,進(jìn)而,在按照轉(zhuǎn)發(fā)隊(duì)列1中的地址指針讀取到第二數(shù)據(jù)之后,將第二數(shù)據(jù)按照IPsecVPN的格式進(jìn)行轉(zhuǎn)換,之后將IPsecVPN格式的第二數(shù)據(jù)輸出給CPU1;線程池2在加解密線程0-加解密線程3分別將第二數(shù)據(jù)按照相應(yīng)線程隊(duì)列中的地址指針寫入到存儲(chǔ)區(qū)域之后,生成處理完成消息,以表征轉(zhuǎn)發(fā)隊(duì)列2中的地址指針對(duì)應(yīng)的第一數(shù)據(jù)已經(jīng)完成加密處理或解密處理,進(jìn)而,在按照轉(zhuǎn)發(fā)隊(duì)列2中的地址指針讀取到第二數(shù)據(jù)之后,將第二數(shù)據(jù)按照IPsecVPN的格式進(jìn)行轉(zhuǎn)換,之后將IPsecVPN格式的第二數(shù)據(jù)輸出給CPU2;線程池3在加解密線程0-加解密線程3分別將第二數(shù)據(jù)按照相應(yīng)線程隊(duì)列中的地址指針寫入到存儲(chǔ)區(qū)域之后,生成處理完成消息,以表征轉(zhuǎn)發(fā)隊(duì)列3中的地址指針對(duì)應(yīng)的第一數(shù)據(jù)已經(jīng)完成加密處理或解密處理,進(jìn)而,在按照轉(zhuǎn)發(fā)隊(duì)列3中的地址指針讀取到第二數(shù)據(jù)之后,將第二數(shù)據(jù)按照IPsecVPN的格式進(jìn)行轉(zhuǎn)換,之后將IPsecVPN格式的第二數(shù)[0102]具體實(shí)現(xiàn)中,線程池在通信設(shè)備啟動(dòng)時(shí),基于檢測到的處理器內(nèi)核的數(shù)量創(chuàng)建。也就是說,通信設(shè)備在啟動(dòng)時(shí),通過檢測所包含的處理器內(nèi)核的數(shù)量來創(chuàng)建相應(yīng)數(shù)量的線程池,例如,一個(gè)處理器內(nèi)核對(duì)應(yīng)于一個(gè)線程池,而所有線程池內(nèi)的加解密線程的總量與加密卡中的處理單元的總量相一致。例如,首先按照處理器內(nèi)核的數(shù)量4創(chuàng)建4個(gè)線程池,再按照加密卡中的硬件通道的總數(shù)16,在每個(gè)線程池中創(chuàng)建相應(yīng)的4個(gè)加解密線程,由此,每個(gè)硬件通道對(duì)應(yīng)于一個(gè)加解密線程。[0103]參考圖13,為本申請(qǐng)實(shí)施例提供的一種通信設(shè)備的結(jié)構(gòu)示意圖,該通信設(shè)備中配置有加密卡,加密卡具有多個(gè)處理單元,如圖2中所示,這里的處理單元是指加密卡中的密碼芯片,能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的加解密等處理,所實(shí)現(xiàn)的數(shù)據(jù)處理通道可以稱為加密硬件通道。而且,通信設(shè)備中包含有多個(gè)處理器內(nèi)核,每個(gè)處理器內(nèi)核分別對(duì)應(yīng)有一個(gè)線程池,每個(gè)線程池中包含多個(gè)加解密線程,每個(gè)加解密線程分別對(duì)應(yīng)于加密卡中的一個(gè)處理單元。本實(shí)施例中的技術(shù)方案主要用于在不干擾數(shù)據(jù)包轉(zhuǎn)發(fā)的條件下,實(shí)現(xiàn)加密卡多個(gè)處理單元的性能最大化。[0105]一個(gè)或多個(gè)處理器1301;[0106]存儲(chǔ)器1302,其上存儲(chǔ)有計(jì)算機(jī)程序;[0107]當(dāng)所述計(jì)算機(jī)程序被所述一個(gè)或多個(gè)處理器1301執(zhí)行時(shí),使得所述一個(gè)或多個(gè)處理器實(shí)現(xiàn)如下方法:[0108]在所述通信設(shè)備接收到第一數(shù)據(jù)后,判斷所述第一數(shù)據(jù)是否滿足加解密處理的條[0109]在所述第一數(shù)據(jù)滿足所述加解密處理的條件的情況下,啟動(dòng)所述線程池中的加解密線程,以調(diào)用所述加解密線程對(duì)應(yīng)的處理單元對(duì)所述第一數(shù)據(jù)進(jìn)行第一處理,以得到第二數(shù)據(jù)。[0110]由上述方案可知,本申請(qǐng)實(shí)施例提供的一種通信設(shè)備,在通信設(shè)備中針對(duì)處理器內(nèi)核創(chuàng)建相應(yīng)的加解密線程與加密卡內(nèi)各處理單元相對(duì)應(yīng),基于此,在通信設(shè)備接收到第一數(shù)據(jù)且第一數(shù)據(jù)滿足加解密處理的條件的情況下,啟動(dòng)相應(yīng)的加解密線程以調(diào)用對(duì)應(yīng)的處理單元對(duì)第一數(shù)據(jù)進(jìn)行處理,由此得到第二數(shù)據(jù)??梢?,本實(shí)施例中針對(duì)處理器內(nèi)核創(chuàng)建相應(yīng)的線程,從而無需切換通信設(shè)備中正常網(wǎng)絡(luò)轉(zhuǎn)發(fā)對(duì)應(yīng)的線程來調(diào)用處理單元就可以實(shí)現(xiàn)加解密處理,由此就可以在不干擾數(shù)據(jù)包轉(zhuǎn)發(fā)的條件下,實(shí)現(xiàn)加密卡多個(gè)處理單元的性能最大化。[0111]以通信設(shè)備為設(shè)置有國密加密卡的計(jì)算機(jī)為例,為了提高國密加密卡的國密算法吞吐量,如圖3所示,計(jì)算機(jī)中每一個(gè)CPU(內(nèi)核)綁定一個(gè)轉(zhuǎn)發(fā)進(jìn)程,假設(shè)國密加密通道是16個(gè).每個(gè)CPU就綁定1個(gè)硬件通道,國密加密卡的硬件通道是10Mbps的話.計(jì)算機(jī)總共的國密加解密算法就能達(dá)到160Mbps。[0112]如圖4所示,內(nèi)核中的轉(zhuǎn)發(fā)進(jìn)程根據(jù)每個(gè)CPU對(duì)應(yīng)的硬件通道的個(gè)數(shù),預(yù)先分配對(duì)應(yīng)好的線程(即前文中的加解密線程)的數(shù)量,每個(gè)線程和加密卡的硬件通道一一對(duì)應(yīng),線程默認(rèn)設(shè)置為休眠狀態(tài),轉(zhuǎn)發(fā)進(jìn)程在有加解密事件后(即轉(zhuǎn)發(fā)進(jìn)程接收到待處理的數(shù)據(jù)包后)才開始喚醒線程池中的線程,以進(jìn)行任務(wù)。[0113]如圖14和圖15中所示:當(dāng)數(shù)據(jù)需要進(jìn)行加解密后,轉(zhuǎn)發(fā)進(jìn)程會(huì)使用一個(gè)數(shù)據(jù)隊(duì)列(保序隊(duì)列,即前文中的轉(zhuǎn)發(fā)隊(duì)列)存儲(chǔ)所有數(shù)據(jù)的地址(主要是用來保序使用,因?yàn)檎{(diào)用不同的硬件通道加密,不能保證數(shù)據(jù)先進(jìn)先出,所以轉(zhuǎn)發(fā)進(jìn)程單獨(dú)使用一個(gè)隊(duì)列來保證數(shù)據(jù)的順序),當(dāng)數(shù)據(jù)地址在隊(duì)列中到達(dá)一定數(shù)量的時(shí)候,會(huì)分配到各個(gè)線程上的線程隊(duì)列(工作隊(duì)列),分配完成之后,喚醒線程池所有的線程開始工作,并且轉(zhuǎn)發(fā)進(jìn)程等待所有線程的任務(wù)完成結(jié)果;所有線程依次調(diào)用硬件通道來進(jìn)行加解密,直至所有線程都完成任務(wù),通知轉(zhuǎn)發(fā)進(jìn)程;轉(zhuǎn)發(fā)進(jìn)程得到消息之后根據(jù)保序的隊(duì)列依次取出所有的數(shù)據(jù)進(jìn)行處理。[0114]綜上,本申請(qǐng)實(shí)施例中通過預(yù)先建立CPU的每個(gè)核和加密卡硬件通道的對(duì)應(yīng)關(guān)系,建立好每個(gè)CPU上運(yùn)行的轉(zhuǎn)發(fā)進(jìn)程上的軟件協(xié)程棧(即線程池)和加密硬件通道的對(duì)應(yīng)關(guān)系,建立好轉(zhuǎn)發(fā)進(jìn)程上的數(shù)據(jù)列表(保序使用),分配好轉(zhuǎn)發(fā)進(jìn)程的數(shù)據(jù)與各個(gè)線程的對(duì)應(yīng)關(guān)系,最后分配CPU片調(diào)用線程以達(dá)到調(diào)用加密卡實(shí)現(xiàn)加解密的操作,最后將加解密后的轉(zhuǎn)發(fā)報(bào)文處理完成。由此,本申請(qǐng)所提出的一種使用軟件模擬協(xié)程來提高國密算法吞吐的實(shí)現(xiàn)技術(shù),然后在不干擾正常數(shù)據(jù)包轉(zhuǎn)發(fā)的條件下盡可能的最大化利用國密加密卡多個(gè)加密[0115]本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論