李道全,王 雪,于 波,黃泰銘
青島理工大學 信息與控制工程學院,山東 青島266520
流量分類在網絡流量工程中具有重要意義。通過將流量準確分類,可以實現服務質量保證(QoS),資源合理化使用,惡意軟件檢測以及入侵檢測等目的[1]。近年來,對于流量分類工作的研究在不斷的發展。最初的方法是基于端口的流量分類方法,這種分類方法雖然簡單高效,但由于出現了很多應用程序偽裝端口號或不使用標準注冊端口號的情況,使得這種分類方法的準確度在不斷下降[2]。文獻[3]中提出的使用深度包檢測機制(DPI)進行流量分類的研究方法解決了基于端口的分類方法所帶來的問題,然而這種基于數據包中載荷信息進行流量分類的方法只適用于未加密流量并且計算開銷很高。因此,基于統計特征的新一代方法應運而生,這種分類方法依賴于統計特征或時間序列特性,能夠處理加密和未加密的流量。基于統計特征的分類方法通常采用經典的機器學習(ML)算法,如文獻[4]提出使用無監督聚類算法(K-means)進行流量分類并取得了90%的分類準確度,后來的文獻中相繼使用監督式分類算法(如KNN、C4.5、Naive-Bayes)與半監督式分類算法進行流量分類并取得了較高的分類準確度[5-9]?;跈C器學習的流量分類方法由于依賴特征的選取,從而限制了它們的可推廣性。近來關于使用機器學習算法進行流量分類的研究也主要以優化特征的選擇為主[10]。
隨著人工智能及大數據時代的到來,深度學習算法在圖像識別、自然語言處理以及情感分析等各大領域都取得了很好的應用。這種學習算法通過訓練過程自動選取特征,可以用來解決使用機器學習算法進行網絡流量分類的特征選取問題。文獻[11]使用多層感知機(MLP)進行流量分類與傳統機器學習算法的流量分類效果作比較,但是由于文中各分類器使用的分類數據集并不相同,其最終結果無法比較深度學習算法與機器學習算法對于流量分類的準確度。文獻[12]首次提出一種端到端的流量分類模式,使用傳統一維卷積神經網絡結構,將數據處理為特定的文件形式,通過卷積神經網絡構造特征空間,然后使用分類器進行分類并取得了較好的分類結果。本文在其研究基礎上重新設計了一維卷積神經網絡模型,從神經網絡結構、數據預處理方式、代價函數以及梯度優化方面提高了一維卷積神經網絡對于加密應用程序的流量分類效果。
基于客戶機下載的內容多于他們上傳的內容而設計的現有網絡接入鏈路結構是不對稱的,然而對稱需求應用程序(如對等(P2P)應用程序、IP語音(VoIP)和視頻呼叫)的普遍性改變了客戶的需求,使其偏離了最初的設計。因此,為了給客戶提供滿意的體驗,需要其他應用程序級別的知識來為這些應用程序分配足夠的資源。對用戶隱私和數據加密的日益增長的需求極大地提高了當今互聯網的加密流量的數量[13]。加密過程將原始的流量數據轉換成一種偽隨機格式,使其難以解密。這種加密過程導致流量數據幾乎不包含任何可被用來識別網絡流量的數據模式。因此,對于加密的應用程序流量的準確分類已成為現代網絡的一個挑戰[14]。
應用程序流量分類問題的傳統處理流程如圖1所示,特征的選擇是傳統流量分類的研究瓶頸。本文使用的卷積神經網絡可以從原始數據集中通過多層卷積網絡進行學習自主選擇特征,然后根據卷積神經網絡自身網絡結構構造特征空間并通過大量數據的訓練不斷優化特征空間。這種分類方法不僅解決了特征選擇的困難而且為在線流量分類提供了可能。

圖1 傳統流量分類流程圖
基于卷積神經網絡流量分類方法的研究是監督式的,需要有完全標記的數據集作為訓練子集。本文采用網絡公開數據集“ICSX VPN-nonVPN”,已有不少文獻使用該網絡數據集進行研究,如文獻[12,15]。本文采用的流量數據集統計信息如表1所示。數據集中流量類型包含通過虛擬專用網絡(VPN)會話捕獲的數據包。VPN是分布式站點之間的一種專用覆蓋網絡,通過公共通信網絡(如Internet)上挖掘流量來運行。VPN最突出的方面是通過隧道IP數據包,確保對服務器和服務的安全遠程訪問[16]。與常規(非VPN)通信類似,VPN通信是根據不同的應用程序而被捕獲的,如語音呼叫、視頻呼叫和聊天等。本文根據表1中應用程序的種類進行網絡流量分類,應用程序的種類數量對于本文神經網絡模型結構的設計十分重要。

表1 本文流量數據集統計信息
在模型訓練前必須經過的一步是數據的預處理,文獻[12]開發了一種數據預處理工具“USTC-TK2016”,對原始數據包進行流量切分、流量清理、圖片生成等一系列操作后將訓練數據集和測試數據集生成為不同類型的IDX文件形式。本文的數據預處理流程圖如圖2所示。

圖2 數據預處理流程圖
由于“ICSX VPN-nonVPN”數據集是在數據鏈路層捕獲的,因此它包括以太網頭。其中包含有關物理鏈路的信息,例如媒體訪問控制(MAC)地址,這對于網絡中幀的轉發是必不可少的,但對于應用程序標識或流量特征化分類任務來說,它沒有具體的意義。因此,在數據預處理階段,首先刪除以太網頭。在傳輸層段,傳輸控制協議(TCP)和用戶數據報協議(UDP)在報頭長度上有所不同。前者報頭長度通常是20個字節長度,而后者僅8個字節。為了使傳輸層段長度一致,在UDP段頭的末尾添加零,使其與TCP段頭的長度相等。然后將數據包從位轉換為字節,這有助于減小卷積神經網絡的輸入大小。
因為數據集是在真實網絡中捕獲到的,所以含有一些本文不感興趣的數據包,如在建立連接或完成連接的過程中的SYN、ACK、FIN標志段,這些字段并不攜帶有關生成它們的應用程序的信息,因此可以將這些段刪除。此外,數據集中還有一些域名服務(DNS)段。這些字段用于主機名解析,即將URL轉換為IP地址,這些字段與流量分類不相關,因此從數據集中刪除。
經過以上步驟后的數據包文件已經滿足流量分類的數據集的要求,然而除了考慮數據包中的有效載荷問題外還需要考慮卷積神經網絡的輸入要求。圖3顯示了經過以上步驟處理后的數據包長度概率密度分布圖。如柱狀圖所示,數據集中的數據包長度變化很大。而使用卷積神經網絡模型則需要使用固定大小的輸入,因此需要選取固定的數據包長度。在文獻[12,15]的經驗基礎上,使用全部的數據包長度會增大算法所需的空間和時間復雜度,因此本文選擇同文獻[12]相同的前784 Byte,對于有效負載小于784 Byte的數據包在末尾處作補零操作。為了獲得更好的性能,進行離差標準化(min-max Normalization)操作將所有輸入值歸一化到范圍[0∶1]內。

圖3 數據包長度概率密度分布圖
迄今為止,深度卷積神經網絡已廣泛運用于計算機視覺以及自然語言處理方面。文獻[17]指出了一維卷積神經網絡適用于序列數據或語言數據,二維卷積神經網絡擅長處理圖像或音頻頻譜圖等數據,三維卷積神經網絡適用于視頻或體積圖像等數據。
本文通過分析流量數據的特點得出:流量數據是一個按層次結構組織的一維字節流。字節、數據包、會話和整個流量的結構與NLP領域中的字符、字、句和整篇文章的結構非常相似。這種序列類型的數據非常適合選用一維卷積神經網絡進行流量分類。本文設計的一維卷積神經網絡模型如圖4所示。

圖4 卷積神經網絡模型圖
由圖4可知,卷積神經網絡模型的結構為:輸入層、卷積層、卷積層、池化層、三層全連接層以及輸出層。卷積層共兩層,分別為C1、C2,卷積層可表述為:

其中,x代表輸入,k代表卷積核,b代表偏置值。f為激活函數,常用的激活函數有ReLu、tanh、sigmoid等函數。本文選用的激活函數為ReLu函數。卷積層C1在序列化數據集上作窗口滑動與原始數據進行卷積操作后得到第一層特征。卷積層C2在得到的特征上繼續作與C1相同的操作后得到更高級別的特征。
池化層為S1,池化層通常又稱為下采樣層,其主要作用是在保持特征不變性的前提下去掉一些冗余信息把重要的特征抽取出來,在一定程度上可以防止過擬合。池化層可表述為:

其中β和b為標量參數,down為下采樣選擇的函數,一般有最大池化和平均池化。考慮到最大池化層會產生大量數據信息的丟失,本文選用的池化層為平均池化。
通過以上操作后得到多個一維特征層,Flatten層用來將多個一維特征層“壓平”,即將特征層一維化。然后將一維化后的特征數據輸入到三層全連接層中,通過全連接層將特征空間映射到樣本標記空間。在全連接層中為了防止過擬合本文采用了早停法技術(early stopping),這種技術可以根據損失函數值不再改變時提前結束訓練過程以此避免網絡模型對訓練數據的過度擬合。為了加快學習速率,在全連接層中添加了批量歸一化技術(Batch Normalization)。
輸出層采用的是Softmax函數分類器,假設通過全連接層后的輸出為y1,y2,…,yn,經過Softmax層操作后的輸出為:

新的輸出可以理解為一個樣例為不同類別的概率分別是多大。這樣就把神經網絡的輸出變成了一個概率分布,從而可以通過交叉熵函數來計算預測的概率分布和真實樣本的概率分布之間的距離。交叉熵函數表達式如式(4)所示:

按照以上神經網絡模型的結構,根據網絡流量數據集輸入特性要求,本文設計了如表2所示的4種不同超參數的網絡模型,對于每一種網絡模型進行10次10折交叉驗證法尋找模型的最優參數,每次實驗的結果為10次交叉驗證的平均值。

表2 不同超參數表
4種不同的實驗編號的模型訓練準確率對比圖如圖5所示,模型測試時間對比圖如圖6所示。通過不同超參數模型的訓練準確率以及模型測試時間對比,實驗2和實驗3的模型訓練準確率較高,而實驗3和實驗4的模型訓練時間較短,因此本文選用的是實驗3的超參數空間。本文完整的參數配置如表3所示。

圖5 不同超參數模型訓練準確率對比圖

圖6 不同超參數模型訓練時間對比圖

表3 本文一維卷積神經網絡中的超參數設置表
為了驗證提出的一維卷積神經網絡模型對于流量分類的可行性,本文使用Keras庫,其后端是TensorFlow,部署在一臺處理器為Inter i5-6500,主頻3.2 GHz,內存4 GB,64位Linux操作系統的機器上。
使用5個評估指標進行模型的對比,分別為:準確率、分類時間、召回率、類精確率以及F1分數。準確率用于評估分類模型的總體性能,準確率越高代表分類效果越好。F1分數、召回率、精確率三方面可觀察分類模型對于每一類別分類的好壞。其中TP是正確分類為x的實例數,TN是正確分類為not-x的實例數,FP是錯誤分類為x的實例數,FN是錯誤分類為not-x的實例數。

文獻[12]開發了數據預處理工具,將網絡流量數據集處理為類似minist數據集形式,使用傳統的一維卷積神經網絡LeNet-5模型進行流量分類分類。本文提出的數據預處理方式保留了網絡流量的序列化特性并去除了對于流量分類沒有意義的字段。在本文的實驗環境平臺上,從準確率、類精確率、召回率、F1分數以及模型分類時間與傳統的一維卷積神經網絡模型對比,其對比結果如表4、表5、圖7~圖9所示。為確??傮w分類時間對比結果的可靠性,兩種模型的分類時間的對比實驗分別在處理器為Inter i5-6500,主頻3.2 GHz,內存4 GB,64位Linux操作系統的機器上以機器的正常CPU頻率,最高CPU頻率、最低CPU頻率以及在一臺處理器為Inter i5-3337U,主頻1.8 GHz,內存4 GB,64位Linux操作系統的機器上以機器的正常CPU頻率做對比實驗,4次實驗的時間對比結果如表5所示。從表5可以看出在不同主頻和CPU頻率下運行傳統神經網絡分類模型的平均分類時間為8.891 4 s,運行本文神經網絡分類模型的平均分類時間為2.535 7 s。因此本文提出的分類模型的比傳統模型的分類時間平均縮短了6.355 7 s,平均分類時間節省了約71.48%,這說明所設計的卷積神經網絡在分類時間上有了很大的提升。

表4 總體準確率對比表

表5 總測試時間對比表s
通過圖7~圖9的對比結果可以看出,使用本文的一維卷積神經網絡模型以及超參數空間與傳統的一維卷積神經網絡模型相比,在總體準確率、類精確率、召回率、F1分數幾方面也有較好的提升。因此,提出的流量分類方法為后續實時網絡應用程序流量分類奠定了基礎。

圖7 類精確率對比圖

圖8 召回率對比圖

圖9 F1分數對比圖
本文基于傳統機器學習算法進行流量分類的研究問題以及相關研究的基礎上從神經網絡結構、數據預處理方式、超參數空間以及梯度優化方面入手提出一種新的一維卷積神經網絡模型。首先設計一種新的一維卷積神經網絡模型結構,將網絡公開數據集進行數據預處理,去除不相關的字段并截取固定長度后進行標準化操作作為卷積神經網絡的輸入。然后通過卷積神經網絡結構特點自主學習網絡流量的更高級別特征,經過網絡模型的訓練進行參數優化后構造特征空間進而完成網絡應用程序的流量分類任務。最后使用網絡公開數據集對本文提出的流量分類算法進行驗證并取得較好的分類效果。因為深度學習算法在網絡流量分類方面的研究仍處于不成熟的階段,本文在未來的研究方向應朝著處理真實網絡流量數據的分類問題繼續努力。