梁文國,王 勇,俸 皓
(1.桂林電子科技大學 信息與通信學院,廣西 桂林 541004;2.桂林電子科技大學 廣西云計算與復雜系統高校重點實驗室,廣西 桂林 541004)
近年來,隨著智能手機和平板電腦的普及、新網絡應用不斷出現,網絡流量呈指數增長[1,2],原有的網絡流量分類方法不足以在合理的時間范圍內識別出其中的應用類型,快速準確地進行流量分類已經成為一個不可忽視的問題[3]。基于端口號映射的網絡流量分類方法由于動態端口技術的使用而準確率越來越低;基于深層數據包檢測的分類方法由于新應用普遍使用載荷加密技術、私有協議的原因,分類越來越困難[4];基于傳輸層行為模式的分類方法由于地址轉換技術的限制,準確率受到影響。為了解決這些問題,近年來許多學者使用基于流統計特征的機器學習分類方法來進行分類[5,6]。其中,SVM算法具有堅實的統計學理論基礎,對維數不敏感、泛化能力強、分類準確率高、穩定性好,適合用作網絡流量分類技術。然而,SVM算法的時間復雜度是O(n3),當處理的數據集規模增大時,其計算量急劇增加,導致訓練速度變慢。
針對上述問題,本文提出一種基于Spark的并行DAGSVM網絡流量分類方法。該方法利用Spark基于內存分布式計算可以加快運行速度的優勢,在其上實現DAGSVM方法得到并行網絡流量分類模型來提高網絡流量分類的效率。
目前,為提高使用SVM算法進行網絡流量分類的效率所做的研究可以分為算法和云平臺兩方面。在算法方面:邱婧等[7]提出一種基于支持向量機決策樹的網絡流量分類方法,該方法可以解決傳統SVM算法訓練時間較長和存在無法識別區域的問題,實驗結果表明,該方法比OAA(one against all)、OAO(one against one)多分類SVM方法的訓練時間更短,準確率更高。林海濤等[8]提出一種迭代優化SVM網絡流量分類方法,通過訓練SVM分類模型時不斷迭代優化訓練樣本的參數向量達到最優分類模型,利用高斯牛頓算法預測參數搜索方向來加快訓練速度,在保持較高分類精度的前提下比傳統8種SVM分類方法的速度更快。在云平臺方面:裴楊等[9]提出一種基于Hadoop平臺的并行SVM網絡流量分類方法,該方法先將訓練數據集劃分成多個子集,然后把這些子集分配到各個計算節點并計算得出支持向量,最后合并這些支持向量進而得到最終的分類模型,實驗結果表明,在保持較高分類準確率的情況下,訓練時間縮小并且可以依據實際需要近乎線性地增加計算節點以加快訓練速度。Do Le Quoc等[10]提出一種可擴展的分布式SVM網絡流量分類方法,該方法先使用Hadoop平臺并行計算訓練子集得到支持向量,然后把支持向量保存到相當于計算機緩存的Redis內存數據庫中并去除重復支持向量,最后把支持向量實時地并入之前的訓練子集、不斷迭代直到支持向量不再變化,進而訓練得到最優分類模型,實驗結果表明,該方法使用19個Mapper節點時比單機SVM分類方法訓練速度快9倍、分類速度快15倍。但是,Hadoop平臺的分布式計算框架MapReduce在計算的過程中會把中間結果保存在硬盤中,導致其運算速度受到硬盤IO速度的制約。把中間結果保存在內存中,直到計算結束才把結果輸出到硬盤可以進一步提高運算速度。
Spark[11]是基于內存計算的分布式計算框架,它采用主從架構,由一個Master主節點和多個Worker從節點構成,Master負責管理整個集群,Worker負責完成分配的計算任務。因此,Spark可以靈活改變參與計算的Worker節點數來調整計算能力的大小以適應不同計算任務的需要。Spark比其它分布式計算框架(如MapReduce)計算效率高,原因在于:Spark基于內存計算,它抽象出分布式內存存儲結構彈性分布式數據集 (resilient distributed datasets,RDD)。RDD支持把外部數據源細粒度地映射到內存中,成為一個初始的RDD;在每個RDD上有如map、reduceByKey、join等功能多樣的算子來實現不同的任務需要。Spark按照有向無環圖的方式將一個任務分解成前后依賴的多個階段,在每個階段里面的RDD上實現不同的算子并把這些階段串行或并行地執行直到任務完成才把結果輸出到硬盤,在計算的過程中沒有與硬盤發生交互,如圖1所示。

圖1 Spark執行過程
要得到多分類SVM分類模型,就是要把二分類SVM算法作用于訓練子集,得到對應的二分類子分類器,然后通過組合子分類器得到多分類模型。OAA、OAO、DAG是把二分類子分類器組合成多分類器的方法。OAA、OAO因為存在無法識別的區域而很少使用。DAG方法通過把各個子分類器組合成為一個有向無環圖,解決了這一問題。有向無環圖是一個有方向的、不循環的圖,如圖2所示。當未知實例經過該圖時,從根節點開始,只需要幾次判斷到達葉子節點即可完成判別。

圖2 DAG多分類方法
本文利用Spark的機器學習庫(machine learning lib-rary,MLlib)包含的并行Binary Linear SVM算法訓練得到對應的并行二分類子分類器,結合上述DAG方法得到并行DAGSVM網絡流量分類模型,如圖3所示。首先,把包含K個類別的訓練集切分成K個只包含一類的訓練子集并對之進行數據預處理;然后兩兩組合訓練子集得到K(K-1)/2個訓練子集并在這些數據子集上使用并行Binary Li-near SVM算法得到對應的并行子分類器;最后利用DAG方法組合子分類器對未知流量樣本進行判斷,即組合成多分類網絡流量分類模型進行分類。

圖3 并行DAGSVM網絡流量分類模型
結合上述網絡流量分類模型,利用Spark計算框架,得到基于Spark的并行DAGSVM網絡流量分類方法,步驟如下:
步驟1 把訓練集上傳到Hadoop分布式文件系統(Hadoop distributed file system,HDFS),進行數據預處理并將訓練集按類別K分成K個子集;
步驟2 把K個子集映射為RDD,每一個子集對應一個RDD,兩兩組合成K(K-1)/2個訓練子集RDD;
步驟3 用每一個RDD訓練得到一個并行Binary Linear SVM子分類器;
步驟4 用DAG方法組合每一個子分類器得到并行DAGSVM多分類器;
步驟5 對并行DAGSVM分類器,使用測試集進行測試得到分類結果。
本文實驗所使用的網絡流量分類工具是單機環境下LibSVM[12]和在云平臺上搭建的CDH(cloudera’s distribution including apache Hadoop)中集成的Spark集群。在LibSVM中用徑向基核函數;在Spark集群中采用Standalone模式,有一臺Master節點、5臺Worker節點,其參數見表1、表2。在實驗時僅使用其中的8個核、10個G的內存。

表1 Spark集群硬件配置
為了驗證提出的并行DAGSVM網絡流量分類方法,

表2 Spark集群軟件配置
本文使用了由真實網絡流量組成的Moore數據集。它包含10個取自某機構一天中不同時段的流量數據子集,是目前最權威的網絡流量數據集。取其中占絕大部分比例,既能體現DAG方法實現多分類SVM的過程,又能代表Moore數據集類別數量分布的WWW、MAIL、FTP-DATA、SERVICES這4種類型組成實驗數據集MooreTest_Set,共包含364 555個流量樣本,其流量樣本統計信息見表3。每個樣本由248個流統計特征和一個類別標簽組成。為了使數據集符合Spark的格式要求,數據集中的缺失值用其所在特征維度的平均值代替,數據集中的標稱類型{Y,N}用數值1代替Y、0代替N。

表3 MooreTest_Set數據集樣本統計信息
基于Spark的并行DAGSVM網絡流量分類方法與單機SVM網絡流量分類方法的比較是從時間和精度兩個方面進行的。為了進行時間方面的比較,將上述數據集按類別分類且不放回隨機抽取每個類別數據子集的50%合并為測試集,剩余的數據子集又按類別不放回地隨機抽樣每個類別的20%、40%、60%、80%、100%合并為數量不同的訓練集,通過改變訓練樣本的數目來比較兩種方法在訓練時間上的性能,結果見表4。

表4 單機SVM與并行DAGSVM方法訓練時間
由表4可知,在訓練樣本數量較小時,并行DAGSVM分類方法的訓練時間就已經遠小于單機SVM分類方法的,隨著樣本數量的增加,并行DAGSVM方法消耗的時間幾乎保持不變,而單機SVM方法的急劇增加,兩者之間的差異越來越大。這是因為在訓練樣本數量相同時,計算量相同,并行DAGSVM分類方法的計算是在內存中進行并且多個計算節點同時參與,運算速度快、計算能力強,花費的時間就少;而單機SVM分類方法計算時不斷與硬盤交互而受到硬盤IO速度的影響并且單機計算能力有限,花費時間就多;當訓練樣本增加,計算量急劇增大,并行DAGSVM方法的計算能力足夠而花費的時間幾乎不變,單機SVM方法因為其單機計算能力的限制,時間就急劇增大。
為了更直觀地展示并行DAGSVM分類方法比單機SVM分類方法在訓練時間上的優勢,本文使用加速比指標R,即單機分類方法的分類模型訓練時間(TsingleSVM)與并行分類方法的分類模型訓練時間(TparallelDAGSVM)的比值,即R=TsingleSVM/TparallelDAGSVM結果如圖4所示。

圖4 加速比曲線
從圖4中可以發現,隨著訓練樣本數量線性地增加,加速比近乎線性地增大,并行DAGSVM分類方法在訓練時間上的優勢越明顯。
為了進行精度方面的比較,本文使用整體準確率(ove-rallaccuracy)度量并行DAGSVM分類方法與單機SVM分類方法的分類精度,其定義為
其中,TP(true positive),FP(false positive)的關系見表5。

表5 TP與FP的關系
實驗把MooreTest_Set數據集按照前文所述的抽樣方法得到訓練樣本數量不等的訓練子集,用兩種方法分別訓練得到分類器并對之命名為1、2、3、4、5,用測試集測試它們得到準確率如圖5所示。

圖5 兩種方法整體準確率對比
從圖5中可以發現,在相同的訓練集上得到的兩種分類器就已經獲得較高的分類精度,并行DAGSVM分類方法比單機SVM分類方法的準確率高一些,這是因為并行分類方法在實現的過程中對代價函數使用了L2正則化來避免過擬合訓練集的原因。
由上述實驗結果可知,并行DAGSVM網絡流量分類方法在確保分類精度的同時,有效減少了訓練時間,適合于大規模網絡流量分類。
本文利用分布式計算框架Spark中包含的并行二分類SVM算法結合DAG方法實現了并行DAGSVM多分類方法并把它用在網絡流量分類上,通過實驗驗證了它的性能。在確保較高分類精度的情況下,可以加快訓練速度,能夠解決大規模網絡流量分類效率低的問題。并行二分類SVM算法是一個線性的算法,沒有使用核函數來把線性不可分問題線性化,把它用在實際的網絡流量數據集得到的準確率并不是盡如人意,下一步我們要做的工作是利用Spark中包含的并行算法來設計一種有更高分類精度的網絡流量分類方法。
[1]Jun Zhang,Chao Chen,Yang Xiang,et al.Semi-supervised and compound classification of network traffic[C]//32nd International Conference on Distributed Computing Systems Workshops,2012:617-621.
[2]Suzuki Masaki,Watari Masafumi,Ano Shigehiro,et al.Traffic classification on mobile core network considering regula-rity of background traffic[C]//International Workshop Technical Committee on Communications Quality and Reliability.Charleston:IEEE,2015:1-6.
[3]Noora Al Khater,Richard E Overill.Network traffic classification techniques and challenges[C]//10th International Conference on Digital Information Management,2015:43-48.
[4]ChaoWang,TonggeXu,XiQin.Networktrafficclassificationwithimprovedrandomforest[C]//11thInternationalConfe-renceonComputationalIntelligenceandSecurity,2015:78-81.
[5]TaoQin,LeiWang,ZhaoliLiu,etal.RobustapplicationidentificationmethodsforP2PandVoIPtrafficclassificationinbackbonenetworks[J].Knowledge-BasedSystems,2015,82:152-162.
[6]PANWubin,CHENGGuang,GUOXiaojun,etal.Anadaptiveclassificationapproachbasedoninformationentropyfornetworktrafficinpresenceofconceptdrift[J/OL].[2016-05-10/2016-12-10].http://www.cnki.net/kcms/detail/11.1826.TP. 20160510.1455.002.html(inChinese).[潘吳斌,程光,郭曉軍,等.基于信息熵的自適應網絡流概念漂移分類方法[J/OL].[2016-05-10/2016-12-10].http://www.cnki.net/kcms/detail/11.1826.TP.20160510.1455.002.html.]
[7]QIUJing,XIAJingbo,BAIJun.NetworktrafficclassificationusingSVMdecisiontree[J].ElectronicsOptics&Control,2012,19(6):13-16(inChinese).[邱婧,夏靖波,柏駿.基于SVM決策樹的網絡流量分類[J].電光與控制,2012,19(6):13-16.]
[8]LINHaitao,CHENYuan.Networktrafficclassificationbyite-rativetuningsupportvectormachine[J].JournalofNavalUniversityofEngineering,2016,28(5):10-14(inChinese).[林海濤,陳源.迭代優化SVM網絡流量分類技術研究[J].海軍工程大學學報,2016,28(5):10-14.]
[9]PEIYang,WANGYong,TAOXiaoling,etal.ParallelnetworktrafficclassificationmethodbasedonSVM[J].Compu-terEngineeringandDesign,2013,34(8):2646-2650(inChinese).[裴楊,王勇,陶曉玲,等.基于SVM的并行網絡流量分類方法[J].計算機工程與設計,2013,34(8):2646-2650.]
[10]DoLeQuoc,ValerioD′Alessandro,ByungchulPark,etal.Scalablenetworktrafficclassificationusingdistributedsupportvectormachines[C]//8thInternationalConferenceonCloudComputing.NewYork:IEEE,2015:1008-1012.
[11]ApachesparkTM-lightning-fastclustercomputing[EB/OL].[2016-11-10/2016-12-10].http://spark.apache.org.
[12]Chih-ChungChang,Chih-JenLin.LIBSVM:Alibraryforsupportvectormachines[J].ACMTransactionsonIntelligentSystemsandTechnology,2011,2(3):389-396.