可容忍代碼錯誤的專用計算機系統(tǒng)模型_第1頁
可容忍代碼錯誤的專用計算機系統(tǒng)模型_第2頁
可容忍代碼錯誤的專用計算機系統(tǒng)模型_第3頁
可容忍代碼錯誤的專用計算機系統(tǒng)模型_第4頁
可容忍代碼錯誤的專用計算機系統(tǒng)模型_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、可容忍代碼錯誤的專用計算機系統(tǒng)模型    論文摘要:提出一種新的計算機體系結(jié)構(gòu)模型超內(nèi)核系統(tǒng)模型,使專用系統(tǒng)可以容忍代碼錯誤,提高可生存性。并且實現(xiàn)了一個超內(nèi)核系統(tǒng)開發(fā)平臺,完成了網(wǎng)絡(luò)防火墻原型系統(tǒng)。該網(wǎng)絡(luò)防火墻原型系統(tǒng)在同樣的硬件平臺上比優(yōu)化的Linux防火墻包轉(zhuǎn)發(fā)延時少大約20。論文關(guān)鍵詞:計算機系統(tǒng)模型,容錯機制,超內(nèi)核1.概述專用計算機系統(tǒng)是指針對具體應(yīng)用開發(fā)的、完成某一專門任務(wù)的計算機系統(tǒng),其運行的程序是固定的,通常也不需要在運行中增加新的程序。在很多領(lǐng)域都需要使用專用計算機系統(tǒng),比如網(wǎng)絡(luò)安全設(shè)備、工業(yè)自動化領(lǐng)域監(jiān)測、控制用計算機系統(tǒng)等。專用計

2、算機系統(tǒng)雖然對通用性和靈活性要求低于通用計算機系統(tǒng),但是對于可生存性和安全性的要求比較高。這是因為,首先專用計算機系統(tǒng)經(jīng)常處于無人看守的狀態(tài),比如工業(yè)自動化領(lǐng)域中的自動監(jiān)控系統(tǒng),這就要求它有一定的錯誤容忍能力,在某些程序或者某個硬件出現(xiàn)問題的情況下,要能夠保證整個系統(tǒng)還可以運轉(zhuǎn),不會徹底無法工作而造成監(jiān)控完全失效;其次,專用計算機系統(tǒng)通常在整個應(yīng)用環(huán)境中起到至關(guān)重要的作用,例如網(wǎng)絡(luò)安全設(shè)備用于維護(hù)和保證網(wǎng)絡(luò)系統(tǒng)安全,通常處在整個計算機和網(wǎng)絡(luò)系統(tǒng)中特殊位置,各種各樣的網(wǎng)絡(luò)數(shù)據(jù)都會首先到達(dá)網(wǎng)絡(luò)安全設(shè)備,它本身可能是受攻擊最多的地方。設(shè)備本身的抗攻擊能力是網(wǎng)絡(luò)安全設(shè)備的一項重要性能。如果自身安全性得

3、不到保證,網(wǎng)絡(luò)安全系統(tǒng)設(shè)備就無法保證被保護(hù)的網(wǎng)絡(luò)和系統(tǒng)的安全。目前,專用計算機系統(tǒng)通常采用微內(nèi)核結(jié)構(gòu)的通用嵌入式操作系統(tǒng)。現(xiàn)有的各種嵌入式操作系統(tǒng)并不是專門為專用系統(tǒng)設(shè)計的,其安全機制和對錯誤的容忍性不能很好地滿足專用系統(tǒng)的需要。通用的嵌入式操作系統(tǒng)為分層的體系結(jié)構(gòu),下層為上層提供服務(wù),上層通過接口對下層進(jìn)行功能調(diào)用。比如,許多采用Linux的防火墻都具有“硬件資源一內(nèi)核一操作系統(tǒng)一安全應(yīng)用”的4層結(jié)構(gòu)。由于層與層之間有依賴關(guān)系,層與層之間的安全性能就會互相影響,應(yīng)用之間也難以實現(xiàn)徹底隔離。只有對系統(tǒng)進(jìn)行錯誤容忍的設(shè)計,為系統(tǒng)提供內(nèi)置的保護(hù),才能使系統(tǒng)具有較強的可生存能力,提供持續(xù)服務(wù)。本文針

4、對現(xiàn)有操作系統(tǒng)在實現(xiàn)專用系統(tǒng)安全功能和維護(hù)自身安全上存在的問題,提出了一種新的面向?qū)S孟到y(tǒng)的體系結(jié)構(gòu)模型:超內(nèi)核系統(tǒng)模型。超內(nèi)核系統(tǒng)模型針對專用系統(tǒng)功能單一,固定,對可生存性和安全性要求比較高的特點,實現(xiàn)了面向數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)和運行代碼錯誤容忍機制,通過對應(yīng)用子系統(tǒng)進(jìn)行監(jiān)控以及對應(yīng)用子系統(tǒng)之間進(jìn)行隔離和通信控制,避免系統(tǒng)因為某個應(yīng)用程序的錯誤就引起崩潰,防止系統(tǒng)長時間處于拒絕服務(wù)狀態(tài),尤其適合應(yīng)用在對安全性要求高的專用系統(tǒng),比如網(wǎng)絡(luò)防火墻、路由器等。同時,通過實驗證明,在同一個硬件平臺上,基于超內(nèi)核的網(wǎng)絡(luò)防火墻性能要優(yōu)于linux2.4內(nèi)核自帶iptables防火墻。第2節(jié)介紹現(xiàn)有通用操作系統(tǒng)的

5、結(jié)構(gòu)和現(xiàn)有系統(tǒng)的錯誤容忍機制;第3節(jié)描述超內(nèi)核模型;第4節(jié)介紹基于超內(nèi)核模型實現(xiàn)的網(wǎng)絡(luò)防火墻原型系統(tǒng)以及性能測試;最后總結(jié)全文。2.相關(guān)工作情況2.1微內(nèi)核結(jié)構(gòu)的專用系統(tǒng)模型目前,專用計算機系統(tǒng)一般采用通用的嵌入式操作系統(tǒng)。比較經(jīng)常使用在專用系統(tǒng)中的嵌入式操作系統(tǒng)有WindowsCE、VxWorks、QNX¨1、pSOS怛1、LynxOS¨等,這些操作系統(tǒng)的內(nèi)核模型都是微內(nèi)核結(jié)構(gòu)。微內(nèi)核H1是20世紀(jì)80年代產(chǎn)生的,由Richard Rashid在卡內(nèi)基梅隆大學(xué)開發(fā)Mach操作系統(tǒng)時提出的。微內(nèi)核結(jié)構(gòu)由一個非常簡單的硬件抽象層和一組比較關(guān)鍵的原語或系統(tǒng)調(diào)用組成,這些原語僅僅

6、包括了建立一個系統(tǒng)必需的幾個部分,如線程管理,地址空間和進(jìn)程間通信等,把其他功能(如:文件管理等)移出內(nèi)核,在用戶空間控制和管理。然而,基于微內(nèi)核的專用系統(tǒng)的體系結(jié)構(gòu)同普通的計算機設(shè)備的設(shè)計一致,采用的是“硬件資源一操作系統(tǒng)一應(yīng)用”的層次結(jié)構(gòu)。通用操作系統(tǒng)的體系結(jié)構(gòu)及其安全機制適用于很多應(yīng)用,但是,它們并不是專門為專用系統(tǒng)設(shè)計和建立的,針對專用系統(tǒng)的要求還存在以下幾個方面的問題。(1)現(xiàn)有系統(tǒng)架構(gòu)帶來的安全問題使用通用操作系統(tǒng)的專用系統(tǒng)都必須接受現(xiàn)有的操作系統(tǒng)的體系結(jié)構(gòu)。比如,許多采用Linux的防火墻都具有“硬件資源一內(nèi)核一操作系統(tǒng)一安全應(yīng)用”的4層結(jié)構(gòu)。由于層與層之問有依賴關(guān)系,層與層之間

7、的安全性能就會互相影響。比如,不安全的內(nèi)核可能會導(dǎo)致操作系統(tǒng)的不安全。在這種結(jié)構(gòu)中,只要任何一個層面出現(xiàn)安全問題,整個安全系統(tǒng)就可能會崩潰。由于硬件、內(nèi)核、操作系統(tǒng)和安全應(yīng)用各層是由不同的廠家開發(fā)研制的,安全的不一致性非常明顯。比如,上層應(yīng)用很安全,但操作系統(tǒng)卻漏洞百出?,F(xiàn)有的分層結(jié)構(gòu)使得應(yīng)用之間的隔離不徹底。這種不徹底也會導(dǎo)致安全問題。網(wǎng)絡(luò)安全設(shè)備可能會針對不同的網(wǎng)絡(luò)或協(xié)議運行多個不同的安全應(yīng)用。當(dāng)多個應(yīng)用共同運行在操作系統(tǒng)之上時,某一應(yīng)用的漏洞會導(dǎo)致攻擊者獲得操作系統(tǒng)權(quán)限或者影響操作系統(tǒng)功能,進(jìn)而影響到其他的所有應(yīng)用,這種攻擊就會很快擴散至整個系統(tǒng)。例如Apache的漏洞導(dǎo)致攻擊者可以獲得

8、操作系統(tǒng)權(quán)限,輕易地影響到系統(tǒng)中其他應(yīng)用.基于微內(nèi)核的設(shè)計在一定程度上解決了這一問題。微內(nèi)核將操作系統(tǒng)分為多個相對獨立的部分,相互之間進(jìn)行一定的隔離,在一定程度上可以減少攻擊影響的擴散。但系統(tǒng)中由服務(wù)到應(yīng)用,由應(yīng)用到設(shè)備,由服務(wù)到設(shè)備等之間有大量的消息需要通過內(nèi)核傳送,內(nèi)核很難對這樣大量的消息進(jìn)行監(jiān)控,也就沒有能力保證應(yīng)用之間的相互影響了。(2)通用操作系統(tǒng)導(dǎo)致安全問題由于通用操作系統(tǒng)的功能比較全面,代碼量較大,從工程上無法保證其中沒有安全漏洞。Kaspersky實驗室的專家在一篇報告陸1中提到,經(jīng)常用于嵌入式系統(tǒng)的Windows CE的安全漏洞能夠被應(yīng)用程序利用來獲取操作系統(tǒng)函數(shù)的訪問權(quán)限,

9、從而攻擊者可以進(jìn)行接收和發(fā)送文件等操作;另外,根據(jù)Coverity的檢查,Linux 2.6.9內(nèi)核代碼也存在多個Bug?,F(xiàn)有系統(tǒng)安全模型建立在可信計算基(TCB)的理念上,認(rèn)為只有軟件如特權(quán)管理服務(wù)和內(nèi)核才能提供安全的服務(wù)。事實上,操作系統(tǒng)和支撐系統(tǒng)的軟件難以為應(yīng)用軟件提供安全保障機制,它們本身就存在安全漏洞和設(shè)計隱患。有的黑客的攻擊就是面對設(shè)備本身的,比如網(wǎng)絡(luò)安全設(shè)備。他們利用安全設(shè)備本身的脆弱性,安全設(shè)備所使用的操作系統(tǒng)的安全漏洞以及安全機制的缺陷,繞過了現(xiàn)有的防護(hù)機制。2.2外內(nèi)核結(jié)構(gòu)由于傳統(tǒng)內(nèi)核實現(xiàn)的功能比較復(fù)雜。不可避免的漏洞為系統(tǒng)帶來很多安全隱患,于是外內(nèi)核被開發(fā)出來。外內(nèi)核的目

10、標(biāo)是允許應(yīng)用層做所有的決定,并且讓應(yīng)用程序靈活地訪問硬件。19941995年外內(nèi)核由MIT開發(fā)出來,它不為應(yīng)用程序提供抽象。外內(nèi)核的目標(biāo)是直接導(dǎo)出硬件資源,它唯一的任務(wù)是保證資源被安全地復(fù)用。然而。外內(nèi)核并非可以如其所愿的那樣安全、高效地導(dǎo)出硬件資源。外內(nèi)核把導(dǎo)出的硬件資源和相應(yīng)的應(yīng)用程序進(jìn)行安全綁定,安全綁定的硬件機制需要適當(dāng)硬件的支持,所以實現(xiàn)起來有很大的局限性。安全綁定也可以通過軟件實現(xiàn),一些應(yīng)用層代碼能夠被下載到內(nèi)核中歸J.然而,這會導(dǎo)致錯誤不能隔離的問題。另外,為了提高靈活性,外內(nèi)核把硬件資源劃分為很多部分,這就使得綁定、回收和放棄資源的管理很復(fù)雜,外內(nèi)核中需要設(shè)定大量的機制來判斷每

11、部分資源該如何分配、如何回收等等,還要通過判斷不同應(yīng)用的重要性來幫助決定資源如何分配。2.3錯誤容忍機制針對系統(tǒng)的錯誤容忍問題,國內(nèi)外已經(jīng)有一些相關(guān)研究。Michael M.等提出的Nooks方案¨刨是一種不改變系統(tǒng)結(jié)構(gòu)情況下的增強措施,它在已有的操作系統(tǒng)中安裝一個子系統(tǒng)用于隔離驅(qū)動程序和內(nèi)核,Nooks把每個驅(qū)動程序構(gòu)建為一個保護(hù)域(protection domain),并且監(jiān)控每個保護(hù)域和內(nèi)核之間的交互。對于異常的驅(qū)動,Nooks對其進(jìn)行自動恢復(fù)。QNX software的Paul N.等人提出進(jìn)程組劃分的方法¨¨,進(jìn)程被劃分人不同組,CPU時間片按照比例分給

12、不同的組,某個組內(nèi)的進(jìn)程只能在給定的時間片內(nèi)運行,這樣使得一個組中的進(jìn)程遭受DOS攻擊時,不至于耗盡整個系統(tǒng)資源。微軟2005年底發(fā)布的Singularity嵌入式操作系統(tǒng)¨定義了“獨立軟件進(jìn)程(SIPs)”的概念,它有一個前提iSingularity的核心代碼全部是安全代碼,并且其他部分代碼也都是可驗證的。各部分代碼(設(shè)備驅(qū)動、系統(tǒng)進(jìn)程或應(yīng)用程序)被邏輯隔離在不同的SIPs中執(zhí)行,SIP之間的邊界通過對代碼進(jìn)行語言安全檢查和強制靜態(tài)檢查來建立。如果對某個SIP中的代碼驗證失敗,則內(nèi)核會終止這個SIP并回收資源。上述這些改進(jìn)措施本質(zhì)上仍然是邏輯隔離。Nooks能夠在一個驅(qū)動失效的情況

13、下對它復(fù)位,但這不能阻止此驅(qū)動的錯誤影響到系統(tǒng)其他部分,所以仍未明顯改善可生存性問題;QNX方案對于防范DOS攻擊有顯著效果,但同樣不能阻止一個應(yīng)用的錯誤導(dǎo)致全盤失效,因為系統(tǒng)中的資源和設(shè)備仍對所有應(yīng)用可見;Singularity操作系統(tǒng)則對代碼提出了很高的要求,例如內(nèi)核代碼絕對安全、其他代碼可驗證等,這在相當(dāng)程度上依賴于代碼的質(zhì)量,而非系統(tǒng)提供的隔離措施。綜上所述,現(xiàn)有的通用計算機體系結(jié)構(gòu)和容錯機制,不適用于專用計算機系統(tǒng)安全性和可生存性的要求。通用的計算機系統(tǒng)結(jié)構(gòu)由內(nèi)核管理和調(diào)配硬件資源,為上層應(yīng)用提供統(tǒng)一接121,這有利于多個應(yīng)用程序方便和靈活地操作硬件,但是內(nèi)核的漏洞有可能被惡意的程序

14、利用造成整個系統(tǒng)的崩潰。3.容忍代碼錯誤的計算機系統(tǒng)模型針對現(xiàn)有計算機系統(tǒng)中存在的問題,一種方法是頻繁地為已知漏洞打補丁;另一種是根據(jù)安全需求重新設(shè)計系統(tǒng)。前一種方法需要在攻擊成功,漏洞被成功檢測到后才能進(jìn)行修補,并且不能解決體系結(jié)構(gòu)的缺陷帶來的問題。本文考慮采用后一種方法,即系統(tǒng)整體結(jié)構(gòu)通過重新設(shè)計和構(gòu)建,安全系統(tǒng)平臺和它所需完成的功能結(jié)合成一個整體,為計算機系統(tǒng)提供較為完整的安全性,并提高自身系統(tǒng)的可生存能力。3.1超內(nèi)核系統(tǒng)結(jié)構(gòu)基于超內(nèi)核的計算機系統(tǒng)由可以獨立完成一定功能的應(yīng)用子系統(tǒng)與一個很小的超內(nèi)核構(gòu)成。如圖1所示,應(yīng)用子系統(tǒng)由應(yīng)用程序以及該應(yīng)用程序需要訪問的服務(wù)程序鏈接而成,可以獨立

15、地完成一定功能。比如網(wǎng)絡(luò)防火墻系統(tǒng)中,數(shù)據(jù)包過濾程序和網(wǎng)卡驅(qū)動程序鏈接為數(shù)據(jù)包過濾子系統(tǒng)。另外,根據(jù)功能和需要,應(yīng)用子系統(tǒng)被分配給相應(yīng)的硬件資源,每個子系統(tǒng)可以也只能控制和管理分配給它的硬件資源,并且占據(jù)獨立的內(nèi)存空聞。應(yīng)用子系統(tǒng)本身不對外提供接口,也不調(diào)用其他子系統(tǒng)的函數(shù),如果要與其他子系統(tǒng)進(jìn)行通信,必須通過超內(nèi)核的消息傳遞來實現(xiàn)。因為專用系統(tǒng)和通用計算機系統(tǒng)不同,其功能比較單一和固定。因此,一些應(yīng)用程序只對特定的硬件訪問頻繁,而很少需要訪問其他硬件。所以,在超內(nèi)核系統(tǒng)中,應(yīng)用程序和需要頻繁訪問的硬件綁定在一起,獨立完成一定的功能。當(dāng)一個應(yīng)用子系統(tǒng)需要訪問其他子系統(tǒng)綁定的硬件時,通過消息傳遞

16、與相應(yīng)的子系統(tǒng)進(jìn)行通信。由于應(yīng)用子系統(tǒng)只需要頻繁訪問自己綁定的硬件,各個子系統(tǒng)間只需要較少的通信。比如,網(wǎng)絡(luò)防火墻系統(tǒng)中,進(jìn)行數(shù)據(jù)包過濾的子系統(tǒng)只需要對網(wǎng)卡頻繁地訪問,這樣就可以把過濾子系統(tǒng)和網(wǎng)卡進(jìn)行綁定。子系統(tǒng)間通信次數(shù)減小,也有利于對整個系統(tǒng)進(jìn)行安全監(jiān)控,提高系統(tǒng)的安全性。超內(nèi)核只負(fù)責(zé)處理子系統(tǒng)間基于消息的通信,并且對各個子系統(tǒng)進(jìn)行調(diào)度。雖然在本系統(tǒng)中內(nèi)核依然是整個系統(tǒng)的核心,但是它不管理任何硬件和軟件資源,完成的功能也很簡單,代碼量很小,易于維護(hù)。另外,每個應(yīng)用子系統(tǒng)運行時分別占據(jù)隔離的內(nèi)存資源,當(dāng)一個子系統(tǒng)出錯時,錯誤被限制在子系統(tǒng)內(nèi)部。3.2超內(nèi)核超內(nèi)核是整個系統(tǒng)的核心部分,負(fù)責(zé)處理

17、消息傳遞和各個應(yīng)用子系統(tǒng)的調(diào)度,不對硬件進(jìn)行監(jiān)管和訪問,功能簡單并且代碼量很小,易于維護(hù)。超內(nèi)核的結(jié)構(gòu)如圖2所示。超內(nèi)核主要由以下幾部分構(gòu)成:·消息緩存隊列應(yīng)用子系統(tǒng)之間通過消息傳遞進(jìn)行通信,被發(fā)送的消息首先緩存在超內(nèi)核的這個隊列中,等待過濾檢查。·調(diào)度單元通過一定的調(diào)度機制來決定哪個子系統(tǒng)獲得CPU,進(jìn)行數(shù)據(jù)處理??梢愿鶕?jù)應(yīng)用子系統(tǒng)待處理數(shù)據(jù)的多少來決定哪個子系統(tǒng)獲得CPU,比如待處理消息隊列長的子系統(tǒng)優(yōu)先執(zhí)行;或者當(dāng)一個子系統(tǒng)對一個數(shù)據(jù)處理時間過長時,使其停止處理當(dāng)前數(shù)據(jù)而進(jìn)行下一個數(shù)據(jù)的處理。·消息傳遞單元對應(yīng)用子系統(tǒng)提供SEND MESSAGE和RECEI

18、VE MESSAGE系統(tǒng)調(diào)用,從源子系統(tǒng)接收消息,以及把消息發(fā)送到目的子系統(tǒng)。當(dāng)應(yīng)用子系統(tǒng)需要發(fā)送消息時調(diào)用SEND MESSAGE,消息從應(yīng)用子系統(tǒng)發(fā)送到超內(nèi)核的消息緩存隊列;當(dāng)應(yīng)用子系統(tǒng)接收消息時調(diào)用RECEIVE MESSAGE,從超內(nèi)核的消息接收隊列取走消息。·過濾單元緩存隊列中所有的消息在存儲到接收隊列之前都要進(jìn)行檢查。盡管每個應(yīng)用子系統(tǒng)都能相對獨立地完成一定功能,但是子系統(tǒng)間的消息交換也是必要的。超內(nèi)核為每個應(yīng)用子系統(tǒng)提供一個過濾單元,當(dāng)一個消息發(fā)送到超內(nèi)核之后,它必須經(jīng)過相應(yīng)過濾單元的驗證。首先,過濾單元要檢查消息的格式以確保接收子系統(tǒng)能夠識別該消息;另外,過濾單元還執(zhí)

19、行一定的通信控制機制。根據(jù)專用系統(tǒng)的功能和實際需要,某些不可信的子系統(tǒng)禁止發(fā)送消息到安全性要求高的子系統(tǒng),比如用戶密碼管理子系統(tǒng)。另外,過濾單元還可以對相應(yīng)子系統(tǒng)的接收隊列進(jìn)行監(jiān)控,當(dāng)發(fā)現(xiàn)這個子系統(tǒng)的接收消息隊列溢出后,便可判斷該子系統(tǒng)未在正常的時間內(nèi)從接收隊列取走消息,從而判斷它出現(xiàn)異常。過濾單元進(jìn)而對出現(xiàn)異常的子系統(tǒng)進(jìn)行恢復(fù)。·消息接收隊列隊列由每個應(yīng)用子系統(tǒng)需要接收的消息構(gòu)成。緩存隊列中的消息經(jīng)過過濾單元檢查通過后就存到接收隊列中,應(yīng)用子系統(tǒng)從接收隊列取走發(fā)送給自己的消息。過濾單元監(jiān)測消息接收隊列中每個應(yīng)用子系統(tǒng)未處理的消息數(shù)目,如果在一定的時間參數(shù)內(nèi)某個應(yīng)用子系統(tǒng)未能從接收隊

20、列中取走消息,則超內(nèi)核就認(rèn)為該子系統(tǒng)出現(xiàn)異常,并且對它進(jìn)行恢復(fù)。超內(nèi)核是模型的核心,負(fù)責(zé)應(yīng)用子系統(tǒng)之間的調(diào)度和子系統(tǒng)間消息傳遞,它的錯誤會造成系統(tǒng)無法運行。但是,在超內(nèi)核模型中,超內(nèi)核完成的功能簡單,僅僅是調(diào)度和消息傳遞,而不像傳統(tǒng)內(nèi)核那樣還要對硬件進(jìn)行監(jiān)管和訪問,所以超內(nèi)核的代碼量很小。以基于超內(nèi)核模型開發(fā)的防火墻原型系統(tǒng)為例,包括注釋和空行在內(nèi)的內(nèi)核程序總共870行C和c+以及匯編代碼。簡單的功能和很小的代碼量可以使得超內(nèi)核程序容易做到?jīng)]有代碼漏洞,另外維護(hù)簡單。因為超內(nèi)核非常小,可以大大減少出錯的可能性,所以也不容易造成整個系統(tǒng)的崩潰。3.3 容錯設(shè)計系統(tǒng)不論在何種情況下出現(xiàn)錯誤,都必須

21、滿足2個條件:一個是系統(tǒng)中必須含有有缺陷的代碼;另一個是系統(tǒng)中的這些代碼必須要處理惡意或非惡意地引起系統(tǒng)錯誤的數(shù)據(jù)。任何一個條件不滿足都不至于引起系統(tǒng)出錯?,F(xiàn)在的計算機體系結(jié)構(gòu)中錯誤是面向代碼的,即認(rèn)為系統(tǒng)中的錯誤是由某些代碼設(shè)計缺陷或者編碼錯誤引起的。而數(shù)據(jù)只作為某個代碼模塊的資源進(jìn)行處理,代碼出錯是引起系統(tǒng)錯誤的主動因素,而數(shù)據(jù)在任何情況下都是被動的。這樣的體系結(jié)構(gòu)帶來的處理方式是:人們不斷對代碼進(jìn)行修補,對體系結(jié)構(gòu)進(jìn)行改進(jìn)甚至重新設(shè)計。在系統(tǒng)運行時,代碼引起不安全情況后,系統(tǒng)無法自動處理。系統(tǒng)中的每一個進(jìn)程是獨立的單元,它處理的數(shù)據(jù)和操作系統(tǒng)無關(guān),進(jìn)程代碼正?;蚍钦5囟加锌赡苷紦?jù)全部的

22、虛擬資源,而操作系統(tǒng)本身卻無法對這種情況進(jìn)行分辨和制約,這樣引起的后果往往是整個系統(tǒng)的崩潰。如果引起系統(tǒng)的錯誤是面向數(shù)據(jù)的,就可以認(rèn)為系統(tǒng)中的代碼在運行時是正確的,或者人們不關(guān)心代碼本身的對錯,認(rèn)為引起系統(tǒng)出錯的原因是某個數(shù)據(jù)。這樣,系統(tǒng)開始運行后,通過對系統(tǒng)中各個部分處理數(shù)據(jù)的情況進(jìn)行監(jiān)控和檢查,可以獲得系統(tǒng)運行狀態(tài)的信息。系統(tǒng)某個模塊進(jìn)行數(shù)據(jù)處理時,如果出現(xiàn)非正?,F(xiàn)象,就拋棄該數(shù)據(jù)塊,該模塊回到初始的起點重新運行。這樣可以保證系統(tǒng)不會出現(xiàn)崩潰現(xiàn)象,拋棄數(shù)據(jù)塊的結(jié)果是保持系統(tǒng)提供持續(xù)的服務(wù),最多引起性能的平穩(wěn)降級。超內(nèi)核系統(tǒng)的錯誤容忍機制設(shè)計中,應(yīng)用子系統(tǒng)被看做是數(shù)據(jù)處理單元,接收并處理來自

23、系統(tǒng)外部或者其他子系統(tǒng)的數(shù)據(jù)。開發(fā)完成的超內(nèi)核系統(tǒng)不依賴于代碼的完全正確性,系統(tǒng)中的代碼即使有錯,也不會引起系統(tǒng)大范圍的性能降級或者系統(tǒng)崩潰,錯誤會被制約在某一個單元內(nèi),整個系統(tǒng)的功能可以很快恢復(fù)。超內(nèi)核系統(tǒng)中基于數(shù)據(jù)的錯誤容忍機制由2部分構(gòu)成。首先,超內(nèi)核通過監(jiān)控應(yīng)用子系統(tǒng)處理數(shù)據(jù)的情況對子系統(tǒng)進(jìn)行調(diào)度、異常判斷和恢復(fù),具體有以下3個方面:·調(diào)度超內(nèi)核負(fù)責(zé)監(jiān)控各應(yīng)用子系統(tǒng)的狀態(tài),根據(jù)數(shù)據(jù)流向調(diào)配和調(diào)度子系統(tǒng)的行為,包括運行、等待、掛起等等,決定由哪個子系統(tǒng)獲得當(dāng)前CPU的運行權(quán)。·異常判斷超內(nèi)核中保留所有應(yīng)用子系統(tǒng)運行的起始點和間隔多長時間對此子系統(tǒng)進(jìn)行狀態(tài)監(jiān)測的時間參數(shù)

24、,此參數(shù)由很多因素來確定,如系統(tǒng)策略、該子系統(tǒng)功能與性質(zhì)、正常處理數(shù)據(jù)的時間等等。當(dāng)某個應(yīng)用子系統(tǒng)經(jīng)過超內(nèi)核的調(diào)配和調(diào)度獲得CPU運行權(quán)以后,超內(nèi)核還會保留此子系統(tǒng)的ID和當(dāng)時正在處理的數(shù)據(jù),并按照對它設(shè)定的時間參數(shù)進(jìn)行定時監(jiān)測。如果內(nèi)核發(fā)現(xiàn)某一個子系統(tǒng)在時間參數(shù)所定的范圍內(nèi),沒有對輸入的數(shù)據(jù)做足夠的處理,得到正常的結(jié)果,就認(rèn)為它處于非正常狀態(tài)。·恢復(fù)超內(nèi)核復(fù)位處于非正常狀態(tài)的子系統(tǒng),使其重新處理下一數(shù)據(jù)。超內(nèi)核系統(tǒng)錯誤容忍機制的另一方面是,應(yīng)用子系統(tǒng)的錯誤被限制在子系統(tǒng)內(nèi)部,不會影響到其他子系統(tǒng)。具體有以下2個方面:·應(yīng)用子系統(tǒng)之間在內(nèi)存空間上是完全隔離的。整個系統(tǒng)采用線

25、性內(nèi)存管理方式,某塊線性內(nèi)存一旦在系統(tǒng)創(chuàng)建時分配給某個子系統(tǒng),該子系統(tǒng)就獨占這塊內(nèi)存,不存在與其他子系統(tǒng)共享的問題,減少了數(shù)據(jù)更替時相互干擾的可能性。·應(yīng)用子系統(tǒng)之間的通信是可被監(jiān)控的。應(yīng)用子系統(tǒng)不對外提供調(diào)用的接口,它們之間通過消息傳遞進(jìn)行通信。而且發(fā)送的消息必須由超內(nèi)核進(jìn)行傳遞和檢查過濾。檢查可以分為2部分,首先超內(nèi)核要檢查消息的格式,以使礙該消息可以被接收方子系統(tǒng)識別;另外,超內(nèi)核還要執(zhí)行一定的應(yīng)用子系統(tǒng)之間通信控制機制,根據(jù)專用系統(tǒng)的實際功能和安全需求,禁止某些不可信的應(yīng)用子系統(tǒng)向安全要求高的子系統(tǒng)發(fā)送消息。這樣,超內(nèi)核通過對數(shù)據(jù)的監(jiān)控調(diào)度各應(yīng)用子系統(tǒng),可以及時發(fā)現(xiàn)系統(tǒng)內(nèi)錯誤

26、的部分,保持系統(tǒng)性能,防止系統(tǒng)崩潰,長時間處于拒絕服務(wù)狀態(tài)。由于超內(nèi)核系統(tǒng)的架構(gòu)決定了應(yīng)用子系統(tǒng)不需要頻繁使用其他子系統(tǒng)管理的硬件,因此子系統(tǒng)間只需要比較少的通信,不會引起系統(tǒng)性能的下降。另外,某個應(yīng)用子系統(tǒng)的錯誤通過內(nèi)存隔離機制和消息過濾機制被限制在子系統(tǒng)內(nèi)部,不會引起整個系統(tǒng)的崩潰。4.原型系統(tǒng)實現(xiàn)4.1開發(fā)平臺為了開發(fā)原型系統(tǒng),我們建立了一個開發(fā)環(huán)境,它由4個部分組成:編譯器(compiler)、鏈接器(1inker)、燒寫器(writer)、裝載器(10ader)。編譯器把c或者C+源文件編譯成目標(biāo)文件;鏈接器把目標(biāo)文件轉(zhuǎn)換為一個特定格式的磁盤映象文件。這個磁盤映象文件包含配置信息、超

27、內(nèi)核代碼、應(yīng)用模塊的可執(zhí)行代碼以及數(shù)據(jù)。燒寫器把上述磁盤影響文件和裝載代碼寫入IDE磁盤。這樣,帶有這個IDE磁盤的計算機就成為了一個超內(nèi)核系統(tǒng)。我們的開發(fā)環(huán)境是在微軟的windows操作系統(tǒng)下使用微軟Visual Studio編譯器編譯出來的。為了簡單性,這個開發(fā)環(huán)境只適用于Intel386處理器和其后續(xù)兼容處理器。裝載器由683行匯編代碼構(gòu)成,鏈接器由3544行C+代碼構(gòu)成,燒寫器由300行C+代碼構(gòu)成。編譯器采用的是微軟公司c+編譯器。4.2原型系統(tǒng)實現(xiàn)使用上述開發(fā)環(huán)境,我們開發(fā)出一個防火墻原型系統(tǒng)。這個防火墻原型系統(tǒng)的硬件平臺包括:IntelPentium3 1GI-Iz處理器,512

28、M DDR內(nèi)存,2個82559 10100Mbps自適應(yīng)網(wǎng)卡和1個串口。系統(tǒng)軟件包括:超內(nèi)核、串口應(yīng)用模塊和網(wǎng)絡(luò)應(yīng)用模塊。系統(tǒng)每1118產(chǎn)生1次時鐘中斷,中斷產(chǎn)生后超內(nèi)核把收到的消息放入目的應(yīng)用模塊的消息隊列中,并且給需要調(diào)度的模塊分配時間片。從一個應(yīng)用模塊切換到另一個應(yīng)用模塊是通過CPU的任務(wù)門實現(xiàn)的。網(wǎng)絡(luò)應(yīng)用模塊包括3個任務(wù):2個任務(wù)處理來自2個網(wǎng)卡的中斷,1個主任務(wù)負(fù)責(zé)消息和網(wǎng)絡(luò)數(shù)據(jù)的處理。一個模塊內(nèi)所有的任務(wù)使用同樣的地址空間,這樣可以方便同一個模塊內(nèi)所有任務(wù)共享數(shù)據(jù)。防火墻原型系統(tǒng)幾乎全部由C和C+語言開發(fā),只有大約15的代碼使用匯編語言,其中90是與機器硬件相關(guān)的部分。包括注釋和空

29、行,內(nèi)核程序包括870行C和C+以及匯編代碼;網(wǎng)絡(luò)模塊程序包括1100行C和C+以及匯編代碼;串口模塊程序包括300行c和C+以及匯編代碼。4.3性能測試為了測評超內(nèi)核防火墻原型系統(tǒng)的性能,我們建立了一個Linux防火墻作為比較,超內(nèi)核防火墻和Linux防火墻建立在同樣的硬件平臺上。我們刪除了V2.4.28 Linux內(nèi)核中不必要的組件,并且對其進(jìn)行優(yōu)化,使其適合做一個以太網(wǎng)橋。Window XP也被用在同樣的硬件平臺上進(jìn)行測試。因為它難以進(jìn)行優(yōu)化,所以性能遠(yuǎn)不及超內(nèi)核防火墻。例如,測試表明,它的包轉(zhuǎn)發(fā)延時達(dá)到700tts.所以,Window XP的測試結(jié)果不在此進(jìn)行比較。包轉(zhuǎn)發(fā)延時是防火墻的

30、一個重要指標(biāo),它顯示了防火墻的實時性,吞吐率是另一個性能特性。我們按照RFC 2544標(biāo)準(zhǔn)進(jìn)行系統(tǒng)包轉(zhuǎn)發(fā)延時和吞吐率的測試。我們使用SmaxtBits 6000B操作測試,它和SmartApplications軟件一起自動完成符合RFC 1242和RFC2544定義的工業(yè)標(biāo)準(zhǔn)性能測試。(1)包轉(zhuǎn)發(fā)延時使用存儲轉(zhuǎn)發(fā)(store and forward)方式來測試每個數(shù)據(jù)包的轉(zhuǎn)發(fā)延時,也就是從數(shù)據(jù)包輸入時的最后一個比特到達(dá)接收網(wǎng)121算起,直到這個數(shù)據(jù)包的第一個比特到達(dá)發(fā)送網(wǎng)口為止的間隔時間。一個測試數(shù)據(jù)流的傳輸率是10Mbps,在120s時間內(nèi)對每個數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)延時測試,再計算平均值作為一次測

31、試的結(jié)果。測試重復(fù)進(jìn)行20次。在10Mbps的傳輸率下,超內(nèi)核系統(tǒng)的包轉(zhuǎn)發(fā)延時比Linux系統(tǒng)少大約20,這表明超內(nèi)核系統(tǒng)比優(yōu)化的Linux效率更高。對于比較小的數(shù)據(jù)包,超內(nèi)核系統(tǒng)的吞吐率優(yōu)于Linux系統(tǒng),這表明超內(nèi)核系統(tǒng)的調(diào)度效率更高。然而,對于比較大的數(shù)據(jù)包超內(nèi)核的吞吐率稍遜色于Linux系統(tǒng),原因是我們的網(wǎng)絡(luò)驅(qū)動沒有優(yōu)化為適應(yīng)高傳輸率,這會導(dǎo)致一些數(shù)據(jù)包的丟失。經(jīng)過測試,發(fā)現(xiàn)超內(nèi)核系統(tǒng)的性能比Linux系統(tǒng)更加穩(wěn)定。4.4容錯性測試為了測試超內(nèi)核系統(tǒng)的容錯性,我們在超內(nèi)核防火墻原型系統(tǒng)中進(jìn)行了2項實驗,用來測試應(yīng)用子系統(tǒng)之間控制權(quán)轉(zhuǎn)移;以及出現(xiàn)異常的子系統(tǒng)能夠被超內(nèi)核重啟。(1)控制權(quán)

32、轉(zhuǎn)移測試在超內(nèi)核原型系統(tǒng)中,每個應(yīng)用子系統(tǒng)在Link階段被分配獨立的代碼段、數(shù)據(jù)段,且代碼段和數(shù)據(jù)段是相互隔離的;不同應(yīng)用子系統(tǒng)的代碼段、數(shù)據(jù)段占據(jù)不同的物理內(nèi)存空間。網(wǎng)絡(luò)防火墻原型系統(tǒng)中,利用Intel x86架構(gòu)CPU的特權(quán)級機制(特權(quán)級共4級,0為最高特權(quán)級,3為最低特權(quán)級)對應(yīng)用子系統(tǒng)之間控制權(quán)轉(zhuǎn)移進(jìn)行保護(hù):把最高的特權(quán)級別分配給最重要的數(shù)據(jù)段和最可信任的代碼段,具有最高特權(quán)級別的數(shù)據(jù),只能由最可信任的代碼來訪問;給最不重要的數(shù)據(jù)和一般的代碼段分配較低的特權(quán)級別,具有最低特權(quán)級別的數(shù)據(jù),可被具有任何特權(quán)級別的代碼訪問。為了測試原型系統(tǒng)是否實現(xiàn)了控制權(quán)無法從低級別子系統(tǒng)轉(zhuǎn)移到更高級子系統(tǒng)

33、,我們進(jìn)行了如下實驗:·在Linker中,創(chuàng)建網(wǎng)絡(luò)應(yīng)用子系統(tǒng)代碼段描述符時,在描述符中填入,代碼段的起始地址為Ox4100000,段界限是1M.即網(wǎng)絡(luò)應(yīng)用子系統(tǒng)代碼段在內(nèi)存中被分配的空間為0x41000000x4200000.在網(wǎng)絡(luò)應(yīng)用子系統(tǒng)代碼段描述符屬性域中,把特權(quán)級DPL(descriptor privilege level)設(shè)為2.·在Linker中,創(chuàng)建串El應(yīng)用子系統(tǒng)代碼段描述符時,在描述符中填人,代碼段的起始地址為Ox5100000,段界限是1M.即網(wǎng)絡(luò)應(yīng)用子系統(tǒng)代碼段在內(nèi)存中被分配的空間為Ox51000000x5200000.在網(wǎng)絡(luò)應(yīng)用子系統(tǒng)代碼段描述符屬性

34、域中,把特權(quán)級DPL設(shè)為1(級別高于網(wǎng)絡(luò)應(yīng)用子系統(tǒng))。·在網(wǎng)絡(luò)應(yīng)用子系統(tǒng)代碼中插入一條指令,跳轉(zhuǎn)到串口應(yīng)用子系統(tǒng)執(zhí)行,該指令為:jmp fword ptr wTaskgateAddrwTaskgateAddr為目標(biāo)串El子系統(tǒng)任務(wù)狀態(tài)段的16位選擇子這是x86架構(gòu)保護(hù)模式下的一種間接跳轉(zhuǎn)方式,指令中含有指向包含目標(biāo)地址指針的任務(wù)狀態(tài)段描述符的指針。·系統(tǒng)運行時,當(dāng)網(wǎng)絡(luò)應(yīng)用子系統(tǒng)程序執(zhí)行到這條jmp指令時,跳轉(zhuǎn)無法實現(xiàn),網(wǎng)絡(luò)子系統(tǒng)無法繼續(xù)運行,只能等待超內(nèi)核將其重啟。這就表示,在超內(nèi)核系統(tǒng)中,控制權(quán)無法從低級別子系統(tǒng)向更高級子系統(tǒng)轉(zhuǎn)移。(2)異常應(yīng)用子系統(tǒng)的恢復(fù)超內(nèi)核系統(tǒng)容錯性的一個重要方面是,某個應(yīng)用子系統(tǒng)的異??梢员患皶r發(fā)現(xiàn),并且被恢復(fù),從而保證系統(tǒng)的穩(wěn)定性。網(wǎng)絡(luò)防火墻原型系統(tǒng)采用了任務(wù)機制,每個子系統(tǒng)包含一個或者多個任務(wù)。Linker為每個任務(wù)創(chuàng)建TSS(任務(wù)狀態(tài)段),并且在GDT(全局描述符表)中填入TSS的描述符項。TSS是每個任務(wù)的“現(xiàn)場”記錄,保存任務(wù)現(xiàn)場各寄存器狀態(tài)的完整映象等。網(wǎng)絡(luò)防火墻原型系統(tǒng)初始化時,TSS段中的內(nèi)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論