文獻(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ī)遇的同時(shí)也給網(wǎng)絡(luò)安全運(yùn)行帶來了巨大挑戰(zhàn)[1]。因此,,對VoIP業(yè)務(wù)進(jìn)行管控非常重要,高精度在線流量識別也成為眾多研究領(lǐng)域的熱點(diǎn)與難點(diǎn),。
目前,,主流VoIP流量識別方法主要包括兩大類:基于流特征的VoIP流量識別與基于機(jī)器學(xué)習(xí)的VoIP流量識別。文獻(xiàn)[2]最早利用流特征進(jìn)行流量分類,,提出249種具體的流特征,,并提供10組可用的流量數(shù)據(jù)集。文獻(xiàn)[3]針對數(shù)據(jù)流中一段時(shí)間內(nèi)的數(shù)據(jù)包長和包時(shí)間間隔,,統(tǒng)計(jì)其分布范圍,、均值、中值與方差等特征作為VoIP流量識別的依據(jù),。上述文獻(xiàn)識別精度不高,,基于流特征的識別方法對不同類型的網(wǎng)絡(luò)流量適應(yīng)性也較低?;跈C(jī)器學(xué)習(xí)的識別方法主要集中于離線識別,,對于在線VoIP流量識別的研究并不多[4-7]。文獻(xiàn)[4]實(shí)現(xiàn)了基于WEKA庫文件的Skype流量在線檢測工具,,但存在無netAI工具更新,、無可視化界面、算法單一等缺陷,。文獻(xiàn)[5]改進(jìn)了支持向量機(jī)算法,,能夠節(jié)省1/4的識別時(shí)間,但仍然無法滿足在線識別的實(shí)時(shí)性要求,。文獻(xiàn)[6]基于流統(tǒng)計(jì)特征,,利用機(jī)器學(xué)習(xí)算法構(gòu)建分類器模型,,系統(tǒng)在線識別精度為93%。其不足之處在于,,沒有研究在線識別系統(tǒng)的實(shí)時(shí)性,,并不是真正意義上的在線識別。文獻(xiàn)[7]基于開源數(shù)據(jù)挖掘工具WEKA中的機(jī)器學(xué)習(xí)算法,,針對特定應(yīng)用Skype提出并設(shè)計(jì)出一種基于決策理論的識別工具,,然而只能達(dá)到82%的精度,無法滿足大流量環(huán)境下的高精度識別,。從目前的研究成果來看,,在線識別的難點(diǎn)主要在兩方面:一是無法滿足較高實(shí)時(shí)性要求,二是無法實(shí)現(xiàn)高精度識別,。
針對以上問題,,本文設(shè)計(jì)了VoIP流量在線識別系統(tǒng),不僅能實(shí)現(xiàn)實(shí)時(shí)在線識別,,且識別精度高達(dá)到92%,。
1 VoIP流量在線識別系統(tǒng)
本文所設(shè)計(jì)的系統(tǒng)中,數(shù)據(jù)流定義為兩個(gè)主機(jī)之間交換的連續(xù)數(shù)據(jù)包,。同一條流中所有數(shù)據(jù)包的五元組相同(五元組包括源地址,、目的地址、源端口,、目的端口和傳輸協(xié)議),。構(gòu)建訓(xùn)練集的過程需對數(shù)據(jù)包進(jìn)行分流,根據(jù)思科分流定義,,單條TCP流須包含完整語義的開始時(shí)刻(SYN)和結(jié)束時(shí)刻(FIN/RST),,UDP流中兩個(gè)包之間的時(shí)間間隔不超過30 s[8]。
1.1 在線識別系統(tǒng)原理
在線識別系統(tǒng)分為離線分類器建模和在線識別,。其中,,離線分類器建模如圖1所示,預(yù)處理模塊對PCAP文件格式的數(shù)據(jù)集進(jìn)行分流,,并轉(zhuǎn)化為WEKA工具所能識別的CSV文件格式,,同時(shí)統(tǒng)計(jì)每個(gè)數(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è)計(jì)的在線識別系統(tǒng)建立在獲得離線分類器的基礎(chǔ)上,提出JPcap邊抓包邊檢測機(jī)制,,利用JPcap庫編寫探嗅器控制底層網(wǎng)卡抓取數(shù)據(jù)包,,同時(shí)分流模塊對數(shù)據(jù)包分流并統(tǒng)計(jì)流特征。設(shè)定流量累積時(shí)間,,每次達(dá)到閾值時(shí)間30 s,,將統(tǒng)計(jì)好的數(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)計(jì)構(gòu)建訓(xùn)練集。
1.2.1 獲取數(shù)據(jù)集
使用Wireshark軟件抓取PC中運(yùn)行的特定應(yīng)用類型流量獲取數(shù)據(jù)集,,通過配置交換機(jī)鏡像端口將抓取單個(gè)PC產(chǎn)生的流量擴(kuò)展為整個(gè)局域網(wǎng)產(chǎn)生的流量,。同時(shí)使用文獻(xiàn)[4]中提到的Moore數(shù)據(jù)集與Tstat網(wǎng)[9]提供的Skype數(shù)據(jù)集。此外,,在數(shù)據(jù)集中新增PC-PHONE端的VoIP類型流量,,使系統(tǒng)同時(shí)具備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文件頭信息,編程實(shí)現(xiàn)五元組,、時(shí)間戳及數(shù)據(jù)包長等流特征信息的提取,并轉(zhuǎn)換為WEKA能識別的CSV文件格式,。
1.2.3 分流統(tǒng)計(jì)構(gòu)建訓(xùn)練集
首先在五元組相同且滿足思科分流定義的條件下,,對Wireshark抓取的數(shù)據(jù)包進(jìn)行分流,利用文獻(xiàn)[2]提供的fullstats分流器,,在Linux系統(tǒng)中實(shí)現(xiàn)分流,。完成數(shù)據(jù)包分流后,統(tǒng)計(jì)數(shù)據(jù)流的相關(guān)流特征,,并將統(tǒng)計(jì)后的數(shù)據(jù)流作為最終訓(xùn)練集,。
1.3 流特征選擇
文獻(xiàn)[2]提出了249種流特征,若對每個(gè)特征進(jìn)行統(tǒng)計(jì),,將耗費(fèi)大量的計(jì)算時(shí)間,,成本過高,且并不是所有流特征都適用于VoIP流量識別,,因此需要去除不相關(guān)且冗余的流特征,,以達(dá)到提高模型精確度,減少運(yùn)行時(shí)間的目的。本設(shè)計(jì)根據(jù)VoIP語音電話特有的通信屬性對其進(jìn)行初步篩選,,得出20個(gè)候選流特征再進(jìn)行特征選擇,。特征選擇首先從候選特征集中產(chǎn)生一個(gè)特征子集,然后用評價(jià)函數(shù)對該特征子集進(jìn)行評價(jià),,將評價(jià)的結(jié)果與停止準(zhǔn)則進(jìn)行比較,,若評價(jià)結(jié)果比停止準(zhǔn)則好就停止,否則就繼續(xù)產(chǎn)生下一組特征子集,,直到獲得評價(jià)最高的特征子集,。本文使用Best first search搜索算法從候選特征集中產(chǎn)生特征子集,然后用CFS(Correalation-based Feature Selection)算法進(jìn)行評估,,得到12個(gè)相關(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é)點(diǎn)和葉子節(jié)點(diǎn)組成,內(nèi)部節(jié)點(diǎn)代表一個(gè)特征屬性,,葉子節(jié)點(diǎn)代表一個(gè)類別[10],。算法的處理過程分為以下幾個(gè)步驟:首先,計(jì)算數(shù)據(jù)集D的經(jīng)驗(yàn)熵H(D),,熵是一種不純度度量準(zhǔn)則:
式中,,pi是屬于第i類的概率。其次,,計(jì)算特征A對數(shù)據(jù)集D的經(jīng)驗(yàn)條件熵H(D|A):
進(jìn)一步得出信息增益為:
信息增益比為:
式中HA(D)為屬性A的信息熵,。依次選取信息增益比最大的特征Ag分割數(shù)據(jù)集D為Di,將Di中最大的類作為子節(jié)點(diǎn)再遞歸調(diào)用得到子樹Ti,。最終經(jīng)過“悲觀剪枝”修剪決策樹得到損失函數(shù)最小的子樹,。
樸素貝葉斯是基于貝葉斯定理與特征條件獨(dú)立假設(shè)的分類方法。對于給定的訓(xùn)練集,,首先基于特征條件獨(dú)立假設(shè)學(xué)習(xí)輸入/輸出的聯(lián)合概率分布,,再基于此模型,對給定的輸入x,,利用貝葉斯定理求出后驗(yàn)概率最大的輸出y,。樸素貝葉斯的算法效率高,是一種常用的分類算法,。
支持向量機(jī)是一種二分類模型,,基本模型是定義在特征空間上的間隔最大的線性分類器,。其學(xué)習(xí)策略是間隔最大化,可形式化為一個(gè)求解凸二次規(guī)劃的問題,,也等價(jià)于正則化的合頁損失函數(shù)的最小化問題,。
1.5 在線識別——JPcap邊抓包邊檢測機(jī)制
在線識別的關(guān)鍵技術(shù)是實(shí)現(xiàn)在線抓包同時(shí)短時(shí)間內(nèi)識別出目標(biāo)流量。本文致力于尋找一個(gè)能實(shí)現(xiàn)Window系統(tǒng)下在線抓包的工具,,而JPcap庫正是實(shí)現(xiàn)這一想法的重要類庫,。
JPcap庫是Keita Fujiiy開發(fā)的一套能夠捕獲、發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的Java類庫[11],。Java語言雖然在TCP/UDP傳輸方面給予了良好的定義,,但對于網(wǎng)絡(luò)層以下的控制卻無能為力。JPcap類庫給Java語言提供一個(gè)公共接口,,類庫使用libpcap和原始套接字API,,調(diào)用Jini獲得JavaAPI中的數(shù)據(jù),實(shí)現(xiàn)Java語言對底層網(wǎng)卡的控制與鏈路層數(shù)據(jù)包的獲取,。
本文提出JPcap邊抓包邊檢測機(jī)制,,基于JPcap庫編寫探嗅器實(shí)現(xiàn)在線抓包。利用JPcap庫所抓取的數(shù)據(jù)包對象是單個(gè)數(shù)據(jù)包,。因此,,系統(tǒng)在抓包的同時(shí)能實(shí)現(xiàn)對單個(gè)數(shù)據(jù)包按五元組分流并統(tǒng)計(jì)其流特征。每當(dāng)統(tǒng)計(jì)時(shí)間達(dá)到所設(shè)置的閾值時(shí)間30 s時(shí),,便將這段時(shí)間內(nèi)統(tǒng)計(jì)好的數(shù)據(jù)流作為測試集送入分類器進(jìn)行識別,,輸出識別的VoIP流IP地址,動態(tài)顯示網(wǎng)絡(luò)中VoIP的狀態(tài),,實(shí)現(xiàn)真正意義上的VoIP流量實(shí)時(shí)在線識別系統(tǒng),。
2 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)環(huán)境:新西蘭懷卡托大學(xué)基于Java開發(fā)的開源數(shù)據(jù)挖掘平臺weka3.6、一臺裝有Windows 7操作系統(tǒng)和Eclipes的個(gè)人PC,、一臺華為S5000交換機(jī),。
2.1 評價(jià)指標(biāo)
評價(jià)二分類類型的分類器性能指標(biāo)為:精度(precision)、召回率(recall),、F1值。實(shí)驗(yàn)以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í)驗(yàn)數(shù)據(jù)
本次實(shí)驗(yàn)使用1.5G Skype流,,包含了Skype 10個(gè)版本,,共計(jì)1 371條流,其中371條為PC-PHONE端VoIP流量,。非VoIP流量1G,,使用文獻(xiàn)[2]中提到的Moore數(shù)據(jù)集與通過鏡像端口抓取到的數(shù)據(jù)集。整個(gè)訓(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é)果框?yàn)榉诸惼髯R別結(jié)果,,具體如圖4所示,。
圖3 系統(tǒng)識別結(jié)果
圖4 分類器識別結(jié)果
實(shí)驗(yàn)使用10折交叉驗(yàn)證法評估出平均測試誤差最小的分類器,由圖4可知,,分類器識別精度為99.9%,,召回率為99.6%。圖4最下方為混淆矩陣,,對于二分類問題,,用2×2矩陣表示,正對角線上表示正確分類的樣本,,反對角線表示被錯誤分類的樣本數(shù),,結(jié)果顯示有2個(gè)非VoIP樣本被分類成VoIP類,6個(gè)Skype樣本被分類成非VoIP類,。實(shí)驗(yàn)結(jié)果表明,,本文所選取的最優(yōu)特征子集大幅提高了分類器的性能指標(biāo)。由于本文針對VoIP流包長,、時(shí)間間隔等關(guān)鍵屬性對流特征進(jìn)行篩選,,增強(qiáng)了機(jī)器學(xué)習(xí)算法的學(xué)習(xí)能力,從而使得分類器識別性能大大提高,。
同樣地,,對NaiveBayes和SVM算法分別進(jìn)行實(shí)驗(yàn),,3個(gè)算法搭建的分類器識別結(jié)果對比圖如圖5所示??芍?,基于C4.5決策樹算法分類器的3個(gè)評價(jià)指標(biāo)均最高。這是因?yàn)镃4.5決策樹算法建模時(shí)不依賴于網(wǎng)絡(luò)流量類型的分布,,對于不同類型的流量數(shù)據(jù)有更強(qiáng)的適應(yīng)能力,,在分析較大訓(xùn)練集時(shí)優(yōu)于依賴先驗(yàn)概率的NaiveBayes算法,且內(nèi)存需求小于SVM算法,,因此得到了最好的識別精度,。
圖5 3種算法分類器結(jié)果對比
2.4 在線分類器識別結(jié)果分析
在線識別如圖3下半部分所示。首先打開本地網(wǎng)卡開始抓包,,設(shè)定混雜模式抓取流經(jīng)本地網(wǎng)卡的所有數(shù)據(jù)包,,同時(shí)對數(shù)據(jù)包進(jìn)行分流并統(tǒng)計(jì)流特征。每達(dá)到設(shè)定的30 s閾值時(shí),,選擇對應(yīng)算法的分類器對測試集進(jìn)行在線識別,,識別出VoIP類型流量并以IP地址形式輸出到圖示結(jié)果框。圖3僅是一次測試結(jié)果,,3個(gè)IP地址均為VoIP通話主機(jī)地址,,結(jié)果表明系統(tǒng)實(shí)時(shí)準(zhǔn)確識別出了當(dāng)前網(wǎng)絡(luò)中的VoIP通話。
接下來,,累積進(jìn)行100次在線實(shí)驗(yàn),,對比3種分類器在線識別精度,結(jié)果如表3所示,。由表3可知,,在線識別精度最高的分類器為基于C4.5算法的分類器。
而作為在線識別系統(tǒng),,除精度以外,,還需考慮第二個(gè)核心指標(biāo)——實(shí)時(shí)性。這里也對3種算法的建模時(shí)間與識別時(shí)間進(jìn)行對比,,結(jié)果如表4所示,。由表4可得,基于C4.5算法的在線識別時(shí)間最短,,建模時(shí)間略低于NaiveBayes算法,,而NaiveBayes在線識別時(shí)間低于C4.5算法,SVM建模與識別時(shí)間均最長,。由于C4.5決策樹模型處理樣本時(shí),,僅需根據(jù)網(wǎng)絡(luò)流流特征值自頂向下進(jìn)行比較,,找到相應(yīng)葉節(jié)點(diǎn)即可,,處理簡單,,處理效率更高,因此識別速度更快,。
結(jié)合表3,、表4的結(jié)果對精度與實(shí)時(shí)性指標(biāo)進(jìn)行分析,得到C4.5決策樹算分類器識別精度最高,,且在線實(shí)時(shí)性最好,;NaiveBayes分類器雖然建模時(shí)間短,但在線實(shí)時(shí)性略差,,且精度較低,;SVM分類器精度與實(shí)時(shí)性均不佳。在實(shí)際應(yīng)用中應(yīng)同時(shí)保證高識別精度與實(shí)時(shí)性,,因此本文選擇C4.5決策樹為系統(tǒng)的核心算法,。實(shí)驗(yàn)結(jié)果表明,本文所設(shè)計(jì)的VoIP流量在線識別系統(tǒng)確實(shí)能同時(shí)滿足高精度與實(shí)時(shí)性,。
3 結(jié)束語
本文設(shè)計(jì)并實(shí)現(xiàn)了基于機(jī)器學(xué)習(xí)的VoIP流量在線識別系統(tǒng),,在大幅提高VoIP流量識別精度的同時(shí)保證了系統(tǒng)的實(shí)時(shí)性,且有良好可視化界面,。實(shí)驗(yàn)結(jié)果表明,,本文所設(shè)計(jì)的VoIP流量在線識別系統(tǒng)離線識別精度達(dá)99.9%,在線識別精度達(dá)92%,,且識別時(shí)間短,,能夠快速識別出目標(biāo)流量并顯示VoIP流量活動的IP地址。不過,,本文的訓(xùn)練集未能涵蓋更多種類的流量類型,,對未知流量識別仍有待提高。未來的工作旨在建立一種更優(yōu)化的在線識別系統(tǒng),,繼續(xù)增強(qiáng)樣本容量,,增加更多種類的流量類型并支持更多的算法。
參考文獻(xiàn)
[1] 梁偉,,陳福才,,李海濤.一種基于C4.5決策樹的VoIP流量識別方法[J].計(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é)報(bào),,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é)報(bào),,2011,,22(6):1281-1298.
[9] TCP statistic and analysis tool.[EB/OL].[2016-01-02].http://tstat.tlc.polito.it/.
[10] 李航. 統(tǒng)計(jì)學(xué)習(xí)方法[M].北京:清華大學(xué)出版社,2012.
[11] 石慧慧.基于Jpcap的網(wǎng)絡(luò)流量采集監(jiān)控系統(tǒng)研究與設(shè)計(jì)[D].南京:南京林業(yè)大學(xué),,2010.