李子勇 胡宇翔田 樂(lè) 裴金川
(解放軍戰(zhàn)略支援部隊(duì)信息工程大學(xué) 鄭州 450002)
隨著網(wǎng)絡(luò)技術(shù)的深入發(fā)展和各種新型網(wǎng)絡(luò)業(yè)務(wù)的大量涌現(xiàn),尤其是工業(yè)互聯(lián)網(wǎng)、自動(dòng)駕駛、全息通信、物聯(lián)網(wǎng)等新型服務(wù)模式的興起,當(dāng)前互聯(lián)網(wǎng)在高效性、安全性、移動(dòng)性、可擴(kuò)展性等方面正在遭受著難以克服的挑戰(zhàn)[1]。面對(duì)萬(wàn)物互聯(lián)的時(shí)代,未來(lái)將會(huì)有海量差異化的通信主體接入網(wǎng)絡(luò),因此,未來(lái)網(wǎng)絡(luò)應(yīng)支持多樣化的標(biāo)識(shí)表達(dá)。同時(shí),由于多元化通信主體的接入和各種異構(gòu)化網(wǎng)絡(luò)的互聯(lián)互通。未來(lái)網(wǎng)絡(luò)應(yīng)支持多種網(wǎng)絡(luò)協(xié)議體系共存和多樣化的尋址路由能力。然而,當(dāng)前互聯(lián)網(wǎng)采用以IP/TCP為核心的“盡力而為”的傳輸模式,難以提供海量和差異化服務(wù),且多種協(xié)議體系共存又面臨兼容問(wèn)題,已難以滿足萬(wàn)戶互聯(lián)的多元化服務(wù)需求[2]。
針對(duì)當(dāng)前互聯(lián)網(wǎng)體系架構(gòu)存在的缺陷與不足,近年來(lái),以IPv4/IPv6標(biāo)識(shí)過(guò)渡[3]、內(nèi)容標(biāo)識(shí)[4]、身份標(biāo)識(shí)[5]、地理位置標(biāo)識(shí)[6]等多樣化的尋址與路由技術(shù)紛紛被提出,并在部分場(chǎng)景得到運(yùn)用。為了應(yīng)對(duì)未來(lái)時(shí)變且多元化的網(wǎng)絡(luò)需求,我國(guó)鄔江興院士提出了“多模態(tài)網(wǎng)絡(luò)[7]”的概念,指出未來(lái)網(wǎng)絡(luò)應(yīng)支持多種網(wǎng)絡(luò)技術(shù)體系以“網(wǎng)絡(luò)模態(tài)”的形式協(xié)同發(fā)展,每一種網(wǎng)絡(luò)技術(shù)體系或網(wǎng)絡(luò)模態(tài)可針對(duì)一種服務(wù)模式或用網(wǎng)需求,運(yùn)行自定義的報(bào)文格式、尋址與路由協(xié)議,支持多樣化的數(shù)據(jù)平面處理邏輯。多模態(tài)網(wǎng)絡(luò)要求底層網(wǎng)絡(luò)設(shè)備能同時(shí)支持多種網(wǎng)絡(luò)模態(tài)的共存并實(shí)現(xiàn)不同網(wǎng)絡(luò)模態(tài)之間的隔離,且具備較高的轉(zhuǎn)發(fā)性能和靈活可編程能力。網(wǎng)絡(luò)虛擬化可實(shí)現(xiàn)在同一網(wǎng)絡(luò)基礎(chǔ)設(shè)施中運(yùn)行多個(gè)虛擬網(wǎng)絡(luò)以適應(yīng)多元化的網(wǎng)絡(luò)需求,然而,當(dāng)前網(wǎng)絡(luò)虛擬化主要通過(guò)虛擬機(jī)或容器技術(shù)實(shí)現(xiàn)了多個(gè)虛擬網(wǎng)絡(luò)功能在同一網(wǎng)絡(luò)設(shè)備上靈活高效的部署,但其導(dǎo)致了較大的I/O開(kāi)銷,嚴(yán)重降低了網(wǎng)絡(luò)吞吐量[8]。隨著可編程數(shù)據(jù)平面的深入研究,尤其是可編程協(xié)議無(wú)關(guān)報(bào)文處理語(yǔ)言P4的出現(xiàn),網(wǎng)絡(luò)運(yùn)營(yíng)商能夠自定義新的網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)平面處理邏輯[9]。然而,當(dāng)前可編程數(shù)據(jù)平面提供了獨(dú)占的數(shù)據(jù)平面抽象,難以同時(shí)支持多個(gè)網(wǎng)絡(luò)環(huán)境[10],且相互嵌套的P 4程序會(huì)引發(fā)新的問(wèn)題,如多個(gè)P4程序之間邏輯沖突,或一個(gè)程序消耗超過(guò)公平份額的資源導(dǎo)致資源沖突等。
針對(duì)以上問(wèn)題,本文提出了一種支持并行流水線的虛擬化可編程數(shù)據(jù)平面結(jié)構(gòu)(V ir tua lized P4-based Programm able Data Plane architecture w ith Parallel Pipeline,VirtP6),支持多個(gè)網(wǎng)絡(luò)功能在同一物理數(shù)據(jù)平面上并行運(yùn)行。VirtP6可實(shí)現(xiàn)以下目標(biāo):(1)高性能:虛擬化的網(wǎng)絡(luò)功能保持較高的數(shù)據(jù)包轉(zhuǎn)發(fā)性能,具有較低的虛擬化開(kāi)銷;(2)隔離性:每個(gè)虛擬網(wǎng)絡(luò)功能都在彼此隔離的環(huán)境中運(yùn)行,尤其是數(shù)據(jù)平面所需的寄存器、流表資源彼此隔離,每個(gè)虛擬網(wǎng)絡(luò)功能都按照預(yù)先分配的資源轉(zhuǎn)發(fā)數(shù)據(jù)包,避免彼此搶占資源。(3)可擴(kuò)展性:支持多個(gè)虛擬網(wǎng)絡(luò)功能動(dòng)態(tài)添加和移除,且虛擬網(wǎng)絡(luò)功能的數(shù)量對(duì)物理數(shù)據(jù)平面的轉(zhuǎn)發(fā)性能影響較小。本文的主要貢獻(xiàn)如下:
(1)提出一種虛擬化可編程數(shù)據(jù)平面結(jié)構(gòu)VirtP6,在物理資源平臺(tái)與虛擬網(wǎng)絡(luò)功能之間引入管理程序,以支持并行的數(shù)據(jù)包處理流水線,實(shí)現(xiàn)了可編程數(shù)據(jù)平面的虛擬化。
(2)設(shè)計(jì)相應(yīng)的解析與隔離機(jī)制實(shí)現(xiàn)了同一設(shè)備上不同虛擬網(wǎng)絡(luò)功能之間的資源隔離、流量隔離和訪問(wèn)隔離。
(3)在BM v2軟件交換機(jī)上實(shí)現(xiàn)了V irtP6原型,并對(duì)VirtP6的整體性能進(jìn)行了評(píng)估。仿真結(jié)果表明:VirtP6有效降低了虛擬化開(kāi)銷,將延遲減少了68%,吞吐量提高了75%,實(shí)現(xiàn)了接近NativeP4的性能,具有良好的隔離性和擴(kuò)展性。
目前的網(wǎng)絡(luò)虛擬化技術(shù)主要采用主機(jī)虛擬化技術(shù)。主機(jī)虛擬化技術(shù)可以分為:完全虛擬化、半虛擬化和操作系統(tǒng)虛擬化。完全虛擬化通過(guò)在底層硬件和上層操作系統(tǒng)之間構(gòu)建一層虛擬中間層hypervisor,負(fù)責(zé)為不同操作系統(tǒng)管理底層物理資源,如VMware,KVM,但該方案引入了較大虛擬化開(kāi)銷,嚴(yán)重降低了網(wǎng)絡(luò)性能[11]。以XEN和UM L為代表的半虛擬化通過(guò)修改內(nèi)核允許一部分虛擬機(jī)指令直接操作系統(tǒng)平臺(tái),提高了系統(tǒng)性能,但其實(shí)現(xiàn)較為復(fù)雜。操作系統(tǒng)虛擬化是一種輕量級(jí)的虛擬化技術(shù),通過(guò)創(chuàng)建多個(gè)“容器”來(lái)承載多個(gè)數(shù)據(jù)平面功能,并預(yù)先為“容器”分配固定資源來(lái)實(shí)現(xiàn)物理資源的隔離[12]?;谥鳈C(jī)的網(wǎng)絡(luò)虛擬化技術(shù)支持多個(gè)虛擬網(wǎng)絡(luò)高效靈活的部署,但其導(dǎo)致了較大的I/O開(kāi)銷,嚴(yán)重降低了網(wǎng)絡(luò)吞吐量,隨著網(wǎng)絡(luò)帶寬和端口速度的不斷增加,主機(jī)虛擬化技術(shù)難以滿足網(wǎng)絡(luò)高性能需求[13]。
可編程數(shù)據(jù)平面允許網(wǎng)絡(luò)管理員以可編程的方式在硬件交換機(jī)中添加新的網(wǎng)絡(luò)協(xié)議和定制數(shù)據(jù)包的處理邏輯,大大提高了網(wǎng)絡(luò)設(shè)備的可編程能力。許多研究嘗試將虛擬化技術(shù)引入可編程數(shù)據(jù)平面以解決網(wǎng)絡(luò)虛擬化的問(wèn)題。Hancock等人[14]通過(guò)在動(dòng)作匹配表中獨(dú)立編譯P4程序?qū)崿F(xiàn)了虛擬化可編程數(shù)據(jù)平面Hyper4。但Hyper4使用大量數(shù)據(jù)包再循環(huán)操作,造成了較大的性能損失。Zhang等人[15]通過(guò)快速解析、控制流排序和動(dòng)態(tài)階段映射技術(shù),使得多個(gè)P4處理邏輯可動(dòng)態(tài)映射到不同的匹配動(dòng)作階段,實(shí)現(xiàn)了數(shù)據(jù)平面的完全虛擬化,但其未實(shí)現(xiàn)網(wǎng)絡(luò)虛擬化所需要的隔離要求。Zhou等人[16]提出了一種基于P4的模塊化編程架構(gòu)ClickP4,通過(guò)將單個(gè)P4程序分解為多個(gè)可重用網(wǎng)絡(luò)功能,并通過(guò)動(dòng)態(tài)編排為P4編程提供了更高的靈活性。Stoyanov等人[17]提出了一種多租戶可編程交換機(jī)架構(gòu)MTPSA,可在單個(gè)可編程交換機(jī)上為不同的租戶運(yùn)行不同的P4程序,并給出了隔離租戶的建議。但MTPSA沒(méi)有考慮訪問(wèn)隔離,這同樣存在安全威脅。Saquetti等人[18]通過(guò)改進(jìn)NetFPGA架構(gòu)提出了一種用于數(shù)據(jù)平面虛擬化的可重構(gòu)架構(gòu)P4VBox,實(shí)現(xiàn)了多個(gè)虛擬數(shù)據(jù)平面功能的并行執(zhí)行和在線配置,實(shí)驗(yàn)表明,與HyPer4,HyperVDP相比,P4VBox將帶寬提高了2倍,延遲減少了6倍,但P4VBox僅限于FPGA硬件,且缺乏靈活的資源調(diào)度能力。
圖1所示為V irtP6整體架構(gòu),V irtP6在物理資源平臺(tái)和多個(gè)虛擬網(wǎng)絡(luò)功能之間引入VirtP6管理程序。VirtP6管理程序負(fù)責(zé)管理并行運(yùn)行的多個(gè)虛擬網(wǎng)絡(luò)功能,協(xié)調(diào)各個(gè)虛擬網(wǎng)絡(luò)功能共享硬件資源,同時(shí),也實(shí)施各個(gè)虛擬網(wǎng)絡(luò)功能之間的隔離。在VirtP6管理程序上,每個(gè)虛擬網(wǎng)絡(luò)功能聚焦于不同的網(wǎng)絡(luò)場(chǎng)景,在相互隔離的網(wǎng)絡(luò)環(huán)境里運(yùn)行不同的協(xié)議與路由等功能。本文主要考慮4個(gè)設(shè)計(jì)原則來(lái)實(shí)施V irtP6管理程序:并行流水線結(jié)構(gòu)、資源隔離、流量隔離、訪問(wèn)隔離。其中,VirtP6管理程序的關(guān)鍵在于如何同時(shí)支持多個(gè)虛擬網(wǎng)絡(luò)功能,為了解決該問(wèn)題,本文改變了可編程數(shù)據(jù)平面的單一流水線處理結(jié)構(gòu),引入并行流水線結(jié)構(gòu),使VirtP6管理程序可同時(shí)支持多個(gè)并行流水線運(yùn)行。VirtP6管理程序可在物理數(shù)據(jù)平面上編譯多個(gè)P4程序,并虛擬出多個(gè)網(wǎng)絡(luò)功能。同時(shí),為了防止多個(gè)虛擬網(wǎng)絡(luò)功能在同一物理設(shè)備上共存時(shí)導(dǎo)致資源競(jìng)爭(zhēng),通過(guò)設(shè)計(jì)合理的解析和隔離機(jī)制,可為每個(gè)虛擬網(wǎng)絡(luò)功能提供資源隔離、流量隔離、訪問(wèn)隔離。VirtP6在實(shí)現(xiàn)可編程數(shù)據(jù)平面虛擬化的同時(shí)可保持較低的虛擬化開(kāi)銷,實(shí)現(xiàn)了較高的轉(zhuǎn)發(fā)性能。
圖1 VirtP6整體架構(gòu)
本節(jié)將詳細(xì)介紹VirtP6的設(shè)計(jì)細(xì)節(jié)以支持多種虛擬網(wǎng)絡(luò)功能的共存,同時(shí)滿足多種虛擬網(wǎng)絡(luò)功能之間的隔離。
圖2所示為協(xié)議無(wú)關(guān)的交換機(jī)架構(gòu)(P rotocol Independent Sw itch A rchitecture,PISA)。PISA架構(gòu)通過(guò)可編程的解析器、匹配動(dòng)作單元和逆解析器組成流水線,來(lái)實(shí)現(xiàn)數(shù)據(jù)包處理邏輯的可編程,其中流量管理器部署在入口流水線和出口流水線之間[19]。管理員可以按照P4語(yǔ)法規(guī)范編寫相應(yīng)的P4程序來(lái)定義數(shù)據(jù)包的解析/逆解析、控制流以及相應(yīng)的匹配動(dòng)作單元,并通過(guò)標(biāo)準(zhǔn)的P 4編譯器將P4程序編譯到具體的硬件位置上,從而達(dá)到自定義數(shù)據(jù)平面網(wǎng)絡(luò)功能的目的。
圖2 協(xié)議無(wú)關(guān)的交換架構(gòu)(PISA架構(gòu))
為了解決當(dāng)前可編程數(shù)據(jù)平面存在的獨(dú)占數(shù)據(jù)平面抽象問(wèn)題,同時(shí),最大限度地保留數(shù)據(jù)平面的可編程能力,本文分析可編程數(shù)據(jù)平面的組成結(jié)構(gòu),考慮對(duì)其部分組件進(jìn)行虛擬化。由于流量管理器的不可編程特性,這里考慮只對(duì)其解析器、匹配動(dòng)作單元、逆解析器進(jìn)行虛擬化,而保留流量管理器作為共享模塊。在處理數(shù)據(jù)包時(shí),解析器需要逐層解析數(shù)據(jù)包頭以得到所有的匹配項(xiàng),最終根據(jù)不同的匹配項(xiàng)執(zhí)行相應(yīng)的動(dòng)作。當(dāng)多個(gè)虛擬網(wǎng)絡(luò)功能共存時(shí),不同的網(wǎng)絡(luò)功能可能操作獨(dú)有的包頭結(jié)構(gòu)和處理動(dòng)作,這種“解析-匹配/動(dòng)作”分離的方式不利于可編程數(shù)據(jù)平面的虛擬化。如圖3所示為虛擬化可編程數(shù)據(jù)平面處理模型。該模型假設(shè)基于“解析-匹配/動(dòng)作-逆解析”的流水線結(jié)構(gòu)可以被部分虛擬化,并組合成多條并行的流水線,同時(shí)保留其余“解析-匹配/動(dòng)作-逆解析”組件作為共享流水線。具體地,以流量管理器為界,該處理模型將共享流水線分為兩部分:入口階段和出口階段,入口階段鏈接到多個(gè)并行的流水線,每個(gè)并行的流水線的末端鏈接到出口階段。由于不采用集中的解析、匹配動(dòng)作、逆解析操作,該處理模型將“解析-匹配動(dòng)作-逆解析”組件分布到數(shù)據(jù)包處理的不同階段,可避免1次解析所有數(shù)據(jù)包頭,做到“解析-匹配/動(dòng)作”同步進(jìn)行。因此,基于該模型,V irtP6改變了PISA架構(gòu)的單一流水線結(jié)構(gòu),可在同一數(shù)據(jù)平面上承載多個(gè)不同的網(wǎng)絡(luò)功能,每個(gè)網(wǎng)絡(luò)功能彼此隔離,運(yùn)行在一個(gè)單獨(dú)的網(wǎng)絡(luò)環(huán)境中。
圖3 虛擬化可編程數(shù)據(jù)平面處理模型
VirtP6的實(shí)現(xiàn)包含兩部分:共享流水線和虛擬出的并行流水線。共享流水線充當(dāng)類似Hypervisor的管理器(這里稱之為VirtP6管理程序),可訪問(wèn)每個(gè)并行的流水線,負(fù)責(zé)將進(jìn)入的數(shù)據(jù)包分發(fā)到不同的并行流水線來(lái)處理。每個(gè)并行的流水線是完整的“解析-匹配/動(dòng)作-逆解析”的數(shù)據(jù)包處理流水線,可承載多個(gè)具有不同網(wǎng)絡(luò)功能的P 4程序。如圖4為V irtP6的具體實(shí)現(xiàn)結(jié)構(gòu)。下面對(duì)VirtP6管理程序和并行的網(wǎng)絡(luò)功能流水線的作用進(jìn)行說(shuō)明:
圖4 VirtP6的具體實(shí)現(xiàn)結(jié)構(gòu)
VirtP6管理程序:VirtP6管理程序不執(zhí)行具體的數(shù)據(jù)包的轉(zhuǎn)發(fā)功能,僅負(fù)責(zé)將傳入的數(shù)據(jù)包分發(fā)到不同的流水線處理。VirtP6的入口階段負(fù)責(zé)解析數(shù)據(jù)包的外層標(biāo)簽,調(diào)用不同的網(wǎng)絡(luò)功能流水線來(lái)處理數(shù)據(jù)包,其出口階段接受來(lái)自經(jīng)過(guò)網(wǎng)絡(luò)功能流水線處理后的數(shù)據(jù)包,對(duì)其進(jìn)行逆解析,重新封裝數(shù)據(jù)包外層標(biāo)簽,并送往相應(yīng)的物理端口。同時(shí),VirtP6管理程序也負(fù)責(zé)管理和配置各流水線,實(shí)施各個(gè)流水線的帶寬分配、路由決策、擁塞控制等。
網(wǎng)絡(luò)功能流水線:每個(gè)并行的流水線可運(yùn)行不同的網(wǎng)絡(luò)功能,對(duì)外提供訪問(wèn)接口,供VirtP6管理程序調(diào)用,并支持動(dòng)態(tài)獨(dú)立編譯。每個(gè)流水線運(yùn)行在獨(dú)立的運(yùn)行環(huán)境中,維護(hù)特定的流表、寄存器、計(jì)數(shù)器等存儲(chǔ)資源,彼此之間不能互相訪問(wèn)。
本文根據(jù)BM v2軟件交換機(jī)v1model.P4原型[20]對(duì)VirtP6管理程序和網(wǎng)絡(luò)功能流水線的結(jié)構(gòu)體進(jìn)行了重新定義,VirtP6管理程序和網(wǎng)絡(luò)功能流水線的結(jié)構(gòu)體如算法1和算法2所示,與v1model.P4相比,VirtP6管理程序增加了元數(shù)據(jù)定義virtual_function_id,用來(lái)指示每個(gè)虛擬網(wǎng)絡(luò)功能的標(biāo)識(shí)符,定義了動(dòng)作函數(shù)select_function(.)用于獲取每一個(gè)數(shù)據(jù)包所屬的虛擬網(wǎng)絡(luò)功能ID,VirtP6管理程序通過(guò)解析+匹配表的方式為每個(gè)進(jìn)入的數(shù)據(jù)包添加元數(shù)據(jù)標(biāo)識(shí)virtual_function_id。為了在同一數(shù)據(jù)平面支持多個(gè)網(wǎng)絡(luò)功能共存,V irtP6管理程序利用extern擴(kuò)展來(lái)添加網(wǎng)絡(luò)功能流水線Virtual_Function_Pipeline(.),擴(kuò)展的網(wǎng)絡(luò)功能流水線位于VirtP6管理程序的入口流水線Ingress_Pipeline和出口流水線Egress_Pipeline之間。當(dāng)數(shù)據(jù)包進(jìn)入VirtP6管理程序,Ingress_Pipeline會(huì)解析數(shù)據(jù)包頭,通過(guò)匹配得到其virtual_function_id,并利用ex tern功能調(diào)用對(duì)應(yīng)的虛擬網(wǎng)絡(luò)功能V irtua l_Function_Pipeline來(lái)處理數(shù)據(jù)包,待處理完畢后,Egress_Pipeline將對(duì)數(shù)據(jù)包完成逆解析,并根據(jù)V irtual_Function_Pipeline的處理結(jié)果從相應(yīng)的端口轉(zhuǎn)發(fā)。與完整的v1model.P4定義的流水線相比,網(wǎng)絡(luò)功能流水線對(duì)其進(jìn)行了簡(jiǎn)化,V irtual_Function_Pipeline不再區(qū)分Ingress_Pipeline和Egress_Pipeline,將其統(tǒng)一為單一流水線VF_Pipeline。可以看出,V irtP6管理程序不參與每一個(gè)虛擬網(wǎng)絡(luò)功能的協(xié)議解析和匹配動(dòng)作邏輯,只負(fù)責(zé)數(shù)據(jù)包的分發(fā),而網(wǎng)絡(luò)功能流水線被設(shè)計(jì)為VirtP6管理程序的extern函數(shù),只關(guān)注本身的功能開(kāi)發(fā)。因此,VirtP6在不降低網(wǎng)絡(luò)功能的可編程能力的同時(shí),實(shí)現(xiàn)了在同一數(shù)據(jù)平面上支持多個(gè)網(wǎng)絡(luò)功能共存。
算法1 VirtP6管理程序結(jié)構(gòu)體
V irtP6允許多個(gè)虛擬網(wǎng)絡(luò)功能運(yùn)行在單個(gè)網(wǎng)絡(luò)設(shè)備中,網(wǎng)絡(luò)運(yùn)行過(guò)程中,若沒(méi)有相應(yīng)的隔離機(jī)制保證多個(gè)網(wǎng)絡(luò)功能間的資源隔離,極易導(dǎo)致資源搶占,影響傳輸性能。因此,當(dāng)多個(gè)虛擬網(wǎng)絡(luò)功能共存于同一網(wǎng)絡(luò)設(shè)備中時(shí),需要滿足以下隔離需求:(1)資源隔離;(2)流量隔離;(3)訪問(wèn)隔離。如圖5所示,下面分析VirtP6在滿足網(wǎng)絡(luò)功能隔離性方面的設(shè)計(jì)細(xì)節(jié)。
圖5 網(wǎng)絡(luò)功能隔離機(jī)制
資源隔離:VirtP6管理程序可接受多個(gè)承載不同網(wǎng)絡(luò)功能流水線的P4程序作為輸入。編譯器在編譯時(shí)會(huì)對(duì)每個(gè)P4程序進(jìn)行實(shí)例化,分配網(wǎng)絡(luò)功能ID,將其所需邏輯處理單元、流表、寄存器、計(jì)數(shù)器等資源限制在單獨(dú)的操作空間內(nèi),彼此之間不能訪問(wèn),實(shí)現(xiàn)了資源隔離。
流量隔離:除了資源隔離外,在運(yùn)行過(guò)程中,還需要實(shí)施流量隔離。V irtP6通過(guò)解析-匹配表的方式為每個(gè)數(shù)據(jù)包指定其所屬的網(wǎng)絡(luò)功能流水線ID,并將數(shù)據(jù)包送入對(duì)應(yīng)的流水線處理,不同的流量只會(huì)被其所屬的流水線處理,而不會(huì)暴露給其它流水線,實(shí)現(xiàn)了流量隔離。同時(shí),當(dāng)添加、遷移或移除流水線時(shí),只需要在VirtP6管理程序中修改相應(yīng)的流表項(xiàng)即可,而不需要修改VirtP6管理程序。
訪問(wèn)隔離:當(dāng)多個(gè)網(wǎng)絡(luò)功能流水線并行運(yùn)行時(shí),若不能有效地實(shí)施訪問(wèn)隔離,則非法用戶可能會(huì)惡意修改任一網(wǎng)絡(luò)功能流水線的運(yùn)行邏輯或數(shù)據(jù)。受Flow Visor[21]啟發(fā),本文通過(guò)改進(jìn)P4Run tim e[22]協(xié)議對(duì)網(wǎng)絡(luò)功能流水線實(shí)施訪問(wèn)控制。P4Runtime API允許多個(gè)用戶作為gRPC客戶端同時(shí)接入交換機(jī)gRPC服務(wù)器,gRPC服務(wù)器會(huì)預(yù)先明確每個(gè)用戶的角色配置ID。當(dāng)每個(gè)網(wǎng)絡(luò)功能流水線向控制器發(fā)起請(qǐng)求消息(如packet-in)時(shí),gRPC服務(wù)器則根據(jù)其流水線ID將請(qǐng)求消息發(fā)往對(duì)應(yīng)的用戶處理;待用戶處理完成后,gRPC服務(wù)器則根據(jù)角色I(xiàn)D將控制消息(如packet-out)發(fā)送到相應(yīng)的流水線實(shí)施管理決策。每個(gè)用戶只能訪問(wèn)其所屬網(wǎng)絡(luò)功能的流表、寄存器、計(jì)數(shù)器等資源,對(duì)其他網(wǎng)絡(luò)功能無(wú)權(quán)訪問(wèn),實(shí)現(xiàn)了訪問(wèn)隔離。
本實(shí)驗(yàn)將從4個(gè)維度對(duì)所提VirtP6的性能進(jìn)行分析:(1)以吞吐量、時(shí)延、匹配動(dòng)作表數(shù)量作為指標(biāo),對(duì)其性能開(kāi)銷進(jìn)行評(píng)估;(2)對(duì)V irtP6的流量隔離性能分析;(3)對(duì)V irtP 6的可擴(kuò)展性分析;(4)以V irtP6原型系統(tǒng)搭建網(wǎng)絡(luò)拓?fù)浞治鼍W(wǎng)絡(luò)服務(wù)性能。
實(shí)驗(yàn)環(huán)境介紹:本文在BM v2[20]軟件交換機(jī)的基礎(chǔ)上,通過(guò)重新定義VirtP6管理程序和網(wǎng)絡(luò)功能流水線結(jié)構(gòu)體,實(shí)現(xiàn)了VirtP6原型設(shè)計(jì)。實(shí)驗(yàn)在網(wǎng)絡(luò)仿真平臺(tái)M ininet[23]上進(jìn)行測(cè)試,數(shù)據(jù)平面交換機(jī)部署均為V irtP 6原型系統(tǒng)。虛擬機(jī)為Ubun tu Server16.04,搭載Intel Core i7-3770 3.40 GHz處理器,8GB內(nèi)存。實(shí)驗(yàn)結(jié)果通過(guò)分別測(cè)試VirtP6交換機(jī)上的轉(zhuǎn)發(fā)性能和運(yùn)行在其上面的網(wǎng)絡(luò)功能的轉(zhuǎn)發(fā)性能來(lái)評(píng)估VirtP6的性能開(kāi)銷、流量隔離和組網(wǎng)運(yùn)行性能。
對(duì)比方案:為了對(duì)比VirtP6的性能,在這里與原生可編程數(shù)據(jù)平面NativeP4[19]、可編程數(shù)據(jù)平面虛擬化方案HyperP4[14]進(jìn)行對(duì)比,(1)NativeP4:基于原生P4的可編程數(shù)據(jù)平面,不支持多個(gè)虛擬網(wǎng)絡(luò)功能的并行操作。作為基準(zhǔn)對(duì)比方案,NativeP4無(wú)虛擬化開(kāi)銷,當(dāng)需要部署多個(gè)虛擬網(wǎng)絡(luò)功能時(shí),多個(gè)虛擬網(wǎng)絡(luò)功能程序需要整合到一個(gè)P 4程序中。(2)HyperP4:一種P4數(shù)據(jù)平面虛擬化方案,在硬件和P4程序之間添加類似Hypervisor的管理程序,其大量的重新提交和再循環(huán)操作實(shí)現(xiàn)不同數(shù)據(jù)包結(jié)構(gòu)的逐層解析,將不同的網(wǎng)絡(luò)功能轉(zhuǎn)化為不同表項(xiàng)的組合,可在單個(gè)可編程數(shù)據(jù)平面上虛擬化多個(gè)虛擬網(wǎng)絡(luò)功能。
V irtP6通過(guò)設(shè)計(jì)并行流水線處理結(jié)構(gòu)實(shí)現(xiàn)了多種虛擬網(wǎng)絡(luò)功能在同一網(wǎng)絡(luò)設(shè)備上運(yùn)行,相較于NativeP4的單一流水線結(jié)構(gòu),VirtP6增加了外層包頭解析與分發(fā)處理開(kāi)銷。為了量化V irtP6處理開(kāi)銷,本實(shí)驗(yàn)比較V irtP6,HyperP4和NativeP4的轉(zhuǎn)發(fā)時(shí)延和吞吐量,結(jié)果如圖6所示。
圖6 時(shí)延和吞吐量對(duì)比
從圖6(a)和圖6(b)可以看出,相較于NativeP4單一處理流水線結(jié)構(gòu),HyperP4實(shí)現(xiàn)了虛擬化的同時(shí)卻導(dǎo)致了3~4倍的時(shí)延,吞吐量也降低了76%,具有較大的虛擬化開(kāi)銷。這是因?yàn)镠yperP4需要通過(guò)多次重提交操作來(lái)逐層解析數(shù)據(jù)包,且需要為每個(gè)數(shù)據(jù)流動(dòng)作分配一個(gè)流水線,因此,其產(chǎn)生較大的虛擬化開(kāi)銷,嚴(yán)重降低了轉(zhuǎn)發(fā)性能。與HyperP4相比,VirtP6大大降低了虛擬化開(kāi)銷,將延遲減少了68%,吞吐量提高了75%,實(shí)現(xiàn)了接近NativeP4的性能。由于V irtP6采用相互隔離的并行流水線結(jié)構(gòu),采用統(tǒng)一的包頭描述內(nèi)部協(xié)議,避免了數(shù)據(jù)包的逐層解析,有效降低了HyperP4導(dǎo)致的虛擬化開(kāi)銷。
隔離性是指多個(gè)虛擬網(wǎng)絡(luò)功能在同一網(wǎng)絡(luò)設(shè)備上運(yùn)行,相互獨(dú)立,性能互不影響,即一個(gè)虛擬網(wǎng)絡(luò)功能流量的增加或減少,不會(huì)影響其他虛擬網(wǎng)絡(luò)功能的轉(zhuǎn)發(fā)性能。為了驗(yàn)證VirtP6的隔離性能,我們進(jìn)行帶寬隔離實(shí)驗(yàn),實(shí)驗(yàn)拓?fù)淙鐖D7所示。實(shí)驗(yàn)過(guò)程中,由主機(jī)產(chǎn)生兩種業(yè)務(wù)流在共享鏈路上競(jìng)爭(zhēng)帶寬,共享鏈路帶寬為200 Mbit/s,在兩個(gè)交換機(jī)上均部署關(guān)于IPv4和IPv6標(biāo)識(shí)的轉(zhuǎn)發(fā)功能(2條流水線)。實(shí)驗(yàn)過(guò)程中,在主機(jī)h3和h4之間生成IPv6標(biāo)識(shí)的TCP流,在主機(jī)h1和h2生成IPv4標(biāo)識(shí)的以全鏈路帶寬(200 M bit/s)恒定速率發(fā)送的UDP業(yè)務(wù)流。實(shí)驗(yàn)分別比較在VirtP6管理程序中不啟用和啟用帶寬隔離時(shí)兩種業(yè)務(wù)流的轉(zhuǎn)發(fā)性能,啟用帶寬隔離時(shí),可通過(guò)VirtP6管理程序?yàn)椴煌摂M網(wǎng)絡(luò)功能指定帶寬分配IPv4網(wǎng)絡(luò):50 Mbit/s,IPv6網(wǎng)絡(luò):150 Mbit/s。實(shí)驗(yàn)結(jié)果如圖8所示,可以看出,在0~50 s時(shí),未啟用帶寬分配時(shí),IPv4網(wǎng)絡(luò)幾乎消耗完所有鏈路帶寬,IPv6網(wǎng)絡(luò)只消耗2%的帶寬,在啟用帶寬分配后,即使IPv4網(wǎng)絡(luò)的流量很大,也只能消耗25%的帶寬,通過(guò)為IPv6網(wǎng)絡(luò)分配了固定的帶寬,保證了其轉(zhuǎn)發(fā)性能。因此,VirtP6可為不同的虛擬網(wǎng)絡(luò)提供了良好的隔離性能。
圖7 實(shí)驗(yàn)拓?fù)?/p>
圖8 隔離性能
可擴(kuò)展性是用來(lái)衡量交換機(jī)上部署的虛擬網(wǎng)絡(luò)功能的數(shù)量對(duì)其轉(zhuǎn)發(fā)性能的影響,可通過(guò)測(cè)量交換機(jī)的吞吐量和時(shí)延作為評(píng)價(jià)標(biāo)準(zhǔn)。實(shí)驗(yàn)過(guò)程中,在交換機(jī)上部署不同數(shù)量的虛擬網(wǎng)絡(luò)功能,每個(gè)虛擬網(wǎng)絡(luò)功能的帶寬平均分配,且每個(gè)虛擬網(wǎng)絡(luò)功能以全帶寬發(fā)送數(shù)據(jù),比較交換機(jī)上的轉(zhuǎn)發(fā)時(shí)延和吞吐量。實(shí)驗(yàn)結(jié)果如圖9所示,可以看出,當(dāng)虛擬網(wǎng)絡(luò)功能數(shù)量從1個(gè)增加到15個(gè),V irtP6的平均數(shù)據(jù)包時(shí)延和吞吐量無(wú)明顯變化。因此,本文提出的VirtP6采用并行流水線結(jié)構(gòu)可有效承載不同的虛擬網(wǎng)絡(luò),具有良好的可擴(kuò)展性。
圖9 交換機(jī)轉(zhuǎn)發(fā)性能隨流水線的數(shù)量變化
VirtP6的目標(biāo)是實(shí)現(xiàn)多種虛擬網(wǎng)絡(luò)在同一網(wǎng)絡(luò)基礎(chǔ)設(shè)施上共存,以促進(jìn)新興網(wǎng)絡(luò)技術(shù)體制在現(xiàn)有網(wǎng)絡(luò)架構(gòu)上增量部署。為了對(duì)所提VirtP6的網(wǎng)絡(luò)適用性進(jìn)行評(píng)估,本實(shí)驗(yàn)使用M ininet仿真器構(gòu)建網(wǎng)絡(luò)平臺(tái),網(wǎng)絡(luò)拓?fù)淙鐖D10所示,這里選取IPv4,IPv6和身份標(biāo)識(shí)3種網(wǎng)絡(luò),實(shí)驗(yàn)分別在h1與h2,h3與h4,h5與h6之間采用IPv4,IPv6,身份標(biāo)識(shí)等尋址與路由方式進(jìn)行通信,每個(gè)虛擬網(wǎng)絡(luò)的帶寬分配分別為100 M bit/s,60 M bit/s和40 M bit/s。如圖11所示為3個(gè)虛擬網(wǎng)絡(luò)的平均吞吐量和往返時(shí)間。從圖11可以看出,IPv4,IPv6和身份標(biāo)識(shí)網(wǎng)絡(luò)在時(shí)延性能上保持較小差異,平均RTT分別為4.43 m s,4.51 m s和4.42 m s,其平均吞吐量分別為89.9 M bit/s,58.7 M bit/s和38 M bit/s,每個(gè)虛擬網(wǎng)絡(luò)基本按照預(yù)先分配的帶寬轉(zhuǎn)發(fā)數(shù)據(jù)包,雖然總帶寬不到200 Mbit/s,這是因?yàn)閂irtP6實(shí)現(xiàn)多個(gè)虛擬網(wǎng)絡(luò)共存的同時(shí)仍存在較小的虛擬化開(kāi)銷。因此,本文所提出的VirtP6可實(shí)現(xiàn)多個(gè)虛擬網(wǎng)絡(luò)在同一物理設(shè)施上共存,并實(shí)現(xiàn)了良好的性能隔離。
圖11 不同虛擬網(wǎng)絡(luò)的轉(zhuǎn)發(fā)性能
針對(duì)當(dāng)前可編程數(shù)據(jù)平面提供獨(dú)占的數(shù)據(jù)平面抽象難以同時(shí)支持多個(gè)虛擬網(wǎng)絡(luò)的問(wèn)題,本文提出了一種基于并行流水線的虛擬化可編程數(shù)據(jù)平面結(jié)構(gòu)VirtP6。VirtP6改變了可編程數(shù)據(jù)平面單一的流水線結(jié)構(gòu),并在物理資源平臺(tái)和多個(gè)虛擬網(wǎng)絡(luò)功能之間引入管理程序,以支持多個(gè)虛擬網(wǎng)絡(luò)功能的并行運(yùn)行,實(shí)現(xiàn)了可編程數(shù)據(jù)平面的虛擬化,并滿足不同虛擬網(wǎng)絡(luò)功能之間的資源隔離、流量隔離、訪問(wèn)隔離要求。最后,在BM v2軟件交換機(jī)上實(shí)現(xiàn)了VirtP6原型,并從虛擬化開(kāi)銷、隔離性、擴(kuò)展性和網(wǎng)絡(luò)適用性方面對(duì)VirtP6的性能進(jìn)行了評(píng)估。實(shí)驗(yàn)結(jié)果表明,VirtP6大大減少了虛擬化開(kāi)銷,具有良好的隔離性和擴(kuò)展性。本文的下一步工作將對(duì)VirtP6添加更多的資源管理策略,以滿足不同虛擬網(wǎng)絡(luò)的服務(wù)質(zhì)量要求,并在硬件平臺(tái)上實(shí)現(xiàn)VirtP6原型。