陳荔
(長安大學,信息與網(wǎng)絡管理處,陜西,西安 710064)
目前,網(wǎng)絡數(shù)據(jù)流量呈現(xiàn)多元化、規(guī)模化發(fā)展,其利用服務鏈依照既定的邏輯順序,經過防火墻、入侵檢測點等服務功能點,才能為人們提供安全、穩(wěn)定的網(wǎng)絡服務,而前提是對服務路徑進行配置。有限網(wǎng)絡資源下,持續(xù)增長的網(wǎng)絡流量數(shù)據(jù)會造成帶寬消耗過量、鏈路擁堵、服務安全等諸多問題;而SDN新型網(wǎng)絡架構采用控制、轉發(fā)分離的結構,集中化的網(wǎng)絡控制,可動態(tài)、集中地調配數(shù)據(jù)流量的路徑,為路徑配置提供極大便利,但是,也存在管控集中、控制器漏洞、惡意應用等安全問題。而傳統(tǒng)的安全防御秉承“威脅感知、問題移除”的策略,不能有效發(fā)現(xiàn)和防御未知的安全風險,也即需依賴于既有的攻擊行為及特征。由此,擬態(tài)防御技術得以提出和發(fā)展,其通過動態(tài)異構冗余架構的引入,利用自身網(wǎng)絡架構、機制的優(yōu)化,變“亡羊補牢”為主動防御。為此,探究一種適用于服務路徑配置的SDN(Software Definition Network)擬態(tài)防御架構,不僅能夠緩解傳統(tǒng)網(wǎng)絡服務的弊端性,而且,可最大限度地優(yōu)化服務路徑配置及安全性。
大規(guī)模的網(wǎng)絡流量流轉時,在相同時間可能會占用多個鏈路帶寬,可將其定義為一個二元組〈F(x),L(s)〉,F(x),L(x)分別為轉發(fā)數(shù)據(jù)流、所選鏈路帶寬剩余的大小,若前者大于后者,則勢必造成鏈路堵塞[1]。為此,本文將根據(jù)網(wǎng)絡鏈路負載狀態(tài)及流量特征,動態(tài)調整流量分流和路由,從而基于負載均衡實現(xiàn)路徑的自適應配置。同時,因為網(wǎng)絡環(huán)境復雜,單一的強化學習方法難以提取人工特征,狀態(tài)—動作空間狹窄問題[2-3],為此,本文選用融合多層神經網(wǎng)絡和強化學習2類模型的深度強化學習,建構路徑配置的方法框架,如圖1所示。

圖1 SDN網(wǎng)絡的服務路徑配置框架
圖1中,路由決策模塊是核心,其采用深度強度學習方法,通過深度學習神經網(wǎng)絡從數(shù)據(jù)處理模塊中獲取網(wǎng)絡鏈路和流特征的狀態(tài)St,而服務路徑配置的網(wǎng)絡行為則為動作at,路徑優(yōu)化調配目標則為獎勵rt。通常,深度學習網(wǎng)絡采用狀態(tài)—動作值Q函數(shù)Q(St,at}來評價對狀態(tài)S的長期獎勵預期的動作,在訓練時,根據(jù)下式動態(tài)更新Q值,如式(1)和式(2),
(1)

(2)
式中,α為學習速率、γ為折扣因子,訓練過程中,深度神經網(wǎng)絡以ε-greddy來選取擁有最高(St,at}的動作以實現(xiàn)預期長期獎勵的最大化,并以ε的概率從全部的action中隨機擇取一個,使用1-ε的概率抽取at=maxaQ(St,a}以確保學習過程中探索與利用的平衡。
傳統(tǒng)強化學習的查表容易產生存儲、樣本及計算的高維性[4],但動態(tài)、大規(guī)模的網(wǎng)絡環(huán)境下,對眾多狀態(tài)、動作對的Q值表進行存儲、計算不可能。為此,本文使用以深度神經網(wǎng)絡以參數(shù)化函數(shù)來近似強化學習的Q值表,并針對強化學習訓練數(shù)據(jù)相關性的問題,利用經驗回訪方式予以解決,即將訓練中學習到的路由選擇經驗中的狀態(tài)、動作及獎勵存入記憶池。而后,將其中的數(shù)據(jù)作為神經網(wǎng)絡訓練樣本對其進行訓練,以此,便可根據(jù)網(wǎng)絡鏈路狀態(tài)及流量特征完成的網(wǎng)絡服務路徑進行自適應配置。
本文將動態(tài)異構冗余架構引入SDN控制層,構建一體化的內生擬態(tài)防御機制。但是,控制層的擬態(tài)防御僅可確保路徑配置信息的可靠性,無法確保數(shù)據(jù)流實際傳輸路徑與配置路徑的一致性[5-6],為此,本文結合OpenFlow交換機的特性,建構路徑轉發(fā)的驗證機制,即匹配流表出發(fā)向控制器發(fā)送Packet_in消息的動作,其可記錄數(shù)據(jù)流實際經過哪個交換機,以獲取數(shù)據(jù)流的實際傳輸路徑。如此,便可從路徑配置及效驗2個層面,來建構SDN擬態(tài)防御的整體架構,如圖2所示。

圖2 用于路徑配置的SDN擬態(tài)防御架構
應用層:該層集成了各類SDN業(yè)務應用,可通過控制層的接口實現(xiàn)網(wǎng)絡服務資源的調用[7],本文采用B/S結構開展路徑配置業(yè)務,以該層作為客戶端,配設GUI界面進行路徑配置業(yè)務操作,待生成可靠的路徑配置信息后,將其封裝為JSON統(tǒng)一數(shù)據(jù)格式,通過RESTAPI統(tǒng)一標準的北向接口,與相當于服務器的控制層進行交互。同時,為實現(xiàn)應用層與擬態(tài)控制器的通信,此處選用HTTP協(xié)議,在HTTP的請求報文中封裝REST的Web架構配置數(shù)據(jù),并使用Put、Post、Get、Delete等作為網(wǎng)絡資源操作的基本動作與URL規(guī)范格式的網(wǎng)絡資源來完成應用層路徑配置業(yè)務的下發(fā)。
擬態(tài)控制層:該層通過引入動態(tài)冗余架構,以不同的異構執(zhí)行體進行隨機、動態(tài)的數(shù)據(jù)處理,提升內部架構的不可預測,達到擬態(tài)防御的目的。具體由輸入代理(北向代理)、調度器、執(zhí)行體池、判決器等組成,其中,輸入代理是接受應用層下發(fā)的路徑配置信息的HTTP請求,并將其存儲傳輸給調度器;調度器采用調度的動態(tài)選擇算法,來隨機選擇路徑配置的異構執(zhí)行體,以此提升SDN網(wǎng)的安全防御性,而因執(zhí)行體對象結構的差異越大,則擬態(tài)防御的效果越優(yōu),所以,本文采用MOSS量化各異構執(zhí)行體的結構差異,且異構度并非由單一體確定,此處將其定義為執(zhí)行體的異構度,如式(3),
(3)
式中,σ(Ei,Ej}為Ei、Ej2個執(zhí)行體的異構度,m為調度選擇的m個執(zhí)行體,σ∈(0,1]為異構度,調度動態(tài)算法選擇執(zhí)行體時,以力求σ最小。調度選擇時,應選擇防御能力強的執(zhí)行體,故而,本文引入安全防御系數(shù),將其定義為式(4),
μ(Ep}={μ1,μ2,μ3…,μn}
(4)
式中,n為執(zhí)行體集中的異構執(zhí)行體數(shù)量,Ep為執(zhí)行體集。初始時,各異構執(zhí)行體的安全防御系數(shù)相同,但后期會根據(jù)判決器反饋執(zhí)行體的每次輸出情況進行更新,如式(5),
(5)
式中,?為更新因子。
據(jù)此,可得執(zhí)行體集的安全防御系數(shù)為式(6),
(6)
結合執(zhí)行體的異構度、安全防御系數(shù),可將執(zhí)行體的調度對象函數(shù)定義為式(7),
(7)
如此,通過調度對象函數(shù)最小值的求解,便可選出相應的執(zhí)行體,如式(8),
θ(Ep}=arg min(σ*+μ*}
(8)
判決器是通過對比各異構執(zhí)行體的不同,獲取最終的輸出,因各執(zhí)行體自身結構、安全防御能力各異,輸出結果的可靠性也不完全相同,故而,本文以可靠度系數(shù)替代每個輸出為1分的做法,將相同類的執(zhí)行體可靠度系數(shù)相加,從中擇取相加可靠度系數(shù)最大類別的輸出結果,作為最終的判決輸出結果,并據(jù)此將輸出結果相同的執(zhí)行體歸為一類,具體過程如下。
調度器選擇的執(zhí)行體集E=[E1,E2,…,Em],m為被選中的執(zhí)行體數(shù)量,執(zhí)行體可靠度系數(shù)ω的初始值ω0可依安全防御系數(shù)得出,此時,執(zhí)行體集可靠度系數(shù)初始值定義為式(9),
(9)
式中,β為折扣因子,m為目前活躍的執(zhí)行體數(shù)量。根據(jù)可靠度系數(shù)可得m個執(zhí)行體輸出結果{φ1,φ2,…,φm},對結果等同的進行分類,如式(10),
φ*={[φ1,a,φ1,b,…,φ1,c][φ2,a,φ2,b,…,φ2c]…
[φk,a,φk,b,…,φkc]}
(10)
式中a、b、c為常數(shù)弱化可靠度系數(shù)的變化幅度,k為執(zhí)行體輸出結果的分類數(shù)量。
據(jù)此,執(zhí)行體集輸出對應的可靠度系數(shù)為式(11),
ω*=f(φ*}
(11)
對相同分類的可靠度系數(shù)相加,如式(12),
(12)
式中,i為第i種分類,l為相同類的執(zhí)行體數(shù)量。
此時,在所處分類的可靠度系數(shù)相加最大時,便可得出判決其的最終輸出結果,如式(13),
φ′=arg maxF(ωi|φ}
(13)
數(shù)據(jù)層:該層配設多個OpenFlow交換機、提供各類網(wǎng)絡服務功能,重點在于增設路徑轉發(fā)的驗證機制。首先,針對數(shù)據(jù)流傳輸路徑各異,為準確區(qū)分功能服務鏈和交換機,構建多項式路徑驗證標識集合,并將其配置到Packet-In消息附帶的Cookie字段,利用其中的7個字節(jié)完成標識配置;然后,控制器利用OpenFlow協(xié)議可將生成的驗證標識配置不同交換機流表上的Cookie字段,因該Cookie是唯一、異化性,據(jù)此可得出交換機標識datapath_id和配置的數(shù)據(jù)流,進而完成路徑驗證標識的分發(fā);最后,交換機會將基于OpenFlow協(xié)議發(fā)送Packet-In信息,以將驗證標識發(fā)送給控制器,控制器收集到Datapath_id,Cookie,以及經過哈希運算的數(shù)據(jù)包字符串Hash_data后,將Hash_data相同的數(shù)據(jù)包發(fā)送給控制器的Datapath_id、Cookie并歸入相同組,通過比較,分析配置到交換機的路徑驗證標識集合與控制器收集到的是否一致,若一致則通過路徑驗證。
為實測防御架構的效果,本文選用Intel?CoreTMI7-9750H CPU 4.5GHz、16GB RAM,以Mathemtica平臺為仿真工具,使用TensorFlowTM系統(tǒng),以Python作為編程語言進行深度強化學習算法的編程實現(xiàn),并采用Open vSwich交換機、KVM虛擬化工具、Wireshark軟件作為實驗工具。且實驗選用數(shù)據(jù)中心級或企業(yè)級的SDN網(wǎng)絡,控制器需要操控超大規(guī)模的網(wǎng)絡數(shù)據(jù)流量,其面臨的安全威脅更多、動態(tài)隨機性較高。但是,安全防御性能的測試無法通過簡單的概率事件表征,故而,本文選用廣域網(wǎng)攻擊數(shù)據(jù)集樣本,其涉及的網(wǎng)絡攻擊多樣包含遠程注入、黑客入侵、僵尸網(wǎng)絡等。數(shù)據(jù)內容涵蓋地址信息、協(xié)議、工具、信息等多種攻擊類型,概率分布繁雜,實驗僅以其中高級持續(xù)攻擊的攻擊數(shù)據(jù)為準,測試控制層在接收應用層下發(fā)的服務路徑配置信息后,可否通過調度的動態(tài)選擇算法擇取最優(yōu)的執(zhí)行體集,并基于執(zhí)行體可靠度系數(shù)的相加,輸出最終的判決結果配置到OpenFlow交換機上,以此測定該擬態(tài)防御框架下有無攻擊下是否可成功進行路徑配置。
路徑配置成功與否的測試指標選用失效概率,分設無攻擊、篡改1個和2個執(zhí)行體等測試條件,在有、無擬態(tài)防御架構下來判定隨著攻擊的增多,擬態(tài)防御性能變化的穩(wěn)定性。而因為擬態(tài)防御是動態(tài)冗余架構布設于控制層,失效概率與控制器狀態(tài)密切相關,而控制器狀態(tài),也即安全防御性與有效流表的比例相關,故而,其計算式為式(14),
(14)

通過實驗分析,可得不同攻擊狀態(tài)下,擬態(tài)防御架構的失效概率如圖3所示。

圖3 用于路徑配置的擬態(tài)防御架構失效概率
顯然,在無擬態(tài)防御架構下,控制器在無攻擊狀態(tài)下,失效概率為0,但是隨著對執(zhí)行體篡改數(shù)量的增加,失效概率逐漸增加,并在60個時間單位時,失效概率近似100%;而在有擬態(tài)防御架構下,控制器在有無篡改狀態(tài)下,失效概率變化不大,尤其在90個時間單位后,其安全防御性能表現(xiàn)更優(yōu)。這是因為隨著攻擊的不斷進行,擬態(tài)防御累積了更多的攻擊信息,且動態(tài)異構冗余的擬態(tài)防御架構,本就讓不同執(zhí)行體的結構、后門、漏洞各異,且其動態(tài)調動算法可擇優(yōu)選取異構執(zhí)行體,以提升控制層的動態(tài)、隨機性,如此,便會增加成功攻擊的難度,極大的優(yōu)化了安全防御功能。
海量、大規(guī)模網(wǎng)絡數(shù)據(jù)流量的交互、共享下,面臨的安全問題更為多元,而路徑配置中信息生成、下發(fā)傳輸?shù)恼_性,是確保網(wǎng)絡服務安全、穩(wěn)定的核心。故而,上述研究著眼于此,針對SDN控制與轉發(fā)分離下,以及控制層單一控制器,容易遭受數(shù)據(jù)泄密、篡改、惡意應用等攻擊和威脅性,以多結構異化的控制器冗余體來建構內生安全機制;并利用OpenFlow協(xié)議生成的驗證標識,對轉發(fā)路徑進行“二重”驗證,以此給予路徑配置“雙重保險”,確保網(wǎng)絡服務中實際轉發(fā)路徑與路徑配置要求一致,以最大限度提升安全防御性能。