陳勇+徐釗+蔡陽波+許云龍
摘 要:針對網絡流量識別問題,提出一種基于支持向量機(SVM)的網絡流量識別模型。首先通過流量特征提取模塊,提取適合在支持向量機中識別網絡流量的6個主要特征。對數據進行清洗、預處理以及訓練和學習,從而實現整個基于SVM的網絡流量識別系統。實驗結果表明,經過交叉檢驗選擇參數后,再用支持向量機模型進行訓練和學習,可以取得較好的分類效果。
關鍵詞:網絡流量;支持向量機;流量識別
DOIDOI:10.11907/rjdk.162818
中圖分類號:TP393
文獻標識碼:A 文章編號:1672-7800(2017)007-0162-03
0 引言
網絡流量識別一直以來都是業界研究的重點[1]。目前,網絡流量分類和識別主要分為4種類型:基于端口識別、基于應用協議特征字識別、行為特征的啟發式識別、基于機器學習方法的分類和識別[2-3]。隨著端口跳變、信息隱藏等技術的廣泛采用,基于特征端口的識別方法已經不再適用于網絡流量的識別與檢測[4];基于應用協議特征字的識別雖然準確率比較高,但由于需要獲取分組的應用層負載,對處理效率的影響較為嚴重,并且涉及到隱私保護等法律問題,故不被廣泛采用[5];基于行為特征的啟發式識別是綜合利用流的屬性、統計特性以及流的行為特征,按照啟發式負責對流量進行分析,達到對網絡流量分類和識別的目的,但其分類和識別結果不確定,而是基于概率的結果,因此識別方法的精度取決于網絡流量應用特征的顯著程度和啟發式規則對這種特征的覆蓋能力[6]。近年來,基于機器學習的網絡流量識別方法表現出了較高的準確率,因此得到越來越多研究者的青睞[7-8]。
本文所討論的網絡流量識別問題,其本質上就是一個二分類問題,考慮到SVM在解決二分類問題中的卓越性能,以及其具有的學習能力,故采用它來實現對網絡中正常流量和異常流量的初步識別。
基于以上觀點,本文提出一種基于SVM的網絡流量二分類識別方法,與只采用特征值匹配的識別網絡流量方法相比,大大減少了特征值匹配模塊的工作量,提高了網絡流量識別系統效率。
1 基于SVM的流量識別系統
本文首先通過流量特征提取模塊,提取適合在支持向量機中識別的網絡流量的6個主要特征。接著,對數據進行清洗和預處理,通過對數據進行訓練和學習,從而實現整個基于SVM的網絡流量識別系統。
1.1 流量特征提取模塊C和Υ
本模塊采用了開源軟件Winpcap進行網絡數據的捕獲分析,選取數據包在特定時間(W秒)間隔內本機連接出去的IP數、端口數、包長、包數、上行速度和下行速度6大特征信息。
1.2 基于SVM的P2P流量識別模塊
本模塊主要對圖1中提取出的流量統計特征信息進行整理,剔除冗余數據,并將其轉換為特征向量形式,采用支持向量機的方法將其交給SVM進行訓練,訓練后得到一組支持向量,即今后的預測模型。將預測模型與預處理過的待預測特征向量共同代入SVM的決策函數中,從而判別出該網絡流量是否為P2P流。
1.2.1 預處理
對數據集進行預處理,即對數據進行縮放的目的在于:
① 避免部分特征值范圍過大而另一部分特征值范圍過小;
② 避免訓練時為了計算核函數而計算內積時引起數值計算困難。
因此通常將數據縮放到[-1,1]或者是[0,l]之間,本文采用默認縮放范圍[-1,1]。
1.2.2 尋找最優參數C、Υ
數據預處理后,便可以利用網格搜索法來交叉驗證尋找核函數RBF對于訓練數據集的最優參數C和Υ[9]。為了識別出好的(C,Υ),以便分類器能準確地預測未知數據。
1.2.3 模型訓練
最優參數(C,Υ)確定后就可開始對訓練數據集進行訓練以獲取支持向量機模型[10]。同樣地,LIBSVM提供了一個訓練函數svm-train.c。其主要功能是讀取訓練文件,調用模型訓練函數svm_train訓練模型,并調用svm_save_model保存模型到文件。程序基本流程圖如圖3所示。
2 實驗分析
本文在VC++6.0環境下開發了基于SVM的P2P流量識別系統,并對該系統進行測試,驗證其效率和準確性。
2.1 實驗過程
2.1.1 數據捕獲
選擇用于檢測流量的網卡設備作為監控對象,然后使用混雜模式打開該網卡,以便獲取所有數據。同時,設置過濾器,使WinPcap僅捕獲TCP包和UDP包。最后,利用WinPcap開發包提供的非回調方法捕獲數據包,然后利用while循環實現不斷偵聽網卡所檢測到的網絡流量,同時對被監控的網絡節點的流量情況進行統計。
如此,隨著while循環不斷執行,數據包被不斷捕獲,直到W秒時間到,統計得到的6個流量特征值就是一組訓練樣本值,為了后續數據處理更為方便,程序在最后將其以LIBSVM的訓練數據格式存儲到一個文本文件中。隨后,本文應用SVM支持向量機對上述數據進行預處理、訓練以及預測操作。
2.1.2 預處理
其縮放規則被保存以備使用,如表1所示。
表1中,-1與1即為設定的lower和upper值。第一列為6個特征標號,其后的值分別為其對應的轉換前上下限特征值。
2.1.3 尋找最優參數(C,Υ)
利用網格搜索法搜索后得到最優的(C,Υ)對和交叉驗證的精度如表2所示。
2.1.4 模型訓練
本次訓練共迭代了49次,nu為參數v的值,即v=0.060 784,obj為SVM轉化為二次規劃求解得到的最小值,其值為-46.145 696,而rho=0.412 394為判決函數常數項b的值。nSV為支持向量數40,nBSV為邊界上的支持向量數34,Total nSV即為總支持向量數40。endprint
訓練得到的模型保存到data.model文件中,由該文件可以得到以下信息,訓練采用的SVM類型是C_SVC,核函數為徑向基函數RBF,Υ值為0.5,nr_class表示此次為二分類,總支持向量數為40,判決函數常數項b的值為0.412394,二分類的標記為-1與1,且每種類型的支持向量數分別為20、20。
2.2 數據預測結果分析與比較
訓練結束后得到模型就可以用于SVM預測了。LIBSVM的預測函數為svm-predict。函數的功能是讀取待預測文件、模型文件,然后調用predict函數預測,并將結果輸出到文件。
(1)經過交叉檢驗數據。由此得到其預測的精度為96.3528%,預測結果保存在out.result中。
(2)未進行交叉驗證的數據結果。如在選取最優參數(C,Υ)時,不采用網格搜索的交叉驗證方法,而采用系統默認值,即取默認值1,Υ取默認值1/6= 0.166 667, 按照上述方法進行訓練,通過得到的模型預測未知的數據newdata.scale,得到其預測精度為94.741 3%。可見,通過最優參數(C,Υ)的選擇,可以使得結果預測精度有所提高。
(3)多次訓練和學習。為了體現SVM的學習過程,進行了5次實驗,通過不斷地捕獲數據,分別對捕獲的數據進行預處理、訓練、預測。隨著不斷地學習,預測精度不斷提升,分別為92.196 8%、94.741 3%、95.674 3%、95.843 9%、96.352 8%,精度不斷增加。可見通過多次學習,有利于分類判斷。不過需要指出的是,學習過程也需要有一定控制,過度學習會給分類帶來負面影響。
3 結語
本文從數據包捕獲、預處理、識別、學習和訓練這幾個部分展開,詳細說明了如何利用LIBSVM對數據包不斷地學習、訓練,最終得到一個比較可靠的模型,并通過這個模型對網絡中的未知數據進行預測,從而證明其可靠程度。由此可見,基于SVM的網絡流量識別方法是可行的,并且識別效果較好。
參考文獻:
[1]YE W,CHO K.Hybrid P2P traffic classification with heuristic rules and machine learning[J].Soft Computing,2014,18(9):1815-1827.
[2]徐鵬,劉瓊,林森.改進的對等網絡流量傳輸層識別方法[J].計算機研究與發展,2015,45(5):794-802.
[3]ZAREI R,MONEMI A,MARSONO M N.Automated dataset generation for training peer-to-peer machine learning classifiers[J].Journal of Network and Systems Management,2015,23(1):89-110.
[4]NGUYEN T T,ARMITAGE G,BRANCH P,et al.Timely and continuous machine-learning-based classification for interactive IP traffic[J].IEEE/ACM Transactions on Networking (TON),2012,20(6):1880-1894.
[5]TAYSI Z C,KARSLIGIL M E,YAVUZ A G,et al.Machine learning based IP traffic classfication[C].Proceedings of the Signal Processing and Communications Applications Conference (SIU),2013:1-4.
[6]顧彬,鄭關勝,王建東.增量和減量式標準支持向量機的分析[J].Journal of Software,2013,24(7):65-69.
[7]JAMIL H,ZAREI R,FADLELSSIED N O,et al.Analysis of features selection for P2P traffic detection using support vector machine[C].Proceedings of the Information and Communication Technology (ICoICT),2013 International Conference of,IEEE,2013:116-121.
[8]ANG H H,GOPALKRISHNAN V,HOI S C,et al.Classification in P2P networks with cascade support vector machines[J].ACM Transactions on Knowledge Discovery from Data (TKDD),2013,7(4):20.
[9]JING GONG Z W,ZHIXIN SUN.An improved SVM kernel function parameter optimization method in network traffic monitoring[J].Journal of Computational Information Systems,2015,11(16):5937-5946.
[10]JIANFEN P,YAJIAN Z,CONG W,et al.A novel method of P2P traffic classification based on TCP flow analysis[M].Affective Computing and Intelligent Interaction.Springer.2012:521-528.endprint