梁文國,王 勇,俸 皓
(1.桂林電子科技大學(xué) 信息與通信學(xué)院,廣西 桂林 541004;2.桂林電子科技大學(xué) 廣西云計算與復(fù)雜系統(tǒng)高校重點實驗室,廣西 桂林 541004)
近年來,隨著智能手機(jī)和平板電腦的普及、新網(wǎng)絡(luò)應(yīng)用不斷出現(xiàn),網(wǎng)絡(luò)流量呈指數(shù)增長[1,2],原有的網(wǎng)絡(luò)流量分類方法不足以在合理的時間范圍內(nèi)識別出其中的應(yīng)用類型,快速準(zhǔn)確地進(jìn)行流量分類已經(jīng)成為一個不可忽視的問題[3]?;诙丝谔栍成涞木W(wǎng)絡(luò)流量分類方法由于動態(tài)端口技術(shù)的使用而準(zhǔn)確率越來越低;基于深層數(shù)據(jù)包檢測的分類方法由于新應(yīng)用普遍使用載荷加密技術(shù)、私有協(xié)議的原因,分類越來越困難[4];基于傳輸層行為模式的分類方法由于地址轉(zhuǎn)換技術(shù)的限制,準(zhǔn)確率受到影響。為了解決這些問題,近年來許多學(xué)者使用基于流統(tǒng)計特征的機(jī)器學(xué)習(xí)分類方法來進(jìn)行分類[5,6]。其中,SVM算法具有堅實的統(tǒng)計學(xué)理論基礎(chǔ),對維數(shù)不敏感、泛化能力強(qiáng)、分類準(zhǔn)確率高、穩(wěn)定性好,適合用作網(wǎng)絡(luò)流量分類技術(shù)。然而,SVM算法的時間復(fù)雜度是O(n3),當(dāng)處理的數(shù)據(jù)集規(guī)模增大時,其計算量急劇增加,導(dǎo)致訓(xùn)練速度變慢。
針對上述問題,本文提出一種基于Spark的并行DAGSVM網(wǎng)絡(luò)流量分類方法。該方法利用Spark基于內(nèi)存分布式計算可以加快運(yùn)行速度的優(yōu)勢,在其上實現(xiàn)DAGSVM方法得到并行網(wǎng)絡(luò)流量分類模型來提高網(wǎng)絡(luò)流量分類的效率。
目前,為提高使用SVM算法進(jìn)行網(wǎng)絡(luò)流量分類的效率所做的研究可以分為算法和云平臺兩方面。在算法方面:邱婧等[7]提出一種基于支持向量機(jī)決策樹的網(wǎng)絡(luò)流量分類方法,該方法可以解決傳統(tǒng)SVM算法訓(xùn)練時間較長和存在無法識別區(qū)域的問題,實驗結(jié)果表明,該方法比OAA(one against all)、OAO(one against one)多分類SVM方法的訓(xùn)練時間更短,準(zhǔn)確率更高。林海濤等[8]提出一種迭代優(yōu)化SVM網(wǎng)絡(luò)流量分類方法,通過訓(xùn)練SVM分類模型時不斷迭代優(yōu)化訓(xùn)練樣本的參數(shù)向量達(dá)到最優(yōu)分類模型,利用高斯牛頓算法預(yù)測參數(shù)搜索方向來加快訓(xùn)練速度,在保持較高分類精度的前提下比傳統(tǒng)8種SVM分類方法的速度更快。在云平臺方面:裴楊等[9]提出一種基于Hadoop平臺的并行SVM網(wǎng)絡(luò)流量分類方法,該方法先將訓(xùn)練數(shù)據(jù)集劃分成多個子集,然后把這些子集分配到各個計算節(jié)點并計算得出支持向量,最后合并這些支持向量進(jìn)而得到最終的分類模型,實驗結(jié)果表明,在保持較高分類準(zhǔn)確率的情況下,訓(xùn)練時間縮小并且可以依據(jù)實際需要近乎線性地增加計算節(jié)點以加快訓(xùn)練速度。Do Le Quoc等[10]提出一種可擴(kuò)展的分布式SVM網(wǎng)絡(luò)流量分類方法,該方法先使用Hadoop平臺并行計算訓(xùn)練子集得到支持向量,然后把支持向量保存到相當(dāng)于計算機(jī)緩存的Redis內(nèi)存數(shù)據(jù)庫中并去除重復(fù)支持向量,最后把支持向量實時地并入之前的訓(xùn)練子集、不斷迭代直到支持向量不再變化,進(jìn)而訓(xùn)練得到最優(yōu)分類模型,實驗結(jié)果表明,該方法使用19個Mapper節(jié)點時比單機(jī)SVM分類方法訓(xùn)練速度快9倍、分類速度快15倍。但是,Hadoop平臺的分布式計算框架MapReduce在計算的過程中會把中間結(jié)果保存在硬盤中,導(dǎo)致其運(yùn)算速度受到硬盤IO速度的制約。把中間結(jié)果保存在內(nèi)存中,直到計算結(jié)束才把結(jié)果輸出到硬盤可以進(jìn)一步提高運(yùn)算速度。
Spark[11]是基于內(nèi)存計算的分布式計算框架,它采用主從架構(gòu),由一個Master主節(jié)點和多個Worker從節(jié)點構(gòu)成,Master負(fù)責(zé)管理整個集群,Worker負(fù)責(zé)完成分配的計算任務(wù)。因此,Spark可以靈活改變參與計算的Worker節(jié)點數(shù)來調(diào)整計算能力的大小以適應(yīng)不同計算任務(wù)的需要。Spark比其它分布式計算框架(如MapReduce)計算效率高,原因在于:Spark基于內(nèi)存計算,它抽象出分布式內(nèi)存存儲結(jié)構(gòu)彈性分布式數(shù)據(jù)集 (resilient distributed datasets,RDD)。RDD支持把外部數(shù)據(jù)源細(xì)粒度地映射到內(nèi)存中,成為一個初始的RDD;在每個RDD上有如map、reduceByKey、join等功能多樣的算子來實現(xiàn)不同的任務(wù)需要。Spark按照有向無環(huán)圖的方式將一個任務(wù)分解成前后依賴的多個階段,在每個階段里面的RDD上實現(xiàn)不同的算子并把這些階段串行或并行地執(zhí)行直到任務(wù)完成才把結(jié)果輸出到硬盤,在計算的過程中沒有與硬盤發(fā)生交互,如圖1所示。
圖1 Spark執(zhí)行過程
要得到多分類SVM分類模型,就是要把二分類SVM算法作用于訓(xùn)練子集,得到對應(yīng)的二分類子分類器,然后通過組合子分類器得到多分類模型。OAA、OAO、DAG是把二分類子分類器組合成多分類器的方法。OAA、OAO因為存在無法識別的區(qū)域而很少使用。DAG方法通過把各個子分類器組合成為一個有向無環(huán)圖,解決了這一問題。有向無環(huán)圖是一個有方向的、不循環(huán)的圖,如圖2所示。當(dāng)未知實例經(jīng)過該圖時,從根節(jié)點開始,只需要幾次判斷到達(dá)葉子節(jié)點即可完成判別。
圖2 DAG多分類方法
本文利用Spark的機(jī)器學(xué)習(xí)庫(machine learning lib-rary,MLlib)包含的并行Binary Linear SVM算法訓(xùn)練得到對應(yīng)的并行二分類子分類器,結(jié)合上述DAG方法得到并行DAGSVM網(wǎng)絡(luò)流量分類模型,如圖3所示。首先,把包含K個類別的訓(xùn)練集切分成K個只包含一類的訓(xùn)練子集并對之進(jìn)行數(shù)據(jù)預(yù)處理;然后兩兩組合訓(xùn)練子集得到K(K-1)/2個訓(xùn)練子集并在這些數(shù)據(jù)子集上使用并行Binary Li-near SVM算法得到對應(yīng)的并行子分類器;最后利用DAG方法組合子分類器對未知流量樣本進(jìn)行判斷,即組合成多分類網(wǎng)絡(luò)流量分類模型進(jìn)行分類。
圖3 并行DAGSVM網(wǎng)絡(luò)流量分類模型
結(jié)合上述網(wǎng)絡(luò)流量分類模型,利用Spark計算框架,得到基于Spark的并行DAGSVM網(wǎng)絡(luò)流量分類方法,步驟如下:
步驟1 把訓(xùn)練集上傳到Hadoop分布式文件系統(tǒng)(Hadoop distributed file system,HDFS),進(jìn)行數(shù)據(jù)預(yù)處理并將訓(xùn)練集按類別K分成K個子集;
步驟2 把K個子集映射為RDD,每一個子集對應(yīng)一個RDD,兩兩組合成K(K-1)/2個訓(xùn)練子集RDD;
步驟3 用每一個RDD訓(xùn)練得到一個并行Binary Linear SVM子分類器;
步驟4 用DAG方法組合每一個子分類器得到并行DAGSVM多分類器;
步驟5 對并行DAGSVM分類器,使用測試集進(jìn)行測試得到分類結(jié)果。
本文實驗所使用的網(wǎng)絡(luò)流量分類工具是單機(jī)環(huán)境下LibSVM[12]和在云平臺上搭建的CDH(cloudera’s distribution including apache Hadoop)中集成的Spark集群。在LibSVM中用徑向基核函數(shù);在Spark集群中采用Standalone模式,有一臺Master節(jié)點、5臺Worker節(jié)點,其參數(shù)見表1、表2。在實驗時僅使用其中的8個核、10個G的內(nèi)存。
表1 Spark集群硬件配置
為了驗證提出的并行DAGSVM網(wǎng)絡(luò)流量分類方法,
表2 Spark集群軟件配置
本文使用了由真實網(wǎng)絡(luò)流量組成的Moore數(shù)據(jù)集。它包含10個取自某機(jī)構(gòu)一天中不同時段的流量數(shù)據(jù)子集,是目前最權(quán)威的網(wǎng)絡(luò)流量數(shù)據(jù)集。取其中占絕大部分比例,既能體現(xiàn)DAG方法實現(xiàn)多分類SVM的過程,又能代表Moore數(shù)據(jù)集類別數(shù)量分布的WWW、MAIL、FTP-DATA、SERVICES這4種類型組成實驗數(shù)據(jù)集MooreTest_Set,共包含364 555個流量樣本,其流量樣本統(tǒng)計信息見表3。每個樣本由248個流統(tǒng)計特征和一個類別標(biāo)簽組成。為了使數(shù)據(jù)集符合Spark的格式要求,數(shù)據(jù)集中的缺失值用其所在特征維度的平均值代替,數(shù)據(jù)集中的標(biāo)稱類型{Y,N}用數(shù)值1代替Y、0代替N。
表3 MooreTest_Set數(shù)據(jù)集樣本統(tǒng)計信息
基于Spark的并行DAGSVM網(wǎng)絡(luò)流量分類方法與單機(jī)SVM網(wǎng)絡(luò)流量分類方法的比較是從時間和精度兩個方面進(jìn)行的。為了進(jìn)行時間方面的比較,將上述數(shù)據(jù)集按類別分類且不放回隨機(jī)抽取每個類別數(shù)據(jù)子集的50%合并為測試集,剩余的數(shù)據(jù)子集又按類別不放回地隨機(jī)抽樣每個類別的20%、40%、60%、80%、100%合并為數(shù)量不同的訓(xùn)練集,通過改變訓(xùn)練樣本的數(shù)目來比較兩種方法在訓(xùn)練時間上的性能,結(jié)果見表4。
表4 單機(jī)SVM與并行DAGSVM方法訓(xùn)練時間
由表4可知,在訓(xùn)練樣本數(shù)量較小時,并行DAGSVM分類方法的訓(xùn)練時間就已經(jīng)遠(yuǎn)小于單機(jī)SVM分類方法的,隨著樣本數(shù)量的增加,并行DAGSVM方法消耗的時間幾乎保持不變,而單機(jī)SVM方法的急劇增加,兩者之間的差異越來越大。這是因為在訓(xùn)練樣本數(shù)量相同時,計算量相同,并行DAGSVM分類方法的計算是在內(nèi)存中進(jìn)行并且多個計算節(jié)點同時參與,運(yùn)算速度快、計算能力強(qiáng),花費(fèi)的時間就少;而單機(jī)SVM分類方法計算時不斷與硬盤交互而受到硬盤IO速度的影響并且單機(jī)計算能力有限,花費(fèi)時間就多;當(dāng)訓(xùn)練樣本增加,計算量急劇增大,并行DAGSVM方法的計算能力足夠而花費(fèi)的時間幾乎不變,單機(jī)SVM方法因為其單機(jī)計算能力的限制,時間就急劇增大。
為了更直觀地展示并行DAGSVM分類方法比單機(jī)SVM分類方法在訓(xùn)練時間上的優(yōu)勢,本文使用加速比指標(biāo)R,即單機(jī)分類方法的分類模型訓(xùn)練時間(TsingleSVM)與并行分類方法的分類模型訓(xùn)練時間(TparallelDAGSVM)的比值,即R=TsingleSVM/TparallelDAGSVM結(jié)果如圖4所示。
圖4 加速比曲線
從圖4中可以發(fā)現(xiàn),隨著訓(xùn)練樣本數(shù)量線性地增加,加速比近乎線性地增大,并行DAGSVM分類方法在訓(xùn)練時間上的優(yōu)勢越明顯。
為了進(jìn)行精度方面的比較,本文使用整體準(zhǔn)確率(ove-rallaccuracy)度量并行DAGSVM分類方法與單機(jī)SVM分類方法的分類精度,其定義為
其中,TP(true positive),F(xiàn)P(false positive)的關(guān)系見表5。
表5 TP與FP的關(guān)系
實驗把MooreTest_Set數(shù)據(jù)集按照前文所述的抽樣方法得到訓(xùn)練樣本數(shù)量不等的訓(xùn)練子集,用兩種方法分別訓(xùn)練得到分類器并對之命名為1、2、3、4、5,用測試集測試它們得到準(zhǔn)確率如圖5所示。
圖5 兩種方法整體準(zhǔn)確率對比
從圖5中可以發(fā)現(xiàn),在相同的訓(xùn)練集上得到的兩種分類器就已經(jīng)獲得較高的分類精度,并行DAGSVM分類方法比單機(jī)SVM分類方法的準(zhǔn)確率高一些,這是因為并行分類方法在實現(xiàn)的過程中對代價函數(shù)使用了L2正則化來避免過擬合訓(xùn)練集的原因。
由上述實驗結(jié)果可知,并行DAGSVM網(wǎng)絡(luò)流量分類方法在確保分類精度的同時,有效減少了訓(xùn)練時間,適合于大規(guī)模網(wǎng)絡(luò)流量分類。
本文利用分布式計算框架Spark中包含的并行二分類SVM算法結(jié)合DAG方法實現(xiàn)了并行DAGSVM多分類方法并把它用在網(wǎng)絡(luò)流量分類上,通過實驗驗證了它的性能。在確保較高分類精度的情況下,可以加快訓(xùn)練速度,能夠解決大規(guī)模網(wǎng)絡(luò)流量分類效率低的問題。并行二分類SVM算法是一個線性的算法,沒有使用核函數(shù)來把線性不可分問題線性化,把它用在實際的網(wǎng)絡(luò)流量數(shù)據(jù)集得到的準(zhǔn)確率并不是盡如人意,下一步我們要做的工作是利用Spark中包含的并行算法來設(shè)計一種有更高分類精度的網(wǎng)絡(luò)流量分類方法。
[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).[潘吳斌,程光,郭曉軍,等.基于信息熵的自適應(yīng)網(wǎng)絡(luò)流概念漂移分類方法[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決策樹的網(wǎng)絡(luò)流量分類[J].電光與控制,2012,19(6):13-16.]
[8]LINHaitao,CHENYuan.Networktrafficclassificationbyite-rativetuningsupportvectormachine[J].JournalofNavalUniversityofEngineering,2016,28(5):10-14(inChinese).[林海濤,陳源.迭代優(yōu)化SVM網(wǎng)絡(luò)流量分類技術(shù)研究[J].海軍工程大學(xué)學(xué)報,2016,28(5):10-14.]
[9]PEIYang,WANGYong,TAOXiaoling,etal.ParallelnetworktrafficclassificationmethodbasedonSVM[J].Compu-terEngineeringandDesign,2013,34(8):2646-2650(inChinese).[裴楊,王勇,陶曉玲,等.基于SVM的并行網(wǎng)絡(luò)流量分類方法[J].計算機(jī)工程與設(shè)計,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.