◆牛長喜 劉 堅 張 玲 馬曉旭
(中國電子科技網(wǎng)絡信息安全有限公司 四川 610000)
軟件定義網(wǎng)絡(SDN, Software Defined Network)技術是目前新興的一種網(wǎng)絡技術。該技術為網(wǎng)絡和使用網(wǎng)絡的應用之間提供了靈活有效的信息交互接口,使網(wǎng)絡具備“集中控制、開放性、網(wǎng)絡可編程、網(wǎng)絡功能虛擬化”等技術特征,從而賦予網(wǎng)絡較強的動態(tài)捷變能力。
目前,SDN技術主要應用于多租戶云計算數(shù)據(jù)中心內(nèi)部網(wǎng)絡的構建上,基于SDN技術架構所建設的網(wǎng)絡稱為SDN網(wǎng)絡。由于不同租戶共享云計算基礎設施資源,出于安全方面的考慮,要求云計算數(shù)據(jù)中心內(nèi)部網(wǎng)絡必須保證不同租戶之間的嚴格隔離性,不允許不同租戶之間發(fā)生未被準許的網(wǎng)絡流量傳輸行為。由于SDN技術具備“集中控制、網(wǎng)絡可編程”等特征,使得SDN網(wǎng)絡對在其上傳輸?shù)臄?shù)據(jù)流具有極強的管控能力,可以較方便地實現(xiàn)多租戶云計算數(shù)據(jù)中心內(nèi)部網(wǎng)絡中不同子網(wǎng)之間的安全隔離,從而滿足不同租戶對網(wǎng)絡安全防護能力的不同需求。
但是,由于網(wǎng)絡配置錯誤等原因,多租戶子網(wǎng)之間的隔離性有可能被破壞。本文提出一種 SDN網(wǎng)絡隔離性檢測技術,用于檢測SDN網(wǎng)絡的不同子網(wǎng)之間是否具備所要求的隔離性。
由于在 SDN網(wǎng)絡中進行網(wǎng)絡隔離的基本技術原理是“配置流表阻斷數(shù)據(jù)流”,因此,要判斷SDN網(wǎng)絡中的子網(wǎng)之間是否實現(xiàn)了隔離,需要獲取網(wǎng)絡中各個 SDN交換機內(nèi)所配置的流表信息,進而分析當前網(wǎng)絡中所配置的流表能否在需要被隔離的子網(wǎng)之間達到阻止指定數(shù)據(jù)流傳輸?shù)哪繕恕?/p>
由于在 SDN網(wǎng)絡中,應用層軟件會不斷地發(fā)出變更網(wǎng)絡交換機內(nèi)流表項的控制指令,并且交換機中的一些流表項也會隨著時間的流逝自動失效,因此 SDN交換機內(nèi)配置的流表項通常會隨著時間變化。為了準確判斷子網(wǎng)之間是否實現(xiàn)了隔離,必須在網(wǎng)絡狀態(tài)不變(即網(wǎng)絡中的流表保持固定的時間段內(nèi))的情況下進行判斷。
為了判斷SDN網(wǎng)絡中的兩個子網(wǎng)之間是否實現(xiàn)了安全隔離,必須獲取以下信息:
(1)SDN網(wǎng)絡全網(wǎng)網(wǎng)絡拓撲:包括SDN網(wǎng)絡中各個SDN交換機之間的互聯(lián)關系,每個 SDN交換機的端口編號,此信息可以通過網(wǎng)管獲得。
(2)全網(wǎng)所有SDN交換機內(nèi)當前已經(jīng)配置的所有流表項:此信息可以通過網(wǎng)管提供只讀接口獲取或者網(wǎng)管直接提供流表項記錄文件。
(3)SDN控制器內(nèi)部路由計算模塊的路由策略數(shù)據(jù):包括SDN控制器已計算得到的網(wǎng)絡路由,此信息可以通過網(wǎng)管提供只讀接口獲取或者網(wǎng)管直接提供控制器路由計算記錄文件。
(4)需要隔離的多個子網(wǎng)的具體位置和范圍:一個子網(wǎng)的范圍指的是組成子網(wǎng)的所有 SDN交換機,其具體位置指的是這些SDN交換機的DPID(Data Path IDentification, 數(shù)據(jù)通路標識),此信息可以通過網(wǎng)管獲得。
(5)不允許在隔離子網(wǎng)間傳輸?shù)臄?shù)據(jù)流的特征:數(shù)據(jù)流的特征指的是不允許在子網(wǎng)之間傳輸?shù)臄?shù)據(jù)流的5元組信息,此信息可以通過網(wǎng)管獲得。
本節(jié)以兩個子網(wǎng)之間的隔離性檢測為例,提出核心算法。兩個子網(wǎng)中的一個定為源子網(wǎng),另一個定為目的子網(wǎng)。要在 SDN網(wǎng)絡中判斷從源子網(wǎng)產(chǎn)生的指定特征的網(wǎng)絡數(shù)據(jù)流能否到達目的子網(wǎng),即在源子網(wǎng)與目的子網(wǎng)之間是否針對特定數(shù)據(jù)流達到了隔離效果,采用如下步驟:
(1)將SDN網(wǎng)絡整體進行抽象,抽象成一個只包含頂點和邊的有向圖 G(V,E)。在該有向圖中,頂點表示網(wǎng)絡中的 SDN交換機,邊表示網(wǎng)絡中交換機之間的鏈路。進一步地,在該有向圖中需要根據(jù)源子網(wǎng)(發(fā)送數(shù)據(jù)流的子網(wǎng))和目的子網(wǎng)的范圍,將其分別抽象為兩個單獨的頂點。
(2)在有向圖 G(V,E)中,將每條邊的權重初始化設置為一個數(shù)值較大的正數(shù)K(本文選擇K=1000)。
(3)在有向圖 G(V,E)中,在一條指定的邊上,判斷該有向邊能否使指定特征的網(wǎng)絡數(shù)據(jù)流通過。判斷方法:獲取組成該邊的節(jié)點所分別對應的兩個 SDN交換機上的流表信息,結合獲取到的 SDN控制器中的路由策略數(shù)據(jù),判斷指定的數(shù)據(jù)流是否能夠從源節(jié)點沿著該有向邊傳輸?shù)侥康墓?jié)點。如果能夠傳輸指定的數(shù)據(jù)流,則改變該邊的權重,將其設置為一個很小的正數(shù)n(本文選擇n=1)。
(4)重復步驟3,對有向圖G(V,E)中的每條邊都進行一次判定。最終確定該有向圖G(V,E)中所有邊在傳輸指定特征的數(shù)據(jù)時的權重。
(5)利用最小路徑開銷算法(如Dijkstra算法),計算一條從源子網(wǎng)到目的子網(wǎng)開銷最小的路徑,并獲取路徑開銷值(即組成該路徑的所有邊的權重相加結果)。
(6)基于路徑開銷值進行判斷,如果開銷值小于單條邊上所設置的正數(shù)K(本文選擇K=1000),則說明計算出的路徑能夠?qū)⒅付ǖ臄?shù)據(jù)流從源子網(wǎng)傳輸?shù)侥康淖泳W(wǎng),表示指定的數(shù)據(jù)流能夠在源子網(wǎng)與目的子網(wǎng)之間流通,意味著兩個子網(wǎng)對于該特征的數(shù)據(jù)隔離無效;相反,如果計算所得的路徑開銷值大于單條邊上所設置的正數(shù)K,則表示計算出的路徑中至少存在有一條邊不能傳輸指定的數(shù)據(jù)流,說明該路徑不能將指定的數(shù)據(jù)流從源子網(wǎng)傳輸?shù)侥康淖泳W(wǎng)。由于此路徑是通過最小路徑開銷算法計算得到的,它已經(jīng)是開銷最小的路徑,網(wǎng)絡中其它所有路徑的開銷必然大于K,因此其它路徑也無法傳輸指定的網(wǎng)絡數(shù)據(jù)流。因此,對于該特征的數(shù)據(jù),兩個子網(wǎng)之間的隔離性有效。
(7)針對不允許在源子網(wǎng)與目的子網(wǎng)之間傳輸?shù)拿恳环N特征的數(shù)據(jù)流,重復步驟3~6,分析每一種特征的數(shù)據(jù)流是否能夠從源子網(wǎng)傳輸?shù)侥康淖泳W(wǎng)。如果對于所考察的每一種特征的數(shù)據(jù)流,計算表明網(wǎng)絡中都不存在能夠傳輸此數(shù)據(jù)流的路徑,則表明源子網(wǎng)與目的子網(wǎng)之間的網(wǎng)絡隔離性能夠通過檢測,滿足要求。
本文基于SDN技術“集中控制”的特點,提出一種SDN網(wǎng)絡隔離性檢測技術,能夠檢測云計算環(huán)境中不同租戶之間的網(wǎng)絡是否具備所要求的隔離性,設計了網(wǎng)絡隔離性檢測算法。初步實驗表明,所設計的算法能夠完成既定目標。
[1]NUNES B A A, MENDONCA M, XUAN-NAM N, et al. A survey of software-defined networking: past, present, and future of programmable networks[J].Communications Surveys and Tutorials, IEEE, 2014.
[2]MCKEOWN N, ANDERSON T, BALAKRISHNAN H,et al. OpenFlow: enabling innovation in campus networks[J].ACM SIGCOMM Computer Communication Review, 2008.
[3]FOSTER N, HARRISON R, FREEDMAN M J, et al.Frenetic: a network programming language[J].ACM SIGPLAN Notices, 2011.