李傳煌,程成,袁小雍,岑利杰,王偉明
(1. 浙江工商大學信息與電子工程學院,浙江 杭州 310018;2. 美國佛羅里達大學大規(guī)模智能系統(tǒng)實驗室,美國 佛羅里達州 蓋恩斯維爾 32611)
基于深度學習的軟件定義網(wǎng)絡(luò)應(yīng)用策略沖突檢測方法
李傳煌1,程成1,袁小雍2,岑利杰1,王偉明1
(1. 浙江工商大學信息與電子工程學院,浙江 杭州 310018;2. 美國佛羅里達大學大規(guī)模智能系統(tǒng)實驗室,美國 佛羅里達州 蓋恩斯維爾 32611)
在基于OpenFlow的軟件定義網(wǎng)絡(luò)(SDN)中,應(yīng)用被部署時,相應(yīng)的流表策略將被下發(fā)到OpenFlow交換機中,不同應(yīng)用的流表項之間如果產(chǎn)生沖突,將會影響交換機的實際轉(zhuǎn)發(fā)行為,進而擾亂特定應(yīng)用的正確部署以及SDN的安全。隨著SDN規(guī)模的擴大以及需要部署應(yīng)用的數(shù)量的劇增,交換機中的流表數(shù)量呈現(xiàn)爆炸式增長。此時若采用傳統(tǒng)的流表沖突檢測算法,交換機將會耗費大量的系統(tǒng)計算時間。結(jié)合深度學習,首次提出了一種適合SDN中超大規(guī)模應(yīng)用部署的智能流表沖突檢測方法。實驗結(jié)果表明,第一級深度學習模型的AUC達到97.04%,第二級模型的AUC達到99.97%,同時沖突檢測時間與流表規(guī)模呈現(xiàn)線性增長關(guān)系。
流表沖突檢測;深度學習;異常檢測;軟件定義網(wǎng)絡(luò);OpenFlow
隨著互聯(lián)網(wǎng)業(yè)務(wù)和服務(wù)需求的不斷增長,云計算網(wǎng)絡(luò)、大型數(shù)據(jù)中心網(wǎng)絡(luò)等已經(jīng)成為承載各種大型計算和存儲業(yè)務(wù)的重要網(wǎng)絡(luò)基礎(chǔ)設(shè)施,現(xiàn)有網(wǎng)絡(luò)架構(gòu)已經(jīng)不能有效地滿足這些新型網(wǎng)絡(luò)平臺的需求。作為下一代網(wǎng)絡(luò)技術(shù)的重要代表,軟件定義網(wǎng)絡(luò)(software defined network,SDN)技術(shù)受到了學術(shù)界和產(chǎn)業(yè)界的極大關(guān)注,而其中基于OpenFlow的SDN技術(shù)更是得到了大家的青睞[1,2],它已應(yīng)用于如Google等互聯(lián)網(wǎng)企業(yè)的大型數(shù)據(jù)中心網(wǎng)絡(luò)中。
SDN網(wǎng)絡(luò)架構(gòu)的重要特征是控制平面與轉(zhuǎn)發(fā)平面的分離,在基于OpenFlow的SDN架構(gòu)中,用戶通過分離的控制器對網(wǎng)絡(luò)中的OpenFlow交換機下發(fā)各種類型的轉(zhuǎn)發(fā)策略,實現(xiàn)用戶特定業(yè)務(wù)的部署,如防火墻、負載均衡、流量工程等。
SDN應(yīng)用/編排層根據(jù)某業(yè)務(wù)特征生成特定流表項時,所生成的策略可能與系統(tǒng)內(nèi)已有的其他業(yè)務(wù)策略間產(chǎn)生沖突。如表1所示,策略1和4、策略2和3以及策略5和6之間都存在重疊內(nèi)容,且不同策略的行為互相抵觸,這些策略間都存在沖突問題。
當對一個大型的基于OpenFlow的SDN中的所有業(yè)務(wù)進行自動部署和控制時,如果不對OpenFlow交換機中的流表進行沖突檢測,一旦OpenFlow控制器對OpenFlow交換機添加的某些策略與之前已有的策略間存在沖突,將使得一些已存在的流表項被更改或覆蓋而失效,最終對特定業(yè)務(wù)產(chǎn)生致命的影響,如,當前策略沖突中有防火墻應(yīng)用,則會使某些本被防火墻阻止的數(shù)據(jù)分組順利通過,甚至給基于OpenFlow的SDN帶來安全隱患,也不利于大型網(wǎng)絡(luò)中SDN業(yè)務(wù)的自動部署。
圖1展示了一個策略沖突引起防火墻功能失效的例子,該例子的拓撲圖中包含了4臺PC機、1臺OpenFlow交換機和1臺OpenFlow控制器。PC機A的IP地址為192.168.1.10,PC機B的IP地址為 192.168.2.2,PC機 C的 IP地址為192.168.3.7,PC機D的IP地址為192.168.6.5,4臺PC機分別與OpenFlow交換機相連組成一個局域網(wǎng)。OpenFlow交換機中的Flow Table 0中存在一條防火墻規(guī)則,該防火墻的規(guī)則是屏蔽源IP地址為192.168.1.0/24、目的IP地址為192.168.6.0/24的數(shù)據(jù)分組。此時,OpenFlow控制器即將下發(fā)一條策略,該策略是將目的 IP地址和源 IP地址都為192.168.0.0/16的所有數(shù)據(jù)分組設(shè)置一個隊列ID。如果把該策略下發(fā)到OpenFlow交換機中,所有源IP地址為 192.168.1.0/24和目的 IP地址為192.168.6.0/24的數(shù)據(jù)分組的動作行為將會沖突,從而導(dǎo)致原有防火墻規(guī)則的失效。
OpenFlow相關(guān)協(xié)議本身并未提供流表沖突檢測的處理機制,當前某些OpenFlow交換機具有簡單的流表沖突檢測功能,其流表沖突檢測功能采用了基于傳統(tǒng)的算法查找 OpenFlow交換機中沖突的流表項的方法。如果OpenFlow交換機中的流表數(shù)目非常龐大,使用傳統(tǒng)的流表沖突檢測算法會增加OpenFlow交換機的運行負擔、延緩流表的部署,影響數(shù)據(jù)分組正常的轉(zhuǎn)發(fā)。
表1 存在沖突的流表策略
圖1 策略沖突引起防火墻功能失效
當某個應(yīng)用在SDN中進行具體部署時,若此應(yīng)用需同時向多個 OpenFlow交換機下發(fā)不同的策略,當其中一個交換機中檢測出有流表沖突時,為避免對已有應(yīng)用產(chǎn)生影響,SDN控制器需要撤銷當前應(yīng)用下發(fā)的流表操作,并將對其他交換機已完成的操作進行回滾,然后將處理結(jié)果通知應(yīng)用/編排層。顯然因為沖突檢測被放置在交換機內(nèi),給部署操作帶來了冗余,增加了部署時間,也給整個部署過程帶來了更多的不確定性,所以在控制器下發(fā)策略之前進行檢測,預(yù)防沖突策略顯得十分必要。
本文首次將SDN與深度學習結(jié)合,提出一種部署于控制器上的基于深度學習的SDN流表沖突檢測方法。該方法利用深度學習抽象化高層數(shù)據(jù)、自動學習的特點,相比于傳統(tǒng)的沖突查找算法,在大規(guī)模應(yīng)用部署時能更快速地對超大規(guī)模的流表項做出是否沖突的檢測。
OpenFlow協(xié)議[3]中沒有給出流表沖突的具體解決策略,僅有如下描述:如果對流表中OFPFF_CHECK_OVERLAP位進行了設(shè)置,OpenFlow交換機必須首先檢測新下發(fā)的流表與交換機中已經(jīng)存在的流表是否存在重復(fù)。當前對OpenFlow流表沖突檢測的研究,都是基于傳統(tǒng)的查找算法。
[4]提出了通過定義策略簡化網(wǎng)絡(luò)的管理,同時提出了相關(guān)算法,可用在傳統(tǒng)網(wǎng)絡(luò)的沖突策略和不可達策略的檢測中;參考文獻[5,6]提出了一種基于“first-order”邏輯來定義可能沖突的方法來檢測沖突,并且在OpenFlow控制器下發(fā)流表前部署了“推理引擎”來檢測流表沖突。
參考文獻[7]介紹了一種通過使用 FlowVisor技術(shù)來檢測 OpenFlow網(wǎng)絡(luò)中潛在的沖突問題,F(xiàn)lowVisor是一種有著特殊用處的OpenFlow控制器,它可以在OpenFlow交換機和多臺OpenFlow控制器之間充當一個代理,他們提出的沖突檢測算法是:基于散列字典樹(hash-trie based conflict detection,HTCD)算法及基于沖突檢測的本體論(ontology based conflict detection,OCD)。
參考文獻[8]為 SDN提出了一種減少比特矢量(RBV reduced bit vector)算法對流表進行沖突檢測。RBV算法用到了比特矢量的概念并且采用了按組分類的算法,將相同前綴長度的流表分到一個組中,從而減少了多余的比特矢量。
參考文獻[9]提出了安全策略執(zhí)行內(nèi)核(FortNOX)作為對開放源NOX OpenFlow控制的一個擴展,F(xiàn)ortNOX采用了一種基于別名檢測的方法來確定每一個應(yīng)用是否都被安全授權(quán),強制優(yōu)先級最低的策略進入仲裁。
參考文獻[10]提出了稱為“FlowGuard”的綜合框架,應(yīng)用在動態(tài)的OpenFlow網(wǎng)絡(luò)中檢測和解決與防火墻相沖突的策略,F(xiàn)lowGuard在網(wǎng)絡(luò)狀態(tài)更新時會對網(wǎng)絡(luò)中的流表進行檢測是否與防火墻策略相沖突。
參考文獻[11]提出全網(wǎng)內(nèi)所有轉(zhuǎn)發(fā)規(guī)則在進行插入、更新和刪除操作時,使用 VeriFlow動態(tài)地檢測違反規(guī)則的流表,他們在傳統(tǒng)分組分類算法的基礎(chǔ)上提出了多維前綴樹,一棵多維前綴樹是一種用來存儲組合數(shù)組的有序的樹狀數(shù)據(jù)結(jié)構(gòu),這棵樹與符合流表規(guī)則的數(shù)據(jù)分組相關(guān)聯(lián);參考文獻[10]提出了一種形式化的模型來檢測內(nèi)部功能是否有異常,這里異常的定義是在同一個網(wǎng)絡(luò)中,是否有兩個或更多的相同功能被部署。
參考文獻[13]提出了使用 ADRS(anomaly detecting and resolving for SDN)解決策略和規(guī)則中存在的異常,采用了間隔樹模型快速掃描流表,然后建立一個共享模型來分配網(wǎng)絡(luò)的優(yōu)先級,通過這兩個模型,提出了一種自動化的算法來檢測和解決SDN模型中存在的流表異常問題。
參考文獻[14]提出了一種基于 FlowPath的實時動態(tài)策略沖突檢測及解決辦法,通過獲取實時的SDN狀態(tài)檢測防火墻策略的直接和間接沖突,基于FlowPath進行自動化和細粒度的解決沖突。
在以上所有相關(guān)研究中,未有對超大規(guī)模流表項進行沖突檢測的研究及相關(guān)實驗結(jié)果,也未有人提出使用與機器學相關(guān)的方法進行檢測,本文首次提出一種基于深度學習的適應(yīng)于超大規(guī)模流表項沖突檢測的方法。
當應(yīng)用/編排層部署新的應(yīng)用時,需檢測下發(fā)到某一交換機內(nèi)的策略是否與之前已存在的流表項存在沖突,使用深度學習進行檢測時,以需要檢測的所有流表項的域作為模型特征。由于SDN中的交換機內(nèi)的流表項數(shù)目將隨著應(yīng)用的增長而不斷增長,深度學習難以對非固定大小的輸入進行檢測,采用基于固定窗口的循環(huán)檢測方法,檢測架構(gòu)如圖2所示。
圖2 流表沖突檢測架構(gòu)
通常應(yīng)用/編排層(或控制器)中維護著SDN中所有交換機的流表信息,假設(shè)當前應(yīng)用產(chǎn)生了某條策略,需要下發(fā)到某一OpenFlow交換機,此時將該交換機內(nèi)獲取的所有流表信息按每X條流表項來分割,當有一條新的流表項需要下發(fā)時,將這條流表項與已分割的 X條流表項組成一個X+1條流表項的窗口,作為第一級深度學習模型的輸入數(shù)據(jù)。其中,第一級深度學習模型的輸入數(shù)據(jù)是X+1條流表項的所有信息特征。如果OpenFlow控制器中已存在的流表項數(shù)目不足X條,則用無效的填充信息將窗口填充到X條流表項。如果分割后的片段中的流表項數(shù)目不足X條,則用其他窗口中的流表項將此窗口的流表項數(shù)目填充到X條。分別將所有的窗口作為第一級深度學習模型的輸入來判斷這個窗口中的所有流表項是否存在沖突。如果存在沖突,則將該窗口的每條流表項與即將下發(fā)的流表項組成一個窗口,作為第二級深度學習模型的輸入數(shù)據(jù)來定位具體的兩條沖突的流表項。其中,第二級深度學習模型是以兩條流表項的所有特征信息作為該模型的輸入數(shù)據(jù)。
根據(jù)OpenFlow1.5協(xié)議,OpenFlow匹配域共包括45個字段,取其中的ETH_DST、ETH_SRC、ETH_TYPE、IPv4_SRC、IPv4_DST、IPv4_SRC_MASK和IPv4_DST_MASK作為深度學習模型的輸入特征。其中,ETH_DST為目的MAC地址,ETH_SRC為源MAC地址,ETH_TYPE為以太網(wǎng)協(xié)議類型,IPv4_SRC為源IP地址,IPv4_DST為目的IP地址,IPv4_SRC_MASK為源IP地址的子網(wǎng)掩碼,IPv4_DST_MASK為目的IP地址的子網(wǎng)掩碼。最終,這些字段的值將會被轉(zhuǎn)換成二進制值作為深度學習模型的輸入特征。
第一級深度學習模型的輸入層為CNN層,隱藏層由M層CNN層和N層全連接層組合,輸出層為只有一個神經(jīng)元的全連接層。輸入層和隱藏層使用的激活函數(shù)為ReLU(rectified linear unit)函數(shù),該函數(shù)為非線性函數(shù),函數(shù)為:
輸出層的激活函數(shù)為非線性激活函數(shù)Sigmoid函數(shù),為:
為了簡化第二級深度學習模型,并取效果最好的一個模型,將第二級深度學習模型總共分為兩類:一類模型包括CNN層和全連接層;另一類模型只有全連接層。前者的輸入層為CNN層,隱藏層都為全連接層,輸出層為只有一個神經(jīng)元的全連接層。輸入層和隱藏層的激活函數(shù)都為ReLU函數(shù),輸出層的激活函數(shù)為 Sigmoid函數(shù)。后者的輸入層、隱藏層和輸出層都為全連接層,激活函數(shù)的分布情況與前者相同。
第一級深度學習模型和第二級深度學習模型的總體結(jié)構(gòu)分別如圖3、圖4所示。
圖3 第一級深度學習模型總體結(jié)構(gòu)
本文將使用的深度學習模型結(jié)構(gòu)用如下方式描述:
其中,Ki= [T, L, n0, n1,…, ni,…, nL]?!癐”表示輸入層神經(jīng)元的個數(shù);“T”表示層的類型,卷積層用“C”表示,全連接層用“F”表示;“L”表示層的數(shù)量;“ni”表示隱藏層中每一層的神經(jīng)元個數(shù);“O”表示輸出層神經(jīng)元的個數(shù)。
模型訓(xùn)練的特征個數(shù)越多,達到高精度模型所需的樣本數(shù)量就越多。由于第一級深度學習模型具有的輸入特征個數(shù)有24 000個,特征數(shù)較多,所以訓(xùn)練第一級深度學習模型時采用1 200 000個樣本的數(shù)據(jù)集。為了獲取最佳的SDN策略沖突檢測的第一級深度學習模型,本文構(gòu)建了多個深度學習模型進行比較。
本文進行訓(xùn)練時所使用的第一級深度學習模型如下:
1〉C3F4_1=(24 000,[“C”,3,512,256,128],[“F”,3,128,128,128],[“F”,1]);
2〉C3F4_2=(24 000,[“C”,3,128,128,64],[“F”,3,64,64,64],[“F”,1]);
3〉C3F4_3=(24 000,[“C”,3,128,128,64],[“F”,3,64,32,16],[“F”,1]);
4〉C3F3=(24 000,[“C”,3,128,64,32],[“F”,2,32,16],[“F”,1]);
5〉C3F2=(24 000,[“C”,3,80,80,64],[“F”,1,64],[“F”,1]);
6〉C3F5=(24 000,[“C”,3,128,128,128],[“F”,4,128,64,32,16],[“F”,1]);
7〉C4F4=(24 000,[“C”,4,128,128,64,64],[“F”,3,64,32,16],[“F”,1]);
8〉C5F2=(24 000,[“C”,5,128,64,32,16,8],[“F”,1,8],[“F”,1])。
由于第二級深度學習模型具有的輸入特征個數(shù)為480個,特征數(shù)較少,因此訓(xùn)練第二級深度學習模型時采用了400 000個樣本的數(shù)據(jù)集,且為了獲取最佳的第二級深度學習模型,本文構(gòu)建了兩種不同類型的多個深度學習模型進行比較:一種類型是最簡單的模型,模型中所有層都為全連接層;另一種類型是稍微復(fù)雜的模型,模型中包括卷積層和全連接層。
根據(jù)模型的描述方式,本文進行訓(xùn)練的不同類型的多個第二級深度學習模型的描述形式如下:
1〉F3=(24 000,([“F”,2,256,128]),[“F”,1]);
2〉F4=(24 000,([“F”,3,256,128,64]),[“F”,1]);
3〉C1F4=(24 000,([‘C’,1,512],[“F”,3,512,256,128]),[“F”,1]);
4〉C1F3=(24 000,([“C”,1,256],[“F”,2,256,128]),[“F”,1])。
當前使用流表項中的ETH_DST、ETH_SRC、IP_PROTO、IPv4_SRC、IPv4_DST、IPv4_SRC_MASK和IPv4_DST_MASK字段作為每一條流表項的特征。第一級深度學習模型輸入的是100條流表項的特征信息,所以對于第一級深度學習模型的單位模型輸入特征包括了100條流表項的所有特征信息。第一級深度學習模型的數(shù)據(jù)集包括了兩類數(shù)據(jù),一類為具有沖突流表項的數(shù)據(jù),另一類為沒有沖突流表項的數(shù)據(jù)。第一級深度學習模型的數(shù)據(jù)集產(chǎn)生算法如下。
(1)產(chǎn)生沖突類型的流表項數(shù)據(jù)
flow_entry_1 = GenerateRandomFlowEntry()
flow_entry_2 = GenerateConflictFlowEntry(flow_ entry1)
圖4 第二級深度學習模型結(jié)構(gòu)
while true:
flow_entry_i = GenerateRandomFlowEntry()
if isConflict(flow_entry_i, conflict_flow_entries) == False THEN
conflict_flow_entries.appEND(flow_entry_i)
break
end if
number of conflict_flow_entries: m
if m 〈 100 then
go to 3
end if
Shuffle (conflict_flow_entries)
conflict_sample.appEND(conflict_flow_entries)
number of conflict_sample: n
if n 〈 600 000 then
go to 1
end if
上述算法中一個沖突樣本的生成方法:先隨機產(chǎn)生一條流表項,后根據(jù)沖突規(guī)則生成一條與之沖突的流表項,再生成其余與上兩條流表項均不沖突的98條流表項,最后將上述100個流表項順序打亂。按此方法生成600 000個沖突樣本。
(2)產(chǎn)生非沖突類型的流表項
flow_entry_1 = GenerateRandomFlowEntry()
while true:
flow_entry_i = GenerateRandomFlowEntry()
if isConflict(flow_entry_i, non_ conflict_ flow_entries) == false then
non_conflict_flow_entries.appEND(flow_entry_i)
break
end if
number of non_conflict_flow_entries: m
if m 〈 100 then
go to 2
end if
Shuffle(non_conflict_flow_entries)
non_conflict_sample.appEND(flow_entries)
number of non_conflict_sample: n
if n 〈 600000 then
go to 1
end if
一個非沖突流表項的生成的過程與沖突樣本生成的過程類似,但生成的規(guī)則不同,按此方法生成600 000個非沖突樣本。
在對使用上述算法產(chǎn)生的流表項進行預(yù)處理時,分別將沖突類型和非沖突類型的流表項數(shù)據(jù)轉(zhuǎn)換成二進制形式,并將每個沖突類型的樣本打上標簽1,將每個非沖突類型的樣本打上標簽0。最后將沖突類型和非沖突類型的流表項數(shù)據(jù)合并,并且打亂順序,最后的數(shù)據(jù)集含1 200 000個樣本,沖突和非沖突占比為1:1。在第4.2節(jié)所述的實驗環(huán)境下,生成第一級模型的訓(xùn)練樣本時間約為5 h。
第二級深度學習模型輸入的是 2條流表項的特征信息,所以對于第二級深度學習模型的單位模型輸入特征包括了 2條流表項的特征信息。第二級深度學習模型的數(shù)據(jù)集同樣包括兩類數(shù)據(jù),即具有沖突流表項的數(shù)據(jù)和沒有沖突流表項的數(shù)據(jù)。第二級深度學習模型的數(shù)據(jù)集產(chǎn)生算法與第一級深度學習模型的數(shù)據(jù)集產(chǎn)生流程相似。使用了用該算法產(chǎn)生的400 000個樣本對第二級模型進行訓(xùn)練和測試,其中沖突和非沖突占比為1:1。第二級模型的訓(xùn)練樣本生成時間約為15 min。
本文涉及的實驗環(huán)境如下:兩塊Navidia K80的顯卡,128 GB的內(nèi)存,操作系統(tǒng)為Ubuntu14.04,使用了基于Keras的深度學習框架。
針對表2不同的第一級深度學習模型,使用含1 200 000個樣本的數(shù)據(jù)集進行訓(xùn)練,最后的測試精度見表2。通過表2可以看出,C3F4_3模型是測試精確度最高的模型,因此本文采取的第一級深度學習模型是C3F4_3模型。
表2 第一級深度學習模型的測試精度
針對表3不同的第二級深度學習模型,使用含400 000個樣本的數(shù)據(jù)集進行訓(xùn)練,最后的測試精度見表3。通過表3可以看出F3模型是測試精度最高的模型,因此本文采取的第二級深度學習模型是F3模型。
表3 第二級深度學習模型的測試精度
本文對流表沖突檢測的深度學習模型與機器學習中的 RandomForest分類器[13]進行了比較。在與第一級沖突檢測相同的硬件環(huán)境下,基于Ubuntu 14.04及scikit-learn機器學習框架,使用相同的數(shù)據(jù)集,使用 RandomForest(隨機森林)分類器進行了實驗,與深度學習的結(jié)果比較見表4。
表4 深度學習方法和其他機器學習方法的比較
從該結(jié)果可以看出,訓(xùn)練相同的樣本數(shù)量,深度學習方法的測試精度比其他機器學習方法的測試精度高。其中,隨機森林分類器在訓(xùn)練1 200 000個樣本數(shù)據(jù)時,由于內(nèi)存溢出而無法獲得具體的精度。
同時對基于深度學習的檢測方法的檢測時間進行了測試。在實驗過程中,在不同大小的原始流表項作為檢測對象時,第一級深度學習模型的檢測時間見表5。
第二級深度學習模型定位出具體沖突流表項(即檢測100個第二級深度學習模型的窗口)的時間為0.206 s。沖突檢測總時間為第一級深度學習模型和第二級深度學習模型檢測時間之和。當OpenFlow控制器中所有的流表項與即將下發(fā)的流表項沒有沖突流表項時,則無需使用第二級深度學習模型進行檢測,該級時間為0;當OpenFlow交換機中的某一條流表項與即將下發(fā)的流表項有一個沖突時,第二級深度學習模型沖突檢測時間為0.206 s。當與n個第一級深度學習模型窗口內(nèi)的流表項有沖突時,第二級檢測時間為n×0.206 s,總時間隨著流表項的大小呈線性增長。
參考文獻[5,6]中使用的 first-order logic算法對流表沖突檢測時的檢測時間見表6。
使用兩種檢測方法所耗費的總時間比較如圖 5所示。從圖5中可以看出,在對小規(guī)模數(shù)量的流表項進行沖突檢測時,參考文獻[5]使用的基于first-order logic方法,與基于深度學習方法相比,檢測時間沒有太大區(qū)別;而在對大規(guī)模數(shù)量的流表項進行流表沖突檢測時,參考文獻[3]所使用的first-order logic算法,檢測時間呈指數(shù)級增長,而深度學習方法所需時間則呈線性增長,遠小于傳統(tǒng)算法的檢測時間。
圖5 深度學習方法與first-order logic方法沖突檢測時間比較
參考文獻[6]提出使用HTCD算法及OCD算法對沖突進行檢測。前者的平均算法時間復(fù)雜度為O(nd),后者為O(n)。其中,n為流表項總數(shù),d為數(shù)據(jù)分組頭檢測域的個數(shù)。而本文提出的基于深度學習的沖突檢測方法,如采用窗口分割方法將所有n條流表項分割成每個窗口含k(k〉100)條流表項的m個窗口,則在任何情況下時間復(fù)雜度均為O(n/k)。
參考文獻[14]中提出的基于FlowPath的SDN安全策略動態(tài)沖突檢測方法。在一個有h臺主機、l臺交換機、平均每臺交換機中的流表項數(shù)為n的情況下。找出全網(wǎng)的所有沖突的算法查找次數(shù)為:
最壞情況:h×n×l次比較(全部搜索);
平均情況:h×(n/2)×(l/2)次比較;
最佳情況:h次比較(比較時一次命中)。
本文采用兩級深度學習的沖突檢測算法,要完成對所有流表項的沖突檢測,第一級只需完成對這m個窗口的基于深度學習模型的檢測,檢測次數(shù)為m=[n/k]+1,第二級檢測只有在定量檢測,并檢測到某個窗口存在沖突時才會被啟動,如果僅定性檢測某流表是否與系統(tǒng)內(nèi)流表存在沖突,則m=[n/k]+1次即最壞情況,該值遠小于參考文獻[14]中提到的平均檢測次數(shù)及最壞次數(shù)。
本文通過將深度學習與基于 OpenFlow的SDN相結(jié)合,提出了一種新的用來檢測基于OpenFlow的SDN中的流表沖突的方法。該方法采用第一級深度學習模型定性判斷在所有流表中是否存在沖突,并采用第二級深度學習模型定位出具體沖突的流表項。通過實驗數(shù)據(jù)可以看出,當OpenFlow網(wǎng)絡(luò)中存在大量的流表時,本文提出的方法在檢測沖突流表項所花費的時間上遠小于傳統(tǒng)的流表沖突檢測方法。因此,這種新方法適合于對超大規(guī)模流表進行沖突檢測。
表5 第一級深度學習模型的檢測時間
表6 first-order logic方法下不同數(shù)量流表項沖突檢測時間
但是,任何算法都不能保證達到100%的檢測精確度,基于深度學習的算法也存在同樣的問題,該方法的精確度與各種因素有關(guān),如訓(xùn)練模型時所使用的數(shù)據(jù)集的大小、數(shù)據(jù)集的特征選擇、深度學習模型的層數(shù)及每層所使用的模型等,在后續(xù)的研究過程中,將朝此方向努力,使該方法的精度能得到進一步的提高。
參考文獻:
[1] 韋樂平. SDN的戰(zhàn)略性思考[J]. 電信科學, 2015, 31(1): 7-12.WEI L P. Strategic Thinking on SDN [J]. Telecommunications Science, 2015, 31(1): 7-12.
[2] CLOUGHERTY M M, WHITE C A, VISWANATHAN H, et al.SDN在IP網(wǎng)絡(luò)演進中的作用[J]. 電信科學, 2014, 30(5): 1-13.CLOUGHERTY M M, WHITE C A, VISWANATHAN H, et al.Role of SDN in IP network evolution[J]. Telecommunications Science, 2014, 30(5): 1-13.
[3] SPECIFICATION O F S. Version 1.5. 1(wire protocol 0x01)[EB]. 2015.
[4] VERMA D C. Simplify network administration using policy-based management[J]. Network IEEE, 2002, 16(2): 20-26.
[5] LOPES A B B, LIMA DE C G A, FERNANDEZ M P.Flow-based conflict detection in OpenFlow networks using first-order logic[C]//2014 IEEE Symposium on Computers and Communication (ISCC), April 27-May 2, 2014, Toronto, Japan.New Jersey: IEEE Press, 2014: 1-6.
[6] BATISTA B L A, DE CAMPOS G A L, FERNANDEZ M P. A proposal of policy based OpenFlow network management[C]//2013 20th International Conference on Telecommunications(ICT), Aug 14-16, 2013, Guilin, China. New Jersey: IEEE Press,2013: 1-5.
[7] NATARAJAN S, HUANG X, WOLF T. Efficient conflict detection in flow-based virtualized networks[C]//2012 International Conference on Computing, Networking and Communications (ICNC), Oct 8-10, 2012, Maui, Hawaii. New Jersey: IEEE Press, 2012: 690-696.
[8] LO C C, WU P Y, KUO Y H. Flow entry conflict detection scheme for software-defined network[C]//2015 International Telecommunication Networks and Applications Conference(ITNAC), November 18, 2015, Sydney, Australia. New Jersey: IEEE Press, 2015: 220-225.
[9] PORRAS P, SHIN S, YEGNESWARAN V, et al. A security enforcement kernel for OpenFlow networks[C]//The First Workshop on Hot Topics in Software Defined Networks, August 13, 2012, Helsinki, Finland. New York: ACM Press, 2012:121-126.
[10] HU H, HAN W, AHN G J, et al. FLOWGUARD: building robust firewalls for software-defined networks[C]//The Third Workshop on Hot Topics in Software Defined Networking, August 22, 2014,Chicago, Illinois, USA. New York: ACM Press, 2014: 97-102.
[11] KHURSHID A, ZOU X, ZHOU W, et al. VerIFlow: verifying network-wide invariants in real time[C]//10th USENIX Symposium on Networked Systems Design and Implementation (NSDI 13), Apr 3-5, 2013, Lombard, IL, USA. [S.l.:s.n.], 2013: 15-27.
[12] BASILE C, CANAVESE D, LIOY A, et al. Inter‐function anomaly analysis for correct SDN/NFV deployment[J]. International Journal of Network Management, 2016, 26(1): 25-43.
[13] WANG P, HUANG L, XU H, et al. Rule anomalies detecting and resolving for software defined networks[C]//2015 IEEE Global Communications Conference (GLOBECOM), Dec 6-10,2015, San Diego, USA. New Jersey: IEEE Press, 2015: 1-6.
[14] 王娟, 王江, 焦虹陽, 等. 一種基于OpenFlow的SDN訪問控制策略實時沖突檢測與解決辦法[J]. 計算機學報, 2015,38(4): 872-883.WANG J, WANG J, JIAO H Y, et al. A method of Open-Flow-based real-time conflict detection and resolution for SDN access control policies[J]. Chinese Journal of Computers, 2015,38(4): 872-883.
[15] LIAW A, WIENER M. Classification and regression by randomForest[J]. R News, 2002, 2(3): 18-22.
Policy conflict detection in software defined network by using deep learning
LI Chuanhuang1, CHENG Cheng1, YUAN Xiaoyong2, CEN Lijie1, WANG Weiming1
1. School of Information and Electrical Engineering, Zhejiang Gongshang University, Hangzhou 310018, China 2. LiLAB, University of Florida, Gainesville, Florida 32611, USA
In OpenFlow-based SDN(software defined network), applications can be deployed through dispatching the flow polices to the switches by the application orchestrator or controller. Policy conflict between multiple applications will affect the actual forwarding behavior and the security of the SDN. With the expansion of network scale of SDN and the increasement of application number, the number of flow entries will increase explosively. In this case,traditional algorithms of conflict detection will consume huge system resources in computing. An intelligent conflict detection approach based on deep learning was proposed which proved to be efficient in flow entries’ conflict detection. The experimental results show that the AUC (area under the curve) of the first level deep learning model can reach 97.04%, and the AUC of the second level model can reach 99.97%. Meanwhile, the time of conflict detection and the scale of the flow table have a linear growth relationship.
policy conflict detection, deep learning, anomaly detection, SDN, OpenFlow
s: The National High Technology Research and Development Program (863 Program) (No.2015AA011901), The National Natural Science Foundation of China (No.61402408, No.61379120), Zhejiang Provincial Natural Science Foundation of China(No.LY18F010006), Zhejiang’s Key Project of Research and Development Plan (No.2017C03058)
TP393
A
10.11959/j.issn.1000-0801.2017305
2017?06?29;
2017?11?10
國家高技術(shù)研究發(fā)展計劃(“863”計劃)基金資助項目(No.2015AA011901);國家自然科學基金資助項目(No.61402408,No.61379120);浙江省自然科學基金資助項目(No.LY18F010006);浙江省重點研發(fā)計劃基金資助項目(No.2017C03058)
程成(1993?),男,浙江工商大學信息與電氣工程學院碩士生,主要研究方向為軟件定義網(wǎng)絡(luò)、深度學習。
袁小雍(1990?),男,美國佛羅里達大學博士生,主要研究方向為網(wǎng)絡(luò)安全、深度學習、云計算和分布式系統(tǒng)。
岑利杰(1992?),男,浙江工商大學信息與電氣工程學院碩士生,主要研究方向為網(wǎng)絡(luò)安全、深度學習、軟件定義網(wǎng)絡(luò)。
王偉明(1964?),男,博士,浙江工商大學信息與電子工程學院教授,主要研究方向為新一代網(wǎng)絡(luò)架構(gòu)、開放可編程網(wǎng)絡(luò),特別是IETF ForCES、SDN及可重構(gòu)網(wǎng)絡(luò)等方面的協(xié)議、模型和算法。
李傳煌(1980?),男,博士,浙江工商大學信息與電氣工程學院副教授,2016年美國佛羅里達大學訪問學者,主要研究方向為軟件定義網(wǎng)絡(luò)、深度學習、開放可編程網(wǎng)絡(luò)、系統(tǒng)性能預(yù)測和分析模型,發(fā)表EI/SCI檢索論文40余篇,申請專利15項。