李鵬飛,邵維專(zhuān)
(四川大學(xué) 計(jì)算機(jī)學(xué)院,四川 成都 610065)
軟件定義網(wǎng)絡(luò)(software defined networking,SDN)[1-2]是近年來(lái)迅速發(fā)展起來(lái)的一種新型網(wǎng)絡(luò)架構(gòu),基本特點(diǎn)是將傳統(tǒng)網(wǎng)絡(luò)交換設(shè)備進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)與控制的抽象分離。SDN網(wǎng)絡(luò)架構(gòu)與傳統(tǒng)“漏斗”式網(wǎng)絡(luò)架構(gòu)相比,最大的區(qū)別在于,SDN網(wǎng)絡(luò)可以通過(guò)軟件編寫(xiě)的方法實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)設(shè)備轉(zhuǎn)發(fā)能力的靈活定義,簡(jiǎn)而言之,SDN是一種可實(shí)現(xiàn)編程控制的網(wǎng)絡(luò)。SDN架構(gòu)一經(jīng)推出就受到業(yè)界的高度認(rèn)可,并被認(rèn)為是一種未來(lái)網(wǎng)絡(luò)的終極解決方案。
2006年,Geoffrey Hinton等[3]提出了深度學(xué)習(xí)的概念。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,是機(jī)器學(xué)習(xí)中表征學(xué)習(xí)方法的一類(lèi)。在深度學(xué)習(xí)提出以前,很多機(jī)器學(xué)習(xí)方法得到了廣泛應(yīng)用,如支持向量機(jī)(support vector machine,SVM)[4]、K最近鄰法(k-nearest neighbor,KNN)[5]、邏輯回歸(logistic regression)[6]、Boosting[7]等。然而,這些模型的基本結(jié)構(gòu)可以被理解為只有一層隱藏層或者沒(méi)有隱藏層的簡(jiǎn)單人工神經(jīng)網(wǎng)絡(luò)。因此,這些機(jī)器學(xué)習(xí)模型在處理多維數(shù)據(jù)時(shí)一般會(huì)存在一定的局限性,通常這種局限性可稱(chēng)之為“維度爆炸”,即高維的數(shù)據(jù)特征很難被完美地映射成低維的抽象數(shù)據(jù)特征。
深度學(xué)習(xí)為解決機(jī)器學(xué)習(xí)的局限性創(chuàng)造了一個(gè)新的開(kāi)端。深度學(xué)習(xí)算法是一個(gè)對(duì)特征學(xué)習(xí)的過(guò)程,在學(xué)習(xí)過(guò)程中能夠發(fā)現(xiàn)多層特征,并能夠?qū)⒏邔犹卣鞅硎境筛橄蟮臄?shù)據(jù)特征。深度學(xué)習(xí)網(wǎng)絡(luò)模型因?yàn)榫哂卸鄠€(gè)隱藏層而具有很強(qiáng)的特征學(xué)習(xí)能力,相對(duì)于機(jī)器學(xué)習(xí)模型具有很大的進(jìn)步。深度學(xué)習(xí)網(wǎng)絡(luò)類(lèi)似于大腦的神經(jīng)網(wǎng)絡(luò),大腦中的神經(jīng)網(wǎng)絡(luò)由數(shù)千億神經(jīng)元連接而成,而深度學(xué)習(xí)網(wǎng)絡(luò)同樣由大量的人工神經(jīng)元組成。深度學(xué)習(xí)中數(shù)據(jù)之間的關(guān)系由復(fù)雜的非線性模型來(lái)表示,然后通過(guò)訓(xùn)練大量的數(shù)據(jù)來(lái)確定數(shù)據(jù)之間的關(guān)系。目前,深度學(xué)習(xí)已經(jīng)在語(yǔ)音識(shí)別、計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理等領(lǐng)域得到了廣泛應(yīng)用,由Andrew Ng領(lǐng)導(dǎo)的Google Brain團(tuán)隊(duì)已經(jīng)構(gòu)建了經(jīng)過(guò)訓(xùn)練后可以識(shí)別高級(jí)概念圖片的神經(jīng)網(wǎng)絡(luò)模型[8]。
SDN作為一種新興的網(wǎng)絡(luò)體系結(jié)構(gòu),其智能化的發(fā)展需求逐漸被提出,而深度學(xué)習(xí)的發(fā)展正好契合了此需求。然而,目前深度學(xué)習(xí)并沒(méi)有在SDN架構(gòu)下的網(wǎng)絡(luò)環(huán)境中得到廣泛應(yīng)用,因此文中旨在研究如何在SDN中引入深度學(xué)習(xí),從而推動(dòng)SDN的智能化發(fā)展。
KDN[9]架構(gòu)是各種機(jī)器學(xué)習(xí)方法應(yīng)用于SDN的一種通用架構(gòu),所以對(duì)于深度學(xué)習(xí)應(yīng)用于SDN同樣適用。KDN架構(gòu)就是在SDN架構(gòu)中引入知識(shí)平面[10]和管理平面,其架構(gòu)如圖1所示。
圖1 KDN架構(gòu)
數(shù)據(jù)平面:數(shù)據(jù)平面由轉(zhuǎn)發(fā)設(shè)備組成,負(fù)責(zé)存儲(chǔ)、轉(zhuǎn)發(fā)和處理數(shù)據(jù)包。數(shù)據(jù)平面根據(jù)控制平面下發(fā)的流規(guī)則對(duì)數(shù)據(jù)報(bào)文進(jìn)行解析、查表、過(guò)濾匹配以及端口映射等處理。
控制平面:控制平面由SDN控制器組成,邏輯集中的SDN控制器間交換操作狀態(tài)進(jìn)而更新流規(guī)則并將流規(guī)則以Imperative語(yǔ)言的形式通過(guò)南向接口下發(fā)到數(shù)據(jù)平面的轉(zhuǎn)發(fā)設(shè)備。
管理平面:垂直于控制平面和數(shù)據(jù)平面,定義網(wǎng)絡(luò)拓?fù)?收集并處理網(wǎng)絡(luò)設(shè)備提供的信息,監(jiān)控分析網(wǎng)絡(luò)。
知識(shí)平面:使用深度學(xué)習(xí)方法處理管理平面收集的信息,然后利用學(xué)習(xí)到的知識(shí)自動(dòng)地或人為干預(yù)地制定具體的網(wǎng)絡(luò)控制決定并將決定以Intent語(yǔ)言的形式下發(fā)到控制器,控制器再將Intent以Imperative 語(yǔ)言的形式下發(fā)到轉(zhuǎn)發(fā)設(shè)備。
KDN工作流程如圖2所示。
圖2 KDN工作流程
分析平臺(tái)實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)平面獲取細(xì)粒度的流量信息,并查詢(xún)SDN控制器獲取控制和管理狀態(tài),然后將收集到的數(shù)據(jù)提交給知識(shí)平面,知識(shí)平面使用深度學(xué)習(xí)算法學(xué)習(xí)網(wǎng)絡(luò)行為并制定具體的網(wǎng)絡(luò)控制決定并將決定以Intent語(yǔ)言的形式下發(fā)到控制器,控制器將接收到的Intent以Imperative語(yǔ)言的形式下發(fā)到轉(zhuǎn)發(fā)設(shè)備。
KDD99將攻擊類(lèi)型分為4類(lèi),然后又細(xì)分為39小類(lèi),每一類(lèi)代表一種攻擊類(lèi)型,類(lèi)型被標(biāo)記在訓(xùn)練數(shù)據(jù)集每一行記錄的最后一項(xiàng)。
KDD99訓(xùn)練集中共出現(xiàn)了22個(gè)攻擊類(lèi)型,而剩下的17種只在測(cè)試集中出現(xiàn)(用黑體標(biāo)注)。這樣設(shè)計(jì)的目的是檢驗(yàn)分類(lèi)器模型的泛化能力,對(duì)未知攻擊類(lèi)型的檢測(cè)能力是評(píng)價(jià)入侵檢測(cè)系統(tǒng)好壞的重要指標(biāo)。KDD99數(shù)據(jù)集總共由500萬(wàn)條記錄構(gòu)成,它還提供一個(gè)10%的訓(xùn)練子集和測(cè)試子集。
NSL-KDD是對(duì)KDD99的改進(jìn)數(shù)據(jù)集,除去了KDD99數(shù)據(jù)集中的冗余數(shù)據(jù),克服了分類(lèi)器偏向于重復(fù)出現(xiàn)的記錄,學(xué)習(xí)方法的性能受影響等問(wèn)題。對(duì)正常和異常的數(shù)據(jù)比例進(jìn)行了合適選擇,測(cè)試和訓(xùn)練數(shù)據(jù)數(shù)量更合理,因此更適合在不同的機(jī)器學(xué)習(xí)技術(shù)之間進(jìn)行有效準(zhǔn)確的評(píng)估。NSL-KDD分為KDDTrain+和KDDTest+,在KDDTrain+中有125 973個(gè)訓(xùn)練樣本,在KDDTest+中有22 554個(gè)測(cè)試樣本。
ISCX2012記錄的是7天時(shí)間真實(shí)網(wǎng)絡(luò)環(huán)境中的流量信息,其中包含合法的網(wǎng)絡(luò)流量以及多種類(lèi)型的惡意DDoS攻擊流量。在這7天的網(wǎng)絡(luò)流量記錄中,DDoS攻擊發(fā)生時(shí)間段為2010/6/14到2010/6/15這兩天時(shí)間。其中,2010/6/14包含超過(guò)960多萬(wàn)條數(shù)據(jù)報(bào)文信息,2010/6/15則包含將近3 500萬(wàn)條數(shù)據(jù)報(bào)文信息。
ISCX2012數(shù)據(jù)集列出了合法或各DDoS攻擊類(lèi)型的數(shù)據(jù)報(bào)文相關(guān)信息,包括數(shù)據(jù)報(bào)文類(lèi)型名,抓包時(shí)間,源或目的IP地址,TCP/UDP報(bào)文的源或目的端口號(hào)等字段信息。
由于2010/6/14和2010/6/15這兩天中大部分流量信息都是合法的數(shù)據(jù)包流量,為了消除數(shù)據(jù)偏差,在輸入到深度學(xué)習(xí)算法進(jìn)行訓(xùn)練時(shí),可將所有攻擊類(lèi)型數(shù)據(jù)報(bào)文與隨機(jī)數(shù)目的合法數(shù)據(jù)報(bào)文混合,進(jìn)行重新采樣后再進(jìn)行輸入。
KDN數(shù)據(jù)集包含虛擬化網(wǎng)絡(luò)功能、網(wǎng)絡(luò)特征、基于深度加強(qiáng)學(xué)習(xí)的SDN網(wǎng)絡(luò)路由優(yōu)化和神經(jīng)網(wǎng)絡(luò)四個(gè)子數(shù)據(jù)集,如表1所示。
表1 KDN數(shù)據(jù)集包含子數(shù)據(jù)集描述
子數(shù)據(jù)集名稱(chēng)所含壓縮文件名稱(chēng)包含數(shù)據(jù)或源代碼描述虛擬化網(wǎng)絡(luò)功能OVS.zip流量特征和連接到SDN控制器的OVS的CPU消耗Firewall.zip流量特征和配置防火墻規(guī)則的OVS的CPU消耗Snort.zip流量特征和經(jīng)過(guò)初始化配置的SNORT的CPU消耗網(wǎng)絡(luò)特征overUnderNetwork.zip實(shí)現(xiàn)負(fù)載均衡的overlay-underlay網(wǎng)絡(luò)中的流量、負(fù)載均衡和流層面延時(shí)star.zipstar網(wǎng)絡(luò)中的流量和節(jié)點(diǎn)對(duì)之間的延時(shí)ring.zipring網(wǎng)絡(luò)中的流量和節(jié)點(diǎn)對(duì)之間的延時(shí)scaleFree.zip無(wú)尺度網(wǎng)絡(luò)中的流量和節(jié)點(diǎn)對(duì)之間的延時(shí)overUnder.zipoverlay-underlay網(wǎng)絡(luò)中的流量和節(jié)點(diǎn)對(duì)之間的延時(shí)基于深度加強(qiáng)學(xué)習(xí)的SDN網(wǎng)絡(luò)路由優(yōu)化DRL.zip深度加強(qiáng)學(xué)習(xí)代理和OMNeT++網(wǎng)絡(luò)拓?fù)涞脑创atrain.csv.gz深度加強(qiáng)學(xué)習(xí)代理在訓(xùn)練期間的表現(xiàn)benchmark.csv.gzBenchmark數(shù)據(jù)traffic.zip1 000個(gè)測(cè)試流量矩陣look.csv.gz100 000個(gè)測(cè)試路由配置神經(jīng)網(wǎng)絡(luò)CodeMatlab.zip用于訓(xùn)練VNF數(shù)據(jù)的Matlab代碼CodePython.zip用于訓(xùn)練overUnderNetwork數(shù)據(jù)的Python代碼
涉及大量快速數(shù)據(jù)的應(yīng)用需要快速處理和大的存儲(chǔ)空間,雖然Hadoop系統(tǒng)在提供分布式存儲(chǔ)空間方面表現(xiàn)良好,但是在數(shù)據(jù)處理方面不是太高效,而Spark的提出正是為了解決這一問(wèn)題。Spark是一個(gè)開(kāi)源的分布式框架,通過(guò)對(duì)中間結(jié)果的內(nèi)存存儲(chǔ)來(lái)加快數(shù)據(jù)處理。Spark可以將Hadoop集群中的應(yīng)用在內(nèi)存中的運(yùn)行速度提升100倍,甚至能夠?qū)?yīng)用在磁盤(pán)上的運(yùn)行速度提升10倍。Resilient Distributed Dataset (RDD)是Spark的核心,一個(gè)RDD代表一個(gè)可以被分區(qū)的只讀數(shù)據(jù)集,RDD是容錯(cuò)的,Spark提供了多種操作RDD的API。Spark將數(shù)據(jù)存儲(chǔ)為RDD形式,并可以緩存RDD到內(nèi)存做進(jìn)一步處理。
Spark SQL,作為Spark框架的一部分,運(yùn)行在Spark框架的頂層,主要用于對(duì)數(shù)據(jù)集提供關(guān)系型操作。Spark SQL將RDD轉(zhuǎn)變?yōu)閐ataframe,dataframe可以看作關(guān)系數(shù)據(jù)庫(kù)中的表,允許用戶使用sql命令操作相關(guān)數(shù)據(jù)。
Hadoop分布式文件系統(tǒng)(HDFS)被設(shè)計(jì)成適合運(yùn)行在通用硬件(commodity hardware)上的分布式文件系統(tǒng),和現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn),同時(shí)區(qū)別也是很明顯的。HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問(wèn),非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS放寬了一部分POSIX約束,來(lái)實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。HDFS在最開(kāi)始是作為Apache Nutch搜索引擎項(xiàng)目的基礎(chǔ)架構(gòu)而開(kāi)發(fā)的。
參考文獻(xiàn)[11],可以將Spark和HDFS引入KDN架構(gòu)中的分析平臺(tái),實(shí)現(xiàn)快速特征提取和實(shí)時(shí)控制。引入Spark和HDFS的分析平臺(tái)如圖3所示。
其工作流程為:分析平臺(tái)從控制平面和數(shù)據(jù)平面收集信息并保存到CSV文件,到達(dá)一定時(shí)間間隔后,將CSV文件分布式存儲(chǔ)到HDFS用于后期處理。在處理階段,Spark將CSV文件轉(zhuǎn)換成dataframe,并注冊(cè)一個(gè)臨時(shí)表,然后Spark通過(guò)Spark sql查詢(xún)方式提取流量特征。一旦流量特征提取成功,Spark簇的master節(jié)點(diǎn)就將這些流量特征發(fā)送到分析平臺(tái),分析平臺(tái)再將這些流量特征發(fā)送到知識(shí)平面供深度學(xué)習(xí)算法進(jìn)一步學(xué)習(xí),知識(shí)平面利用深度學(xué)習(xí)算法學(xué)習(xí)到的知識(shí)自動(dòng)地或輔助網(wǎng)絡(luò)操作員制定具體的網(wǎng)絡(luò)控制決定。
圖3 引入Spark和HDFS的分析平臺(tái)
深度學(xué)習(xí)算法可分為監(jiān)督型深度學(xué)習(xí)算法、非監(jiān)督型深度學(xué)習(xí)算法。
(1)監(jiān)督型深度學(xué)習(xí)。
監(jiān)督型深度學(xué)習(xí)需要提前給訓(xùn)練數(shù)據(jù)打標(biāo)簽并進(jìn)行特征提取。在這種情況下,知識(shí)平面可以學(xué)習(xí)到一個(gè)描述網(wǎng)絡(luò)行為的模型,即一個(gè)聯(lián)系網(wǎng)絡(luò)參數(shù)和網(wǎng)絡(luò)行為的函數(shù)。
(2)非監(jiān)督型深度學(xué)習(xí)。
非監(jiān)督型深度學(xué)習(xí)采用數(shù)據(jù)驅(qū)動(dòng)來(lái)發(fā)現(xiàn)知識(shí),能夠發(fā)掘所分析數(shù)據(jù)的內(nèi)在結(jié)構(gòu),不需要給樣本打標(biāo)簽。在這種情況下,知識(shí)平面能發(fā)現(xiàn)網(wǎng)絡(luò)操作員意識(shí)不到的數(shù)據(jù)相關(guān)性,比如知識(shí)平面可能發(fā)現(xiàn)本地天氣對(duì)鏈路使用的影響。
根據(jù)網(wǎng)絡(luò)操作者是否介入網(wǎng)絡(luò)決定,KDN架構(gòu)的控制環(huán)可以分為開(kāi)環(huán)和閉環(huán),知識(shí)平面也對(duì)應(yīng)著兩套應(yīng)用,當(dāng)知識(shí)平面應(yīng)用使用不同的深度學(xué)習(xí)算法時(shí),可實(shí)現(xiàn)不同的網(wǎng)絡(luò)功能,如表2所示。
表2 開(kāi)環(huán)和閉環(huán)下的可實(shí)現(xiàn)應(yīng)用
(1)閉環(huán)。
·當(dāng)應(yīng)用使用監(jiān)督型深度學(xué)習(xí)算法時(shí),首先,知識(shí)平面可以代表網(wǎng)絡(luò)管理員利用所獲取的網(wǎng)絡(luò)模型自動(dòng)地向網(wǎng)絡(luò)做決定;其次,可以通過(guò)優(yōu)化技術(shù)探究學(xué)習(xí)到的網(wǎng)絡(luò)模型獲得網(wǎng)絡(luò)最優(yōu)配置,所以學(xué)習(xí)到的網(wǎng)絡(luò)模型可以用于網(wǎng)絡(luò)優(yōu)化。
·當(dāng)應(yīng)用使用非監(jiān)督型深度學(xué)習(xí)算法時(shí),因?yàn)榉潜O(jiān)督型深度學(xué)習(xí)能夠發(fā)掘所分析數(shù)據(jù)的內(nèi)在結(jié)構(gòu),所以發(fā)現(xiàn)的知識(shí)可以用于改進(jìn)網(wǎng)絡(luò)。
(2)開(kāi)環(huán)。
·當(dāng)應(yīng)用使用監(jiān)督型深度學(xué)習(xí)算法時(shí),首先,學(xué)習(xí)到的網(wǎng)絡(luò)模型可用于驗(yàn)證,在這種情況下,網(wǎng)絡(luò)管理員在應(yīng)用新的配置前可以通過(guò)查詢(xún)模型驗(yàn)證是否可行;其次,因?yàn)榫W(wǎng)絡(luò)操作者可以微調(diào)模型相關(guān)參數(shù)并獲得網(wǎng)絡(luò)表現(xiàn)評(píng)估,所以學(xué)習(xí)到的網(wǎng)絡(luò)模型可以用于網(wǎng)絡(luò)表現(xiàn)評(píng)價(jià)和分析。
·當(dāng)應(yīng)用使用非監(jiān)督型深度學(xué)習(xí)算法時(shí),網(wǎng)絡(luò)操作者可以參考學(xué)習(xí)到的知識(shí)對(duì)網(wǎng)絡(luò)做決定。
深度強(qiáng)化學(xué)習(xí)[12]將深度學(xué)習(xí)的感知能力和強(qiáng)化學(xué)習(xí)[13]的決策能力相結(jié)合,可以直接根據(jù)輸入的數(shù)據(jù)進(jìn)行控制,是一種更接近人類(lèi)思維方式的人工智能方法。深度強(qiáng)化學(xué)習(xí)下會(huì)有一個(gè)旨在尋找最優(yōu)策略的DRL agent,這個(gè)DRL agent不斷與環(huán)境進(jìn)行交互,向環(huán)境發(fā)送action,環(huán)境再向DRL agent反饋observation和reward。DRL agent的目標(biāo)就是尋找一個(gè)最優(yōu)策略使reward累加和期望最大。例如在文中環(huán)境下,DRL agent的目標(biāo)可以是尋找一個(gè)最優(yōu)策略,在該最優(yōu)策略下實(shí)現(xiàn)SDN網(wǎng)絡(luò)的最優(yōu)配置。
文獻(xiàn)[14]將深度學(xué)習(xí)與傳統(tǒng)機(jī)器學(xué)習(xí)進(jìn)行了對(duì)比,表明深度學(xué)習(xí)在網(wǎng)絡(luò)入侵檢測(cè)中具有一定的優(yōu)勢(shì)。文獻(xiàn)[15]使用深度全連接神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了一個(gè)SDN網(wǎng)絡(luò)入侵檢測(cè)應(yīng)用,所用數(shù)據(jù)集為NSL-KDD dataset,從41個(gè)特征中選取其中6個(gè),即duration,protocol_type,src_bytes,dst_bytes,count,srv_count,含義分別是:連接的持續(xù)時(shí)間,協(xié)議類(lèi)型,從源到目的的字節(jié)數(shù),從目的到源的字節(jié)數(shù),在過(guò)去兩秒鐘連接到同一個(gè)主機(jī)的連接數(shù),在過(guò)去兩秒鐘連接到同一個(gè)服務(wù)的連接數(shù)。當(dāng)使用相同的六元特征子集時(shí),其準(zhǔn)確率明顯高于其他算法,但是該算法模型過(guò)于簡(jiǎn)單,只是一個(gè)具有三層隱藏層的深度全連接神經(jīng)網(wǎng)絡(luò),準(zhǔn)確率也不是太高,如果適當(dāng)調(diào)整模型或采用更復(fù)雜的深度學(xué)習(xí)算法,準(zhǔn)確率一定會(huì)顯著提高。另外,除了用準(zhǔn)確率來(lái)評(píng)估網(wǎng)絡(luò)性能,還應(yīng)該考慮吞吐量等其他因素。
論述了深度學(xué)習(xí)在SDN中的應(yīng)用研究,具體包括架構(gòu)、數(shù)據(jù)源、快速特征提取、深度學(xué)習(xí)算法選擇和分析深度學(xué)習(xí)在SDN中的現(xiàn)有應(yīng)用五個(gè)方面。SDN的智能化需要深度學(xué)習(xí),另外,SDN中有許多突出問(wèn)題亟待解決,如網(wǎng)絡(luò)入侵檢測(cè)、流表沖突檢測(cè)和SDN的故障自愈管理等,而深度學(xué)習(xí)必將為這些問(wèn)題帶來(lái)新的解決辦法。當(dāng)前,深度學(xué)習(xí)在SDN中的應(yīng)用還很少,希望該文有助于深度學(xué)習(xí)在SDN中應(yīng)用的進(jìn)一步推廣。