一種報(bào)文回調(diào)方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種報(bào)文回調(diào)方法及裝置,涉及報(bào)文通信領(lǐng)域,能夠?qū)崿F(xiàn)正確地回調(diào)已處理報(bào)文。本發(fā)明的方法主要包括:接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文;從已處理報(bào)文的封裝的頭部信息中獲取其報(bào)文序列號(hào)和緩沖區(qū)描述符BD序列號(hào),其中所述BD序列號(hào)與BD環(huán)的緩存單元一一對(duì)應(yīng);若所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配,則根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)所述已處理報(bào)文。本發(fā)明的實(shí)施例主要用于報(bào)文回調(diào)的過程中。
【專利說明】一種報(bào)文回調(diào)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及報(bào)文通信領(lǐng)域,尤其涉及一種報(bào)文回調(diào)方法及裝置。
【背景技術(shù)】
[0002]在報(bào)文通信系統(tǒng)中,報(bào)文回調(diào)流程通常為:當(dāng)一個(gè)操作流程中報(bào)文需要經(jīng)過特定處理才能進(jìn)行后續(xù)操作時(shí),將待處理的報(bào)文發(fā)送給特定功能模塊進(jìn)行處理,該特定功能模塊再將處理后的報(bào)文發(fā)送回來,以繼續(xù)進(jìn)行該操作流程的后續(xù)操作。例如,在網(wǎng)絡(luò)路由器中,IPSec協(xié)議層的報(bào)文傳送到加解密芯片,加解密芯片對(duì)報(bào)文進(jìn)行加解密后回傳至IPSec協(xié)議層。
[0003]實(shí)際應(yīng)用中,通常采用一個(gè)虛擬的BD (Buffer Description,緩沖區(qū)描述符)環(huán)進(jìn)行報(bào)文的緩存和排序。將BD環(huán)的緩存單元的序列號(hào)信息保存到報(bào)文封裝的頭部信息中,封裝的頭部信息跟隨報(bào)文一起被發(fā)送至報(bào)文處理裝置,在報(bào)文被處理完畢后根據(jù)已處理報(bào)文封裝的頭部信息獲取對(duì)應(yīng)的BD序列號(hào)并查找到對(duì)應(yīng)BD環(huán)的緩存單元上保存的回調(diào)函數(shù),最后根據(jù)回調(diào)函數(shù)將處理后的報(bào)文回傳到正在等待該報(bào)文的報(bào)文接口。但是,由于處理芯片或硬件通道不穩(wěn)定等原因,可能存在報(bào)文丟包的情況,為了充分利用丟包報(bào)文占用的BD環(huán)的緩存單元,就需要識(shí)別是否發(fā)生了報(bào)文丟包。
[0004]現(xiàn)有技術(shù)中,為了能夠及時(shí)識(shí)別報(bào)文丟包,通過判斷回收的BD序列號(hào)是否連續(xù)判斷是否存在丟包的情況。具體的,假設(shè)向處理裝置發(fā)送4個(gè)報(bào)文的順序?qū)?yīng)的BD序列號(hào)為
1、2、3、4,但是處理裝置返回的處理后的報(bào)文對(duì)應(yīng)BD序列號(hào)為1、2、4,在接收到BD序列號(hào)為4的報(bào)文時(shí)則可以判斷BD序列號(hào)為3的報(bào)文已經(jīng)丟失。
[0005]但是,這種判斷報(bào)文丟失的方法僅適用于處理裝置按照接收?qǐng)?bào)文的順序處理報(bào)文。如果處理裝置返回報(bào)文的順序不遵循其接收?qǐng)?bào)文的順序,則會(huì)導(dǎo)致向報(bào)文接口回調(diào)錯(cuò)誤的報(bào)文,造成程序異常。例如,處理裝置返回的報(bào)文的BD序列號(hào)順序?yàn)?、2、4、3,當(dāng)BD序列號(hào)為4的報(bào)文返回時(shí),便確定BD序列號(hào)為3的報(bào)文已經(jīng)丟失,同時(shí)釋放序列號(hào)為3的BD環(huán)的緩存單元。后續(xù)的待處理報(bào)文便可以占用序列號(hào)為3的BD環(huán)的緩存單元,此時(shí)處理裝置返回BD序列號(hào)為3的報(bào)文,默認(rèn)將此報(bào)文按照序列號(hào)為3的BD環(huán)的緩存單元中當(dāng)前存儲(chǔ)的回調(diào)函數(shù)回調(diào)給對(duì)應(yīng)接口,導(dǎo)致回調(diào)的報(bào)文錯(cuò)誤,引起處理異常。
[0006]因此,亟需一種報(bào)文回調(diào)技術(shù)即使報(bào)文亂序的情況下,也能保證正確地回調(diào)已處理報(bào)文。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的實(shí)施例提供一種報(bào)文回調(diào)方法及裝置,能夠?qū)崿F(xiàn)正確地回調(diào)已處理報(bào)文。
[0008]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0009]本發(fā)明的一方面提供一種報(bào)文回調(diào)方法,包括:
[0010]接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文;[0011]從已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和緩沖區(qū)描述符BD序列號(hào),其中所述BD序列號(hào)與BD環(huán)的緩存單兀 對(duì)應(yīng);
[0012]若所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配,則根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)所述已處理報(bào)文。
[0013]本發(fā)明的另一方面,提供一種報(bào)文回調(diào)裝置,包括:
[0014]接收模塊,用于接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文;
[0015]獲取模塊,用于從所述接收模塊接收到的已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和緩沖區(qū)描述符BD序列號(hào),其中所述BD序列號(hào)與BD環(huán)的緩存單兀 對(duì)應(yīng);
[0016]匹配模塊,用于將所述獲取模塊獲取到的報(bào)文序列號(hào)和所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)進(jìn)行匹配;
[0017]回調(diào)模塊,用于當(dāng)所述匹配模塊的匹配結(jié)果表明所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配時(shí),根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)所述已處理報(bào)文。
[0018]本發(fā)明實(shí)施例提供的報(bào)文回調(diào)方法及裝置,從處理裝置返回的已處理報(bào)文的封裝的頭部信息中獲取其報(bào)文序列號(hào)和BD序列號(hào),若獲取的報(bào)文序列號(hào)與BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配,則根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)該已處理報(bào)文,與現(xiàn)有技術(shù)中依據(jù)BD序列號(hào)進(jìn)行回調(diào)相比,由于每個(gè)報(bào)文除了有對(duì)應(yīng)的BD環(huán)的緩存單元外,還有報(bào)文序列號(hào)作為匹配條件,在兩者均確定無誤的情況下才采用該BD環(huán)的緩存單元中的回調(diào)函數(shù)將已處理報(bào)文回調(diào),使得回調(diào)的已處理報(bào)文是該函數(shù)對(duì)應(yīng)的報(bào)文,從而確保正確回調(diào)已處理報(bào)文。
【專利附圖】
【附圖說明】
[0019]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0020]圖1為本發(fā)明實(shí)施例一中的一種報(bào)文回調(diào)方法流程圖;
[0021]圖2為本發(fā)明實(shí)施例二中的一種報(bào)文回調(diào)方法流程圖;
[0022]圖3為本發(fā)明實(shí)施例二中的一種封裝頭部信息后的報(bào)文示意圖;
[0023]圖4為本發(fā)明實(shí)施例二中的一種報(bào)文回調(diào)流程示意圖;
[0024]圖5為本發(fā)明實(shí)施例三中的一種報(bào)文回調(diào)裝置組成示意圖。
【具體實(shí)施方式】
[0025]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0026]本發(fā)明公開的報(bào)文回調(diào)方法及裝置,適用于當(dāng)一個(gè)操作流程中報(bào)文需要經(jīng)過特定處理才能進(jìn)行后續(xù)操作時(shí),將待處理的報(bào)文發(fā)送給特定功能模塊,即報(bào)文處理裝置進(jìn)行處理,該特定功能模塊再將處理后的報(bào)文發(fā)送回來,以繼續(xù)進(jìn)行該操作流程的后續(xù)操作。例如,在網(wǎng)絡(luò)路由器中,IPSec協(xié)議層模塊的報(bào)文傳送到加解密驅(qū)動(dòng)模塊,由加解密驅(qū)動(dòng)模塊發(fā)送到加解密芯片進(jìn)行加解密處理,加解密芯片對(duì)報(bào)文進(jìn)行加解密后發(fā)送到加解密驅(qū)動(dòng)模塊,加解密驅(qū)動(dòng)模塊再回傳至IPSec協(xié)議層模塊。為了本領(lǐng)域技術(shù)人員清楚的理解本發(fā)明的實(shí)現(xiàn)方法,在本說明書中將多處以加解密驅(qū)動(dòng)模塊的處理流程為例進(jìn)行舉例說明,需要說明的是,本發(fā)明的報(bào)文回調(diào)方法及裝置不僅限于加解密處理的場(chǎng)景,還可以應(yīng)用于其他報(bào)文處理的場(chǎng)景,本發(fā)明對(duì)此不做限定。
[0027]實(shí)施例一
[0028]本發(fā)明實(shí)施例提供一種報(bào)文回調(diào)方法,如圖1所示,該方法包括:
[0029]101、接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文。
[0030]其中,報(bào)文在傳輸過程通常會(huì)進(jìn)行頭部信息封裝,在本發(fā)明的實(shí)施例中加解密驅(qū)動(dòng)模塊接收經(jīng)過加解密芯片處理后的報(bào)文,由于之前加解密驅(qū)動(dòng)模塊將報(bào)文序列號(hào)和BD序列號(hào)一起封裝到頭部信息中,當(dāng)然封裝的頭部信息中還可以包含其他與傳輸或處理所需的信息,例如加密的密鑰向量等,本發(fā)明實(shí)施例對(duì)此不做限定。加解密芯片將報(bào)文經(jīng)過加解密處理后,不改變報(bào)文封裝的頭部信息,將處理完成的密文信息替代報(bào)文中原有報(bào)文數(shù)據(jù)區(qū)的明文信息。
[0031]102、從已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和BD序列號(hào),其中所述BD序列號(hào)與BD環(huán)的緩存單兀 對(duì)應(yīng)。
[0032]其中,在步驟101之前未將報(bào)文發(fā)送給報(bào)文處理裝置時(shí),就可以為待處理報(bào)文分配報(bào)文序列號(hào)及未鎖定的BD環(huán)的緩存單元;將所述待處理報(bào)文的回調(diào)函數(shù)和報(bào)文序列號(hào)存儲(chǔ)在所述BD環(huán)的緩存單元中,并鎖定所述BD環(huán)的緩存單元;對(duì)所述待處理報(bào)文進(jìn)行頭部信息的封裝,并發(fā)送給報(bào)文處理裝置,其中所述待處理報(bào)文的封裝的頭部信息中包含所述待處理報(bào)文對(duì)應(yīng)的報(bào)文序列號(hào)和BD序列號(hào)。
[0033]103、若所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配,則根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)所述已處理報(bào)文。
[0034]其中,從封裝的頭部信息中獲取到BD序列號(hào)后可以查找到對(duì)應(yīng)的BD環(huán)的緩存單元,在該BD環(huán)的緩存單元中存儲(chǔ)有一個(gè)報(bào)文序列號(hào),將封裝的頭部信息中獲取的報(bào)文序列號(hào)與BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)進(jìn)行匹配,若匹配則說明當(dāng)前接收到的已處理報(bào)文是該BD環(huán)的緩存單元被鎖定時(shí)所對(duì)應(yīng)的報(bào)文,因此可以調(diào)用鎖定時(shí)在其中存儲(chǔ)的回調(diào)函數(shù),將已處理報(bào)文回調(diào)。
[0035]反之,從封裝的頭部信息中獲取到BD序列號(hào)后必然可以查找到對(duì)應(yīng)的BD環(huán)的緩存單元,但是該BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)與當(dāng)前已處理報(bào)文封裝的頭部信息中獲取的報(bào)文序列號(hào)不匹配,則說明該BD環(huán)的緩存單元也許曾經(jīng)為該報(bào)文鎖定,但是由于時(shí)延或其他原因該BD環(huán)的緩存單元已被其他報(bào)文占用,其中存儲(chǔ)的報(bào)文序列號(hào)和回調(diào)函數(shù)是與其他報(bào)文對(duì)應(yīng)的,而不是當(dāng)前接收到的已處理報(bào)文的,因此不用執(zhí)行回調(diào)函數(shù)對(duì)當(dāng)前已處理報(bào)文進(jìn)行回調(diào)。
[0036]本發(fā)明實(shí)施例提供的報(bào)文回調(diào)方法,從處理裝置返回的已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和BD序列號(hào),若獲取的報(bào)文序列號(hào)與BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配,則根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)該已處理報(bào)文,與現(xiàn)有技術(shù)中依據(jù)BD序列號(hào)進(jìn)行回調(diào)相比,由于每個(gè)報(bào)文除了有對(duì)應(yīng)的BD環(huán)的緩存單元外,還有報(bào)文序列號(hào)作為匹配條件,在兩者均確定無誤的情況下才采用該BD環(huán)的緩存單元中的回調(diào)函數(shù)將已處理報(bào)文回調(diào),使得回調(diào)的已處理報(bào)文是該函數(shù)對(duì)應(yīng)的報(bào)文,從而確保正確回調(diào)已處理報(bào)文。
[0037]實(shí)施例二
[0038]本發(fā)明實(shí)施例提供一種報(bào)文回調(diào)方法,如圖2所示,該方法可以包括:
[0039]201、接收到待處理報(bào)文。
[0040]其中,在一個(gè)處理流程中其中的部分處理環(huán)節(jié)可以交由特定功能的報(bào)文處理裝置代為處理,因此當(dāng)接收到待處理報(bào)文時(shí),需要將待處理報(bào)文發(fā)送給報(bào)文處理裝置,在報(bào)文處理完成后,還需要將處理后的報(bào)文發(fā)送到等待該報(bào)文的接口。例如,在網(wǎng)絡(luò)路由器中,由硬件加解密芯片實(shí)現(xiàn)報(bào)文的加密和解密操作,IPSec協(xié)議層模塊將待加密或待解密的報(bào)文發(fā)送到加解密驅(qū)動(dòng)層,加解密驅(qū)動(dòng)層模塊接收到待加解密的報(bào)文后需要將其封裝頭部信息后發(fā)送給加解密芯片進(jìn)行處理。為了在報(bào)文處理完畢后將處理后的報(bào)文回送給IPSec協(xié)議層,加解密驅(qū)動(dòng)層模塊就需要準(zhǔn)確鎖定其回調(diào)函數(shù)。
[0041]加解密驅(qū)動(dòng)模塊構(gòu)建用于緩存報(bào)文的虛擬BD環(huán),虛擬BD環(huán)的長(zhǎng)度可以自由設(shè)定,設(shè)定的原則是根據(jù)加解密芯片(硬件加密芯片)的處理速率來決定,對(duì)應(yīng)的加密速率越高,建議設(shè)定的BD環(huán)長(zhǎng)度越大。創(chuàng)建完成BD環(huán)過后需要對(duì)每一個(gè)BD緩存單元(即BD緩存結(jié)構(gòu))進(jìn)行初始化,保證每一個(gè)BD緩存單元處于解鎖狀態(tài)供待加解密報(bào)文進(jìn)行緩存,BD緩存單元用于存儲(chǔ)對(duì)應(yīng)緩存報(bào)文回送IPSec協(xié)議層模塊的回調(diào)函數(shù)和回調(diào)參數(shù)。
[0042]當(dāng)IPSec協(xié)議層模塊將待加密報(bào)文送入加解密驅(qū)動(dòng)層模塊時(shí),加解密驅(qū)動(dòng)層模塊需要依次查找BD環(huán)并獲取空閑的BD緩存單元(解鎖狀態(tài))緩存該報(bào)文,然后將BD序列封裝至報(bào)文頭部,并將回調(diào)參數(shù)保存至對(duì)應(yīng)的BD緩存單元中,最后對(duì)該BD緩存單元進(jìn)行鎖定,確保該報(bào)文在加解密完成之前該BD緩存單元不會(huì)被其他報(bào)文占用。
[0043]本實(shí)施例在加解密報(bào)文封裝的頭部信息中加入了除BD序列號(hào)之外的另一個(gè)專屬于本次發(fā)送報(bào)文的序列號(hào),該序列號(hào)在每一個(gè)報(bào)文完成封裝過后進(jìn)行累加,每次累加I即可,目的是保證每一個(gè)加密請(qǐng)求的報(bào)文都有獨(dú)占的特定標(biāo)示符。同時(shí)將該標(biāo)示符也保存至報(bào)文對(duì)應(yīng)的BD緩存單元中去,作為回收?qǐng)?bào)文時(shí)比對(duì)報(bào)文正確性的依據(jù)。
[0044]在本實(shí)施例中,為待處理的報(bào)文分配一個(gè)BD環(huán)的緩存單元用于存儲(chǔ)回調(diào)函數(shù)等信息。本實(shí)施例中的,加解密芯片的作用為報(bào)文處理裝置,本發(fā)明中步驟201-213的執(zhí)行主體為加解密驅(qū)動(dòng)層模塊。
[0045]進(jìn)一步可選的,當(dāng)BD環(huán)的緩存單元充裕時(shí)可以直接分配空閑的資源,但當(dāng)BD環(huán)的緩存單元不充裕時(shí),為了充分利用BD環(huán)中的BD環(huán)的緩存單元,可以采取如步驟202和213的資源回收策略,具體如下。
[0046]202、判斷BD環(huán)中的每個(gè)BD環(huán)的緩存單元是否均已被鎖定;若存在未鎖定的BD環(huán)的緩存單元,則執(zhí)行步驟203 ;若每個(gè)BD環(huán)的緩存單元均被鎖定,則執(zhí)行步驟213。
[0047]需要說明的是,步驟202是可選步驟,當(dāng)BD環(huán)的緩存單元均被鎖定時(shí)回收部分資源,可選的,也可以在每個(gè)緩存單元被鎖定時(shí)記錄其被鎖定的時(shí)間值,當(dāng)被鎖定的時(shí)間超過一定時(shí)長(zhǎng)則解鎖該緩存單元。當(dāng)然,本發(fā)明還可以采用其他回收BD環(huán)的緩存單元的方式,本發(fā)明實(shí)施例對(duì)此不做限定,可以理解的是一旦一個(gè)緩存單元回收,也就意味著該緩存單元中已存儲(chǔ)的之前的報(bào)文序列號(hào)和回調(diào)函數(shù)等信息都被丟棄,對(duì)應(yīng)的之前的報(bào)文將不會(huì)回調(diào),也就被視為丟棄了。
[0048]進(jìn)一步的,為了給報(bào)文處理裝置和傳輸過程提供更多的處理時(shí)間,避免不必要的丟棄報(bào)文,可以延長(zhǎng)等待的時(shí)間。具體的,為待處理報(bào)文分配未鎖定的BD環(huán)的緩存單元的過程還可以包括:若N次判斷表明BD環(huán)中的每個(gè)的緩存單元均被鎖定,則解鎖所述BD環(huán)中第一個(gè)被鎖定的緩存單元;其中N為大于I的整數(shù);將解鎖后的BD環(huán)的緩存單元分配給所述待處理報(bào)文。
[0049]203、為待處理報(bào)文分配報(bào)文序列號(hào)及未鎖定的BD環(huán)的緩存單元。
[0050]其中,所述報(bào)文序列號(hào)的形式本實(shí)施例不做限定,報(bào)文序列號(hào)可以為數(shù)字編號(hào),或者也可以為時(shí)間戳。一個(gè)報(bào)文對(duì)應(yīng)一個(gè)報(bào)文序列號(hào),避免報(bào)文序列號(hào)重復(fù)可以防止在報(bào)文處理后為其匹配錯(cuò)誤的回調(diào)函數(shù)。其中,時(shí)間戳是不重復(fù)的,在為待處理報(bào)文分配報(bào)文序列號(hào)的時(shí)刻的時(shí)間戳作為其序列號(hào),一方面存儲(chǔ)在BD環(huán)的緩存單元中,另一方面也同時(shí)寫入到待處理報(bào)文封裝的頭部信息中。當(dāng)以數(shù)字編號(hào)作為報(bào)文序列號(hào)時(shí),數(shù)字編號(hào)的字節(jié)數(shù)決定其可選的數(shù)字編號(hào)的個(gè)數(shù),通常數(shù)字編號(hào)的字節(jié)數(shù)越多可供分配的數(shù)字編號(hào)個(gè)數(shù)越多,需要較長(zhǎng)時(shí)間及較多報(bào)文才能將遍歷數(shù)字編號(hào)從而翻轉(zhuǎn)到第一個(gè)編號(hào)循環(huán)使用編號(hào)。同時(shí),數(shù)字編號(hào)的字節(jié)數(shù)越長(zhǎng)相應(yīng)的占用空間越多,因此數(shù)字編號(hào)的字節(jié)數(shù)可以根據(jù)實(shí)際需要選擇。例如,預(yù)設(shè)報(bào)文序列號(hào)的位數(shù)為64bit,即8字節(jié),此時(shí)需要若干年才會(huì)面臨序列號(hào)翻轉(zhuǎn),因此可以保證較長(zhǎng)時(shí)間內(nèi)的待處理報(bào)文均分配到唯一的報(bào)文序列號(hào)。
[0051]204、將所述待處理報(bào)文的回調(diào)函數(shù)和報(bào)文序列號(hào)存儲(chǔ)在所述BD環(huán)的緩存單元中。
[0052]其中,報(bào)文序列號(hào)用于匹配處理后的報(bào)文是否為該BD環(huán)的緩存單元中存儲(chǔ)的信息對(duì)應(yīng)的報(bào)文,回調(diào)函數(shù)用于將已處理報(bào)文回送到相應(yīng)接口。
[0053]205、鎖定所述BD環(huán)的緩存單元。
[0054]其中,BD環(huán)中的緩存單元一旦被分配給待處理報(bào)文后,便于該報(bào)文一一對(duì)應(yīng),為了防止該報(bào)文被處理后無法回調(diào),需要將存儲(chǔ)有報(bào)文序列號(hào)和回調(diào)函數(shù)的BD環(huán)的緩存單元鎖定,后續(xù)到來的待處理報(bào)文將不再占用該BD環(huán)的緩存單元。
[0055]206、對(duì)所述待處理報(bào)文進(jìn)行頭部信息的封裝,并發(fā)送給報(bào)文處理裝置,其中所述待處理報(bào)文封裝的頭部信息中包含所述待處理報(bào)文對(duì)應(yīng)的報(bào)文序列號(hào)和BD序列號(hào)。
[0056]其中,封裝的頭部信息包括已分配的BD環(huán)的緩存單元的BD序列號(hào),以及已分配的報(bào)文序列號(hào),當(dāng)然還可以包括處理或傳輸所需的其他封裝的頭部信息,本實(shí)施例對(duì)此不做限定。例如,封裝頭部信息后的待加密報(bào)文可以為如圖3所示的形式,BD序列號(hào)為1,報(bào)文序列號(hào)為2049,其他封裝的頭部信息可以包括加解密所需要的密鑰向量等信息,其中BD序列號(hào)、報(bào)文序列號(hào)以及其他信息的封裝順序本實(shí)施例不做限定。
[0057]207、接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文。
[0058]其中,報(bào)文處理裝置接收到封裝頭部信息后的待處理報(bào)文后,解析出待處理報(bào)文進(jìn)行處理,保持封裝的頭部信息中的BD序列號(hào)和報(bào)文序列號(hào)不變,對(duì)已處理報(bào)文進(jìn)行重新封裝,并返回封裝頭部信息后的已處理報(bào)文。與圖3的類似,報(bào)文處理裝置返回的報(bào)文封裝的頭部信息部分基本不變,只是將待處理報(bào)文替換為已處理報(bào)文。
[0059]208、從已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和BD序列號(hào),其中所述BD序列號(hào)與BD環(huán)的緩存單兀 對(duì)應(yīng)。
[0060]可以理解的是,每個(gè)BD環(huán)的緩存單元都有其對(duì)應(yīng)的BD序列號(hào),根據(jù)從封裝的頭部信息中獲取的BD序列號(hào)可以查找到對(duì)應(yīng)的BD環(huán)的緩存單元。
[0061]209、將所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)進(jìn)行匹配;若匹配成功,則執(zhí)行步驟210 ;若匹配失敗,則執(zhí)行步驟211。
[0062]其中,采用步驟208中獲取的BD序列號(hào)可以查找到對(duì)應(yīng)的BD環(huán)的緩存單元,進(jìn)一步的通過將已處理報(bào)文封裝的頭部信息中的報(bào)文序列號(hào)與BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)進(jìn)行匹配,可以進(jìn)一步確定該BD環(huán)的緩存單元為該報(bào)文鎖定后是否一直未被重寫,從而保證BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)是該報(bào)文對(duì)應(yīng)的回調(diào)函數(shù)。
[0063]210、根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)所述已處理報(bào)文。
[0064]即加解密驅(qū)動(dòng)模塊層模塊在報(bào)文經(jīng)過加解密芯片處理后,將處理后的報(bào)文回送給IPSec協(xié)議層模塊。
[0065]211、解鎖已回調(diào)的報(bào)文對(duì)應(yīng)的所述BD環(huán)的緩存單元。
[0066]212、丟棄所述已處理報(bào)文。
[0067]進(jìn)一步的,為了在BD環(huán)的緩存單元不充足的情況下,有效回收BD環(huán)的緩存單元,可以通過步驟202的判斷結(jié)果確定是否放棄丟失可能性較大的報(bào)文或已經(jīng)丟失的報(bào)文的回調(diào),當(dāng)步驟202判斷表明BD環(huán)的緩存單元環(huán)中的每個(gè)BD環(huán)的緩存單元均被鎖定時(shí),執(zhí)行如下步驟回收丟失可能性較大或已經(jīng)丟失的報(bào)文對(duì)應(yīng)的BD環(huán)的緩存單元:
[0068]213、解鎖所述BD環(huán)的緩存單元環(huán)中第一個(gè)被鎖定的BD環(huán)的緩存單元;然后執(zhí)行步驟203。
[0069]例如,如圖4所示的一種實(shí)際場(chǎng)景舉例,首先,為接收到待處理報(bào)文其報(bào)文序列號(hào)為1,為其分配未鎖定的BD環(huán)的緩存單元BD1,將報(bào)文I的相關(guān)信息存儲(chǔ)在BDl中,并將報(bào)文I發(fā)送給報(bào)文處理裝置。然后,在報(bào)文處理裝置返回處理后的報(bào)文I之前,陸續(xù)接收到多個(gè)報(bào)文并分別分配了 BD環(huán)的緩存單元,導(dǎo)致BD環(huán)中的2048個(gè)緩存單元全部被占用。接下來,在接收到待處理報(bào)文2049時(shí),由于BD環(huán)的緩存單元全部被占滿所以將最先鎖定的BDl解鎖,視為報(bào)文I已處理失敗或丟棄。將報(bào)文2049的相關(guān)信息寫入BDl后鎖定BD1,將報(bào)文2049發(fā)送給報(bào)文處理裝置。此時(shí),如果再接收到處理完成的報(bào)文1,可以查找到對(duì)應(yīng)的BD1,但是BDl中存儲(chǔ)的報(bào)文序列號(hào)此時(shí)為2049而不再是1,因此報(bào)文I被丟棄。而如果接收到處理完成的報(bào)文2049,查找到對(duì)應(yīng)的BDl后,BDl中存儲(chǔ)的報(bào)文序列號(hào)和報(bào)文封裝的頭部信息中的報(bào)文序列號(hào)均為2049,因此可以確定BDl與報(bào)文2049之間的對(duì)應(yīng)關(guān)系無誤,采用BDl中存儲(chǔ)的回調(diào)函數(shù)回調(diào)處理后的報(bào)文2049。最后,解鎖已回調(diào)的報(bào)文2049對(duì)應(yīng)的BDl,以便后續(xù)待處理報(bào)文使用。
[0070]本發(fā)明實(shí)施例提供的報(bào)文回調(diào)方法,從處理裝置返回的已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和BD序列號(hào),若獲取的報(bào)文序列號(hào)與BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配,則根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)該已處理報(bào)文,與現(xiàn)有技術(shù)中依據(jù)BD序列號(hào)進(jìn)行回調(diào)相比,由于每個(gè)報(bào)文除了有對(duì)應(yīng)的BD環(huán)的緩存單元外,還有報(bào)文序列號(hào)作為匹配條件,在兩者均確定無誤的情況下才采用該BD環(huán)的緩存單元中的回調(diào)函數(shù)將已處理報(bào)文回調(diào),使得回調(diào)的已處理報(bào)文是該函數(shù)對(duì)應(yīng)的報(bào)文,從而確保正確回調(diào)已處理報(bào)文。[0071]實(shí)施例三
[0072]本發(fā)明的另一實(shí)施例提供一種報(bào)文回調(diào)裝置,如圖5所示,該裝置可以包括:
[0073]接收模塊51,用于接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文;
[0074]獲取模塊52,用于從所述接收模塊51接收到的已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和緩沖區(qū)描述符BD序列號(hào),其中所述BD序列號(hào)與BD環(huán)的緩存單兀 對(duì)應(yīng);
[0075]匹配模塊53,用于將所述獲取模塊52獲取到的報(bào)文序列號(hào)和所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)進(jìn)行匹配;
[0076]回調(diào)模塊54,用于當(dāng)所述匹配模塊53的匹配結(jié)果表明所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配時(shí),根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)所述已處理報(bào)文。
[0077]可選的,該報(bào)文回調(diào)模塊54還可以用于:當(dāng)所述匹配模塊53的匹配結(jié)果表明所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)不匹配時(shí),丟棄所述已處理報(bào)文。
[0078]在本實(shí)施例中,該報(bào)文回調(diào)裝置還可以包括:
[0079]分配模塊55,用于為待處理報(bào)文分配報(bào)文序列號(hào)及未鎖定的BD環(huán)的緩存單元;
[0080]存儲(chǔ)模塊56,用于將所述待處理報(bào)文的回調(diào)函數(shù)和報(bào)文序列號(hào)存儲(chǔ)在所述分配模塊55分配的BD環(huán)的緩存單元中,并鎖定所述BD環(huán)的緩存單元;
[0081]發(fā)送模塊57,用于對(duì)所述待處理報(bào)文進(jìn)行頭部信息的封裝,并發(fā)送給報(bào)文處理裝置,其中所述待處理報(bào)文封裝的頭部信息中包含所述待處理報(bào)文對(duì)應(yīng)的報(bào)文序列號(hào)和BD序列號(hào)。
[0082]進(jìn)一步可選的,在一種實(shí)現(xiàn)方式中,所述分配模塊55還用于:
[0083]當(dāng)BD環(huán)中的每個(gè)緩存單元均被鎖定時(shí),解鎖所述BD環(huán)中第一個(gè)被鎖定的緩存單元;
[0084]將解鎖后的緩存單元分配給所述待處理報(bào)文。
[0085]進(jìn)一步可選的,在另一種實(shí)現(xiàn)方式中,所述分配模塊55還用于:
[0086]當(dāng)N次判斷表明BD環(huán)中的每個(gè)緩存單元均被鎖定時(shí),解鎖所述BD環(huán)中第一個(gè)被鎖定的緩存單元;其中N為大于I的整數(shù);
[0087]將解鎖后的緩存單元分配給所述待處理報(bào)文。
[0088]進(jìn)一步可選的,所述報(bào)文序列號(hào)可以包括:數(shù)字編號(hào)或時(shí)間戳。
[0089]本發(fā)明實(shí)施例提供的報(bào)文回調(diào)裝置,從處理裝置返回的已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和BD序列號(hào),若獲取的報(bào)文序列號(hào)與BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配,則根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)該已處理報(bào)文,與現(xiàn)有技術(shù)中依據(jù)BD序列號(hào)進(jìn)行回調(diào)相比,由于每個(gè)報(bào)文除了有對(duì)應(yīng)的BD環(huán)的緩存單元外,還有報(bào)文序列號(hào)作為匹配條件,在兩者均確定無誤的情況下才采用該BD環(huán)的緩存單元中的回調(diào)函數(shù)將已處理報(bào)文回調(diào),使得回調(diào)的已處理報(bào)文是該函數(shù)對(duì)應(yīng)的報(bào)文,從而確保正確回調(diào)已處理報(bào)文。
[0090]通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤,硬盤或光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0091]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種報(bào)文回調(diào)方法,其特征在于,包括: 接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文; 從已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和緩沖區(qū)描述符BD序列號(hào),其中所述BD序列號(hào)與BD環(huán)的緩存單兀對(duì)應(yīng); 若所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配,則根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)所述已處理報(bào)文,否則丟棄所述已處理報(bào)文。
2.根據(jù)權(quán)利要求1所述的報(bào)文回調(diào)方法,其特征在于,在所述接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文之前,還包括: 為待處理報(bào)文分配報(bào)文序列號(hào)及未鎖定的BD環(huán)的緩存單元; 將所述待處理報(bào)文的回調(diào)函數(shù)和報(bào)文序列號(hào)存儲(chǔ)在所述BD環(huán)的緩存單元中,并鎖定所述BD環(huán)的緩存單元; 對(duì)所述待處理報(bào)文進(jìn)行頭部信息的封裝,并發(fā)送給報(bào)文處理裝置,其中所述待處理報(bào)文封裝的頭部信息中包含所述待處理報(bào)文對(duì)應(yīng)的報(bào)文序列號(hào)和BD序列號(hào)。
3.根據(jù)權(quán)利要求2所述的報(bào)文回調(diào)方法,其特征在于,所述為待處理報(bào)文分配未鎖定的BD環(huán)的緩存單元,包括: 若BD環(huán)中的每個(gè)緩存單元均被鎖定,則解鎖所述BD環(huán)中第一個(gè)被鎖定的緩存單元; 將解鎖后的BD環(huán)的緩存單元分配給所述待處理報(bào)文。
4.根據(jù)權(quán)利要求2所述的報(bào)文回調(diào)方法,其特征在于,所述為待處理報(bào)文分配未鎖定的BD環(huán)的緩存單元,包括: 若N次判斷表明BD環(huán)的緩存單元環(huán)中的每個(gè)緩存單元均被鎖定,則解鎖所述BD環(huán)中第一個(gè)被鎖定的緩存單元;其中N為大于I的整數(shù); 將解鎖后的BD環(huán)的緩存單元分配給所述待處理報(bào)文。
5.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的報(bào)文回調(diào)方法,其特征在于,所述報(bào)文序列號(hào)包括:數(shù)字編號(hào)或時(shí)間戳。
6.一種報(bào)文回調(diào)裝置,其特征在于,包括: 接收模塊,用于接收?qǐng)?bào)文處理裝置發(fā)送的封裝頭部信息后的已處理報(bào)文; 獲取模塊,用于從所述接收模塊接收到的已處理報(bào)文封裝的頭部信息中獲取其報(bào)文序列號(hào)和緩沖區(qū)描述符BD序列號(hào),其中所述BD序列號(hào)與BD環(huán)的緩存單兀對(duì)應(yīng); 匹配模塊,用于將所述獲取模塊獲取到的報(bào)文序列號(hào)和所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)進(jìn)行匹配;如果匹配結(jié)果表明所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配時(shí),通知回調(diào)模塊,否則丟棄所述已處理報(bào)文; 回調(diào)模塊,用于當(dāng)所述匹配模塊的匹配結(jié)果表明所述封裝的頭部信息中獲取的報(bào)文序列號(hào)與所述BD環(huán)的緩存單元中存儲(chǔ)的報(bào)文序列號(hào)匹配時(shí),根據(jù)所述BD環(huán)的緩存單元中存儲(chǔ)的回調(diào)函數(shù)回調(diào)所述已處理報(bào)文。
7.根據(jù)權(quán)利要求6所述的報(bào)文回調(diào)裝置,其特征在于,還包括: 分配模塊,用于為待處理報(bào)文分配報(bào)文序列號(hào)及未鎖定的BD環(huán)的緩存單元; 存儲(chǔ)模塊,用于將所述待處理報(bào)文的回調(diào)函數(shù)和報(bào)文序列號(hào)存儲(chǔ)在所述分配模塊分配的BD環(huán)的緩存單元中,并鎖定所述BD環(huán)的緩存單元; 發(fā)送模塊,用于對(duì)所述待處理報(bào)文進(jìn)行頭部信息的封裝,并發(fā)送給報(bào)文處理裝置,其中所述待處理報(bào)文封裝的頭部信息中包含所述待處理報(bào)文對(duì)應(yīng)的報(bào)文序列號(hào)和BD序列號(hào)。
8.根據(jù)權(quán)利要求7所述的報(bào)文回調(diào)裝置,其特征在于,所述分配模塊還用于: 當(dāng)BD環(huán)中的每個(gè)緩存單元均被鎖定時(shí),解鎖所述BD環(huán)中第一個(gè)被鎖定的緩存單元; 將解鎖后的BD環(huán)的緩存單元分配給所述待處理報(bào)文。
9.根據(jù)權(quán)利要求7所述的報(bào)文回調(diào)裝置,其特征在于,所述分配模塊還用于: 當(dāng)N次判斷表明BD環(huán)中的每個(gè)緩存單元均被鎖定時(shí),解鎖所述BD環(huán)中第一個(gè)被鎖定的緩存單元;其中N為大于I的整數(shù); 將解鎖后的BD環(huán)的緩存單元分配給所述待處理報(bào)文。
10.根據(jù)權(quán)利要求6-10中任一項(xiàng)所述的報(bào)文回調(diào)裝置,其特征在于,所述報(bào)文序列號(hào)包括:數(shù)字編號(hào)或時(shí)間戳 。
【文檔編號(hào)】H04L29/06GK103532965SQ201310500918
【公開日】2014年1月22日 申請(qǐng)日期:2013年10月22日 優(yōu)先權(quán)日:2013年10月22日
【發(fā)明者】楊大川 申請(qǐng)人:邁普通信技術(shù)股份有限公司