一種用于網(wǎng)絡(luò)數(shù)據(jù)流識別的協(xié)議特征庫維護(hù)使用方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信網(wǎng)絡(luò)流量識別領(lǐng)域,更具體的,本發(fā)明涉及一種協(xié)議特征庫的維 護(hù)使用方法。
【背景技術(shù)】
[0002] 伴隨著網(wǎng)絡(luò)流量的暴增,新的網(wǎng)絡(luò)業(yè)務(wù)類型層出不窮,為了掌握通信網(wǎng)絡(luò)的業(yè)務(wù) 流量分布和用戶對各種業(yè)務(wù)的使用情況,從而更好地發(fā)現(xiàn)促進(jìn)業(yè)務(wù)發(fā)展和影響網(wǎng)絡(luò)正常運(yùn) 營的因素,必須首先對通信網(wǎng)絡(luò)中的數(shù)據(jù)流量進(jìn)行有效的識別。
[0003] DPI (De印Packet Inspection)深度包檢測技術(shù)是當(dāng)前流量識別的主流技術(shù)。DPI 是一種基于應(yīng)用層的流量檢測技術(shù),通過識別報(bào)文負(fù)載中的特征字段來捕捉相應(yīng)的業(yè)務(wù)流 量。該方法使用一個協(xié)議特征庫存儲網(wǎng)絡(luò)數(shù)據(jù)流特征信息,以網(wǎng)絡(luò)流為單位進(jìn)行判定,將網(wǎng) 絡(luò)數(shù)據(jù)流與協(xié)議特征庫進(jìn)行匹配,其負(fù)載包含某個應(yīng)用的特征字段,則判定該網(wǎng)絡(luò)流屬于 這個應(yīng)用。
[0004] 協(xié)議特征庫是網(wǎng)絡(luò)中協(xié)議特征規(guī)范化描述的集合,對于每個協(xié)議都有多條規(guī)則組 成,一條規(guī)則可以確定一個協(xié)議,而每條規(guī)則又由幾個特征簽名組成。協(xié)議特征庫中包含 P2P類軟件、IM軟件、VoIP類軟件、視頻類軟件、炒股類軟件、下載以及游戲類等常用軟件特 征。協(xié)議特征庫需要不斷的更新升級,根據(jù)應(yīng)用流量的變化而經(jīng)常變化,否則就會識別失 敗。
[0005] 面對日趨復(fù)雜的協(xié)議特征庫文件情況,如何有效地組織應(yīng)用協(xié)議特征庫提高通信 網(wǎng)絡(luò)中的數(shù)據(jù)流量識別效率顯得十分重要。但目前尚未有相關(guān)技術(shù)方案出現(xiàn)。
【發(fā)明內(nèi)容】
[0006] 為了適應(yīng)多種多樣的協(xié)議特征,同時便于提取各個種類的協(xié)議,以滿足針對特定 協(xié)議類型識別的要求,本發(fā)明提出了一種用于網(wǎng)絡(luò)數(shù)據(jù)流識別的協(xié)議特征庫維護(hù)使用方 法。
[0007] 本發(fā)明技術(shù)方案提供一種用于網(wǎng)絡(luò)數(shù)據(jù)流識別的協(xié)議特征庫維護(hù)使用方法,利用 Lua語言描述協(xié)議特征庫,業(yè)務(wù)識別系統(tǒng)的業(yè)務(wù)線程獲取網(wǎng)絡(luò)數(shù)據(jù)包,識別網(wǎng)絡(luò)數(shù)據(jù)流量, 所述業(yè)務(wù)線程包括業(yè)務(wù)線程〇和其他業(yè)務(wù)線程;協(xié)議特征庫支持兩個實(shí)例,分別記為特征 庫實(shí)例〇和特征庫實(shí)例1,每個業(yè)務(wù)線程保持一個特征庫實(shí)例的句柄;業(yè)務(wù)線程特征匹配 時,使用對應(yīng)的特征庫實(shí)例進(jìn)行匹配;
[0008] 系統(tǒng)進(jìn)程的處理方式如下,
[0009] 首先,系統(tǒng)進(jìn)程啟動并加載協(xié)議特征庫,同時保存協(xié)議特征庫的修改時間;每個業(yè) 務(wù)線程都使用特征庫實(shí)例0,特征庫實(shí)例1空閑;業(yè)務(wù)線程0維護(hù)一個數(shù)值con Sist_num,標(biāo) 識當(dāng)前和業(yè)務(wù)線程〇使用相同特征庫實(shí)例的線程數(shù)目,啟動時conSist_num為業(yè)務(wù)線程總 數(shù)目;
[0010] 然后,系統(tǒng)進(jìn)程注冊SIGHUP信號處理程序,啟動所有業(yè)務(wù)線程,其中SIGHUP是自 定義的信號名稱,用于在協(xié)議特征庫更新后通知重新加載協(xié)議特征庫;
[0011] SIGHUP信號處理程序捕獲到SIGHUP信號后,設(shè)置g_reload_cfg_flag標(biāo)志,其中 g_reload_cfg_flag是自定義的標(biāo)志名稱,用于標(biāo)識是否重新加載協(xié)議特征庫;
[0012] 業(yè)務(wù)線程周期性的進(jìn)行心跳檢查,
[0013] 在業(yè)務(wù)線程0心跳檢查時,若g_reload_cfg_flag標(biāo)志被設(shè)置并且協(xié)議特征庫的 修改時間與保存的不一樣,而且con Sist_num等于業(yè)務(wù)線程總數(shù)目,則進(jìn)行如下操作,
[0014] 更新協(xié)議特征庫修改時間;設(shè)置consist_num為1 ;重新加載協(xié)議特征庫到空閑的 特征庫實(shí)例中;將業(yè)務(wù)線程〇的特征庫句柄切換到空閑的特征庫實(shí)例;通知其他業(yè)務(wù)線程 重新加載協(xié)議特征庫,包括發(fā)出"重新加載特征庫消息";
[0015] 其它業(yè)務(wù)線程心跳檢查時不做處理,收到"重新加載特征庫消息"后,才將特征庫 句柄切換到空閑的特征庫實(shí)例,并通知業(yè)務(wù)線程0 "特征庫重新加載完畢";
[0016] 業(yè)務(wù)線程0收到其它業(yè)務(wù)線程發(fā)送來的"特征庫重新加載完畢"的消息后,累加 consist_num,當(dāng)consist_num等于業(yè)務(wù)線程數(shù)目時,所有的業(yè)務(wù)線程都已經(jīng)切換到新的協(xié) 議特征庫了,此時業(yè)務(wù)線程〇釋放空閑的特征庫實(shí)例;重新加載協(xié)議特征庫完成,其它線程 將網(wǎng)絡(luò)數(shù)據(jù)流與協(xié)議特征庫進(jìn)行匹配,判定該網(wǎng)絡(luò)流所屬的協(xié)議類型。
[0017] 而且,協(xié)議特征庫的字段包含name、id、grp和rules,name為協(xié)議名稱,id為協(xié)議 ID,grp為協(xié)議所屬協(xié)議組,rules為特征匹配規(guī)則。
[0018] 而且,遍歷協(xié)議特征庫中的每一個協(xié)議,讀取協(xié)議特征庫的字段grp,根據(jù)獲取的 grp判斷所屬的協(xié)議組,根據(jù)協(xié)議所屬的協(xié)議組統(tǒng)計(jì)各組的協(xié)議個數(shù),輸出指定協(xié)議組類型 的所有協(xié)議形成獨(dú)立的特征庫文件,用于指定類別協(xié)議的識別。
[0019] 而且,所述特征匹配規(guī)則由12種表達(dá)式組成,描述如下,
[0020]
【主權(quán)項(xiàng)】
1. 一種用于網(wǎng)絡(luò)數(shù)據(jù)流識別的協(xié)議特征庫維護(hù)使用方法,其特征在于:利用Lua語言 描述協(xié)議特征庫,業(yè)務(wù)識別系統(tǒng)的業(yè)務(wù)線程獲取網(wǎng)絡(luò)數(shù)據(jù)包,識別網(wǎng)絡(luò)數(shù)據(jù)流量,所述業(yè)務(wù) 線程包括業(yè)務(wù)線程0和其他業(yè)務(wù)線程;協(xié)議特征庫支持兩個實(shí)例,分別記為特征庫實(shí)例0和 特征庫實(shí)例1,每個業(yè)務(wù)線程保持一個特征庫實(shí)例的句柄;業(yè)務(wù)線程特征匹配時,使用對應(yīng) 的特征庫實(shí)例進(jìn)行匹配; 系統(tǒng)進(jìn)程的處理方式如下, 首先,系統(tǒng)進(jìn)程啟動并加載協(xié)議特征庫,同時保存協(xié)議特征庫的修改時間;每個業(yè)務(wù)線 程都使用特征庫實(shí)例〇,特征庫實(shí)例1空閑;業(yè)務(wù)線程〇維護(hù)一個數(shù)值conSist_num,標(biāo)識 當(dāng)前和業(yè)務(wù)線程〇使用相同特征庫實(shí)例的線程數(shù)目,啟動時conSist_num為業(yè)務(wù)線程總數(shù) 目; 然后,系統(tǒng)進(jìn)程注冊SIGHUP信號處理程序,啟動所有業(yè)務(wù)線程,其中SIGHUP是自定義 的信號名稱,用于在協(xié)議特征庫更新后通知重新加載協(xié)議特征庫; SIGHUP信號處理程序捕獲到SIGHUP信號后,設(shè)置g_rel〇ad_cfg_flag標(biāo)志,其中g(shù)_reload_cfg_flag是自定義的標(biāo)志名稱,用于標(biāo)識是否重新加載協(xié)議特征庫; 業(yè)務(wù)線程周期性的進(jìn)行心跳檢查, 在業(yè)務(wù)線程〇心跳檢查時,若g_reload_cfg_flag標(biāo)志被設(shè)置并且協(xié)議特征庫的修改 時間與保存的不一樣,而且conSist_num等于業(yè)務(wù)線程總數(shù)目,則進(jìn)行如下操作, 更新協(xié)議特征庫修改時間;設(shè)置consist_num為1 ;重新加載協(xié)議特征庫到空閑的特征 庫實(shí)例中;將業(yè)務(wù)線程〇的特征庫句柄切換到空閑的特征庫實(shí)例;通知其他業(yè)務(wù)線程重新 加載協(xié)議特征庫,包括發(fā)出"重新加載特征庫消息"; 其它業(yè)務(wù)線程心跳檢查時不做處理,收到"重新加載特征庫消息"后,才將特征庫句柄 切換到空閑的特征庫實(shí)例,并通知業(yè)務(wù)線程0 "特征庫重新加載完畢"; 業(yè)務(wù)線程0收到其它業(yè)務(wù)線程發(fā)送來的"特征庫重新加載完畢"的消息后,累加consist_num,當(dāng)consist_num等于業(yè)務(wù)線程數(shù)目時,所有的業(yè)務(wù)線程都已經(jīng)切換到新的協(xié) 議特征庫了,此時業(yè)務(wù)線程〇釋放空閑的特征庫實(shí)例;重新加載協(xié)議特征庫完成,其它線程 將網(wǎng)絡(luò)數(shù)據(jù)流與協(xié)議特征庫進(jìn)行匹配,判定該網(wǎng)絡(luò)流所屬的協(xié)議類型。
2. 根據(jù)權(quán)利要求1所述用于網(wǎng)絡(luò)數(shù)據(jù)流識別的協(xié)議特征庫維護(hù)使用方法,其特征在 于:協(xié)議特征庫的字段包含name、id、grp和rules,name為協(xié)議名稱,id為協(xié)議ID,grp為 協(xié)議所屬協(xié)議組,rules為特征匹配規(guī)則。
3. 根據(jù)權(quán)利要求2所述用于網(wǎng)絡(luò)數(shù)據(jù)流識別的協(xié)議特征庫維護(hù)使用方法,其特征在 于:遍歷協(xié)議特征庫中的每一個協(xié)議,讀取協(xié)議特征庫的字段grp,根據(jù)獲取的grp判斷所 屬的協(xié)議組,根據(jù)協(xié)議所屬的協(xié)議組統(tǒng)計(jì)各組的協(xié)議個數(shù),輸出指定協(xié)議組類型的所有協(xié) 議形成獨(dú)立的特征庫文件,用于指定類別協(xié)議的識別。
4. 根據(jù)權(quán)利要求2所述用于網(wǎng)絡(luò)數(shù)據(jù)流識別的協(xié)議特征庫維護(hù)使用方法,其特征在 于:所述特征匹配規(guī)則由12種表達(dá)式組成,描述如下,
其中,off指特征的位置,width指特征由幾個字節(jié)組成,diff指特征與實(shí)際長度的差 值,endian指特征的字節(jié)序,data指序列的數(shù)據(jù)。
【專利摘要】一種用于網(wǎng)絡(luò)數(shù)據(jù)流識別的協(xié)議特征庫維護(hù)使用方法,其特征在于:利用Lua語言描述協(xié)議特征庫,業(yè)務(wù)識別系統(tǒng)的業(yè)務(wù)線程獲取網(wǎng)絡(luò)數(shù)據(jù)包,識別網(wǎng)絡(luò)數(shù)據(jù)流量,所述業(yè)務(wù)線程包括業(yè)務(wù)線程0和其他業(yè)務(wù)線程;協(xié)議特征庫支持兩個實(shí)例,分別記為特征庫實(shí)例0和特征庫實(shí)例1,每個業(yè)務(wù)線程保持個特征庫實(shí)例的句柄;業(yè)務(wù)線程特征匹配時,使用對應(yīng)的特征庫實(shí)例進(jìn)行匹配;協(xié)議特征庫更新時,利用信號通知方式重新加載協(xié)議特征庫。本發(fā)明利用運(yùn)行時動態(tài)加載的方式實(shí)現(xiàn)應(yīng)用協(xié)議特征庫的升級,對于日益增多和變化的應(yīng)用協(xié)議可以基本做到實(shí)時跟進(jìn),從而達(dá)到對各種應(yīng)用協(xié)議的準(zhǔn)確判斷。
【IPC分類】H04L12-24
【公開號】CN104579795
【申請?zhí)枴緾N201510043030
【發(fā)明人】陳丹, 李磊, 肖偉明, 余道敏, 陳亮
【申請人】武漢虹信技術(shù)服務(wù)有限責(zé)任公司
【公開日】2015年4月29日
【申請日】2015年1月28日