畢軍,孫晨,于恒
?
網(wǎng)絡(luò)功能虛擬化場(chǎng)景下的并行加速
畢軍,孫晨,于恒
(清華大學(xué),北京 100084)
在網(wǎng)絡(luò)功能虛擬化場(chǎng)景下,每個(gè)網(wǎng)絡(luò)功能都以軟件的形式來實(shí)現(xiàn)。但傳統(tǒng)的串行網(wǎng)絡(luò)功能組鏈方式將帶來極大的性能損耗。而如今針對(duì)網(wǎng)絡(luò)功能進(jìn)行加速的工作,主要集中在優(yōu)化該串行鏈的每個(gè)組成成分上。提出了一個(gè)高性能的系統(tǒng)框架,通過讓網(wǎng)絡(luò)功能并行地對(duì)數(shù)據(jù)分組進(jìn)行處理,提高網(wǎng)絡(luò)功能虛擬化場(chǎng)景下服務(wù)鏈的整體性能。該系統(tǒng)由3個(gè)部分組成。首先,該系統(tǒng)為管理員提供了一個(gè)策略描述語言來直觀地描述串行或并行的組鏈意圖。然后,該系統(tǒng)的編排器智能地鑒別網(wǎng)絡(luò)功能之間的依賴性,并基于所提供的策略,生成高性能的“服務(wù)圖”。最后,該系統(tǒng)的底層實(shí)現(xiàn)通過執(zhí)行輕量級(jí)的數(shù)據(jù)分組復(fù)制、分布式的并行分組轉(zhuǎn)發(fā)和負(fù)載均衡后的數(shù)據(jù)分組合并來支持網(wǎng)絡(luò)功能的并行處理?;贒PDK技術(shù),在Linux容器中實(shí)現(xiàn)了該系統(tǒng)的原型機(jī)。通過實(shí)驗(yàn)驗(yàn)證可知,該系統(tǒng)能極大地減少真實(shí)世界中服務(wù)鏈的處理時(shí)延。
網(wǎng)絡(luò)功能虛擬化;并行;服務(wù)鏈
為解決傳統(tǒng)的專用middlebox[1]所帶來的一系列問題,網(wǎng)絡(luò)功能虛擬化(network function virtualization,NFV)基于商用服務(wù)器硬件,利用虛擬化技術(shù),實(shí)現(xiàn)各種各樣的網(wǎng)絡(luò)功能(network function,NF)。在運(yùn)營(yíng)商網(wǎng)絡(luò)[2]、數(shù)據(jù)中心[3-4]、移動(dòng)網(wǎng)[5]和企業(yè)網(wǎng)[6]中,網(wǎng)絡(luò)管理員通常需要數(shù)據(jù)流以特定的順序穿過多個(gè)NF(例如依次通過防火墻、入侵檢測(cè)系統(tǒng)和代理服務(wù)器)[7-9],而以上需求通常被定義為服務(wù)組鏈需求。同時(shí),軟件定義網(wǎng)絡(luò)(software defined networking,SDN)也常被用來在各個(gè)特定的NF之間進(jìn)行導(dǎo)流,以執(zhí)行該組鏈策略[3, 9-14]。所以NFV和SDN技術(shù)能共同提升在串行服務(wù)組鏈場(chǎng)景下的靈活性與動(dòng)態(tài)性。
NFV在帶來如此多好處的同時(shí),也伴隨著一些問題出現(xiàn)[15]?;谲浖?shí)現(xiàn)的NF尤其容易帶來較明顯的性能損失。并且,服務(wù)鏈所帶來的時(shí)延將隨著組鏈長(zhǎng)度的增加而線性增加。而對(duì)某些時(shí)延敏感型應(yīng)用來說,這種情況將是不可接受的[16-17]。
對(duì)于在NFV場(chǎng)景下基于軟件實(shí)現(xiàn)的NF所帶來的性能缺陷問題,國(guó)際上已有多項(xiàng)研究工作來對(duì)其進(jìn)行改善。通過圖1所示的服務(wù)鏈來展示各自的優(yōu)化點(diǎn)。
?? 單個(gè)NF的加速:ClickNP[17]提出了將部分本應(yīng)由軟件實(shí)現(xiàn)的邏輯功能通過可編程硬件(例如FPGA)實(shí)現(xiàn)的方式加速單個(gè)NF的處理速度。而NetBricks[18]則遺棄了傳統(tǒng)的基于虛擬機(jī)或容器技術(shù)的NF實(shí)現(xiàn)方式,通過將同一服務(wù)鏈中的所有NF運(yùn)行在單個(gè)處理核上的方式來提高性能。
?? 數(shù)據(jù)分組傳遞的加速:Intel DPDK[19]、ClickOS[20]和NetVM[21-22]通過優(yōu)化數(shù)據(jù)分組從網(wǎng)卡端口到虛擬機(jī)和虛擬機(jī)之間的傳遞過程來提高性能。
?? NF模塊化:OpenBox[7]對(duì)NF進(jìn)行了模塊分解(在參考文獻(xiàn)[6, 10, 23]中也有提到),然后通過在串行服務(wù)組鏈時(shí),共享NF之間相同的組建模塊,提高服務(wù)鏈的整體性能。
而以上研究都是在水平范圍內(nèi)對(duì)NF的性能問題進(jìn)行改善。例如,對(duì)服務(wù)鏈中的每個(gè)NF水平地進(jìn)行了加速,但仍然保持了所有NF之間串行的組鏈方式。
圖1 傳統(tǒng)的串行服務(wù)組鏈方式[4]
但是,通過對(duì)服務(wù)鏈中NF的細(xì)致觀察發(fā)現(xiàn),一些NF之間并不存在任何依賴關(guān)系,可以并行地對(duì)數(shù)據(jù)分組進(jìn)行處理。在如圖1所示的服務(wù)鏈中,monitor(監(jiān)測(cè)器)僅僅維護(hù)數(shù)據(jù)分組的統(tǒng)計(jì)數(shù)據(jù)而不需要對(duì)數(shù)據(jù)分組做任何修改。所以,如圖2所示的服務(wù)框架,可以同時(shí)將數(shù)據(jù)流送入monitor和firewall(防火墻)中,然后保留防火墻中的數(shù)據(jù)流,該方式將獲得和串行服務(wù)組鏈情況下相同的處理結(jié)果。通過這種方式,該服務(wù)鏈的相對(duì)長(zhǎng)度將減少為3,從而在理論上減少25%時(shí)延。
圖2 支持NF并行的系統(tǒng)框架
因此,不同于以上所提及的所有NFV加速思想,本文抓住了在垂直范圍內(nèi)對(duì)NFV性能進(jìn)行提升的機(jī)會(huì)?;谝陨系挠^察,提出了一種高性能的系統(tǒng)框架,創(chuàng)新性地引入NF并行的思想以減少NFV場(chǎng)景下時(shí)延。如圖2所示,該系統(tǒng)框架由三大邏輯部分組成,包括策略描述語言、系統(tǒng)編排器和基礎(chǔ)設(shè)施層。
首先討論了在NFV場(chǎng)景下引入NF并行思想的動(dòng)機(jī),然后介紹了在設(shè)計(jì)過程中所面臨的挑戰(zhàn)。
NF并行將極大地降低時(shí)延:為了獲得在引入并行思想后更直觀的優(yōu)化效果,收集了在企業(yè)網(wǎng)中常見的NF,其所進(jìn)行的操作和所占的比例見表1[1,6],其中,%列代表其在企業(yè)網(wǎng)中所占的百分比,R代表讀操作,W代表寫操作,T代表執(zhí)行操作?;谶@些統(tǒng)計(jì)數(shù)據(jù),計(jì)算出53.8%的NF之間都能對(duì)數(shù)據(jù)分組并行進(jìn)行處理,這將給NF并行帶來極大的優(yōu)化空間。
NF并行能兼容其他加速技術(shù):首先,對(duì)于單個(gè)NF性能的加速技術(shù)[17-18],NF并行思想能對(duì)每個(gè)加速后的NF進(jìn)行并行從而獲得更高的性能。然后,能利用快速數(shù)據(jù)分組傳遞技術(shù)[19, 21-22]在并行情況下加速數(shù)據(jù)分組的傳遞過程。最后,無論是一個(gè)整體的NF,還是模塊化的NF,都能從并行中受益。
基于以上動(dòng)機(jī),提出了一個(gè)創(chuàng)新性的系統(tǒng)框架,將NF并行的思想引入NFV場(chǎng)景以提高其性能。總結(jié)了在該系統(tǒng)設(shè)計(jì)過程中的4個(gè)關(guān)鍵挑戰(zhàn),具體如下。
表1 常用NF及其對(duì)數(shù)據(jù)分組的操作 [1, 6, 24]
(1)服務(wù)圖策略描述語言的設(shè)計(jì)
為了支持NF的并行,需要一種新的更直觀的方式來描述NF串行和并行的組鏈意圖,以此來獲得更優(yōu)化的并行服務(wù)圖。本文提出了一種擁有更豐富語義的策略描述語言來解決該問題。
(2)構(gòu)建并行服務(wù)圖的系統(tǒng)編排器設(shè)計(jì)
支持并行對(duì)編排器分析NF之間的依賴性和自動(dòng)將策略描述語言編譯為高性能服務(wù)圖的能力提出了挑戰(zhàn)。但是,人工對(duì)所有NF對(duì)之間的依賴關(guān)系進(jìn)行分析,不僅耗費(fèi)時(shí)間,而且缺乏可擴(kuò)展性。為了解決該問題,提出了NF依賴性分析原則,通過在編排器中運(yùn)行特定的算法,自動(dòng)檢測(cè)NF之間的依賴性。
(3)減少資源損耗的系統(tǒng)編排器設(shè)計(jì)
引入NF并行的思想,可能需要對(duì)每個(gè)數(shù)據(jù)分組進(jìn)行一次甚至多次的復(fù)制。因此,系統(tǒng)編排器在構(gòu)建高性能服務(wù)圖時(shí),還面臨著最小化資源損耗的挑戰(zhàn)。一種解決方法是采用consolidation的思想[6, 21],將服務(wù)圖中所有的NF放在同一臺(tái)硬件服務(wù)器上運(yùn)行,以便只在內(nèi)存中存儲(chǔ)復(fù)制的數(shù)據(jù)分組。為了獲得更好的優(yōu)化效果,該系統(tǒng)編排器還需智能地進(jìn)行分析,以爭(zhēng)取在無需進(jìn)行數(shù)據(jù)分組復(fù)制的情況下實(shí)現(xiàn)NF之間的并行。
(4)支持NF并行的基礎(chǔ)設(shè)施層設(shè)計(jì)
首先,該基礎(chǔ)設(shè)施層需要引入一個(gè)輕量級(jí)的數(shù)據(jù)分組復(fù)制機(jī)制來最小化復(fù)制時(shí)所帶來的性能損耗。然后,該基礎(chǔ)設(shè)施層還需要一個(gè)合并模塊來對(duì)來自多個(gè)NF處理后的多個(gè)數(shù)據(jù)分組進(jìn)行合并。最后,目前對(duì)NF之間的數(shù)據(jù)分組進(jìn)行轉(zhuǎn)發(fā)的方案是基于一個(gè)集中的虛擬交換機(jī)[19-21]。但是,在該集中式交換機(jī)中的排隊(duì)時(shí)延將降低性能。
對(duì)于傳統(tǒng)的串行服務(wù)組鏈方式,網(wǎng)絡(luò)管理員只需定義一種語言,為串行服務(wù)鏈中的每個(gè)NF分配具體的位置即可,見表2中的第1行。但是,本系統(tǒng)希望構(gòu)建支持并行的高性能服務(wù)圖,所以需要一種更直觀的方式來描述串行和并行的NF組鏈意圖。因此,本系統(tǒng)定義了3種策略描述規(guī)則,網(wǎng)絡(luò)管理員可以通過將幾種描述規(guī)則組合起來表達(dá)自己的組鏈意圖。對(duì)示例的串行組鏈和策略語言組鏈的不同表達(dá)方式見表2,其中,F(xiàn)W代表防火墻,LB代表load balance(負(fù)載均衡),VPN代表virtual private network(虛擬專用網(wǎng)絡(luò))。
表2 對(duì)示例的串行組鏈和策略語言組鏈的不同表達(dá)方式
order(NF1,before,NF2):這條規(guī)則描述了兩個(gè)NF之間需要的執(zhí)行順序。如圖1所示的服務(wù)鏈,網(wǎng)絡(luò)管理員可以通過指定order(VPN,before,monitor)讓數(shù)據(jù)流首先通過VPN,再通過monitor。然后,系統(tǒng)編排器會(huì)在NF之間的order規(guī)則中尋求并行執(zhí)行的機(jī)會(huì)來提高性能。
priority(NF1 > NF2):在該系統(tǒng)中,網(wǎng)絡(luò)管理員需要能描述兩個(gè)NF之間并行執(zhí)行意圖的規(guī)則。但是,這兩個(gè)NF之間的動(dòng)作可能會(huì)產(chǎn)生沖突。例如,firewall和IPS會(huì)在是否丟棄某個(gè)數(shù)據(jù)分組的意見上產(chǎn)生分歧。因此,網(wǎng)絡(luò)管理員可以通過指定priority(IPS > firewall)規(guī)則來指示系統(tǒng),當(dāng)兩個(gè)NF并行時(shí),如果發(fā)生沖突,則采用IPS的處理結(jié)果。
position(NF,first/last):圖1所示的數(shù)據(jù)中心服務(wù)鏈[4]需要所有的數(shù)據(jù)分組首先被VPN處理。這提出了將某個(gè)NF放于服務(wù)圖中特定位置的需求。但是,由于不能預(yù)先知道經(jīng)過優(yōu)化的服務(wù)圖的最終結(jié)構(gòu),只能為某個(gè)NF在服務(wù)圖中指定最前或最后的位置。設(shè)計(jì)了position(NF1,first/last)規(guī)則來描述這種需求。例如,可通過position(VPN,first)規(guī)則來保證所有的數(shù)據(jù)分組首先穿過VPN。
本系統(tǒng)編排器以策略描述規(guī)則作為輸入,并自動(dòng)分析NF之間的依賴關(guān)系,以盡可能并行的方式將這些規(guī)則編譯為高性能的服務(wù)圖。
(1)NF并行可能性的分析
對(duì)于策略描述語言中以priority規(guī)則定義的兩個(gè)NF,可直接視為可并行的兩個(gè)NF。對(duì)于以position規(guī)則定義的兩個(gè)NF,可直接以串行的方式將其放置于服務(wù)圖的頭部或尾部。但是,對(duì)于以order規(guī)則定義的兩個(gè)NF,需要進(jìn)一步分析其并行的可能性。為了分析這NF之間是否可并行,提出了結(jié)果一致性原則:當(dāng)兩個(gè)NF并行時(shí)對(duì)相同數(shù)據(jù)分組的處理結(jié)果和每個(gè)NF各自的內(nèi)部狀態(tài)與串行服務(wù)組鏈時(shí)的處理結(jié)果和內(nèi)部狀態(tài)都相同時(shí),本文認(rèn)為這兩個(gè)NF是能并行執(zhí)行的。例如,假設(shè)NF1對(duì)分組頭進(jìn)行讀操作,而NF2接著對(duì)相同的分組頭域進(jìn)行修改。為了保證NF1讀到的是分組頭的原始信息,而不是經(jīng)過NF2修改后的信息,可以對(duì)數(shù)據(jù)分組進(jìn)行復(fù)制,然后將這兩份數(shù)據(jù)分組并行地發(fā)送到這兩個(gè)NF中。若NF1首先對(duì)分組頭進(jìn)行寫操作,而NF2再接著對(duì)分組頭進(jìn)行讀操作,該管理員希望傳遞給NF2的數(shù)據(jù)是經(jīng)過NF1修改后的結(jié)果。則此時(shí),這兩個(gè)NF應(yīng)該以串行的方式來組鏈。
(2)減少額外資源損耗
在priority規(guī)則或可并行的order規(guī)則下,如果兩個(gè)NF之間能通過復(fù)制數(shù)據(jù)分組的方式來并行執(zhí)行,則會(huì)招致額外的資源損耗。為了解決這個(gè)問題,該系統(tǒng)引入了許多優(yōu)化技巧來減少數(shù)據(jù)分組復(fù)制時(shí)的額外資源損耗。本文根據(jù)結(jié)果一致性原則,總結(jié)出了不需要數(shù)據(jù)分組復(fù)制就能支持并行的情況。例如,假設(shè)NF1和NF2都對(duì)數(shù)據(jù)分組進(jìn)行讀操作,因?yàn)樽x操作并不對(duì)數(shù)據(jù)分組進(jìn)行任何修改,所以這兩個(gè)NF能同時(shí)對(duì)數(shù)據(jù)分組進(jìn)行讀操作。為了進(jìn)一步減少數(shù)據(jù)分組復(fù)制所帶來的額外資源損耗,提出了以下資源優(yōu)化的技巧。
?? 內(nèi)存重利用:對(duì)于讀—寫和寫—寫操作的情況,需要分析這兩個(gè)操作是否在同一個(gè)操作域中執(zhí)行來判斷是否對(duì)其進(jìn)行數(shù)據(jù)分組復(fù)制。如果這兩個(gè)NF讀或?qū)懺摂?shù)據(jù)分組中的不同域,則它們能同時(shí)對(duì)該數(shù)據(jù)分組安全地進(jìn)行操作。
?? 只復(fù)制數(shù)據(jù)分組頭部:表1中,觀察到只有7%的NF需要對(duì)數(shù)據(jù)分組的有效載荷進(jìn)行修改。并且,在數(shù)據(jù)中心中數(shù)據(jù)分組的平均長(zhǎng)度為724 byte[25]。據(jù)此可知,分組頭僅占整個(gè)分組長(zhǎng)度的8.8%。因此,對(duì)于一些NF并行的情況,本文提出了只復(fù)制數(shù)據(jù)分組頭部的技巧。
(3)NF并行可能性分析算法
基于以上提出的NF并行可能性分析和資源優(yōu)化技巧,本文提出了NF并行可能性分析算法來對(duì)以order規(guī)則定義的兩個(gè)NF進(jìn)行分析。該系統(tǒng)編排器以order規(guī)則定義的兩個(gè)NF作為輸入。這兩個(gè)NF可能出現(xiàn)不需復(fù)制即可并行、需復(fù)制才能并行和不可并行3種結(jié)果。首先,該算法從AT表中獲取這兩個(gè)NF要執(zhí)行的所有操作。然后該算法窮盡地對(duì)這兩個(gè)NF中的所有操作對(duì)進(jìn)行分析以確定其是否有并行的可能性。對(duì)于讀-—寫和寫—寫的情況,本文需要進(jìn)一步確認(rèn)這兩個(gè)操作是否針對(duì)同一域。如果這兩個(gè)NF在復(fù)制數(shù)據(jù)分組的情況下可以并行,還需對(duì)沖突的動(dòng)作進(jìn)行記錄。最后,該算法將產(chǎn)生這兩個(gè)NF是否能并行的結(jié)果以及是否存在沖突的操作。
(4)服務(wù)圖構(gòu)建
該系統(tǒng)編譯器首先將策略描述規(guī)則轉(zhuǎn)換為預(yù)先定義的數(shù)據(jù)結(jié)構(gòu),然后將這些數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為獨(dú)立的子圖,最后將這些子圖合并,產(chǎn)生最后的服務(wù)圖。
(5)將策略轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)
本文設(shè)計(jì)了兩種類型的數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)策略,如圖3所示。對(duì)于position規(guī)則,通過圖中左邊所示的數(shù)據(jù)結(jié)構(gòu)來保存該NF的類型和其在服務(wù)圖中的位置。對(duì)于order規(guī)則,本文通過算法1來確定其是否能并行處理和可能的沖突操作。order和priority規(guī)則最后都被轉(zhuǎn)換成了如圖3右邊所示的數(shù)據(jù)結(jié)構(gòu)。
圖3 并行服務(wù)圖構(gòu)建過程
(6)將數(shù)據(jù)結(jié)構(gòu)編譯為子圖
首先將不能并行的NF以串行的方式進(jìn)行組鏈(如圖3中的NF2、NF3和NF4),然后將具有同一NF的數(shù)據(jù)結(jié)構(gòu)組合成子圖。該系統(tǒng)擁有3種類型的子圖結(jié)構(gòu),包括單個(gè)NF(例如NF1、NF8)、樹形結(jié)構(gòu)(例如NF2、NF3和NF4)和并行結(jié)構(gòu)(例如NF5、NF6和NF7)。
(7)將子圖合并成服務(wù)圖
將子圖進(jìn)行合并,以產(chǎn)生最后的服務(wù)圖。首先,以position規(guī)則定義的NF被放置到服務(wù)圖的頭部或尾部(NF1)。然后,將每一個(gè)生成的子圖(包括單個(gè)的NF)視為一個(gè)NF,窮盡地對(duì)每一個(gè)子圖對(duì)進(jìn)行分析,以確定其之間是否存在依賴性。最后,將所有的獨(dú)立子圖并行放置(如圖3所示)?;趯?duì)NF的依賴性分析,還生成了數(shù)據(jù)分組轉(zhuǎn)發(fā)表和合并表。
圖4展示了該基礎(chǔ)設(shè)施層的設(shè)計(jì)全貌。正如前面所提到的,該系統(tǒng)為了避免占用額外的帶寬資源,采用了consolidation的設(shè)計(jì)思想。為了能在NF之間進(jìn)行數(shù)據(jù)分組傳遞時(shí)獲得高性能,采用了零數(shù)據(jù)分組復(fù)制的導(dǎo)流方法[20-21]。
圖4 基礎(chǔ)設(shè)施層設(shè)計(jì)架構(gòu)
圖4中的加粗實(shí)線代表該系統(tǒng)中的數(shù)據(jù)分組處理流程。當(dāng)數(shù)據(jù)分組到達(dá)服務(wù)器時(shí),通過一個(gè)分類器將數(shù)據(jù)分組描述符發(fā)送到相應(yīng)的服務(wù)圖上。對(duì)于數(shù)據(jù)分組的傳遞,本文設(shè)計(jì)了一個(gè)分布式的NF運(yùn)行環(huán)境,高效地在各個(gè)NF之間并行地傳遞數(shù)據(jù)分組。最后,同一數(shù)據(jù)分組的多個(gè)版本被送入合并模塊中,以產(chǎn)生最后的輸出,并且該模塊能被編排器動(dòng)態(tài)地進(jìn)行配置。
數(shù)據(jù)分組分類器:該分類器模塊從網(wǎng)卡處取得到達(dá)的數(shù)據(jù)分組,并找出與之相應(yīng)的服務(wù)圖信息,包括合并模塊中需要多少份復(fù)制的數(shù)據(jù)分組、如何對(duì)這些復(fù)制的數(shù)據(jù)分組進(jìn)行合并以及該服務(wù)圖的第一跳是哪個(gè)NF等信息。
NF之間的數(shù)據(jù)分組傳遞:在NF對(duì)數(shù)據(jù)分組進(jìn)行處理后,該系統(tǒng)需將該數(shù)據(jù)分組傳遞到服務(wù)圖中相應(yīng)的下一個(gè)NF中,并在需要時(shí)對(duì)其進(jìn)行復(fù)制。如前所述,用集中的虛擬交換機(jī)進(jìn)行數(shù)據(jù)分組轉(zhuǎn)發(fā)可能會(huì)導(dǎo)致性能下降。為了解決該問題,該系統(tǒng)將數(shù)據(jù)分組的轉(zhuǎn)發(fā)任務(wù)進(jìn)行分解,并利用每個(gè)NF來獨(dú)立并行地將數(shù)據(jù)分組轉(zhuǎn)發(fā)至下一個(gè)NF中。圖4中,對(duì)數(shù)據(jù)分組處理完畢后,由該NF的運(yùn)行環(huán)境將該數(shù)據(jù)分組的描述符復(fù)制到下一個(gè)NF的接收隊(duì)列中,以實(shí)現(xiàn)數(shù)據(jù)分組的傳遞。
數(shù)據(jù)分組合并模塊:在所有的NF都對(duì)數(shù)據(jù)分組處理完畢后,該數(shù)據(jù)分組的多個(gè)版本被送入合并模塊中來產(chǎn)生最后的輸出。為處理每個(gè)數(shù)據(jù)分組的所有版本,該合并模塊需承受巨大的負(fù)載,并有可能因此成為整個(gè)系統(tǒng)的性能瓶頸。為了解決這個(gè)挑戰(zhàn),本文提出了在同一臺(tái)服務(wù)器中部署多個(gè)合并模塊的方法,并設(shè)計(jì)了合并代理以在多個(gè)合并模塊中進(jìn)行負(fù)載均衡。
本文基于16.11版本的DPDK實(shí)現(xiàn)了該系統(tǒng)原型和NF操作收集工具。基于兩個(gè)配備有兩塊Intel(R) Xeon(R) E5-2690 v2 CPU(3.00 GHz, 10個(gè)物理核)、256 GB RAM和兩塊10 Gbit/s網(wǎng)卡的服務(wù)器組成的試驗(yàn)床對(duì)其性能進(jìn)行評(píng)估。該服務(wù)器為運(yùn)行版本號(hào)為4.4.0-31的Linux內(nèi)核,并利用Docker容器技術(shù)[25]來運(yùn)行NF。
對(duì)于測(cè)試所用的流量,通過在另一臺(tái)服務(wù)器上運(yùn)行基于DPDK的數(shù)據(jù)分組發(fā)送器來生成數(shù)據(jù)分組,并通過網(wǎng)線與測(cè)試服務(wù)器直連。該分組發(fā)送器通過發(fā)送并接收數(shù)據(jù)分組來測(cè)試時(shí)延和沒有分組丟失情況下的最大吞吐率。為了評(píng)估該系統(tǒng),參考以往研究,實(shí)現(xiàn)了L3 forwarder(轉(zhuǎn)發(fā)器)、load balancer(負(fù)載均衡器)、firewall(防火墻)、IDS、VPN、monitor(監(jiān)視器)等NF。
串行服務(wù)鏈的性能:在OpenNetVM和本系統(tǒng)中以相同的方式實(shí)現(xiàn)了一個(gè)L3 forwarder,并將多個(gè)相同的L3 forwarder組成一條串行的服務(wù)鏈。使鏈的長(zhǎng)度從1到5發(fā)生改變。相比OpenNetVM,本系統(tǒng)會(huì)帶來較小的時(shí)延損耗,但在任意數(shù)據(jù)分組大小時(shí),都能達(dá)到線速的轉(zhuǎn)發(fā)性能。
NF復(fù)雜度的影響:對(duì)在本系統(tǒng)中實(shí)現(xiàn)的6個(gè)NF的性能進(jìn)行測(cè)量,將并行度控制為2。本文還比較了在64 byte小分組的情況下,需要進(jìn)行數(shù)據(jù)分組復(fù)制和不需要進(jìn)行數(shù)據(jù)分組復(fù)制時(shí)的優(yōu)化程度。可以發(fā)現(xiàn),隨著NF復(fù)雜度的增加,NF并行化所帶來的時(shí)延優(yōu)化程度也增加。
NF并行度的影響:為了獲得并行度與優(yōu)化效果的關(guān)系,將并行的firewall數(shù)量從2一直增加到5,分析復(fù)制或不復(fù)制數(shù)據(jù)分組時(shí)的性能??梢杂^察到隨著NF并行度的增加,當(dāng)不需要復(fù)制數(shù)據(jù)分組時(shí),時(shí)延減少比例從33%升至52%;而當(dāng)需要復(fù)制數(shù)據(jù)分組時(shí),時(shí)延減少比例也能達(dá)到32%。因此能得出結(jié)論,當(dāng)NF并行度增加時(shí),時(shí)延也減少得更多,而吞吐率卻不怎么受影響。
額外的資源損耗:為了評(píng)估該系統(tǒng)在復(fù)制過程中所帶來的資源損耗,本文計(jì)算了額外資源占用率與TCP數(shù)據(jù)分組大?。?4 ~ 1 500 byte)和NF并行度的函數(shù)關(guān)系。對(duì)于以太網(wǎng)中任何長(zhǎng)度的TCP數(shù)據(jù)分組,其復(fù)制僅需額外占用64 byte的內(nèi)存。由資源損耗(ro)、數(shù)據(jù)分組長(zhǎng)()和并行度()構(gòu)造了一個(gè)等式:ro = 64 × (–1 ) /。本文根據(jù)數(shù)據(jù)中心的分組長(zhǎng)度分布可計(jì)算出,該系統(tǒng)的額外資源損耗為 ro = 0.088 × (–1 )。當(dāng)并行度為2時(shí),額外的資源占用率為8.8%,但卻能獲得30%的時(shí)延減少。
復(fù)制與合并時(shí)的性能損耗:對(duì)于數(shù)據(jù)分組復(fù)制的實(shí)現(xiàn),本文利用由DPDK提供的經(jīng)過優(yōu)化后的快速內(nèi)存復(fù)制接口來減少?gòu)?fù)制時(shí)的性能損耗。數(shù)據(jù)分組復(fù)制與合并僅帶來了平均9 μs的時(shí)延損耗和極小的吞吐?lián)p耗。但相比串行的組鏈方式,仍能獲得20%的時(shí)延減少。
本文提出了一個(gè)高性能的框架,通過創(chuàng)新性地在NFV場(chǎng)景下引入NF并行的思想來提高NFV的性能。該系統(tǒng)通過定義一種新的策略描述語言,讓網(wǎng)絡(luò)管理員更直觀地描述其NF之間串行或并行的服務(wù)組鏈意圖。然后該系統(tǒng)編排器將這些策略描述規(guī)則以較小的資源損耗為代價(jià)編譯為可并行的高性能服務(wù)圖。最后,該系統(tǒng)的基礎(chǔ)設(shè)施層執(zhí)行數(shù)據(jù)分組復(fù)制,導(dǎo)流和合并的操作來支持NF之間的并行處理。本文基于Linux的容器技術(shù)實(shí)現(xiàn)了該系統(tǒng)的原型機(jī),并驗(yàn)證了其性能的優(yōu)化效果和所帶來的額外資源損耗。
[1] SHERRY J, HASAN S, SCOTT C, et al. Making middleboxes someone else’s problem: network processing as a cloud service[J]. ACM SIGCOMM Computer Communication Review, 2012, 42(4): 13–24.
[2] QUINN P, NADEAU T. Service function chaining problem statement: draft-ietf-sfc-problem-statement-10 [S]. 2014.
[3] JOSEPH D A, TAVAKOLI A, STOICA I. A policy-aware switching layer for data centers[J]. ACM SIGCOMM Computer Communication Review, 2008, 38(4): 51-62
[4] IETF SFC WG. Service function chaining use cases in data centers[S]. 2015.
[5] HAEFFNER W, NAPPER J, STIEMERLING M, et al. Service function chaining use cases in mobile networks: draft-ietf-sfc- use-case-mobility-01[S]. 2014.
[6] SEKAR V, EGI N, RATNASAMY S, et al. Design and implementation of a consolidated middlebox architecture[C]//The 9th USENIX Conference on Networked Systems Design and Implementation(NSDI'12), April 25-27, 2012, San Jose, CA, USA. New York: ACM Press, 2012: 24.
[7] BREMLER-BARR A, HARCHOL Y, HAY D. OpenBox: a software-defined framework for developing, deploying, and managing network functions[C]//The Workshop on Hot Topics in Middleboxes and Network Function Virtualization, August 22-26, 2016, Florianópolis, Brazil. New York: ACM Press, 2016: 511-524.
[8] HALPERN J, PIGNATARO C. Service function chaining (SFC) architecture: draft-ietf-sfc-architecture-07 [S]. 2015.
[9] QAZI Z A, TU C C, CHIANG L, et al. SIMPLE-fying middlebox policy enforcement using SDN[J]. ACM SIGCOMM Computer Communication Review, 2013, 43(4):27-38.
[10] ANWER B, BENSON T, FEAMSTER N, et al. A slick control plane for network middleboxes[C]// ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking, August 16, 2013, Hongkong, China. New York: ACM Press, 2013: 147-148.
[11] FAYAZBAKHSH S K, CHIANG L, SEKAR V, et al. Enforcing network-wide policies in the presence of dynamic middlebox actions using flowtags[C]//Usenix Conference on Networked Systems Design and Implementation, USENIX Association (NSDI’14), April 2-4, 2014, Seattle, WA, USA. New York: ACM Press, 2014: 533-546.
[12] GEMBER-JACOBSON A, VISWANATHAN R, PRAKASH C, et al. OpenNF: Enabling innovation in network function control[C]//The 2014 ACM Conference on SIGCOMM, August 17-22, 2014, Chicago, Illinois, USA. New York: ACM Press, 2014: 163-174.
[13] 王歆平, 王茜, 劉恩慧, 等. 基于SDN的按需智能路由系統(tǒng)研究與驗(yàn)證[J]. 電信科學(xué), 2014, 30(4): 8-14.
WANG X P, WANG Q, LIU E H, et al. Research and verification on SDN-based on-demand smart routing system[J]. Telecommunications Science, 2014, 30(4): 8-14.
[14] ETSI NFV ISG. Network functions virtualisation: an introduction, benefits, enablers, challenges and call for action [R]. 2012.
[15] GANDHI R, LIU H H, HU Y C, et al. Duet: cloud scale load balancing with hardware and software[C]//The 2014 ACM Conference on SIGCOMM, August 17-22, 2014, Chicago, Illinois, USA. New York: ACM Press, 2014: 27-38.
[16] LI B, TAN K, LUO L L, et al. ClickNP: highly flexible and high-performance network processing with reconfigurable hardware[C]//The 2016 ACM Conference on SIGCOMM, August 22-26, 2016, Florianópolis, Brazil. New York: ACM Press, 2016: 1-14.
[17] PANDA A, HAN S, JANG K, et al. NetBricks: taking the V out of NFV[C]//The 12th USENIX Conference on Operating Systems Design and Implementation (OSDI’16), November 2-4, 2016, Savannah, GA, USA. New York: ACM Press, 2016: 203-216.
[18] Intel. Data plane development kit[R]. 2018.
[19] MARTINS J, AHMED M, RAICIU C, et al. ClickOS and the art of network function virtualization[C]// USENIX Conference on Networked Systems Design and Implementation, April 2-4, 2014, Seattle, WA, USA. New York: ACM Press, 2014:459-473.
[20] HWANG J, RAMAKRISHNAN K, WOOD T. NetVM: high performance and flexible networking using virtualization on commodity platforms[J]. IEEE Transactions on Network and Service Management, 2015, 12(1): 34-47.
[21] ZHANG W, LIU G, ZHANG W, et al. OpenNetVM: a platform for high performance network service chains[C]//The Workshop on Hot Topics in Middleboxes and Network Function Virtualization, August 22-26, 2016, Florianópolis, Brazil. New York: ACM Press, 2016: 26-31.
[22] PALKAR S, LAN C, HAN S, et al. E2: a framework for NFV applications[C]// Symposium on Operating Systems Principles, October 4-7, 2015, Monterey, California, USA. New York: ACM Press, 2015: 121-136.
[23] BREMLER-BARR A, HARCHOL Y, HAY D, et al. Deep packet inspection as a service[C]// ACM International on Conference on Emerging Networking Experiments and Technologies, December 2-5, 2014, Sydney, Australia. New York: ACM Press, 2014: 271-282.
[24] BENSON T, AKELLA A, MALTZ D A. Network traffic characteristics of data centers in the wild[C]// 2010 Internet Measurement Conference, November 1-3, 2010, Melbourne, Australia. New York: ACM Press, 2010: 267-280.
[25] MERKEL D. Docker: lightweight linux containers for consistent development and deployment[J]. Linux Journal, 2014(239): 2.
NFP: enabling network function parallelism in NFV
BI Jun, SUN Chen, YU Heng
Tsinghua University, Beijing 100084, China
Software-based sequential service chains in network function virtualization (NFV) could introduce significant performance overhead. Current acceleration efforts for NFV mainly target on optimizing each component of the sequential service chain. However, based on the statistics from real world enterprise networks, it was observed that 53.8% network function (NF) pairs could work in parallel. In particular, 41.5% NF pairs could be parallelized without causing extra resource overhead. NFP was presented, a high performance framework, that innovatively enabled network function parallelism to improve NFV performance. NFP consisted of three logical components. Firstly, NFP provided a policy specification scheme for operators to intuitively describe sequential or parallel NF chaining intents. Secondly, NFP orchestrator intelligently identified NF dependency and automatically compiled the policies into high performance service graphs. Thirdly, NFP infrastructure performed light-weight packet copying, distributed parallel packet delivery, and load-balanced merging of packet copies to support NF parallelism. An NFP prototype based on DPDK in Linux containers was implemented. The evaluation results show that NFP achieves significant latency reduction for real world service chains.
NFV, network function parallelism, service chain
TP393
A
10.11959/j.issn.1000?0801.2018216
2018?06?21;
2018?07?06
畢軍(1972?),男,博士,清華大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院副院長(zhǎng)、計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科和網(wǎng)絡(luò)空間安全學(xué)科博士生導(dǎo)師,長(zhǎng)江學(xué)者特聘教授,北京信息科學(xué)與技術(shù)國(guó)家研究中心未來網(wǎng)絡(luò)理論與應(yīng)用研究部主任,主要研究方向?yàn)榛ヂ?lián)網(wǎng)體系結(jié)構(gòu)、SDN/NFV、IPv6安全體系結(jié)構(gòu)等。
孫晨(1992?),男,清華大學(xué)計(jì)算機(jī)系博士生,主要研究方向?yàn)镾DN/NFV、網(wǎng)絡(luò)測(cè)量。
于恒(1995?),男,清華大學(xué)計(jì)算機(jī)系博士生,主要研究方向?yàn)镾DN/NFV。