文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.08.033
中文引用格式: 劉建明,唐霞,李龍. 基于機(jī)器學(xué)習(xí)的VoIP流量在線識別系統(tǒng)[J].電子技術(shù)應(yīng)用,2016,42(8):133-137.
英文引用格式: Liu Jianming,Tang Xia,Li Long. Real-time detection system of VoIP traffic based on machine learning[J].Application of Electronic Technique,2016,42(8):133-137.
0 引言
VoIP(Voice over Internet Protocol)業(yè)務(wù)成本低、部署方便,在語音通信業(yè)務(wù)中的比例持續(xù)上升,其發(fā)展帶來機(jī)遇的同時也給網(wǎng)絡(luò)安全運行帶來了巨大挑戰(zhàn)[1]。因此,對VoIP業(yè)務(wù)進(jìn)行管控非常重要,高精度在線流量識別也成為眾多研究領(lǐng)域的熱點與難點。
目前,主流VoIP流量識別方法主要包括兩大類:基于流特征的VoIP流量識別與基于機(jī)器學(xué)習(xí)的VoIP流量識別。文獻(xiàn)[2]最早利用流特征進(jìn)行流量分類,提出249種具體的流特征,并提供10組可用的流量數(shù)據(jù)集。文獻(xiàn)[3]針對數(shù)據(jù)流中一段時間內(nèi)的數(shù)據(jù)包長和包時間間隔,統(tǒng)計其分布范圍、均值、中值與方差等特征作為VoIP流量識別的依據(jù)。上述文獻(xiàn)識別精度不高,基于流特征的識別方法對不同類型的網(wǎng)絡(luò)流量適應(yīng)性也較低。基于機(jī)器學(xué)習(xí)的識別方法主要集中于離線識別,對于在線VoIP流量識別的研究并不多[4-7]。文獻(xiàn)[4]實現(xiàn)了基于WEKA庫文件的Skype流量在線檢測工具,但存在無netAI工具更新、無可視化界面、算法單一等缺陷。文獻(xiàn)[5]改進(jìn)了支持向量機(jī)算法,能夠節(jié)省1/4的識別時間,但仍然無法滿足在線識別的實時性要求。文獻(xiàn)[6]基于流統(tǒng)計特征,利用機(jī)器學(xué)習(xí)算法構(gòu)建分類器模型,系統(tǒng)在線識別精度為93%。其不足之處在于,沒有研究在線識別系統(tǒng)的實時性,并不是真正意義上的在線識別。文獻(xiàn)[7]基于開源數(shù)據(jù)挖掘工具WEKA中的機(jī)器學(xué)習(xí)算法,針對特定應(yīng)用Skype提出并設(shè)計出一種基于決策理論的識別工具,然而只能達(dá)到82%的精度,無法滿足大流量環(huán)境下的高精度識別。從目前的研究成果來看,在線識別的難點主要在兩方面:一是無法滿足較高實時性要求,二是無法實現(xiàn)高精度識別。
針對以上問題,本文設(shè)計了VoIP流量在線識別系統(tǒng),不僅能實現(xiàn)實時在線識別,且識別精度高達(dá)到92%。
1 VoIP流量在線識別系統(tǒng)
本文所設(shè)計的系統(tǒng)中,數(shù)據(jù)流定義為兩個主機(jī)之間交換的連續(xù)數(shù)據(jù)包。同一條流中所有數(shù)據(jù)包的五元組相同(五元組包括源地址、目的地址、源端口、目的端口和傳輸協(xié)議)。構(gòu)建訓(xùn)練集的過程需對數(shù)據(jù)包進(jìn)行分流,根據(jù)思科分流定義,單條TCP流須包含完整語義的開始時刻(SYN)和結(jié)束時刻(FIN/RST),UDP流中兩個包之間的時間間隔不超過30 s[8]。
1.1 在線識別系統(tǒng)原理
在線識別系統(tǒng)分為離線分類器建模和在線識別。其中,離線分類器建模如圖1所示,預(yù)處理模塊對PCAP文件格式的數(shù)據(jù)集進(jìn)行分流,并轉(zhuǎn)化為WEKA工具所能識別的CSV文件格式,同時統(tǒng)計每個數(shù)據(jù)流的流特征構(gòu)建成訓(xùn)練集。算法學(xué)習(xí)模塊采用Best first search算法和CSF算法去除候選特征中的冗余且不相關(guān)的流特征,獲得最優(yōu)特征子集,再調(diào)用機(jī)器學(xué)習(xí)算法對訓(xùn)練集進(jìn)行學(xué)習(xí)并搭建分類器模型。最后,通過相關(guān)指標(biāo)評估獲得最優(yōu)分類器模型。
圖1 離線分類器框圖
如圖2所示,本文所設(shè)計的在線識別系統(tǒng)建立在獲得離線分類器的基礎(chǔ)上,提出JPcap邊抓包邊檢測機(jī)制,利用JPcap庫編寫探嗅器控制底層網(wǎng)卡抓取數(shù)據(jù)包,同時分流模塊對數(shù)據(jù)包分流并統(tǒng)計流特征。設(shè)定流量累積時間,每次達(dá)到閾值時間30 s,將統(tǒng)計好的數(shù)據(jù)流作為測試集送入離線狀態(tài)下構(gòu)建好的分類器進(jìn)行識別,并將識別出的VoIP流量以IP地址的形式輸出到系統(tǒng)界面,動態(tài)顯示網(wǎng)絡(luò)中VoIP電話狀態(tài)。
圖2 在線識別系統(tǒng)
1.2 預(yù)處理模塊
預(yù)處理模塊在離線狀態(tài)進(jìn)行,為系統(tǒng)搭建分類器提供完整訓(xùn)練集。該模塊包括獲取數(shù)據(jù)集、文件格式轉(zhuǎn)換與分流統(tǒng)計構(gòu)建訓(xùn)練集。
1.2.1 獲取數(shù)據(jù)集
使用Wireshark軟件抓取PC中運行的特定應(yīng)用類型流量獲取數(shù)據(jù)集,通過配置交換機(jī)鏡像端口將抓取單個PC產(chǎn)生的流量擴(kuò)展為整個局域網(wǎng)產(chǎn)生的流量。同時使用文獻(xiàn)[4]中提到的Moore數(shù)據(jù)集與Tstat網(wǎng)[9]提供的Skype數(shù)據(jù)集。此外,在數(shù)據(jù)集中新增PC-PHONE端的VoIP類型流量,使系統(tǒng)同時具備PC-PC端與PC-PHONE端VoIP電話的識別能力。
1.2.2 文件格式轉(zhuǎn)換
Wireshark軟件數(shù)據(jù)包的存儲格式為PCAP格式。PCAP文件頭包括:數(shù)據(jù)鏈路層14 B包頭+20 B IP包頭+20 B TCP或UDP包頭。預(yù)處理模塊通過分析PCAP文件頭信息,編程實現(xiàn)五元組、時間戳及數(shù)據(jù)包長等流特征信息的提取,并轉(zhuǎn)換為WEKA能識別的CSV文件格式。
1.2.3 分流統(tǒng)計構(gòu)建訓(xùn)練集
首先在五元組相同且滿足思科分流定義的條件下,對Wireshark抓取的數(shù)據(jù)包進(jìn)行分流,利用文獻(xiàn)[2]提供的fullstats分流器,在Linux系統(tǒng)中實現(xiàn)分流。完成數(shù)據(jù)包分流后,統(tǒng)計數(shù)據(jù)流的相關(guān)流特征,并將統(tǒng)計后的數(shù)據(jù)流作為最終訓(xùn)練集。
1.3 流特征選擇
文獻(xiàn)[2]提出了249種流特征,若對每個特征進(jìn)行統(tǒng)計,將耗費大量的計算時間,成本過高,且并不是所有流特征都適用于VoIP流量識別,因此需要去除不相關(guān)且冗余的流特征,以達(dá)到提高模型精確度,減少運行時間的目的。本設(shè)計根據(jù)VoIP語音電話特有的通信屬性對其進(jìn)行初步篩選,得出20個候選流特征再進(jìn)行特征選擇。特征選擇首先從候選特征集中產(chǎn)生一個特征子集,然后用評價函數(shù)對該特征子集進(jìn)行評價,將評價的結(jié)果與停止準(zhǔn)則進(jìn)行比較,若評價結(jié)果比停止準(zhǔn)則好就停止,否則就繼續(xù)產(chǎn)生下一組特征子集,直到獲得評價最高的特征子集。本文使用Best first search搜索算法從候選特征集中產(chǎn)生特征子集,然后用CFS(Correalation-based Feature Selection)算法進(jìn)行評估,得到12個相關(guān)性最好、得分最高的特征子集,如表1所示。
1.4 機(jī)器學(xué)習(xí)算法
本文著重研究C4.5決策樹算法,為增強(qiáng)系統(tǒng)可擴(kuò)展性,另在系統(tǒng)中集成了樸素貝葉斯算法(NaiveBayes)與支持向量機(jī)算法(SVM)。
C4.5決策樹是一種經(jīng)典的分類與回歸算法。決策樹的數(shù)據(jù)結(jié)構(gòu)由內(nèi)部節(jié)點和葉子節(jié)點組成,內(nèi)部節(jié)點代表一個特征屬性,葉子節(jié)點代表一個類別[10]。算法的處理過程分為以下幾個步驟:首先,計算數(shù)據(jù)集D的經(jīng)驗熵H(D),熵是一種不純度度量準(zhǔn)則:
式中,pi是屬于第i類的概率。其次,計算特征A對數(shù)據(jù)集D的經(jīng)驗條件熵H(D|A):
進(jìn)一步得出信息增益為:
信息增益比為:
式中HA(D)為屬性A的信息熵。依次選取信息增益比最大的特征Ag分割數(shù)據(jù)集D為Di,將Di中最大的類作為子節(jié)點再遞歸調(diào)用得到子樹Ti。最終經(jīng)過“悲觀剪枝”修剪決策樹得到損失函數(shù)最小的子樹。
樸素貝葉斯是基于貝葉斯定理與特征條件獨立假設(shè)的分類方法。對于給定的訓(xùn)練集,首先基于特征條件獨立假設(shè)學(xué)習(xí)輸入/輸出的聯(lián)合概率分布,再基于此模型,對給定的輸入x,利用貝葉斯定理求出后驗概率最大的輸出y。樸素貝葉斯的算法效率高,是一種常用的分類算法。
支持向量機(jī)是一種二分類模型,基本模型是定義在特征空間上的間隔最大的線性分類器。其學(xué)習(xí)策略是間隔最大化,可形式化為一個求解凸二次規(guī)劃的問題,也等價于正則化的合頁損失函數(shù)的最小化問題。
1.5 在線識別——JPcap邊抓包邊檢測機(jī)制
在線識別的關(guān)鍵技術(shù)是實現(xiàn)在線抓包同時短時間內(nèi)識別出目標(biāo)流量。本文致力于尋找一個能實現(xiàn)Window系統(tǒng)下在線抓包的工具,而JPcap庫正是實現(xiàn)這一想法的重要類庫。
JPcap庫是Keita Fujiiy開發(fā)的一套能夠捕獲、發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的Java類庫[11]。Java語言雖然在TCP/UDP傳輸方面給予了良好的定義,但對于網(wǎng)絡(luò)層以下的控制卻無能為力。JPcap類庫給Java語言提供一個公共接口,類庫使用libpcap和原始套接字API,調(diào)用Jini獲得JavaAPI中的數(shù)據(jù),實現(xiàn)Java語言對底層網(wǎng)卡的控制與鏈路層數(shù)據(jù)包的獲取。
本文提出JPcap邊抓包邊檢測機(jī)制,基于JPcap庫編寫探嗅器實現(xiàn)在線抓包。利用JPcap庫所抓取的數(shù)據(jù)包對象是單個數(shù)據(jù)包。因此,系統(tǒng)在抓包的同時能實現(xiàn)對單個數(shù)據(jù)包按五元組分流并統(tǒng)計其流特征。每當(dāng)統(tǒng)計時間達(dá)到所設(shè)置的閾值時間30 s時,便將這段時間內(nèi)統(tǒng)計好的數(shù)據(jù)流作為測試集送入分類器進(jìn)行識別,輸出識別的VoIP流IP地址,動態(tài)顯示網(wǎng)絡(luò)中VoIP的狀態(tài),實現(xiàn)真正意義上的VoIP流量實時在線識別系統(tǒng)。
2 實驗結(jié)果與分析
實驗環(huán)境:新西蘭懷卡托大學(xué)基于Java開發(fā)的開源數(shù)據(jù)挖掘平臺weka3.6、一臺裝有Windows 7操作系統(tǒng)和Eclipes的個人PC、一臺華為S5000交換機(jī)。
2.1 評價指標(biāo)
評價二分類類型的分類器性能指標(biāo)為:精度(precision)、召回率(recall)、F1值。實驗以VoIP類為正類,非VoIP類為負(fù)類,分類器在測試集上預(yù)測結(jié)果為正確或錯誤??赡艹霈F(xiàn)的4種情況記:TP,將正類預(yù)測為正類數(shù);FN,將正類預(yù)測為負(fù)類數(shù);FP,將負(fù)類預(yù)測為正類數(shù);TN,將負(fù)類預(yù)測為負(fù)類數(shù)。進(jìn)一步,得到精度:
召回率為:
F1值為精度和召回率的調(diào)和均值:
2.2 實驗數(shù)據(jù)
本次實驗使用1.5G Skype流,包含了Skype 10個版本,共計1 371條流,其中371條為PC-PHONE端VoIP流量。非VoIP流量1G,使用文獻(xiàn)[2]中提到的Moore數(shù)據(jù)集與通過鏡像端口抓取到的數(shù)據(jù)集。整個訓(xùn)練集共34 371條數(shù)據(jù)流,覆蓋14種流量類型,具體見表2。
2.3 離線分類器模型結(jié)果分析
系統(tǒng)識別結(jié)果如圖3所示。離線建模過程如圖3上半部分所示,步驟包括打開訓(xùn)練集文件、選擇機(jī)器學(xué)習(xí)算法、建模,圖中所示J48即C4.5決策樹算法,結(jié)果框為分類器識別結(jié)果,具體如圖4所示。
圖3 系統(tǒng)識別結(jié)果
圖4 分類器識別結(jié)果
實驗使用10折交叉驗證法評估出平均測試誤差最小的分類器,由圖4可知,分類器識別精度為99.9%,召回率為99.6%。圖4最下方為混淆矩陣,對于二分類問題,用2×2矩陣表示,正對角線上表示正確分類的樣本,反對角線表示被錯誤分類的樣本數(shù),結(jié)果顯示有2個非VoIP樣本被分類成VoIP類,6個Skype樣本被分類成非VoIP類。實驗結(jié)果表明,本文所選取的最優(yōu)特征子集大幅提高了分類器的性能指標(biāo)。由于本文針對VoIP流包長、時間間隔等關(guān)鍵屬性對流特征進(jìn)行篩選,增強(qiáng)了機(jī)器學(xué)習(xí)算法的學(xué)習(xí)能力,從而使得分類器識別性能大大提高。
同樣地,對NaiveBayes和SVM算法分別進(jìn)行實驗,3個算法搭建的分類器識別結(jié)果對比圖如圖5所示。可知,基于C4.5決策樹算法分類器的3個評價指標(biāo)均最高。這是因為C4.5決策樹算法建模時不依賴于網(wǎng)絡(luò)流量類型的分布,對于不同類型的流量數(shù)據(jù)有更強(qiáng)的適應(yīng)能力,在分析較大訓(xùn)練集時優(yōu)于依賴先驗概率的NaiveBayes算法,且內(nèi)存需求小于SVM算法,因此得到了最好的識別精度。
圖5 3種算法分類器結(jié)果對比
2.4 在線分類器識別結(jié)果分析
在線識別如圖3下半部分所示。首先打開本地網(wǎng)卡開始抓包,設(shè)定混雜模式抓取流經(jīng)本地網(wǎng)卡的所有數(shù)據(jù)包,同時對數(shù)據(jù)包進(jìn)行分流并統(tǒng)計流特征。每達(dá)到設(shè)定的30 s閾值時,選擇對應(yīng)算法的分類器對測試集進(jìn)行在線識別,識別出VoIP類型流量并以IP地址形式輸出到圖示結(jié)果框。圖3僅是一次測試結(jié)果,3個IP地址均為VoIP通話主機(jī)地址,結(jié)果表明系統(tǒng)實時準(zhǔn)確識別出了當(dāng)前網(wǎng)絡(luò)中的VoIP通話。
接下來,累積進(jìn)行100次在線實驗,對比3種分類器在線識別精度,結(jié)果如表3所示。由表3可知,在線識別精度最高的分類器為基于C4.5算法的分類器。
而作為在線識別系統(tǒng),除精度以外,還需考慮第二個核心指標(biāo)——實時性。這里也對3種算法的建模時間與識別時間進(jìn)行對比,結(jié)果如表4所示。由表4可得,基于C4.5算法的在線識別時間最短,建模時間略低于NaiveBayes算法,而NaiveBayes在線識別時間低于C4.5算法,SVM建模與識別時間均最長。由于C4.5決策樹模型處理樣本時,僅需根據(jù)網(wǎng)絡(luò)流流特征值自頂向下進(jìn)行比較,找到相應(yīng)葉節(jié)點即可,處理簡單,處理效率更高,因此識別速度更快。
結(jié)合表3、表4的結(jié)果對精度與實時性指標(biāo)進(jìn)行分析,得到C4.5決策樹算分類器識別精度最高,且在線實時性最好;NaiveBayes分類器雖然建模時間短,但在線實時性略差,且精度較低;SVM分類器精度與實時性均不佳。在實際應(yīng)用中應(yīng)同時保證高識別精度與實時性,因此本文選擇C4.5決策樹為系統(tǒng)的核心算法。實驗結(jié)果表明,本文所設(shè)計的VoIP流量在線識別系統(tǒng)確實能同時滿足高精度與實時性。
3 結(jié)束語
本文設(shè)計并實現(xiàn)了基于機(jī)器學(xué)習(xí)的VoIP流量在線識別系統(tǒng),在大幅提高VoIP流量識別精度的同時保證了系統(tǒng)的實時性,且有良好可視化界面。實驗結(jié)果表明,本文所設(shè)計的VoIP流量在線識別系統(tǒng)離線識別精度達(dá)99.9%,在線識別精度達(dá)92%,且識別時間短,能夠快速識別出目標(biāo)流量并顯示VoIP流量活動的IP地址。不過,本文的訓(xùn)練集未能涵蓋更多種類的流量類型,對未知流量識別仍有待提高。未來的工作旨在建立一種更優(yōu)化的在線識別系統(tǒng),繼續(xù)增強(qiáng)樣本容量,增加更多種類的流量類型并支持更多的算法。
參考文獻(xiàn)
[1] 梁偉,陳福才,李海濤.一種基于C4.5決策樹的VoIP流量識別方法[J].計算機(jī)應(yīng)用研究,2012,29(9):3418-3421.
[2] MOORE A,ZUEV D,CROGAN M.Discriminators for use in flow-based classification[M].Queen Mary and Westfield College,Department of Computer Science,2005.
[3] OKABE T,KITAMURA T,SHIZUNO T.Statistical traffic identification method based on flow-level behavior for fair VoIP service[C].VoIP Management and Security,2006.1stIEEE Workshop on.IEEE,2006:35-40.
[4] CALCHAND A O,DINH V T,BRANCH P,et al.Skype
[5] 魯剛,張宏莉,葉麟.P2P流量識別[J].軟件學(xué)報,2011,22(6):1281-1298.
[6] GU C,ZHANG S,SUN Y.Realtime encrypted traffic identification using machine learning[J].Journal of Software,2011,6(6):1009-1016.
[7] DI MAURO M,LONGO M.Skype traffic detection:A decision theory based tool[C].Security Technology(ICCST),2014International Carnahan Conference on.IEEE,2014:1-6.
[8] 魯剛,張宏莉,葉麟.P2P流量識別[J].軟件學(xué)報,2011,22(6):1281-1298.
[9] TCP statistic and analysis tool.[EB/OL].[2016-01-02].http://tstat.tlc.polito.it/.
[10] 李航. 統(tǒng)計學(xué)習(xí)方法[M].北京:清華大學(xué)出版社,2012.
[11] 石慧慧.基于Jpcap的網(wǎng)絡(luò)流量采集監(jiān)控系統(tǒng)研究與設(shè)計[D].南京:南京林業(yè)大學(xué),2010.