祁思博,黃 偉,梁洪泉
(中國電子科技集團公司第五十四研究所,河北 石家莊 050081)
近年來,建模與仿真技術正向“網絡化、虛擬化、智能化、協同化、普適化、服務化”的方向發展[1],虛擬化仿真技術在建模與仿真領域得到了廣泛應用。但傳統的虛擬化仿真技術存在弊端,如仿真計算資源利用率較低,無法被網絡上的其他用戶共享[2];對于仿真任務、仿真資源的描述信息缺乏統一的描述機制,仿真應用難以分布式協作;各領域和組織建立了大量面向不同領域、層次及粒度的仿真系統,這些系統與應用耦合程度緊密,難以解決模型組合重用[3]等問題。
云計算的出現克服了以上弊端,用戶可以在云平臺上對虛擬資源進行集中、靈活地控制,并按需、動態地進行配給。李伯虎院士在 Cosim-Grid 基礎上,在系統中引入“云計算”的概念,構建了一種基于云計算理念的網絡化建模與仿真平臺[4],目標是進一步提高細粒度資源的共享能力、支持多用戶協同能力、加強安全機制并且提高易用性,建立了普適化仿真體系結構。但是,該平臺在資源封裝靈活性和云平臺易用性等方面存有不足。趙正揚[2]等人設計了一種網絡仿真云化平臺,實現了仿真任務的調度、控制和管理的云化,但是平臺功能和虛擬化仿真能力不夠完善。
本文以云計算為基礎,對仿真資源的虛擬化、池化以及構件化進行研究與分析,基于OpenStack[5]平臺,結合中間件、Docker[6]等技術,提供一套基于云計算的虛擬化仿真平臺構建方案。
云計算是以虛擬化技術為基礎,以網絡為載體,以用戶為主體并為其提供基礎架構級、平臺級和軟件級等服務,整合大規模分布式的計算、存儲、數據及應用等資源進行協同工作的超級計算服務模式[7]。
云計算具有諸多優點,主要包括:“云”的規模大,支持用戶在任意位置使用各種終端獲取應用服務;以數據多副本容錯、計算節點同構可互換等多種措施保障服務;用鏡像執行或者提供服務的機制處理資源的異構性;支持多個不同類型應用同時運行,具有通用性,可以滿足應用拓展和用戶增加的高可擴展性能;節約計算成本,簡化運維工作,按需提供服務[8]。
通過多種虛擬化技術,云計算實現了物理資源與特定應用環境之間的解耦,將各種物理資源轉化為云計算資源池中的邏輯資源,并通過網絡對其進行共享[9]。根據虛擬資源類別的不同,典型的云計算提供基礎設施即服務(Infrastructure as a Service,IaaS)、平臺即服務(Platform as a Service,PaaS)和軟件即服務(Software as a Service,SaaS)3類服務模式。
IaaS是一種管理計算資源的模式。在這種模式下,用戶無需購買服務器、路由器和交換機等網絡設備,即可隨時隨地部署和運行存儲、處理、網絡以及其他基本的計算資源[10]。
PaaS是一種將服務平臺或開發環境作為服務的交付模式。在這種模式中,云端將軟件開發平臺作為一種服務,用戶可以控制部署的應用程序以及運行應用程序的托管環境配置。
SaaS是一種軟件的交付模式。在這種模式中,云端集中式托管軟件應用及其相關的數據,用戶只需要使用終端訪問互聯網,不需要安裝軟件,即可使用軟件的全部功能。
云計算技術的出現與成熟為集中、靈活地管理提供了技術基礎。通過應用云化,將傳統應用搬到云計算平臺,基于虛擬化技術構建資源池,借助云平臺管理實現資源的自動調度、應用的自由遷移和多租戶管理等。對于仿真應用的云化升級,隨之而來的便利是,無論何時何地用戶僅需通過瀏覽器,登錄仿真應用的云化平臺,就能進行仿真功能的操作和仿真資源的管理,并根據仿真任務需求,按需獲取不同模式的服務。
虛擬化技術是提高仿真資源利用率、降低仿真服務成本的有效方法。面向云計算的仿真資源虛擬化,通過在物理基礎設施與業務應用需求之間引入一個邏輯層,對二者進行解耦來隱藏底層基礎設施的異構性,將分布、異構的仿真資源虛擬化為同構的虛擬仿真資源,做到資源成池,以實現地理分散、形態異構的仿真資源被快速準確地發現與選擇,最大化仿真資源與仿真能力的全局流通性。如圖1所示。

圖1 面向云計算的仿真資源虛擬化
一般而言,常規仿真資源具有軟件屬性,仿真計算資源具有硬件屬性,軟硬件的差別導致二者采用了不同虛擬化技術。對于常規仿真資源的虛擬化,采用基于語義的仿真資源虛擬化方法,提供仿真資源的含義及正確使用方式,為協作的實體解決由各種差異所引起的語義沖突。對于仿真計算資源的虛擬化,采用典型虛擬化技術,提供不同粒度的虛擬化計算資源,為匹配各種規模的常規仿真資源做支撐。
語義Web服務框架OWL-S是一種用來描述語義Web服務資源的特殊領域本體,使用OWL-S描述虛擬資源可以實現資源發現、資源分配及資源監控等操作,使資源的管理和操作更加智能,從而滿足資源管理在靈活性、可擴展性和層次性等方面的需求[11]。OWL-S包括服務配置、服務模型和服務訪問3個組件。其中,服務配置用于對資源信息的描述,實現仿真資源在語法層面的虛擬化;服務模型用于描述資源的具體實現細節;服務訪問用于對資源訪問進行描述,提供資源正確的使用方式,三者實現仿真資源在語義層面的虛擬化[12]。
仿真計算資源的虛擬化,按照實現層次劃分為硬件級虛擬化和系統級虛擬化。硬件級虛擬化,是在計算資源硬件和操作系統之間增加虛擬層,稱為Hypervisor或者虛擬機監視器(Virtual Machine Monitor,VMM),可允許多個操作系統和應用共享一套基礎物理硬件,虛擬機運行在虛擬層上,擁有獨立的虛擬化硬件資源和操作系統,與其他虛擬機完全隔離。系統級虛擬化,是在一個主機操作系統上增加虛擬層,將系統劃分成多個互相隔離的容器,是內核輕量級的操作系統層虛擬化技術,主要由Namespace,Cgroups兩大機制來保證實現,可允許多個容器共享一個主機系統,容器運行在虛擬層上,擁有獨立的命名空間和進程資源,并通過命名空間與其他容器隔離。
虛擬化仿真利用資源池技術來為上層提供服務,通過對虛擬化常規仿真資源和仿真計算資源進行池化,支撐仿真資源的發現、調度與回收。虛擬資源池的構建與維護過程是虛擬資源調度的基礎,負責管理分布式虛擬資源的使用過程,識別虛擬資源,查找和分配虛擬資源,監測虛擬資源的運行情況等,并提供統一的資源訪問接口。虛擬資源池構建與維護的整個生命周期,如圖2所示。

圖2 虛擬資源池構建與維護過程
資源感知:對仿真資源進行感知和發現,實時監測虛擬仿真資源的狀態,以確保資源池中數據的實時更新。
資源描述:對感知到的虛擬仿真資源按其分類進行統一描述,屏蔽底層資源的異構特性,并為資源調度過程提供統一的資源訪問接口。
資源注冊:向資源池中注冊新發現的虛擬仿真資源,使新發現的資源成為可管理對象。虛擬資源的注冊信息包括資源的屬性信息,如鏈路類型、鏈路協議和鏈路帶寬等。
資源發現:根據資源請求,從虛擬資源池中查找滿足資源請求條件的可用資源集合。
資源分配:依據約束條件從資源發現過程提供的候選資源集合中選擇最佳匹配的虛擬資源,為資源請求指派合適的資源。
資源預留:為資源請求預留相關資源,要求在指定時間段內把資源預留給指定的業務。
資源回收:當業務生命周期結束后,釋放所用資源,由資源池回收,等待下一次分配。
OpenStack是一組用于構建和管理云計算管理平臺的軟件工具,由美國國家航空航天局(NASA)和Rackspace合作研發,于2010年7月正式對外公開。以Apache許可證授權,旨在為公共及私有云的建設與管理提供軟件的開源項目。OpenStack既是一個社區,也是一個項目和一個開源軟件,它提供了一個部署云的操作平臺或工具集,宗旨在于幫助組織運行為虛擬計算或存儲提供服務的云,為公有云、私有云提供可擴展、靈活的云計算。
OpenStack開源云平臺主要提供計算、存儲及網絡等資源,整體項目根據資源的服務類型不同,拆分為不同的邏輯組件進行獨立開發,組件之間通過消息隊列進行互相調度[13]。OpenStack核心項目包括Nova,Neutron,Cinder,Glance,Horizon,Keystone等。
Nova組件被視為云框架控制器的核心,支持各種各樣的hypervisor以及裸機配置,Nova API作為管理資源池的主要接口,支撐Nova管理本地計算(CPU,MEM)資源和編排二級資源(網絡和存儲)的供給。
Neutron組件用來提供云計算環境中的虛擬網絡功能,支持多種物理網絡類型,以插件形式支持SDN插件,使用被Nova運行的hypervisor提供網絡資源。
Cinder組件用來為虛擬機或容器鏡像提供塊(傳統磁盤)存儲服務。
Glance組件主要用來管理、存儲鏡像,支持本地存儲,NFS,SWIFT,Ceph等,可以存儲KVM,Docker等軟件鏡像。
Keystone組件作為OpenStack的認證模塊,對OpenStack中租戶的信息管理進行認證,任何服務請求需要經過它的驗證獲得服務的endpoint。
Horizon組件為用戶和管理員提供了一個OpenStack組件功能相關的圖形化用戶界面。
面向云計算的虛擬化仿真具有“集中控制、靈活重組、協作共享”等需求,采用虛擬資源池、構件化封裝及發布訂閱協同等技術,結合虛實轉換協議、復現粒度映射實現分布式、多模式仿真系統間的互聯互通、信息處理和數據采集,在此基礎上,提出基于云計算的資源層、控制層和應用層3層虛擬化仿真體系架構,如圖3所示。

圖3 虛擬化仿真平臺體系架構
虛擬化仿真資源層主要完成各類仿真資源的虛擬化,利用OpenStack中的典型虛擬化技術對仿真計算資源進行虛擬化,形成以KVM,Docker為主的虛擬化仿真計算資源池;利用OWL-S對常規仿真資源進行語義層虛擬化,形成虛擬化常規仿真資源池,并支持“仿真元模型、仿真模型、仿真系統”3個層面仿真模型的柔性重組。
控制管理層主要完成對虛擬化仿真資源的管理控制,利用典型中間件技術對虛擬化仿真資源進行控制管理,實現仿真參數重配置、模型柔性重組、故障動態處理、仿真任務管理、狀態實時監控及資源決策調度等功能,為上層的仿真應用部署提供支撐。
仿真應用層是面向用戶的具體仿真實現,支持數字仿真、全虛擬化、輕量級虛擬化和儀器儀表等多模式聯合仿真,支持大規模分布式協同仿真,結合仿真規劃與部署、仿真協同控制、仿真評估與呈現支撐具體仿真能力的驗證,進而實現大系統的虛擬化仿真應用。
云計算用鏡像執行或者提供服務的機制處理資源的異構性。基于鏡像技術,利用構件化封裝的方法,將虛擬化仿真資源集成為具有特定仿真功能的仿真應用。一個仿真任務需要集成多個仿真應用相互配合進行工作。由于Docker能保證軟件依賴環境的一致性,因此整合Docker到工作流中,在分布式集群系統中具有一定的價值[14]。對于輕量級虛擬化仿真,Docker技術允許將仿真應用的構件、軟件棧等以Docker鏡像或衍生腳本的形式封裝,同時調度多個軟件構件鏡像相互配合。另外,配合Docker Compose等一些編排工具,仿真應用構件之間關系也能被封裝成Docker鏡像之間的編排關系。
構建流程如圖4所示,仿真應用發布者編寫應用構建命令,指示仿真應用鏡像構建如下。

圖4 基于鏡像的構件化仿真應用構建流程
① 編譯鏡像構建階段。依據編譯環境配置,生成一份面向編譯環境的Dockerfile資源文件包,利用DockerBuild命令構建編譯用鏡像。編譯鏡像構建完畢,調用DockerRun命令加載該鏡像編譯已掛載在該鏡像中的代碼。
② 運行鏡像構建階段。根據執行鏡像的配置,生成另外一份用于構建軟件運行鏡像的 Dockerfile資源文件包,調用DockerBuild 命令構建運行鏡像。
③ 重復以上階段,直到所有構件鏡像構建完畢。構件鏡像的數目視構建命令中聲明的容器數目而定。
④ 生成運行與編排配置。根據構建命令中容器編排設定,生成一份JSON格式的本地化安裝引導文件,并在軟件執行前被轉換成一份yaml格式的可被Docker Compose識別的編排配置文件。
⑤ 發布應用。仿真應用的所有執行鏡像會和其編排設定一起打包,并發布到仿真應用倉庫中,所有Docker鏡像會被上傳到仿真應用倉庫的Docker Repository中。
中間件提供以數據為中心的發布-訂閱機制,對分布式實時系統中數據發布、傳遞和接收的接口和行為進行標準化,且提供豐富的QoS策略支持。面向云計算的虛擬化仿真環境,可以集成HLA[15]/DDS/SOCKET/數據庫/內存共享等接口,支持多種分布式技術共存及與協議無關的通用開發接口,如圖5所示。

圖5 混合架構中間件技術
圖5中,數據分發中間件集合了HLA,DDS,SOCKET,橋接和虛擬接口對等通信方式,完成各系統間的數據高效分發。
SOCKET套接字:SOCKET是網絡通信的基本構件,具有簡單、靈活且易于理解的特點,用于不同主機間虛擬機環境之間的通信。
HLA高層體系架構:HLA是應用于分布式仿真系統的通用技術框架,在時間管理和聯邦管理方面具有明顯優勢,主要應用于數字仿真系統的聯合仿真。
DDS數據分發服務:以數據為中心的發布—訂閱機制,應用于業務應用系統在彈性通信網絡中的高效數據分發。
橋接:將虛擬機網絡配置到本地主機網絡的網段中,以實現節點之間、各節點與宿主機以及跨主機之間的通信。
虛擬接口對:用于不同網絡命名空間間進行通信的方式,實現同主機內,容器節點間的高效信息交互。
虛擬化仿真一般包含仿真準備、仿真實施和仿真評估3個階段。其中,仿真準備一方面是仿真資源的準備,包括軟硬件環境和知識庫等;另一方面是在云環境下建立請求方與提供方的聯系。仿真實施階段包括仿真需求定義、仿真任務定義、仿真參數及中間結果存儲等,云平臺對仿真任務狀態進行全局維護,實現數據更新和仿真任務調度,并響應用戶的并發請求。評估階段是在仿真任務結束之后,對系統更具用戶需求完成仿真活動,將相關的結果反饋給用戶,用戶對接收數據的質量和方式這一過程進行評價,并指導各方優化升級。
對于一項具體仿真試驗任務。首先,用戶通過網絡進入仿真平臺門戶,定義仿真任務和需求;然后,仿真平臺按任務要求自動查找和發現虛擬仿真資源,并將這些虛擬仿真資源按需進行基于鏡像的構件化集成,構造仿真應用;最后,仿真平臺根據仿真應用對資源實施動態管理,進行分布式仿真組件的協同運行,完成仿真任務。相關流程如圖6所示。

圖6 仿真運行流程
使用華為和浪潮2臺異構服務器搭建虛擬化仿真平臺,浪潮服務器作為控制節點及計算節點1,用以支撐基于KVM的虛擬機構建;華為服務器作為計算節點2,用以支撐基于Docker的容器構建;服務器操作系統采用CentOS 7.2,OpenStack軟件版本采用M(Mitaka)版。
所搭建的虛擬化仿真平臺可支撐典型的仿真任務,利用該平臺搭建了包含KVM/Docker,ONOS,OVS的軟件定義網絡環境,支撐SDN體制的仿真驗證。仿真過程如圖7所示。

圖7 基于虛擬化仿真平臺的仿真過程
操作過程分為3步。首先,用戶通過瀏覽器登錄虛擬化仿真平臺;然后,在云環境中查找虛擬化仿真資源,并利用鏡像構建仿真應用;最終,在瀏覽器中直接對仿真應用進行配置及仿真驗證。仿真結果表明,提出的仿真平臺為基于云計算的虛擬化仿真創新提供了良好的支撐。
面向云計算的虛擬化仿真平臺彌補了傳統虛擬化仿真技術的弊端,實現了不同虛擬化仿真之間的協作、共享以及多個仿真對物理鏈路和物理服務器等物理資源的復用,最大程度地提高了物理設備的資源利用效率。下一步,將融入智能化資源調度、SDN等技術,使得虛擬化仿真平臺更加智能化、網絡化與服務化。
隨著虛擬化仿真技術的不斷發展,基于云計算的虛擬化仿真將更加成熟,從而為用戶提供更好的服務。