趙國鋒,陶文平
(重慶郵電大學(xué)未來網(wǎng)絡(luò)研究中心,重慶 400065)
由于可編程虛擬化路由器在控制平面和數(shù)據(jù)平面可以向用戶提供靈活的編程接口,允許用戶根據(jù)不同的協(xié)議需求,選擇、修改、重組路由器的功能模塊,使其可以并行的運行多個不同體系結(jié)構(gòu)的路由器實例,并且各個實例之間相互獨立運行而無干擾[1-2]。因此,由可編程虛擬化路由器構(gòu)建的未來網(wǎng)絡(luò)試驗床可以在一個物理網(wǎng)絡(luò)上構(gòu)建多個獨立且相互隔離的虛擬網(wǎng)絡(luò),實現(xiàn)不同體系結(jié)構(gòu)的并行實驗驗證。與傳統(tǒng)路由器相比,可編程虛擬化路由器具有虛擬化與靈活的可擴(kuò)展可編程的特點。這些特性有利于快速地搭建試驗網(wǎng)絡(luò)平臺,對未來網(wǎng)絡(luò)多樣化的體系結(jié)構(gòu)、協(xié)議、算法進(jìn)行評估與驗證。
可編程虛擬化路由器[3]是在一個物理路由器上形成多個邏輯上獨立的虛擬路由器,每個虛擬路由器都可以單獨地運行各自的路由協(xié)議,并且都有自己專用的I/O端口、緩存、地址空間、路由表和網(wǎng)絡(luò)管理軟件等,并可以通過對路由器的配置和編程實現(xiàn)靈活的動態(tài)的部署新的路由協(xié)議??删幊烫摂M化路由器可在一個實際物理網(wǎng)絡(luò)上構(gòu)建多個獨立且互不干擾的虛擬網(wǎng)絡(luò)平面,并在數(shù)據(jù)平面和控制平面具有靈活的可編程性,能通過配置與編程,在不同的虛擬網(wǎng)絡(luò)平面快速的部署不同的網(wǎng)絡(luò)體系結(jié)構(gòu)與協(xié)議,實現(xiàn)靈活而動態(tài)地部署多種新的服務(wù)或者協(xié)議。
目前虛擬化路由器研究主要有兩種實現(xiàn)方案。一種是基于軟件的虛擬化路由器,該方案采用通用的硬件平臺,即普通的網(wǎng)卡實現(xiàn)數(shù)據(jù)包的接收和轉(zhuǎn)發(fā),再通過上層虛擬化軟件(如OpenVZ,Xen等)和路由器軟件(如 Quagga,Zebra,XORP等)來實現(xiàn)虛擬化路由器。該方案的主要優(yōu)點在于系統(tǒng)配置靈活、編程方便,但由于使用了軟件進(jìn)行數(shù)據(jù)包的處理轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)速率就成為了軟件路由器的瓶頸問題。另一種是基于硬件的虛擬化路由器,該方案采用專用的可編程硬件(如FPGA)或者網(wǎng)絡(luò)硬件處理器,再加上軟件虛擬化技術(shù)來實現(xiàn)。該方案的最大優(yōu)點就是利用專用硬件運行的高速、并行特性,實現(xiàn)高效的數(shù)據(jù)轉(zhuǎn)發(fā)率,但其在配置管理方面的靈活性不及軟件虛擬化路由器。
為滿足實驗評估與部署需求,作為為未來互聯(lián)網(wǎng)核心設(shè)備的可編程虛擬化路由器應(yīng)該具備良好的虛擬化與隔離性、靈活的可編程可擴(kuò)展機(jī)制、快速數(shù)據(jù)包處理能力以及高效的管理調(diào)度能力。為了實現(xiàn)一個高性能的支持虛擬化的可編程路由器,我們將路由器整體架構(gòu)劃分為數(shù)據(jù)平面、控制平面、管理平面3個平面,如圖1所示。
圖1 可編程虛擬化路由器系統(tǒng)框架圖Fig.1 System frame diagram of programmable virtual router
圖1中,路由器的數(shù)據(jù)平面主要負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)包的接收識別分類以及轉(zhuǎn)發(fā)??刂破矫嬷饕獙崿F(xiàn)路由器的虛擬化,即在一臺物理路由器上實現(xiàn)多個相對獨立的邏輯路由器,并負(fù)責(zé)路由的計算以及異常數(shù)據(jù)包的分析處理,控制平面還可以對數(shù)據(jù)平面進(jìn)行簡單的配置管理。管理平面主要負(fù)責(zé)多個虛擬路由器的各種協(xié)議的部署維護(hù)以及路由器的各項參數(shù)的管理配置,方便用戶對單個虛擬化路由器以及整個虛擬化路由器系統(tǒng)進(jìn)行的管理。
可編程虛擬化路由器與傳統(tǒng)路由器的最大區(qū)別是在控制平面的主機(jī)操作系統(tǒng)中引入了虛擬化技術(shù),實現(xiàn)了在同一硬件設(shè)備層上構(gòu)建多個虛擬管理層和多個并行的虛擬路由器。其次,可編程虛擬化路由器采用數(shù)據(jù)平面與控制平面相分離的結(jié)構(gòu),提高了系統(tǒng)的可擴(kuò)展可編程能力,并在數(shù)據(jù)平面和控制平面之上分離出了管理平面,這樣可以方便靈活的配置和管理整個路由器系統(tǒng)的高效運行。
根據(jù)上述路由器的平面結(jié)構(gòu)劃分思路,可以給出可編程虛擬化路由器的詳細(xì)設(shè)計框架圖,如圖2所示。
圖2 可編程虛擬化路由器整體設(shè)計框架圖Fig.2 Design frame diagram of programmable virtual router
在系統(tǒng)設(shè)計中,數(shù)據(jù)平面采用了 NetFPGA[4]專用硬件開發(fā)平臺實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的接收識別分類和轉(zhuǎn)發(fā)。NetFPGA是由美國斯坦福大學(xué)(Stanford University)開發(fā)設(shè)計的一款基于FPGA的全編程的數(shù)據(jù)包硬件轉(zhuǎn)發(fā)卡。它的出現(xiàn)使研究人員可以在硬件級別的開發(fā)環(huán)境上搭建Gbit/s級高性能網(wǎng)絡(luò)系統(tǒng)模型,從而進(jìn)行網(wǎng)絡(luò)系統(tǒng)的研究和測試。NetFPGA能夠很好地支持模塊化設(shè)計,復(fù)雜的硬件設(shè)計可以通過各個子模塊的組合來完成[5]。
控制平面的功能主要在本地物理主機(jī)上實現(xiàn)。NetFPGA板卡通過PCI接口與在物理主機(jī)連接,通過本地物理主機(jī)上安裝開源的Linux操作系統(tǒng)CentOS,并在Linux操作系統(tǒng)下安裝NetFPGA的設(shè)備驅(qū)動程序,形成NetFPGA開發(fā)板與主機(jī)操作系統(tǒng)的軟件接口。驅(qū)動程序?qū)etFPGA的4個千兆以太網(wǎng)口 nf2c0,nf2c1,nf2c2,nf2c3進(jìn)行配置,從而使得 PC主機(jī)上的用戶空間軟件可以通過NetFPGA開發(fā)板上的以太網(wǎng)端口來收發(fā)數(shù)據(jù)分組。驅(qū)動程序?qū)蹇ǖ募拇嫫餍畔⒂成涞街鳈C(jī)內(nèi)存中,主機(jī)應(yīng)用程序通過對這些寄存器映像的讀寫,從而控制NetFPGA的運行模式,監(jiān)控數(shù)據(jù)通道的工作情況??刂破矫嬷饕ㄟ^PCI總線實現(xiàn)與底層數(shù)據(jù)平面的交互[6]。
路由管理平面在數(shù)據(jù)平面和控制平面的基礎(chǔ)上實現(xiàn),通過上層管理軟件實現(xiàn)整個虛擬路由器的管理和配置,通過軟件編程可提供良好的人機(jī)交互界面。管理平面主要負(fù)責(zé)多個虛擬路由器的各種協(xié)議的部署維護(hù)以及路由器的各項參數(shù)的管理配置,方便用戶對單個或者整個虛擬化路由器進(jìn)行管理。
所謂虛擬化,其實就是把計算機(jī)的資源,如運算能力、存儲空間以及I/O設(shè)備抽離出來,使它們不受物理限制的約束,讓資源的使用方式更具效率。虛擬化技術(shù)可以擴(kuò)大硬件的處理能力,簡化軟件的重新配置過程,是一個為了簡化管理,優(yōu)化資源配置的解決方案[7]。
從虛擬化的目的來看,虛擬化技術(shù)主要可以分為以下幾類:①平臺虛擬化(platform virtualization),主要針對計算機(jī)和操作系統(tǒng)的虛擬化,主要通過CPU虛擬化、內(nèi)存虛擬化和I/O接口虛擬化來實現(xiàn),又可分成桌面虛擬化和服務(wù)器虛擬化;②資源虛擬化(resource virtualization),針對特定的系統(tǒng)資源的虛擬化,如內(nèi)存、網(wǎng)絡(luò)資源虛擬化等;③應(yīng)用程序虛擬化(application virtualization),包括仿真、模擬、解釋技術(shù)等。
通常所說的虛擬化技術(shù)主要是指平臺虛擬化,如通過使用 Hypervisor或虛擬監(jiān)控器(virtual machine monitor,VMM)的控制程序,隱藏特定計算平臺的實際物理特性,為用戶提供統(tǒng)一的、抽象的、模擬的計算環(huán)境,即虛擬機(jī)。虛擬機(jī)中運行的操作系統(tǒng)被稱為客戶機(jī)操作系統(tǒng)(Guest OS),運行虛擬機(jī)監(jiān)控器的操作系統(tǒng)被稱為主機(jī)操作系統(tǒng)(Host OS),運行虛擬機(jī)的真實系統(tǒng)我們稱之為本地主機(jī)系統(tǒng)。平臺虛擬化技術(shù)按照虛擬化的層次不同又可劃分為3類:全虛擬化、半虛擬化和操作系統(tǒng)級虛擬化。
1)全虛擬化(full virtualization)是指虛擬機(jī)模擬了完整的底層硬件,包括處理器、物理內(nèi)存、時鐘、外設(shè)等,操作系統(tǒng)或其他系統(tǒng)軟件完全不做任何修改就可以在虛擬機(jī)中運行。全虛擬化不對底層的硬件資源進(jìn)行劃分,而是部署一個統(tǒng)一的主機(jī)系統(tǒng),并在其上加裝了Hypervisor(VMM)層,虛擬層作為應(yīng)用級別的軟件存在,而不涉及操作系統(tǒng)內(nèi)核,其原理圖如圖3所示。全虛擬化技術(shù)最大的優(yōu)點就是客戶操作系統(tǒng)無需任何修改就可以直接在虛擬平臺上運行。使用全虛擬化技術(shù)的代表產(chǎn)品是VMware Workstation,Virtual Box,KVM 等。
圖3 全虛擬化原理圖Fig.3 Schematic diagram of full virtualization
2)半虛擬化(Para-virtualization)是一種新興的虛擬化技術(shù),由VMM層提供特定的應(yīng)用程序接口(application programming interface,API)來支持 OS復(fù)用,并通過VMM來實現(xiàn)對底層硬件的共享訪問,與全虛擬化的主要差別是需要更改客戶操作系統(tǒng)內(nèi)核。半虛擬化的原理圖如圖4所示。由于需要操作系統(tǒng)的內(nèi)核源碼來修改內(nèi)核,半虛擬化適合Linux等開放源代碼的操作系統(tǒng),但無法支持Windows等商業(yè)化操作系統(tǒng)。采用半虛擬化技術(shù)的代表產(chǎn)品主要有Xen和UML。
圖4 半虛擬化原理圖Fig.4 Schematic diagram of para-virtualization
3)操作系統(tǒng)級虛擬化(operating system level virtualization)是基于共用操作系統(tǒng)內(nèi)核的,這種技術(shù)在操作系統(tǒng)本身之上實現(xiàn)服務(wù)器的虛擬化,也可稱為基于容器的虛擬化技術(shù)。通過對操作系統(tǒng)的內(nèi)核進(jìn)行一些修改,為用戶和應(yīng)用提供一個貌似獨立,其實共享的操作環(huán)境,從而達(dá)到了其他虛擬機(jī)技術(shù)無法比擬的高性能、高效率和高密度。通過這種方式虛擬出的服務(wù)器,被稱為虛擬專用服務(wù)器(virtual private server,VPS)或虛擬環(huán)境(virtual environment,VE)。虛擬環(huán)境之間相互獨立,相互隔離,每個虛擬環(huán)境擁有各自獨立的進(jìn)程、操作系統(tǒng)用戶、文件系統(tǒng)和系統(tǒng)配置文件,可以像在物理服務(wù)器上一樣安裝應(yīng)用程序或系統(tǒng)軟件,操作系統(tǒng)級虛擬化原理圖如圖5所示。操作系統(tǒng)虛擬化技術(shù)的代表是SWsoft公司的開源OpenVZ項目、Sun公司的Solaris Container以及FreeBSD 的Jail。
圖5 操作系統(tǒng)級虛擬化原理圖Fig.5 Schematic diagram of OS-level virtualization
通過以上虛擬化技術(shù)的分析比較發(fā)現(xiàn),操作系統(tǒng)級虛擬化技術(shù)所需開銷最小,且虛擬出的容器有很好安全隔離性,非常適合可編程路由器這樣的功能單一且性能需求較高的專用設(shè)備。因此在可編程虛擬化路由器的設(shè)計中,在控制平面的虛擬化技術(shù)實現(xiàn)時,可以采用性能較好的操作系統(tǒng)級虛擬化軟件OpenVZ。
OpenVZ[8]是開源軟件,是基于 Linux平臺的操作系統(tǒng)級服務(wù)器虛擬化的解決方案。OpenVZ可以在單個物理服務(wù)器上創(chuàng)建多個隔離、安全的VPS或VE,共享硬件和管理資源,從而提高服務(wù)器利用率并確保應(yīng)用程序之間不會相互干擾。每個VPS的運行都和獨立的服務(wù)器完全一致,擁有自身所屬的用戶程序進(jìn)程,獨立的root訪問權(quán)限、IP地址、內(nèi)存、處理器、文件、應(yīng)用程序、系統(tǒng)庫和配置文件等。OpenVZ允許物理服務(wù)器上運行多個操作系統(tǒng),但只有一個操作系統(tǒng)內(nèi)核,少了虛擬機(jī)和客戶操作系統(tǒng)兩個資源消耗層次,操作系統(tǒng)虛擬化的運行效果、理論最大密度和運行在虛擬環(huán)境中的應(yīng)用性能都有著良好的表現(xiàn)。此外OpenVZ還提供了豐富的工具程序以創(chuàng)建、監(jiān)控和管理VPS、軟件包管理和操作系統(tǒng)模板管理,并支持動態(tài)資源分配、系統(tǒng)快照和熱遷移等功能。OpenVZ的原理框圖如圖6所示。
圖6 OpenVZ原理框圖Fig.6 Principle diagram of OpenVZ
在可編程虛擬化路由設(shè)計中,控制平面使用虛擬化軟件OpenVZ虛擬出多個安全隔離的虛擬服務(wù)器,每個虛擬服務(wù)器作為一個虛擬路由器,擁有自身所屬的用戶程序進(jìn)程,獨立的root訪問權(quán)限、IP地址、內(nèi)存、處理器、文件、應(yīng)用程序、系統(tǒng)庫和配置文件等。
不同的虛擬路由器可以獨立的運行一種或者多種路由協(xié)議,協(xié)議的部署基于開源的Zebra[9]軟件,它是一個路由軟件包,提供基于TCP/IP路由服務(wù),支持 RIPv1,RIPv2,RIPng,OSPFv2,OSPFv3,BGP-4 和BGP-4+等眾多路由協(xié)議。除了傳統(tǒng)的IPv4路由協(xié)議,Zebra也支持IPv6路由協(xié)議。具體路由協(xié)議部署以及路由管理層面的實現(xiàn)將在后續(xù)的工作中描述。
本文中我們介紹了可編程虛擬化路由器的基本特性以及研究現(xiàn)狀,給出了基于NetFPGA的三級平面結(jié)構(gòu)的設(shè)計方案,并給出了各個平面的具體功能以及詳細(xì)的設(shè)計思路。首先,可編程虛擬化路由器采用數(shù)據(jù)平面與管理平面分離的思想,在兼顧高效的數(shù)據(jù)處理能力的同時,提高了系統(tǒng)的靈活可擴(kuò)展可編程能力;其次,管理平面可以方便靈活地配置和管理整個路由器系統(tǒng)的高效運行。針對可編程虛擬化路由器平臺,討論了虛擬化技術(shù)的基本概念并根據(jù)虛擬化的層次進(jìn)行了詳細(xì)的分類比較,最后著重論述了OpenVZ操作系統(tǒng)級虛擬化技術(shù)在可編程路由器中的實現(xiàn)方案。
[1]謝高崗,張玉軍,李振宇,等.未來互聯(lián)網(wǎng)體系結(jié)構(gòu)研究綜述[J].計算機(jī)學(xué)報,2012,35(6):1109-1119.XIE Gaogang,ZHANG Yujun,LI Zhenyu,et al.A Survey on Future Internet Architecture[J].Chinese Journal of Computers,2012,35(6):1109-1119.
[2]賀鵬,關(guān)洪濤,謝高崗,等.支持未來網(wǎng)絡(luò)創(chuàng)新的可編程虛擬化路由器技術(shù)[J].中興通訊技術(shù),2011,17(2):20-24.HE Peng,GUAN Hongtao,XIE Gaogang,et al.Programmable Virtual Router Technologies that Support Future Internet Innovation[J].ZTE,2011,17(2):20-24.
[3]XIE Gaogang,HE Peng,GUAN Hongtao,et al.PEARL:A Programmable Virtual Router Platform [J].IEEE Communications Magazine,2011,49(7):71-77.
[4]Stanford NetFPGA Team.NetFPGA Project[EB/OL].(2012-03-15) [2012-10-06].http://www.netfpga.org.
[5]GLEN Gibb,JOHN W,JAD Naous,et al.NetFPGA—An Open Platform for Teaching How to Build Gigabit-Rate Network Switches and Routers[J].IEEE Transactions on Education,2008,51(3):364-369.
[6]DEEPAK Unnikrishnan, RAMAKRISHNA Vadlamani,YONG Liao,et al.Scalable Network Virtualization Using FPGAs[C]//PETER YK,JOHN Wawrzynek(Eds.):Proceedings of the ACM/SIGDA 18th International Symposium on Field Programmable Gate Arrays,F(xiàn)PGA 2010,Monterey, California, USA, February 21-23. USA:ACM,2010:219-228.
[7]WALTERS J,VIPIN Chaudhary,CHA Minsuk,et al.A Comparison of Virtualization Technologies for HPC[C]//IEEE Computer Society,Advanced Information Networking and Applications,International Conference on,Gino-wan,Okinawa,Japan:IEEE Press,2008:861-868.
[8]OpenVZ Project Team.OpenVZ Linux Containers[EB/OL].(2012-10-17)[2012-10-23].http://wiki.openvz.org.
[9]GNU Project Software.GNU Zebra FREE TCP/IP Routing Software[EB/OL].(2012-10-06) [2012-11-12].https://www.mangob2b.com/en/zebra.