安強強,張峰,李趙興,張雅瓊
(榆林學院陜西榆林719000)
VoIP的全稱為Voice Over Internet Protocol[1]。該系統具備比較顯著的優點,比如成本比較低,部署起來難度小,當今其在語音通信業務當中得到了十分廣泛的應用,雖然其帶來了較好的發展機遇,但是同時也為網絡的安全運行帶來了很大的挑戰[2-5]。所以需要合理管控VoIP業務,怎樣提高在線流量識別的精度也成為了不少學者所研究的重難點。
當前,VoIP系統比較常見的識別方法主要有兩類:第一是以流特征為基礎進行識別,第二是以機器學習為基礎進行識別[6]。已有的研究當中,關于以機器學習為基礎的識別方法主要是集中在線下領域,關于在線識別的研究并不多。有學者設計了以WEKA庫文件為基礎的Skype流量在線檢測工具,但是存在算法單一、無可視化界面等相應的缺陷[7-9]。
本次研究將以當前關于機器學習為基礎流量在線識別系統中普遍存在的問題進行設計并且采用具體的試驗論證,以希望達到在線識別的目的,同時提高識別的精度。
在本次所開展的具體設計過程中,將數據流進行專門的界定,主要是將其定位成將兩個主機進行交換的連續數據包。在同一條數據流當中包含的數據包的源地址、傳輸協議、目的地址以及源、目的端口等都是相同的。訓練集的構建過程就是對數據包分流的過程[10]。結合思科分流的相關定義來看,單條的TCP流必須要包含開始與結束時刻,同時還應當包含完整的語義[11]。
在線識別系統不僅包含在線識別,同時也包含了離線分類器[12]。其中圖1為離線分類器的主要工作原理。

圖1 離線分類器工作流程圖
本次所設計的在線識別系統主要以離線分類器為基礎,構建抓包與檢測同時進行的機制,借助于JPcap庫來編寫探嗅器,抓取相應的數據包,同時分流模塊會對流特征進行統計以及數據包的分流,設計相應的累積時間。每次閾值時間達到30 s時,就會將已經統計好的數據直接送入到分類器當中進行相應的識別,此處的分類器是處于離線狀態的。同時會以IP地址的形式將識別出的流量傳輸到界面當中,同時也會對VoIP的電話狀態進行動態顯示。圖2為本次設計的VoIP系統的主要流程圖。

圖2 VoIP系統流程圖
預處理模塊的相關設計與工作需要在離線狀態下開展。此模塊的主要功能就是搭建更為完整的訓練集。預處理模塊分別包含文件格式、數據集的獲取以及分流統計[13]。
1.2.1 數據集獲取
數據集的獲取則需要借助于Wireshark軟件,該軟件會從PC當中抓取一些特定類型的軟件,借助于配置交換機鏡像端口來抓取不同的PC所產生的流量,進而將其擴展到整個局域網領域當中。另外,本次研究過程中所采用的數據集也包含Moore數據集以及Skype數據集。為了使VoIP系統同時具備識別PC-PHONE與PC-PC端的能力,也增加了PCPHONE類型流量。
1.2.2 轉換文件格式
設計過程中所采用的軟件其存儲文件的格式主要為PCAP形式,其文件頭分別包含UDP包頭或者是14B包頭+20B IP包頭等。預處理模塊的工作需要通過分析PCAP軟件頭的信息,對五元組進行編程,再提取數據包長等相關的信息,最終將默認的儲存形式實現向CSV儲存形式的轉化。
1.2.3 構建訓練集
構建訓練集則首先需要滿足五元組相同,同時還需要符合思科關于分流的相關定語[14]。然后才可以借助于本次設計選擇的軟件來對抓取的數據包進行分流。分流的具體實現需要在Linux當中實現。在數據包完成了分流之后,再對數據流的相關特征進行統計分析,并且需要確定最終的訓練集。
已有學者通過研究,對數據流進行了分類,并且認為流特征有249種,如果對每種流特征進行專門的研究分析,將會耗費大量的時間,而且也會消耗大量的成本[15]。其實,并不是所有的流特征都是和采用VoIP系統來進行識別。這就需要對一些冗余和不相關的流特征進行去除,從而使模型的精確度得到提高[16],減少系統實際運行過程中需要的時間。本次研究則首先需要初步對數據流的篩選,然后再選出特定的數據流,產生專門的特征子集,利用評價函數來進行評價,再對停止準則與評價函數展開相應的比較,如果得到的函數結果優于準則,就可以停止,反之,則需要繼續開展工作,再得到新的特征子集,一直到獲得滿意的特征子集。文中所開展的VoIP系統研究中,在產生特征子集與評價時分別采用不同的算法。表1為最優特征子集。
本次設計研究中所采用的機器學習算法為C4.5決策算法樹,為了使系統的可擴展性得到增強,另外還需要采用SVM算法與樸素貝葉斯算法。
首先,C4.5決策樹算法屬于一種比較經典的回歸與分類算法。決策樹就像是樹的枝干與葉子一樣,分別包含葉子結點與內部結點,內部結點所代表的是特征屬性,而葉子結點所表示的則是類別。算法處理過程比較繁雜。具體過程如下;

表1 最優特征子集
1)熵的計算,這是不純度度量標準,所采用的公式為:

第i類發生可能性或者是發生概率大小采用Pi表示。
屬性為A的信息熵在上述公式當中采用HA(D)來進行表示。
除了采用決策樹方法之外,本次設計研究也采用樸素貝葉斯算法來作為輔助算法,該算法主要是以獨立假設特征條件以及以貝葉斯定理作為標準。對于已經給定的訓練集,會首先對學習輸入、輸出的概率分布情況進行獨立假設,然后再輸入給定的x值。想要得到最終輸出的最大Y值,則需要借助于貝葉斯定理。
另外本次研究也采用了SVM算法,其中文名稱為支持向量機算法,該算法模型就是以間隔最大化為基本,然后求解凸二次規劃的相關問題。
在線識別技術的落實,需要在短時間內進行在線抓包與識別目標流量。本次研究采用的正是JPcap系統抓包工具。該抓包工具屬于JAVA庫類,可以實現網絡數據包的捕獲與發送。Java語言可以較好的定義TCP/UDP的傳輸,但是在網絡層以下控制能力卻比較弱。而JPcap系統抓包工具所起到的作用就是提供一個公共數據接口,然后再對Jini數據進行調用,最終得到JAVA庫中的數據。
JPcap系統抓包工具抓包與檢測功能同時實現,還需要借助于JPcap來進行在線抓包。當然,該系統的抓包對象為單個數據包,因此在抓包的過程中可以按照五元組分流進行數據的獲取與統計。
為了驗證所設計系統的可行性,需要設計專門的試驗來進行驗證。試驗所需要的硬件設備包含個人PC,操作系統為Windows 7,交換機為華為S5000,數據挖掘平臺為weka3.6,基于JAVA開發。
本次試驗所采用的評價指標分別包含精度、F1值和召回率等。具體試驗時,需要將非VoIP值納入到負類當中,另外則是將VoIP值納入到正類當中。分類器的預測結果只有兩種情況,即正確或者錯誤。
本次開展具體實驗過程中所采用的數據流為1.5G Skype數據流,其中包含了10個不同的版本,數據流總數達到了1 374條,其中通過實驗發現來自于PC-PHONE的數據端中的數據流總數為371條。另外,也需要使用1G的非VoIP流量,數據集的收取需要采用鏡像端口以及Moore來獲取。在整個實驗過程中所獲得的數據流共計35 371條,流量類型共計15種。
本次研究對平均誤差最小的分類器進行評估,所采用的評估方法為10折交叉驗證法,根據研究結果可以發現。本次研究中,分類器的識別精度可以達到99.7%,召回率則是99.5%。另外,因為本次研究篩選了數據流的特征及管件屬性,這也使得及機器學習的能力及識別性能得到大大提升。圖3為3種不同算法所得到的結果比較,圖4為分類器識別結果。
為了驗證該系統的在線識別準確度,又繼續開展了100多次專門的試驗,試驗結果顯示,設計的在線識別系統的識別精度可以達到91.4%。除了需要考慮在線識別精度之外,還需要考慮到實時性。本次實驗結果發現,基于C4.5算法的在線識別系統所花費的時間為最短,為0.53 s。

圖3 不同算法得到結果比較

圖4 分類器識別結果
通過對當前已有的關于在線流量監測系統的研究結果進行研究,發現關于在線流量檢測系統研究較少,而且即便是開展研究在精確度與實時性方面均不容樂觀。因此本次設計以機器學習為基礎,構建專門的VoIP在線流量檢測系統,通過研究及實驗證實,該系統精確度與實時性分別為91.4%與0.53 s,值得推廣。