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