陸煜斌,宣 涵,王炎豪,徐 凱,朱嘉豪,沈建華
(南京郵電大學(xué) 通信與信息工程學(xué)院,南京 210003)
網(wǎng)絡(luò)流量分類指的是根據(jù)網(wǎng)絡(luò)流的特征將網(wǎng)絡(luò)中的流量進行分類,分類的目的有兩個:一是根據(jù)分類結(jié)果科學(xué)地預(yù)測網(wǎng)絡(luò)中傳輸?shù)闹髁鳂I(yè)務(wù),從而制定合理的網(wǎng)絡(luò)資源分配策略,提高網(wǎng)絡(luò)資源的利用率;其次,通過分類我們也能夠發(fā)現(xiàn)網(wǎng)絡(luò)中可能存在的惡意流量,保障網(wǎng)絡(luò)的安全。目前主流的分類方法大致有如下幾種:第1種是基于端口匹配的方法,其進行分類的依據(jù)是數(shù)據(jù)包中的端口號[1];第2種是基于深度包檢測的方法,其進行分類的依據(jù)是數(shù)據(jù)包中已知協(xié)議的特征字段和有效負(fù)載[2-3];第3種是基于淺層機器學(xué)習(xí)的方法,其進行分類的依據(jù)是傳輸層中的流量統(tǒng)計特征[4-5]。近年來,隨著以第五代移動通信技術(shù)(5th Generation Mobile Networks,5G)和物聯(lián)網(wǎng)為代表的新技術(shù)及新業(yè)務(wù)的快速發(fā)展,網(wǎng)絡(luò)的規(guī)模和復(fù)雜度也在不斷地增加,傳統(tǒng)流量分類方法的局限性愈發(fā)明顯,已不能滿足當(dāng)前流量的快速增加和類型日益多變的網(wǎng)絡(luò)要求[6]。而在圖像和語音識別等領(lǐng)域表現(xiàn)優(yōu)異的一些深度學(xué)習(xí)算法,包括卷積神經(jīng)網(wǎng)絡(luò)等為網(wǎng)絡(luò)流量分類提供了一種新的選擇[7],即以網(wǎng)絡(luò)流為基本單位,提取數(shù)據(jù)包的有效負(fù)載,以每個數(shù)據(jù)包的數(shù)據(jù)作為行,同一網(wǎng)絡(luò)流的多個數(shù)據(jù)包作為列,組成灰度圖像,將網(wǎng)絡(luò)流量分類問題轉(zhuǎn)化為圖像分類問題進行處理[8]。
相較于常規(guī)的流量分類方法,卷積神經(jīng)網(wǎng)絡(luò)的突出優(yōu)勢體現(xiàn)在學(xué)習(xí)特征信息時可以盡量避免人工選擇特征的環(huán)節(jié)[9],下一層網(wǎng)絡(luò)的特征直接通過上一層網(wǎng)絡(luò)共享權(quán)值的卷積核激勵得到,不需要再人為地選取特征,節(jié)省了大量工作。Wang等人在流量分類問題的處理上就采用了一維卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),不同于先前的方法,實驗只關(guān)注輸入和輸出,將中間處理環(huán)節(jié)交給模型自動處理,免去了特征抽取等工作[10];Lotfollahi等人采用卷積神經(jīng)網(wǎng)絡(luò)對加密流量進行識別[11],驗證了卷積神經(jīng)網(wǎng)絡(luò)在流量分類問題上的可行性。但卷積神經(jīng)網(wǎng)絡(luò)也有其不足之處,傳統(tǒng)認(rèn)為隨著網(wǎng)絡(luò)層數(shù)的加深,其表現(xiàn)效果應(yīng)該更卓越,對圖像識別來說就是準(zhǔn)確度能夠更高。但實際情況卻是在網(wǎng)絡(luò)層數(shù)突破一定范圍后,繼續(xù)增加層數(shù),在后向傳播時無法有效地把梯度更新到前面的網(wǎng)絡(luò)層??壳暗木W(wǎng)絡(luò)參數(shù)無法更新,導(dǎo)致訓(xùn)練和測試的效果變差。針對此類梯度消失或梯度爆炸問題[12],He等人提出了一種殘差網(wǎng)絡(luò)[13]。相較于以往層層遞進的數(shù)據(jù)傳入,殘差網(wǎng)絡(luò)就是將前面層較為完整的一些數(shù)據(jù)和后面被“壓縮”過的數(shù)據(jù)共同作為后面層的數(shù)據(jù)輸入,在緩解梯度問題的同時還引入了更豐富的維度,可以在一定程度上減少數(shù)據(jù)信息的缺失,讓網(wǎng)絡(luò)能夠?qū)W到更豐富的內(nèi)容。殘差網(wǎng)絡(luò)一經(jīng)提出即得到廣泛關(guān)注,許多學(xué)者證明了其在圖像分類和識別方面具有優(yōu)異的性能[13]。針對傳統(tǒng)網(wǎng)絡(luò)流量分類算法存在的正確性和效率等方面的缺點,本文將累加殘差塊的卷積網(wǎng)絡(luò)結(jié)構(gòu)引入流量分類領(lǐng)域,提出一種基于殘差神經(jīng)網(wǎng)絡(luò)的改進網(wǎng)絡(luò)流量分類算法,在提高分類準(zhǔn)確度的同時也能預(yù)防梯度消失和爆炸等問題。
圖1所示為一個兩層的神經(jīng)網(wǎng)絡(luò)示意圖,其基本原理如下:
圖1 兩層的神經(jīng)網(wǎng)絡(luò)示例
式中:a[L]為L層的激活值。將a[L]乘權(quán)重矩陣W[L+1],再加上偏差因子b[L],得到線性激活的結(jié)果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]分別為下一層的權(quán)重矩陣和偏差因子;Z[L+2]和a[L+2]分別為進行下一輪線性激活和非線性激活的激活值。但如公式所示,在下一層的非線性激活之前已經(jīng)加上了L層的激活值a[L],在網(wǎng)絡(luò)中對應(yīng)的描述就是直接將a[L]向后拷貝到神經(jīng)網(wǎng)絡(luò)的更深層。在ReLU非線性激活前面加上a[L],a[L]的信息直接達(dá)到網(wǎng)絡(luò)深層,這樣做就能將上一層網(wǎng)絡(luò)的輸出傳遞到更深的層次,從而解決了梯度消失和梯度爆炸的問題。這樣一個兩層的神經(jīng)網(wǎng)絡(luò)就是一個殘差塊,而一個殘差網(wǎng)絡(luò)就是通過累加多個這樣的殘差塊構(gòu)建而成的。
為了提高流量分類的準(zhǔn)確度,同時又能防止出現(xiàn)梯度消失等問題,考慮將殘差網(wǎng)絡(luò)模塊加入到網(wǎng)絡(luò)結(jié)構(gòu)中。圖2所示為本文針對網(wǎng)絡(luò)流量分類問題設(shè)計的一個多層的殘差網(wǎng)絡(luò)結(jié)構(gòu)。如圖所示,首先是一個基礎(chǔ)的處理單元,主要進行以下工作:每一個網(wǎng)絡(luò)連接作為一個數(shù)據(jù),數(shù)據(jù)進入基礎(chǔ)單元后分成多個批量做卷積運算,每128個網(wǎng)絡(luò)連接數(shù)據(jù)分為一個批量,再通過批量歸一化(Batch Normalization,BN)減少過擬合,最后經(jīng)過非線性激活函數(shù)ReLU輸出到下一層,將這個單元稱為卷積批量歸一化(Convolution and Batch Normalization,CONV&BN)單元。每一個殘差網(wǎng)絡(luò)層由兩個這種基礎(chǔ)單元組成,數(shù)據(jù)進入網(wǎng)絡(luò)層后同時在兩個CONV&BN單元里進行處理,由于兩個CONV&BN單元里設(shè)置的權(quán)重不一樣,所以兩個單元提取到的特征也會有所差別,最后相加進入下一層網(wǎng)絡(luò)。多個這樣的網(wǎng)絡(luò)層疊加起來就是一個多層的殘差網(wǎng)絡(luò)。本文設(shè)計的殘差網(wǎng)絡(luò)一共分為6層,分別是4個殘差網(wǎng)絡(luò)層和兩個全連接層。
圖2 多層殘差網(wǎng)絡(luò)結(jié)構(gòu)
圖3所示為根據(jù)Lecun Y等人提出的經(jīng)典卷積網(wǎng)絡(luò)LeNet-5[14]模型設(shè)計的一個常規(guī)網(wǎng)絡(luò)結(jié)構(gòu),主要用來與設(shè)計的殘差網(wǎng)絡(luò)結(jié)構(gòu)進行對比,包括兩層卷積層、兩層最大池化層和兩層全連接層,同樣把128個數(shù)據(jù)作為1個批量輸入進行訓(xùn)練。
圖3 常規(guī)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
總體的流量分類流程如圖4所示。第1步將訓(xùn)練數(shù)據(jù)預(yù)處理,然后訓(xùn)練得到最佳的模型作為真實流量的分類器;第2步向分類器中輸入真實的流量數(shù)據(jù),得出其分類的準(zhǔn)確度來判別算法的好壞。
圖4 流量分類流程圖
本文使用的數(shù)據(jù)集是國際知識發(fā)現(xiàn)和數(shù)據(jù)挖掘(Knowledge Discovery and Data Mining,KDD)競賽使用的數(shù)據(jù)集,模擬了真實網(wǎng)絡(luò)環(huán)境下收集的網(wǎng)絡(luò)連接和系統(tǒng)審計數(shù)據(jù),仿真了各種用戶類型、不同的網(wǎng)絡(luò)流量和攻擊手段。每個數(shù)據(jù)都是一個網(wǎng)絡(luò)連接,每個網(wǎng)絡(luò)連接被標(biāo)記為正常連接(Normal)或者異常連接,而異常連接又可以分為4大類,分別為拒絕服務(wù)攻擊(Denial of Service,DoS)、監(jiān)視和其他探測活動(Probe)、來自遠(yuǎn)程機器的非法訪問(Unauthorized Access from a Remote Machine to a Local Machine,R2L)和普通用戶對本地超級用戶特權(quán)的非法訪問(Unauthorized Access to Local Superuser Privileges by a Local Unpivileged User,U2R)。每個數(shù)據(jù)又包含連接持續(xù)時間、協(xié)議類型和目標(biāo)主機的網(wǎng)絡(luò)服務(wù)類型等41項特征,可以分成如表1所示的4類。原始數(shù)據(jù)集中包含近500萬個訓(xùn)練集,300萬個測試集。本文中分別只選取訓(xùn)練集和測試集中的10%用于實驗, 比例分布如表2所示。
表1 數(shù)據(jù)集特征分類
表2 數(shù)據(jù)集類型和比例分布
為了將流量數(shù)據(jù)轉(zhuǎn)化成圖像數(shù)據(jù)進行預(yù)測分類,需要對原始數(shù)據(jù)進行預(yù)處理,主要包括3個步驟:由于原始數(shù)據(jù)中存在字符型特征,第1步將字符型特征如協(xié)議類型、網(wǎng)絡(luò)服務(wù)類型和網(wǎng)絡(luò)連接狀態(tài)等都轉(zhuǎn)換為提前規(guī)定好的數(shù)值型特征,如:協(xié)議類型中TCP規(guī)定為0、用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)為1和因特網(wǎng)控制報文協(xié)議(Internet Control Message Protocol,ICMP)為2等。同時因為表示數(shù)據(jù)各項特征的數(shù)值大小參差不齊,如果直接使用,可能會使數(shù)值較大的特征分配到更大的權(quán)重,對分類結(jié)果產(chǎn)生更大的影響,所以需要將每個數(shù)值都?xì)w一化到[0,1]區(qū)間;第2步預(yù)處理是將數(shù)值歸一化,本文采用了最值歸一化,把所有的特征數(shù)值映射到0和1之間,使各項特征指標(biāo)處于同一數(shù)量級。又因為是多分類問題,特征之間距離的計算是非常重要的;第3步使用獨熱編碼將離散特征的取值擴散到歐式空間,離散特征的某個取值就會對應(yīng)歐式空間的某個點,會讓特征之間的距離計算更加合理。
因為網(wǎng)絡(luò)流量分類問題只關(guān)心最后的分類準(zhǔn)確度[15],所以本文訓(xùn)練和測試的指標(biāo)選擇準(zhǔn)確度(Acc)和多類對數(shù)損失(Loss)。在訓(xùn)練階段對訓(xùn)練集一共訓(xùn)練12輪,取這12輪的Loss和Acc,得到如圖5~6所示的結(jié)果。由圖可知,經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)和本文設(shè)計的殘差網(wǎng)絡(luò)的訓(xùn)練損失都很小且準(zhǔn)確度都很高,說明將流量分類問題轉(zhuǎn)化成圖像分類問題是可行且有效的。同時不難發(fā)現(xiàn)每一輪的訓(xùn)練中,無論是在訓(xùn)練準(zhǔn)確度方面還是在訓(xùn)練損失方面,殘差網(wǎng)絡(luò)都有更好的表現(xiàn)。
圖5 兩種網(wǎng)絡(luò)的訓(xùn)練準(zhǔn)確度
圖6 兩種網(wǎng)絡(luò)的訓(xùn)練損失
圖7~8所示分別為實驗測試階段經(jīng)典卷積和殘差網(wǎng)絡(luò)流量識別的混淆矩陣。不難發(fā)現(xiàn)對于在訓(xùn)練集中占比較大的Normal和DoS類,兩種算法模型的識別準(zhǔn)確度都比較高,而訓(xùn)練數(shù)據(jù)相對匱乏的R2L和U2R類的準(zhǔn)確度就有明顯的下滑,尤其是U2R類,識別準(zhǔn)確度非常低。對比兩種算法模型,可以明顯地看出殘差網(wǎng)絡(luò)各個分類的識別準(zhǔn)確度更高,說明殘差網(wǎng)絡(luò)的算法模型能夠更加準(zhǔn)確地預(yù)測。表3所示為測試階段兩種算法模型總的準(zhǔn)確度。經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)算法模型的準(zhǔn)確度達(dá)到92.05%,而設(shè)計的殘差網(wǎng)絡(luò)算法模型的準(zhǔn)確度則能夠達(dá)到96.18%,結(jié)果表明,本文設(shè)計的殘差神經(jīng)網(wǎng)絡(luò)算法模型能夠比傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)算法模型在所采用的流量數(shù)據(jù)集上有更好的分類表現(xiàn)。
圖7 經(jīng)典卷積網(wǎng)絡(luò)流量識別混淆矩陣
圖8 殘差網(wǎng)絡(luò)流量識別混淆矩陣
表3 殘差網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確度
網(wǎng)絡(luò)流量的井噴式增長給網(wǎng)絡(luò)服務(wù)和安全帶來了許多新的挑戰(zhàn),其中一個關(guān)鍵任務(wù)就是對網(wǎng)絡(luò)流量進行分類,以提升網(wǎng)絡(luò)資源利用率或識別潛在的惡意攻擊流量。傳統(tǒng)流量分類方法存在許多局限:如基于端口匹配的分類方法對端口過于依賴;基于深度包檢測的分類方法需要檢查每個數(shù)據(jù)包的有效載荷,資源消耗過大;而基于淺層機器學(xué)習(xí)的分類方法對訓(xùn)練集要求苛刻且易出現(xiàn)過擬合的情況等。本文通過在經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型上加入多個殘差模塊的方法,設(shè)計了一種基于殘差網(wǎng)絡(luò)的改進網(wǎng)絡(luò)流量分類算法,并模擬了真實網(wǎng)絡(luò)狀況的數(shù)據(jù)集實驗驗證了其可行性。理論分析和仿真結(jié)果表明:相較于常規(guī)的卷積神經(jīng)網(wǎng)絡(luò),本文提出的改進算法能夠進一步提高分類的準(zhǔn)確性,同時也可以避免常規(guī)卷積神經(jīng)網(wǎng)絡(luò)設(shè)計過深時存在的梯度消失和梯度爆炸等問題,具有較強的泛化能力。