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