朱曉嵐宋力劉遇哲
(河北遠(yuǎn)東通信系統(tǒng)工程有限公司,河北石家莊050000)
基于DPI識(shí)別的應(yīng)用流量誤差研究
朱曉嵐宋力劉遇哲
(河北遠(yuǎn)東通信系統(tǒng)工程有限公司,河北石家莊050000)
深度數(shù)據(jù)包檢測(cè)應(yīng)用識(shí)別測(cè)試過(guò)程中發(fā)現(xiàn)某些按照知識(shí)庫(kù)可被識(shí)別為應(yīng)用的流量識(shí)別不全,應(yīng)用流量統(tǒng)計(jì)結(jié)果與真實(shí)流量存在差距。如何準(zhǔn)確統(tǒng)計(jì)應(yīng)用的流量,是一個(gè)值得思考的問(wèn)題。針對(duì)應(yīng)用流量識(shí)別不全問(wèn)題,研究了3種解決方案:查找應(yīng)用會(huì)話中所有報(bào)文的共同字符、在規(guī)則中加入peer學(xué)習(xí)和記錄識(shí)別為應(yīng)用會(huì)話的IP和端口號(hào)、會(huì)話老化機(jī)制。通過(guò)對(duì)3種方法的實(shí)驗(yàn)對(duì)比,最優(yōu)的解決方案是采用會(huì)話老化機(jī)制,輔助采用peer學(xué)習(xí)和查找會(huì)話中所有報(bào)文的共同特征。
流量識(shí)別網(wǎng)絡(luò)協(xié)議識(shí)別流量與真實(shí)流量差距會(huì)話老化peer學(xué)習(xí)報(bào)文共同字符
隨著網(wǎng)絡(luò)資源的不斷增多,合理使用網(wǎng)絡(luò)資源成為人們不可避免的問(wèn)題[1],深度數(shù)據(jù)包檢測(cè)(Deep Packet Inspection, DPI)技術(shù)適應(yīng)了當(dāng)前網(wǎng)絡(luò)急速增長(zhǎng),并且是解決當(dāng)前網(wǎng)絡(luò)威脅的有效途徑,網(wǎng)絡(luò)應(yīng)用的識(shí)別率成為DPI的一個(gè)重要指標(biāo),DPI識(shí)別主要是提取報(bào)文載荷部分的特征[2-4]。在特征匹配中是以會(huì)話的形式對(duì)報(bào)文處理[5-6],匹配完成之后對(duì)該會(huì)話的流量進(jìn)行統(tǒng)計(jì),流量統(tǒng)計(jì)的準(zhǔn)確性與定義的會(huì)話起始與會(huì)話終止直接相關(guān),下面介紹的對(duì)會(huì)話老化的解決方案中會(huì)話終止時(shí)間的定義是決定會(huì)話流量統(tǒng)計(jì)準(zhǔn)確與否的關(guān)鍵。
DPI程序處理中,設(shè)備接收到報(bào)文,具有相同五元組的報(bào)文以會(huì)話形式進(jìn)行應(yīng)用識(shí)別及流量統(tǒng)計(jì)[7]。DPI程序?qū)?huì)話前5個(gè)有載荷報(bào)文進(jìn)行識(shí)別,通過(guò)數(shù)據(jù)鏈路層判斷是否為IP協(xié)議,如果為IP協(xié)議進(jìn)一步進(jìn)行上層識(shí)別;如果為非IP協(xié)議,標(biāo)記為非IP協(xié)議,之后報(bào)文不再進(jìn)行識(shí)別處理。屬于IP層的會(huì)話進(jìn)行識(shí)別標(biāo)記,并進(jìn)入到IP層協(xié)議識(shí)別,并對(duì)IP層協(xié)議進(jìn)行協(xié)議標(biāo)記。之后進(jìn)行四層協(xié)議識(shí)別,如果會(huì)話能識(shí)別為四層協(xié)議,則更新識(shí)別標(biāo)記,最后進(jìn)入應(yīng)用層識(shí)別,如果應(yīng)用層可以識(shí)別,則再次更新識(shí)別標(biāo)記,會(huì)話的識(shí)別標(biāo)記以最高層識(shí)別結(jié)果作為最后識(shí)別結(jié)。識(shí)別結(jié)束之后進(jìn)入審計(jì),審計(jì)模塊對(duì)具有相同應(yīng)用標(biāo)記的會(huì)話進(jìn)行流量統(tǒng)計(jì),不再對(duì)會(huì)話進(jìn)行應(yīng)用識(shí)別,只進(jìn)行流量識(shí)別。
DPI測(cè)試中通過(guò)設(shè)備統(tǒng)計(jì)應(yīng)用流量與wireshark工具統(tǒng)計(jì)的應(yīng)用流量存在一定差距,為了分析查找原因,查看應(yīng)用會(huì)話,并與知識(shí)庫(kù)中的特征對(duì)比,發(fā)現(xiàn)該應(yīng)用會(huì)話符合知識(shí)庫(kù)中特征及規(guī)則的定義,排除了知識(shí)庫(kù)中特征的輸入錯(cuò)誤原因;為了更進(jìn)一步調(diào)試錯(cuò)誤原因,將程序識(shí)別情況進(jìn)行打印,在打印信息中發(fā)現(xiàn)應(yīng)用的會(huì)話最初是可正確識(shí)別,但是之后該會(huì)話又被識(shí)別為四層協(xié)議。經(jīng)對(duì)程序處理流程進(jìn)行思考,儀器統(tǒng)計(jì)的流量與wireshark流量存在差距原因?yàn)榫哂刑卣鞯膱?bào)文處于會(huì)話的前5個(gè)報(bào)文,待會(huì)話識(shí)別之后對(duì)識(shí)別標(biāo)記位置位。過(guò)一段時(shí)間接收到的屬于該會(huì)話的報(bào)文再一次進(jìn)行了DPI識(shí)別,按照程序的審計(jì),這些報(bào)文應(yīng)該直接進(jìn)入審計(jì),統(tǒng)計(jì)會(huì)話的流量。但通過(guò)打印信息看被識(shí)別的會(huì)話后面的報(bào)文被當(dāng)成新的會(huì)話處理,新的會(huì)話進(jìn)入程序會(huì)先進(jìn)行DPI識(shí)別,在DPI識(shí)別中這些被當(dāng)做新會(huì)話的報(bào)文已不具有特征,因此只能被識(shí)別為協(xié)議,這種現(xiàn)象原因?yàn)闀?huì)話老化,下文主要采用了3種機(jī)制對(duì)抗會(huì)話老化。
因會(huì)話老化導(dǎo)致的的會(huì)話流量與實(shí)際流量差距的解決方法有3種,查找應(yīng)用會(huì)話中所有報(bào)文的共同特征;加入peer學(xué)習(xí);利用TCP和UDP協(xié)議本身的機(jī)制。
4.1 查找應(yīng)用會(huì)話中所有報(bào)文的共同特征
為了解決被識(shí)別的會(huì)話因某些原因之后的報(bào)文再次進(jìn)入DPI識(shí)別之后被識(shí)別為協(xié)議,從會(huì)話所有報(bào)文中提取共同的特征[8-11],這樣即便被識(shí)別的會(huì)話中后面的報(bào)文被處理為新會(huì)話時(shí),進(jìn)入DPI識(shí)別模塊,報(bào)文因仍然具有應(yīng)用的特征,可被識(shí)別為應(yīng)用,因此會(huì)話的流量可被正確統(tǒng)計(jì)。該方法的的優(yōu)勢(shì)為不需要考慮如何定義會(huì)話的建立和會(huì)話的結(jié)束,流量統(tǒng)計(jì)準(zhǔn)確。缺點(diǎn)為并不是所有應(yīng)用的特征在會(huì)話的所有的報(bào)文中都有,即便是特征貫穿會(huì)話始終,提取出來(lái)的特征一般比較弱,很容易造成誤識(shí)別。這種方法不具有普遍性,并且提取特征比較繁瑣。以局域網(wǎng)聊天事業(yè)線應(yīng)用為例,將所有報(bào)文的共同特征字符添加入特征庫(kù)前后實(shí)驗(yàn)結(jié)果對(duì)比,如表1所示。
表1 共同特征字符添加入特征庫(kù)前后對(duì)比表
4.2 加入peer學(xué)習(xí)
在DPI識(shí)別模塊中peer學(xué)習(xí)的優(yōu)先級(jí)最高,peer學(xué)習(xí)機(jī)制中將IP和port綁定,并對(duì)其應(yīng)用標(biāo)記,綁定之后出現(xiàn)該peer就認(rèn)為具有該IP和端口的會(huì)話為應(yīng)用標(biāo)記位標(biāo)記的應(yīng)用。為了避免被識(shí)別的會(huì)話后面的報(bào)文被當(dāng)做新的會(huì)話再次進(jìn)行識(shí)別,加入peer學(xué)習(xí)機(jī)制,加入peer學(xué)習(xí)之后將指定端的IP和端口號(hào)記錄,之后的一個(gè)小時(shí)內(nèi)只要含有這個(gè)IP和端口號(hào)的報(bào)文都被認(rèn)為屬于該應(yīng)用。通過(guò)peer學(xué)習(xí)之后在測(cè)試應(yīng)用流量可準(zhǔn)確識(shí)別,該方法優(yōu)點(diǎn)比第一種方法節(jié)省了查找全部報(bào)文的共同特征的工作量,簡(jiǎn)單快捷,但是該方法存在的弊端為在peer被老化之前,只要存在該peer的會(huì)話都被認(rèn)為是被標(biāo)記的應(yīng)用,如果其他應(yīng)用也使用了該IP和端口則造成的誤識(shí)別是很嚴(yán)重的,記錄的IP和端口號(hào)對(duì)也會(huì)占用系統(tǒng)內(nèi)存。以局域網(wǎng)聊天事業(yè)線應(yīng)用為例,將peer學(xué)習(xí)加入特征庫(kù)前后實(shí)驗(yàn)結(jié)果對(duì)比,如下面表2所示。
表2 將peer學(xué)習(xí)加入特征庫(kù)前后對(duì)比表
4.3 利用TCP建立連接機(jī)制及UDP會(huì)話的連接特點(diǎn)
TCP是基于連接的協(xié)議,在正式收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的連接。一個(gè)TCP連接必須要經(jīng)過(guò)3次“對(duì)話”才能建立起來(lái),數(shù)據(jù)傳輸結(jié)束之后,結(jié)束時(shí)雙方需要終止連接。會(huì)話結(jié)束時(shí)應(yīng)用程序首先發(fā)送FIN給服務(wù)器,服務(wù)器收到FIN報(bào)文之后發(fā)送ACK報(bào)文,之后發(fā)送FIN報(bào)文,客戶端收到FIN報(bào)文之后進(jìn)入TIME_WAIT狀態(tài),最終向服務(wù)器發(fā)送ACK報(bào)文[12]。
RFC文檔中關(guān)于TCP關(guān)閉之后的等待時(shí)間規(guī)定如下:當(dāng)TCP執(zhí)行一個(gè)主動(dòng)關(guān)閉,并發(fā)回最后一個(gè)ACK,該連接必須在TIME_WAIT狀態(tài)(TCP發(fā)起終止連接以后收到最后一個(gè)FIN報(bào)文時(shí)的狀態(tài))停留的時(shí)間為2倍的MSL(報(bào)文段最大生存時(shí)間),超過(guò)2MSL時(shí)間之后系統(tǒng)也會(huì)自動(dòng)關(guān)閉。這樣可讓TCP再次發(fā)送最后ACK以防這個(gè)ACK丟失,這種2MSL等待的另一個(gè)結(jié)果是這個(gè)TCP連接在2MSL等待期間,定義這個(gè)連接的插口(客戶的IP地址和端口號(hào),服務(wù)器的IP地址和端口號(hào))不能再被使用。在連接處于2MSL等待時(shí),任何遲到的報(bào)文段將被丟棄。因?yàn)樘幱?MSL等待的、由該插口對(duì)(socket pair)定義的連接在這段時(shí)間內(nèi)不能被再用。這暗示著終止一個(gè)客戶程序,并立即重新啟動(dòng)這個(gè)客戶端程序,則這個(gè)新客戶程序?qū)⒉荒苤赜孟嗤谋镜囟丝?。?duì)于服務(wù)器,情況就有所不同,因?yàn)榉?wù)器使用熟知端口。如果終止一個(gè)已經(jīng)建立連接的服務(wù)器程序,并試圖立即重新啟動(dòng)這個(gè)服務(wù)器程序,服務(wù)器程序?qū)⒉荒馨阉倪@個(gè)熟知端口賦值給它的端點(diǎn),因?yàn)檫@個(gè)端口是處于2MSL連接的一部分。在重新啟動(dòng)服務(wù)器程序前,它需要在1~4分鐘。RFC793指出MSL為2分鐘,然而實(shí)現(xiàn)中的常用值是30 s,1分鐘或者2分鐘。
UDP和TCP協(xié)議的主要區(qū)別是二者在實(shí)現(xiàn)信息的可靠傳輸方面,TCP協(xié)議中包含了專門(mén)的傳遞保證機(jī)制,當(dāng)數(shù)據(jù)接收方收到發(fā)送方傳來(lái)的信息時(shí),會(huì)自動(dòng)向發(fā)送方發(fā)出確認(rèn)消息,發(fā)送方只有在接收到該確認(rèn)消息之后才繼續(xù)傳送其他信息,否則將一直等待直到收到確認(rèn)信息為止。與TCP不同,UDP協(xié)議是一個(gè)面向數(shù)據(jù)報(bào)的傳輸層協(xié)議,UDP不提供可靠性,它把數(shù)據(jù)發(fā)送出去,但是并不保證它們能到達(dá)目的地。如果在發(fā)送方到接收方的傳遞過(guò)程中出現(xiàn)數(shù)據(jù)報(bào)的丟失,協(xié)議本身并不能做出任何檢測(cè)或提示。UDP協(xié)議本身沒(méi)有提供數(shù)據(jù)開(kāi)始發(fā)送和發(fā)送結(jié)束標(biāo)志機(jī)制,因此不能確定UDP會(huì)話開(kāi)始和結(jié)束的準(zhǔn)確時(shí)間。
杭州華三通信技術(shù)有限公司的H3C SecPath系列防火墻中會(huì)話管理模塊具有支持對(duì)各協(xié)議報(bào)文創(chuàng)建會(huì)話、更新會(huì)話狀態(tài)以及根據(jù)協(xié)議狀態(tài)設(shè)置老化時(shí)間;支持應(yīng)用層協(xié)議的端口映射,允許為應(yīng)用層協(xié)議自定義對(duì)應(yīng)的非通用端口號(hào),同時(shí)可以根據(jù)應(yīng)用層協(xié)議設(shè)置不同會(huì)話老化時(shí)間;支持設(shè)置長(zhǎng)連接會(huì)話,保證指定的會(huì)話在一段較長(zhǎng)的時(shí)間內(nèi)不會(huì)被老化。
H3C SecPath系列防火墻會(huì)話管理中具有優(yōu)先級(jí),長(zhǎng)會(huì)話老化時(shí)間僅在TCP會(huì)話進(jìn)入穩(wěn)態(tài)時(shí)生效。在會(huì)話穩(wěn)態(tài)時(shí),長(zhǎng)連接老化時(shí)間具有最高的優(yōu)先級(jí),其次為應(yīng)用層協(xié)議老化時(shí)間,最后為協(xié)議狀態(tài)老化時(shí)間。老化時(shí)間的修改需要結(jié)合實(shí)際的使用場(chǎng)景,避免過(guò)大或過(guò)小,從而影響會(huì)話協(xié)議報(bào)文的正常交互,例如,F(xiàn)TP協(xié)議的會(huì)話老化時(shí)間若小于FTP?;顖?bào)文發(fā)送的間隔,會(huì)造成FTP連接無(wú)法正常建立。H3C缺省設(shè)置下,UDP的保持時(shí)間為60 s。
華為Eudemon防火墻會(huì)為了維持系統(tǒng)內(nèi)存會(huì)設(shè)定一個(gè)會(huì)話連接最大值,一旦系統(tǒng)記錄的會(huì)話達(dá)到這個(gè)數(shù)值,系統(tǒng)就不再建立新的會(huì)話。同時(shí),為了保證防火墻的會(huì)話連接不會(huì)過(guò)多,防火墻針對(duì)不同的應(yīng)用協(xié)議調(diào)整會(huì)話連接保持的時(shí)間。為了保證內(nèi)部網(wǎng)絡(luò)的安全,防火墻上的各會(huì)話缺省保持時(shí)間都相對(duì)較短,例如:缺省情況下UDP的保持時(shí)間為120 s。
UDP會(huì)話具體的老化時(shí)間設(shè)置與設(shè)備的性能有關(guān),如會(huì)話池內(nèi)存、會(huì)話并發(fā)數(shù)等相關(guān)因素。在本程序中UDP會(huì)話的老化時(shí)間的設(shè)定對(duì)UDP流量統(tǒng)計(jì)統(tǒng)計(jì)誤差有直接關(guān)系,老化時(shí)間定義過(guò)長(zhǎng),使可被老化的會(huì)話仍然在會(huì)話池中占據(jù)內(nèi)存空間,造成浪費(fèi);老化時(shí)間過(guò)短,將為結(jié)束數(shù)據(jù)傳送的會(huì)話作為新的UDP會(huì)話重新識(shí)別,因含有特征的報(bào)文在該會(huì)話的前5個(gè)有載荷的報(bào)文中出現(xiàn),之后再進(jìn)行DPI識(shí)別時(shí)報(bào)文不具有應(yīng)用的特征,將新會(huì)話只能識(shí)別到協(xié)議層而不能準(zhǔn)確識(shí)別為應(yīng)用。
通過(guò)上述實(shí)驗(yàn)對(duì)比,采用TCP會(huì)話機(jī)制,對(duì)于UDP會(huì)話除采用一般廠家的會(huì)話老化機(jī)制,還可輔助采用peer學(xué)習(xí)和查找所有報(bào)文的共同字符方式。在會(huì)話老化問(wèn)題中因peer學(xué)習(xí)記錄會(huì)話的一方IP與端口號(hào),peer老化時(shí)間較長(zhǎng),在局域網(wǎng)絡(luò)中出現(xiàn)誤識(shí)別的概率較高,公網(wǎng)中誤識(shí)別的概率較低,因此peer機(jī)制可適當(dāng)采用;對(duì)于在所有報(bào)文中含有共同字符的應(yīng)用可采用提取共同字符,提取過(guò)程需要考慮這些字符在其他應(yīng)用報(bào)文中是否也出現(xiàn)過(guò),若在其他報(bào)文中也出現(xiàn)則不能采用。
[1]王向輝.基于DPI與特征識(shí)別的p2p流量檢測(cè)技術(shù)研究[D].南寧:廣西大學(xué),2010.
[2]吳軍,杜澤華.一種以DPI為核心的網(wǎng)絡(luò)流量識(shí)別方案[J].軟件導(dǎo)刊,2014(1):23-26.
[3]馬婧.網(wǎng)絡(luò)流量特征提取與流量識(shí)別研究[D].北京:北京郵電大學(xué),2012.
[4]吳昊,程光.HTTP網(wǎng)絡(luò)應(yīng)用特征串的自動(dòng)提取[J].廣西大學(xué)學(xué)報(bào),2011,36(增刊1):61-64.
[5]周延森,汪永好.入侵檢測(cè)匹配算法的研究與改進(jìn)[J]. Proceedings of 2010 International Conference on Broadcast Technology and Multimedia Communication(Volune 4),2010 (4):13-17.
[6]李倫.針對(duì)大規(guī)模URL關(guān)鍵字的多模匹配算法的性能優(yōu)化[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011:20-29.
[7]黃麗云.網(wǎng)絡(luò)流量識(shí)別控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2012:35-54.
[8]李鴻斌.網(wǎng)絡(luò)深度包業(yè)務(wù)識(shí)別(DPI)方法的改進(jìn)[D].南京:南京郵電大學(xué),2011:66-80.
[9]林冠洲.網(wǎng)絡(luò)流量識(shí)別關(guān)鍵技術(shù)研究[D].北京:北京郵電大學(xué),2011:29-44.
[10]郭明亮.高速網(wǎng)絡(luò)中實(shí)時(shí)流量識(shí)別系統(tǒng)的研究與設(shè)計(jì)[D].北京:北京郵電大學(xué),2010:39-53.
[11]米淑云.IP網(wǎng)絡(luò)流量監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2009:33-40.
[12]rfc793,Transport Control Protocol[S].
Research on Application Flow Error Based on DPI
ZHU Xiao-lan,SONG li,LIU Yu-zhe
(Hebei Far-east Communication System Engineering Co.,Ltd,Shijiazhuang,Hebei 05000,China)
In the process of the Deep Packet Inspection(Deep Packet Inspection,DPI)test,it is found that some application can be identified according to the knowledge base,but the flow of application is not complete,and the statistic result of actual application flow is different from that of real flow.How to precisely calculate the application flow is an important problem.Aiming at this problem,this paper presents three solutions such as searching common character of all messages in application session,adding peer learning in rules and recording IP and port number of application session as well as session aging mechanism.The experiment results show that the optimal solution is to adopt session aging mechanism,and use peer learning and searching common features of all messages in session as assistance.
flow identification;network protocol;gap between actual application flow and real flow;session aging;peer learning; common characters of message
TP391.4
A
1008-1739(2015)08-38-3
定稿日期:2015-03-26