武靜雯,江凌云
(南京郵電大學 通信與信息工程學院,江蘇 南京 210003)
在傳統網絡中,各種網絡服務都是基于硬件的中間件來實現的,它們通常部署在特定的硬件設備上[1]。但是,隨著互聯網的飛快發展,傳統網絡的僵化結構和中間件對特定硬件設備的嚴重依賴已無法滿足用戶的靈活定制需求[2]。應對這一挑戰,網絡功能虛擬化(network function virtualization,NFV)的出現帶來了新的機遇[3]。NFV中的一個網絡服務可以表示為一個服務功能鏈(service function chain,SFC),它由一系列按給定順序的虛擬網絡功能(virtual network function,VNF)組成,為了提供高效的服務,SFC部署在多個不同的服務器中,并引導流量以特定順序通過一組VNF。
SFC部署問題是NP-hard,現有大部分研究都集中于SFC在單域網絡的部署問題,但是由于地理位置的限制,SFC部署必須跨域進行,因此SFC跨域部署問題的研究是至關重要的。現有文獻主要提出兩種方法來解決跨域SFC部署問題,即集中式和分布式,其中分布式方法是更貼合實際的[4],這是目前研究的重點和難點。
文獻[4]提出了切鏈再部署的SFC跨域部署方案,其采用全網聚合技術將物理網絡抽象,基于各個域網絡的剩余資源完成SFC切鏈。但是該方案并未考慮到不同類型的VNF資源需求是不同的,對此,本文基于先前的研究成果[5],提出了SFC切鏈改進算法。
針對SFC切鏈后再部署的問題,目前已有大量文獻進行了研究。但是,現有文獻中將節能作為優化目標的研究很少,同時,節能和負載均衡是兩個相互沖突的優化目標[6],如何在負載均衡和節能之間做出合適的權衡是一個具有挑戰性的問題。對此,本文提出了共同優化能耗和負載均衡的SFC部署方案。
為了提高網絡資源利用率和網絡運營商的效率,單域網絡的SFC部署問題得到了廣泛的研究。文獻[7]設計了一種基于采樣的馬爾可夫方法,用于部署SFC的VNF,以最小化能耗和流量感知成本。文獻[8]提出了整數線性規劃模型來降低SFC的部署成本,并提出了一種啟發式算法來提供近似模型的解決方案。
據調研,只有少數研究涉及SFC的跨域部署問題。文獻[9]從理論上分析了跨不同管理域的NFV問題,并討論了解決問題的挑戰和方向,但是并未提出用于VNF部署或SFC映射的具體算法。文獻[10]研究了在多域彈性光網絡中經濟高效地配置VNF圖的問題,此外,他們基于最小 k-cut問題設計了兩種啟發式算法。但是,文獻[10]中的工作是假設VNF應該組裝成圖而不是服務鏈,并且只考慮了具有兩個域的理想網絡。文獻[11]制定了一個整數線性優化模型,以在多云網絡中優化SFC,作者還提出了幾種啟發式算法來解決該問題。文獻[12]提出了一種在線拍賣機制,用于在多云網絡中配置動態虛擬集群。文獻[4]提出了基于切鏈的SFC跨域部署方案,其根據各個域網絡的剩余資源來完成SFC切鏈,但并未考慮不同類型VNF的資源需求是不同的,對此,本文提出了SFC切鏈改進算法。
現有大多數研究中,提出的SFC部署方案大部分是基于不同的優化目標。文獻[13]將SFC映射問題抽象為多目標線性優化問題,其目標是最大化資源利用率,并提出了啟發式算法來解決該問題。文獻[14]提出了一個有效的框架,該框架將隨機云選擇的概念與基于支持向量回歸的預測模型相結合,提出了成本優化、延遲感知的SFC部署算法。文獻[15]通過資源整合來最小化物理網絡中的能耗。文獻[16]提出了一種旨在同時平衡網絡和服務器負載的聯合優化算法。雖然先前的研究已取得了顯著的成果,但由于大部分研究僅考慮了單一優化目標,忽略了其它優化目標,這樣,整體來看并不是最優的解決方案。鑒于現存文獻中對節能和負載均衡多目標優化的SFC部署方案甚少,對此,本文提出了共同優化節能和負載均衡的SFC部署算法。
2.1.1 網絡模型
將多域物理網絡建模為無向圖G=(S,R), 其中S是各個域網絡服務器節點的集合,而R是各個域網絡總資源容量的集合。其中,Gi=(Si,Ri) 表示第i個域網絡,Si和Ri分別表示第i個域網絡中的服務器節點集合和資源容量集合。G=∪NGiGi, 其中NG表示域網絡數。域網絡Gi中的服務器節點集定義為SiNG, 域網絡Gi中的第j個服務器節點定義為si,jNG∈SiNG?SNG。 不同域網絡中的服務器具有不同的資源容量,包括計算、存儲和內存容量,本文僅考慮更易成為性能瓶頸的計算資源,每個服務器si,jSN都關聯了計算資源容量,即rpi,jcpu。
2.1.2 SFC請求
如圖1所示為SFC的轉發映射示意圖,圖中有兩個不同的SFC,但它們具有完全相同的宿源地址,分別經過不同的中間件以完成不同的服務功能。其中實線表示的第一個SFC依次經過防火墻、負載均衡器,虛線表示的第二個SFC依次經過防火墻、入侵檢測系統(intrusion detection system,IDS)以及視頻優化器。

圖1 SFC轉發映射
圖中的流分類器負責識別網絡流量,并分發至不同的SFC,轉發器負責將網絡流量轉發至不同的中間件(即VNF)。SFC作為網絡服務的一種實現方式,基于網絡連通性,為用戶提供了多樣的L4-L7層的增值服務,它由一系列不同類型的VNF按序組成[17],本文重點研究如何為不同類型的VNF選擇合適的部署域,并選擇合適的服務器進行實例化部署。
本文定義f={f1,f2,f3,…,fNf} 為不同類型VNF的集合,其中fi表示第i類型的VNF,Nf表示VNF類型的總數,不同類型的VNF具有不同的資源需求,本文僅考慮更易成為網絡性能瓶頸的計算資源,將VNFfi的計算資源需求表示為rdicpu。 同時定義F={F1,F2,F3,…,FNF} 為SFC服務請求的集合,其中Fi,j∈Fi∈F表示第i個SFCFi上的第j個VNF,NF表示SFC服務請求的總數。
圖2為本文所提出的跨域SFC部署系統框架,具體介紹說明如下。

圖2 跨域SFC部署系統框架
2.2.1 模塊功能
(1)NFV編排器
NFV編排器是ETSI定義的NFV架構框架中的NFVO組件,管理VNF生命周期。它負責接收來自SDN控制器組件的服務請求,并通過與SFC切鏈組件通信獲取SFC切鏈方案,最后再將SFC切鏈方案發送給SDN控制器組件以提供服務。
(2)SDN控制器
SDN控制器共分為兩類,一個是集中控制器(如圖2中的C0),另一個是域控制器(如圖2中的C1、C2和C3)。整個網絡由多個域網絡組成,例如圖2中有3個域網絡,所有域控制器都由集中控制器控制和管理。域控制器負責控制和管理每個域中的所有底層網絡設備,包括轉發設備和物理服務器。前者負責轉發數據流,后者用于實例化VNF。
為實現共同優化節能和負載均衡的跨域SFC部署,本文在SDN控制器組件中添加了4個功能模塊,分別是需求預測模塊、能量檢測模塊、網絡監控模塊和信息收集模塊,它們的主要功能描述如下:
1)需求預測模塊
該模塊負責預測不同類型VNF的資源需求,這是基于先前文獻[4]的研究成果。將訓練好的預測模型集成至該系統,這樣可以實時獲得各類型VNF的資源需求信息,從而做出合適的部署決策。
2)能量檢測模塊
該模塊負責檢測各個域網絡中服務器的平均能耗,將各個域網絡的平均能耗信息記錄在數據庫中,實現在最小化能耗的情況下,完成SFC跨域部署。
3)網絡監控模塊
該模塊負責監控每臺服務器的網絡狀態和工作負載的變化。一旦網絡狀態或服務器工作負載發生變化,會更新存儲在數據庫中的相應信息,從而為每個服務請求計算最佳部署方案。
4)信息收集模塊
該模塊負責收集各個域的總剩余資源,此處并未涉及到各個域網絡的具體拓撲信息和資源信息,符合實際中各個域網絡信息隔離的情況。
(3)SFC切鏈組件
該組件通過與集中控制器C0通信,獲取該SFC中各類型VNF的資源需求情況以及每個域網絡的剩余資源情況,基于這些信息生成合適的SFC切鏈方案。
(4)SFC子鏈部署組件
該組件通過與各個域控制器通信,獲取該SFC子鏈中各類型VNF的資源需求情況以及當前域網絡的剩余資源情況,基于這些信息生成合適的SFC子鏈部署方案。
2.2.2 工作流程
(1)當終端用戶進入多域網絡時,向SDN控制器C0發送服務請求;
(2)SDN控制器C0將服務請求轉發給NFV編排器,NFV編排器將此服務請求轉化為SFC;
(3)NFV編排器將SFC發送給SFC切鏈組件;
(4)SFC切鏈組件通過與SDN控制器C0通信獲取各個域網絡的總剩余資源量及SFC中不同類型VNF所需的資源量;
(5)SFC切鏈組件調用算法1完成SFC的切鏈,以實現多個域網絡的負載均衡;
(6)SFC切鏈組件將SFC切鏈方案發送給NFV編排器,NFV編排器轉發給SDN控制器C0;
(7)SDN控制器C0與各個域控制器進行通信,并將步驟(5)獲得的SFC子鏈分別分配給每個域網絡以完成進一步的部署;
(8)SFC子鏈部署組件通過與域控制器通信獲取當前域網絡的服務器資源使用情況及SFC子鏈中不同類型VNF所需的資源情況;
(9)SFC子鏈部署組件調用算法2完成SFC子鏈部署,實現單域網絡節能和負載均衡的合適權衡;
(10)SFC子鏈部署組件將計算所得的SFC子鏈部署方案發送給各個域控制器,由域控制器負責完成SFC子鏈的部署;
(11)當網絡狀態或服務器負載發生變化時,更新存儲在數據庫中相應信息。
基于文獻[4],本文提出了一種SFC切鏈改進算法,具體偽代碼如算法1所示。綜合每個域網絡的剩余資源量及不同類型VNF的資源需求量,“量力而為”地切分子鏈。
由于不同類型VNF的資源需求是不同的,先前的研究并沒有考慮到這個因素,本文基于先前文獻[5]的研究成果“基于特征選擇的VNF資源需求預測”完成SFC切鏈,將需求預測模塊集成到本文的控制器模塊中,有利于生成更合適的SFC切鏈方案。
具體根據式(1)進行切鏈這里假設共有k個域網絡,它們是有序的,其中wgti表示第i個域可以提供的資源量,該值的大小也代表了該域網絡部署VNF的能力,Riprocess表示為實現多域網絡的負載均衡,該域網絡應提供的資源量,Rdemand表示該SFC請求所需的總資源量。
Riprocess=wgti∑ki=1wgti×Rdemand
(1)
由于一個VNF僅能部署在一臺服務器上,且VNF是不可分的,因此是很難做到理想的多域網絡負載均衡,本文的目標是實現多域網絡負載均衡的最大化。
基于VNF資源需求預測模塊,本文假設某個到達的長度為n的SFC請求中各個VNF的資源需求可以表示為Rdemand={r1,r2,r3,…rn}, 為減少域間鏈路帶寬資源及時延,本文提出的切鏈算法綜合考慮各個域網絡的剩余資源及各個VNF的資源需求,將SFC切分為與域網絡數量相同的多個子鏈,從而確定分配到每個域網絡的SFC子鏈。首先對所有VNF的資源需求量進行排序,接著遍歷每個VNF的資源需求量,若∑mj=1rj
算法1:改進權重切鏈
輸入:域網絡數量NG, 各個域網絡服務器總數及總資源量G=(S,R); SFC請求隊列及對應的VNF數量和類型F=(f,num,type); VNF類型數VNFType及不同類型VNF對應的資源需求量rdcpu;
輸出:各個域網絡所需部署的SFC子鏈集合M;
(1)針對每一個到達的SFC請求執行以下循環調度算法;
(2)對該SFC請求中的所有的VNF按資源需求進行由小到大的排序,獲得集合VNFsSorted1;
(3)利用式(1)計算每個域網絡應承擔的資源供給量;
(4)遍歷每個域網絡,并針對該域網絡是否有能力提供上述資源供給量進行分類討論;
(5)若能的話,則遍歷VNFsSorted計算該域網絡應承擔的VNF部署集合VNFDeploy;
(6)若不能的話,則根據每個域網絡的資源容量,盡最大努力承擔部署任務,獲得該域網絡的VNF部署集合VNFDeploy;
(7)針對(5)、(6)中的切鏈結果進行反饋,若最后仍有VNF未被劃分,則將其劃分至剩余資源最多的域網絡,并更新切鏈結果M;
(8)返回最后結果,即各個域網絡所需部署的SFC子鏈集合M。
在單域網絡部署SFC子鏈時,本文提出了共同優化節能和服務器負載均衡的部署策略,具體偽代碼如算法2所示,用戶可以在不同場景下根據需求進行適當的調整。
當SFC子鏈在第i個域中成功部署時定義兩個決策變量如下
xjn={1VNFFj成功部署在服務器vnSN0otherwise
(2)
ykj={1VNFFj屬于SFCfk0otherwise
(3)
如前所述,在網絡優化中,節能和負載均衡是矛盾的,無法同時實現針對它們的最佳解決方案。因此,為了在兩者間實現理想的權衡,本文將能耗作為約束,將單域網絡負載均衡度作為目標函數,假設某個SFC子鏈成功部署在域網絡Gi上,式(4)表示第n個服務器vnSN的能耗,式(5)表示激活服務器的額外能耗,式(6)表示單個服務器的CPU利用率,式(7)表示單個服務器消耗的CPU資源量,式(8)表示單域網絡的總能耗
en={enidlein idle modeenidle+enactivein active mode0in off mode
(4)
enactive=dln·enactivemax
(5)
dln=cpncpnmax
(6)
cpn=∑Fj∈F∑fk∈fxjn·ykj·rdkcpu
(7)
EC=∑nen
(8)
所以,優化問題可表示為式(9)。其中,約束條件C1確保每個VNF僅部署在一個服務器節點上;約束條件C2確保服務器的CPU資源容量應滿足待部署VNF的CPU需求;約束條件C3和C4是負載均衡度定義,用服務器CPU利用率標準差來量化負載均衡度(load balance degree,LBD);約束條件C5是能耗約束,確保總能耗小于閾值Emax, 此外,兩個決策變量應滿足約束條件C6和C7中的完整性約束
minLBD







(9)
算法2:CCBP-adv算法
輸入:域網絡服務器數量及激活狀態Gi=(N,A), 服務器最大容量Repo及最大能耗Emax, 各個服務器當前資源利用率Ri, SFC子鏈中VNF數量totalVNF及各VNF的資源需求量SFCi, 總能耗閾值totalEmax;
輸出:SFC子鏈中各VNF的部署結果N;
(1)對該SFC子鏈中的所有VNF的按資源需求進行由大到小的排序,獲得集合VNFsSorted2;
(2)針對VNFsSorted2執行以下循環調度算法;
(3)過濾域網絡中可以滿足該VNF資源需求的服務器集合,獲得候選服務器集合CandidateServer;
(4)篩選候選服務器集合CandidateServer中資源容量最大的服務器作為當前VNF的部署節點,更新部署結果N,并將該服務器從Gi中暫時刪除;
(5)獲得初次部署結果N1;
(6)計算此時各個服務器的資源利用率CpuRadio1, 負載均衡度Variance1及總能耗energyCom1;
(7)進行第一次反饋部署,篩選部署失敗的VNF,重新部署到其它服務器上,獲得部署結果N2;
(8)計算此時各個服務器的資源利用率CpuRadio2, 負載均衡度Variance2及總能耗energyCom2;
(9)當energyCom2>totalEmax時,進行第二次反饋部署;
(10)定義最大反饋次數feedBackNum=round(totalVNF/2);
(11)初始化反饋次數num;
(12)whileenergyCom2>totalEmax
(13) whilenum (14) 獲取所有激活的服務器集合activatedServer (15) 在activatedServer中尋找資源利用率最低的服務器節點server1; (16) 在activatedServer中尋找資源利用率次低的服務器節點server2; (17) 更新總能耗energyCom2; (18) end (19)end (20)獲得最后部署結果N,并關閉所有空閑的服務器以降低能耗; (21)計算此時各個服務器的資源利用率CpuRadio3, 負載均衡度Variance3及總能耗energyCom3; (22)返回SFC子鏈中各VNF的部署結果N; 仿真所用計算機配置為Intel Core i5 7300HQ (2.5 GHz),8 GB內存,所運行的軟件環境為安裝在Windows 10上的MATLAB2015。仿真中設置的主要參數總結在表1中。為了使我們的模擬場景更通用,類似于文獻[17],本文采用“單元”來量化資源消耗及能耗。 表1 仿真參數 針對表1中的仿真參數設置詳細說明如下。其中,NG表示多域網絡數為4,NSFC表示SFC的總數為50,Nvnf_type表示VNF類型數為6,分別是網絡地址轉化、防火墻、IDS、負載均衡器、廣域網優化和流量監控器,NS表示域網絡中的服務器數服從(5,10)的均勻分布,Nvnf表示SFC中的VNF數服從(3,7)的均勻分布,stati,j表示第i個域網絡中的第j個服務器的激活狀態,隨機生成0或1,rpi,jcpu表示第i個域網絡中的第j個服務器的CPU容量,其服從(3,5)的均勻分布,rdicpu表示第i種VNF類型的CPU資源需求量,其服從(0,0.4)的均勻分布,Eidle表示未激活服務器的能耗,Emax表示服務器的最大能耗,Emaxtotal表示整個網絡的能耗閾值。 本文選擇能耗、負載均衡度和時間開銷3個指標來評估所提出的分布式跨域部署算法的性能。 (1)能耗:指所有服務器的總能耗,由式(8)計算; (2)負載均衡度:指多域網絡的負載均衡度,由式(9)中的C3和C4計算,其值越小,表示負載均衡效果越好; (3)時間開銷:指SFC跨域部署算法在多域網絡中部署一組SFC所消耗的時間。 4.3.1 SFC切鏈 圖3是不同切鏈算法在不同SFC數量下多域網絡負載均衡度的比較,其中,平均切鏈算法和權重切鏈算法是文獻[4]所提出的。由圖3可知,本文所提出的改進權重切鏈算法可以產生更小的負載均衡度。如前所述,負載均衡度越小,則可以達到更好的負載均衡效果。這是因為本文所提出的改進權重切鏈算法考慮到了不用類型VNF的資源需求是不同的,在切鏈過程中綜合考慮了每個域網絡的剩余資源量及不同類型VNF的資源需求量,基于先前文獻[5]的研究成果完成SFC切鏈,將需求預測模塊集成到本文的控制器模塊中,這樣有利于生成更合適的SFC切鏈方案。 圖3 多域網絡負載均衡度隨SFC數量變化對比 此外,不同切鏈算法在不同SFC數量下的多域網絡負載均衡度也是不同的。這是因為不同的SFC數量對應了不同的VNF數量,這些VNF所對應的資源需求也是不一樣的,而對于不同的SFC數量,各個域網絡的起始資源容量是一致的,這樣就會造成不同SFC數量部署后多域負載均衡度的起伏變化,但總體來看,本文所提出的改進權重切鏈算法總是可以達到更好的負載均衡效果。 圖4是不同切鏈算法在不同VNF數量下多域網絡負載均衡度的比較。由圖4可知,本文所提出的改進權重切鏈算法可以產生更小的負載均衡度,即本文所提出的改進權重切鏈算法比其它兩種比較算法能夠達到更好的負載均衡效果。這同樣是因為本文所提出的改進權重切鏈算法考慮到了不用類型VNF的資源需求是不同的。此外,不同切鏈算法在不同VNF數量下的多域網絡負載均衡度也是不同的。這是因為不同VNF所對應的資源需求是不同的,而對于不同數量的VNF,各個域網絡的起始資源容量是一致的,這樣就會造成不同數量VNF部署后多域負載均衡度的起伏變化,但總體來看,本文所提出的改進權重切鏈算法總是可以達到更好的負載均衡效果。 圖4 多域網絡負載均衡度隨VNF數量變化對比 圖5是不同切鏈算法在不同VNF資源需求下多域網絡負載均衡度的比較,其中橫坐標數字a表示VNF資源需求服從均勻分布(a,a+0.1)。由圖5可知,本文所提出的改進權重切鏈算法可以產生更小的負載均衡度,即本文所提出的改進權重切鏈算法比其它兩種比較算法能夠達到更好的負載均衡效果。這同樣是因為本文所提出的改進權重切鏈算法考慮到了不用類型VNF的資源需求是不同的。此外,不同切鏈算法在不同VNF資源需求下的多域網絡負載均衡度是不同的,整體上呈現正相關趨勢。這是因為每個服務器節點具有不同的資源容量,并且每個VNF都部署在可以滿足不斷變化的資源需求的服務器節點上,而不是固定的服務器節點上。針對不斷增長的VNF資源需求,滿足其資源需求的服務器節點越來越少,即可供選擇的部署位置越來越少,這樣很容易造成多域網絡負載均衡度的不斷增長,但總體來看,本文所提出的改進權重切鏈算法總是可以達到更好的負載均衡效果。 圖5 多域網絡負載均衡度隨VNF需求變化對比 4.3.2 SFC子鏈部署 圖6是不同部署算法在不同VNF數量下單域網絡能耗的比較,其中一個基準算法是隨機部署算法(random deployment,RANP),首次擬合部署(first-fit deployment,FFP)算法是文獻[18]提出的,基于改進切鏈部署(chain-cut-based deployment advanced,CCBP-adv)算法是本文提出的SFC跨域部署算法。由圖6可知,本文所提出的CCBP-adv算法在大多數情況下均可以產生更少的能耗。這是因為本文所提出的CCBP-adv算法設置了反饋部署,當能耗超過閾值時,就會做出相應地調整,旨在激活更小的服務器集合,在負載均衡度和能耗間做出合適的權衡。而對于FFP算法是將每個VNF部署在最先滿足其資源需求的服務器上。對于RANP算法,每個VNF都是隨機部署在一個服務器上的。與FFP算法相比,RANP算法可能占用更多的服務器來部署VNF,進一步導致更多的能耗。 圖6 單域網絡能耗隨VNF數量變化對比 此外,隨著VNF數量的增加,本文所提出CCBP-adv算法所產生的單域網絡能耗整體上呈下降趨勢,這是因為本文所設置的反饋部署次數與VNF數量正相關,隨著反饋次數的增加,會減少激活的服務器數量,從而降低總能耗;而對于FFP算法和RANP算法所產生的單域網絡能耗均呈上升趨勢,這是因為這兩種算法均未進行反饋部署,隨著VNF數量的增加,必然會造成能耗的增加。 圖7是不同部署算法在不同VNF數量下單域網絡負載均衡度的比較。由圖7可知,本文所提出的CCBP-adv算法可以產生更小的負載均衡度,即CCBP-adv算法比其它兩個部署算法的負載均衡效果更好。這是因為本文所提出的CCBP-adv算法是以單域網絡的負載均衡度為優化目標進行部署,僅當能耗超過閾值情況下,才會進行相應的部署調整。而對于FFP算法是將每個VNF部署在最先滿足其資源需求的服務器上,這樣會造成VNF集中部署,不利于負載均衡,大量的流量流向單一節點,極易造成網絡堵塞、數據包丟失,更有甚者造成網絡癱瘓的情況。對于RANP算法,每個VNF都是隨機部署在服務器上,同樣也不利于負載均衡。 圖7 單域網絡負載均衡度隨VNF數量變化對比 此外,隨著VNF資源需求的增加,3種部署算法產生的單域網絡負載均衡度起伏變化。這是因為隨著VNF資源需求的不斷增加,滿足其資源需求的服務器節點數目不斷變化,這樣很容易造成單域網絡負載均衡度的起伏變化,但總體來看,本文所提出的CCBP-adv算法總是可以達到更好的負載均衡效果。 圖8是不同部署算法在不同VNF資源需求下單域網絡能耗的比較,其中橫坐標數字a表示VNF資源需求服從均勻分布U(a,a+0.1)。由圖8可知,本文所提出的CCBP-adv算法可以產生更少的能耗。這是因為本文所提出的CCBP-adv算法設置了反饋部署,當能耗超過閾值情況下,會做出相應的調整,旨在激活更小的服務器集合。而對于FFP算法是將每個VNF部署在最先滿足其資源需求的服務器上。對于RANP算法,每個 VNF都是隨機部署在服務器上。與FFP算法相比,RANP算法可能占用更多的服務器來部署VNF,進一步導致更多的能耗。 圖8 單域網絡能耗隨VNF需求變化對比 此外,隨著VNF資源需求的增加,3種部署算法產生的總能耗變大。這是因為隨著VNF資源需求的增加,為了提供高效的服務,服務器需要更多的資源來實例化部署的VNF,進一步導致更多的能耗。 圖9是不同部署算法在不同VNF資源需求下單域網絡負載均衡度的比較。由圖9可知,本文所提出的CCBP-adv算法可以產生更小的負載均衡度,即CCBP-adv算法比其它兩個部署算法的負載均衡效果更好。這是因為本文所提出的CCBP-adv算法是以單域網絡的負載均衡度為優化目標進行部署,僅當能耗超過閾值時,才會進行相應的部署調整。而對于FFP算法是將每個VNF部署在最先滿足其資源需求的服務器上,這樣會造成VNF集中部署,不利于負載均衡,大量的流量流向單一節點,極易造成網絡堵塞,更有甚者造成網絡癱瘓的情況。對于RANP算法,每個VNF都是隨機部署在服務器上,同樣也不利于負載均衡。 圖9 單域網絡負載度隨VNF需求變化對比 此外,隨著VNF資源需求的增加,3種部署算法產生的單域網絡負載均衡度起伏變化。這是因為隨著VNF資源需求的增加,滿足其資源需求的服務器節點數目不斷變化,這樣很容易造成單域網絡負載均衡度的起伏變化,但總體來看,本文所提出的CCBP-adv算法總是可以達到更好的負載均衡效果。 圖10是不同部署算法在不同VNF數量下時間成本的比較。由圖10可知,本文所提出的CCBP-adv算法可能需要更多的時間完成部署,但相較于FFP算法,時間成本平均僅增加了0.02 ms,這是可接受的。此外,隨著VNF數量的增加,3種部署算法產生的時間成本整體上呈上升趨勢。這是因為隨著VNF數量的增加,需要執行的循環調度算法次數也會相應增加,即每個部署算法需要遍歷更多的服務器,搜索最優部署服務器的時間會增加,由此造成了更多的部署時間。 圖10 時間成本隨VNF數量變化對比 綜上所述,從上述性能比較中可以得出結論,本文所提出的SFC跨域部署算法是有效的,并且在能耗和負載均衡度方面均優于比較算法。 現有網絡虛擬化場景下的服務功能鏈部署算法的研究大部分集中在單域網絡,這些算法無法直接應用于跨域部署場景下,同時現有的跨域部署算法都未考慮到不同類型的VNF資源需求是不同的,且優化目標單一。本文提出的SFC跨域部署算法很好地解決了多域網絡負載失衡及能耗過多的問題,基于先前的研究成果,將VNF資源需求預測模塊集成至該算法中,共同優化負載均衡和能耗,靈活地在這兩者間進行權衡,在最大化減少能耗的同時,獲得了更好的網絡負載均衡效果。4 仿 真
4.1 仿真設計

4.2 評價指標
4.3 仿真結果分析








5 結束語