孫晨,畢軍,鄭智隆,王舒鶴,胡宏新
(1.清華大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院,北京 100084;2.清華大學(xué)信息科學(xué)技術(shù)學(xué)院,北京 100084;3.北京信信息科學(xué)與技術(shù)國家研究中心,北京 100084;4.克萊姆森大學(xué),南卡羅來納州 29634)
計算機網(wǎng)絡(luò)中有著種類繁多的網(wǎng)絡(luò)功能,用于實現(xiàn)網(wǎng)絡(luò)安全、網(wǎng)絡(luò)監(jiān)控、流量調(diào)度等。在傳統(tǒng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)功能通過專有硬件來實現(xiàn),基于專有硬件的網(wǎng)絡(luò)功能通常被稱為中間件,添加新的網(wǎng)絡(luò)功能通常需要添加新的中間件。然而,中間件沒有通用的硬件框架,并且在高峰負載時難以擴展,因此,網(wǎng)絡(luò)功能虛擬化(NFV,network function virtualization)的概念被提出,以解決中間件的局限性。NFV 利用虛擬化技術(shù),通過軟件的形式實現(xiàn)網(wǎng)絡(luò)功能,從而增強服務(wù)交付的靈活性,降低總體成本[1]。NFV 中的網(wǎng)絡(luò)功能稱為虛擬化網(wǎng)絡(luò)功能(VNF,virtualized network function),常見的 VNF 包括網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT,network address translation)、負載均衡、防火墻等。然而,基于軟件實現(xiàn)的VNF 性能較低,主要有以下2 個原因。
1)基于軟件的VNF 存在200 μs~1 ms 的轉(zhuǎn)發(fā)時延,這對于一些網(wǎng)絡(luò)應(yīng)用而言是不可接受的,例如,基于算法的股票交易和要求超低時延(幾微秒)的高性能分布式存儲器緩存[2]。
2)根據(jù)本文對一家主流網(wǎng)絡(luò)運營商的調(diào)研,目前該運營商部署的VNF 是由幾乎沒有相關(guān)性的獨立團隊構(gòu)建的單一、重型的實例。然而,多個VNF通常可以部分地共享相似的處理邏輯[4],例如,負載平衡和訪問控制都需要解析數(shù)據(jù)分組的分組頭來匹配規(guī)則。入侵檢測系統(tǒng)(IDS,intrusion detection system)和7 層防火墻都可以對流或數(shù)據(jù)分組執(zhí)行深度分組檢測(DPI,deep packet inspection)。如果沒有模塊重用,一個數(shù)據(jù)分組可能會在整個服務(wù)鏈中多次執(zhí)行同一個操作,這種動作的重復(fù)會進一步損害NFV 的性能。
針對問題1),最近的一些工作提出使用可編程硬件加速器來支持NFV。部分工作[2~5]揭示了基于軟件的中間件與商用硬件之間的差距,并提出將彈性的現(xiàn)場可編程門陣列(FPGA,field-programmable gate array)引入基于OpenStack 的NFV 以提高性能。但是,現(xiàn)有解決方案僅利用了高性能硬件來支持NFV,并未發(fā)揮可提供豐富資源和高靈活性的商用服務(wù)器的優(yōu)點。實際上,硬件設(shè)備上的TCAM(ternary content addressable memory)資源相當有限且昂貴,難以支持復(fù)雜且資源密集型的VNF,例如NAT。
針對問題2),本文注意到,微服務(wù)的概念在軟件工程領(lǐng)域越來越受關(guān)注[6]。微服務(wù)被定義為通過消息交互的最小獨立過程。復(fù)雜的VNF 可以分解為更簡單的微服務(wù),而一個微服務(wù)可以被不同的VNF 重用。在NFV 環(huán)境中,微服務(wù)的模塊化和可重用性可以消除重復(fù)的處理階段并縮短時延。
因此,本文提出一種高性能和可編程的架構(gòu)——MicroNF,利用可編程硬件和傳統(tǒng)軟件基礎(chǔ)架構(gòu)來支持VNF 的高性能和靈活性。MicroNF 可以容納最先進的硬件平臺,如FPGA、P4 和RMT、ClickOS 等軟件平臺[7],只要它們向外提供統(tǒng)一的控制接口即可。此外,MicroNF 通過組合和重用多個硬件或軟件的微服務(wù)來構(gòu)建所需的服務(wù)鏈,以消除重復(fù)并提高性能,而非構(gòu)建功能重疊的單片VNF。本文在MicroNF 中設(shè)計了一個策略解析器層,用于硬件和軟件的微服務(wù)管理,以隱藏NFV協(xié)調(diào)器底層基礎(chǔ)架構(gòu)的異構(gòu)性。
本文的主要貢獻如下。
1)提出了一種高性能 NFV 框架——MicroNF,該框架利用異構(gòu)基礎(chǔ)設(shè)施,結(jié)合了硬件和軟件功能,同時支持VNF 的高性能和靈活性。 此外,MicroNF 將單片VNF 分解為硬件或軟件微服務(wù),并通過在VNF 之間重用微服務(wù)來提高性能。
2)在MicroNF 中設(shè)計了一個策略解析器,以隱藏NFV 協(xié)調(diào)器的基礎(chǔ)設(shè)施異構(gòu)性。策略解析器還負責VNF 分解和微服務(wù)鏈接以形成服務(wù)鏈。
3)實現(xiàn)了基于 OpenStack 和 ONetCard 的MicroNF 原型。實驗結(jié)果表明,與純單片軟件VNF鏈相比,MicroNF 中具有微服務(wù)增強功能的異構(gòu)服務(wù)鏈可以實現(xiàn)時延平均降低70%。
基于NFV 網(wǎng)絡(luò)的MicroNF 架構(gòu)如圖1 所示。其中,編排器做出關(guān)于服務(wù)鏈的決定;策略解析器根據(jù)鏈接要求執(zhí)行VNF 分解和微服務(wù)鏈接,并將策略提供給相應(yīng)的模塊,包括控制硬件(H-MS,hardware function management service)與軟件(S-MS,software function management service)微服務(wù)生命周期的微服務(wù)管理器,以及可以基于SDN控制器實現(xiàn)的轉(zhuǎn)發(fā)策略實施器。策略實施器可以在微服務(wù)實例之間引導(dǎo)流量。可編程硬件基礎(chǔ)架構(gòu)與軟件基礎(chǔ)架構(gòu)結(jié)合構(gòu)建異構(gòu)基礎(chǔ)架構(gòu),支持異構(gòu)服務(wù)鏈。
傳統(tǒng)網(wǎng)絡(luò)中,編排器負責編排服務(wù)并直接通知相關(guān)VNF 管理器,部署VNF 實例并將其鏈接在一起形成服務(wù)鏈。然而,在MicroNF 中需要組裝并重用硬件或軟件微服務(wù)來構(gòu)建VNF 并形成服務(wù)鏈,這為服務(wù)鏈的生成提出了2 個問題:如何選擇軟硬件實例;如何將軟硬件實例混合編排。
圖1 MicroNF 架構(gòu)
為了解決上述問題,本文在MicroNF 框架中設(shè)計了一個策略解析器。策略解析器接收來自編排器的服務(wù)鏈決策,并將策略傳遞給最合適的微服務(wù)管理器(MSM,micro service management module)或轉(zhuǎn)發(fā)策略實施器。為了形成服務(wù)鏈,編排器只需簡單描述其對VNF 的要求,策略解析器就可以自動將VNF 分解為微服務(wù),并通知相關(guān)的MSM 和轉(zhuǎn)發(fā)策略實施器部署服務(wù)鏈。
MicroNF 中的策略解析器負責將VNF 分解為微服務(wù),并利用微服務(wù)的可重用性來消除重復(fù)并縮短服務(wù)鏈時延。VNF 的分解示例如表1 所示。
表1 VNF 分解示例
VNF 分解過程將VNF 分成若干個微服務(wù),但是服務(wù)鏈中的多個VNF 可能會使用同一個微服務(wù)。為了提高服務(wù)鏈性能,本文考慮利用微服務(wù)的可重用性來刪除重復(fù)的微服務(wù),并用所有剩余的非冗余微服務(wù)來構(gòu)建微服務(wù)鏈。最后,策略解析器將服務(wù)鏈轉(zhuǎn)換為逐跳轉(zhuǎn)發(fā)策略,并通知轉(zhuǎn)發(fā)策略實施器。
為了充分利用微服務(wù)的可重用性,微服務(wù)的處理結(jié)果可以被傳遞至該服務(wù)器鏈中的后續(xù)微服務(wù),但是目前在NFV 中的VNF 之間沒有上下文傳遞機制。網(wǎng)絡(luò)服務(wù)分組頭(NSH,network service header)[8]是一種被廣泛接受的NFV 服務(wù)交付和鏈接機制,但其中沒有足夠的空間用于傳遞大量處理結(jié)果。接下來,本文將討論基于NSH 的設(shè)計方案。
若某一微服務(wù)需要將其處理結(jié)果傳遞給服務(wù)鏈中的2 個微服務(wù),則它可以將處理結(jié)果附加到目標微服務(wù)的現(xiàn)有NSH 中,如圖2 所示。具體而言,微服務(wù)應(yīng)首先解析數(shù)據(jù)分組攜帶的所有NSH 并識別其目標微服務(wù)。在處理分組之后,微服務(wù)將處理結(jié)果注入目標微服務(wù)NSH 的“上下文字段”中。隨后的目標微服務(wù)將從NSH 導(dǎo)出上下文,并利用上下文信息繼續(xù)完成自己的邏輯任務(wù)。
為了適應(yīng)MicroNF 中的異構(gòu)基礎(chǔ)設(shè)施,本文在MicroNF 中為所有平臺的MSM 設(shè)計了一個統(tǒng)一的控制接口集,以避免策略解析器承擔管理具有不同接口和內(nèi)部邏輯的異構(gòu)MSM 的負擔??刂平涌诩唧w如下。
圖2 使用NSH 上下文頭的微服務(wù)上下文傳遞
?deploy_instance (instance):用于部署實例instance。
?destruct_instance (instance_ID):用于銷毀編號為instance_ID 的實例。
? configure_instance (instance_ID,configuration):用于配置編號為instance_ID 的實例。
? migrate_instance (old_ID,new_ID,flows):將編號為old_ID 的實例上的部分流遷移至編號為new_ID 的實例。
? get_instance_state (instance_ID):用于獲取編號為instance_ID 的實例的狀態(tài)信息。
通過deploy_instance 和destruct_instance 接口可部署和銷毀微服務(wù)實例。策略解析器可以通過configure_instance 接口配置所有實例,還能夠指示特定MSM 通過migrate_instance 接口將一些數(shù)據(jù)流從舊實例遷移到新實例。運行時,協(xié)調(diào)器需要通過get_instance_state 接口查詢實例狀態(tài)。
圖3 為 DPI 微服務(wù)的生命周期。策略解析器調(diào)用 deploy_instance 接口部署 DPI;然后通過configure_instance 接口發(fā)出2 個規(guī)則,如實例過載,使用 deploy_instance 啟動 2 號實例并使用migrate_instance 從1 號實例遷移到2 號實例;最后,策略解析器將使用destruct_instance 對1 號實例進行清理。
本文構(gòu)建了基于ONetCard 的MicroNF 基礎(chǔ)設(shè)施,在硬件資源ONetCard 上實現(xiàn)了帶狀態(tài)數(shù)據(jù)平面的抽象(SDPA,stateful data plane abstraction)[9],用于支持各種硬件網(wǎng)絡(luò)功能或微服務(wù)。本文實現(xiàn)了幾個微服務(wù)的硬件和軟件版本,包括分組頭解析器、規(guī)則匹配器、動作執(zhí)行器、分組頭修改器和計數(shù)器,并用構(gòu)建了3 個VNF,包括硬件和軟件版本的NAT、防火墻和長流檢測。本文基于OpenStack和OpenDaylight 實現(xiàn)了MSM、MicroNF 策略解析器和協(xié)調(diào)器。OpenStack 用于實現(xiàn)S-MSM(software MSM),使用H-MSM(hardware MEM)模塊擴展了 OpenDaylight,來管理硬件微服務(wù)實例。MicroNF 策略解析器在OpenDaylight 中被編寫為模塊,執(zhí)行NSH 服務(wù)鏈。具體如圖3 所示。
圖3 由控制接口支持的DPI 生命周期
本文通過生成由硬件和軟件VNF 組成的異構(gòu)鏈來評估MicroNF 的性能。在硬件上實現(xiàn)了狀態(tài)防火墻和NAT,分別在有數(shù)據(jù)平面開發(fā)套件(DPDK,data plane development kit)增強軟件和沒有DPDK 增強軟件的情況下完成了長流檢測的軟件實現(xiàn),并將它們的性能與純DPDK VNF 鏈進行了比較。使用Ixia 測試器生成固定大小的數(shù)據(jù)報文,并調(diào)整數(shù)據(jù)流量發(fā)送速率為1~10 Gbit/s,并將相同的流量發(fā)送到這2 個VNF 實例,測量處理延時和吞吐量。實驗結(jié)果如圖4 所示。根據(jù)實驗數(shù)據(jù),未優(yōu)化軟件的處理時延可能比硬件高119~154 倍,而DPDK 增強軟件的平均時延比硬件的平均時延高5.4 倍。未優(yōu)化軟件的吞吐量比硬件低91%,DPDK 增強軟件可以實現(xiàn)與硬件一樣高的吞吐量。由硬件和DPDK 增強軟件組成的異構(gòu)服務(wù)鏈在處理時延方面優(yōu)于純DPDK 解決方案(降低40%~67%)。
為了評估微服務(wù)引入NFV 帶來的性能提升,本文生成了一個具有DPDK 增強軟件的微服務(wù)軟件鏈,并將其性能與單片的服務(wù)鏈進行了比較。2個鏈都包括相同的軟件VNF 集合,包括NAT、狀態(tài)防火墻和長流檢測。從圖5 可以看出,基于微服務(wù)的服務(wù)鏈的轉(zhuǎn)發(fā)時延比基于單片VNF 的服務(wù)鏈低約40%。這表明將VNF 分解為微服務(wù)并刪除重復(fù)的微服務(wù)可以在很大程度上縮短轉(zhuǎn)發(fā)時延。
圖4 異構(gòu)VNF 鏈與軟件VNF 鏈的性能對比
圖5 軟件微服務(wù)鏈與軟件VNF 鏈的性能對比
為了全面評估MicroNF 的性能增強程度,本文生成了一個異構(gòu)微服務(wù)鏈,并將其性能與單片軟件VNF 鏈進行比較。對于異構(gòu)微服務(wù)鏈,本文在硬件上實現(xiàn)了分組頭解析器、規(guī)則匹配器和動作執(zhí)行器,在軟件上實現(xiàn)了計數(shù)器和分組頭修改器。對于單片軟件VNF 鏈,本文在硬件上實現(xiàn)了帶狀態(tài)防火墻和NAT,并且在具有DPDK 增強功能的情況下完成了長流檢測的軟件實現(xiàn)。實驗結(jié)果如圖6 所示。MicroNF 使服務(wù)鏈平均轉(zhuǎn)發(fā)時延降低70%。
圖6 異構(gòu)微服務(wù)鏈與軟件VNF 鏈的對比
最近一些相關(guān)工作已經(jīng)認識到將硬件和軟件相結(jié)合來實現(xiàn)高性能和靈活性的優(yōu)勢[10-12]。Rohan 等[10]提出了Duet,它使用現(xiàn)有的交換機硬件和一小部分軟件來構(gòu)建高性能的負載均衡器。然而,Duet 僅限于實現(xiàn)負載均衡 VNF。Hendrik 等[11]提出了VNF-P,可以在專用硬件和通用軟件上支持VNF。
但是,專用硬件在VNF 管理的靈活性方面仍然受到限制。Andrew 等[12]提出了利用FPGA 擴展數(shù)據(jù)中心的服務(wù)器來提高性能。Arpit 等[13]提出結(jié)合可編程交換機和基于軟件的流處理器,實現(xiàn)了高效的網(wǎng)絡(luò)監(jiān)控功能。Georgios 等[14]提出結(jié)合可編程交換機和軟件基礎(chǔ)設(shè)施,支持高性能NFV 服務(wù)鏈。相比之下,MicroNF 是一種通用框架,可以基于最先進的可編程硬件、軟件平臺提供高性能和靈活性,并在框架中引入策略解析器層,從而支持多種網(wǎng)絡(luò)功能,減輕編排器與基礎(chǔ)架構(gòu)相關(guān)的管理負擔,提高可擴展性。
OpenBox[4]中提出的想法接近于微服務(wù)的概念。但是,它并沒有在NFV 的環(huán)境下討論這一想法。Muhammad 等[15]設(shè)計了一種可重用的網(wǎng)絡(luò)協(xié)議棧,供網(wǎng)絡(luò)功能調(diào)用而無需考慮底層分組處理邏輯。Guyue 等[16]設(shè)計了一種TCP 協(xié)議棧,以模塊的形式供一條服務(wù)鏈上的多個網(wǎng)絡(luò)功能調(diào)用,提高服務(wù)鏈性能。相比之下,MicroNF 不局限于提供一種網(wǎng)絡(luò)功能模塊,而是一種通用的異構(gòu)高性能框架,提供網(wǎng)絡(luò)功能分解方式,實現(xiàn)高性能服務(wù)鏈。
本文為 NFV 提出了一種異構(gòu)高性能框架MicroNF,通過硬件和軟件基礎(chǔ)設(shè)施的集成可以有效地支持網(wǎng)絡(luò)功能。設(shè)計了統(tǒng)一的控制接口,以支持更靈活、更高效的VNF 管理。此外,還將微服務(wù)的概念集成到MicroNF 中,從NFV 的服務(wù)鏈中刪除冗余處理邏輯并提高性能。實驗結(jié)果表明MicroNF 可以顯著提高服務(wù)鏈性能。