暢海峰,嵩 天,楊雅婷
北京理工大學(xué) 計算機(jī)學(xué)院,北京100081
網(wǎng)絡(luò)功能虛擬化[1](Network Functions Virtualization,NFV)的目標(biāo)在于:使用基于x86 的通用標(biāo)準(zhǔn)服務(wù)器代替?zhèn)鹘y(tǒng)網(wǎng)絡(luò)中的專用電信網(wǎng)元設(shè)備,通過虛擬化技術(shù)實現(xiàn)軟硬件解耦,使網(wǎng)絡(luò)功能不再依賴于專用硬件。
然而,與傳統(tǒng)專用電信設(shè)備相比,將網(wǎng)絡(luò)功能(Network Functions,NFs)以軟件形式部署在虛擬環(huán)境中會導(dǎo)致網(wǎng)絡(luò)功能報文處理能力下降。虛擬化技術(shù)的固有性能損失會直接影響NFs性能。此外,基于通用設(shè)備的軟件NFs 與專用電信設(shè)備之間的報文處理能力仍存在較大差距。DPDK[2](Intel Data Plane Development Kit)是Intel 提供的數(shù)據(jù)平面開發(fā)工具集,專注于網(wǎng)絡(luò)數(shù)據(jù)包的高性能處理,已在很多場景中被用來加速虛擬網(wǎng)絡(luò)功能。
NFV使用通用標(biāo)準(zhǔn)服務(wù)器作為統(tǒng)一計算平臺,在有限物理資源條件下,如何在合理分配資源的前提下部署虛擬網(wǎng)絡(luò)功能(Virtual Network Function,VNF),以滿足用戶各種業(yè)務(wù)需求,是網(wǎng)絡(luò)功能發(fā)展過程中重要的挑戰(zhàn)之一。現(xiàn)有網(wǎng)絡(luò)功能虛擬化資源分配的相關(guān)研究多數(shù)是從編排層面提出部署方案,決定VNFs 的物理部署位置。本文則考慮實際部署環(huán)節(jié),針對單物理節(jié)點(diǎn)部署多VNFs場景,采用DPDK加速虛擬網(wǎng)絡(luò)功能,并研究網(wǎng)絡(luò)功能虛擬化中的單節(jié)點(diǎn)資源分配問題(NFV Single Node Resource Allocation,NFV-SNRA)。
NFV將網(wǎng)絡(luò)功能從專用網(wǎng)元設(shè)備中抽象出來,以軟件形式實現(xiàn),并部署在通用標(biāo)準(zhǔn)服務(wù)器上,從而實現(xiàn)網(wǎng)絡(luò)功能的靈活部署。NFV架構(gòu)[3]由三部分構(gòu)成:網(wǎng)絡(luò)服務(wù)、網(wǎng)絡(luò)功能虛擬化基礎(chǔ)設(shè)施(Network Functions Virtualization Infrastructure,NFVI)以及網(wǎng)絡(luò)功能虛擬化管理和協(xié)調(diào)控制器。
運(yùn)營商通過軟件方式定制網(wǎng)絡(luò)功能,通過組織一系列VNFs 實現(xiàn)特定的網(wǎng)絡(luò)服務(wù),從而更靈活快速地部署新服務(wù)。NFV 架構(gòu)使用通用標(biāo)準(zhǔn)服務(wù)器作為統(tǒng)一計算平臺,運(yùn)營商能夠更靈活高效地利用虛擬化基礎(chǔ)設(shè)施物理資源[4]。
目前NFV已被學(xué)術(shù)界廣泛接受,具有美好的前景,但NFV技術(shù)整體上仍處于起步階段,在性能、資源分配等方均面臨挑戰(zhàn)。
2.1.1 性能
VNFs通常運(yùn)行在虛擬環(huán)境中,相較宿主設(shè)備,虛擬設(shè)備(例如,虛擬磁盤、虛擬網(wǎng)卡)的訪問性能明顯下降。Passthrough 技術(shù)可以支持虛擬機(jī)直接訪問外圍設(shè)備,提高虛擬機(jī)對外圍設(shè)備的訪問性能。但該技術(shù)下,設(shè)備以獨(dú)占方式分配給某個客戶域,無法在多客戶域之間共享。SR-IOV[5](Single Root I/O Virtualization)規(guī)范定義了一個標(biāo)準(zhǔn)化的硬件虛擬化機(jī)制,原生地支持多客戶機(jī)共享物理設(shè)備,使設(shè)備資源得到充分利用。
網(wǎng)絡(luò)I/O 能力是VNF 性能的核心關(guān)鍵。傳統(tǒng)模式中,Linux 內(nèi)核態(tài)網(wǎng)卡驅(qū)動基于異步中斷模式處理網(wǎng)絡(luò)讀寫事件。DPDK 則采用用戶態(tài)網(wǎng)卡驅(qū)動基于輪詢(PMD)或者輪詢中斷混雜模式處理網(wǎng)絡(luò)讀寫事件。相較中斷方式,輪詢方式避免了上下文切換造成的性能損失。另一方面,用戶態(tài)PMD 驅(qū)動將網(wǎng)卡設(shè)備直接映射到用戶空間,通過旁路Linux內(nèi)核網(wǎng)絡(luò)協(xié)議棧,減少內(nèi)存拷貝次數(shù),進(jìn)而提升報文轉(zhuǎn)發(fā)能力。
Passthrough 技術(shù)、SR-IOV 技術(shù)以及DPDK 從多個不同方面縮小了基于通用設(shè)備的VNF與專用電信設(shè)備之間的性能差距。
2.1.2 資源分配
網(wǎng)絡(luò)功能虛擬化資源分配問題[6-9](Network Functions Virtualization Resource Allocation,NFV-RA)一直是NFV發(fā)展過程中的研究熱點(diǎn)之一。相關(guān)研究以QoS、利潤最高、容錯、負(fù)載平衡、節(jié)省能源等為目標(biāo),同時考慮性能、能耗、安全等多方面因素,解決構(gòu)建虛擬網(wǎng)絡(luò)功能鏈[10-12]、部署虛擬網(wǎng)絡(luò)功能[13-15]、調(diào)度虛擬網(wǎng)絡(luò)功能[16]等方面的資源分配問題。
其中,部署虛擬網(wǎng)絡(luò)功能階段解決如何將VNFs 映射到NFVI 中的物理節(jié)點(diǎn),虛擬網(wǎng)絡(luò)功能部署問題已被證明是NP 難問題。在網(wǎng)絡(luò)規(guī)模較小時,使用線性規(guī)劃能夠得到最優(yōu)解。但網(wǎng)絡(luò)規(guī)模越大,線性規(guī)劃模型越復(fù)雜,無法在可接受時間內(nèi)得到全局最優(yōu)解。使用啟發(fā)式算法或元啟發(fā)式算法能夠在線性時間內(nèi)得到近似最優(yōu)解。
為解決網(wǎng)絡(luò)功能部署和編排問題,Chi 等[17]提出一種基于3-tire 樹形結(jié)構(gòu)的VNF 部署和流量調(diào)度算法。Cohen等[18]對VNF部署問題進(jìn)行線性約束建模,提出一種近似最優(yōu)的部署算法;Sang 等[19]將VNF 部署問題規(guī)約為集合覆蓋問題,基于貪心算法提出一種可驗證的高效部署方案。段通等[20]考慮硬件加速資源,提出一套VNF硬件加速資源編排機(jī)制。然而,上述研究都是從編排和部署方案層面分析NFV 資源分配問題,卻鮮有涉及VNF 具體部署環(huán)節(jié),即對于部署到同一個物理節(jié)點(diǎn)上的所有VNFs,如何更高效地共享該節(jié)點(diǎn)的物理資源。畢軍等[21]考慮VNF并行加速,根據(jù)網(wǎng)絡(luò)功能之間的依賴性,提出一個高性能編排框架,但仍屬于編排設(shè)計層面,未解決具體的節(jié)點(diǎn)資源分配問題。
本文考慮實際部署環(huán)節(jié),針對單物理節(jié)點(diǎn)部署多VNFs場景,使用DPDK加速虛擬網(wǎng)絡(luò)功能,研究虛擬網(wǎng)絡(luò)功能的資源分配問題,使用最少的物理資源滿足所有VNFs性能需求。
通過實驗深入分析DPDK 對虛擬網(wǎng)絡(luò)功能的加速效果,測試內(nèi)核協(xié)議棧方式和DPDK方式的網(wǎng)絡(luò)包轉(zhuǎn)發(fā)性能及CPU資源消耗情況。
基于2 臺配備有兩塊Intel?Xeon?E3-1220 v3 @3.10 GHz CPU,32 GB 內(nèi)存和一塊雙端口Intel?82599 10 Gbit網(wǎng)卡的服務(wù)器組成實驗平臺,進(jìn)行性能測試。虛擬機(jī)以Passthrough 方式獲得網(wǎng)卡的訪問權(quán)限。內(nèi)核協(xié)議棧發(fā)包程序采用Linux 內(nèi)核發(fā)包模塊pktgen,內(nèi)核協(xié)議棧收包程序基于libpcap實現(xiàn);DPDK收發(fā)包程序基于DPDK-16.11.3實現(xiàn)。
圖1(a)為普通虛擬網(wǎng)絡(luò)功能配置結(jié)構(gòu),圖1(b)為經(jīng)過Passthrough、DPDK加速后的虛擬網(wǎng)絡(luò)功能配置結(jié)構(gòu)。普通配置結(jié)構(gòu)中,物理網(wǎng)卡和虛擬網(wǎng)卡均由Linux內(nèi)核驅(qū)動控制;后者以Passthrough方式將網(wǎng)卡直接分配給虛擬機(jī),并通過DPDK用戶態(tài)驅(qū)動將網(wǎng)卡直接映射到用戶空間。
網(wǎng)絡(luò)包發(fā)送測試結(jié)果如圖2所示。
圖1 (a) 普通配置
圖1 (b) 經(jīng)Passthrough和DPDK加速的配置
圖2 不同包長的網(wǎng)絡(luò)包發(fā)送性能
對比虛擬機(jī)中DPDK 和pktgen 的網(wǎng)絡(luò)包速發(fā)送速率。不同包長情況下,pktgen 發(fā)送速率均處于較低水平;而DPDK發(fā)送速率在不同包長情況下變化顯著。包長越小,pktgen與DPDK的性能差距越明顯。發(fā)送64 B小包時,DPDK 網(wǎng)絡(luò)包發(fā)送速率為pktgen 的7.7 倍。發(fā)送1 500 B 大包時,DPDK 發(fā)送速率提升約2.5%。實驗結(jié)果表明,在虛擬機(jī)中,包長越小,DPDK對網(wǎng)絡(luò)包發(fā)送性能提升越大,當(dāng)包長達(dá)到最大時,二者性能間幾乎不存在差距。
對比物理機(jī)中DPDK 的網(wǎng)絡(luò)包發(fā)送速率與10 Gb鏈路的理論帶寬值。物理機(jī)中DPDK 的發(fā)送速率接近10 Gb鏈路的理論帶寬。最差情況是發(fā)送64 B小包,此時DPDK的發(fā)送速率為10 Gb鏈路理論帶寬的97.2%。實驗結(jié)果表明,物理機(jī)中DPDK 的發(fā)送速度幾乎達(dá)到10 Gb鏈路的理論帶寬。
圖3 顯示libpcap 與DPDK 在不同環(huán)境、不同包長情況下的網(wǎng)絡(luò)包接收速率。與圖2 中規(guī)律相似,相較libpcap,DPDK 處理小包的優(yōu)勢明顯。在虛擬機(jī)中,DPDK接收64 B小包速率是libpcap的18倍。
圖3 不同包長的網(wǎng)絡(luò)包接收性能
上述實驗結(jié)果表明,DPDK能夠顯著提升虛擬網(wǎng)絡(luò)功能的網(wǎng)絡(luò)包轉(zhuǎn)發(fā)性能。
測試pktgen和DPDK的CPU資源消耗情況,對比在虛擬環(huán)境中不同包長、不同發(fā)送速率情況下,兩種方式的CPU占用率。
如圖4所示,pktgen的CPU占用率隨發(fā)送速率增加而升高,當(dāng)發(fā)送速率超過9.95 kp/s 時,其CPU 占用率為100%;DPDK的CPU占用率始終為100%。
圖4 pktgen和DPDK的CPU占用率
綜上,DPDK 能夠更好地處理高負(fù)載網(wǎng)絡(luò),但在處理低負(fù)載網(wǎng)絡(luò)時,CPU 有效利用率低?;谝陨习l(fā)現(xiàn),針對不同網(wǎng)絡(luò)負(fù)載大小,采用不同方式(Linux 內(nèi)核或DPDK)實現(xiàn)的VNF 實例。負(fù)載較低時,采用傳統(tǒng)基于Linux內(nèi)核實現(xiàn)的實例,使用較低CPU資源即可滿足網(wǎng)絡(luò)負(fù)載;負(fù)載較高時,傳統(tǒng)方式VNF實例的CPU占用率升高,并發(fā)生頻繁丟包,此時切換采用基于DPDK 實現(xiàn)的VNF實例。
針對單物理節(jié)點(diǎn)部署多VNFs場景,如圖5所示,在考慮利用DPDK加速虛擬網(wǎng)絡(luò)功能的基礎(chǔ)上,提出一種基于貪心算法的啟發(fā)式資源分配方法,保證虛擬網(wǎng)絡(luò)功能性能的同時,降低CPU資源消耗。
圖5 單節(jié)點(diǎn)部署多個VNFs
針對網(wǎng)絡(luò)流量負(fù)載的潮汐現(xiàn)象,提出一種基于網(wǎng)絡(luò)負(fù)載的VNF 實例自動切換方案,根據(jù)實時網(wǎng)絡(luò)負(fù)載自動切換VNF實例,滿足網(wǎng)絡(luò)負(fù)載需求的同時,降低CPU計算資源消耗。
DPDK 能顯著提升VNF 的轉(zhuǎn)發(fā)性能,其CPU 親和性特點(diǎn)要求特定任務(wù)只在特定CPU 核上運(yùn)行。然而,普通部署方法中,虛擬CPU 核與物理CPU 核之間的對應(yīng)關(guān)系具有不確定性,這導(dǎo)致DPDK特定任務(wù)實際綁定的物理CPU 核不固定,違背了DPDK 的CPU 親和性原則,從而造成性能損失。
基于上述發(fā)現(xiàn),提出一種基于貪心算法的啟發(fā)式資源分配算法,確定虛擬CPU與物理CPU的對應(yīng)關(guān)系,并在保證虛擬網(wǎng)絡(luò)功能性能需求的同時,將CPU 資源占用降低到最小。
4.1.1 問題描述
NFV-SNRA問題相關(guān)定義如下:
(1)F={f1,f2,…,fm} ,F(xiàn) 表示部署在一個物理節(jié)點(diǎn)上的所有虛擬網(wǎng)絡(luò)功能集合。|F|=m ,表示該物理節(jié)點(diǎn)共部署m 個虛擬網(wǎng)絡(luò)功能。
(2)R={r1,r2,…,rn},R 表示物理節(jié)點(diǎn)各CPU 核的計算資源量,可用CPU核數(shù)為n 個。
(5)Xij表示是否將虛擬網(wǎng)絡(luò)功能fj部署在CPU核i 上,1表示是,0表示否。
(6)L={l1,l2,…,ln},L 表示一個可行解,li表示CPU核i 上部署的虛擬網(wǎng)絡(luò)功能集合。
(7)E(i)表示CPU 核i 上是否部署了虛擬網(wǎng)絡(luò)功能。若CPU 核i 沒有被分配給任何虛擬網(wǎng)絡(luò)功能,則E(i)為0;否則為1,表示CPU 核i 上至少部署了一個虛擬網(wǎng)絡(luò)功能。
NFV-SNRA 所解決的問題是,在滿足所有VNF 需求的前提下占用最少CPU資源,形式化描述如下:
目標(biāo):
滿足:
其中,公式(3)表示,部署在CPU核i 上所有虛擬網(wǎng)絡(luò)功能的CPU 需求量之和不超過該CPU 核的CPU 資源量。公式(4)表示,所有虛擬網(wǎng)絡(luò)功能都應(yīng)得到資源分配,即滿足所有虛擬網(wǎng)絡(luò)功能的CPU資源需求。目標(biāo)是使用最少CPU核。
4.1.2 困難性分析
集合覆蓋問題是一個經(jīng)典NP 難問題,通過將集合覆蓋問題規(guī)約到NFV-SNRA 問題,證明NFV-SNRA 問題是NP難類型。
集合覆蓋問題中,集合U={e1,e2,…,em}共有m 個元素,Φ={u1,u2,…,un}是集合U 的n 個子集,Φ 中所有子集的并集等于集合U 。其目標(biāo)是使用最少子集ui,使其并集等于U 。
以下證明NFV-SNRA是NP難問題。
證明 給定一個集合覆蓋問題實例(U,Φ),構(gòu)造一個NFV-SNRA問題實例(F,S,C)。對集合U 中的每個元素ej,構(gòu)造一個虛擬網(wǎng)絡(luò)功能fj。對Φ 中的每個子集ui,構(gòu)造一個VNF集合li,表示在CPU核i 上部署集合li中的所有VNFs。集合S 表示CPU 核負(fù)載情況,si表示CPU 核i 當(dāng)前可用資源量。NFV-SNRA 問題的目標(biāo)是,使用最少CPU 核滿足所有VNFs 需求,即使用最少集合li覆蓋所有fj。這與集合覆蓋問題使用最少子集ui覆蓋U 中所有元素ej的目標(biāo)一致。由此證明,NFV-SNRA是NP難問題。
4.1.3 基于貪心算法的啟發(fā)式資源分配算法
對于集合覆蓋問題,貪心算法能夠在多項式時間內(nèi)得到近似最優(yōu)解,本節(jié)提出一種基于貪心算法的啟發(fā)式資源分配算法。
假設(shè),某物理節(jié)點(diǎn)需部署m 個虛擬網(wǎng)絡(luò)功能,用集合F 表示。物理節(jié)點(diǎn)當(dāng)前CPU 負(fù)載為S0。各虛擬網(wǎng)絡(luò)功能的最大CPU 占用率為C0。集合L 表示CPU 資源分配方案,初始值為空。集合U 表示未被分配的虛擬網(wǎng)絡(luò)功能集合,初始值為F。
基于貪心算法,每次選擇包含未分配VNFs 最多的集合,直到所有VNFs都得到資源分配。
算法1 VNF-SNRA啟發(fā)式資源分配算法
輸入:虛擬網(wǎng)絡(luò)功能集F、虛擬網(wǎng)絡(luò)功能最大CPU 占用率C0、物理節(jié)點(diǎn)CPU核負(fù)載情況S0。
輸出:VNF資源分配方案L。
1. 令集合Φ 為集合F 的所有子集集合。
2. 對于Φ 中的元素uk,若所有CPU核si都無法滿足uk中所有VNFs的CPU需求之和,則將uk從Φ 中移除。
3.令U 為未分配的VNFs 集合。初始化U=F。令li∈L,i=1,2,…,n 為空集。
4. while U ≠? do
5. 選擇元素個數(shù)最多的子集u*,依據(jù)S0判斷是否存在CPU 核能夠滿足u*中所有VNFs 的需求,若存在一個或多個滿足需求的CPU核,選擇數(shù)值最小的核i*。
6. 令li*=u*,更新
7. 更新集合Φ,刪除Φ中所有包含子集u*中元素的子集。
8.更新集合U ,移除子集u*所包含的所有元素。
9.end while
由3.2節(jié)實驗結(jié)果可知,網(wǎng)絡(luò)負(fù)載較低時,傳統(tǒng)方式在保證VNF性能的同時,消耗CPU資源更少,但隨著網(wǎng)絡(luò)負(fù)載升高,傳統(tǒng)方式將消耗更多CPU資源,同時會產(chǎn)生可靠性問題,例如頻繁丟包;而DPDK 能更加可靠地處理高負(fù)載網(wǎng)絡(luò),但在網(wǎng)絡(luò)負(fù)載較低時,CPU 有效利用率低。
綜上所述,考慮到網(wǎng)絡(luò)功能流量負(fù)載的潮汐現(xiàn)象,提出一種基于網(wǎng)絡(luò)負(fù)載的VNF實例自動切換方案。網(wǎng)絡(luò)負(fù)載較低時,采用基于Linux 內(nèi)核方式的VNF 實例,以較少CPU資源處理低負(fù)載網(wǎng)絡(luò)。當(dāng)網(wǎng)絡(luò)負(fù)載超過一定閾值時,使用DPDK方式的VNF實例,高速處理網(wǎng)絡(luò)包?;诰W(wǎng)絡(luò)負(fù)載的VNF實例自動切換方案相關(guān)定義如下:(1)Ht={},表示t 時刻虛擬網(wǎng)絡(luò)功能fj的網(wǎng)絡(luò)負(fù)載。
(2)H*={} ,表示虛擬網(wǎng)絡(luò)功能fj的實例切換閾值。
切換VNF 實例后,該VNF 對應(yīng)的CPU 資源需求量隨之改變。更新集合C 后,根據(jù)算法1 對該節(jié)點(diǎn)的VNFs重新進(jìn)行資源分配。
對單物理節(jié)點(diǎn)部署多VNFs 進(jìn)行模擬實驗,評估資源分配算法和自動切換方案的效果?;趦膳_配備有兩塊Intel?Xeon?E3-1220 v3@3.10 GHz CPU,32 GB內(nèi)存,一塊雙端口Intel?82599 10 Gbit網(wǎng)卡和一塊四端口Intel?I350 1 Gbit網(wǎng)卡的服務(wù)器組成實驗平臺,進(jìn)行模擬實驗。服務(wù)器運(yùn)行環(huán)境為CentOS7,使用KVM 虛擬化技術(shù)運(yùn)行VNF。
在單節(jié)點(diǎn)啟發(fā)式資源分配算法實驗中,以一個物理節(jié)點(diǎn)部署6個VNF為例,每個VNF實例分別部署在獨(dú)立的虛擬機(jī)中。每個虛擬機(jī)分配4個CPU核,以Passthrough方式訪問網(wǎng)卡端口,其中VNF1和VNF2對應(yīng)萬兆網(wǎng)口,VNF3~VNF6 對應(yīng)千兆網(wǎng)口。以網(wǎng)絡(luò)包發(fā)送速率作為VNF性能測量指標(biāo)。
實驗采用普通部署方法和算法1兩種方式進(jìn)行VNFs部署。對兩種不同的部署方法,分別進(jìn)行10次實驗,每次實驗持續(xù)10 min,記錄VNFs實例的網(wǎng)絡(luò)包發(fā)送速率,取10次實驗數(shù)據(jù)的平均值。
實驗結(jié)果如圖6 所示,使用啟發(fā)式資源分配算法,VNF1的性能提高了30%,VNF2、VNF3和VNF4的性能提高了10%。普通部署方法中,由宿主操作系統(tǒng)決定虛擬CPU與物理CPU的綁定關(guān)系,但這種綁定并不固定,在綁定關(guān)系發(fā)生變化時,會產(chǎn)生上下文切換、cache 失效,從而造成性能損失。VNF5 和VNF6 的性能略有下降,但都不超過3%。需要說明的一點(diǎn)是,凡是完成部署的VNFs 實例,分配給VNFs 實例的CPU 資源總能滿足其當(dāng)前所需。
圖6 兩種部署方案的VNF網(wǎng)絡(luò)包發(fā)送性能
在VNF 實例自動切換方案實驗中,發(fā)送端使用基于DPDK-16.11.3 實現(xiàn)的發(fā)包工具,模擬潮汐規(guī)律產(chǎn)生網(wǎng)絡(luò)流量,發(fā)送流量從100~600 kp/s潮汐變化,如圖7所示。接收端使用基于libpcap 和DPDK 實現(xiàn)的收包工具模擬VNF 實例,記錄虛擬網(wǎng)絡(luò)功能實例的網(wǎng)絡(luò)包接收速率、丟包率以及CPU占用率。
圖7 發(fā)送端發(fā)送潮汐流量
分別進(jìn)行以下三組實驗:
(1)VNF實例全部采用libpcap方式實現(xiàn);
(2)VNF實例全部采用DPDK方式實現(xiàn);
(3)VNF實例根據(jù)流量負(fù)載自動切換。
如表1 所示,數(shù)據(jù)包長為1 500 B 時,libpcap的最大接收速率為287 656 p/s,僅為10 Gb 鏈路理論帶寬的35.0%;當(dāng)數(shù)據(jù)包長為64 B 時,libpcap 的最大接收速率756 550 p/s 僅為10 Gb 鏈路理論帶寬的5.1%。本實驗以300 kp/s 作為切換閾值,確保VNF 實例能夠處理300 kp/s 以上的高速網(wǎng)絡(luò)。切換閾值可以根據(jù)具體場景、具體目標(biāo)進(jìn)行設(shè)置。
表1 libpcap網(wǎng)絡(luò)包接收性能
圖8 顯示接收端使用libpcap 方式VNF 實例的收包情況,負(fù)載為500~600 kp/s區(qū)間時,平均丟包率為16.9%;負(fù)載為100~200 kp/s區(qū)間時,平均丟包率為1.7%。
圖8 接收端使用libpcap實現(xiàn)的VNF實例
圖9 顯示接收端使用DPDK 方式VNF 實例的收包情況,在實驗期間均未發(fā)生網(wǎng)絡(luò)包丟失。
圖9 接收端使用DPDK實現(xiàn)的VNF實例
圖10 顯示接收端基于網(wǎng)絡(luò)負(fù)載自動切換VNF實例的收包情況。實驗中,切換閾值設(shè)為300 kp/s。網(wǎng)絡(luò)負(fù)載在100~200 kp/s區(qū)間時,采用libpcap方式實現(xiàn)的VNF實例;負(fù)載在500~600 kp/s 區(qū)間時,采用DPDK 方式實現(xiàn)的VNF 實例。實驗結(jié)果顯示,在高負(fù)載區(qū)間內(nèi)未發(fā)生網(wǎng)絡(luò)包丟失。
圖10 接收端自動切換VNF實例
圖11 為三種方式的CPU資源消耗情況。libpcap方式下,CPU 占用率隨網(wǎng)絡(luò)負(fù)載線性變化。DPDK 方式下,CPU 占用率始終為100%。自動切換方式下,使用libpcap方式VNF 實例時,CPU 占用率較低,使用DPDK方式VNF實例時,CPU占用率為100%。
圖11 三種方式的CPU占用率
基于上述實驗結(jié)果,得出以下結(jié)論:
(1)網(wǎng)絡(luò)負(fù)載較高時,libpcap方式的VNF實例會消耗更多CPU資源,且伴隨頻繁丟包現(xiàn)象。
(2)DPDK 方式實現(xiàn)的VNF 實例CPU 占用率始終為100%,在網(wǎng)絡(luò)負(fù)載較低時浪費(fèi)CPU資源。
(3)自動切換方案在網(wǎng)絡(luò)負(fù)載較低時采用libpcap方式的VNF 實例,以較低CPU 資源消耗處理低負(fù)載網(wǎng)絡(luò);網(wǎng)絡(luò)負(fù)載較高時,采用DPDK 方式的VNF 實例,以較高CPU資源消耗高效處理高網(wǎng)絡(luò)負(fù)載,相較libpcap,性能提升了20%。
綜上所述,本文所提基于網(wǎng)絡(luò)負(fù)載的VNF 實例自動切換方案能夠在保證VNF 報文處理性能的同時,降低CPU資源消耗。
首先分析了NFV技術(shù)在性能和資源分配方面遇到的挑戰(zhàn)。然后,通過實驗測試了DPDK 對VNF 的加速效果及對CPU 資源的利用情況。實驗結(jié)果顯示,在虛擬環(huán)境中使用DPDK,網(wǎng)絡(luò)包接收速率是傳統(tǒng)方法的18倍,網(wǎng)絡(luò)包發(fā)送速率是傳統(tǒng)方法的7.7倍。
在此基礎(chǔ)上,針對單物理節(jié)點(diǎn)部署多VNFs場景,提出了一種基于貪心算法的啟發(fā)式資源分配算法。實驗結(jié)果顯示,所提算法能夠顯著提升VNF實例性能,提升10%~30%。
考慮到網(wǎng)絡(luò)負(fù)載的潮汐現(xiàn)象,提出了一種基于網(wǎng)絡(luò)負(fù)載的VNF 實例自動切換方案。實驗結(jié)果顯示,該方案能夠在保證VNF 報文處理性能的同時,降低CPU 資源消耗,在高網(wǎng)絡(luò)負(fù)載情況下,VNF性能較普通方式提高了20%。
總的來說,本文以高效利用物理節(jié)點(diǎn)CPU 計算資源為優(yōu)化目標(biāo)進(jìn)行方法設(shè)計。在未來的工作中,將會引入存儲資源、帶寬資源等其他資源因素,進(jìn)行更全面的資源分配研究。