袁 泉 游 偉 季新生 湯紅波
(解放軍戰略支援部隊信息工程大學 鄭州 450002)
網絡功能虛擬化(Network Function Virtualization, NFV)實現了傳統網絡功能與專用硬件的解耦,從專用網絡設備中抽象出軟件化的虛擬網絡功能(Virtualized Network Function, VNF),推動了網絡服務部署模式的根本性轉變–由僵化的“網元”部署模式轉向相對靈活的切片部署模式[1]。在基于網絡切片的部署模式中,服務提供商通過創建一組有序的VNF集合為租戶提供定制化的網絡服務,并通過NFV管理和編排模塊(Management And Orchestration Module, MANO)動態調整VNF集合占用的資源容量,實現物理資源(計算、內存和磁盤資源等)的動態按需分配[2]。以物理資源“按需分配”為目標,文獻[3]提出了VNF資源容量調整的概念,并設計了基于VNF重映射的解決方案。文獻[4]總結了現有的VNF資源容量調整方法,并將其分為以下兩種類型[4]:(1)基于流量預測的調整方法[5–10],通過預測VNF集合輸入流量的變化趨勢,預判其中VNF實例數量的變化,提前部署或移除相應的VNF實例實現資源容量調整。(2)基于在線優化理論的調整方法[11–14],在流量不可預測的場景中,利用在線優化模型(如Ski-rental模型)求解局部最優的容量調整策略。本文主要針對基于流量預測的VNF資源容量調整方法進行研究。
文獻[5]分析并提取了運營商云數據中心網絡的流量特征,設計了一種基于深度神經網絡的流量預測算法,并結合預測數據提出了一種基于整數規劃的VNF資源容量調整方法。文獻[6]提出了一種面向5G核心網上行鏈路場景的流量預測方法,該方法通過分析流入無線接入和移動性管理功能(Access and Mobility management Function, AMF)上行鏈路的流量數據提取樣本集,然后設計和訓練循環神經網絡實現流量預測。文獻[7]提出了一種輕量級的流量預測方法,引入K均值和蒙特卡羅方法加快循環神經網絡的訓練過程,提高訓練效率,降低預測方法的時間復雜度。文獻[8]針對流量預測準確度較低的場景提出了一種預測誤差補償方法,該方法利用在線學習算法最小化流量預測誤差對VNF資源容量調整策略的影響,降低了由預測誤差帶來的容量調整開銷。文獻[9]提出了一種基于排隊模型的VNF資源調整方法,利用長短期記憶網絡(Long Short Term Memory, LSTM)預測流量變化趨勢,并設計了一種基于最大最小蟻群算法的VNF動態部署方法,實現計算資源利用率最大化。文獻[10]提出了VNF資源容量調整過程中VNF性能和資源占用之間的均衡問題,并設計了基于排隊模型的啟發式算法搜索最優解,在保證VNF性能的基礎上最小化VNF集合占用的物理資源。綜合分析上述基于流量預測的VNF資源容量調整方法,其中電信網和云數據中心場景下的流量預測算法已經有了相對完備的研究成果,但是相應的VNF部署方法仍存在兩方面缺陷:(1)無法根據流量預測結果準確預測VNF的資源需求。現有模型主要基于相關函數法[5–7,11]建立流量預測結果與VNF資源需求之間的映射關系,但是由于許多類型的資源利用存在長相關、重尾、非線性和多尺度等特征,上述方法難以根據流量預測結果準確預測VNF的資源需求。(2)在容量調整的過程中未考慮如何減少VNF實例占用的服務器數量。現有研究主要針對大規模電信云數據中心場景下的VNF容量調整問題,其系統模型中采用cross rack pipelined SFC模式[5]部署服務功能鏈,即在某一機框中僅部署單一類型的VNF實例,不同VNF之間通過機框外部的物理鏈路相互串聯,組成服務功能鏈為租戶提供服務。cross rack pipelined SFC模式的優點在于可以為VNF的擴容提供充足物理資源,且便于VNFM統一管理編排各個類型的VNF。但是對于中小規模的數據中心,由于服務器數量較少,數據中心資源規劃相對緊張,云平臺無法為各個類型的VNF分配獨立的機框資源,服務提供商通常選擇SFC run-to-complete in a rack模式部署SFC,即在同一機架內完成一條SFC的部署。由于該模式下的服務器資源相對短缺,需要研究如何在SFC run-tocomplete in a rack模式中協同部署不同規格的VNFC實例,減少SFC占用的服務器數量,提高云平臺的資源可用性。
針對已有研究存在的問題,本文提出一種VNF資源容量自適應調整方法,并采用trace-dirven方法[15]進行了仿真實驗。該方法將真實云環境中獲取的一系列觀測數據輸入仿真程序,保證了實驗結果的有效性。首先,我們從實驗云數據中心的接入網關中獲取輸入流量數據,并利用LSTM網絡預測其變化趨勢。然后在OpenStack日志文件中統計相應時段各規格VNF實例的歷史部署數據,結合流量預測結果設計多層前饋神經網絡預測租戶的VNF資源需求。該方法綜合考慮了流量變化、資源需求變化和業務類型等因素對資源預測準確度的影響,能夠降低VNF資源需求預測的相對誤差。最后基于VNF資源需求預測數據,建立改進的二次分配模型描述VNF動態部署問題,并設計了一種動態編碼遺傳算法求解該NP難問題。該算法能夠根據資源需求的變化自適應地調整VNF的部署策略,減少VNF實例部署占用的服務器數量,提高物理資源的可用性。
服務功能鏈是一組有序的VNF集合,在NFV平臺上,服務提供商利用服務功能鏈技術向租戶提供端到端定制化服務。如圖1所示,服務功能鏈的基本組件包含分類器、轉發器和VNF集合3部分。其中,分類器主要負責業務流量的接入控制和路由策略管理,轉發器負責流量解析、封裝和轉發,VNF集合負責業務流量處理[16]。租戶請求的業務流量通過分類器進入服務功能鏈,根據分類器中的路由策略被轉發至相應的轉發器,再由轉發器路由至VNF集合進行業務數據處理,完成數據處理后業務數據將被依次轉發至目的端分類器,最終接入目的服務器。VNF資源容量調整問題的研究目標:根據流經服務功能鏈的實時流量自適應地調整VNF集合內實例的規格和數量,實現物理資源的按需分配,提高資源利用率。如圖1所示,VNF資源容量調整問題可分為兩個階段:(1)生成資源需求,根據流經服務功能鏈的流量數據預測未來的VNF資源需求,生成VNF資源需求視圖,明確下一個時間段需要生成的各個規格VNF實例的數量。(2)VNF部署(映射),根據當前時刻物理網絡的全局視圖,將VNF虛擬資源需求視圖映射到底層物理網絡,完成VNF實例化過程。

圖1 服務功能鏈模型和VNF資源容量調整
為了提高NFV平臺物理資源的利用效率,本文針對VNF資源調整的兩個階段,提出了相應的優化目標:(1)在生成資源需求階段,降低流量預測誤差對資源需求預測結果的影響,提高VNF資源需求預測的準確度。(2)在動態部署階段,實現VNF集合中所有實例的集中化部署,減少VNF占用的服務器數量。
為了提高VNF資源需求預測的精度,本節首先利用LSTM網絡進行流量預測,然后提出了一種基于多層前饋神經網絡的資源需求預測方法,建立流量數據和資源需求數據之間的映射關系模型,實現資源需求精確預測。
根據文獻[5]在運營商云數據中心獲取的測試數據,以OpenStack為代表的虛擬化云平臺完成虛擬機創建和遷移需要“分鐘級”的準備時間,而5G網絡服務的QoS要求運營商將端到端時延降低到毫秒級[17]。在此背景下,依靠網絡監控功能(如OpenStack Ceilmeter)上報的流量數據,實時調整VNF資源容量的“反應式”部署方法無法滿足相關業務的時延需求。因此,運營商亟需提高網絡流量預測的準確度,以便根據流量預測數據提前完成VNF部署。
本節采用了目前比較成熟的時間序列預測方法LSTM網絡模型進行流量預測。LSTM網絡是基于長短期記憶的循環神經網絡,引入了長短期記憶細胞結構代替一般循環神經網絡中普通的隱層神經元,可以動態改變當前時間步細胞結構中輸入、狀態和輸出信息對應的權重,在時間尺度上動態調節網絡中歷史輸入數據對預測結果的影響,解決循環神經網絡中的長期依賴問題。圖2為LSTM網絡中的長短期記憶“細胞”框架[18],其主要功能通過3個門結構實現:(1)遺忘門,通過動態改變當前時間步狀態信息對應的權值決定如何從當前細胞狀態中丟棄歷史狀態信息,實現短期記憶功能。(2)輸入門,通過改變前序時間步狀態信息對應的權值決定如何向當前細胞中添加歷史狀態,實現長期記憶功能。(3)輸出門,通過改變當前時間步輸出信息對應的權值,決定如何輸出當前時間步預測信息,實現時間序列數據預測。

圖2 LSTM循環網絡“細胞”框架
如圖3所示,前饋神經網絡(Feedforward Neural Network, FNN)采用單向多層的網絡結構,整個網絡可以用一個有向無環圖表示[18]。網絡中每一層包含多個神經元且各層神經元僅能接受前一層神經元傳遞的信號,其中第0層為輸入層,包含的神經元個數與輸入數據特征的維度相等,最后一層為輸出層,包含的神經元個數與輸出向量的維度相等,其他為隱層。文獻[19]證明,只需1個包含足夠多神經元的隱層,FNN就能以任意精度逼近任意復雜度的連續函數。借助其強大的回歸預測能力,本節通過設計和訓練多層FNN建立流量數據與資源需求數據之間的映射模型。


圖3 多層前饋神經網絡結構

根據多層FNN預測的VNF資源需求,本節提出了一種基于遺傳算法的VNF部署算法,旨在實現VNF需求視圖中所有實例的集中化部署,最小化VNF集合占用的物理服務器數量,以便運營商將整條服務功能鏈部署到同一機框中管理(SFC runto-complete in a rack模式[5])。
在VNF部署模型中,數據中心網絡可表示為無向賦權圖GS=(NS,LS),其中NS表示高性能服務器集合,LS表示服務器間鏈路組成的集合。VNF請求可表示為無向賦權圖GV=(NV,LV),其中NV表示VNF實例組成的集合,LV表示VNF實例間鏈路組成的集合,部署過程可抽象為映射f:GV →GS。設服務器的數量為n,服務器提供的資源類型共有k類(CPU、內存、硬盤等),云平臺可實例化m種規格的VNF。定義n×k維矩陣C(t)為t時刻服務器資源容量矩陣,其中任意元素cij(t)表示t時刻服務器i可提供的第j類資源的容量。m維列向量R(t)為t時刻VNF資源需求向量,其中任意元素rj(t)表示t時刻平臺需要實例化的第j種規格VNF的數量。m×k維矩陣V表示實例化不同規格的VNF所需的物理資源,其第i行所有元素組成的行向量表示實例化第i種規格的VNF所需的各類型物理資源的數量,元素vij表示實例化第i種規格的VNF所需第j類物理資源的數量。n×n維矩陣E(t)為t時刻服務器鄰接矩陣,其中元素eij表示服務器i和服務器j之間的有效帶寬。m×m維矩陣D表示VNF鄰接矩陣,其中元素dij表示i規格的VNF到j規格的VNF通信鏈路的帶寬開銷。n×m維矩陣X(t)表示t時刻VNF部署決策,其中元素xij=α表示有α個j規格的VNF部署在物理服務器i上。根據上述模型,VNF動態部署問題可表示為式(1)–式(5)描述的整數線性規劃問題。
優化目標

表1 t時 刻資源需求預測特征提取

約束條件

該式提出的優化目標表示在所有時刻部署相應VNF資源需求所需的最小服務器數量。式(2)為服務器資源容量約束,表示部署在任一服務器上的所有VNF實例所占用的各類型物理資源不能超過當前時刻該服務器能提供的資源容量。式(3)為VNF資源需求約束,其中In×1為元素值全部為1的n維列向量,該式表示對于任意規格VNF,已部署的實例數量之和等于當前時刻資源需求視圖中該規格實例的數量。式(4)為鏈路帶寬約束,表示映射到任一物理鏈路的VNF鏈路帶寬之和不能超過當前時刻該物理鏈路的帶寬容量。式(5)定義了決策變量的定義域,其中N為自然數集合。綜上,式(1)–式(5)定義的VNF動態部署問題可規約為擴展的二次分配問題(Quadratic Assignment Problem, QAP),文獻[20]已證明該問題為NP難問題。
為了降低求解的計算時間復雜度,本節設計了一種基于動態編碼遺傳算法的VNF動態部署算法(Dynamic-encoding Genetic Algorithm, DG Alg.),具體流程如表2所示。步驟(2)和步驟(3)能夠根據當前時刻請求中VNF實例的數量動態編碼染色體,式(6)表示編碼后的染色體,其中第1到r1個元素的值對應部署第1類規格VNF實例的服務器序號,例如:n1=2表示第1類規格的第1個VNF實例部署在了2號服務器上,后續編碼以此類推。步驟(4)–步驟(11)計算了種群中各染色體適應度,其中步驟(5)將種群中任一染色體i上的基因分割為長度為r1,r2,···,rm的m個子序列,每一個子序列包含了一種規格的VNF實例與物理服務器之間的映射關系,通過統計各個子序列中服務器的序號獲取當前染色體對應的部署決策矩陣Xi(t)。步驟(7)通過式(1)計算每個染色體中VNF實例部署占用的服務器數量,并將其倒數作為染色體對應的適應度。進化過程中算法將保留適應度高的染色體,選出種群中占用服務器數量最少的部署方案。步驟(12)–步驟(17)為進化和自然選擇過程,其中步驟(13)實現了染色體排序和基因交叉遺傳,首先將種群中所有染色體按照適應度排序,再歸一化適應度序列獲得各染色體的候選概率。根據候選概率選擇種群中的染色體,對其每一個基因按照概率Px進行交叉操作,交叉后獲得子代染色體。步驟(14)為變異操作,按照概率Pm將染色體上的基因ni替換為新的基因,變異操作可以在種群中引入新的基因,防止算法陷入局部最優。

表2 VNF動態部署算法(DG Alg.)

(1) 實驗環境和數據集采集:實驗云數據中心基于OpenStack搭建,包含7臺華為RH2288H V3型服務器,其中2臺高配服務器,5臺低配服務器,具體配置參數如表3所示。網絡設備包含1臺10 GB傳統交換機和3臺盛科V580-32X型SDN交換機。本文實驗使用的流量數據集采用trace-driven方法從數據中心接入網關服務器獲取,服務器datastore UUID為5c2f4446-08a8fa88-6631-289e97db65c6,數據集中流量數據統計的觀測時間間隔為1 h,觀測時長為1230 h,圖4展示了觀測時長內各個時刻的流量大小。承載VNF實例的虛擬機規格在Open-Stack平臺上預置為4類,具體參數如表4所示,VNF資源需求數據集通過統計OpenStack虛擬機創建日志獲取。

表3 服務器參數

表4 虛擬機規格參數

圖4 數據集流量
(2) 實驗參數設置:采用PyTorch框架搭建LSTM網絡和多層FNN,經調試后試驗參數選取如下:(1)基于LSTM的流量數據預測:時間步長設為24,學習率為0.01,學習周期為10000,損失函數為最小均方誤差,優化器選擇Adam,選取70%的流量數據作為訓練集,30%的數據用作測試集。(2)資源需求數據預測:為了驗證本文資源需求預測方法有效性,實驗中將本文設計的多層FNN方法與基于LSTM的資源需求預測方法進行了對比。實驗選取70%的資源需求數據作為訓練集,30%的數據作為測試集。多層FNN輸入特征中的歷史流量向量L(t)選取過去6個時間步的歷史流量數據,網絡包含3個隱層其結構為24-36-24,批大小設為120,批學習周期為20,學習率為0.05,損失函數為最小均方誤差,優化器選擇SGD。對比試驗中,LSTM網絡時間步長設為24,學習率為0.01,學習周期為20000,損失函數為最小均方誤差,優化器選擇Adam。(3)動態編碼遺傳算法:種群大小為100,交叉概率為0.7,變異概率為0.3,最大進化代數為100。
圖5為各時刻LSTM網絡流量預測的相對誤差,預測流量序列與原始流量序列之間的均方誤差為1.0751×1018。預測誤差結果表明,針對該樣本集,LSTM網絡雖然能夠預測流量變化的基本趨勢,但是在全時間尺度上仍會出現預測誤差較大的情況。為了驗證本文所提多層FNN資源需求預測方法的有效性,本文將其與現有的LSTM資源需求預測方法進行了對比。圖6至圖9給出了兩種方法在1230 h內各個時刻的相對誤差散點圖,其中圖6至圖8中個別時刻相對誤差較大的原因是該時刻VNF需求視圖中僅請求了1個該規格的VNF實例。對比LSTM方法與多層FNN方法資源需求預測的相對誤差可以得出結論,本文提出的多層FNN預測方法可以有效降低LSTM網絡流量預測誤差對VNF資源需求預測的影響,降低各個規格VNF實例數量預測的相對誤差,提高VNF實例資源需求預測的精確度。

圖5 流量預測結果

圖6 微小規格VNF實例預測誤差

圖7 小規格VNF實例預測誤差

圖8 中規格VNF實例預測誤差

圖9 大規格VNF實例預測誤差
圖10對比了3種方法在全時間尺度上的累計服務器占用數量,其中Cplex是IBM開發的整數規劃求解工具,在網絡規模較小的場景中能夠獲得本文提出模型的理論最優解,Greedy算法是目前Open-Stack內置的集中化部署算法。相比于Greedy算法,本文提出的DG Alg.能夠明顯降低全時間尺度上的服務器占用數量。對比3種算法在各個時刻求解的決策變量X(t),本文提出的DG Alg.算法能夠在98.62%的時刻求得最優解而Greedy算法僅能在88.54%的時刻取得最優解。圖11通過MATLAB仿真對比了3種算法在不同規格的網絡請求下運行所需的CPU時間,仿真實驗中選取VNF資源需求數據集中的歷史請求數據作為單位請求強度。通過對比,本文提出的DG Alg.算法表現出與Greedy算法相近的時間復雜度,而求解理論最優值的Cplex方法時間復雜度明顯高于其他兩種算法,當請求的VNF實例數量超過1000個后,Cplex無法繼續計算其理論最優值。

圖10 累計服務器占用數量對比

圖11 算法CPU運行時間對比
本文提出了一種自適應的VNF資源容量調整方法。該方法結合已有的LSTM流量預測方法提出了一種基于多層FNN的VNF資源需求預測方法,降低了流量預測誤差對資源需求預測的影響,實現了VNF資源需求的精確預測。然后利用二次分配模型建模VNF動態部署問題,并設計了動態編碼遺傳算法求解,實現了VNF實例的集中部署。后續工作將研究如何降低VNF資源需求預測誤差導致的額外部署開銷,進一步提高VNF動態部署的資源利用效率。