范宏偉,,
(國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心,鄭州 450002)
為了滿足未來網(wǎng)絡(luò)的發(fā)展需求,由運營商主導(dǎo)發(fā)起的新型網(wǎng)絡(luò)技術(shù)——網(wǎng)絡(luò)功能虛擬化(Network Function Virtualization,NFV)隨之興起。在NFV架構(gòu)中,網(wǎng)絡(luò)功能由軟件實現(xiàn),并以虛擬網(wǎng)絡(luò)功能(Virtual Network Function,VNF)的形式部署在通用架構(gòu)的服務(wù)器中,從而實現(xiàn)了網(wǎng)絡(luò)功能與硬件設(shè)備的解耦合,加快網(wǎng)絡(luò)功能的部署,促進了網(wǎng)絡(luò)功能的創(chuàng)新。然而,基于軟件實現(xiàn)的VNF在數(shù)據(jù)包處理方面性能較差,和專用設(shè)備相比,大概有30%~40%的性能損失[1],是NFV部署和發(fā)展的主要瓶頸之一。因此,有必要對VNF的數(shù)據(jù)包處理進行加速。
目前,針對VNF數(shù)據(jù)包處理性能較差的問題,主要有軟件加速和硬件加速2類解決方案。其中,軟件方案通過減少虛擬化和I/O開銷[2-4]來加速數(shù)據(jù)包處理,但單純的軟件方案難以滿足不斷增長的數(shù)據(jù)包處理需求。硬件加速方案是指將VNF部分處理任務(wù)卸載到硬件中來,利用硬件的高性能來提升VNF的數(shù)據(jù)處理速率。與軟件相比,當同樣的數(shù)據(jù)包處理任務(wù)由硬件來完成時,可以大幅提高NFV系統(tǒng)吞吐率并減少處理時延。在NFV背景下,要求承載VNF的加速硬件具有可編程性,由于現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)可以根據(jù)需求改變邏輯功能,成為了業(yè)內(nèi)不少研究所采用的硬件加速平臺。文獻[5]提出了一種基于FPGA的NFV平臺設(shè)計,利用FPGA實現(xiàn)完整的網(wǎng)絡(luò)功能,在滿足靈活性要求的同時,可獲得比擬專用硬件設(shè)備的性能。文獻[6]提出的OpenANFV架構(gòu)在OpenStack的云環(huán)境下,實現(xiàn)特定VNF的加速性能最大化。文獻[7]提出的ClickNP架構(gòu)使用類C的高級語言模塊化編程FPGA,并和CPU細粒度分工合作,實現(xiàn)高性能和低時延的網(wǎng)絡(luò)功能。文獻[8]提出的SLA-NFV架構(gòu)專注于實現(xiàn)用戶的服務(wù)水平協(xié)議(Service Level Agreement,SLA),通過FPGA加速平臺增強NFV性能。綜上,現(xiàn)有的基于FPGA的硬件加速方案針對不同的VNF進行加速時,加速器的設(shè)計與VNF之間形成了“綁定”關(guān)系,與NFV分層解耦的思想相違背,而且FPGA的編程難度相對較高,增加了VNF開發(fā)者的負擔,不利于NFV生態(tài)系統(tǒng)的構(gòu)建。
基于以上分析,為實現(xiàn)VNF數(shù)據(jù)包處理加速,本文提出一種基于FPGA的VNF通用硬件加速器 (General Hardware Accelerator,GHA)架構(gòu)。通過設(shè)計能夠承載多種VNF加速的GHA架構(gòu),并采用FPGA動態(tài)局部重構(gòu)的方法在加速板卡上獨立動態(tài)地部署加速器,保證整體架構(gòu)的靈活性和功能之間的獨立性。采用基于改進離散粒子群優(yōu)化(Discrete Particle Swarm Optimization,DPSO)的分配策略,為數(shù)據(jù)中心內(nèi)的VNF分配虛擬加速資源,提升有限加速資源的收益。最后,基于NetFPGA-10G[9]板卡實現(xiàn)GHA加速平臺的原型,并對算法的有效性進行仿真測試。
本文的設(shè)計目標是設(shè)計一種基于FPGA的VNF通用加速架構(gòu)GHA,能夠靈活承載不同的VNF,同時保證較高的數(shù)據(jù)處理性能,并實現(xiàn)對硬件資源的高效使用。因此,GHA應(yīng)當遵循以下3個設(shè)計目標:
1)通用、靈活的加速架構(gòu)。對于GHA,要能夠靈活地支持網(wǎng)絡(luò)中多樣的數(shù)據(jù)包協(xié)議,除了最基本的IPv4協(xié)議外,還能處理STT和VxLAN等新型數(shù)據(jù)包格式,實現(xiàn)對不同VNF數(shù)據(jù)處理的承載,保證架構(gòu)的通用性。架構(gòu)的通用性易于實現(xiàn)不同VNF對加速平臺的調(diào)用。
2)支持較高的數(shù)據(jù)包處理性能。在網(wǎng)絡(luò)中,通用性和高性能之間往往存在矛盾,為了實現(xiàn)較強的通用性,難免會降低硬件的處理性能。因此,在設(shè)計上需要實現(xiàn)通用性和高性能之間的平衡,保證在引入GHA加速架構(gòu)后,能夠有效提升VNF的數(shù)據(jù)處理速率,滿足用戶需求。
3)對硬件資源的高效使用?;贔PGA的GHA架構(gòu)要充分利用FPGA的動態(tài)可重構(gòu)技術(shù),可獨立配置加速器,為不同生命周期的VNF實現(xiàn)加速,彼此之間互不影響。被加速的VNF生命周期所占用的硬件資源能被重新使用,從而保證對硬件資源利用的高效性。
根據(jù)以上設(shè)計目標,基于FPGA硬件平臺的GHA整體架構(gòu)如圖1所示。GHA架構(gòu)將整個FPGA板卡分為一個靜態(tài)邏輯區(qū)和多個局部可重構(gòu)區(qū)(Partially Reconfigurable Region,PRR)。其中,靜態(tài)邏輯區(qū)在運行時不用重新配置,將不同VNF的共享模塊部署在靜態(tài)邏輯區(qū),包括GHA架構(gòu)的基本組件——解析單元,以及負責通信與數(shù)據(jù)存儲的相關(guān)資源。每個PRR內(nèi)包含相同數(shù)量的邏輯單元和存儲單元,彼此間通過總線實現(xiàn)互連,從而構(gòu)成處理單元,也就是GHA架構(gòu)的另一個基本組件。GHA架構(gòu)在單塊FPGA板卡中可以包含多個處理單元,用于不同VNF的數(shù)據(jù)處理,彼此間相互獨立。不同VNF處理單元內(nèi)包含的PRR個數(shù)由VNF的類型和配置信息條目的數(shù)量所決定。當舊的VNF生命周期結(jié)束,有新的VNF加速請求到達,相應(yīng)處理單元內(nèi)的PRR資源將被釋放,用來構(gòu)建新VNF的處理單元。解析單元與VNF相應(yīng)的處理單元共同組成GHA架構(gòu)中的加速器,負責卸載到硬件部分的數(shù)據(jù)包處理任務(wù),加速器的配置信息生成和VNF的剩余功能部分則由軟件完成。
圖1 GHA整體架構(gòu)
VNF數(shù)據(jù)包處理流水線主要由“解析-匹配-動作”這3個階段組成。GHA基本組件分為解析單元和處理單元2個部分,實現(xiàn)對數(shù)據(jù)包流水線3個階段的處理。為了支持多種類型的VNF,解析單元采用可編程的解析器結(jié)構(gòu),根據(jù)用戶進行配置,識別不同的包頭格式,對到達GHA架構(gòu)的數(shù)據(jù)包進行解析[10-11]。處理單元對解析結(jié)果進行匹配、查找后,利用可編程動作處理器[12-13],根據(jù)VNF配置需求對數(shù)據(jù)包進行動作處理。GHA相對固化簡單的流水線架構(gòu),能夠充分利用硬件的高性能特點,保證了加速器較高的數(shù)據(jù)包處理速率。GHA結(jié)合FPGA的動態(tài)重構(gòu)和可編程特性,通過對2個組件的功能設(shè)計,將“解析-匹配-動作”這一結(jié)構(gòu)[12]應(yīng)用到VNF加速場景中,能夠承載諸多類型VNF的部分數(shù)據(jù)包處理任務(wù),實現(xiàn)了一定的通用性,而且對于不同的VNF,僅需配置處理單元內(nèi)相應(yīng)的表項,不需要重新設(shè)計加速器的內(nèi)部結(jié)構(gòu),降低了VNF加速器設(shè)計的復(fù)雜性。
解析單元整體結(jié)構(gòu)如圖2所示。解析單元包含類型域提取模塊、類型域查找模塊、匹配域提取模塊和匹配域組合模塊4個模塊。當數(shù)據(jù)包到達后,類型域提取模塊讀取RAM1中存放的初始化類型域偏移信息,將初始狀態(tài)類型域信息提取出來,交給類型域查找模塊。類型域查找模塊在TCAM1中存放的類型域表項信息進行查找,根據(jù)查找結(jié)果提取出存放在RAM2中的相應(yīng)匹配域和下一狀態(tài)類型域的偏移量信息。其中,匹配域偏移量信息送到匹配域提取模塊,該模塊根據(jù)偏移量提取相應(yīng)匹配域,而類型域提取模塊則讀取下一狀態(tài)類型域的偏移量信息,進入下一狀態(tài)類型域的提取。整個提取過程將重復(fù)執(zhí)行,直到提取出所有的類型域和相應(yīng)匹配域信息。最后將全部的匹配域信息送入匹配域組合模塊,由該模塊將其組合成包頭域,作為該單元輸出結(jié)果,送往處理單元完成剩余的數(shù)據(jù)包處理環(huán)節(jié)。
圖2 解析單元整體結(jié)構(gòu)
處理單元整體結(jié)構(gòu)如圖3所示。處理單元包含匹配域選擇模塊、匹配模塊和動作執(zhí)行器。當數(shù)據(jù)包的包頭域進入處理單元后,首先由匹配域選擇模塊根據(jù)RAM3中存放的VNF需要的匹配域信息,對包頭域內(nèi)的信息進行篩選,然后將篩選結(jié)果送入匹配模塊。匹配模塊包括匹配、查找2個部分。首先該模塊讀取TACM2中存放的VNF配置的匹配信息,根據(jù)查找結(jié)果讀取SRAM中存放的相應(yīng)動作字段。動作執(zhí)行器根據(jù)動作字段完成相應(yīng)報文的添加、刪除和修改等動作。
圖3 處理單元整體結(jié)構(gòu)
作為VNF通用加速架構(gòu),GHA需要部署在NFV系統(tǒng)中,根據(jù)需求為不同類型的VNF加速。將GHA架構(gòu)的FPGA板卡作為加速硬件(Acceleration Hardware,AH)資源部署到NFV基礎(chǔ)設(shè)施(NFV Infrastructure,NFVI)中,通過PCIe總線接入到通用服務(wù)器中。
為了使VNF能夠靈活地調(diào)用硬件加速資源,如圖4所示,利用虛擬化技術(shù)將AH資源轉(zhuǎn)化為虛擬加速資源。根據(jù)GHA架構(gòu)在FPGA板卡上的實現(xiàn)方式,將板卡中的PRR作為最小粒度的虛擬加速單元;VNF的加速資源需求同樣以PRR為單位進行量化,衡量加速資源與VNF之間的供求關(guān)系。因此,為了提高AH資源利用率,所劃分的PRR內(nèi)資源數(shù)量十分關(guān)鍵,要根據(jù)具體的FPGA板卡資源總量和不同場景下的VNF需求進行確定。
圖4 GHA在NFV中的部署
將硬件加速資源虛擬化后,為了減少管理開銷,并降低結(jié)構(gòu)的復(fù)雜性,可以由虛擬基礎(chǔ)設(shè)施管理器(Virtual Infrastructure Manager,VIM)負責加速資源的管理和分配[14]。VIM通過南向接口與Hypervisor交互,實現(xiàn)對虛擬加速資源的管理,動態(tài)檢測加速資源的數(shù)量和狀態(tài)。當加速資源被分配或者釋放時,VIM會記錄資源的上升和下降,并保存到加速資源管理清單中。有新的加速資源加入時,VIM對其資源數(shù)量、能力和鏈路連接進行初始化和記錄。此外,VIM要對加速資源進行全方面的維護,負責資源的安裝和拆卸,升級和軟件更新。VIM要對加速資源的運行情況進行檢測,當硬件發(fā)生故障時,具有啟動恢復(fù)能力。
VNF管理功能塊(VNF Management,VNFM)負責VNF實例的生命周期管理,包括在部署過程中對所需的虛擬資源的支持。為了實現(xiàn)VNF對加速資源的調(diào)用,需要對當前VNFM規(guī)范進行擴展,將虛擬加速資源包含其中。當有新的VNF加速請求到達,VNFM會與VIM之間進行通信,將VNF的加速資源請求與VIM加速資源管理清單中的可用加速資源相匹配。相比于存儲和計算資源,硬件加速資源的數(shù)量有限,不能滿足當前時刻所有VNF的加速請求,要根據(jù)VNF加速資源請求的優(yōu)先級,盡可能滿足優(yōu)先級高的VNF。此外,為了保證公平性和穩(wěn)定性,加速資源應(yīng)當留有一定的裕量,以滿足下一時刻新的VNF加速請求。如果VNF加速資源請求被滿足,根據(jù)相應(yīng)的配置信息對VIM分配的PRR進行處理單元的重構(gòu)配置。為了實現(xiàn)VNF之間功能的隔離,加速資源一旦被占用,直到VNF生命周期結(jié)束后才會被釋放,并重新成為VIM加速資源管理清單中的可用資源。
VNF與GHA之間的映射關(guān)系如圖5所示。用戶流量T要按順序依次經(jīng)過網(wǎng)絡(luò)中部署的3個VNF。其中,VNF3由GHA承載,VNF1和VNF2仍基于軟件進行數(shù)據(jù)處理。在數(shù)據(jù)傳輸、處理時,VNF1和VNF2依舊映射到計算資源內(nèi),由CPU進行數(shù)據(jù)處理,而VNF3則映射到GHA架構(gòu)的加速資源內(nèi),由FPGA內(nèi)的加速器負責數(shù)據(jù)處理。因此,在部署GHA架構(gòu)到NFV系統(tǒng)后,當有VNF被GHA加速時,原有的數(shù)據(jù)通路會發(fā)生改變,被加速的VNF的數(shù)據(jù)流會傳輸?shù)紾HA,剩余的數(shù)據(jù)處理仍在基于軟件的VNF中進行。
圖5 VNF映射到GHA的示意圖
基于FPGA的GHA加速資源可以部署到數(shù)據(jù)中心,加速數(shù)據(jù)中心內(nèi)VNF的數(shù)據(jù)處理,降低處理時延,提高網(wǎng)絡(luò)吞吐量。數(shù)據(jù)中心內(nèi)會存在大量有加速需求的VNF,但部署的加速資源數(shù)量與之相比卻是有限的,如果無差別地滿足VNF的加速需求時,加速資源會馬上被耗盡,無法滿足加速優(yōu)先級更高的VNF的加速需求。因此,需要一種基于GHA架構(gòu)的資源優(yōu)化分配策略,能夠有效分配數(shù)據(jù)中心內(nèi)有限的加速資源。
在數(shù)據(jù)中心中,與GHA加速資源分配相關(guān)的主要參數(shù)有:基于FPGA板卡的GHA加速資源總量,VNF加速資源開銷及相應(yīng)的加速優(yōu)先級。在GHA架構(gòu)中,用戶可以根據(jù)需求設(shè)定VNF的加速優(yōu)先級為1~3共3個級別。VNF的加速優(yōu)先級為1時,需要優(yōu)先分配相應(yīng)的加速資源,滿足該網(wǎng)絡(luò)功能的加速需求,數(shù)量相對較少;當VNF的加速優(yōu)先級為3時,需要根據(jù)分配后加速資源的剩余情況,決定是否滿足該類VNF的加速需求;而加速優(yōu)先級為2時,也是VNF的默認優(yōu)先級,是用戶在一般情況下的選擇,在滿足優(yōu)先級為1的VNF加速需求后,再將剩余加速資源進行分配,盡可能滿足其需求。
對于相同加速優(yōu)先級的VNF,尤其是2級加速優(yōu)先級,在使用GHA架構(gòu)加速后,對于加速資源開銷不同的VNF,其吞吐量提升幅度一般也會有差別。當加速資源無法滿足全部相同優(yōu)先級的VNF時,為使得運營商獲得最大的收益,對不同VNF的加速收益e作出如下定義:
其中,tpn為VNF加速前的吞吐量,tpa為VNF加速后的吞吐量,r為VNF的加速資源開銷。顯然,不同類型的VNF通過GHA架構(gòu)所獲得的加速收益不同,因此,存在一個有限加速資源收益最大化的問題。基于以上分析,可以得出加速資源分配的優(yōu)化模型。
一個數(shù)據(jù)中心內(nèi)某一時刻有m塊FPGA板卡內(nèi)存在可分配的加速資源,第i塊板卡的空閑資源總量為Ci;有n個新生成的VNF需要加速,第j個VNF的資源開銷為rj,其加速收益為ej,硬件資源的總加速收益為E。
xij∈{0,1},i=1,2,…,m,j=1,2,…,n
(6)
式(2)是模型的優(yōu)化目標,即在分配有限硬件加速資源的情況中,保證獲得最大的加速收益。式(3)~式(6)為約束條件。其中,式(3)是模型建立的前提,是對資源總量不足的描述。式(4)使得每塊板卡可提供的加速資源不超過其空閑資源上限,這也是對單個VNF的加速資源只能由單塊FPGA板卡提供的限制條件。位于不同板卡內(nèi)的PRR以跨板卡的方式組成處理單元時,會對加速器的構(gòu)建帶來額外的開銷和難度,同時增加整個架構(gòu)管理的復(fù)雜性。因此,單個VNF的分配加速資源要限制在單塊板卡內(nèi)。式(4)保證了VNF的加速資源最多只能被分配一次。式(5)對VNF加速資源分配矩陣的元素進行了約束,保證元素的取值范圍只能是0或1。若xij為1,表示第j個VNF的加速資源由第i塊板卡提供;若xij為0,表示第j個VNF的加速資源不由第i塊板塊提供。
根據(jù)上述加速資源資源分配模型,同時考慮到數(shù)據(jù)中心內(nèi)所能承載的有加速需求的VNF數(shù)量較多,可以將該優(yōu)化問題歸納為一個大規(guī)模多背包問題(Multiple Knapsack Problem,MKP)[15]。MKP是0-1背包問題的一個擴展形式,也是完全NP難問題,其計算復(fù)雜度為O(2mn)。因此,精確算法難以在實際應(yīng)用的可行時間內(nèi)獲得MKP的最優(yōu)解,而目前用于求解MKP的啟發(fā)式算法僅限于遺傳算法(Genetic Algorithm,GA)[16]、人工魚群算法(Artificial Fish Swarm,AFS)[17-18]和粒子群優(yōu)化算法(Particle Swarm Optimization,PSO)[19]。其中,GA算法對MKP的個體編碼形式一般為0-1矩陣,式(5)的約束使得該矩陣為稀疏矩陣,降低了算法的求解效率,對于大規(guī)模MKP,在實際應(yīng)用時間很難得到令人滿意的結(jié)果;AFS算法對不可行解一般采用罰函數(shù)處理,而MKP問題本身約束的程度較高,當問題規(guī)模較大時,不可行解在初始化人工魚群及執(zhí)行行為算子的過程中不斷增加,算法性能隨之劣化[20]。本文采用的DPSO算法對速度和位置更新方式進行了改進,編碼方式從0-1矩陣形式變?yōu)檎麛?shù)向量,而且對于不可行解的處理采用了隨機修復(fù)策略,避免對無效解的搜索。基于以上改進,DPSO算法在對大規(guī)模MKP問題求解時,在有限的時間內(nèi),能夠得到滿意解,具有較好的實用性。
算法給出了用DPSO優(yōu)化分配的求解過程。首先確定粒子種群規(guī)模Size、最大迭代次數(shù)iter、位置更新公式中的慣性權(quán)重w。接著初始化每個粒子的位置編碼和速度編碼。其次對超出約束條件的粒子進行隨機修復(fù),然后評價每個粒子的適應(yīng)度,并更新個體歷史最優(yōu)解和全局最優(yōu)解,計算下一代每個粒子的速度和位置。最后將算法循環(huán)q次后,判斷粒子是否達到預(yù)設(shè)的資源收益或是否達到最大迭代次數(shù),根據(jù)輸出結(jié)果進行加速資源的分配。
DPSO優(yōu)化分配算法如下所示:
算法DPSO資源分配算法
輸入{Size,w,(r1,r2,…,rn),(e1,e2,…,en),(C1,C2,…,Cm)}
輸出最佳位置Pg
1.For each particle
2.initialization,generating X(0) and V(0) randomly
3.End
4.t←0
5.Do
6.For each partilce
7.For j=1:n
8.If xj(t)≠0
9.Rxj(t)←Rxj(t)+rj
10.End
11.End
12.If ?Ri(t)>Ci
13.H=rand(n)andj←1
14.Do
15.If xH(j)(t)≠0
16.xH(j)(t)←0 and Ri(t)←Ri(t)-rH(j)
17.End
18.While (Ri(t)>Ci)
19.End
20.For j=1:n
21.If xj(t)≠0
22.E(t)←ej(t)+E(t)
23.End
24.End
25.If E(t)>Pb(t)
26.Pb(t)←E(t)
27.End
28.End
29.For k=1:Size
30.If Ek(t)>Pg(t)
31.Pg(t)←Ek(t)
32.End
33.End
34.For each particle
35.V(t+1)=w?s(V(t))⊕rand()?[Pb(t)ΘX(t)]⊕rand()?[Pg(t)ΘX(t)]
36.X(t+1)=X(t)⊕V(t+1)
37.End
38.t←t+1
39.While(t≥iter or Pgachieved the scheduled gain)
定義如下公式:
a?b=round(ab)
(9)
對基于NetFPGA-10G平臺的GHA架構(gòu)原型系統(tǒng)進行性能測試,而且對算法的加速收益優(yōu)化率進行仿真驗證。
為了測試GHA架構(gòu)的數(shù)據(jù)處理性能,本文基于NetFPGA-10G平臺實現(xiàn)了GHA原型,進行了數(shù)據(jù)吞吐量的測試。NetFPGA-10G板卡上的芯片系列為Xilinx Virtex 5(XC5VTX240T),具有4個10 Gb/s物理端口和4個支持直接內(nèi)存訪問并連接了PCIe總線的虛擬端口。加速平臺的開發(fā)軟件環(huán)境為Xilinx ISE 14.7,利用Xilinx提出的動態(tài)局部可重構(gòu)設(shè)計流程劃分出4個PRR,每個PRR中資源為9246 Slice,75 BRAM。硬件加速平臺通過PCIe總線與部署有VNF的通用服務(wù)器(Intel Xeon E5-2420 CPU 1.9 GHz,16 GB DDR3 RAM,Ubuntu14.04)相連,OpenVZ作為虛擬層,由Spirent Tester產(chǎn)生測試數(shù)據(jù)流,與FPGA的4個物理端口相連接,整個性能測試的搭建平臺如圖6所示。
圖6 數(shù)據(jù)平面的服務(wù)器和FPGA架構(gòu)
為了驗證GHA加速架構(gòu)對不同VNF數(shù)據(jù)處理的性能,分別采用虛擬路由器(vRouter)和防火墻作為VNF實例,而且與純軟件和采用DPDK軟件加速方案的包處理速率進行對比。為了比較實驗結(jié)果與純軟件VNF和DPDK軟件加速方案,在NetFPGA-10 Gb/s板卡上分別構(gòu)建了一個vRouter和一個防火墻,并對不同長度的數(shù)據(jù)包處理速率進行測試,其中一個vRouter的資源為14 588 Slice,84 BRAM,需要2個PRR構(gòu)建處理單元;一個防火墻的資源為14 588 Slice,65 BRAM,需要一個PRR構(gòu)建處理單元。采用軟件方案測試時,將服務(wù)器的4個10 Gb/s端口直接與測試儀相連,其中服務(wù)器運行vRouter的軟件版本為Click[21],防火墻則為網(wǎng)絡(luò)層防火墻[22],負責檢測包的五元組信息。使用DPDK作為軟件加速方案時,VNF服務(wù)器分配2個核心用作數(shù)據(jù)包轉(zhuǎn)發(fā),并且將內(nèi)存大頁設(shè)置為4 G。Spirent測試儀在每次實驗中模擬生成20 000條流,而且分別設(shè)定數(shù)據(jù)包長度為64 Byte、512 Byte和1 512 Byte。
實驗結(jié)果對比如圖7所示。采用純軟件數(shù)據(jù)平面處理時,受到虛擬化開銷和多層I/O處理限制,2個VNF最多分別能達到677 Mb/s和670 Mb/s。利用DPDK的軟件加速方案,通過旁路內(nèi)核協(xié)議棧和零復(fù)制等技術(shù),極大減輕了數(shù)據(jù)包在服務(wù)器中的I/O開銷,但受到VNF本身的軟件處理速率的限制,吞吐量最多達到19 Gb/s和17.2 Gb/s。GHA架構(gòu)下的vRouter和防火墻的數(shù)據(jù)包處理完全在FPGA內(nèi)部完成,沒有經(jīng)過CPU,吞吐量達到34 Gb/s和33.3 Gb/s??梢?GHA的最大吞吐量為純軟件的50.7倍、DPDK加速方案的1.8倍,通過GHA架構(gòu)能夠提升VNF的數(shù)據(jù)處理速率。與其他類型VNF相比,vRouter和防火墻2類網(wǎng)絡(luò)功能的全部數(shù)據(jù)包處理任務(wù)由硬件實現(xiàn),不經(jīng)過CPU,加速效果顯著;但其他類型VNF的部分數(shù)據(jù)處理可能在CPU中實現(xiàn),另一部分卸載到GHA硬件中,加速效果無法比擬實驗中的2類VNF。GHA架構(gòu)的相對通用性降低了網(wǎng)絡(luò)功能加速的復(fù)雜性,但也限制了所能承載的數(shù)據(jù)處理任務(wù),對不同類型的VNF加速效果不同??偟貋碚f,相比純軟件和軟件加速方案,GHA架構(gòu)以一種相對通用的加速方式,能夠?qū)Σ煌愋偷腣NF取得較好的加速效果。
圖7 3種類型加速方案的處理性能對比
對于分配算法的仿真,用Matlab R2015a編程,在PC機上(Intel Core CPU i5-3450 3.10 GHz,4 GB RAM)運行。為了對資源分配算法進行性能分析,將上述2類VNF的測試數(shù)據(jù)作為參考,設(shè)置8種不同參數(shù)的VNF作為初始數(shù)據(jù),如表1所示。
表1 VNF類型和屬性
在仿真實驗中,設(shè)定單塊FPGA板卡所能提供的加速資源均為8個PRR。為了盡可能保證資源分配的公平性,給后到達的VNF留有可分配的加速資源,通過限制每次分配的硬件資源總量,實現(xiàn)系統(tǒng)的穩(wěn)定性,根據(jù)每次加速資源的總開銷設(shè)定每次的資源分配總量。在此次實驗中,引入分配系數(shù)γ,表示可分配加速資源與總開銷之間的比值,分別設(shè)定為1/2、3/5和2/3,用于模擬真實環(huán)境,顯示不同情況下可分配的加速資源的總量。
為了測試算法對不同VNF數(shù)量的優(yōu)化性能,一共做了5組實驗,每組實驗生成不同數(shù)目的服務(wù)功能鏈(Service Function Chain,SFC),每條SFC由8類設(shè)定的VNF中隨機挑選4個~6個來組成。在每組實驗中,對于同一數(shù)目的SFC,測試5次,然后取平均值。另外,設(shè)定DPSO算法中種群規(guī)模Size為100,最大迭代次數(shù)iter為200,慣性權(quán)重w為0.65+0.25×cos(t×π/iter),其中,t為迭代次數(shù),w隨著算法迭代的進行而逐漸減小,可降低算法陷入局部最優(yōu)的頻次。仿真不同分配系數(shù)下DPSO算法的加速收益,并與傳統(tǒng)的貪心算法(Greedy Algorithm)和遺傳算法(SGA)[23]的加速收益作對比。貪心算法按照VNF的加速收益大小依次選取剩余資源最大的FPGA板卡進行分配;SGA算法通過在適應(yīng)性函數(shù)中引入容量約束懲罰和物體單一歸屬懲罰,并采用一致交叉的交叉算子[23],設(shè)定與DPSO算法相同的迭代次數(shù),求解出資源分配方案。
圖8為3種加速資源分配算法的收益對比。由仿真結(jié)果可知,在相同的服務(wù)鏈數(shù)目下,3種算法的加速收益隨著分配系數(shù)的增大而增加。這是由于可分配的加速資源越多,VNF的加速需求得到滿足的可能性也就越大。加速資源分配數(shù)量與總開銷的比值γ、VNF個數(shù)和算法優(yōu)化率之間的關(guān)系如圖8(d)和圖8(e)所示。綜合5次實驗結(jié)果,在限定不同的可分配加速資源總量時,與貪心算法相比,DPSO算法的收益優(yōu)化效率平均能提升24.5%、13.5%和8.0%;與ASG算法相比,在相同的迭代次數(shù)內(nèi),DPSO算法得到的分配方案更優(yōu),收益優(yōu)化率平均提升11.1%、7.8%和5.4%。當γ確定時,隨著VNF個數(shù)的增長,解空間不斷增大,在設(shè)定的搜索次數(shù)內(nèi),算法所能找到的較優(yōu)解質(zhì)量隨之下降,所提升的加速資源收益有限,可以通過增加種群規(guī)模和迭代次數(shù)擴大搜索范圍,直到找到令人滿意的結(jié)果;當VNF個數(shù)確定,加速資源分配數(shù)量與總開銷的比值γ越小,約束條件下的解空間越小,在相同的迭代次數(shù)內(nèi),算法能夠搜索到更優(yōu)的資源分配方案,算法優(yōu)化率明顯提高??梢?基于DPSO的資源分配優(yōu)化算法是有效的,在實際情況中,需要根據(jù)具體VNF個數(shù)和加速資源總量以及所限定的加速資源分配時間,來確定種群規(guī)模和迭代次數(shù),以獲得預(yù)期的優(yōu)化率。
圖8 DPSO算法性能仿真結(jié)果
本文針對VNF在通用服務(wù)器中數(shù)據(jù)包處理性能受限的問題,提出了基于FPGA的相對通用的硬件加速架構(gòu)GHA,將“解析-匹配-動作”的處理環(huán)節(jié)卸載到硬件中,由硬件中的解析單元、處理單元實現(xiàn)數(shù)據(jù)處理加速。GHA能夠利用FPGA的動態(tài)可重構(gòu)技術(shù),根據(jù)VNF需求部署GHA加速器。另外,采用DPSO算法對加速資源分配進行優(yōu)化,提高了數(shù)據(jù)中心內(nèi)有限硬件資源的加速收益。仿真測試證明,本文提出的VNF數(shù)據(jù)包硬件加速架構(gòu),在促進NFV性能提升的同時,降低了VNF加速的實現(xiàn)難度。