陸煜斌,宣 涵,王炎豪,徐 凱,朱嘉豪,沈建華
(南京郵電大學 通信與信息工程學院,南京 210003)
網絡流量分類指的是根據(jù)網絡流的特征將網絡中的流量進行分類,分類的目的有兩個:一是根據(jù)分類結果科學地預測網絡中傳輸?shù)闹髁鳂I(yè)務,從而制定合理的網絡資源分配策略,提高網絡資源的利用率;其次,通過分類我們也能夠發(fā)現(xiàn)網絡中可能存在的惡意流量,保障網絡的安全。目前主流的分類方法大致有如下幾種:第1種是基于端口匹配的方法,其進行分類的依據(jù)是數(shù)據(jù)包中的端口號[1];第2種是基于深度包檢測的方法,其進行分類的依據(jù)是數(shù)據(jù)包中已知協(xié)議的特征字段和有效負載[2-3];第3種是基于淺層機器學習的方法,其進行分類的依據(jù)是傳輸層中的流量統(tǒng)計特征[4-5]。近年來,隨著以第五代移動通信技術(5th Generation Mobile Networks,5G)和物聯(lián)網為代表的新技術及新業(yè)務的快速發(fā)展,網絡的規(guī)模和復雜度也在不斷地增加,傳統(tǒng)流量分類方法的局限性愈發(fā)明顯,已不能滿足當前流量的快速增加和類型日益多變的網絡要求[6]。而在圖像和語音識別等領域表現(xiàn)優(yōu)異的一些深度學習算法,包括卷積神經網絡等為網絡流量分類提供了一種新的選擇[7],即以網絡流為基本單位,提取數(shù)據(jù)包的有效負載,以每個數(shù)據(jù)包的數(shù)據(jù)作為行,同一網絡流的多個數(shù)據(jù)包作為列,組成灰度圖像,將網絡流量分類問題轉化為圖像分類問題進行處理[8]。
相較于常規(guī)的流量分類方法,卷積神經網絡的突出優(yōu)勢體現(xiàn)在學習特征信息時可以盡量避免人工選擇特征的環(huán)節(jié)[9],下一層網絡的特征直接通過上一層網絡共享權值的卷積核激勵得到,不需要再人為地選取特征,節(jié)省了大量工作。Wang等人在流量分類問題的處理上就采用了一維卷積神經網絡結構,不同于先前的方法,實驗只關注輸入和輸出,將中間處理環(huán)節(jié)交給模型自動處理,免去了特征抽取等工作[10];Lotfollahi等人采用卷積神經網絡對加密流量進行識別[11],驗證了卷積神經網絡在流量分類問題上的可行性。但卷積神經網絡也有其不足之處,傳統(tǒng)認為隨著網絡層數(shù)的加深,其表現(xiàn)效果應該更卓越,對圖像識別來說就是準確度能夠更高。但實際情況卻是在網絡層數(shù)突破一定范圍后,繼續(xù)增加層數(shù),在后向傳播時無法有效地把梯度更新到前面的網絡層。靠前的網絡參數(shù)無法更新,導致訓練和測試的效果變差。針對此類梯度消失或梯度爆炸問題[12],He等人提出了一種殘差網絡[13]。相較于以往層層遞進的數(shù)據(jù)傳入,殘差網絡就是將前面層較為完整的一些數(shù)據(jù)和后面被“壓縮”過的數(shù)據(jù)共同作為后面層的數(shù)據(jù)輸入,在緩解梯度問題的同時還引入了更豐富的維度,可以在一定程度上減少數(shù)據(jù)信息的缺失,讓網絡能夠學到更豐富的內容。殘差網絡一經提出即得到廣泛關注,許多學者證明了其在圖像分類和識別方面具有優(yōu)異的性能[13]。針對傳統(tǒng)網絡流量分類算法存在的正確性和效率等方面的缺點,本文將累加殘差塊的卷積網絡結構引入流量分類領域,提出一種基于殘差神經網絡的改進網絡流量分類算法,在提高分類準確度的同時也能預防梯度消失和爆炸等問題。
圖1所示為一個兩層的神經網絡示意圖,其基本原理如下:

圖1 兩層的神經網絡示例
式中:a[L]為L層的激活值。將a[L]乘權重矩陣W[L+1],再加上偏差因子b[L],得到線性激活的結果Z[L+1]。首先根據(jù)式(1)在第l層進行線性激活,再通過線性整流函數(shù)(Rectified Linear Unit, ReLU)g得到非線性激活輸出a[L+1]:
然后再進行一輪線性激活和ReLU非線性激活,
式中:a[L+1]即為剛剛得到的L+1層的激活值;W[L+2]和b[L+2]分別為下一層的權重矩陣和偏差因子;Z[L+2]和a[L+2]分別為進行下一輪線性激活和非線性激活的激活值。但如公式所示,在下一層的非線性激活之前已經加上了L層的激活值a[L],在網絡中對應的描述就是直接將a[L]向后拷貝到神經網絡的更深層。在ReLU非線性激活前面加上a[L],a[L]的信息直接達到網絡深層,這樣做就能將上一層網絡的輸出傳遞到更深的層次,從而解決了梯度消失和梯度爆炸的問題。這樣一個兩層的神經網絡就是一個殘差塊,而一個殘差網絡就是通過累加多個這樣的殘差塊構建而成的。
為了提高流量分類的準確度,同時又能防止出現(xiàn)梯度消失等問題,考慮將殘差網絡模塊加入到網絡結構中。圖2所示為本文針對網絡流量分類問題設計的一個多層的殘差網絡結構。如圖所示,首先是一個基礎的處理單元,主要進行以下工作:每一個網絡連接作為一個數(shù)據(jù),數(shù)據(jù)進入基礎單元后分成多個批量做卷積運算,每128個網絡連接數(shù)據(jù)分為一個批量,再通過批量歸一化(Batch Normalization,BN)減少過擬合,最后經過非線性激活函數(shù)ReLU輸出到下一層,將這個單元稱為卷積批量歸一化(Convolution and Batch Normalization,CONV&BN)單元。每一個殘差網絡層由兩個這種基礎單元組成,數(shù)據(jù)進入網絡層后同時在兩個CONV&BN單元里進行處理,由于兩個CONV&BN單元里設置的權重不一樣,所以兩個單元提取到的特征也會有所差別,最后相加進入下一層網絡。多個這樣的網絡層疊加起來就是一個多層的殘差網絡。本文設計的殘差網絡一共分為6層,分別是4個殘差網絡層和兩個全連接層。

圖2 多層殘差網絡結構
圖3所示為根據(jù)Lecun Y等人提出的經典卷積網絡LeNet-5[14]模型設計的一個常規(guī)網絡結構,主要用來與設計的殘差網絡結構進行對比,包括兩層卷積層、兩層最大池化層和兩層全連接層,同樣把128個數(shù)據(jù)作為1個批量輸入進行訓練。

圖3 常規(guī)卷積神經網絡結構
總體的流量分類流程如圖4所示。第1步將訓練數(shù)據(jù)預處理,然后訓練得到最佳的模型作為真實流量的分類器;第2步向分類器中輸入真實的流量數(shù)據(jù),得出其分類的準確度來判別算法的好壞。

圖4 流量分類流程圖
本文使用的數(shù)據(jù)集是國際知識發(fā)現(xiàn)和數(shù)據(jù)挖掘(Knowledge Discovery and Data Mining,KDD)競賽使用的數(shù)據(jù)集,模擬了真實網絡環(huán)境下收集的網絡連接和系統(tǒng)審計數(shù)據(jù),仿真了各種用戶類型、不同的網絡流量和攻擊手段。每個數(shù)據(jù)都是一個網絡連接,每個網絡連接被標記為正常連接(Normal)或者異常連接,而異常連接又可以分為4大類,分別為拒絕服務攻擊(Denial of Service,DoS)、監(jiān)視和其他探測活動(Probe)、來自遠程機器的非法訪問(Unauthorized Access from a Remote Machine to a Local Machine,R2L)和普通用戶對本地超級用戶特權的非法訪問(Unauthorized Access to Local Superuser Privileges by a Local Unpivileged User,U2R)。每個數(shù)據(jù)又包含連接持續(xù)時間、協(xié)議類型和目標主機的網絡服務類型等41項特征,可以分成如表1所示的4類。原始數(shù)據(jù)集中包含近500萬個訓練集,300萬個測試集。本文中分別只選取訓練集和測試集中的10%用于實驗, 比例分布如表2所示。

表1 數(shù)據(jù)集特征分類

表2 數(shù)據(jù)集類型和比例分布
為了將流量數(shù)據(jù)轉化成圖像數(shù)據(jù)進行預測分類,需要對原始數(shù)據(jù)進行預處理,主要包括3個步驟:由于原始數(shù)據(jù)中存在字符型特征,第1步將字符型特征如協(xié)議類型、網絡服務類型和網絡連接狀態(tài)等都轉換為提前規(guī)定好的數(shù)值型特征,如:協(xié)議類型中TCP規(guī)定為0、用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)為1和因特網控制報文協(xié)議(Internet Control Message Protocol,ICMP)為2等。同時因為表示數(shù)據(jù)各項特征的數(shù)值大小參差不齊,如果直接使用,可能會使數(shù)值較大的特征分配到更大的權重,對分類結果產生更大的影響,所以需要將每個數(shù)值都歸一化到[0,1]區(qū)間;第2步預處理是將數(shù)值歸一化,本文采用了最值歸一化,把所有的特征數(shù)值映射到0和1之間,使各項特征指標處于同一數(shù)量級。又因為是多分類問題,特征之間距離的計算是非常重要的;第3步使用獨熱編碼將離散特征的取值擴散到歐式空間,離散特征的某個取值就會對應歐式空間的某個點,會讓特征之間的距離計算更加合理。
因為網絡流量分類問題只關心最后的分類準確度[15],所以本文訓練和測試的指標選擇準確度(Acc)和多類對數(shù)損失(Loss)。在訓練階段對訓練集一共訓練12輪,取這12輪的Loss和Acc,得到如圖5~6所示的結果。由圖可知,經典的卷積神經網絡和本文設計的殘差網絡的訓練損失都很小且準確度都很高,說明將流量分類問題轉化成圖像分類問題是可行且有效的。同時不難發(fā)現(xiàn)每一輪的訓練中,無論是在訓練準確度方面還是在訓練損失方面,殘差網絡都有更好的表現(xiàn)。

圖5 兩種網絡的訓練準確度

圖6 兩種網絡的訓練損失
圖7~8所示分別為實驗測試階段經典卷積和殘差網絡流量識別的混淆矩陣。不難發(fā)現(xiàn)對于在訓練集中占比較大的Normal和DoS類,兩種算法模型的識別準確度都比較高,而訓練數(shù)據(jù)相對匱乏的R2L和U2R類的準確度就有明顯的下滑,尤其是U2R類,識別準確度非常低。對比兩種算法模型,可以明顯地看出殘差網絡各個分類的識別準確度更高,說明殘差網絡的算法模型能夠更加準確地預測。表3所示為測試階段兩種算法模型總的準確度。經典的卷積神經網絡算法模型的準確度達到92.05%,而設計的殘差網絡算法模型的準確度則能夠達到96.18%,結果表明,本文設計的殘差神經網絡算法模型能夠比傳統(tǒng)的卷積神經網絡算法模型在所采用的流量數(shù)據(jù)集上有更好的分類表現(xiàn)。

圖7 經典卷積網絡流量識別混淆矩陣

圖8 殘差網絡流量識別混淆矩陣

表3 殘差網絡和卷積神經網絡的準確度
網絡流量的井噴式增長給網絡服務和安全帶來了許多新的挑戰(zhàn),其中一個關鍵任務就是對網絡流量進行分類,以提升網絡資源利用率或識別潛在的惡意攻擊流量。傳統(tǒng)流量分類方法存在許多局限:如基于端口匹配的分類方法對端口過于依賴;基于深度包檢測的分類方法需要檢查每個數(shù)據(jù)包的有效載荷,資源消耗過大;而基于淺層機器學習的分類方法對訓練集要求苛刻且易出現(xiàn)過擬合的情況等。本文通過在經典的卷積神經網絡模型上加入多個殘差模塊的方法,設計了一種基于殘差網絡的改進網絡流量分類算法,并模擬了真實網絡狀況的數(shù)據(jù)集實驗驗證了其可行性。理論分析和仿真結果表明:相較于常規(guī)的卷積神經網絡,本文提出的改進算法能夠進一步提高分類的準確性,同時也可以避免常規(guī)卷積神經網絡設計過深時存在的梯度消失和梯度爆炸等問題,具有較強的泛化能力。