李劍鋒, 劉 淵, 王曉鋒,蔣 敏
為了對(duì)抗日益增長(zhǎng)的網(wǎng)絡(luò)空間安全威脅,需要建立網(wǎng)絡(luò)仿真平臺(tái)。當(dāng)前網(wǎng)絡(luò)仿真相關(guān)研究工作如下:在網(wǎng)絡(luò)模擬方面,文獻(xiàn)[1]基于并行離散時(shí)間模擬技術(shù),實(shí)現(xiàn)超大規(guī)模的網(wǎng)絡(luò)快速構(gòu)建,但難以支持真實(shí)軟件以及用戶行為的加載,存在逼真度的局限性。文獻(xiàn)[2]基于全虛擬化技術(shù)結(jié)合開源路由軟件實(shí)現(xiàn)虛擬路由器原型,并構(gòu)建了網(wǎng)絡(luò)仿真創(chuàng)新平臺(tái),但擴(kuò)展性不足。文獻(xiàn)[3]以LXC容器為虛擬化單元仿真出具有千節(jié)點(diǎn)規(guī)模的網(wǎng)絡(luò),提高了網(wǎng)絡(luò)的可擴(kuò)展性,但存在路由協(xié)議逼真性的不足。節(jié)點(diǎn)虛擬化方面,云計(jì)算中最具代表性的Openstack以及當(dāng)前主流的Docker容器技術(shù)可用于大規(guī)模網(wǎng)絡(luò)仿真[4]。在多粒度虛擬化研究方面,文獻(xiàn)[5]結(jié)合輕量級(jí)虛擬化以及全虛擬化技術(shù)實(shí)現(xiàn)了大規(guī)模、高逼真的網(wǎng)絡(luò)節(jié)點(diǎn)仿真平臺(tái)并用于網(wǎng)絡(luò)安全訓(xùn)練,但并未提供與實(shí)物網(wǎng)絡(luò)的一體化融合,一定程度上限制了仿真的逼真度。在互聯(lián)網(wǎng)體系中,大型網(wǎng)絡(luò)的主要節(jié)點(diǎn)是路由器,因此,仿真出高逼真的虛擬路由器成為網(wǎng)絡(luò)仿真研究的關(guān)鍵之一。在虛擬路由器的研究方面,可編程虛擬化軟件路由器(如Click[6],XORP[7],Quagga[8]等)被越來越多的研究者采用,文獻(xiàn)[9]實(shí)現(xiàn)了虛擬路由器原型,可用于仿真實(shí)驗(yàn)環(huán)境的動(dòng)態(tài)路由協(xié)議,但其仿真網(wǎng)絡(luò)中,每個(gè)虛擬路由器需要重復(fù)手動(dòng)配置路由協(xié)議,易用性不足。文獻(xiàn)[9]指出可依托Openstack平臺(tái)的虛擬化節(jié)點(diǎn)實(shí)現(xiàn)網(wǎng)絡(luò)功能虛擬化??傮w來看,當(dāng)前網(wǎng)絡(luò)仿真的研究存在著逼真度不夠、虛擬路由器易用性不足、虛擬網(wǎng)絡(luò)擴(kuò)展性差等問題。
本文基于Openstack開源云計(jì)算平臺(tái),提出了一種融合全虛擬化、輕量級(jí)虛擬化的多粒度虛實(shí)網(wǎng)絡(luò)仿真方法:通過融合輕量級(jí)虛擬化,提升了網(wǎng)絡(luò)仿真的可擴(kuò)展性;通過實(shí)現(xiàn)多粒度虛擬路由器路由協(xié)議的自動(dòng)化部署、無縫互通,提升了網(wǎng)絡(luò)仿真的易用性;通過虛實(shí)網(wǎng)絡(luò)一體化融合,進(jìn)一步提升了網(wǎng)絡(luò)仿真的逼真性。
基于多粒度虛擬化的虛實(shí)融合網(wǎng)絡(luò)仿真體系如圖1所示,包括2個(gè)部分:平臺(tái)層和資源層。
圖1 系統(tǒng)體系架構(gòu)
在平臺(tái)層中,基于Openstack平臺(tái)根據(jù)用戶需求從資源層中選取多粒度虛擬化路由器進(jìn)行虛擬網(wǎng)絡(luò)仿真;同時(shí)從資源層中選取實(shí)物路由器進(jìn)行實(shí)物網(wǎng)絡(luò)部署;并通過虛實(shí)融合技術(shù)將相對(duì)孤立的虛擬網(wǎng)絡(luò)和實(shí)物網(wǎng)絡(luò)融合成一個(gè)具備統(tǒng)一網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和邏輯視圖的目標(biāo)網(wǎng)絡(luò)。
平臺(tái)層包括3個(gè)部分:虛擬網(wǎng)絡(luò)仿真、實(shí)物網(wǎng)絡(luò)構(gòu)建以及虛實(shí)網(wǎng)絡(luò)融合。本文對(duì)Openstack云平臺(tái)進(jìn)行了擴(kuò)展,通過集成對(duì)Docker容器的支持實(shí)現(xiàn)對(duì)多粒度虛擬節(jié)點(diǎn)的統(tǒng)一管控,并基于Openstack 應(yīng)用程序編程接口(application programming interface,API)開發(fā)了虛擬網(wǎng)絡(luò)自動(dòng)化部署系統(tǒng)。同時(shí)用戶可從資源層中選取實(shí)物路由器進(jìn)行實(shí)物網(wǎng)絡(luò)的構(gòu)建。
虛實(shí)網(wǎng)絡(luò)融合,主要包括虛實(shí)網(wǎng)絡(luò)對(duì)接模塊和虛實(shí)網(wǎng)絡(luò)一體化模塊。為了解決Openstack中虛實(shí)節(jié)點(diǎn)通信不透明的問題,本文基于Openflow流表重新實(shí)現(xiàn)了一種透明的虛實(shí)網(wǎng)絡(luò)對(duì)接方法,并基于邊界網(wǎng)關(guān)協(xié)議(border gateway protocol,BGP)實(shí)現(xiàn)虛擬網(wǎng)絡(luò)區(qū)域和實(shí)物網(wǎng)絡(luò)區(qū)域有機(jī)融合。
資源層中主要包括全虛擬化節(jié)點(diǎn)、輕量級(jí)虛擬化節(jié)點(diǎn)、以及實(shí)物節(jié)點(diǎn)。考慮以基于內(nèi)核的虛擬機(jī)(kernel-based virtual machine,KVM)為代表的全虛擬化技術(shù)和以Docker容器為代表的輕量級(jí)虛擬化技術(shù)存在的不足,本文所設(shè)計(jì)的資源層中提供了多種粒度的虛擬化節(jié)點(diǎn)以供仿真平臺(tái)使用。同時(shí),基于全虛擬化和輕量級(jí)虛擬化技術(shù)在云平臺(tái)中進(jìn)行虛擬路由器仿真,為了解決文獻(xiàn)[8]中虛擬路由器協(xié)議手動(dòng)配置繁瑣的問題,提高虛擬路由器的部署效率,設(shè)計(jì)了一種虛擬路由器自動(dòng)配置方法,可用于在云平臺(tái)中快速部署虛擬路由器節(jié)點(diǎn)。
本文所述虛擬網(wǎng)絡(luò)平臺(tái)基于開源云平臺(tái)Openstack實(shí)現(xiàn),當(dāng)前Openstack平臺(tái)默認(rèn)只支持全虛擬化KVM節(jié)點(diǎn)部署,為了實(shí)現(xiàn)多粒度虛擬化節(jié)點(diǎn)混合部署、無縫互通,需要在Openstack中集成對(duì)Docker容器的支持。Nova-docker[10]是Openstack社區(qū)提出的一種對(duì)容器的集成方式,能夠使Openstack以管理虛擬機(jī)的方式管理容器。因此,本文對(duì)Nova-docker源碼的權(quán)限管理[11]部分進(jìn)行了進(jìn)一步開發(fā),使得Openstack中能夠以特權(quán)模式啟動(dòng)Docker容器。
為了簡(jiǎn)化用戶交互復(fù)雜度,本文對(duì)Openstack原生API進(jìn)行封裝并開發(fā)了虛擬網(wǎng)絡(luò)自動(dòng)化部署系統(tǒng),用戶可通過該系統(tǒng)選取多粒度虛擬化鏡像進(jìn)行虛擬網(wǎng)絡(luò)自動(dòng)部署。
2.2.1 虛擬路由器實(shí)現(xiàn)原理
設(shè)計(jì)的虛擬路由器系統(tǒng)架構(gòu)如圖2所示。
圖2 虛擬路由器結(jié)構(gòu)
結(jié)合全虛擬化KVM和輕量級(jí)虛擬化Docker等多種虛擬化方式實(shí)現(xiàn)虛擬路由器原型,同時(shí)使用Quagga路由軟件作為路由控制層完成路由學(xué)習(xí)。
2.2.2 路由協(xié)議自動(dòng)配置
為了提高虛擬路由器的易用性,設(shè)計(jì)了一種虛擬路由器自動(dòng)配置方法?;赑ython實(shí)現(xiàn),采用模塊化設(shè)計(jì),配置流程如圖3所示。
圖3 虛擬路由器自動(dòng)配置流程
網(wǎng)絡(luò)嗅探模塊用于自動(dòng)識(shí)別路由器端口信息;自動(dòng)配置模塊用于與Quagga路由進(jìn)程動(dòng)態(tài)交互,并基于Pexpect開發(fā)工具根據(jù)默認(rèn)參數(shù)進(jìn)行OSPF協(xié)議自動(dòng)配置;增量配置模塊負(fù)責(zé)提供Web服務(wù)對(duì)外部提供Rest API,可提供用戶自定義增量配置。
該自動(dòng)配置方法適用于2種部署場(chǎng)景:
1)默認(rèn)情況下虛擬路由器鏡像提供基于OSPF協(xié)議的自動(dòng)部署,用戶直接啟動(dòng)虛擬路由器鏡像無需任何配置即可自動(dòng)與鄰接路由器進(jìn)行數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)和路由協(xié)議學(xué)習(xí)。
2)若用戶需要進(jìn)行路由器自定義增量配置,僅需在路由器啟動(dòng)后通過Rest API向其發(fā)送增量配置信息。本文設(shè)計(jì)的虛擬路由器主要提供靜態(tài)路由、包過濾、路由表查詢、路由協(xié)議附加等常用功能增量配置,配置接口和方法如表1。
表1 增量配置API
例如在虛擬路由器中增量配置BGP協(xié)議,需發(fā)送如下信息,JSON數(shù)據(jù)內(nèi)容為網(wǎng)絡(luò)場(chǎng)景所需的BGP協(xié)議參數(shù):
Curl -X POST -H "Content-Type:application/json"-d '{"BGP":{}}' http:∥ip:port/addprotocol
2.3.1 虛實(shí)網(wǎng)絡(luò)對(duì)接
本文虛實(shí)對(duì)接方法基于標(biāo)準(zhǔn)的Openstack平臺(tái),采用Openvswitch構(gòu)建虛擬鏈路。Openstack中通用的虛實(shí)結(jié)合方案是通過Neutron中的L3-agent為每個(gè)虛擬機(jī)提供一個(gè)與外部網(wǎng)絡(luò)處在同一網(wǎng)段的浮動(dòng)IP,虛實(shí)節(jié)點(diǎn)通信流量會(huì)通過該IP進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換(network address translation,NAT)。雖然實(shí)現(xiàn)了虛實(shí)網(wǎng)絡(luò)間流量互通,但存在虛實(shí)互聯(lián)不透明的問題,即流量轉(zhuǎn)發(fā)路徑不是直達(dá),而是經(jīng)過了一跳浮動(dòng)IP,因此,這種方式并不是真正意義上的虛實(shí)互連。
為了實(shí)現(xiàn)虛實(shí)網(wǎng)絡(luò)透明互聯(lián),本文結(jié)合可配置交換機(jī)并基于Openflow流表設(shè)計(jì)了一種透明的虛實(shí)互聯(lián)方法。參照?qǐng)D4,具體實(shí)施流程為:
1)在Openstack數(shù)據(jù)庫(kù)中查詢虛擬機(jī)(virtual machine,VM)所在網(wǎng)絡(luò)的網(wǎng)絡(luò)ID號(hào),根據(jù)該網(wǎng)絡(luò)ID查找到其對(duì)應(yīng)的虛擬局域網(wǎng)(virtual local area networks,VLAN)號(hào),假設(shè)該網(wǎng)絡(luò)VLAN號(hào)為5;
2)將控制節(jié)點(diǎn)的em3網(wǎng)卡接入可配置實(shí)物交換機(jī)端口2,并將該端口配置成中繼(Trunk)模式且放行VLAN號(hào)為5的流量;
3)將實(shí)物機(jī)PC2的IP配置成與VM同網(wǎng)段的地址,并接入實(shí)物交換機(jī)端口3,同時(shí)將端口3劃分到VLAN5中;
4)對(duì)控制節(jié)點(diǎn)中的br-ex和br-int橋添加如下流表,使虛實(shí)網(wǎng)絡(luò)間的流量正常轉(zhuǎn)發(fā),無需經(jīng)過qrouter轉(zhuǎn)換。
ovs-ofctl add-flow br-ex ta-ble=0,priority=5,actions=normal
ovs-ofctl add-flow br-int ta-ble=0,priority=5,actions=normal
至此,實(shí)物機(jī)PC2和虛擬機(jī)VM可以任意配置成同網(wǎng)段的IP地址進(jìn)行通信,無需進(jìn)行浮動(dòng)IP的轉(zhuǎn)換,保證了虛實(shí)對(duì)接的逼真性。
圖4 虛實(shí)網(wǎng)絡(luò)對(duì)接
2.3.2 虛實(shí)網(wǎng)絡(luò)一體化融合
將虛擬網(wǎng)絡(luò)和實(shí)物網(wǎng)絡(luò)作為單獨(dú)的自治區(qū)域,基于BGP協(xié)議實(shí)現(xiàn)虛實(shí)網(wǎng)絡(luò)一體化融合。
在實(shí)驗(yàn)平臺(tái)中,虛擬網(wǎng)絡(luò)邊界設(shè)備采用上節(jié)設(shè)計(jì)的虛擬路由器,實(shí)物網(wǎng)絡(luò)邊界設(shè)備采用Cisco路由器,兩者互為外部BGP(external BGP,EBGP)鄰居,且邊界路由器與所屬網(wǎng)絡(luò)區(qū)域其他路由器形成內(nèi)部BGP協(xié)議(intermal BGP,IBGP)鄰居,實(shí)物網(wǎng)絡(luò)和虛擬網(wǎng)路各自運(yùn)行內(nèi)部網(wǎng)絡(luò)協(xié)議。虛實(shí)網(wǎng)絡(luò)邊界路由器之間通過Updata報(bào)文向不同自治區(qū)域發(fā)送路由更新,經(jīng)過路由計(jì)算同步后,全網(wǎng)路由表一致,將虛擬網(wǎng)絡(luò)與實(shí)物網(wǎng)絡(luò)有機(jī)融合成了一個(gè)具備統(tǒng)一網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和邏輯視圖的目標(biāo)網(wǎng)絡(luò)。
實(shí)驗(yàn)平臺(tái)基于Openstack標(biāo)準(zhǔn)的部署方案,采用圖4所示基本架構(gòu)。包括一臺(tái)控制節(jié)點(diǎn),若干臺(tái)計(jì)算節(jié)點(diǎn),物理服務(wù)器基于千兆以太網(wǎng)交換機(jī)連接,其中控制節(jié)點(diǎn)第三塊網(wǎng)卡接入可配置交換機(jī)用于實(shí)現(xiàn)虛實(shí)網(wǎng)絡(luò)融合,仿真實(shí)驗(yàn)流程如圖5所示。
圖5 實(shí)驗(yàn)流程
部署了一個(gè)覆蓋多粒度虛擬化網(wǎng)絡(luò)和實(shí)物網(wǎng)絡(luò)的統(tǒng)一目標(biāo)網(wǎng)絡(luò),網(wǎng)絡(luò)拓?fù)淙鐖D6所示。
圖6 虛實(shí)網(wǎng)絡(luò)拓?fù)?/p>
其中虛擬路由器VR1和VR2為全虛擬化虛擬路由器,VR3為輕量級(jí)虛擬化路由器。經(jīng)過自動(dòng)化部署后的虛擬網(wǎng)絡(luò)拓?fù)渲懈魈摂M路由器已自動(dòng)運(yùn)行開放式最短路徑優(yōu)先(open shortest path first,OSPF)協(xié)議。同時(shí),需要通過遠(yuǎn)程API為VR1和VR2增量配置BGP以實(shí)現(xiàn)虛實(shí)網(wǎng)絡(luò)融合。另外,為了突出實(shí)驗(yàn)效果,VR3未進(jìn)行BGP增量配置。
實(shí)物網(wǎng)絡(luò)由4臺(tái)思科C3600路由器構(gòu)建,邊界路由器接入Openstack集群的外部網(wǎng)絡(luò)可配置物理交換機(jī),通過配置交換機(jī)和添加Openflow流表實(shí)現(xiàn)虛實(shí)網(wǎng)絡(luò)對(duì)接,路由器間配置OSPF協(xié)議和BGP。
3.3.1 拓?fù)渎酚蓽y(cè)試
經(jīng)過目標(biāo)網(wǎng)絡(luò)中各路由器報(bào)文轉(zhuǎn)發(fā)和路由學(xué)習(xí),全網(wǎng)可以通過路由協(xié)議查找到達(dá)目的網(wǎng)絡(luò)的路徑。圖7為實(shí)物路由器R4的路由表學(xué)習(xí)情況。
在圖7中, R4通過OSPF協(xié)議學(xué)習(xí)到實(shí)物網(wǎng)絡(luò)各網(wǎng)段,通過BGP協(xié)議學(xué)習(xí)到虛擬網(wǎng)絡(luò)各網(wǎng)段。由于VR3未參與BGP路由,故實(shí)物路由器路由表中未學(xué)習(xí)到租戶網(wǎng)3,路由表學(xué)習(xí)情況與理論分析相一致。
3.3.2 虛實(shí)節(jié)點(diǎn)通信測(cè)試
通過Ping程序測(cè)試了實(shí)物路由器R4到虛擬節(jié)點(diǎn)VM2的連通性并且通過Traceroute工具測(cè)試了節(jié)點(diǎn)間的數(shù)據(jù)轉(zhuǎn)發(fā)路徑,驗(yàn)證虛實(shí)網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)耐该餍?,測(cè)試結(jié)果如圖8所示。
圖8 R4到VM2之間連通性測(cè)試
可以看出,虛實(shí)節(jié)點(diǎn)間數(shù)據(jù)報(bào)文無縫互通,且報(bào)文轉(zhuǎn)發(fā)路徑經(jīng)過實(shí)物路由器R2、R1以及虛擬路由器VR1,VR2,虛實(shí)網(wǎng)絡(luò)對(duì)接流量直接從實(shí)物路由器發(fā)往虛擬路由器,未經(jīng)過Openstack中浮動(dòng)IP的轉(zhuǎn)換,驗(yàn)證了虛實(shí)網(wǎng)絡(luò)對(duì)接的逼真性。
3.3.3 網(wǎng)絡(luò)擴(kuò)展性測(cè)試
通過虛擬網(wǎng)絡(luò)自動(dòng)化部署系統(tǒng)在融合了Docker容器的Openstack平臺(tái)中進(jìn)行大規(guī)模虛擬網(wǎng)絡(luò)部署,構(gòu)建了如圖9所示虛擬網(wǎng)絡(luò)拓?fù)洹?/p>
圖9 虛擬網(wǎng)絡(luò)擴(kuò)展性測(cè)試
由于多個(gè)Docker容器共享主機(jī)內(nèi)核,因此,一個(gè)容器只相當(dāng)于一個(gè)進(jìn)程,突破了云平臺(tái)中硬件資源對(duì)網(wǎng)絡(luò)規(guī)模的限制。經(jīng)過多次測(cè)試,結(jié)果表明該平臺(tái)可基于多粒度虛擬化節(jié)點(diǎn)仿真節(jié)點(diǎn)規(guī)模大于1 000的虛擬網(wǎng)絡(luò),驗(yàn)證了仿真平臺(tái)的可擴(kuò)展性。
3.3.4 網(wǎng)絡(luò)性能測(cè)試
基于Netperf網(wǎng)絡(luò)性能測(cè)試工具對(duì)網(wǎng)絡(luò)性能進(jìn)行測(cè)試,經(jīng)過測(cè)試,虛實(shí)網(wǎng)絡(luò)間的吞吐量達(dá)到900 Mbps,接近物理交換機(jī)性能。另外,本文構(gòu)建的虛擬網(wǎng)絡(luò),在提升了擴(kuò)展性和逼真性的同時(shí)其性能有所降低,網(wǎng)絡(luò)性能隨著路由跳數(shù)的增加逐漸減弱,虛擬網(wǎng)絡(luò)吞吐量的測(cè)試結(jié)果如圖10所示。
圖10 虛擬網(wǎng)絡(luò)吞吐量測(cè)試
圖10中所示,虛擬網(wǎng)絡(luò)的性能會(huì)隨著規(guī)模的擴(kuò)大而逐漸降低。但經(jīng)過多次測(cè)試,在有限的網(wǎng)絡(luò)范圍內(nèi),虛擬網(wǎng)絡(luò)的性能穩(wěn)定并且能夠滿足日常實(shí)驗(yàn)的需求。
分析了當(dāng)前網(wǎng)絡(luò)仿真的研究現(xiàn)狀,針對(duì)當(dāng)前研究中不完善的地方設(shè)計(jì)了改進(jìn)方案。結(jié)合私有云平臺(tái)Openstack,重點(diǎn)研究了多粒度虛擬化技術(shù)、虛擬路由器仿真技術(shù)以及虛實(shí)網(wǎng)絡(luò)一體化融合技術(shù)。并構(gòu)建了一個(gè)高逼真、可擴(kuò)展、方便易用的網(wǎng)絡(luò)仿真平臺(tái),通過實(shí)驗(yàn)驗(yàn)證了其有效性。
參考文獻(xiàn):
[1] Liu N,Carothers C,Cope J,et al.Model and simulation of exascale communication networks[J].Journal of Simulation,2012,6(4):227-236.
[2] 龔 宇,李 帥,李 勇,等.基于云計(jì)算的網(wǎng)絡(luò)創(chuàng)新實(shí)驗(yàn)平臺(tái)[J].計(jì)算機(jī)工程,2012(24):5-8,13.
[3] Dutta A,Gnawali O.Large-scale network protocol emulation on commodity cloud[C]∥2014 IEEE Global Communications Conference,Austin,TX,2014:1114-1119.
[4] 方濱興,賈 焰,李愛平,等.網(wǎng)絡(luò)空間靶場(chǎng)技術(shù)研究[J].信息安全學(xué)報(bào),2016(3):1-9.
[5] Andel T R, Stewart K E,Humphries J W.Using virtualization for cyber security education and experimentation[C]∥14th Colloquium for Information Systems Security Education,2010:130-136.
[6] Kohler E,Morris R,Chen B,et al.The click modular router [J].ACM Transactions on Computer Systems (TOCS),2000,18(3):263-297.
[7] Handley M,Hodson O,Kohler E.XORP:An open platform for network research [J].ACM SIGCOMM Computer Communication Review,2003,33(1):53-57.
[8] 黃敏桓,張堯?qū)W,許 飛,等.基于虛擬化技術(shù)的路由仿真實(shí)驗(yàn)平臺(tái)設(shè)計(jì)[J].系統(tǒng)仿真學(xué)報(bào),2014(8):1672-1677.
[9] Franco Callegati,Walter Cerroni,Chiara Contoli.Virtual networking performance in openstack platform for network function virtualization[J].Journal of Electrical and Computer Engineering,2016,Article ID 5249421,15 pages,2016.doi:10.1155/2016/5249421.
[10] Nova-docker.https:∥wiki.openstack.org/wiki/Docker.
[11] 楊 鵬,馬志程,彭 博,等.集成Docker容器虛擬化的OpenStack云計(jì)算平臺(tái)性能研究[J].計(jì)算機(jī)工程,2017(8):26-31.