袁 泉 游 偉 季新生 湯紅波
(解放軍戰(zhàn)略支援部隊信息工程大學 鄭州 450002)
網(wǎng)絡功能虛擬化(Network Function Virtualization, NFV)實現(xiàn)了傳統(tǒng)網(wǎng)絡功能與專用硬件的解耦,從專用網(wǎng)絡設備中抽象出軟件化的虛擬網(wǎng)絡功能(Virtualized Network Function, VNF),推動了網(wǎng)絡服務部署模式的根本性轉(zhuǎn)變–由僵化的“網(wǎng)元”部署模式轉(zhuǎn)向相對靈活的切片部署模式[1]。在基于網(wǎng)絡切片的部署模式中,服務提供商通過創(chuàng)建一組有序的VNF集合為租戶提供定制化的網(wǎng)絡服務,并通過NFV管理和編排模塊(Management And Orchestration Module, MANO)動態(tài)調(diào)整VNF集合占用的資源容量,實現(xiàn)物理資源(計算、內(nèi)存和磁盤資源等)的動態(tài)按需分配[2]。以物理資源“按需分配”為目標,文獻[3]提出了VNF資源容量調(diào)整的概念,并設計了基于VNF重映射的解決方案。文獻[4]總結(jié)了現(xiàn)有的VNF資源容量調(diào)整方法,并將其分為以下兩種類型[4]:(1)基于流量預測的調(diào)整方法[5–10],通過預測VNF集合輸入流量的變化趨勢,預判其中VNF實例數(shù)量的變化,提前部署或移除相應的VNF實例實現(xiàn)資源容量調(diào)整。(2)基于在線優(yōu)化理論的調(diào)整方法[11–14],在流量不可預測的場景中,利用在線優(yōu)化模型(如Ski-rental模型)求解局部最優(yōu)的容量調(diào)整策略。本文主要針對基于流量預測的VNF資源容量調(diào)整方法進行研究。
文獻[5]分析并提取了運營商云數(shù)據(jù)中心網(wǎng)絡的流量特征,設計了一種基于深度神經(jīng)網(wǎng)絡的流量預測算法,并結(jié)合預測數(shù)據(jù)提出了一種基于整數(shù)規(guī)劃的VNF資源容量調(diào)整方法。文獻[6]提出了一種面向5G核心網(wǎng)上行鏈路場景的流量預測方法,該方法通過分析流入無線接入和移動性管理功能(Access and Mobility management Function, AMF)上行鏈路的流量數(shù)據(jù)提取樣本集,然后設計和訓練循環(huán)神經(jīng)網(wǎng)絡實現(xiàn)流量預測。文獻[7]提出了一種輕量級的流量預測方法,引入K均值和蒙特卡羅方法加快循環(huán)神經(jīng)網(wǎng)絡的訓練過程,提高訓練效率,降低預測方法的時間復雜度。文獻[8]針對流量預測準確度較低的場景提出了一種預測誤差補償方法,該方法利用在線學習算法最小化流量預測誤差對VNF資源容量調(diào)整策略的影響,降低了由預測誤差帶來的容量調(diào)整開銷。文獻[9]提出了一種基于排隊模型的VNF資源調(diào)整方法,利用長短期記憶網(wǎng)絡(Long Short Term Memory, LSTM)預測流量變化趨勢,并設計了一種基于最大最小蟻群算法的VNF動態(tài)部署方法,實現(xiàn)計算資源利用率最大化。文獻[10]提出了VNF資源容量調(diào)整過程中VNF性能和資源占用之間的均衡問題,并設計了基于排隊模型的啟發(fā)式算法搜索最優(yōu)解,在保證VNF性能的基礎(chǔ)上最小化VNF集合占用的物理資源。綜合分析上述基于流量預測的VNF資源容量調(diào)整方法,其中電信網(wǎng)和云數(shù)據(jù)中心場景下的流量預測算法已經(jīng)有了相對完備的研究成果,但是相應的VNF部署方法仍存在兩方面缺陷:(1)無法根據(jù)流量預測結(jié)果準確預測VNF的資源需求?,F(xiàn)有模型主要基于相關(guān)函數(shù)法[5–7,11]建立流量預測結(jié)果與VNF資源需求之間的映射關(guān)系,但是由于許多類型的資源利用存在長相關(guān)、重尾、非線性和多尺度等特征,上述方法難以根據(jù)流量預測結(jié)果準確預測VNF的資源需求。(2)在容量調(diào)整的過程中未考慮如何減少VNF實例占用的服務器數(shù)量?,F(xiàn)有研究主要針對大規(guī)模電信云數(shù)據(jù)中心場景下的VNF容量調(diào)整問題,其系統(tǒng)模型中采用cross rack pipelined SFC模式[5]部署服務功能鏈,即在某一機框中僅部署單一類型的VNF實例,不同VNF之間通過機框外部的物理鏈路相互串聯(lián),組成服務功能鏈為租戶提供服務。cross rack pipelined SFC模式的優(yōu)點在于可以為VNF的擴容提供充足物理資源,且便于VNFM統(tǒng)一管理編排各個類型的VNF。但是對于中小規(guī)模的數(shù)據(jù)中心,由于服務器數(shù)量較少,數(shù)據(jù)中心資源規(guī)劃相對緊張,云平臺無法為各個類型的VNF分配獨立的機框資源,服務提供商通常選擇SFC run-to-complete in a rack模式部署SFC,即在同一機架內(nèi)完成一條SFC的部署。由于該模式下的服務器資源相對短缺,需要研究如何在SFC run-tocomplete in a rack模式中協(xié)同部署不同規(guī)格的VNFC實例,減少SFC占用的服務器數(shù)量,提高云平臺的資源可用性。
針對已有研究存在的問題,本文提出一種VNF資源容量自適應調(diào)整方法,并采用trace-dirven方法[15]進行了仿真實驗。該方法將真實云環(huán)境中獲取的一系列觀測數(shù)據(jù)輸入仿真程序,保證了實驗結(jié)果的有效性。首先,我們從實驗云數(shù)據(jù)中心的接入網(wǎng)關(guān)中獲取輸入流量數(shù)據(jù),并利用LSTM網(wǎng)絡預測其變化趨勢。然后在OpenStack日志文件中統(tǒng)計相應時段各規(guī)格VNF實例的歷史部署數(shù)據(jù),結(jié)合流量預測結(jié)果設計多層前饋神經(jīng)網(wǎng)絡預測租戶的VNF資源需求。該方法綜合考慮了流量變化、資源需求變化和業(yè)務類型等因素對資源預測準確度的影響,能夠降低VNF資源需求預測的相對誤差。最后基于VNF資源需求預測數(shù)據(jù),建立改進的二次分配模型描述VNF動態(tài)部署問題,并設計了一種動態(tài)編碼遺傳算法求解該NP難問題。該算法能夠根據(jù)資源需求的變化自適應地調(diào)整VNF的部署策略,減少VNF實例部署占用的服務器數(shù)量,提高物理資源的可用性。
服務功能鏈是一組有序的VNF集合,在NFV平臺上,服務提供商利用服務功能鏈技術(shù)向租戶提供端到端定制化服務。如圖1所示,服務功能鏈的基本組件包含分類器、轉(zhuǎn)發(fā)器和VNF集合3部分。其中,分類器主要負責業(yè)務流量的接入控制和路由策略管理,轉(zhuǎn)發(fā)器負責流量解析、封裝和轉(zhuǎn)發(fā),VNF集合負責業(yè)務流量處理[16]。租戶請求的業(yè)務流量通過分類器進入服務功能鏈,根據(jù)分類器中的路由策略被轉(zhuǎn)發(fā)至相應的轉(zhuǎn)發(fā)器,再由轉(zhuǎn)發(fā)器路由至VNF集合進行業(yè)務數(shù)據(jù)處理,完成數(shù)據(jù)處理后業(yè)務數(shù)據(jù)將被依次轉(zhuǎn)發(fā)至目的端分類器,最終接入目的服務器。VNF資源容量調(diào)整問題的研究目標:根據(jù)流經(jīng)服務功能鏈的實時流量自適應地調(diào)整VNF集合內(nèi)實例的規(guī)格和數(shù)量,實現(xiàn)物理資源的按需分配,提高資源利用率。如圖1所示,VNF資源容量調(diào)整問題可分為兩個階段:(1)生成資源需求,根據(jù)流經(jīng)服務功能鏈的流量數(shù)據(jù)預測未來的VNF資源需求,生成VNF資源需求視圖,明確下一個時間段需要生成的各個規(guī)格VNF實例的數(shù)量。(2)VNF部署(映射),根據(jù)當前時刻物理網(wǎng)絡的全局視圖,將VNF虛擬資源需求視圖映射到底層物理網(wǎng)絡,完成VNF實例化過程。
圖1 服務功能鏈模型和VNF資源容量調(diào)整
為了提高NFV平臺物理資源的利用效率,本文針對VNF資源調(diào)整的兩個階段,提出了相應的優(yōu)化目標:(1)在生成資源需求階段,降低流量預測誤差對資源需求預測結(jié)果的影響,提高VNF資源需求預測的準確度。(2)在動態(tài)部署階段,實現(xiàn)VNF集合中所有實例的集中化部署,減少VNF占用的服務器數(shù)量。
為了提高VNF資源需求預測的精度,本節(jié)首先利用LSTM網(wǎng)絡進行流量預測,然后提出了一種基于多層前饋神經(jīng)網(wǎng)絡的資源需求預測方法,建立流量數(shù)據(jù)和資源需求數(shù)據(jù)之間的映射關(guān)系模型,實現(xiàn)資源需求精確預測。
根據(jù)文獻[5]在運營商云數(shù)據(jù)中心獲取的測試數(shù)據(jù),以OpenStack為代表的虛擬化云平臺完成虛擬機創(chuàng)建和遷移需要“分鐘級”的準備時間,而5G網(wǎng)絡服務的QoS要求運營商將端到端時延降低到毫秒級[17]。在此背景下,依靠網(wǎng)絡監(jiān)控功能(如OpenStack Ceilmeter)上報的流量數(shù)據(jù),實時調(diào)整VNF資源容量的“反應式”部署方法無法滿足相關(guān)業(yè)務的時延需求。因此,運營商亟需提高網(wǎng)絡流量預測的準確度,以便根據(jù)流量預測數(shù)據(jù)提前完成VNF部署。
本節(jié)采用了目前比較成熟的時間序列預測方法LSTM網(wǎng)絡模型進行流量預測。LSTM網(wǎng)絡是基于長短期記憶的循環(huán)神經(jīng)網(wǎng)絡,引入了長短期記憶細胞結(jié)構(gòu)代替一般循環(huán)神經(jīng)網(wǎng)絡中普通的隱層神經(jīng)元,可以動態(tài)改變當前時間步細胞結(jié)構(gòu)中輸入、狀態(tài)和輸出信息對應的權(quán)重,在時間尺度上動態(tài)調(diào)節(jié)網(wǎng)絡中歷史輸入數(shù)據(jù)對預測結(jié)果的影響,解決循環(huán)神經(jīng)網(wǎng)絡中的長期依賴問題。圖2為LSTM網(wǎng)絡中的長短期記憶“細胞”框架[18],其主要功能通過3個門結(jié)構(gòu)實現(xiàn):(1)遺忘門,通過動態(tài)改變當前時間步狀態(tài)信息對應的權(quán)值決定如何從當前細胞狀態(tài)中丟棄歷史狀態(tài)信息,實現(xiàn)短期記憶功能。(2)輸入門,通過改變前序時間步狀態(tài)信息對應的權(quán)值決定如何向當前細胞中添加歷史狀態(tài),實現(xiàn)長期記憶功能。(3)輸出門,通過改變當前時間步輸出信息對應的權(quán)值,決定如何輸出當前時間步預測信息,實現(xiàn)時間序列數(shù)據(jù)預測。
圖2 LSTM循環(huán)網(wǎng)絡“細胞”框架
如圖3所示,前饋神經(jīng)網(wǎng)絡(Feedforward Neural Network, FNN)采用單向多層的網(wǎng)絡結(jié)構(gòu),整個網(wǎng)絡可以用一個有向無環(huán)圖表示[18]。網(wǎng)絡中每一層包含多個神經(jīng)元且各層神經(jīng)元僅能接受前一層神經(jīng)元傳遞的信號,其中第0層為輸入層,包含的神經(jīng)元個數(shù)與輸入數(shù)據(jù)特征的維度相等,最后一層為輸出層,包含的神經(jīng)元個數(shù)與輸出向量的維度相等,其他為隱層。文獻[19]證明,只需1個包含足夠多神經(jīng)元的隱層,F(xiàn)NN就能以任意精度逼近任意復雜度的連續(xù)函數(shù)。借助其強大的回歸預測能力,本節(jié)通過設計和訓練多層FNN建立流量數(shù)據(jù)與資源需求數(shù)據(jù)之間的映射模型。
圖3 多層前饋神經(jīng)網(wǎng)絡結(jié)構(gòu)
根據(jù)多層FNN預測的VNF資源需求,本節(jié)提出了一種基于遺傳算法的VNF部署算法,旨在實現(xiàn)VNF需求視圖中所有實例的集中化部署,最小化VNF集合占用的物理服務器數(shù)量,以便運營商將整條服務功能鏈部署到同一機框中管理(SFC runto-complete in a rack模式[5])。
在VNF部署模型中,數(shù)據(jù)中心網(wǎng)絡可表示為無向賦權(quán)圖GS=(NS,LS),其中NS表示高性能服務器集合,LS表示服務器間鏈路組成的集合。VNF請求可表示為無向賦權(quán)圖GV=(NV,LV),其中NV表示VNF實例組成的集合,LV表示VNF實例間鏈路組成的集合,部署過程可抽象為映射f:GV →GS。設服務器的數(shù)量為n,服務器提供的資源類型共有k類(CPU、內(nèi)存、硬盤等),云平臺可實例化m種規(guī)格的VNF。定義n×k維矩陣C(t)為t時刻服務器資源容量矩陣,其中任意元素cij(t)表示t時刻服務器i可提供的第j類資源的容量。m維列向量R(t)為t時刻VNF資源需求向量,其中任意元素rj(t)表示t時刻平臺需要實例化的第j種規(guī)格VNF的數(shù)量。m×k維矩陣V表示實例化不同規(guī)格的VNF所需的物理資源,其第i行所有元素組成的行向量表示實例化第i種規(guī)格的VNF所需的各類型物理資源的數(shù)量,元素vij表示實例化第i種規(guī)格的VNF所需第j類物理資源的數(shù)量。n×n維矩陣E(t)為t時刻服務器鄰接矩陣,其中元素eij表示服務器i和服務器j之間的有效帶寬。m×m維矩陣D表示VNF鄰接矩陣,其中元素dij表示i規(guī)格的VNF到j規(guī)格的VNF通信鏈路的帶寬開銷。n×m維矩陣X(t)表示t時刻VNF部署決策,其中元素xij=α表示有α個j規(guī)格的VNF部署在物理服務器i上。根據(jù)上述模型,VNF動態(tài)部署問題可表示為式(1)–式(5)描述的整數(shù)線性規(guī)劃問題。
優(yōu)化目標
表1 t時 刻資源需求預測特征提取
約束條件
該式提出的優(yōu)化目標表示在所有時刻部署相應VNF資源需求所需的最小服務器數(shù)量。式(2)為服務器資源容量約束,表示部署在任一服務器上的所有VNF實例所占用的各類型物理資源不能超過當前時刻該服務器能提供的資源容量。式(3)為VNF資源需求約束,其中In×1為元素值全部為1的n維列向量,該式表示對于任意規(guī)格VNF,已部署的實例數(shù)量之和等于當前時刻資源需求視圖中該規(guī)格實例的數(shù)量。式(4)為鏈路帶寬約束,表示映射到任一物理鏈路的VNF鏈路帶寬之和不能超過當前時刻該物理鏈路的帶寬容量。式(5)定義了決策變量的定義域,其中N為自然數(shù)集合。綜上,式(1)–式(5)定義的VNF動態(tài)部署問題可規(guī)約為擴展的二次分配問題(Quadratic Assignment Problem, QAP),文獻[20]已證明該問題為NP難問題。
為了降低求解的計算時間復雜度,本節(jié)設計了一種基于動態(tài)編碼遺傳算法的VNF動態(tài)部署算法(Dynamic-encoding Genetic Algorithm, DG Alg.),具體流程如表2所示。步驟(2)和步驟(3)能夠根據(jù)當前時刻請求中VNF實例的數(shù)量動態(tài)編碼染色體,式(6)表示編碼后的染色體,其中第1到r1個元素的值對應部署第1類規(guī)格VNF實例的服務器序號,例如:n1=2表示第1類規(guī)格的第1個VNF實例部署在了2號服務器上,后續(xù)編碼以此類推。步驟(4)–步驟(11)計算了種群中各染色體適應度,其中步驟(5)將種群中任一染色體i上的基因分割為長度為r1,r2,···,rm的m個子序列,每一個子序列包含了一種規(guī)格的VNF實例與物理服務器之間的映射關(guān)系,通過統(tǒng)計各個子序列中服務器的序號獲取當前染色體對應的部署決策矩陣Xi(t)。步驟(7)通過式(1)計算每個染色體中VNF實例部署占用的服務器數(shù)量,并將其倒數(shù)作為染色體對應的適應度。進化過程中算法將保留適應度高的染色體,選出種群中占用服務器數(shù)量最少的部署方案。步驟(12)–步驟(17)為進化和自然選擇過程,其中步驟(13)實現(xiàn)了染色體排序和基因交叉遺傳,首先將種群中所有染色體按照適應度排序,再歸一化適應度序列獲得各染色體的候選概率。根據(jù)候選概率選擇種群中的染色體,對其每一個基因按照概率Px進行交叉操作,交叉后獲得子代染色體。步驟(14)為變異操作,按照概率Pm將染色體上的基因ni替換為新的基因,變異操作可以在種群中引入新的基因,防止算法陷入局部最優(yōu)。
表2 VNF動態(tài)部署算法(DG Alg.)
(1) 實驗環(huán)境和數(shù)據(jù)集采集:實驗云數(shù)據(jù)中心基于OpenStack搭建,包含7臺華為RH2288H V3型服務器,其中2臺高配服務器,5臺低配服務器,具體配置參數(shù)如表3所示。網(wǎng)絡設備包含1臺10 GB傳統(tǒng)交換機和3臺盛科V580-32X型SDN交換機。本文實驗使用的流量數(shù)據(jù)集采用trace-driven方法從數(shù)據(jù)中心接入網(wǎng)關(guān)服務器獲取,服務器datastore UUID為5c2f4446-08a8fa88-6631-289e97db65c6,數(shù)據(jù)集中流量數(shù)據(jù)統(tǒng)計的觀測時間間隔為1 h,觀測時長為1230 h,圖4展示了觀測時長內(nèi)各個時刻的流量大小。承載VNF實例的虛擬機規(guī)格在Open-Stack平臺上預置為4類,具體參數(shù)如表4所示,VNF資源需求數(shù)據(jù)集通過統(tǒng)計OpenStack虛擬機創(chuàng)建日志獲取。
表3 服務器參數(shù)
表4 虛擬機規(guī)格參數(shù)
圖4 數(shù)據(jù)集流量
(2) 實驗參數(shù)設置:采用PyTorch框架搭建LSTM網(wǎng)絡和多層FNN,經(jīng)調(diào)試后試驗參數(shù)選取如下:(1)基于LSTM的流量數(shù)據(jù)預測:時間步長設為24,學習率為0.01,學習周期為10000,損失函數(shù)為最小均方誤差,優(yōu)化器選擇Adam,選取70%的流量數(shù)據(jù)作為訓練集,30%的數(shù)據(jù)用作測試集。(2)資源需求數(shù)據(jù)預測:為了驗證本文資源需求預測方法有效性,實驗中將本文設計的多層FNN方法與基于LSTM的資源需求預測方法進行了對比。實驗選取70%的資源需求數(shù)據(jù)作為訓練集,30%的數(shù)據(jù)作為測試集。多層FNN輸入特征中的歷史流量向量L(t)選取過去6個時間步的歷史流量數(shù)據(jù),網(wǎng)絡包含3個隱層其結(jié)構(gòu)為24-36-24,批大小設為120,批學習周期為20,學習率為0.05,損失函數(shù)為最小均方誤差,優(yōu)化器選擇SGD。對比試驗中,LSTM網(wǎng)絡時間步長設為24,學習率為0.01,學習周期為20000,損失函數(shù)為最小均方誤差,優(yōu)化器選擇Adam。(3)動態(tài)編碼遺傳算法:種群大小為100,交叉概率為0.7,變異概率為0.3,最大進化代數(shù)為100。
圖5為各時刻LSTM網(wǎng)絡流量預測的相對誤差,預測流量序列與原始流量序列之間的均方誤差為1.0751×1018。預測誤差結(jié)果表明,針對該樣本集,LSTM網(wǎng)絡雖然能夠預測流量變化的基本趨勢,但是在全時間尺度上仍會出現(xiàn)預測誤差較大的情況。為了驗證本文所提多層FNN資源需求預測方法的有效性,本文將其與現(xiàn)有的LSTM資源需求預測方法進行了對比。圖6至圖9給出了兩種方法在1230 h內(nèi)各個時刻的相對誤差散點圖,其中圖6至圖8中個別時刻相對誤差較大的原因是該時刻VNF需求視圖中僅請求了1個該規(guī)格的VNF實例。對比LSTM方法與多層FNN方法資源需求預測的相對誤差可以得出結(jié)論,本文提出的多層FNN預測方法可以有效降低LSTM網(wǎng)絡流量預測誤差對VNF資源需求預測的影響,降低各個規(guī)格VNF實例數(shù)量預測的相對誤差,提高VNF實例資源需求預測的精確度。
圖5 流量預測結(jié)果
圖6 微小規(guī)格VNF實例預測誤差
圖7 小規(guī)格VNF實例預測誤差
圖8 中規(guī)格VNF實例預測誤差
圖9 大規(guī)格VNF實例預測誤差
圖10對比了3種方法在全時間尺度上的累計服務器占用數(shù)量,其中Cplex是IBM開發(fā)的整數(shù)規(guī)劃求解工具,在網(wǎng)絡規(guī)模較小的場景中能夠獲得本文提出模型的理論最優(yōu)解,Greedy算法是目前Open-Stack內(nèi)置的集中化部署算法。相比于Greedy算法,本文提出的DG Alg.能夠明顯降低全時間尺度上的服務器占用數(shù)量。對比3種算法在各個時刻求解的決策變量X(t),本文提出的DG Alg.算法能夠在98.62%的時刻求得最優(yōu)解而Greedy算法僅能在88.54%的時刻取得最優(yōu)解。圖11通過MATLAB仿真對比了3種算法在不同規(guī)格的網(wǎng)絡請求下運行所需的CPU時間,仿真實驗中選取VNF資源需求數(shù)據(jù)集中的歷史請求數(shù)據(jù)作為單位請求強度。通過對比,本文提出的DG Alg.算法表現(xiàn)出與Greedy算法相近的時間復雜度,而求解理論最優(yōu)值的Cplex方法時間復雜度明顯高于其他兩種算法,當請求的VNF實例數(shù)量超過1000個后,Cplex無法繼續(xù)計算其理論最優(yōu)值。
圖10 累計服務器占用數(shù)量對比
圖11 算法CPU運行時間對比
本文提出了一種自適應的VNF資源容量調(diào)整方法。該方法結(jié)合已有的LSTM流量預測方法提出了一種基于多層FNN的VNF資源需求預測方法,降低了流量預測誤差對資源需求預測的影響,實現(xiàn)了VNF資源需求的精確預測。然后利用二次分配模型建模VNF動態(tài)部署問題,并設計了動態(tài)編碼遺傳算法求解,實現(xiàn)了VNF實例的集中部署。后續(xù)工作將研究如何降低VNF資源需求預測誤差導致的額外部署開銷,進一步提高VNF動態(tài)部署的資源利用效率。