唐 寅,何 嘉
(成都信息工程大學 計算機學院,四川 成都 610225)
隨著電子商務、社交網絡、即時通訊等海量新型互聯網應用的出現,目前以TCP/IP協議為核心的互聯網體系架構已很難滿足快速增長的業務需求,亟需突破傳統的固化封閉式網絡體系架構。基于軟件定義網絡[1](software defined networking,SDN)和網絡功能虛擬化[2](network function virtualization,NFV)等技術,如何合理、高效部署滿足用戶多樣化需求的服務功能鏈(service function chain,SFC)已成為學術界和產業界關注的熱點問題之一[3-10]。
在已有研究中,文獻[7]將功能部署和流量路由問題建模為混合的整數線性規劃問題,降低網絡時延并實現負載均衡。文獻[8]基于強化學習技術實現智能化的服務鏈資源調度與部署。文獻[9]面向運營商網絡中的資源碎片構建服務鏈優化策略,有效提高資源利用效率。但已有研究大多沒有考慮同時到達的多條服務鏈的部署順序,或是忽略了物理節點可提供的功能類型。本文基于SDN和NFV技術,開展基于軟件定義的安全服務部署研究,提出了一種安全功能服務鏈部署方案。通過預處理同時到達的多個需求序列,優先部署資源需求較大的服務鏈,避免出現資源瓶頸,有效提升部署成功率;綜合考慮多維度的資源需求和功能需求,降低網絡成本,保障服務質量。
SDN的基本思想是將網絡控制與數據轉發相互分離,解耦網絡控制功能和數據轉發功能。采用編程模式實現集中化的管理控制功能,簡化了網絡管理的復雜性并促進網絡的發展和創新。典型SDN采用三層邏輯架構,最上層為應用層,處理用戶各種不同的業務應用;最底層的基礎設施層負責基于流表的數據處理、轉發和狀態收集,中間的控制層為SDN的核心,主要負責對基礎設施層各類資源的編排和管控。
SDN的核心思想主要包括:①將控制平面與數據轉發平面分離;②通過集中控制器,實現網絡策略、安全策略的集中管理和運維狀態的全局性實時監控;③標準化南、北向接口,實現網絡資源軟件化定義。通過SDN技術理念,能夠實現網絡管理、應用部署自動化,安全管控集中化,同時提高網絡傳輸性能。
SDN的上述特點實現了網絡能力虛擬化、服務化,網絡不再僅僅是基礎設施,更是一種服務。在 SDN 框架理念中,通過將控制層和轉發層分離,解決了網絡節點繁多并且節點需要處理的數據量大的瓶頸,以及虛擬化節點增多并且存在無法實現租戶隔離或者租戶應用不在同一區域時的應用隔離的問題。基于SDN的集群網絡體系,可以在網絡搭建環境中靈活使用集群技術,當新的申請不能在本集群中滿足時,可以申請其它設備中的虛擬資源,并且將原集群擴展到新的集群。通過將安全資源池化,形成安全資源中心,基于SDN方法可動態分配虛擬防火墻、WAF、IPS、VLB等虛擬化安全設備資源,形成安全服務鏈,為用戶按需分配不同的安全服務。
NFV技術是由歐洲電信標準化協會(European telecommunications standards institute,ETSI)為突破傳統電信網絡架構局限性而提出的。NFV技術旨在通過將傳統專業網元設備上的網絡功能提取出來,并以虛擬化、軟件化的形式運行在通用的硬件平臺上,使網絡資源同計算資源和存儲資源一樣進行池化和虛擬化,提供虛擬主機的可隔離、移動性、擴展性與硬件設備解耦合等優勢,接受統一調度,實現軟件化網絡功能的靈活加載、按需部署和更新,方便遠程管理和維護。
典型NFV體系結構如圖1所示。NFV基礎設施將通用服務器提供的計算、存儲和網絡資源進行虛擬化,形成不同類型的資源池。虛擬網絡在虛擬化資源池的基礎上實現各種網絡功能。NFV管理和編排則在縱向上負責對上述兩個部分進行配置和系統集成。

圖1 NFV典型架構
SDN和NFV架構的出現為安全體系提供了新的發展思路,并在文獻中提出了軟件定義安全(software defined security,SDS)概念。即,軟件定義安全是通過將安全數據平面與控制平面分離,在底層將物理安全設備抽象為安全資源池,支持頂層以編程的方式進行統一、按需、靈活的安全服務編排與管理,以實現更加靈活、動態的安全防護機制。
借助SDN技術的流量調度優勢和NFV技術的動態管理優勢可簡化安全服務功能的部署難度。通過利用SDN技術的拓撲感知和流量控制能力,有利于制定更加智能的部署策略并進行更快速、便捷的流量調度。基于NFV技術可以實現安全硬件的虛擬化,構建包含多種安全功能的安全資源池,并支持安全功能的靈活管理和動態部署。
基于SDN和NFV技術,可以通過安全服務鏈的方式為虛擬網絡提供定制化的安全服務,把匹配的網絡流量導向安全服務鏈,進行安全控制和審計,這種方式使得安全防護服務部署更加靈活可控,便于操作。
圖2給出一種基于軟件定義安全架構的虛擬網絡安全防護系統實現方法,系統主要由以下幾部分組成:虛擬計算資源池、虛擬安全資源池、虛擬機監控管理器(Hype-rvisor)、支持虛擬接口的交換機、傳統安全設備群、SDN控制器和安全控制中心平臺。

圖2 基于軟件定義的虛擬網絡安全防護系統架構
基于軟件定義的虛擬網絡安全防護系統通過將安全資源池化,形成安全資源中心,支持動態分配虛擬防火墻、WAF、IPS、VLB等虛擬化安全設備資源,形成安全服務鏈,為用戶按需分配不同的安全服務。系統同時支持內嵌式虛擬安全資源池和外掛傳統安全設備資源群,通過統一的安全控制中心平臺定義規劃安全服務鏈,實現安全資源與物理環境松耦合,支持安全資源中心動態擴容的同時業務不受影響。
安全控制中心平臺根據用戶需求,從虛擬安全資源池或外接安全設備群中獲取安全資源,定制所需安全服務鏈,隨后向SDN控制器下發流量牽引指令,將源虛擬機的流量重定向到該安全服務鏈,數據流經過vFW、vIDS等安全設備或虛擬安全設備組成的安全服務鏈的檢測和防護后,再將流量送回目的虛擬機,確保了對虛擬化網絡流量的有效監控和管理。以vIDS為例,具體工作過程如下:
(1)識別被牽引的數據流所屬網絡設備;
(2)判斷系統設備類型,如果是非虛擬化設備則轉步驟(3),否則轉步驟(4);
(3)直接從物理網卡上捕獲數據包;
(4)否則,讀取虛擬網絡配置信息,從虛擬網卡上捕獲數據包;
(6)對數據包進行預處理,將處理后的數據包提交給入侵檢測引擎;
(7)入侵檢測引擎根據數據包的域標志,選擇相應的入侵檢測規則;
(8)根據相應的入侵檢測規則,對網絡數據包進行解包,提取數據包的特征;
(9)入侵檢測引擎從入侵檢測規則庫中,獲取入侵行為特征;
(10)進行特征匹配,如果發現入侵特征,則根據安全策略采取相應的入侵響應。
類似地,數據流被引接至按需定制的安全服務鏈后,在其它(虛擬)安全設備進行檢測與防護的機制與傳統安全設備工作機制基本相同,只是需要建立與虛擬機管理器、vSwitch、SDN控制器等的規范消息格式,從而能夠及時檢測發現和阻止安全威脅,并通知安全策略調整,維護整個虛擬網絡環境的安全。
在軟件定義安全架構中,通過控制轉發分離的特性,網絡控制變得更加靈活并更具有擴展性。通過對底層物理網絡進行虛擬化和邏輯抽象,由SDN控制器引導轉發流量自動通過虛擬服務節點,可實現靈活、便捷、高效的服務功能,這種流量按序通過虛擬服務功能節點組成的序列稱為服務鏈,如圖3所示。

圖3 服務鏈
面向用戶的安全服務需求和由上層編排、下發的安全服務鏈,需要選擇一條滿足安全服務能力、安全功能順序、資源需求的最優路徑,該問題即基于服務鏈的安全功能部署問題(或稱為映射問題),如圖4所示。其中,圖4(a)為一條安全服務鏈請求,按其功能請求順序可表示為(FW,NAT,IPS)。存在多種部署方式可滿足安全服務鏈的功能需求,如圖4(b)和圖4(c)。但從圖中可知,圖4(c)中的第二種部署方式明顯優于圖4(b)中的第一種部署方式。因此,需要開展安全功能服務鏈部署問題的研究,即依據安全服務需求序列選擇相應的安全功能組件并進行路由,在最大限度滿足功能需求、資源需求的前提下降低網絡成本,保障服務質量。

圖4 兩種安全服務功能鏈部署方式
底層網絡拓撲可以用一個加權圖表示GS=(VS,ES), 其中VS是由交換節點、安全功能節點構成的物理節點集合,VS=TS∪NS。TS表示由M個路由節點構成的交換節點集合,NS為防火墻等安全功能節點集合,共包含N個安全功能節點。NS支持實現φ種安全功能,即安全功能集合Ω={ω1,ω2,…,ωφ}={NAT,FW,IDS,IPS,…}。 ?ni∈NS的計算資源能力和存儲能力分別表示為Ci和Si,物理節點ni的安全功能能力Fi?Ω。ES是物理網絡中鏈路集合, ?es∈ES存在屬性帶寬能力,包含鏈路es的上行帶寬容量B(es↑) 和下行帶寬容量B(es↓)。es=(vi,vj),vi和vj為鏈路es的起點和終點。 ?vi,vj∈VS, 如果i 圖5 底層網絡拓撲示例 定義同時到達的R條服務鏈請求Φ={Q1,Q2,…,QR}, 其中服務鏈請求Qr(?Qr∈Φ) 可表示為有向序列Qr=(qr,0,qr,1,qr,2,…,qr,h-1,qr,h,qr,h+1,…,qr,H,qr,H+1), 共包含H個安全功能需求。其中,qr,0和qr,H+1分別表示服務鏈Qr的入口節點和出口節點,qr,h-1是qr,h的前一個安全功能需求,qr,h+1是qr,h的后一個安全功能需求。從qr,h到qr,h+1的需求鏈路表示為link(qr,h,qr,h+1), 對應帶寬表示為bw(qr,h,qr,h+1)。 定義三元組 (fr,h,cr,h,zr,h) 表示 (qr,h所需的安全功能需求和資源需求,即fr,h為qr,h所需的安全功能需求,cr,h和zr,h分別為qr,h的計算資源需求和內存需求。如圖6所示,服務鏈請求集合Φ={Q1,Q2,Q3}, 其中Q1的入口節點和出口節點分別為v1和v8,Q1共包含3個安全功能需求,依次為f1、f4和f2,f1是f4的前一個安全功能需求,f2是f4的后一個安全功能需求。Q1中f1功能需求需滿足的計算資源需求和存儲資源需求分別為3和1。從f1功能到f4功能的鏈路link(f1,f4) 對應的帶寬需求bw(f1,f4)=4 Mbps, 從f4功能到f2功能的鏈路link(f4,f2) 對應的帶寬需求bw(f4,f2)=3 Mbps。 在服務鏈部署過程中,既要滿足安全功能的按序排列,也要滿足安全功能之間的帶寬需求。 圖6 服務鏈請求示例 (1) (2) 如果安全服務鏈請求Qr可成功部署于物理網絡之上,則定義變量Zr=1,否則Zr=0。因此R條服務鏈請求Φ的部署問題可形式化為 (3) s.t. (4) (5) fr,h∈Fi, ?vi∈NS,?r∈[1,R],?h∈[1,H] (6) (7) (8) (9) 其中,式(4)和式(5)分別保障了選擇的物理節點能夠滿足安全服務需求的計算資源需求和存儲資源需求,式(6)表示選擇的物理節點能夠提供服務鏈的安全功能需求。由于服務鏈中的每個安全功能需求能且僅能部署在一個物理安全節點上,因此定義式(7)以保障每個安全功能需求能且僅能部署在一個物理安全節點。式(8)表示選擇的路由鏈路能夠滿足服務鏈的帶寬需求。如式(9)所示,服務鏈部署于物理網絡后,除接入流量和接出流量外,物理網絡中所有節點應滿足流量守恒。 為了降低部署安全服務鏈所產生的網絡成本,本文在滿足服務鏈帶寬需求、成功部署安全功能的前提下,將網絡成本最小化作為服務鏈生成時的優化目標,提出一種啟發式算法PMC(security service function chain placement with minimum cost)。面向同時到達的多個服務鏈請求,綜合考慮各個服務鏈請求的計算資源需求、存儲資源需求和網絡資源需求,優先部署資源需求較大的服務鏈,避免物理節點的資源能力成為服務鏈部署的瓶頸,滿足更多的服務鏈部署請求。 由于同時到達的服務鏈需求存在差異,定義W={w1,w2,…,wR} 表示所有R條服務鏈請求的綜合需求,其中wr∈W為服務鏈請求Qr的綜合需求。則wr可表示為 (10) (11) (12) (13) 根據服務鏈綜合需求大小對服務鏈請求降序排列,更新Φ為排序后的服務鏈請求序列,依次部署服務鏈。 本文提出一種啟發式算法,實現對多樣化安全功能服務鏈的協同部署。PMC算法的具體流程如下。 PMC算法:NFC Placement with Minimum Cost 輸入:底層網絡拓撲及相關屬性、服務鏈請求序列Φ 輸出:部署結果PATH,服務功能節點放置結果。 服務鏈請求序列到達; (1) 根據式(10)計算綜合需求W (2) 對W降序排列,依據排序結果更新Φ (3) for eachQrin Φ do (4) ifQr中存在特權節點then 優先部署該節點, update PATH (5) end if (6) 根據帶寬需求大小降序排列Qr中的所有鏈路請求, (7) for eachlink(qr,h,qr,h+1) inQr (8) ifxr,h=False andxr,h+1=False, then //兩個端點均未部署 1、縣域發展不平衡,且差距較大。受區位條件、發展基礎等因素的影響,廣西縣域之間主要經濟指標差距較大。如:2016年,縣域經濟總量最大的桂平市,GDP為322.72億元,比排位居后的 10個縣(市、區)GDP總和(288.69億元)還多,是排最后1位的鳳山縣(21.24億元)的15.2倍;從財政收入來看,2016年北流市財政收入躍居全區縣(市)第一位(24.86億元),相當于排位居后12個縣(市、區)財政收入總和。 y(qr,h,qr,h+1)←1//標記為待定狀態 (9) elseifxr,h=True andxr,h+1=True, then 選擇滿足鏈路帶寬需求且hop數最小的路徑路由, update PATH; (10) else //以qr,h尚未部署,qr,h+1已部署為例 (11) ifxr,h-1=True, then 選擇滿足qr,h功能需求、 物理資源需求, 滿足link(qr,h,qr,h+1)和link(qr,h-1,qr,h)兩段鏈路帶寬需求且兩段鏈路網絡成本之和最小的物理節點部署qr,h (12) else 選擇滿足qr,h功能需求、 物理資源需求、link(qr,h,qr,h+1)帶寬需求且與qr,h+1之間hop數最小的節點集合 (14) if size(Candi(qr,h))==1, then 選擇Candi(qr,h)中的唯一節點, 部署qr,h, update PATH;; (15) else 考慮qr,h的相鄰未部署請求qr,h-1, 為qr,h選擇部署節點, update PATH (16) end if (17) end if (18) ify(qr,h-1,qr,h)==1 then 返回步驟(8)優先部署link(qr,h-1,qr,h) (19) end if (20) end for 對于同時到達的服務鏈請求序列,根據式(10)對每條服務鏈綜合需求進行計算,并根據需求大小決定服務鏈處理順序,優先映射需求較大的服務鏈,以滿足更多的服務鏈需求,如步驟(1)~步驟(2)。 對于任意一條服務鏈,入口節點和出口節點已確定,即qr,0和qr,H+1已確定。在服務鏈部署過程中,遍歷服務鏈中所有安全功能需求,優先部署只存在唯一部署方案的服務鏈功能請求,如步驟(4)~步驟(5)。如圖6中對于服務鏈Q2中的安全功能需求q2,2=f5, 在圖5所示的物理拓撲中只存在節點v15可提供該功能,即該功能需求能且僅能部署在節點v15上,則將功能需求q2,2部署在節點v15上(即N(q2,2)=v15)。 對于每條服務鏈,對通信鏈路按照帶寬需求排序,并依據此順序依次部署鏈路。如果鏈路link(qr,h,qr,h+1) 的兩端的功能需求qr,h和qr,h+1均未部署,則標記鏈路link(qr,h,qr,h+1) 為待定狀態,即y(qr,h,qr,h+1), 并部署下一條流量;如果鏈路link(qr,h,qr,h+1) 的一個端點已經成功部署,則對鏈路link(qr,h,qr,h+1) 進行部署。 如果鏈路link(qr,h,qr,h+1) 的兩個端點均已部署,選擇滿足鏈路帶寬需求且hop數最小的路徑路由,即步驟(9);如果鏈路link(qr,h,qr,h+1) 的一個端點已經成功部署,則選擇鏈路link(qr,h,qr,h+1) 中尚未部署的另一個端點(以qr,h為例,則qr,h+1表示已成功部署的端點)。如果端點qr,h的前一個和后一個安全功能均已部署,則根據端點qr,h的前一個安全功能需求qr,h-1和后一個安全功能需求qr,h+1, 在Gs可提供qr,h功能且滿足計算資源和存儲資源的候選節點中,選擇滿足link(qr,h,qr,h+1) 和link(qr,h-1,qr,h) 兩段鏈路帶寬需求且兩段鏈路網絡成本最小的安全功能物理節點作為qr,h的部署節點,即步驟(11);如果qr,h的前一個或后一個安全功能未部署,則采用K最短路徑算法在可提供qr,h功能且滿足計算資源和存儲資源的所有候選物理節點中選擇滿足link(qr,h,qr,h+1) 帶寬需求的節點和鏈路進行分配(步驟(13));如果存在多個候選節點,則綜合考慮qr,h的前一個或后一個尚未部署的安全功能需求,盡量將兩個連續的安全功能需求部署在同一個物理節點上(步驟(15)),并判斷Qr中經過功能qr,h的另一條鏈路link(qr,h-1,qr,h) 是否處于待定狀態。如果鏈路link(qr,h-1,qr,h) 處于待定狀態,則使用相同的方法對鏈路link(qr,h-1,qr,h) 及其端點進行部署,并繼續判斷經過功能qr,h-1的未分配鏈路是否處于待定狀態,即步驟(18))。如果鏈路link(qr,h-1,qr,h) 不是待定狀態,則根據帶寬需求排序得到的順序部署下一條鏈路,直至服務鏈Qr中的所有功能需求和鏈路需求均部署完成。如果在部署過程中,Gs無法提供服務鏈需要的安全功能或無法滿足服務鏈的資源需求,則該服務鏈部署失敗。 本文基于圖6所示的小規模物理網絡拓撲,分別采用PMC算法和FF算法(優先適應算法,First-Fit)模擬同時到達5條服務鏈請求時服務鏈部署實施的結果。FF算法的核心思想是在滿足安全功能需求、物理資源需求、網絡資源需求的節點和鏈路中選擇與遷移需求節點距離最短的第一個物理節點并部署服務鏈。兩種算法部署的模擬實驗結果見表1。 表1 部署效果對比 從表1可看出,采用PMC算法的5條服務鏈均能成功部署,而采用FF算法只成功部署了4條服務鏈,1條服務鏈部署失敗。這是因為PMC算法通過對服務鏈綜合需求進行評估,優先部署資源需求較大的服務鏈,有效避免了資源瓶頸導致的部署失敗。此外,在PMC算法中,由于服務鏈安全功能需求qr,h是在Gs可提供qr,h功能且滿足計算資源和存儲資源的候選節點中,選擇滿足link(qr,h,qr,h+1) 和link(qr,h-1,qr,h) 兩段鏈路帶寬需求且兩段鏈路網絡成本最小的安全功能物理節點作為qr,h的部署節點,并且當存在多個候選節點時,綜合考慮qr,h的前一個或后一個安全功能需求,盡量將兩個連續的安全功能需求部署在同一個物理節點上,因而可有效節約部署成本。 SDN技術和NFV技術的興起為傳統安全模式提供了新的發展思路。本文首先簡要介紹了SDN和NFV的典型架構模式,并提出基于軟件定義理念的安全服務部署問題。通過提出一種啟發式算法,優化安全服務部署成功率,有效降低網絡成本,保障服務質量。未來將面向動態化的安全服務需求,展開安全功能服務鏈遷移與重配置技術研究。






3 一種啟發式服務鏈部署算法
3.1 服務鏈綜合需求定義

3.2 PMC算法
4 算 例

5 結束語