袁博,汪斌強(qiáng),馬東超
(1. 國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心,河南 鄭州 450002;2. 北方工業(yè)大學(xué) 信息工程學(xué)院,北京 100041)
隨著網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大,大量的個(gè)性化業(yè)務(wù)應(yīng)用向規(guī)模化應(yīng)用轉(zhuǎn)化,傳統(tǒng)的網(wǎng)絡(luò)體系結(jié)構(gòu)已不能很好地適應(yīng)這種發(fā)展趨勢。可重構(gòu)柔性網(wǎng)絡(luò)是解決此類問題的一個(gè)重要方法,它的理論根源在于動(dòng)態(tài)地改變網(wǎng)絡(luò)的服務(wù)能力使之追隨用戶業(yè)務(wù)需求的變化,通過將網(wǎng)絡(luò)基礎(chǔ)設(shè)施的物理資源服務(wù)能力和服務(wù)提供商的業(yè)務(wù)承載能力相分離,以構(gòu)建可重構(gòu)服務(wù)承載網(wǎng)的形式,快速、靈活和高效地為用戶提供網(wǎng)絡(luò)服務(wù)。物理網(wǎng)絡(luò)為可重構(gòu)服務(wù)承載網(wǎng)提供網(wǎng)絡(luò)資源,不同的可重構(gòu)服務(wù)承載網(wǎng)具有不同的服務(wù)能力,從而在共享由不同基礎(chǔ)設(shè)施提供商提供的底層物理網(wǎng)絡(luò)資源的基礎(chǔ)上,能同時(shí)支持多個(gè)服務(wù)特征不同的異質(zhì)網(wǎng)絡(luò)體系結(jié)構(gòu)并存,為用戶提供多樣化的網(wǎng)絡(luò)服務(wù)[1,2]。這種網(wǎng)絡(luò)得以實(shí)現(xiàn)的關(guān)鍵是將底層網(wǎng)絡(luò)服務(wù)與用戶業(yè)務(wù)松耦合,網(wǎng)絡(luò)節(jié)點(diǎn)的軟硬件資源也需要被合理的分割。節(jié)點(diǎn)設(shè)備構(gòu)件化便是上述機(jī)制的一種物理映射,為此需要一種支持重構(gòu)的構(gòu)件模型。因?yàn)檐浖陀布谥貥?gòu)機(jī)制的實(shí)現(xiàn)上存在區(qū)別,本文主要研究的是節(jié)點(diǎn)設(shè)備控制平面軟件領(lǐng)域的構(gòu)件模型。
傳統(tǒng)的構(gòu)件模型設(shè)計(jì)時(shí)考慮的軟件運(yùn)行環(huán)境是靜態(tài)的,即使考慮到運(yùn)行環(huán)境變化也是基于對未來的預(yù)測,不能夠支持可重構(gòu)環(huán)境中大量未知構(gòu)件的動(dòng)態(tài)植入和卸載。要支持構(gòu)件的靈活重構(gòu),軟件工程層面應(yīng)該提供一種便于構(gòu)件重構(gòu)的構(gòu)件模型和管理機(jī)制,構(gòu)件模型應(yīng)該具有感知、決策和執(zhí)行的能力。即在感知到運(yùn)行環(huán)境或構(gòu)件發(fā)生變化后,構(gòu)件模型做出相應(yīng)決策,進(jìn)而執(zhí)行方法調(diào)用、參數(shù)改變或者結(jié)構(gòu)調(diào)整等動(dòng)作??芍貥?gòu)環(huán)境中構(gòu)件的動(dòng)態(tài)植入和卸載會(huì)帶來很多安全方面的不確定性因素,為保證軟件系統(tǒng)的安全性,構(gòu)件模型還必須為外來構(gòu)件提供可信交互機(jī)制,對構(gòu)件交互信息進(jìn)行可信封裝,保證任意一個(gè)構(gòu)件的行為和數(shù)據(jù)不會(huì)影響到其他構(gòu)件和系統(tǒng)環(huán)境。在構(gòu)件重構(gòu)后還應(yīng)保證新結(jié)構(gòu)下構(gòu)件間的可信交互。
針對上述挑戰(zhàn),本文提出了一種可信構(gòu)件模型(TCM, trustworthy component model)。TCM包括構(gòu)件代理、容器和行為構(gòu)件,使用構(gòu)件代理(CA,component agent)可完成決策和重構(gòu)部署,利用AC(agent client)可完成構(gòu)件間的可信交互。在構(gòu)件組裝層面引入具有感知功能的容器可隔離底層操作系統(tǒng)的影響,從而實(shí)現(xiàn)感知、決策和執(zhí)行這3個(gè)功能的獨(dú)立表達(dá)和封裝,同時(shí)在容器中實(shí)現(xiàn)構(gòu)件數(shù)據(jù)的可信封裝。在此基礎(chǔ)上,TCM使用動(dòng)態(tài)軟件體系結(jié)構(gòu)(DSA, dynamic software architecture)技術(shù)[3]實(shí)現(xiàn)構(gòu)件連接關(guān)系的重構(gòu)。上述機(jī)制一方面使第三方構(gòu)件可以通過AC實(shí)現(xiàn)與軟件體系結(jié)構(gòu)的松耦合而被靈活地植入和卸載,另一方面構(gòu)件代理可以對模型下的構(gòu)件進(jìn)行管理,保證軟件構(gòu)件系統(tǒng)的靈活重構(gòu)和可信。
構(gòu)件的插拔與替換是基于構(gòu)件的軟件工程(CBSE, component based software engineering)中的基本手段之一。在基于構(gòu)件的軟件設(shè)計(jì)階段,設(shè)計(jì)的逐步求精可視為抽象度高的構(gòu)件不斷被更細(xì)化的構(gòu)件替換的過程;在構(gòu)件的獲取階段,構(gòu)件的檢索可視為檢索者所需的構(gòu)件由構(gòu)件庫中的具體構(gòu)件所替換的過程;在構(gòu)件的組裝階段,通過構(gòu)件的替換可支持系統(tǒng)的靈活重構(gòu);在軟件運(yùn)行階段,構(gòu)件替換是支持系統(tǒng)升級(jí)、維護(hù)和演化的主要手段[4]。近年來興起的網(wǎng)構(gòu)軟件,可通過服務(wù)構(gòu)件的動(dòng)態(tài)替換和編排機(jī)制實(shí)現(xiàn)網(wǎng)上服務(wù)的按需計(jì)算,呈現(xiàn)更強(qiáng)的動(dòng)態(tài)性和演化性[5]。構(gòu)件的替換已成為CBSE領(lǐng)域近年來研究的核心和熱點(diǎn)問題之一,但是目前還未提出可以支持構(gòu)件靈活重構(gòu)的構(gòu)件模型。
軟件適應(yīng)領(lǐng)域[6]的研究者已經(jīng)認(rèn)識(shí)到構(gòu)件接口的功能分離原則在軟件適應(yīng)能力調(diào)整中的重要性。較為常見的實(shí)現(xiàn)方法是使用策略、規(guī)則等手段來單獨(dú)描述軟件適應(yīng)的決策邏輯,然后通過對決策邏輯的更新來調(diào)整適應(yīng)能力。文獻(xiàn)[7]給出了一個(gè)實(shí)現(xiàn)軟件自適應(yīng)的規(guī)則模型。Chisel[8]面向完全不可預(yù)期的動(dòng)態(tài)變化,使用策略來描述適應(yīng)邏輯,通過對策略的動(dòng)態(tài)更新來為軟件添加新的適應(yīng)能力;K-Component通過適應(yīng)契約描述語言(ACDL)來描述適應(yīng)邏輯,實(shí)現(xiàn)體系結(jié)構(gòu)在線變化過程中的功能點(diǎn)分離[9];MADAM區(qū)分功能實(shí)現(xiàn)和適應(yīng)性行為使能2個(gè)功能點(diǎn),通過構(gòu)件的附加屬性、效用函數(shù)等來支持軟件的適應(yīng)動(dòng)作[10]。上述方法均只強(qiáng)調(diào)決策邏輯從軟件功能實(shí)現(xiàn)中分離,而本文強(qiáng)調(diào)感知、決策、執(zhí)行三者功能的分離和在線重構(gòu),如引言中所做分析,感知能力的獨(dú)立表達(dá)和在線重構(gòu)對于構(gòu)件適應(yīng)能力的調(diào)整是十分必要的。此外,上述方法僅強(qiáng)調(diào)功能分離,沒有考慮開發(fā)時(shí)帶來的設(shè)計(jì)和編程實(shí)現(xiàn)代價(jià),本文則進(jìn)一步給出了構(gòu)件模型和使用 DSA技術(shù)來實(shí)現(xiàn)構(gòu)件靈活重構(gòu)的方法。
與本文工作密切相關(guān)的另一研究是基于體系結(jié)構(gòu)的軟件自適應(yīng)。早在1999年文獻(xiàn)[11]提出了一種基于體系結(jié)構(gòu)的軟件自適應(yīng)模型,該模型由描述適應(yīng)過程的適應(yīng)管理和實(shí)現(xiàn)體系結(jié)構(gòu)在線變化的演化管理2部分組成。除了前面已提及的K-Component,MADAM 等模型外,Rainbow 研究了軟件體系結(jié)構(gòu)在線修改過程中的軟件重用問題[12];FORMAware強(qiáng)調(diào)對體系結(jié)構(gòu)重配置時(shí)需要保證功能的完整性和遵守體系結(jié)構(gòu)的約束[13];Fractal構(gòu)件模型要求在設(shè)計(jì)時(shí)就要考慮體系結(jié)構(gòu)配置的變化[14]等。網(wǎng)構(gòu)軟件運(yùn)行平臺(tái)[15]也是基于軟件體系結(jié)構(gòu)來支持軟件的自適應(yīng)調(diào)整,通過自主構(gòu)件來實(shí)現(xiàn)構(gòu)件內(nèi)部從感知到行為執(zhí)行的功能適應(yīng)[16]。文獻(xiàn)[17]提出了一種以“環(huán)境信息顯式化、互動(dòng)方式層次化、體系結(jié)構(gòu)可演化”為特征的環(huán)境驅(qū)動(dòng)模型。上述工作研究了基于軟件體系結(jié)構(gòu)的模型,通過可演化的體系結(jié)構(gòu)來支持軟件自適應(yīng)調(diào)整。但是這種調(diào)整能力還是依賴軟件體系結(jié)構(gòu)的設(shè)計(jì),這種設(shè)計(jì)方式在封閉的軟件架構(gòu)中是有效的,一旦應(yīng)用到開放的環(huán)境中就暴露出體系結(jié)構(gòu)過于緊耦合的缺點(diǎn)。而本文工作則關(guān)注如何在運(yùn)行時(shí)實(shí)現(xiàn)軟件構(gòu)件的在線重構(gòu)。例如構(gòu)件間拓?fù)潢P(guān)系改變和通過增加或替換構(gòu)件來引入新的功能等。本文提出的構(gòu)件模型,將決策和執(zhí)行功能交予模型框架實(shí)現(xiàn),構(gòu)件只專注功能的實(shí)現(xiàn),減少了第三方開發(fā)構(gòu)件的難度,有利于軟件在開放異構(gòu)環(huán)境中的應(yīng)用。
對于運(yùn)行大量外來構(gòu)件的軟件系統(tǒng),如何保證軟件系統(tǒng)的安全和外來構(gòu)件的可信是必須要解決的問題。第三方構(gòu)件主要依靠數(shù)據(jù)的交互影響其他構(gòu)件,因此保證構(gòu)件數(shù)據(jù)的安全是一種提高構(gòu)件模型可信性的解決方案。數(shù)據(jù)的安全封裝最早出現(xiàn)在虛擬機(jī)研究中[18]。Tal Garfinkel和Ben Pfaff等提出了一種稱為Terra的可信計(jì)算體系結(jié)構(gòu)[19],它的目標(biāo)是支持具有不同安全需求的應(yīng)用同時(shí)運(yùn)行在同一硬件平臺(tái)之上。Terra利用虛擬機(jī)技術(shù)在一個(gè)硬件平臺(tái)上構(gòu)建多個(gè)具有不同安全特性的可信計(jì)算系統(tǒng)。通過嚴(yán)格保證虛擬機(jī)間的隔離,使得具有較低安全級(jí)別的“開放式”系統(tǒng)和具有較高安全級(jí)別的“封閉式”計(jì)算機(jī)系統(tǒng)能夠并發(fā)地執(zhí)行在同一硬件之上。但是Terra并沒有使用安全硬件,而且只為平臺(tái)上的各種應(yīng)用提供基本安全保障,并沒有建立高等級(jí)的信任保證,也沒有采用KVM[20]或VaxVMM[21,22]的安全共享方法。IBM公司的vTPM系統(tǒng)[23]也是基于Xen實(shí)現(xiàn),它能夠利用底層硬件的TPM模塊為上層的多個(gè)虛擬機(jī)提供可信平臺(tái)模塊服務(wù),從而實(shí)現(xiàn)了信息流在虛擬機(jī)監(jiān)視器中的安全傳遞。HP也在TPM虛擬化方面做了類似的研究工作[24]。但是這些技術(shù)面對的是應(yīng)用復(fù)雜多變和易遭受攻擊的計(jì)算機(jī)系統(tǒng),對于可重構(gòu)網(wǎng)絡(luò)中的節(jié)點(diǎn)設(shè)備,可以利用上述研究的數(shù)據(jù)安全隔離或封裝的思想,不需要開發(fā)獨(dú)立的可信計(jì)算平臺(tái)。
與前人不同,本文提出了一種支持網(wǎng)絡(luò)重構(gòu)的可信構(gòu)件模型,并從構(gòu)件數(shù)據(jù)的可信性出發(fā),對構(gòu)件交互的數(shù)據(jù)進(jìn)行安全封裝,阻止構(gòu)件進(jìn)行惡意操作,提高了整個(gè)構(gòu)件模型的可信性。本文創(chuàng)新點(diǎn)在于提出了一種支持重構(gòu)的可信構(gòu)件模型,并闡述了模型的重構(gòu)機(jī)制,組裝機(jī)制和可信機(jī)制,除了應(yīng)用于可重構(gòu)柔性網(wǎng)絡(luò)的節(jié)點(diǎn)中,任何需要軟件自適應(yīng)調(diào)整的場合均可使用本文提出的構(gòu)件模型。
一般說來,軟件構(gòu)件的結(jié)構(gòu)模型決定了構(gòu)件的基本形態(tài),它是軟件方法學(xué)的核心。為建立面向可重構(gòu)環(huán)境的軟件構(gòu)件模型,本節(jié)針對經(jīng)典軟件結(jié)構(gòu)模型存在的“預(yù)定的環(huán)境、緊耦合的結(jié)構(gòu)、集中式的開發(fā)和重編程的應(yīng)變方式”等問題,提出以“松耦合結(jié)構(gòu)、分布式聚合、動(dòng)態(tài)化重構(gòu)、可信化保障”為特征的軟件構(gòu)件模型。其中開放協(xié)同是基礎(chǔ),主要特征是“松耦合結(jié)構(gòu)與分布式聚合”,它將突破傳統(tǒng)封閉可控模型的限制,使得軟件在結(jié)構(gòu)上能夠適應(yīng)可重構(gòu)環(huán)境對各類資源的多模式協(xié)同的要求。外界驅(qū)動(dòng)的特征是“感知環(huán)境變化與動(dòng)態(tài)重構(gòu)”,其中外界環(huán)境變化也包括人為發(fā)布的重構(gòu)指令,在此基礎(chǔ)上,建立開放協(xié)同模型與環(huán)境模型的交互計(jì)算模式,從而形成環(huán)境驅(qū)動(dòng)的動(dòng)態(tài)化重構(gòu)。更進(jìn)一步,可信化保障主要指“數(shù)據(jù)的安全交互”,它是在環(huán)境驅(qū)動(dòng)模型的基礎(chǔ)上引入安全封裝,解決開放環(huán)境下構(gòu)件的可信性問題,最終形成一個(gè)安全可信的軟件模型。
構(gòu)件模型由構(gòu)件和容器組成,構(gòu)件分為構(gòu)件代理和行為構(gòu)件2種類型。容器負(fù)責(zé)外界環(huán)境的感知為構(gòu)件提供運(yùn)行環(huán)境,構(gòu)件代理具有決策功能,構(gòu)件模型中只含有一個(gè)構(gòu)件代理,行為構(gòu)件負(fù)責(zé)實(shí)現(xiàn)具體的功能。宏觀上構(gòu)件模型如圖1所示。構(gòu)件植入到容器后,首先向構(gòu)件代理(CA,component agent)注冊,由CA記錄構(gòu)件的屬性信息并分配構(gòu)件一個(gè)在容器內(nèi)唯一的通信地址。構(gòu)件間的交互是通過 AC(agent client)進(jìn)行的,AC利用容器提供的通信服務(wù)將構(gòu)件的信息在構(gòu)件間按需地進(jìn)行傳遞。
圖1 構(gòu)件模型與外界環(huán)境關(guān)系
為了適應(yīng)可重構(gòu)環(huán)境的環(huán)境多變和重構(gòu)特性,本文提出了構(gòu)件模型中感知、決策和執(zhí)行分離的機(jī)制,如圖2所示。感知功能包括對環(huán)境變化的檢測和接收人為發(fā)出的重構(gòu)指令,與外界環(huán)境交互密切所以交由容器實(shí)現(xiàn),以建立環(huán)境模型和觸發(fā)重構(gòu)決策。本文將環(huán)境的變化抽象為軟件運(yùn)行的上下文變化,上下文是構(gòu)件模型中一個(gè)重要概念,將在后文中詳細(xì)闡述,它為形式化描述環(huán)境變化提供了方法和工具,便于容器感知功能的實(shí)現(xiàn)。容器除了具有感知功能,還負(fù)責(zé)完成構(gòu)件對外信息的交互和對底層資源的調(diào)用,這點(diǎn)與軟件中間件功能類似。
圖2 感知、決策和執(zhí)行分離機(jī)制
決策功能是構(gòu)件模型的中樞部分,是執(zhí)行軟件重構(gòu)過程中決策邏輯的構(gòu)件,因此本文使用一種特殊的構(gòu)件實(shí)現(xiàn)決策功能,稱為構(gòu)件代理(CA)。本身這種實(shí)現(xiàn)方式也是一種功能分離機(jī)制,當(dāng)構(gòu)件模型決策機(jī)制變化時(shí)只需修改其中的構(gòu)件代理,這樣做可以使構(gòu)件模型達(dá)到最大程度的前向兼容效果。構(gòu)件代理的動(dòng)作可以分為修改構(gòu)件功能描述與修改構(gòu)件連接拓?fù)洌呵罢咧笜?gòu)件代理可以對行為構(gòu)件的語義進(jìn)行調(diào)整,具體表現(xiàn)為構(gòu)件屬性描述信息的變化;后者則是指構(gòu)件代理能夠?qū)π袨闃?gòu)件間連接拓?fù)溥M(jìn)行調(diào)整,如增刪、替換構(gòu)件和連接關(guān)系等,具體表現(xiàn)為構(gòu)件代理修改容器所提供的AC服務(wù)。
行為構(gòu)件用來在容器中實(shí)現(xiàn)軟件的功能,大多數(shù)構(gòu)件由第三方開發(fā),需要考慮行為構(gòu)件的安全性和標(biāo)準(zhǔn)化。因此后文重點(diǎn)關(guān)注行為構(gòu)件接口的標(biāo)準(zhǔn)化和可信數(shù)據(jù)傳遞。行為構(gòu)件是可重構(gòu)操作的對象,本文正是通過行為構(gòu)件的增刪與替換實(shí)現(xiàn)軟件整體功能的重構(gòu)。
可重構(gòu)柔性網(wǎng)絡(luò)的特點(diǎn)是按照用戶需求構(gòu)建具有不同業(yè)務(wù)屬性的可重構(gòu)服務(wù)承載網(wǎng),不同的服務(wù)承載網(wǎng)對應(yīng)一系列不同的構(gòu)件。服務(wù)承載網(wǎng)的構(gòu)建和重構(gòu)一方面涉及數(shù)據(jù)平面轉(zhuǎn)發(fā)和交換部件的重構(gòu),另一方面涉及控制平面中軟件構(gòu)件的替換和增刪。重構(gòu)過程中兩者相互配合,數(shù)據(jù)平面提供構(gòu)件模型與外界交互的通道,控制平面借助構(gòu)件模型完成軟件構(gòu)件的部署和替換,啟用適應(yīng)數(shù)據(jù)平面的控制構(gòu)件。網(wǎng)絡(luò)節(jié)點(diǎn)的重構(gòu)過程涉及到節(jié)點(diǎn)內(nèi)的構(gòu)件代理、容器和行為構(gòu)件,還需要節(jié)點(diǎn)外構(gòu)件庫的支持,執(zhí)行過程如圖3所示。服務(wù)承載網(wǎng)重構(gòu)反映的是構(gòu)件模型接收重構(gòu)指令進(jìn)行重構(gòu)操作的過程,除此之外構(gòu)件模型還可根據(jù)感知環(huán)境的變化進(jìn)行構(gòu)件重構(gòu),兩者相比區(qū)別僅在于驅(qū)動(dòng)重構(gòu)的來源不同,本文對前者進(jìn)行詳細(xì)描述,后者不再贅述。
圖3 構(gòu)件模型支持的重構(gòu)機(jī)制
結(jié)合前文的描述,用戶負(fù)責(zé)下發(fā)重構(gòu)方案,重構(gòu)方案中包含了預(yù)先定義便于構(gòu)件代理識(shí)別的重構(gòu)指令。構(gòu)件庫中提前存有第三方遵循構(gòu)件模型標(biāo)準(zhǔn)開發(fā)的構(gòu)件,構(gòu)件代理根據(jù)重構(gòu)指令下載合適的構(gòu)件。
構(gòu)件運(yùn)行時(shí),首先向構(gòu)件代理注冊,構(gòu)件代理為每個(gè)構(gòu)件分配通信地址,并告知當(dāng)前構(gòu)件的通信對象。每個(gè)構(gòu)件將與自己通信的構(gòu)件分為上游構(gòu)件和下游構(gòu)件,接收對方消息時(shí)標(biāo)記對方為上游構(gòu)件,向?qū)Ψ桨l(fā)送消息時(shí)標(biāo)記對方為下游構(gòu)件。分別在各自AC中保持上、下游構(gòu)件通信列表。當(dāng)通信對象發(fā)生變化時(shí)只需更新AC中的通信列表。
當(dāng)需要添加構(gòu)件時(shí),構(gòu)件代理為新構(gòu)件分配地址,同時(shí)廣播新構(gòu)件的地址,各構(gòu)件AC根據(jù)廣播消息更新自己的通信列表;刪除構(gòu)件時(shí),構(gòu)件代理將原有構(gòu)件地址宣布為無效地址,各構(gòu)件AC將自己通信列表中的相同地址標(biāo)記為無效;替換構(gòu)件時(shí),只需將被替換構(gòu)件AC中的信息遷移到新構(gòu)件中。上述重構(gòu)機(jī)制在實(shí)際場景中有多種實(shí)現(xiàn)方式,可根據(jù)編程語言選擇合適通信機(jī)制和編程實(shí)現(xiàn)。
構(gòu)件模型是基于構(gòu)件的軟件開發(fā)方法的核心,它由構(gòu)件語義、構(gòu)件語法和構(gòu)件組裝3部分組成。構(gòu)件語義說明了構(gòu)件到底是什么;構(gòu)件語法規(guī)定了構(gòu)件是如何被定義、構(gòu)造和表示的;構(gòu)件組裝則說明構(gòu)件是如何被靜態(tài)和動(dòng)態(tài)組裝的。
上下文是環(huán)境某一個(gè)維度(如可用內(nèi)存、溫度、位置等),其定義可以來源于相應(yīng)的上下文本體,上下文的值代表了環(huán)境在該維度的狀態(tài),上下文事件代表的則是該維度狀態(tài)的變化。在上述定義的基礎(chǔ)上,可以區(qū)分構(gòu)件的上下文端口和服務(wù)接口;前者可以定義上下文事件,用來更新容器內(nèi)部的環(huán)境模型等;后者則是一般意義上包括方法、屬性等的接口。
定義1 上下文E可定義為三元組 < name, t p ye,value>,其中,name是上下文的名稱,type是上下文的類型,上下文E在任一確定的時(shí)刻均有一個(gè)類型為type的值value。
定義 2 容器 C可以定義為三元組 , ,In Out<service>,其中,In表示容器用來接收構(gòu)件消息的端口集合,端口的類型決定了容器中可以植入構(gòu)件的類型,Out表示容器輸出消息的端口集合,service表示容器可以提供的服務(wù)類型的集合,一般service都會(huì)與一組In和Out端口綁定。
容器C是構(gòu)件運(yùn)行的環(huán)境,在軟件生存周期內(nèi)屏蔽環(huán)境變化造成的影響,它提供了豐富的供構(gòu)件調(diào)用的服務(wù)接口,完成構(gòu)件間基本的信息交互和對底層資源的調(diào)用,如內(nèi)存分配和時(shí)鐘管理等。容器C定義的端口和服務(wù)是第三方開發(fā)構(gòu)件時(shí)參照的重要標(biāo)準(zhǔn),容器C的實(shí)現(xiàn)方式?jīng)Q定了構(gòu)件植入方式。
構(gòu)件代理是一類特殊構(gòu)件,它不參與軟件功能的處理,是對軟件決策邏輯手段的封裝,執(zhí)行重構(gòu)操作。構(gòu)件代理負(fù)責(zé)接收用戶制訂的重構(gòu)方案,按照預(yù)先約定的語義解析方案,根據(jù)方案進(jìn)行構(gòu)件重構(gòu),可以控制構(gòu)件的加載,激活,配置和卸載。構(gòu)件代理還可根據(jù)環(huán)境變化調(diào)整構(gòu)件之間的連接關(guān)系。
對于行為構(gòu)件引用傳統(tǒng)意義的定義,即具有相對獨(dú)立功能、可以明確辨識(shí)、接口由契約指定、可獨(dú)立部署、和語義有明顯依賴關(guān)系、且多由第三方提供的可組合軟件實(shí)體[25]。它對具體業(yè)務(wù)處理行為進(jìn)行封裝,通過AC對外提供多個(gè)服務(wù)接口,并可以依賴其他接口。
在已有的構(gòu)件模型中,構(gòu)件外部特征的定義方法可以分為兩大類:直接使用具體的編程語言(如Java)或使用專門的構(gòu)件定義語言(如CCM,COM/DCOM)。后者一方面有助于實(shí)現(xiàn)不同語言、不同平臺(tái)間的互操作,更重要的是,它們可以顯式地表示構(gòu)件類型信息,從而有助于對軟件體系結(jié)構(gòu)的后續(xù)修改。因此,本文在TCM中引入了XML語言來定義構(gòu)件。
本文對XML語言進(jìn)行了擴(kuò)展,主要的擴(kuò)展內(nèi)容包括:引入component,id等關(guān)鍵字及相關(guān)語法來定義構(gòu)件;引入event關(guān)鍵字及相關(guān)語法來定義上下文事件;引入 in_port,in_port_num,in_message_type, out_port等關(guān)鍵字來描述接口;引入state關(guān)鍵字來定義構(gòu)件組裝類型等。
通過專門設(shè)計(jì)的編譯器可以將XML構(gòu)件定義映射為Java、C等具體編程語言下的構(gòu)件框架,構(gòu)件開發(fā)者可以填寫構(gòu)件實(shí)現(xiàn)并生成構(gòu)件分組。構(gòu)件模型的接口中包括了普通服務(wù)、事件處理和構(gòu)件映射3 類方法,其中,普通服務(wù)和事件處理由XML定義直接映射生成,構(gòu)件映射方法則需要向構(gòu)件代理注冊構(gòu)件類型、當(dāng)前運(yùn)行狀態(tài)等基本信息,由構(gòu)件代理決定誰來具體完成該請求。TCM構(gòu)件的構(gòu)造方法如圖4所示。
圖4 構(gòu)件構(gòu)造方法
組裝是構(gòu)件模型應(yīng)用的核心,構(gòu)件模型可對行為構(gòu)件按照滿足應(yīng)用需求的方案進(jìn)行組裝來實(shí)現(xiàn)軟件功能。
在構(gòu)件的組裝過程中,涉及到不同構(gòu)件之間的連接拓?fù)洌也煌瑯?gòu)件的連接拓?fù)湟矝Q定了構(gòu)件間信息流的傳輸路徑。根據(jù)信息流在互連構(gòu)件間的流向,從復(fù)雜的構(gòu)件連接方式中提取出順序組裝、聚合組裝和分支組裝3種最基本的構(gòu)件組裝方式,如圖5所示,圖中省略了連接拓?fù)涞膶?shí)現(xiàn)細(xì)節(jié)。任何復(fù)雜的構(gòu)件組裝均以這3種組裝關(guān)系為基礎(chǔ)。從軟件體系結(jié)構(gòu)描述角度出發(fā),可在基本構(gòu)件的形式化描述基礎(chǔ)上,推導(dǎo)出基于以上3種方式組裝的復(fù)合構(gòu)件的形式化描述。若以推導(dǎo)出的復(fù)合構(gòu)件為基礎(chǔ)構(gòu)件,可進(jìn)一步推導(dǎo)出更高層次的復(fù)合構(gòu)件,如此反復(fù),最終可推導(dǎo)出整個(gè)復(fù)雜軟件系統(tǒng)的體系結(jié)構(gòu)描述。TCM模型從軟件體系結(jié)構(gòu)的角度實(shí)施構(gòu)件的組裝,通過AC的連接拓?fù)渥兓瘉韺?shí)現(xiàn)構(gòu)件間的組裝,可以用XML語言描述構(gòu)件間接口關(guān)系的改變來描述構(gòu)件的組裝藍(lán)圖。圖 6展示了使用 XML語言描述簡單的順序組裝和聚合組裝。
圖5 構(gòu)件組裝機(jī)制
圖6 XML語言描述的構(gòu)件組裝
可重構(gòu)柔性網(wǎng)絡(luò)節(jié)點(diǎn)中運(yùn)行著大量第三方構(gòu)件,其中,多個(gè)構(gòu)件在容器中組裝成為更復(fù)雜的軟件構(gòu)件。構(gòu)件模型的可信機(jī)制應(yīng)既要保證單個(gè)構(gòu)件的可信,也要保證組裝后構(gòu)件系統(tǒng)的可信性。
構(gòu)件在構(gòu)件模型中通過AC調(diào)用容器提供的接口進(jìn)行消息通信,在TCM模型中提出了一種構(gòu)件接口數(shù)據(jù)的安全封裝機(jī)制,防止構(gòu)件進(jìn)行違反約束的訪問和操作。容器是將構(gòu)件和底層操作系統(tǒng)隔離的一種構(gòu)件運(yùn)行環(huán)境,操作系統(tǒng)默認(rèn)容器與自己進(jìn)行的操作都是高安全級(jí)別的可信操作,構(gòu)件進(jìn)行的操作都是低安全級(jí)別的操作。低安全級(jí)別的操作可以依賴高安全級(jí)別的操作,若高安全級(jí)別的操作依賴于低安全級(jí)別的操作則認(rèn)為這是不可信的??尚艡C(jī)制中涉及的對象包含CA代表的構(gòu)件代理, C代表的容器,AC代表的構(gòu)件接口。本文在容器中對構(gòu)件的接口數(shù)據(jù)進(jìn)行安全屬性劃分和封裝。
定義 3 安全級(jí)別、安全操作和安全操作集函數(shù)。利用安全級(jí)別對 CA、C、AC進(jìn)行劃分。CA和C之間交互的數(shù)據(jù)屬于高安全級(jí)別,記為 d ataH,AC之間交互的數(shù)據(jù)屬于低安全級(jí)別,記為 d ataL。CA和 C進(jìn)行的操作屬于高安全級(jí)別操作,記為ActH,AC進(jìn)行的操作屬于低安全級(jí)別操作,記為ActL。函數(shù) g et_ Acts( d: d ata) → 2Acts表示由數(shù)據(jù)安全級(jí)別得到執(zhí)行該數(shù)據(jù)安全操作的集合。
定義 4 安全屬性和安全屬性映射函數(shù)。安全屬性記為prop,安全映射函數(shù)記為 fp rop( p: p rop)→data。
在容器C中,將存儲(chǔ)空間劃分為相互隔離的區(qū)域使用安全屬性標(biāo)記,為了保證構(gòu)件傳遞數(shù)據(jù)的安全,使用安全映射函數(shù)將構(gòu)件的數(shù)據(jù)保存在不同的存儲(chǔ)空間。當(dāng)發(fā)生構(gòu)件組裝后,將組裝在一起的構(gòu)件數(shù)據(jù)映射到安全屬性相同的存儲(chǔ)空間,如圖7所示。
構(gòu)件代理為相互通信的構(gòu)件分配相同 security property值,AC將構(gòu)件的數(shù)據(jù)與此security property值綁定。容器根據(jù)構(gòu)件數(shù)據(jù)的security property值將數(shù)據(jù)存儲(chǔ)在特定的安全存儲(chǔ)空間。當(dāng)其他構(gòu)件讀取此數(shù)據(jù)時(shí),只有security property值一致時(shí)才能獲取數(shù)據(jù)。構(gòu)件組裝后,構(gòu)件代理為被組裝的構(gòu)件分配同一個(gè)security property值,構(gòu)件只能使用此security property與參與組裝的構(gòu)件通信。這種機(jī)制可以保證構(gòu)件代理對構(gòu)件間通信的管理,避免惡意構(gòu)件自主通信。security property值由構(gòu)件代理分配,取值來自Hdata和Ldata構(gòu)件無權(quán)修改,AC負(fù)責(zé)綁定security property值和數(shù)據(jù),惡意構(gòu)件無法偽造security property值欺騙AC。另外還可以使用加密算法保證security property值不被惡意構(gòu)件獲取。
本節(jié)描述在可重構(gòu)路由器中實(shí)現(xiàn)的TCM容器原型,并基于容器開發(fā)的構(gòu)件實(shí)例來驗(yàn)證TCM模型的有效性。
容器除了提供構(gòu)件運(yùn)行的環(huán)境外,也是實(shí)現(xiàn)重構(gòu)的場所和提供可信機(jī)制的基礎(chǔ)設(shè)施?;赒uagga路由軟件的Zebra平臺(tái)[26]實(shí)現(xiàn)了一個(gè)TCM的容器原型,其主要部件如圖8所示。構(gòu)件管理引擎負(fù)載構(gòu)件的加載、激活和卸載等操作。通信引擎負(fù)責(zé)支持構(gòu)件的數(shù)據(jù)通信和轉(zhuǎn)發(fā)構(gòu)件的服務(wù)接口的訪問請求,提供數(shù)據(jù)報(bào)文的傳遞。可信存儲(chǔ)提供數(shù)據(jù)安全存儲(chǔ)機(jī)制,隔離構(gòu)件低安全級(jí)別的操作。構(gòu)件組裝引擎負(fù)責(zé)執(zhí)行和維護(hù)構(gòu)件的組裝,并將組裝結(jié)果反饋給可信存儲(chǔ)。環(huán)境模型提供外界環(huán)境變化的表征,保存當(dāng)前影響構(gòu)件的環(huán)境維度的屬性值,構(gòu)件屬性描述信息等。日志記錄負(fù)責(zé)保存重構(gòu)操作記錄,容器架構(gòu)信息等。系統(tǒng)接口與操作系統(tǒng)交互,為容器提供操作系統(tǒng)的支撐服務(wù)。
圖7 容器C安全存儲(chǔ)資源分布
Zebra容器運(yùn)行時(shí)需要維護(hù)系統(tǒng)內(nèi)部狀態(tài)的一致性,如構(gòu)件重構(gòu)時(shí)的狀態(tài)遷移等。當(dāng)構(gòu)件模型發(fā)生變化時(shí),構(gòu)件管理引擎負(fù)責(zé)映射構(gòu)件相關(guān)的變化,環(huán)境模型負(fù)責(zé)映射容器體系結(jié)構(gòu)的變化。當(dāng)發(fā)生如構(gòu)件意外失效的特殊情況時(shí),構(gòu)件管理引擎通過輪詢構(gòu)件AC反射接口獲知情況變化,相應(yīng)的狀態(tài)會(huì)被反饋到環(huán)境模型中。Zebra容器目前可以運(yùn)行在Linux和其他Unix變體系統(tǒng)上,符合GNU的GPL標(biāo)準(zhǔn)并提供了支持C語言編譯器等開發(fā)工具。
除了上述構(gòu)件重構(gòu)和管理部分的功能外,Zebra容器本身對路由軟件提供了非常豐富的操作支持。它支持 BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2和RIPng等協(xié)議的標(biāo)準(zhǔn)接口和數(shù)據(jù)操作,對外提供類似Cisco IOS管理操作接口。第三方開發(fā)者可以按照構(gòu)件AC和容器接口規(guī)范開發(fā)路由協(xié)議構(gòu)件,在6.2節(jié)將介紹構(gòu)件AC接口的使用。
圖8 ATCM容器原型
圖9 路由協(xié)議構(gòu)件運(yùn)行示意
以O(shè)SPFv2協(xié)議構(gòu)件和路由管理構(gòu)件為例介紹構(gòu)件的重構(gòu)過程,圖9中是OSPFv2協(xié)議的一種實(shí)現(xiàn)實(shí)例。第三方開發(fā)OSPFv2構(gòu)件時(shí)首先滿足協(xié)議處理功能需求,其次根據(jù)構(gòu)件模型規(guī)范,開發(fā)與構(gòu)件模型需要交互的接口,開發(fā)時(shí)使用3類AC,AC1負(fù)責(zé)為網(wǎng)絡(luò)管理員提供一個(gè)通過指令配置、干預(yù)、查看OSPFv2運(yùn)轉(zhuǎn)狀況的通道;AC2提供函數(shù)可獲取底層接口信息和重分配路由信息,同時(shí)將 OSPF路由信息交給路由管理構(gòu)件;AC3主要實(shí)現(xiàn)OSPFv2協(xié)議構(gòu)件與操作系統(tǒng)的TCP/IP協(xié)議棧的連接,以接收和發(fā)送數(shù)據(jù)分組,并提供對協(xié)議模塊運(yùn)行過程中的內(nèi)存和定時(shí)器管理。
通過如下場景驗(yàn)證構(gòu)件模型對構(gòu)件重構(gòu)的支持。
1) 構(gòu)件的加載。初始情況下路由設(shè)備中只啟動(dòng)Zebra容器。構(gòu)件代理發(fā)布命令下載和啟動(dòng)OSPFv2構(gòu)件(component 1),OSPFv2構(gòu)件可以進(jìn)行正常的協(xié)議報(bào)文收發(fā),并且將協(xié)議處理的路由信息下發(fā)給底層路由查表模塊。如圖9路徑A所示。圖10顯示了構(gòu)件的端口信息和構(gòu)件代理打印的構(gòu)件拓?fù)溥B接信息。其中,路由查表構(gòu)件(component 3)屬于硬件構(gòu)件,雖然不在Zebra容器中運(yùn)行但可以接收構(gòu)件代理的消息。
2) 構(gòu)件間連接關(guān)系的重構(gòu)。隨著路由設(shè)備的運(yùn)行,陸續(xù)加載RIP,BGP等構(gòu)件,此時(shí)需要路由管理構(gòu)件來統(tǒng)一管理各個(gè)路由協(xié)議的路由信息,此時(shí)需要改變OSPFv2構(gòu)件路由信息的傳輸路徑,如圖9路徑B所示。構(gòu)件代理下發(fā)重構(gòu)命令,修改構(gòu)件的通信關(guān)系同時(shí)更改構(gòu)件的security property值。圖11顯示了構(gòu)件代理打印的構(gòu)件注冊信息和構(gòu)件拓?fù)溥B接信息,以及各個(gè)構(gòu)件間的消息傳遞。此時(shí)構(gòu)件都被設(shè)置使用端口1傳遞消息。
3) 構(gòu)件的卸載。構(gòu)件運(yùn)行中如果需要對構(gòu)件進(jìn)行替換,需要將舊的構(gòu)件卸載,通過構(gòu)件代理發(fā)布命令卸載路由管理構(gòu)件(component2)。構(gòu)件顯示的信息如圖12所示??梢园l(fā)現(xiàn),構(gòu)件代理發(fā)布命令,注銷component 2,同時(shí)將此消息通知component 1和component 3,隨后通知component 1和component 3改變通信對象,從而實(shí)現(xiàn)了構(gòu)件連接拓?fù)潢P(guān)系的改變。
圖10 構(gòu)件間拓?fù)溥B接
圖11 重構(gòu)構(gòu)件時(shí)消息傳遞顯示
圖12 卸載構(gòu)件過程中的信息顯示
構(gòu)件模型在Zebra容器中內(nèi)嵌安全存儲(chǔ)機(jī)制來實(shí)現(xiàn)構(gòu)件交互數(shù)據(jù)的安全可信。設(shè)計(jì)2個(gè)場景評(píng)估可信機(jī)制的效果,一個(gè)是安全存儲(chǔ)對可重構(gòu)路由器的構(gòu)件性能的影響,即對單位時(shí)間內(nèi)報(bào)文交互時(shí)延的影響。另一個(gè)場景是測試可信機(jī)制對惡意行為檢測效果。
場景1 使用路由器R1將真實(shí)路由分別廣播給啟用安全存儲(chǔ)的可重構(gòu)路由器R2和不啟用安全存儲(chǔ)的可重構(gòu)路由器R3,待R2和R3學(xué)得路由后再分別廣播給路由器R4。在R1和R4的鏈路中抓取路由廣播分組,抓取分組軟件使用Etheral 0.10.14,計(jì)算分組時(shí)延并進(jìn)行比較,觀察可信存儲(chǔ)機(jī)制造成的時(shí)延。普通路由器 R1和 R4使用的是中興ZXR10,路由表數(shù)據(jù)來自 routing information service(RIS)[27]。測試網(wǎng)絡(luò)拓?fù)淙鐖D13所示。
路由器處理每條路由的時(shí)間較短,選擇真實(shí)路由表中前綴為25的路由信息10 000條,每100條統(tǒng)計(jì)一次均值,并且設(shè)置OSPFv2構(gòu)件每5s廣播一次路由信息,分別用c、a點(diǎn)的時(shí)間戳差值和d、b點(diǎn)的時(shí)間戳差值比較。
可重構(gòu)路由器中使用最多的是路由協(xié)議構(gòu)件,OSPFv2構(gòu)件可以設(shè)置廣播路由消息的時(shí)間間隔,固定的時(shí)間間隔削弱了路由信息的實(shí)時(shí)處理性,為消息的安全封裝和讀寫提供了時(shí)間保證。從圖 14中可以發(fā)現(xiàn)雖然路由信息的處理時(shí)延存在抖動(dòng)但是控制在1s之內(nèi),2個(gè)路由器的處理時(shí)延平均值相差不到0.4s,這個(gè)時(shí)間差主要產(chǎn)生于從安全數(shù)據(jù)存儲(chǔ)區(qū)域取出數(shù)據(jù)廣播路由信息這個(gè)過程。構(gòu)件模型的數(shù)據(jù)安全存儲(chǔ)機(jī)制對路由信息報(bào)文交互的處理時(shí)延影響較小,不會(huì)影響路由協(xié)議的性能。
圖14 R2和R3路由信息處理時(shí)延比較
場景2 構(gòu)件惡意行為檢測。
使用rip構(gòu)件充當(dāng)惡意構(gòu)件,修改rip構(gòu)件的協(xié)議報(bào)文發(fā)送函數(shù),使它冒充OSPFv2構(gòu)件調(diào)用AC提供的接口函數(shù)進(jìn)行報(bào)文收發(fā)。下面的這些回調(diào)函數(shù)的賦值用來完成構(gòu)件代理對 OSPFv2構(gòu)件的控制,原來包含在OSPFv2構(gòu)件中。OSPF協(xié)議中使用的是raw socket,所以修改時(shí)重點(diǎn)替換的是socket創(chuàng)建和setsockopt函數(shù)(如圖15所示)。篇幅所限不在此一一列舉。
Zebra容器運(yùn)行過程中,原本發(fā)送給 OSPFv2構(gòu)件的數(shù)據(jù)被惡意的rip構(gòu)件調(diào)用AC接口函數(shù)進(jìn)行讀寫,雖然此時(shí)AC接口函數(shù)可以被調(diào)用,但是當(dāng)惡意構(gòu)件在安全存儲(chǔ)區(qū)讀取數(shù)據(jù)時(shí),無法獲得正確的security property值,讀取操作被拒絕,并在反饋給構(gòu)件代理警告信息,運(yùn)行結(jié)果如圖16所示。
圖15 構(gòu)件代碼修改示例
圖16 構(gòu)件惡意行為檢測
從結(jié)果中可以發(fā)現(xiàn),構(gòu)件注冊時(shí)構(gòu)件代理把惡意rip構(gòu)件認(rèn)為是OSPFv2構(gòu)件,所以惡意構(gòu)件注冊成功并運(yùn)行,但是當(dāng)構(gòu)件開始讀取數(shù)據(jù)時(shí)被發(fā)現(xiàn)為惡意構(gòu)件,結(jié)果被存入日志并且上報(bào)構(gòu)件代理,構(gòu)件代理將其打印顯示,同時(shí)暫停惡意構(gòu)件的運(yùn)行待管理人員進(jìn)行處理。其他構(gòu)件不受此影響正常運(yùn)行。
構(gòu)件化的路由設(shè)備是可重構(gòu)柔性網(wǎng)絡(luò)的重要節(jié)點(diǎn)支撐設(shè)備。本文以路由設(shè)備控制平面支持可重構(gòu)為背景,兼顧軟件系統(tǒng)對環(huán)境變化的適應(yīng)。基于構(gòu)件間連接關(guān)系的調(diào)整和構(gòu)件數(shù)據(jù)的安全存儲(chǔ)提出了一種可信構(gòu)件模型 TCM。構(gòu)件模型從環(huán)境感知、決策、執(zhí)行三者相分離的思想出發(fā),使用構(gòu)件代理完成決策功能,使用容器感知環(huán)境和隔離底層操作系統(tǒng)影響,使用行為構(gòu)件實(shí)現(xiàn)軟件系統(tǒng)功能,通過在容器中內(nèi)嵌安全存儲(chǔ)機(jī)制提高構(gòu)件的可信性。根據(jù)本文構(gòu)件模型開發(fā)的Zebra容器和在其中實(shí)現(xiàn)的構(gòu)件實(shí)例已經(jīng)應(yīng)用到了可重構(gòu)路由器的開發(fā)中。后續(xù)工作將對深層次的構(gòu)件重構(gòu)機(jī)制和構(gòu)件的可信評(píng)估展開研究。
[1] 汪斌強(qiáng), 鄔江興. 下一代互聯(lián)網(wǎng)的發(fā)展趨勢及相應(yīng)對策分析[J].信息工程大學(xué)學(xué)報(bào), 2009, 10(3):1-6.WANG B Q, WU J X. Development trends and associated countermeasures analysis for NGN[J]. Journal of Information Engineering University, 2009, 10(3):1-6.
[2] 袁博, 汪斌強(qiáng), 張博. 綠色網(wǎng)絡(luò)的實(shí)例——可重構(gòu)柔性網(wǎng)絡(luò)[J]. 電信科學(xué), 2011, 27(10A):200-207.YUAN B, WANG B Q, ZHANG B, A case study of green network——reconfigurable flexible network[J]. Telecommunications Science,2011, 27(10A):200-207.
[3] MEI H, SHEN J R. Progress of research on software architecture[J].Journal of Software, 2006, 17(6):1257-1275.
[4] VALLECILLO A, HERNANDEZ J, TROYA J M. Component Interoperability[R]. ITI200037, Universidad de Málaga, 2000.
[5] YANG F Q. Thinking on the development of software engineering technology[J]. Journal of Software, 2005,16(1):1-7.
[6] SALEHIE M, TAHVILDARI L. Self-Adaptive software: landscape and research challenges[J]. ACM Trans on Autonomous and Adaptive Systems, 2009,4(2):1-42.
[7] WANG Q X. Towards a rule model for self-adaptive software[J].Sigsoft Software Engineering Notes, 2005, 30(1):1-5.
[8] KEENEY J. Completely Unanticipated Dynamic Adaptation of Software[D]. Dublin: Trinity College, University of Dublin, 2004.
[9] DOWLING J, CAHILL V. The K-component architecture meta-model for self-adaptive software[A]. Proc of the Int’l Conf on Meta level Architectures and Separation of Crosscutting Concerns[C]. Kyoto, Japan,2001. 81-88.
[10] PASPALLIS N, PAPADOPOULOS G A. An approach for developing adaptive, mobile applications with separation of concerns[A]. Proc of the 30th Annual Int’l Computer Software and Applications Conf(COMPSAC)[C]. Chicago, USA, 2006. 299-306.
[11] OREIZY P, GORLICK M M, TAYLOR R N, et al. An architecture-based approach to self-adaptive software[J]. IEEE Intelligent Systems, 1999, 14(3):54-62.
[12] GARLAN D, CHENG S W, HUANG A C, et al. Rainbow: architecture-based self-adaptation with reusable infrastructure[J]. IEEE Computer, 2004, 37(10):46-54.
[13] MOREIRA R, BLAIR G, CARRAPATOSO E. FORMAware: framework of reflective components for managing architecture adaptation[A]. Proc of the 3rd Int’l Workshop on Software Engineering and Middleware[C]. Orlando, USA, 2002.
[14] BRUNETON E, COUPAYE T, STEFANI J B. Recursive and dynamic software composition with sharing[A]. Proc of the 7th Int’l Workshop on Component-Oriented Programming (WCOP)[C]. Malaga, Spain, 2002.
[15] YANG F Q, LV J, MEI H. Technical framework for Internetware: an architecture centric approach[J]. Science in China (Series E), 2008,38(6):818-828.
[16] MEI H, HUANG G, ZHAO H Y, et al. A software architecture centric engineering approach for Internetware[J]. Science in China (Series E),2006, 36(10):1100-1126.
[17] LU J, MA X X, TAO X P, et al. On environment-driven software model for internetware[J]. Science in China (Series E), 2008, 38(6):864-900.
[18] VMware, Inc VMware virtual machine technology[EB/OL]. http://www.vmware.com, 2006.
[19] GARFINKEL T, PFAFF B, CHOW J, et al. Terra: a virtual machine-based platform for trusted computing[A]. Proceedings of the 19th ACM Symposium on Operating Systems Principles (SOSP'03)[C].New York, USA, 2003. 193-206.
[20] KARGER P A. Multi-level security requirements for hypervisors[A].Proceedings of the 21st Annual Computer Security Applications Conference (ACSAC'05)[C]. Tucson, Arizona, USA, 2005. 267-275.
[21] JAEGER T, SAILER R, SREENIVASAN Y. Managing the risk of covert information flows in virtual machine systems[A]. Proceedings of the 12th ACM Symposium on Access Control Models and Technologies (SACMAT'07)[C]. Sophia Antipolis, France, 2007. 81-90.
[22] CABUK S, DALTON C I, RAMASAMY H G, et al. Towards automated provisioning of secure virtualized networks[A]. Proceedings of the 14th ACM Conference on Computer and Communications Security(CCS'07)[C]. Alexandria, VA, USA, 2007. 235-245.
[23] STEFAN B, RAMON C, KENNETH A G, et al. vTPM: virtualizing the trusted platform module[A]. Proceedings of 15th USENIX Security Symposium[C]. Vancouver, Canada, 2006. 305-320.
[24] MELVIN J A, MICHA M, CHRIS I D. Towards trustworthy virtualization environments: Xen library OS security service infrastructure[EB/OL]. http://www .hpl.hp.com/techreports/2007/HPL- 2007-69.html, 2007.
[25] 楊芙清,梅宏,李克勤. 軟件復(fù)用與軟件構(gòu)件技術(shù)[J]. 電子學(xué)報(bào),1999, 27(2):68-75.YANG F Q, MEI H, LI K Q. Software reuse and software component technology[J]. Acta Electronica Sinica, 1999, 27(2):68-75.
[26] QUAGGA guide[DB/OL]. http://quagga.net.
[27] RIS raw data[DB/OL]. http://data.ris.ripe.net.