李兆斌 韓 禹 魏占禎 劉澤一
(北京電子科技學院 北京 100070)
SDN將控制層與數(shù)據(jù)轉發(fā)層解耦,控制層負責管控全局網(wǎng)絡,數(shù)據(jù)轉發(fā)層負責按照控制層下發(fā)的流表完成數(shù)據(jù)轉發(fā)。這極大提高了網(wǎng)絡部署和管理的靈活性,使SDN得到大量推廣與應用,成為5G通信、數(shù)據(jù)中心網(wǎng)絡等熱點領域的關鍵技術。
SDN的優(yōu)勢之一就是可以實現(xiàn)對數(shù)據(jù)流量的集中管控。為了更好地發(fā)揮這種優(yōu)勢,如何進行細粒度流量管控,提高管控效率成為研究熱點。文獻[1-3]提出了多種SDN網(wǎng)絡中的流量管控方案。文獻[4-5]提出了在數(shù)據(jù)中心網(wǎng)絡應用環(huán)境下的SDN流量調度方案。文獻[6]提出了一種在物聯(lián)網(wǎng)應用環(huán)境下的SDN流量管理機制。這些研究都沒有在實施管控前對流量進行分類,僅是根據(jù)網(wǎng)絡擁塞程度,對所有數(shù)據(jù)流進行無類別差異的管控。然而,當用戶在SDN中同時觀看在線視頻和進行下載時,在帶寬有限的情況下需要動態(tài)調節(jié)在線視頻和下載的速率以提高用戶體驗,但現(xiàn)有的SDN流量管控方案由于無法區(qū)分流量類型往往難以實現(xiàn)上述有針對性的流量管控。如果SDN控制器能在實施管控前明確區(qū)分出在線視頻流量和下載流量,就能根據(jù)數(shù)據(jù)流量類別有針對性的合理配置網(wǎng)絡資源。
但目前數(shù)據(jù)流量的種類日趨復雜,傳統(tǒng)的基于端口匹配、基于深度包檢測等分類方法由于動態(tài)端口、加密數(shù)據(jù)包的出現(xiàn)已經(jīng)很難準確判斷出流量種類。針對傳統(tǒng)數(shù)據(jù)流量分類方法的種種局限,基于機器學習的數(shù)據(jù)流量分類方法應運而生。它通過統(tǒng)計數(shù)據(jù)流量的各種信息來判定應用類型,因此也被稱為基于統(tǒng)計的數(shù)據(jù)流量分類方法。其憑借分類范圍廣、能夠處理高維度數(shù)據(jù)等優(yōu)勢,成為當今數(shù)據(jù)流量分類領域最炙手可熱的技術。伴隨著對機器學習研究的逐漸加深,現(xiàn)今已經(jīng)有眾多研究者使用機器學習算法對數(shù)據(jù)流量進行過分類。文獻[7]實現(xiàn)了對加密流量的分類;文獻[8]實現(xiàn)了對HTTP、FTP、BitTorrent、SMTP流量的分類;文獻[9]實現(xiàn)了對FTP、TELNET、DNS、IM流量的分類;文獻[10]實現(xiàn)了對P2P流量的分類;文獻[11]實現(xiàn)了對HTTP流量的分類。在對視頻流量和下載流量的分類方面;文獻[12]對網(wǎng)絡視頻業(yè)務流的特征選取與分類方法進行了研究;文獻[13]實現(xiàn)了對網(wǎng)絡游戲流量和視頻業(yè)務流量的分類。但目前使用機器學習算法對在線視頻流量和下載流量進行分類的研究依然較少。
本文首先需要研究選取有效特征,在離線模式下使用機器學習算法訓練出可以對在線視頻流量和下載流量進行高準確度區(qū)分的模型。由于使用網(wǎng)絡流統(tǒng)計特征作為機器學習分類依據(jù),所以特征選擇的好壞,直接影響到模型的分類效果。根據(jù)對比研究,本文選擇了8個特征,見表1。所有特征的統(tǒng)計信息均取自單段流前1 500個TCP數(shù)據(jù)包。
表1 特征集合
續(xù)表1
數(shù)據(jù)集中單獨使用每個特征對在線視頻流量和下載流量進行區(qū)分時,根據(jù)數(shù)據(jù)集中流量分布情況可以大致判斷出特征的有效性。其中前5個特征為網(wǎng)絡流量分類常用特征,本文不再贅述。后3個特征是根據(jù)在線視頻流量和下載流量的數(shù)據(jù)包特征研究后有針對性選取,分別為PSH標志數(shù)量,包大小變換次數(shù),下上行數(shù)據(jù)流總字節(jié)數(shù)之比。
PSH是TCP報頭中的一個標志位。當兩個程序在進行交互通信時,一端的程序想要立即收到對方響應,TCP就可以使用Push操作。接收端在收到包含PSH標志位的數(shù)據(jù)時,迅速將數(shù)據(jù)交付給應用層。在線視頻流量和下載流量傳輸急迫性存在差別,一般情況下載流量由于需要及時響應,每段流中PSH數(shù)量相對多一些。由圖1可見,PSH數(shù)量大于400左右時數(shù)據(jù)為下載流量的情況較多,否則數(shù)據(jù)為在線視頻流量的情況較多,可以看出PSH數(shù)量作為區(qū)分在線視頻流量和下載流量的特征能起到一定效果。
圖1 使用PSH標志數(shù)量分類的流量分布
包大小變換次數(shù)是指在同一段數(shù)據(jù)流內連續(xù)傳輸?shù)臄?shù)據(jù)包大小發(fā)生變化的次數(shù)。一般情況下,由于下載時數(shù)據(jù)包內容和大小變化較大,所以下載流量的包大小變換次數(shù)要比在線視頻流量多。如圖2所示,包大小變換次數(shù)大于550左右時,數(shù)據(jù)為下載流量的情況較多,否則數(shù)據(jù)為在線視頻流量的情況較多,可以看出包大小變換次數(shù)作為區(qū)分在線視頻流量和下載流量的特征能起到一定效果。
圖2 使用包大小變換次數(shù)分類的流量分布
下上行數(shù)據(jù)流總字節(jié)數(shù)之比是指一段下行數(shù)據(jù)流到達1 500個數(shù)據(jù)包時總字節(jié)數(shù)與此時上行的另一段反向數(shù)據(jù)流總字節(jié)數(shù)之比。一般情況,在線視頻流量在進行上下行交互時,由于存在緩沖機制,不需要時時上傳,所以上行傳輸頻率低,下上行數(shù)據(jù)流總字節(jié)數(shù)之比就高。而下載流量時時都要進行交互,上傳傳輸頻率高,下上行數(shù)據(jù)流總字節(jié)數(shù)之比就低。圖3顯示下上行數(shù)據(jù)流總字節(jié)數(shù)之比大于75左右時,數(shù)據(jù)為在線視頻流量的情況較多,否則數(shù)據(jù)為下載流量的情況較多,可以看出下上行數(shù)據(jù)流總字節(jié)數(shù)之比作為區(qū)分在線視頻流量和下載流量的特征能起到一定效果。
圖3 使用下上行數(shù)據(jù)流總字節(jié)數(shù)之比分類的流量分布
本文需要研究將離線模式下訓練出的基于機器學習的數(shù)據(jù)流量分類模型應用到SDN中實現(xiàn)實時流量分類功能。SDN實時流量分類應用總體設計方案如圖4所示,主要分為以下幾部分:利用_packet_in_handler()函數(shù)提取和保存流量信息;設計Calculate()函數(shù)計算所需流量特征;將流量特征處理成機器學習可調用的形式;將處理完成的流量特征導入機器學習模型進行分類計算。計算出的分類結果可以應用到流量管控中,實現(xiàn)對流量的細粒度操作,進而提高QoS。
圖4 SDN實時流量分類應用總體設計
在SDN中,控制器實現(xiàn)實時流量分類功能需要先提取和分析數(shù)據(jù)包內容,而Packet-In消息可以將到達OpenFlow交換機的數(shù)據(jù)包發(fā)送至控制器,所以本文利用Packet-In消息完成相關設計工作。
具體實現(xiàn)流程如圖5所示??刂破骱蚈penFlow交換機建立連接后,數(shù)據(jù)包會以Packet-In消息的形式上傳給控制器。因為在線視頻流量和下載流量均以TCP包為主,所以本文只分析TCP包。若數(shù)據(jù)包不是TCP包,控制器會將數(shù)據(jù)包丟棄;若數(shù)據(jù)包是TCP包,則要提取數(shù)據(jù)包的包大小等信息。接著,若TCP包數(shù)據(jù)屬于新的數(shù)據(jù)流,則新建這條流對應的統(tǒng)計信息列表;若TCP數(shù)據(jù)包屬于已有數(shù)據(jù)流,則更新這條流對應的統(tǒng)計信息列表。當某條數(shù)據(jù)流中包個數(shù)到達1 500時,調用Calculate()函數(shù)計算數(shù)據(jù)流的8個流量特征。最后將計算出的流量特征進行格式處理后導入機器學習模型進行分類計算,得出分類結果。
圖5 SDN實時流量分類應用實現(xiàn)流程
本文測試使用Wmware WorkStation 12 pro虛擬機,操作系統(tǒng)使用Ubuntu16.04,SDN控制器使用Ryu,測試平臺使用Mininet。測試應用環(huán)境如圖6所示,具體包括實時流量分類應用、控制器、OpenFlow交換機、主機等部分,其中主機nat0與互聯(lián)網(wǎng)直接相連,主機h1、h2與互聯(lián)網(wǎng)的交互都要通過主機nat0作為傳輸媒介。Ryu控制器的IP地址為127.0.0.1,主機h1、h2,nat0的IP地址分別為10.0.0.1、10.0.0.2、10.0.0.3。
圖6 SDN實時流量分類應用測試環(huán)境
(1) 采集數(shù)據(jù)集 本文在SDN中使用WireShark抓取了大量不同時間段在線視頻流量和下載流量的數(shù)據(jù)包。因為網(wǎng)絡環(huán)境會隨著時間等各種因素發(fā)生變化,為了使實驗數(shù)據(jù)更能反映不同種類流量的普遍特性,抓取時間跨度從2018年1月-2018年3月。其中在線視頻流量主要抓取了主流視頻網(wǎng)站的在線視頻數(shù)據(jù)流,下載流量主要抓取了主流下載網(wǎng)站的軟件、游戲等各種下載數(shù)據(jù)流,每次抓取大概持續(xù)5分鐘,以pcap文件形式保存。圖7是抓取的視頻數(shù)據(jù)包。
圖7 使用WireShark抓取的視頻數(shù)據(jù)包
(2) 數(shù)據(jù)集標簽化 使用WireShark抓取的數(shù)據(jù)包中,每個pcap文件會有很多數(shù)據(jù)流,但其中可能只有一兩條屬于有效在線視頻流量或者有效下載流量,其余均為一些小時延的無關web流,在進行數(shù)據(jù)集標簽化的過程中需要將這些無關數(shù)據(jù)流剔除掉。本文選取包數(shù)量大于1 000個且平均包大小大于800字節(jié)的數(shù)據(jù)流為有效數(shù)據(jù)流,按照主機訪問的是在線視頻請求或是下載請求對相應有效數(shù)據(jù)流進行標簽化,標簽分別為:multimedia(在線視頻流量)、download(下載流量)。
(3) 處理數(shù)據(jù)集 將數(shù)據(jù)集中的每條數(shù)據(jù)流處理成只包含平均包大小、包大小的標準差、數(shù)據(jù)流傳輸速率、包到達平均時間間隔、包到達時間間隔的標準差、PSH標志數(shù)量、包大小變化次數(shù)、下上行數(shù)據(jù)流總字節(jié)數(shù)之比這8個特征的形式。之后將處理好的數(shù)據(jù)集按照隨機抽樣的方法進行分割,其中70%為訓練集,30%為測試集。
(4) 使用機器學習算法對訓練集進行訓練 本文使用Sklearn進行機器學習的相關訓練測試工作。Sklearn是一個Python常用的機器學習算法庫,能夠使用相應接口實現(xiàn)不同算法的調用,使用時將訓練集導入Sklearn內置的相應機器學習算法函數(shù)即可完成訓練。為了選取較優(yōu)的算法,本文對比測試了10種常用的監(jiān)督機器學習算法,其中4種為集成算法,分別是:隨機森林(RandomForest)、極端隨機樹(ExtraTrees)、AdaBoost、漸變樹提升(GradientBoosting)。另外6種為普通算法,分別是:決策樹(DecisionTree(CART))、樸素貝葉斯(Naive Bayes)、多層神經(jīng)網(wǎng)絡(Multi-layer Perceptron)、邏輯回歸(LogisticRegression)、K最近鄰(k-NearestNeighbor)、支持向量機(Support Vector Machine)。
(5) 使用離線測試集評估模型并輸出模型 完成訓練后需要使用離線測試集對訓練好的機器學習模型進行評估,機器學習模型一般通過查準率(Precision)、召回率(Recall)、綜合評價指標(F1_score)、正確率(Accuracy)進行評估。手動設置如果判定為在線視頻流量,則做出positive判定,如果判定不是在線視頻流量(下載流量),則做出Negative判定。TP表示正確的positive判定數(shù)量,FP表示錯誤的positive判定數(shù)量,TN表示正確的Negative判定數(shù)量,F(xiàn)N表示錯誤的Negative判定數(shù)量。則四個參數(shù)定義為:Precision=TP/(TP+FP),Recall=TP/(TP+FN),F(xiàn)1_score=P×R/2(P+R),Accuracy=(TP+TN)/(TP+FP+TN+FN)。不同機器學習分類模型使用離線測試集進行評估得出的分類性能指標如表2所示。
表2 不同機器學習分類模型得出的分類性能指標 %
可以看出,隨機森林(RandomForest)模型的綜合評價指標(F1_score)和正確率(Accuracy)均最高,所以選取并輸出隨機森林模型在SDN中設計實現(xiàn)實時分類流量應用。
(6) SDN實時流量分類應用測試效果 在使用Ubuntu系統(tǒng)搭建的SDN虛擬環(huán)境中,按照設計方案,利用選取的隨機森林模型,編程實現(xiàn)SDN實時流量分類應用。應用測試時,先在打開Ryu控制器和應用文件,再將Ryu控制器與Mininet連通。接著在Mininet中打開h1主機,配置好網(wǎng)絡后使用h1主機訪問相應網(wǎng)站時,命令行界面就會顯示出流量分類結果。SDN實時流量分類應用測試效果如圖8所示,應用顯示內容包含計算出的流量種類與本段數(shù)據(jù)流的特征信息。
(a) 觀看在線視頻時的應用測試效果
(b) 進行下載時的應用測試效果圖8 SDN實時流量分類應用測試效果圖
(7) SDN實時流量分類應用分類性能測試 本文選取了10個主流網(wǎng)站對SDN實時流量分類應用的分類性能進行測試,其中5個視頻網(wǎng)站,分別是愛奇藝視頻、音悅Tai、優(yōu)酷視頻、B站、騰訊視頻;5個下載網(wǎng)站,分別是中關村在線下載、PC6下載站、華軍軟件園、下載吧、百度軟件中心。每個網(wǎng)站分別隨機選取20條數(shù)據(jù)流進行實時分類測試,測試結果如圖9所示??梢钥闯?,本文設計的SDN實時流量分類應用分類準確率較高,平均準確率達到91.5%。
圖9 SDN實時流量分類應用在線測試準確率
3.3.1分類應用測試效果分析與比較
本部分主要分析測試時的數(shù)據(jù)包數(shù)量閾值選取和應用顯示效果。
當分類應用捕捉到數(shù)據(jù)流通過時,開始對同段數(shù)據(jù)流中數(shù)據(jù)包進行計數(shù),命令行界面會分別在數(shù)據(jù)包數(shù)量到達500和1 000時進行文字提醒。當同段數(shù)據(jù)流中數(shù)據(jù)包數(shù)量到達1 500時,即判定此條數(shù)據(jù)流為在線視頻或者下載,并開始計算此條數(shù)據(jù)流的特征信息。分類應用通過隨機森林算法,根據(jù)計算出的特征信息得出分類結果。選擇1 500作為分類時的數(shù)據(jù)包數(shù)量閾值的原因如下:
一是經(jīng)實驗分析與比較,在正常瀏覽網(wǎng)頁(不進行視頻或下載業(yè)務)時,短時的流量種類繁雜,且同段數(shù)據(jù)流的數(shù)據(jù)包數(shù)量較少,一般很難達到1 500。而進行在線視頻或下載業(yè)務時,短時流量種類較為單一,同段數(shù)據(jù)流瞬時流量較大。因此,當某段數(shù)據(jù)流中包個數(shù)達到1 500時,基本可以判定此條數(shù)據(jù)流為在線視頻或者下載。
二是經(jīng)實驗分析與比較,當數(shù)據(jù)包數(shù)量閾值到達1 500時,分類準確率基本達到峰值。再提高閾值,分類準確率提高的幅度十分有限??紤]到處理效率的原因,選擇1 500作為閾值可以在保證較高處理效率的同時實現(xiàn)較高的分類準確率。
分類結果計算完成后,命令行界面會顯示如下信息:流量種類(在線視頻或下載)、此條數(shù)據(jù)流信息(源IP地址、目的IP地址、源端口、目的端口)、平均包大小、包大小的標準差、數(shù)據(jù)流傳輸速率、包到達平均時間間隔、包到達時間間隔的標準差、PSH標志數(shù)量、包大小變化次數(shù)、下上行數(shù)據(jù)流總字節(jié)數(shù)之比。通過以上信息可以清楚分辨數(shù)據(jù)流是在線視頻或下載,并能掌握數(shù)據(jù)流分類的有關特征信息。
3.3.2分類性能測試分析與比較
本部分主要分析本文測試時在線視頻流量和下載流量的分類性能并與文獻[13]進行對比。
通過圖9可見,在測試的10個網(wǎng)站中,視頻與下載流量綜合分類準確率約為91.5%。有8個網(wǎng)站分類準確率等于或高于85%,這8個網(wǎng)站中有5個網(wǎng)站的分類準確率達到100%。所有測試網(wǎng)站中僅有2個網(wǎng)站分類準確率偏低,一個為75%,另一個為80%。經(jīng)數(shù)據(jù)分析這2個網(wǎng)站的不同種類數(shù)據(jù)流特征信息非常相似,導致分類應用產(chǎn)生了一定程度的誤判。
同時與文獻[13]中對于在線視頻流量和下載流量的分類性能進行對比分析。本文對于在線視頻流量和下載流量的分類相對于文獻[13]有以下改進:
文獻[13]中當數(shù)據(jù)包閾值為1 000時,全局正確率在85%左右且波動較大;閾值到達4 000時,分類準確率才能穩(wěn)定在92%左右。但本文通過優(yōu)化特征集并結合SDN的架構優(yōu)勢,實現(xiàn)了在數(shù)據(jù)包數(shù)量閾值僅為1 500時,也可以將分類準確率穩(wěn)定保持在91.5%左右的效果。這樣既能優(yōu)化處理效率,又能保持較高的分類準確率。
SDN控制層由于需要處理大量數(shù)據(jù)流,如何在處理前對流量進行分類,以便在后續(xù)操作中減輕SDN控制層處理壓力,從而實現(xiàn)細粒度管控,已經(jīng)成為SDN研究的熱點之一。本文設計的基于機器學習的SDN實時流量分類應用可以實時、有效地區(qū)分在線視頻流量和下載流量。今后的研究重點在于如何將分類結果應用到SDN中實現(xiàn)細粒度的數(shù)據(jù)流量管控,進而優(yōu)化QoS。