李兆斌 韓 禹 魏占禎 劉澤一
(北京電子科技學院 北京 100070)
SDN將控制層與數據轉發層解耦,控制層負責管控全局網絡,數據轉發層負責按照控制層下發的流表完成數據轉發。這極大提高了網絡部署和管理的靈活性,使SDN得到大量推廣與應用,成為5G通信、數據中心網絡等熱點領域的關鍵技術。
SDN的優勢之一就是可以實現對數據流量的集中管控。為了更好地發揮這種優勢,如何進行細粒度流量管控,提高管控效率成為研究熱點。文獻[1-3]提出了多種SDN網絡中的流量管控方案。文獻[4-5]提出了在數據中心網絡應用環境下的SDN流量調度方案。文獻[6]提出了一種在物聯網應用環境下的SDN流量管理機制。這些研究都沒有在實施管控前對流量進行分類,僅是根據網絡擁塞程度,對所有數據流進行無類別差異的管控。然而,當用戶在SDN中同時觀看在線視頻和進行下載時,在帶寬有限的情況下需要動態調節在線視頻和下載的速率以提高用戶體驗,但現有的SDN流量管控方案由于無法區分流量類型往往難以實現上述有針對性的流量管控。如果SDN控制器能在實施管控前明確區分出在線視頻流量和下載流量,就能根據數據流量類別有針對性的合理配置網絡資源。
但目前數據流量的種類日趨復雜,傳統的基于端口匹配、基于深度包檢測等分類方法由于動態端口、加密數據包的出現已經很難準確判斷出流量種類。針對傳統數據流量分類方法的種種局限,基于機器學習的數據流量分類方法應運而生。它通過統計數據流量的各種信息來判定應用類型,因此也被稱為基于統計的數據流量分類方法。其憑借分類范圍廣、能夠處理高維度數據等優勢,成為當今數據流量分類領域最炙手可熱的技術。伴隨著對機器學習研究的逐漸加深,現今已經有眾多研究者使用機器學習算法對數據流量進行過分類。文獻[7]實現了對加密流量的分類;文獻[8]實現了對HTTP、FTP、BitTorrent、SMTP流量的分類;文獻[9]實現了對FTP、TELNET、DNS、IM流量的分類;文獻[10]實現了對P2P流量的分類;文獻[11]實現了對HTTP流量的分類。在對視頻流量和下載流量的分類方面;文獻[12]對網絡視頻業務流的特征選取與分類方法進行了研究;文獻[13]實現了對網絡游戲流量和視頻業務流量的分類。但目前使用機器學習算法對在線視頻流量和下載流量進行分類的研究依然較少。
本文首先需要研究選取有效特征,在離線模式下使用機器學習算法訓練出可以對在線視頻流量和下載流量進行高準確度區分的模型。由于使用網絡流統計特征作為機器學習分類依據,所以特征選擇的好壞,直接影響到模型的分類效果。根據對比研究,本文選擇了8個特征,見表1。所有特征的統計信息均取自單段流前1 500個TCP數據包。

表1 特征集合

續表1
數據集中單獨使用每個特征對在線視頻流量和下載流量進行區分時,根據數據集中流量分布情況可以大致判斷出特征的有效性。其中前5個特征為網絡流量分類常用特征,本文不再贅述。后3個特征是根據在線視頻流量和下載流量的數據包特征研究后有針對性選取,分別為PSH標志數量,包大小變換次數,下上行數據流總字節數之比。
PSH是TCP報頭中的一個標志位。當兩個程序在進行交互通信時,一端的程序想要立即收到對方響應,TCP就可以使用Push操作。接收端在收到包含PSH標志位的數據時,迅速將數據交付給應用層。在線視頻流量和下載流量傳輸急迫性存在差別,一般情況下載流量由于需要及時響應,每段流中PSH數量相對多一些。由圖1可見,PSH數量大于400左右時數據為下載流量的情況較多,否則數據為在線視頻流量的情況較多,可以看出PSH數量作為區分在線視頻流量和下載流量的特征能起到一定效果。

圖1 使用PSH標志數量分類的流量分布
包大小變換次數是指在同一段數據流內連續傳輸的數據包大小發生變化的次數。一般情況下,由于下載時數據包內容和大小變化較大,所以下載流量的包大小變換次數要比在線視頻流量多。如圖2所示,包大小變換次數大于550左右時,數據為下載流量的情況較多,否則數據為在線視頻流量的情況較多,可以看出包大小變換次數作為區分在線視頻流量和下載流量的特征能起到一定效果。

圖2 使用包大小變換次數分類的流量分布
下上行數據流總字節數之比是指一段下行數據流到達1 500個數據包時總字節數與此時上行的另一段反向數據流總字節數之比。一般情況,在線視頻流量在進行上下行交互時,由于存在緩沖機制,不需要時時上傳,所以上行傳輸頻率低,下上行數據流總字節數之比就高。而下載流量時時都要進行交互,上傳傳輸頻率高,下上行數據流總字節數之比就低。圖3顯示下上行數據流總字節數之比大于75左右時,數據為在線視頻流量的情況較多,否則數據為下載流量的情況較多,可以看出下上行數據流總字節數之比作為區分在線視頻流量和下載流量的特征能起到一定效果。

圖3 使用下上行數據流總字節數之比分類的流量分布
本文需要研究將離線模式下訓練出的基于機器學習的數據流量分類模型應用到SDN中實現實時流量分類功能。SDN實時流量分類應用總體設計方案如圖4所示,主要分為以下幾部分:利用_packet_in_handler()函數提取和保存流量信息;設計Calculate()函數計算所需流量特征;將流量特征處理成機器學習可調用的形式;將處理完成的流量特征導入機器學習模型進行分類計算。計算出的分類結果可以應用到流量管控中,實現對流量的細粒度操作,進而提高QoS。

圖4 SDN實時流量分類應用總體設計
在SDN中,控制器實現實時流量分類功能需要先提取和分析數據包內容,而Packet-In消息可以將到達OpenFlow交換機的數據包發送至控制器,所以本文利用Packet-In消息完成相關設計工作。
具體實現流程如圖5所示。控制器和OpenFlow交換機建立連接后,數據包會以Packet-In消息的形式上傳給控制器。因為在線視頻流量和下載流量均以TCP包為主,所以本文只分析TCP包。若數據包不是TCP包,控制器會將數據包丟棄;若數據包是TCP包,則要提取數據包的包大小等信息。接著,若TCP包數據屬于新的數據流,則新建這條流對應的統計信息列表;若TCP數據包屬于已有數據流,則更新這條流對應的統計信息列表。當某條數據流中包個數到達1 500時,調用Calculate()函數計算數據流的8個流量特征。最后將計算出的流量特征進行格式處理后導入機器學習模型進行分類計算,得出分類結果。

圖5 SDN實時流量分類應用實現流程
本文測試使用Wmware WorkStation 12 pro虛擬機,操作系統使用Ubuntu16.04,SDN控制器使用Ryu,測試平臺使用Mininet。測試應用環境如圖6所示,具體包括實時流量分類應用、控制器、OpenFlow交換機、主機等部分,其中主機nat0與互聯網直接相連,主機h1、h2與互聯網的交互都要通過主機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實時流量分類應用測試環境
(1) 采集數據集 本文在SDN中使用WireShark抓取了大量不同時間段在線視頻流量和下載流量的數據包。因為網絡環境會隨著時間等各種因素發生變化,為了使實驗數據更能反映不同種類流量的普遍特性,抓取時間跨度從2018年1月-2018年3月。其中在線視頻流量主要抓取了主流視頻網站的在線視頻數據流,下載流量主要抓取了主流下載網站的軟件、游戲等各種下載數據流,每次抓取大概持續5分鐘,以pcap文件形式保存。圖7是抓取的視頻數據包。

圖7 使用WireShark抓取的視頻數據包
(2) 數據集標簽化 使用WireShark抓取的數據包中,每個pcap文件會有很多數據流,但其中可能只有一兩條屬于有效在線視頻流量或者有效下載流量,其余均為一些小時延的無關web流,在進行數據集標簽化的過程中需要將這些無關數據流剔除掉。本文選取包數量大于1 000個且平均包大小大于800字節的數據流為有效數據流,按照主機訪問的是在線視頻請求或是下載請求對相應有效數據流進行標簽化,標簽分別為:multimedia(在線視頻流量)、download(下載流量)。
(3) 處理數據集 將數據集中的每條數據流處理成只包含平均包大小、包大小的標準差、數據流傳輸速率、包到達平均時間間隔、包到達時間間隔的標準差、PSH標志數量、包大小變化次數、下上行數據流總字節數之比這8個特征的形式。之后將處理好的數據集按照隨機抽樣的方法進行分割,其中70%為訓練集,30%為測試集。
(4) 使用機器學習算法對訓練集進行訓練 本文使用Sklearn進行機器學習的相關訓練測試工作。Sklearn是一個Python常用的機器學習算法庫,能夠使用相應接口實現不同算法的調用,使用時將訓練集導入Sklearn內置的相應機器學習算法函數即可完成訓練。為了選取較優的算法,本文對比測試了10種常用的監督機器學習算法,其中4種為集成算法,分別是:隨機森林(RandomForest)、極端隨機樹(ExtraTrees)、AdaBoost、漸變樹提升(GradientBoosting)。另外6種為普通算法,分別是:決策樹(DecisionTree(CART))、樸素貝葉斯(Naive Bayes)、多層神經網絡(Multi-layer Perceptron)、邏輯回歸(LogisticRegression)、K最近鄰(k-NearestNeighbor)、支持向量機(Support Vector Machine)。
(5) 使用離線測試集評估模型并輸出模型 完成訓練后需要使用離線測試集對訓練好的機器學習模型進行評估,機器學習模型一般通過查準率(Precision)、召回率(Recall)、綜合評價指標(F1_score)、正確率(Accuracy)進行評估。手動設置如果判定為在線視頻流量,則做出positive判定,如果判定不是在線視頻流量(下載流量),則做出Negative判定。TP表示正確的positive判定數量,FP表示錯誤的positive判定數量,TN表示正確的Negative判定數量,FN表示錯誤的Negative判定數量。則四個參數定義為:Precision=TP/(TP+FP),Recall=TP/(TP+FN),F1_score=P×R/2(P+R),Accuracy=(TP+TN)/(TP+FP+TN+FN)。不同機器學習分類模型使用離線測試集進行評估得出的分類性能指標如表2所示。

表2 不同機器學習分類模型得出的分類性能指標 %
可以看出,隨機森林(RandomForest)模型的綜合評價指標(F1_score)和正確率(Accuracy)均最高,所以選取并輸出隨機森林模型在SDN中設計實現實時分類流量應用。
(6) SDN實時流量分類應用測試效果 在使用Ubuntu系統搭建的SDN虛擬環境中,按照設計方案,利用選取的隨機森林模型,編程實現SDN實時流量分類應用。應用測試時,先在打開Ryu控制器和應用文件,再將Ryu控制器與Mininet連通。接著在Mininet中打開h1主機,配置好網絡后使用h1主機訪問相應網站時,命令行界面就會顯示出流量分類結果。SDN實時流量分類應用測試效果如圖8所示,應用顯示內容包含計算出的流量種類與本段數據流的特征信息。

(a) 觀看在線視頻時的應用測試效果

(b) 進行下載時的應用測試效果圖8 SDN實時流量分類應用測試效果圖
(7) SDN實時流量分類應用分類性能測試 本文選取了10個主流網站對SDN實時流量分類應用的分類性能進行測試,其中5個視頻網站,分別是愛奇藝視頻、音悅Tai、優酷視頻、B站、騰訊視頻;5個下載網站,分別是中關村在線下載、PC6下載站、華軍軟件園、下載吧、百度軟件中心。每個網站分別隨機選取20條數據流進行實時分類測試,測試結果如圖9所示。可以看出,本文設計的SDN實時流量分類應用分類準確率較高,平均準確率達到91.5%。

圖9 SDN實時流量分類應用在線測試準確率
3.3.1分類應用測試效果分析與比較
本部分主要分析測試時的數據包數量閾值選取和應用顯示效果。
當分類應用捕捉到數據流通過時,開始對同段數據流中數據包進行計數,命令行界面會分別在數據包數量到達500和1 000時進行文字提醒。當同段數據流中數據包數量到達1 500時,即判定此條數據流為在線視頻或者下載,并開始計算此條數據流的特征信息。分類應用通過隨機森林算法,根據計算出的特征信息得出分類結果。選擇1 500作為分類時的數據包數量閾值的原因如下:
一是經實驗分析與比較,在正常瀏覽網頁(不進行視頻或下載業務)時,短時的流量種類繁雜,且同段數據流的數據包數量較少,一般很難達到1 500。而進行在線視頻或下載業務時,短時流量種類較為單一,同段數據流瞬時流量較大。因此,當某段數據流中包個數達到1 500時,基本可以判定此條數據流為在線視頻或者下載。
二是經實驗分析與比較,當數據包數量閾值到達1 500時,分類準確率基本達到峰值。再提高閾值,分類準確率提高的幅度十分有限。考慮到處理效率的原因,選擇1 500作為閾值可以在保證較高處理效率的同時實現較高的分類準確率。
分類結果計算完成后,命令行界面會顯示如下信息:流量種類(在線視頻或下載)、此條數據流信息(源IP地址、目的IP地址、源端口、目的端口)、平均包大小、包大小的標準差、數據流傳輸速率、包到達平均時間間隔、包到達時間間隔的標準差、PSH標志數量、包大小變化次數、下上行數據流總字節數之比。通過以上信息可以清楚分辨數據流是在線視頻或下載,并能掌握數據流分類的有關特征信息。
3.3.2分類性能測試分析與比較
本部分主要分析本文測試時在線視頻流量和下載流量的分類性能并與文獻[13]進行對比。
通過圖9可見,在測試的10個網站中,視頻與下載流量綜合分類準確率約為91.5%。有8個網站分類準確率等于或高于85%,這8個網站中有5個網站的分類準確率達到100%。所有測試網站中僅有2個網站分類準確率偏低,一個為75%,另一個為80%。經數據分析這2個網站的不同種類數據流特征信息非常相似,導致分類應用產生了一定程度的誤判。
同時與文獻[13]中對于在線視頻流量和下載流量的分類性能進行對比分析。本文對于在線視頻流量和下載流量的分類相對于文獻[13]有以下改進:
文獻[13]中當數據包閾值為1 000時,全局正確率在85%左右且波動較大;閾值到達4 000時,分類準確率才能穩定在92%左右。但本文通過優化特征集并結合SDN的架構優勢,實現了在數據包數量閾值僅為1 500時,也可以將分類準確率穩定保持在91.5%左右的效果。這樣既能優化處理效率,又能保持較高的分類準確率。
SDN控制層由于需要處理大量數據流,如何在處理前對流量進行分類,以便在后續操作中減輕SDN控制層處理壓力,從而實現細粒度管控,已經成為SDN研究的熱點之一。本文設計的基于機器學習的SDN實時流量分類應用可以實時、有效地區分在線視頻流量和下載流量。今后的研究重點在于如何將分類結果應用到SDN中實現細粒度的數據流量管控,進而優化QoS。