亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于GPU加速的NFV系統(tǒng)的框架設(shè)計(jì)和性能優(yōu)化

        2022-02-19 10:23:30郭良琛
        關(guān)鍵詞:流水線數(shù)據(jù)包虛擬化

        郭良琛 張 凱

        1(復(fù)旦大學(xué)軟件學(xué)院 上海201203) 2(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 上海 201203) 3(上海市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室 上海 200433)

        0 引 言

        網(wǎng)絡(luò)功能虛擬化(NFV)系統(tǒng)將企業(yè)網(wǎng)絡(luò)基礎(chǔ)設(shè)施中的關(guān)鍵部分——網(wǎng)絡(luò)功能進(jìn)行軟件實(shí)現(xiàn),從而使得其維護(hù)、部署及管理更加容易。大部分NFV系統(tǒng)將網(wǎng)絡(luò)功能運(yùn)行在CPU上。這種部署方案門(mén)檻不高,但是它相比傳統(tǒng)使用專(zhuān)有硬件實(shí)現(xiàn)的網(wǎng)絡(luò)功能在執(zhí)行效率上有一定的犧牲。相比CPU,圖形處理器(GPU)在并行計(jì)算方面具有突出的性能優(yōu)勢(shì)。研究指出,部分具備計(jì)算和訪存密集特征的網(wǎng)絡(luò)功能使用GPU進(jìn)行加速可顯著提高性能[1-4]。因此,使用GPU對(duì)網(wǎng)絡(luò)系統(tǒng)進(jìn)行加速成為當(dāng)前高性能網(wǎng)絡(luò)處理領(lǐng)域的研究熱點(diǎn)。

        在NFV系統(tǒng)中,多個(gè)網(wǎng)絡(luò)功能實(shí)例通常組合成服務(wù)鏈,對(duì)網(wǎng)絡(luò)流量提供復(fù)雜的處理功能。在同一套NFV系統(tǒng)中部署的多個(gè)網(wǎng)絡(luò)功能實(shí)例需要共享軟件和硬件基礎(chǔ)設(shè)施。在基于GPU加速的NFV系統(tǒng)中,網(wǎng)絡(luò)功能在系統(tǒng)中共存并組合成服務(wù)鏈的方式主要分為兩種。一種需要網(wǎng)絡(luò)功能利用NFV系統(tǒng)API將其功能完全使用GPU核函數(shù)實(shí)現(xiàn),這樣NFV系統(tǒng)能夠?qū)崿F(xiàn)執(zhí)行的高度集成化,減少網(wǎng)絡(luò)功能之間的通信開(kāi)銷(xiāo),有助于提高性能。但是,這種方式僅允許網(wǎng)絡(luò)功能開(kāi)發(fā)者使用有限的GPU算子,在網(wǎng)絡(luò)功能的實(shí)現(xiàn)方面有較多的限制。并且,高度集成的方案對(duì)網(wǎng)絡(luò)功能的獨(dú)立運(yùn)維、資源分配和數(shù)據(jù)安全隔離等方面也有不便之處。另一種系統(tǒng)則需要將網(wǎng)絡(luò)功能部署在具備獨(dú)立運(yùn)行時(shí)的虛擬機(jī)或容器中,網(wǎng)絡(luò)功能可以使用虛擬化的CPU和GPU計(jì)算資源對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理。這種方案有效解決了網(wǎng)絡(luò)功能在實(shí)現(xiàn)和運(yùn)維方面的挑戰(zhàn)。

        但是,將GPU加速的網(wǎng)絡(luò)功能使用虛擬化方式獨(dú)立部署也帶來(lái)了一些問(wèn)題。一方面,為保證部署獨(dú)立性,這些網(wǎng)絡(luò)功能在CPU-GPU執(zhí)行流水線的CPU處理部分有額外的開(kāi)銷(xiāo),例如協(xié)議棧處理與有狀態(tài)網(wǎng)絡(luò)功能的狀態(tài)管理等。由于GPU處理部分本身較為高效,流水線中的CPU處理的低效對(duì)整體性能的負(fù)面影響很大。另一方面,相比于集成化的方案,獨(dú)立部署的網(wǎng)絡(luò)功能需要自行實(shí)現(xiàn)大量有關(guān)網(wǎng)絡(luò)數(shù)據(jù)包預(yù)處理的基礎(chǔ)邏輯。這樣的工作增加了網(wǎng)絡(luò)功能開(kāi)發(fā)者的負(fù)擔(dān)。

        基于以上問(wèn)題,本文提出一種針對(duì)GPU加速的NFV系統(tǒng)的框架設(shè)計(jì)和實(shí)現(xiàn)。該框架在允許GPU加速的網(wǎng)絡(luò)功能以容器的形式獨(dú)立部署在NFV系統(tǒng)中的前提下,利用服務(wù)鏈中網(wǎng)絡(luò)功能之間共享數(shù)據(jù)和流狀態(tài)的特性,引入了共享式流狀態(tài)管理機(jī)制,以減少網(wǎng)絡(luò)功能CPU-GPU處理流水線中CPU階段與協(xié)議棧處理和狀態(tài)管理相關(guān)的開(kāi)銷(xiāo),并降低網(wǎng)絡(luò)功能開(kāi)發(fā)者的開(kāi)發(fā)負(fù)擔(dān)。對(duì)原型系統(tǒng)的實(shí)驗(yàn)評(píng)估表明,相比于現(xiàn)有的系統(tǒng)框架設(shè)計(jì)方案,該框架能夠顯著降低GPU加速的NFV系統(tǒng)中網(wǎng)絡(luò)功能處理流水線中的CPU階段的開(kāi)銷(xiāo),并在常見(jiàn)的網(wǎng)絡(luò)功能服務(wù)鏈上達(dá)到了最多2倍的吞吐量提升。

        1 背景介紹

        1.1 網(wǎng)絡(luò)功能與NFV系統(tǒng)

        網(wǎng)絡(luò)功能是企業(yè)網(wǎng)絡(luò)基礎(chǔ)設(shè)施的基本組成單元。常見(jiàn)的網(wǎng)絡(luò)功能包括防火墻、網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(NetworkIntrusionDetectionSystem, NIDS),IPsec網(wǎng)關(guān)和路由器等。在常見(jiàn)的網(wǎng)絡(luò)基礎(chǔ)設(shè)施中,網(wǎng)絡(luò)功能通常會(huì)相互連接形成完整的服務(wù)鏈來(lái)提供相對(duì)靈活可定制的網(wǎng)絡(luò)流量處理系統(tǒng)。傳統(tǒng)上,網(wǎng)絡(luò)功能由專(zhuān)門(mén)設(shè)計(jì)的網(wǎng)絡(luò)硬件設(shè)備提供,但這種方式對(duì)于服務(wù)鏈的部署、運(yùn)維、擴(kuò)展方面有較多限制。NFV系統(tǒng)利用軟件和自動(dòng)化替代專(zhuān)用網(wǎng)絡(luò)設(shè)備來(lái)定義、創(chuàng)建和管理網(wǎng)絡(luò)功能,從而實(shí)現(xiàn)網(wǎng)絡(luò)功能在通用硬件上部署,并達(dá)到了較高的靈活性和可擴(kuò)展性[5]。

        NFV系統(tǒng)將多個(gè)網(wǎng)絡(luò)功能集成在同一個(gè)平臺(tái)下,合并對(duì)外提供網(wǎng)絡(luò)服務(wù)。在一般的NFV系統(tǒng)中,各個(gè)網(wǎng)絡(luò)功能被標(biāo)準(zhǔn)化的虛擬機(jī)或容器包裝,NFV系統(tǒng)可以允許不同供應(yīng)商提供的、依賴(lài)不同軟件環(huán)境的網(wǎng)絡(luò)功能實(shí)現(xiàn)共存在一個(gè)運(yùn)行環(huán)境中。虛擬化技術(shù)的使用使得系統(tǒng)中不同網(wǎng)絡(luò)功能的獨(dú)立資源分配、運(yùn)行時(shí)隔離、在線創(chuàng)建和熱更新等操作都成為可能。

        大多數(shù)針對(duì)NFV系統(tǒng)的研究[6-8]使用最常見(jiàn)的通用處理器——CPU進(jìn)行網(wǎng)絡(luò)流量的處理。盡管CPU的計(jì)算資源常見(jiàn)、易獲得,但其處理網(wǎng)絡(luò)流量的性能通常無(wú)法與配備了專(zhuān)用集成電路(ASIC)的專(zhuān)用網(wǎng)絡(luò)設(shè)備相提并論。為了提升性能,有一類(lèi)研究嘗試將通用計(jì)算中常用的計(jì)算加速器硬件,尤其是圖形處理器(GPU)應(yīng)用在NFV領(lǐng)域。相比于CPU,GPU具有較高的內(nèi)存帶寬和大量的計(jì)算執(zhí)行單元,適用于網(wǎng)絡(luò)功能中的數(shù)據(jù)密集型和計(jì)算密集型網(wǎng)絡(luò)流量處理任務(wù)。已經(jīng)有研究表明,一些網(wǎng)絡(luò)功能可以使用GPU加速?gòu)亩@得顯著的性能提升,例如NIDS模式匹配[3,9]、加密/解密[2]和路由[1]等。

        1.2 基于GPU的NFV系統(tǒng)設(shè)計(jì)

        為了在NFV系統(tǒng)中便捷和高效地集成使用GPU加速的網(wǎng)絡(luò)功能,研究者設(shè)計(jì)了多種專(zhuān)用于GPU加速的網(wǎng)絡(luò)數(shù)據(jù)包處理系統(tǒng)。根據(jù)將多個(gè)GPU加速的網(wǎng)絡(luò)功能部署在服務(wù)鏈中的形式的區(qū)別,這類(lèi)系統(tǒng)的設(shè)計(jì)主要分為兩類(lèi)。

        純GPU實(shí)現(xiàn)。GASPP[9]、GPUNFV[10]和FlowShader[11]等系統(tǒng)將網(wǎng)絡(luò)系統(tǒng)服務(wù)鏈中各個(gè)網(wǎng)絡(luò)功能的全部功能都用適用于GPU的并行代碼實(shí)現(xiàn)。通過(guò)將網(wǎng)絡(luò)處理的功能高度集成化地執(zhí)行在GPU上,這類(lèi)系統(tǒng)減少了網(wǎng)絡(luò)功能之間數(shù)據(jù)傳輸?shù)拈_(kāi)銷(xiāo)。但是,高度的集成化不可避免地帶來(lái)了一些弊端:開(kāi)發(fā)者在實(shí)現(xiàn)網(wǎng)絡(luò)功能時(shí)可利用的算子有限,而且因?yàn)榉?wù)鏈中用來(lái)加速網(wǎng)絡(luò)功能的GPU核函數(shù)作為一個(gè)整體部署在GPU上,因此單個(gè)網(wǎng)絡(luò)功能的獨(dú)立運(yùn)維、資源動(dòng)態(tài)分配和數(shù)據(jù)安全隔離都無(wú)法保證。

        CPU-GPU流水線實(shí)現(xiàn)。G-NET[12]和Grus[13]等GPU加速的NFV系統(tǒng)采用了虛擬化設(shè)計(jì),并針對(duì)GPU加速計(jì)算的場(chǎng)景進(jìn)行了優(yōu)化。這類(lèi)系統(tǒng)要求網(wǎng)絡(luò)功能開(kāi)發(fā)者分別實(shí)現(xiàn)網(wǎng)絡(luò)功能在CPU和GPU上的處理邏輯,并最終在NFV系統(tǒng)上以流水線的方式執(zhí)行。一個(gè)典型的GPU加速的網(wǎng)絡(luò)功能流水線如圖1所示。首先,流量從網(wǎng)絡(luò)功能所部署在的虛擬機(jī)(或容器)的虛擬網(wǎng)絡(luò)接口中流入,并被暫存在主內(nèi)存的緩沖區(qū)中,進(jìn)而分別被開(kāi)發(fā)者自定義的預(yù)處理(Pre-processing)模塊、GPU核函數(shù)(GPUKernelFunction)與后處理(Post-processing)模塊進(jìn)行處理。網(wǎng)絡(luò)流量需要首先經(jīng)PCIe通道從主機(jī)到設(shè)備(Hostto Device, HtoD)傳輸?shù)紾PU顯存中,GPU處理完成的結(jié)果同樣需要從設(shè)備到主機(jī)(Device to Host, DtoH)傳回主內(nèi)存。在NFV系統(tǒng)中,多個(gè)這樣的流水線共存從而形成網(wǎng)絡(luò)功能的服務(wù)鏈,而每個(gè)網(wǎng)絡(luò)功能的CPU執(zhí)行部分(Pre-processing和Post-processing)與GPU執(zhí)行部分(Kernel Function)都分別被虛擬化并共享硬件資源。這類(lèi)切分網(wǎng)絡(luò)功能各個(gè)步驟的執(zhí)行職責(zé)并分別進(jìn)行虛擬化的方式使得GPU加速的網(wǎng)絡(luò)功能在實(shí)現(xiàn)上更加靈活。

        圖1 一個(gè)典型的使用GPU加速的網(wǎng)絡(luò)功能流水線

        2 相關(guān)工作

        許多研究致力于提升NFV系統(tǒng)的性能。OpenBox[14]、SNF[15]、Metron[7]和NetBricks[8]一類(lèi)基于CPU的NFV系統(tǒng)與GASPP[9]、FlowShader[11]等基于GPU的NFV系統(tǒng)通過(guò)放棄虛擬化,將網(wǎng)絡(luò)功能中核心邏輯與I/O操作進(jìn)行合并的方式提高了NFV的網(wǎng)絡(luò)流量處理性能。盡管其中NetBricks[8]能夠利用API抽象層為各網(wǎng)絡(luò)功能提供單獨(dú)的運(yùn)行時(shí)環(huán)境,但是虛擬化的其他優(yōu)勢(shì),包括靈活部署、靈活資源分配等都將不復(fù)存在。

        網(wǎng)絡(luò)協(xié)議棧處理和狀態(tài)管理是網(wǎng)絡(luò)功能執(zhí)行中的重要開(kāi)銷(xiāo)。許多系統(tǒng)實(shí)現(xiàn)了在多個(gè)網(wǎng)絡(luò)功能組成的服務(wù)鏈中設(shè)計(jì)協(xié)議棧共享的機(jī)制,以簡(jiǎn)化網(wǎng)絡(luò)功能的開(kāi)發(fā),并減少不同網(wǎng)絡(luò)功能之間重復(fù)性協(xié)議棧處理的開(kāi)銷(xiāo),如MiddleClick[16]、Microboxes[17]和基于GPU的GASPP[9]等。這類(lèi)系統(tǒng)中的協(xié)議棧功能提供了數(shù)據(jù)包分片重組、TCP流重組等一系列高級(jí)功能,并提供了針對(duì)多種協(xié)議層級(jí)的API。但這類(lèi)系統(tǒng)中系統(tǒng)基礎(chǔ)設(shè)施和網(wǎng)絡(luò)功能之間存在高耦合度的問(wèn)題,并不能良好地支持網(wǎng)絡(luò)功能的隔離部署。

        基于GPU加速并實(shí)現(xiàn)了網(wǎng)絡(luò)功能隔離部署的NFV系統(tǒng)包括G-NET[12]和Grus[13]。其中G-NET[12]通過(guò)利用現(xiàn)代GPU的并行核函數(shù)執(zhí)行(CKE)特性提高GPU計(jì)算資源的利用效率。但是,這類(lèi)系統(tǒng)的計(jì)算流水線中存在CPU階段低效的問(wèn)題。

        3 現(xiàn)有系統(tǒng)的問(wèn)題

        盡管使用虛擬化技術(shù)進(jìn)行網(wǎng)絡(luò)功能封裝的GPU加速的NFV系統(tǒng)能夠達(dá)到可觀的性能和部署靈活性,但是其中依然有性能方面的問(wèn)題,從而限制了這類(lèi)系統(tǒng)在生產(chǎn)環(huán)境中的廣泛部署。

        部分網(wǎng)絡(luò)功能處理流水線中,計(jì)算密集型和數(shù)據(jù)密集型任務(wù)是網(wǎng)絡(luò)功能性能的主要瓶頸,這也是業(yè)界采用GPU進(jìn)行加速的主要原因。當(dāng)這類(lèi)任務(wù)轉(zhuǎn)移到高性能的GPU之后,系統(tǒng)的性能瓶頸可能會(huì)隨之轉(zhuǎn)移。為了探索常見(jiàn)GPU加速的網(wǎng)絡(luò)功能的性能瓶頸,我們使用CPU-GPU異構(gòu)方式實(shí)現(xiàn)了幾個(gè)常見(jiàn)的網(wǎng)絡(luò)功能,并測(cè)量了執(zhí)行流水線中各個(gè)關(guān)鍵處理步驟的相對(duì)時(shí)間開(kāi)銷(xiāo),結(jié)果如圖2所示??梢钥闯?,網(wǎng)絡(luò)功能中GPU處理的總時(shí)間開(kāi)銷(xiāo)(包括核函數(shù)執(zhí)行和PCIe數(shù)據(jù)傳輸)相對(duì)較小,一般不超過(guò)總處理時(shí)間的一半。在這種情況下,GPU處理部分具有充分的并行性,因此網(wǎng)絡(luò)功能中CPU處理部分成為了影響總體性能的重要因素之一。

        圖2 一些GPU加速的網(wǎng)絡(luò)功能批處理時(shí)間的分解

        通常,GPU加速的網(wǎng)絡(luò)功能中CPU處理部分負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)包解析和狀態(tài)維護(hù)。例如,網(wǎng)絡(luò)功能在處理每個(gè)數(shù)據(jù)包之前,都需要對(duì)包的元信息進(jìn)行提取,包括讀取包頭和定位負(fù)載位置等,這個(gè)過(guò)程包括數(shù)次隨機(jī)內(nèi)存訪問(wèn)。對(duì)于需要維護(hù)連接狀態(tài)信息的網(wǎng)絡(luò)功能,它們還需要自行實(shí)現(xiàn)完整的高層協(xié)議棧,以實(shí)現(xiàn)基于流的狀態(tài)管理。此外,網(wǎng)絡(luò)功能還需要根據(jù)流的處理情況對(duì)其狀態(tài)進(jìn)行實(shí)時(shí)讀取和更新。從圖2可以看出,基于有狀態(tài)的網(wǎng)絡(luò)功能中,協(xié)議棧處理和狀態(tài)維護(hù)工作最多占據(jù)了網(wǎng)絡(luò)功能總處理時(shí)間的一半以上,是CPU-GPU工作流水線中的重要開(kāi)銷(xiāo)。

        盡管協(xié)議棧處理和狀態(tài)維護(hù)的開(kāi)銷(xiāo)在網(wǎng)絡(luò)系統(tǒng)中普遍存在,但是在GPU加速的NFV系統(tǒng)中,這部分開(kāi)銷(xiāo)尤為突出。這主要有兩方面原因:(1)在基于虛擬化的網(wǎng)絡(luò)系統(tǒng)中,網(wǎng)絡(luò)功能模塊大多是獨(dú)立的,它們自身包含完整的協(xié)議棧實(shí)現(xiàn)。當(dāng)多個(gè)此類(lèi)網(wǎng)絡(luò)功能部署在同一個(gè)服務(wù)鏈中后,服務(wù)鏈中流過(guò)的數(shù)據(jù)包需要經(jīng)過(guò)多次重復(fù)的協(xié)議棧處理,浪費(fèi)了大量的CPU計(jì)算資源。(2)為了最大化流水線中GPU的資源利用效率,GPU核函數(shù)會(huì)一次性并行處理整批數(shù)據(jù)包,因此上游數(shù)據(jù)包需要積累至一定批量才會(huì)被送入GPU核函數(shù)。在這種情況下,部分?jǐn)?shù)據(jù)包需要在待處理的緩沖區(qū)中等待一段時(shí)間,這導(dǎo)致CPU處理階段平均時(shí)延被進(jìn)一步放大。因此,CPU處理階段的低效會(huì)極大程度上影響整個(gè)CPU-GPU處理流水線的效率,從而讓GPU加速的性能優(yōu)勢(shì)不復(fù)存在。

        4 系統(tǒng)設(shè)計(jì)

        針對(duì)以上問(wèn)題,本文提出一種適用于GPU加速的NFV系統(tǒng)的框架。該系統(tǒng)框架一方面使用CPU和GPU上的虛擬化技術(shù)將網(wǎng)絡(luò)功能運(yùn)行時(shí)獨(dú)立開(kāi)來(lái),以簡(jiǎn)化網(wǎng)絡(luò)功能的開(kāi)發(fā)、運(yùn)維和資源分配;另一方面利用共享的狀態(tài)管理機(jī)制,通過(guò)減少CPU-GPU流水線中CPU部分的計(jì)算開(kāi)銷(xiāo),提升整體運(yùn)行效率。

        4.1 總體框架

        本文提出的系統(tǒng)總體框架如圖3所示。與傳統(tǒng)NFV一致,本系統(tǒng)主要包括基礎(chǔ)設(shè)施和網(wǎng)絡(luò)功能兩大部分。其中基礎(chǔ)設(shè)施負(fù)責(zé)支持網(wǎng)絡(luò)功能所需的基礎(chǔ)服務(wù),例如網(wǎng)絡(luò)I/O、狀態(tài)管理與GPU虛擬化等,運(yùn)行在獨(dú)立的進(jìn)程中。由供應(yīng)商開(kāi)發(fā)的網(wǎng)絡(luò)功能則被部署在具備獨(dú)立運(yùn)行時(shí)環(huán)境的容器中,負(fù)責(zé)執(zhí)行具體的網(wǎng)絡(luò)數(shù)據(jù)包處理功能。系統(tǒng)中允許同時(shí)部署多個(gè)網(wǎng)絡(luò)功能組成的服務(wù)鏈。同時(shí),系統(tǒng)分配了多個(gè)共享內(nèi)存區(qū)域,并使用無(wú)鎖環(huán)形隊(duì)列等數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)網(wǎng)絡(luò)功能之間、網(wǎng)絡(luò)功能與NFV基礎(chǔ)設(shè)施之間的通信。

        圖3 系統(tǒng)架構(gòu)

        (1) 數(shù)據(jù)平面。系統(tǒng)的基礎(chǔ)設(shè)施部分為網(wǎng)絡(luò)數(shù)據(jù)包在其整個(gè)生命周期中的存儲(chǔ)和傳遞提供支持。當(dāng)系統(tǒng)的接收線程(RX)從網(wǎng)卡收到數(shù)據(jù)包之后,會(huì)直接將其保存在由基礎(chǔ)設(shè)施和網(wǎng)絡(luò)功能共享的內(nèi)存區(qū)域——數(shù)據(jù)包緩存中,并同時(shí)生成對(duì)應(yīng)的包描述符(descriptor),進(jìn)而將其指針添加至網(wǎng)絡(luò)功能實(shí)例的接收隊(duì)列。包描述符是包含數(shù)據(jù)包元信息的小型數(shù)據(jù)結(jié)構(gòu),其中也包括指向該數(shù)據(jù)包在緩存區(qū)中位置的指針。因此,網(wǎng)絡(luò)功能通過(guò)讀取包描述符便能夠訪問(wèn)、修改數(shù)據(jù)包信息,包括元信息以及數(shù)據(jù)包內(nèi)容。這樣,數(shù)據(jù)包在系統(tǒng)內(nèi)部的轉(zhuǎn)發(fā)只要通過(guò)拷貝包描述符指針即可完成。因?yàn)榘枋龇羔樀拇笮?通常8 B)遠(yuǎn)遠(yuǎn)小于數(shù)據(jù)包內(nèi)容(64 B~1 500 B),數(shù)據(jù)平面中數(shù)據(jù)包傳遞的內(nèi)存拷貝開(kāi)銷(xiāo)可以大幅度降低。對(duì)于已被處理完成的數(shù)據(jù)包,發(fā)送線程(TX)會(huì)根據(jù)其描述符指針從數(shù)據(jù)包緩存中提取出包內(nèi)容,并發(fā)送至網(wǎng)卡的輸出端。

        (2) 網(wǎng)絡(luò)功能。系統(tǒng)支持遵循CPU預(yù)處理-GPU核函數(shù)處理-CPU后處理流水線的網(wǎng)絡(luò)功能。對(duì)于CPU處理階段,系統(tǒng)提供的API允許網(wǎng)絡(luò)功能直接訪問(wèn)、維護(hù)數(shù)據(jù)包所在流的狀態(tài)信息,以平攤多個(gè)網(wǎng)絡(luò)功能中的相關(guān)開(kāi)銷(xiāo)。對(duì)于GPU處理階段,系統(tǒng)也提供了GPU虛擬化API,允許網(wǎng)絡(luò)功能向GPU拷貝數(shù)據(jù)、執(zhí)行核函數(shù)等。

        (3) GPU虛擬化。網(wǎng)絡(luò)功能通過(guò)調(diào)用GPU虛擬化API,可以利用共享內(nèi)存信道與GPU虛擬化層進(jìn)行通信。網(wǎng)絡(luò)功能會(huì)將執(zhí)行請(qǐng)求添加到共享內(nèi)存中的隊(duì)列來(lái)通知GPU虛擬化層執(zhí)行相應(yīng)功能。為了在不同網(wǎng)絡(luò)功能之間共享GPU計(jì)算資源,GPU虛擬化層在運(yùn)行時(shí)只創(chuàng)建一個(gè)執(zhí)行上下文(executioncontext),并將不同網(wǎng)絡(luò)功能的核函數(shù)執(zhí)行請(qǐng)求或內(nèi)存管理請(qǐng)求提交到此上下文中。此外,虛擬化層還利用了現(xiàn)代GPU中的并行核函數(shù)執(zhí)行(CKE)的特性,允許不同網(wǎng)絡(luò)功能的多個(gè)核函數(shù)在GPU中并行執(zhí)行,以實(shí)現(xiàn)GPU計(jì)算資源的空間共享,提高GPU計(jì)算資源的利用效率。

        4.2 協(xié)議棧處理與狀態(tài)管理

        網(wǎng)絡(luò)協(xié)議棧處理和狀態(tài)管理是網(wǎng)絡(luò)功能執(zhí)行中的重要開(kāi)銷(xiāo)。為降低此類(lèi)開(kāi)銷(xiāo)對(duì)網(wǎng)絡(luò)功能中GPU加速效果的影響,本文提出基于流的共享式狀態(tài)管理機(jī)制,以在服務(wù)鏈中分?jǐn)偩W(wǎng)絡(luò)功能的狀態(tài)管理開(kāi)銷(xiāo)。同時(shí),與之對(duì)應(yīng)的API也有助于簡(jiǎn)化網(wǎng)絡(luò)功能的開(kāi)發(fā)。

        共享式狀態(tài)管理的核心思想是利用不同網(wǎng)絡(luò)功能之間協(xié)議棧處理和流狀態(tài)管理的相似性,將大部分該類(lèi)計(jì)算集中在NFV系統(tǒng)的基礎(chǔ)設(shè)施部分,并將計(jì)算結(jié)果向各個(gè)網(wǎng)絡(luò)功能共享。系統(tǒng)基礎(chǔ)設(shè)施層的協(xié)議棧模塊負(fù)責(zé)預(yù)處理數(shù)據(jù)包并管理流狀態(tài),而流狀態(tài)存儲(chǔ)模塊則允許網(wǎng)絡(luò)功能對(duì)這類(lèi)狀態(tài)進(jìn)行訪問(wèn)。下文將對(duì)共享狀態(tài)管理中的一些關(guān)鍵步驟進(jìn)行詳細(xì)介紹。

        (1) 數(shù)據(jù)包解析。網(wǎng)絡(luò)功能對(duì)入站流量處理的第一步是解析數(shù)據(jù)包,并根據(jù)其實(shí)際結(jié)構(gòu)提取一些關(guān)鍵字段。系統(tǒng)的協(xié)議棧模塊會(huì)首先對(duì)數(shù)據(jù)包進(jìn)行解析,并將其結(jié)構(gòu)記錄下來(lái),這樣后續(xù)的網(wǎng)絡(luò)功能就可以直接讀取數(shù)據(jù)包中的關(guān)鍵字段從而跳過(guò)解析步驟。如圖4所示,數(shù)據(jù)包中各層協(xié)議棧對(duì)應(yīng)的包頭指針可被協(xié)議棧模塊解析取得,并保存在數(shù)據(jù)包描述符中。而網(wǎng)絡(luò)功能開(kāi)發(fā)者只需要調(diào)用相關(guān)API,即可直接讀取所需的信息,包括數(shù)據(jù)包傳輸層協(xié)議的類(lèi)型與其頭部的位置等,而無(wú)須再自行實(shí)現(xiàn)協(xié)議棧進(jìn)行解析。

        圖4 流的共享狀態(tài)管理

        (2) 流狀態(tài)管理。網(wǎng)絡(luò)包所在流的狀態(tài)(例如TCP連接狀態(tài))是網(wǎng)絡(luò)功能進(jìn)行有狀態(tài)處理所需要的關(guān)鍵信息。例如,有狀態(tài)防火墻通常情況下會(huì)根據(jù)數(shù)據(jù)包所屬連接的狀態(tài),拒絕那些并不屬于已成功建立的TCP連接的數(shù)據(jù)包。為加速網(wǎng)絡(luò)功能流狀態(tài)的獲取,系統(tǒng)協(xié)議棧模塊處理入站數(shù)據(jù)包之后,會(huì)將其流狀態(tài)添加或更新到流狀態(tài)存儲(chǔ)表中,并同時(shí)寫(xiě)入數(shù)據(jù)包描述符的特定元信息字段,供后續(xù)網(wǎng)絡(luò)功能進(jìn)行快速訪問(wèn)。以圖4所示的流狀態(tài)表為例,表中的主鍵是由網(wǎng)絡(luò)層和傳輸層的關(guān)鍵信息組成的五元組,另外表中還存儲(chǔ)有該五元組所對(duì)應(yīng)流的狀態(tài)信息。協(xié)議棧模塊在處理數(shù)據(jù)包時(shí),會(huì)首先在表中查找到數(shù)據(jù)包所對(duì)應(yīng)的流在表中的位置,進(jìn)而獲取當(dāng)前流的狀態(tài)。協(xié)議棧模塊會(huì)基于數(shù)據(jù)包的內(nèi)容及其流狀態(tài),生成更新的狀態(tài),并覆蓋保存至原流狀態(tài)信息表以及數(shù)據(jù)包描述符中。因此,網(wǎng)絡(luò)功能無(wú)須自行實(shí)現(xiàn)協(xié)議棧并維護(hù)連接狀態(tài),而只需要讀取數(shù)據(jù)包描述符便可獲得相應(yīng)流的狀態(tài)值。

        (3) 網(wǎng)絡(luò)功能自定義狀態(tài)管理。除了流本身的狀態(tài),一些網(wǎng)絡(luò)功能也需要維護(hù)其自定義的狀態(tài),如網(wǎng)絡(luò)入侵檢測(cè)中模式識(shí)別所用到的自動(dòng)機(jī)狀態(tài),以及加解密中的密鑰等。類(lèi)似于流狀態(tài),維護(hù)網(wǎng)絡(luò)功能的自定義狀態(tài)同樣是網(wǎng)絡(luò)功能中的重要開(kāi)銷(xiāo)。在本文系統(tǒng)中,網(wǎng)絡(luò)功能自定義狀態(tài)管理使用了類(lèi)似于流狀態(tài)管理的方法,它將主要狀態(tài)信息保存在共享的流狀態(tài)表中。如圖4所示,狀態(tài)表中為每個(gè)網(wǎng)絡(luò)功能預(yù)留了存儲(chǔ)自定義狀態(tài)的內(nèi)存空間。網(wǎng)絡(luò)功能在處理數(shù)據(jù)包時(shí),只要使用描述符中的流指針便可獲取其對(duì)應(yīng)流的狀態(tài)存儲(chǔ)位置,因此網(wǎng)絡(luò)功能可以在此方便地維護(hù)自定義狀態(tài),無(wú)須預(yù)先創(chuàng)建和維護(hù)額外的狀態(tài)表。在流狀態(tài)表中,系統(tǒng)為每個(gè)流中的每個(gè)網(wǎng)絡(luò)功能的自定義狀態(tài)預(yù)留了64 bit的空間。該大小對(duì)于絕大多數(shù)網(wǎng)絡(luò)功能已經(jīng)足夠。但如果網(wǎng)絡(luò)功能開(kāi)發(fā)者希望使用更大的存儲(chǔ)空間,可將狀態(tài)存儲(chǔ)空間分配到網(wǎng)絡(luò)功能私有的內(nèi)存空間中,并將該位置的指針保存在公有的狀態(tài)表中?;谝陨戏椒?,網(wǎng)絡(luò)功能只需要進(jìn)行一到兩次指針訪問(wèn),便可以獲取到數(shù)據(jù)包對(duì)應(yīng)流的自定義狀態(tài),而無(wú)須自行維護(hù)流狀態(tài)表。

        (4) 超時(shí)機(jī)制。流生命周期的終止(例如TCP連接關(guān)閉)會(huì)使得流狀態(tài)存儲(chǔ)的空間被釋放,以便為新的流存儲(chǔ)狀態(tài)提供空間。但是,由于NFV系統(tǒng)中的網(wǎng)絡(luò)功能服務(wù)鏈通常有一定長(zhǎng)度,可能會(huì)出現(xiàn)協(xié)議棧檢測(cè)到流已經(jīng)終止,而服務(wù)鏈中的網(wǎng)絡(luò)功能依然在處理該流的數(shù)據(jù)包的現(xiàn)象,如果在此刻該流的狀態(tài)存儲(chǔ)空間被即時(shí)回收,那網(wǎng)絡(luò)功能可能會(huì)訪問(wèn)到不正確的狀態(tài)。為了避免該問(wèn)題,本文系統(tǒng)使用超時(shí)機(jī)制,在流終止后僅記錄當(dāng)前的時(shí)間戳,以便讓系統(tǒng)在足夠長(zhǎng)時(shí)間(例如10 ms)后再對(duì)該流狀態(tài)的存儲(chǔ)空間進(jìn)行回收。

        5 實(shí) 驗(yàn)

        5.1 實(shí)驗(yàn)環(huán)境

        1) 實(shí)驗(yàn)平臺(tái)。本文實(shí)驗(yàn)服務(wù)器采用18核Intel Xeon E5-2695v4 CPU和128 GB的DDR4 ECC內(nèi)存,并配備有NVIDIATitanX (Pascal) GPU(共有3 584個(gè)CUDA核心)。該服務(wù)器的網(wǎng)絡(luò)接口使用具有雙SPF插槽的IntelXL710 40GbENIC網(wǎng)卡。軟件配置方面,服務(wù)器安裝有Ubuntu 16.04,Linux kernel版本為4.15.0-43-generic。

        2) 系統(tǒng)實(shí)現(xiàn)。我們的原型系統(tǒng)基于IntelDPDK(Data Plane Development Kit) 18.02實(shí)現(xiàn)了用戶(hù)態(tài)的網(wǎng)絡(luò)I/O。系統(tǒng)使用Docker 18.09.3容器平臺(tái),每個(gè)網(wǎng)絡(luò)功能的進(jìn)程運(yùn)行在單獨(dú)的Docker容器中。與此同時(shí),原型系統(tǒng)的基礎(chǔ)設(shè)施部分運(yùn)行在獨(dú)立的進(jìn)程中,并使用共享內(nèi)存與網(wǎng)絡(luò)功能進(jìn)行通信。為了使系統(tǒng)性能盡可能高效,我們將原型系統(tǒng)基礎(chǔ)設(shè)施和網(wǎng)絡(luò)功能中的每個(gè)線程與一個(gè)物理CPU核心使用sched_setaffinityAPI進(jìn)行綁定,以消除操作系統(tǒng)上下文切換可能帶來(lái)的性能開(kāi)銷(xiāo)。在流狀態(tài)管理方面,系統(tǒng)基于libnids 1.24實(shí)現(xiàn)協(xié)議棧相關(guān)功能,并在此基礎(chǔ)上實(shí)現(xiàn)了共享狀態(tài)機(jī)制。為了便于比較,我們還實(shí)現(xiàn)了另一套不具備共享狀態(tài)機(jī)制的對(duì)照系統(tǒng)。在對(duì)照系統(tǒng)中,除了原系統(tǒng)基礎(chǔ)設(shè)施部分的協(xié)議棧和狀態(tài)存儲(chǔ)需要由各個(gè)網(wǎng)絡(luò)功能自行實(shí)現(xiàn),其他部分與原型系統(tǒng)完全相同。

        3) 網(wǎng)絡(luò)功能。我們實(shí)現(xiàn)了4個(gè)GPU加速的網(wǎng)絡(luò)功能,以對(duì)系統(tǒng)在實(shí)際負(fù)載中的性能表現(xiàn)進(jìn)行評(píng)估。我們實(shí)現(xiàn)的網(wǎng)絡(luò)功能包括:(1)Firewall:針對(duì)包在TCP/IP層的五元組進(jìn)行過(guò)濾[18],CPU上執(zhí)行有狀態(tài)過(guò)濾,GPU上執(zhí)行無(wú)狀態(tài)過(guò)濾。(2)IPsec網(wǎng)關(guān):使用HMAC-SHA1 和AES-128 (CTR mode)進(jìn)行網(wǎng)絡(luò)包的加解密,有狀態(tài)。(3)NIDS:使用Aho-Corasick算法[19]執(zhí)行網(wǎng)絡(luò)入侵檢測(cè),有狀態(tài)。需要注意的是,各個(gè)已經(jīng)實(shí)現(xiàn)的網(wǎng)絡(luò)功能的GPU加速部分實(shí)現(xiàn)并不是高度優(yōu)化、性能領(lǐng)先的最先進(jìn)方案。本節(jié)的討論重點(diǎn)在于使用共享狀態(tài)管理機(jī)制是否能帶來(lái)系統(tǒng)的整體性能提升,而不在于性能的絕對(duì)值大小。

        4) 測(cè)試流量。使用基于IntelDPDK實(shí)現(xiàn)了一個(gè)網(wǎng)絡(luò)流量生成器,并將其部署在一臺(tái)配備Intel XL710 40GbE網(wǎng)卡的服務(wù)器上,以便提供實(shí)驗(yàn)中所需要的網(wǎng)絡(luò)流量。這臺(tái)機(jī)器與部署NFV系統(tǒng)的實(shí)驗(yàn)服務(wù)器使用速度為40 Gbit/s的光纖相連。在實(shí)驗(yàn)中,網(wǎng)絡(luò)流量生成器可以連續(xù)不斷地生成具有不同目的IP地址的TCP包,從而模擬包含大量TCP連接的網(wǎng)絡(luò)流量。

        5.2 網(wǎng)絡(luò)功能中CPU時(shí)間開(kāi)銷(xiāo)

        首先驗(yàn)證使用共享式管理機(jī)制時(shí),網(wǎng)絡(luò)功能處理數(shù)據(jù)包時(shí)CPU開(kāi)銷(xiāo)的變化。本實(shí)驗(yàn)中,使用Firewall、IPsec和NIDS三個(gè)GPU加速的網(wǎng)絡(luò)功能,分別在原型系統(tǒng)與對(duì)照系統(tǒng)中測(cè)量了這些網(wǎng)絡(luò)功能處理每批數(shù)據(jù)包時(shí),CPU處理時(shí)間的平均占比。實(shí)驗(yàn)結(jié)果如圖5所示,其中原型系統(tǒng)在以上各類(lèi)網(wǎng)絡(luò)功能中均有效地減少了CPU處理部分的時(shí)間開(kāi)銷(xiāo)占總開(kāi)銷(xiāo)的比重,在批數(shù)量為1 024時(shí),三個(gè)網(wǎng)絡(luò)功能的CPU處理時(shí)間的比重分別減少了26.7%、26.5%和24.0%。這是因?yàn)樵谠拖到y(tǒng)中,網(wǎng)絡(luò)功能可以利用共享式狀態(tài)管理特性,節(jié)省大量協(xié)議棧處理和狀態(tài)管理的計(jì)算,從而降低CPU-GPU計(jì)算流水線中CPU部分的開(kāi)銷(xiāo)。

        圖5 網(wǎng)絡(luò)功能中CPU執(zhí)行時(shí)間比例

        另外,從實(shí)驗(yàn)結(jié)果可以看出,隨著批處理數(shù)量的增長(zhǎng),網(wǎng)絡(luò)功能中的CPU處理的開(kāi)銷(xiāo)占總處理開(kāi)銷(xiāo)的比例也顯著增加。這是由于網(wǎng)絡(luò)功能的CPU和GPU處理流水線中,CPU部分的并行度較低,因此其處理時(shí)間受到批數(shù)量的影響相比于GPU更大,最終體現(xiàn)在隨著批數(shù)量增大,CPU處理時(shí)間比例也隨之增長(zhǎng)。這種效應(yīng)在能夠于GPU中大量并行處理數(shù)據(jù)包載荷的IPsec和NIDS兩個(gè)網(wǎng)絡(luò)功能中尤為突出。這類(lèi)網(wǎng)絡(luò)功能中,共享式狀態(tài)管理對(duì)CPU處理開(kāi)銷(xiāo)的優(yōu)化更為明顯,因此,使用共享式狀態(tài)管理后,后兩種網(wǎng)絡(luò)功能在CPU上開(kāi)銷(xiāo)降低的效果更為顯著。

        5.3 服務(wù)鏈上的吞吐量

        本節(jié)分別在原型系統(tǒng)和對(duì)照系統(tǒng)上部署由多個(gè)網(wǎng)絡(luò)功能組成的服務(wù)鏈,以評(píng)估共享式狀態(tài)管理機(jī)制對(duì)系統(tǒng)吞吐量的影響。本實(shí)驗(yàn)中,我們使用的服務(wù)鏈由三個(gè)網(wǎng)絡(luò)功能構(gòu)成:Firewall-NIDS-IPsec網(wǎng)關(guān)。由于在GPU加速的網(wǎng)絡(luò)功能中,通??梢酝ㄟ^(guò)調(diào)節(jié)每次傳入GPU的數(shù)據(jù)包批數(shù)量(batchsize)來(lái)增加數(shù)據(jù)包處理延遲的代價(jià)換取吞吐量的提升,為了公正對(duì)比兩系統(tǒng),我們?cè)贕PU資源調(diào)度中實(shí)現(xiàn)了動(dòng)態(tài)批數(shù)量調(diào)節(jié)機(jī)制,以確保兩個(gè)系統(tǒng)中各個(gè)網(wǎng)絡(luò)功能的延遲均相同(均為1 ms)。在此實(shí)驗(yàn)條件下,使用具有不同TCP流數(shù)量的網(wǎng)絡(luò)流量分別原型系統(tǒng)和對(duì)照系統(tǒng)中測(cè)量了系統(tǒng)的最高吞吐量的相對(duì)差異,實(shí)驗(yàn)結(jié)果如圖6所示。從實(shí)驗(yàn)結(jié)果可以看出,當(dāng)數(shù)據(jù)包大小為512 B時(shí),本文的原型系統(tǒng)實(shí)現(xiàn)了最多達(dá)2倍的吞吐量提升,而其中的主要原因在于網(wǎng)絡(luò)功能中協(xié)議棧處理和狀態(tài)管理開(kāi)銷(xiāo)的大大降低。原型系統(tǒng)中使用3.2節(jié)的狀態(tài)管理方法,可以允許網(wǎng)絡(luò)功能在無(wú)須實(shí)現(xiàn)協(xié)議棧的情況下,利用框架提供的包描述符實(shí)現(xiàn)流狀態(tài)和自定義狀態(tài)的快速維護(hù),網(wǎng)絡(luò)功能中CPU處理的時(shí)間開(kāi)銷(xiāo)降低,在網(wǎng)絡(luò)功能處理總延遲一定的情況下,GPU資源調(diào)度器可以進(jìn)一步通過(guò)調(diào)整GPU批數(shù)量提升GPU處理階段計(jì)算效率,從而提升整個(gè)服務(wù)鏈數(shù)據(jù)包處理吞吐量。另外,從圖6可以看出,本文原型系統(tǒng)相比對(duì)照系統(tǒng)獲得的性能提升隨著網(wǎng)絡(luò)流量中流數(shù)量的增加而增長(zhǎng)。這是因?yàn)榱鲾?shù)量的增加可以顯著增大協(xié)議棧處理和狀態(tài)管理中的內(nèi)存訪問(wèn)開(kāi)銷(xiāo),而共享式狀態(tài)管理有效地分?jǐn)偭祟~外的開(kāi)銷(xiāo),從而降低了網(wǎng)絡(luò)功能中的CPU負(fù)載并防止其成為系統(tǒng)的性能瓶頸。

        圖6 服務(wù)鏈上共享式狀態(tài)管理帶來(lái)的吞吐量提升

        6 結(jié) 語(yǔ)

        本文對(duì)GPU加速的NFV系統(tǒng)中,利用虛擬化方式獨(dú)立部署網(wǎng)絡(luò)功能的一類(lèi)系統(tǒng)中存在的問(wèn)題進(jìn)行了分析,發(fā)現(xiàn)這類(lèi)系統(tǒng)存在網(wǎng)絡(luò)功能的CPU處理階段性能低效的問(wèn)題。針對(duì)以上問(wèn)題,本文提出一個(gè)新的針對(duì)GPU加速的NFV系統(tǒng)框架,通過(guò)共享式狀態(tài)管理機(jī)制,減少網(wǎng)絡(luò)功能中重復(fù)性的協(xié)議棧處理和流狀態(tài)管理開(kāi)銷(xiāo),以提升GPU加速的效果。通過(guò)對(duì)原型系統(tǒng)進(jìn)行實(shí)驗(yàn)評(píng)估,本文驗(yàn)證了該機(jī)制有效地降低了GPU加速的NFV系統(tǒng)網(wǎng)絡(luò)功能處理流水線中CPU階段的開(kāi)銷(xiāo),使得整個(gè)處理流水線更加高效,并在常見(jiàn)的網(wǎng)絡(luò)功能服務(wù)鏈上達(dá)到了最高2倍的吞吐量提升。

        猜你喜歡
        流水線數(shù)據(jù)包虛擬化
        Gen Z Migrant Workers Are Leaving the Assembly Line
        流水線
        基于OpenStack虛擬化網(wǎng)絡(luò)管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
        電子制作(2019年10期)2019-06-17 11:45:10
        SmartSniff
        對(duì)基于Docker的虛擬化技術(shù)的幾點(diǎn)探討
        電子制作(2018年14期)2018-08-21 01:38:20
        虛擬化技術(shù)在計(jì)算機(jī)技術(shù)創(chuàng)造中的應(yīng)用
        報(bào)廢汽車(chē)拆解半自動(dòng)流水線研究
        存儲(chǔ)虛擬化還有優(yōu)勢(shì)嗎?
        基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
        SIMATIC IPC3000 SMART在汽車(chē)流水線領(lǐng)域的應(yīng)用
        在线观看老湿视频福利| 久久99国产综合精品女同| 国产香蕉视频在线播放| 极品av麻豆国产在线观看| 精品伊人久久香线蕉| 在线免费观看视频播放| 国产精品国产三级野外国产| 99爱在线精品免费观看| 牛牛本精品99久久精品88m| 超高清丝袜美腿视频在线| 日本一区二区免费在线看| 国产一区内射最近更新| www.狠狠艹| 偷拍一区二区三区在线观看| 麻豆精品国产av在线网址| 男女爱爱好爽视频免费看| 久久福利青草精品资源| 久久中文字幕av一区二区不卡 | 久久久久成人精品无码| 欧美成人三级一区二区在线观看| 日韩av一区在线播放| 国产一区二区视频在线免费观看| v一区无码内射国产| 精品一区二区三区免费爱| 人妻体体内射精一区中文字幕| 亚洲熟女综合色一区二区三区 | 国产精品无码久久久久久久久久| 精品一区二区av天堂| 在线观看视频国产一区二区三区| 粉嫩av国产一区二区三区 | 无码人妻一区二区三区免费手机| 中文字幕手机在线精品| 国产激情一区二区三区| 少妇极品熟妇人妻无码| 亚洲中文字幕人妻诱惑| 变态另类人妖一区二区三区| 国语精品一区二区三区| 国内精品国产三级国产av另类| 美女被黑人巨大入侵的的视频| 国产精品妇女一二三区| 亚洲人成亚洲人成在线观看|