欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種x86虛擬化條件下降低網(wǎng)絡(luò)i/o操作cpu開銷的系統(tǒng)的制作方法

文檔序號(hào):7868102閱讀:295來源:國(guó)知局
專利名稱:一種x86虛擬化條件下降低網(wǎng)絡(luò)i/o操作cpu開銷的系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)緩存技術(shù)和X86平臺(tái)虛擬化中的I/O虛擬化技術(shù),特別是一種X86虛擬化條件下降低網(wǎng)絡(luò)I/o操作CPU開銷的系統(tǒng),屬于計(jì)算機(jī)技術(shù)領(lǐng)域。
背景技術(shù)
虛擬化技術(shù)已有50多年的歷史,它幾乎與操作系統(tǒng)同時(shí)產(chǎn)生,并伴隨著計(jì)算機(jī)硬件、操作系統(tǒng)和軟件的發(fā)展而逐步發(fā)展。虛擬化技術(shù)最早被用于IBM大型機(jī)上,以人們熟知的分時(shí)操作系統(tǒng)的形式出現(xiàn),并且在之后的很長(zhǎng)一段時(shí)間內(nèi)一直存在于大型機(jī)領(lǐng)域。1974 年,波佩克和戈登堡合寫論文《Formal Requirements for Virtualizable ThirdGeneation Architectures》,提出了著名的波佩克與戈德堡虛擬化需求,用于驗(yàn)證某一計(jì)算機(jī)體系結(jié)構(gòu)可否被有效虛擬化。后來,隨著80x86芯片的不斷成熟和在商業(yè)上取得的巨大成功,x86架構(gòu)的計(jì)算機(jī)占據(jù)越來越重要的地位。由于虛擬化具有無可比擬的優(yōu)勢(shì),研究者試圖將虛擬化技術(shù)引入到X86架構(gòu)中,但是x86架構(gòu)在設(shè)計(jì)初期并沒有考慮虛擬化的問題,因此在x86虛擬化過程中遇到了巨大的困難。為了解決這些困難,實(shí)現(xiàn)在x86平臺(tái)上的虛擬化,產(chǎn)業(yè)界、學(xué)術(shù)界的研究人員分別提出了全虛擬化、半虛擬化、硬件輔助虛擬化的解決方案,推出了 VMWare、Xen、KVM、Hyper-V等虛擬化軟件,AMD和Intel公司也分別推出了支持硬件輔助虛擬化的CPU產(chǎn)品。到目前為止,x86架構(gòu)下的虛擬化模型主要分為4種,如圖1所示,獨(dú)立監(jiān)控器模式、宿主模式、混合I型和混合II性。獨(dú)立監(jiān)控器模式虛擬機(jī)管理器程序(VMM)直接在硬件上運(yùn)行,它的指令具有最高優(yōu)先級(jí);操作系統(tǒng)運(yùn)行在較低特權(quán)的模式,保證VMM對(duì)硬件具有完全的控制。VMM擁有硬件驅(qū)動(dòng)程序,所有硬件受虛擬機(jī)管理器控制。宿主模式宿主操作系統(tǒng)運(yùn)行在硬件上,并且對(duì)硬件具有完全的控制權(quán)限。VMM作為用戶態(tài)進(jìn)程運(yùn)行,這樣虛擬機(jī)管理器可以直接調(diào)用操作系統(tǒng)的驅(qū)動(dòng)和服務(wù)來支持對(duì)I/O等設(shè)備的訪問?;旌螴型這種模式是獨(dú)立監(jiān)控器模式和宿主模式的一種混合形式,VMM直接運(yùn)行在硬件上,具有最高管理權(quán)限;一個(gè)特權(quán)操作系統(tǒng)管理所有的本地設(shè)備驅(qū)動(dòng),負(fù)責(zé)處理整個(gè)系統(tǒng)的硬件訪問請(qǐng)求?;旌螴I型這種模式是獨(dú)立監(jiān)控器模式和宿主模式的另外一種混合形式,VMM作為操作系統(tǒng)的一個(gè)模塊運(yùn)行在操作系統(tǒng)的內(nèi)核態(tài),在操作系統(tǒng)的支持下它可以虛擬機(jī)分配CPU、內(nèi)存等硬件資源。跟宿主模式不同的是,這種模式下,虛擬機(jī)運(yùn)行在介于內(nèi)核態(tài)和用戶態(tài)之間的一個(gè)新的特權(quán)模態(tài),稱為來賓態(tài)。所有這些模式都有一個(gè)共同的特點(diǎn)虛擬機(jī)不能直接訪問I/O資源,都需要經(jīng)過虛擬機(jī)VMM的調(diào)度來進(jìn)行硬件訪問,這種方式被稱為I/O虛擬化。長(zhǎng)期以來,對(duì)于I/O虛擬化的研究主要集中在效率和公平性兩個(gè)方面。隨著半虛擬化技術(shù)的應(yīng)用,I/O虛擬化的效率有了非常大的提升,Xen, VMware等相繼使用半虛擬化技術(shù)提升I/O效率;針對(duì)公平性問題的研究成果也層數(shù)不窮。而I/o虛擬化的效率和公平性都伴隨著巨大的CPU的額外開銷,但是很少有研究致力于減少這種開銷,以提高系統(tǒng)的整體性能。圖2表示的是Xen的半虛擬化網(wǎng)絡(luò)I/O解決方案,在xen中通常用“域”來表示一個(gè)虛擬機(jī)。圖中DomO是一個(gè)特權(quán)域,安裝有原生硬件驅(qū)動(dòng)和后端設(shè)備驅(qū)動(dòng)。在VMM的調(diào)度下,DomO通過后端驅(qū)動(dòng)與DomU進(jìn)行交互,并將DomU的網(wǎng)絡(luò)數(shù)據(jù)包通過原生設(shè)備驅(qū)動(dòng)發(fā)送到物理網(wǎng)卡進(jìn)行傳輸。DomU中的前端設(shè)備驅(qū)動(dòng)在Xen的事件通道和I/O環(huán)機(jī)制的保障下,與DomO進(jìn)行數(shù)據(jù)交換。圖3所示為domU網(wǎng)絡(luò)數(shù)據(jù)發(fā)送示意圖,其中步驟1_8是Xen環(huán)境中I/O虛擬化中的額外開銷,對(duì)系統(tǒng)整體性能產(chǎn)生非常大的影響。實(shí)驗(yàn)數(shù)據(jù)指出,虛擬機(jī)中部署Web服務(wù)器等I/O密集型應(yīng)用時(shí),其I/O的額外開銷可以高達(dá)45%飛0%。

發(fā)明內(nèi)容
本發(fā)明技術(shù)解決問題針對(duì)I/0虛擬化中的CPU開銷過大的問題,提供一種X86虛擬化條件下降低網(wǎng)絡(luò)I/o操作占用CPU開銷的方法,可以有效的降低I/O虛擬化所占用的CPU開銷,提高I/O性能。本發(fā)明技術(shù)解決方案X86虛擬化條件下降低網(wǎng)絡(luò)I/O操作CPU開銷的系統(tǒng),包括位于VMM或DomO的數(shù)據(jù) 緩存模塊,網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留模塊和緩存數(shù)據(jù)交換通信模塊。如圖6、7、8所示。數(shù)據(jù)緩存模塊在VMM或DomO內(nèi)存中建立基于樹的三級(jí)索引結(jié)構(gòu)網(wǎng)絡(luò)數(shù)據(jù)包緩存,其目的是將虛擬機(jī)中的應(yīng)用數(shù)據(jù)緩存到VMM或DomO中,并可以通過索引進(jìn)行快速查找和定位。所緩存的數(shù)據(jù)全部為虛擬機(jī)中需要通過網(wǎng)絡(luò)進(jìn)行傳輸?shù)臄?shù)據(jù),尤其以靜態(tài)數(shù)據(jù)為佳,為保證效率,緩存數(shù)據(jù)全部存放在內(nèi)存中。VMM對(duì)物理機(jī)的具有分配和管理的權(quán)限,因此,必要的時(shí)候可以讓渡部分虛擬機(jī)內(nèi)存供給緩存使用。網(wǎng)絡(luò)數(shù)據(jù)包緩存位于VMM或DomO中,以內(nèi)核模塊或系統(tǒng)服務(wù)的形式存在,可以手動(dòng)進(jìn)行加載或停止使用。為緩存數(shù)據(jù)建立三級(jí)的索引結(jié)構(gòu)。一個(gè)數(shù)據(jù)包發(fā)送到目的應(yīng)用需要有3個(gè)重要的標(biāo)識(shí)MAC地址、IP地址、端口號(hào)。數(shù)據(jù)包在發(fā)送到虛擬機(jī)之前,其MAC地址和IP地址是一一對(duì)應(yīng)的,用于標(biāo)識(shí)一臺(tái)虛擬機(jī),本發(fā)明將二者同時(shí)列為第一級(jí)索引目錄;端口號(hào)是虛擬機(jī)內(nèi)部邏輯資源,與虛擬機(jī)中應(yīng)用相對(duì)應(yīng),因此本發(fā)明根據(jù)端口號(hào)建立第二級(jí)索引目錄;第三級(jí)索引由具體的緩存數(shù)據(jù)特征(如URI)進(jìn)行標(biāo)識(shí),直接指向緩存是數(shù)據(jù)。這種三級(jí)的索引結(jié)構(gòu)可以方便快速的查找數(shù)據(jù),又能在邏輯上實(shí)現(xiàn)清晰的數(shù)據(jù)隔離。緩存索引結(jié)構(gòu)如圖7所示。緩存的數(shù)據(jù)需滿足以下條件(1)數(shù)據(jù)量較小且經(jīng)常被請(qǐng)求;(2)數(shù)據(jù)內(nèi)容相對(duì)固定。緩存索引樹的根節(jié)點(diǎn)為緩存索引的入口,一級(jí)子節(jié)點(diǎn)為緩存數(shù)據(jù)的第一級(jí)索引由MAC地址+IP地址標(biāo)識(shí),二級(jí)子節(jié)點(diǎn)為緩存數(shù)據(jù)的第二級(jí)索引,由端口號(hào)標(biāo)識(shí),三級(jí)子節(jié)點(diǎn)為緩存數(shù)據(jù)的第三級(jí)索引由緩存數(shù)據(jù)特征標(biāo)識(shí),樹的葉子節(jié)點(diǎn)為緩存數(shù)據(jù)及其元數(shù)據(jù)信息。緩存模塊提供數(shù)據(jù)插入、修改、刪除、查詢和元數(shù)據(jù)查詢等操作。網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留模塊在介紹該模塊之前,先定義兩個(gè)概念。
(I)特征值.指來自網(wǎng)絡(luò)的數(shù)據(jù)包請(qǐng)求的目的地址、端口號(hào)PORT和請(qǐng)求數(shù)據(jù)的 1,用四元組?〈嫩(,IP, PORT, URI>表示,其中MAC地址在數(shù)據(jù)包的以太網(wǎng)數(shù)據(jù)包報(bào)頭中標(biāo)識(shí),IP地址在網(wǎng)絡(luò)層協(xié)議(IP協(xié)議)報(bào)頭中標(biāo)識(shí),端口號(hào)在傳輸層協(xié)議(TCP協(xié)議)報(bào)頭中標(biāo)識(shí),URI在應(yīng)用層協(xié)議(HTTP協(xié)議)報(bào)頭中表示。(2)索引鏈.由指向緩存數(shù)據(jù)的索引組成的鏈,記做L,用〈MAC+IP,PORT,URI>標(biāo)記,可以由F經(jīng)過簡(jiǎn)單計(jì)算得到。(*L)表示索引鏈L指向的數(shù)據(jù)塊。(3)以Linux內(nèi)核為基礎(chǔ)的虛擬機(jī)監(jiān)控器中存在一種稱為Netfilter的機(jī)制,可以對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行攔截和處理,Netfilter的架構(gòu)就是在整個(gè)網(wǎng)絡(luò)流程的若干位置放置了一些監(jiān)測(cè)點(diǎn)(H00K),而在每個(gè)檢測(cè)點(diǎn)上登記了一些處理函數(shù)進(jìn)行處理(如包過濾,NAT等,甚至可以是用戶自定義的功能)??紤]到Netfilter具有高效、便捷的使用特點(diǎn),本發(fā)明在現(xiàn)有Netfilter機(jī)制的基礎(chǔ)上進(jìn)行擴(kuò)展,在物理網(wǎng)卡和VNET之間添加一個(gè)新的監(jiān)測(cè)點(diǎn)函數(shù)調(diào)用,使其滿足需求。如圖8所示,當(dāng)一個(gè)數(shù)據(jù)包到達(dá)時(shí),從該監(jiān)測(cè)點(diǎn)中讀取該數(shù)據(jù)包,并提取該數(shù)據(jù)包的特征值F,計(jì)算索引鏈L,如果*L存在,說明該數(shù)據(jù)包已經(jīng)被緩存,則取出該緩存數(shù)據(jù)進(jìn)行返回并丟棄該數(shù)據(jù)包;如果*L不存在,則不作任何處理,將數(shù)據(jù)包交給上層協(xié)議繼續(xù)處理,數(shù)據(jù)包最終會(huì)被傳遞到目的虛擬機(jī)。緩存數(shù)據(jù)交換通信模塊在虛擬機(jī)和VMM或DomO之間建立一種通信通道,用于虛擬機(jī)應(yīng)用和緩存之間進(jìn)行通信。虛擬機(jī)應(yīng)用可以通過通道將數(shù)據(jù)放置到緩存中,并且通過通道對(duì)緩存數(shù)據(jù)進(jìn)行插入、刪除、修改、查詢緩存數(shù)據(jù)、查詢數(shù)據(jù)元數(shù)據(jù)等操作。通道對(duì)虛擬機(jī)中應(yīng)用提供應(yīng)用程序編程接口(API)以方便程序進(jìn)行調(diào)用。其中主要的編程接口包括 Put (id, data, feature)用于將應(yīng)用數(shù)據(jù)插入到緩存中,其中id為數(shù)據(jù)編號(hào),data為數(shù)據(jù)內(nèi)容,feature為數(shù)據(jù)的特征值。4- Delete (id)刪除放入緩存中的數(shù)據(jù),包括其特征值。
Modify (id, data, feature)用于修改放入緩存中的數(shù)據(jù),其中id為數(shù)據(jù)編號(hào),data為數(shù)據(jù)內(nèi)容,feature為數(shù)據(jù)的特征值。
Query (id)查詢緩存中的數(shù)據(jù)。
QueryMetadata(id)查詢緩存中的數(shù)據(jù)的元數(shù)據(jù)信息。本發(fā)明的優(yōu)點(diǎn)和積極效果如下(I)本發(fā)明提供了一種虛擬機(jī)條件下加速網(wǎng)絡(luò)資源訪問的途徑,通過將數(shù)據(jù)緩存至VMM或DomO層,數(shù)據(jù)可以快速通過網(wǎng)絡(luò)進(jìn)行發(fā)送。(2)本發(fā)明有效降低了網(wǎng)絡(luò)密集型應(yīng)用CPU額外開銷。由于大量頻繁訪問的數(shù)據(jù)都緩存在VMM或DomO層,這里可以避免虛擬機(jī)到虛擬機(jī)監(jiān)控器之間大量的數(shù)據(jù)交換,因此可以有效的降低數(shù)據(jù)內(nèi)部傳輸?shù)拈_銷,提升相關(guān)應(yīng)用和該VMM上運(yùn)行的其他虛擬機(jī)應(yīng)用性倉(cāng)泛。


圖1為x86架構(gòu)虛擬化模型;圖2為Xen的網(wǎng)絡(luò)I/O示意圖;圖3為數(shù)據(jù)發(fā)送示意圖;圖4傳統(tǒng)虛擬機(jī)網(wǎng)絡(luò)架構(gòu);圖5為本發(fā)明的網(wǎng)絡(luò)架構(gòu)圖;圖6為本發(fā)明系統(tǒng)的體系結(jié)構(gòu)圖;圖7為本發(fā)明中緩存索引結(jié)構(gòu);圖8為發(fā)明中的網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留;圖9為本發(fā)明中網(wǎng)絡(luò)結(jié)構(gòu)及Netfilter掛載點(diǎn)示意圖。
具體實(shí)施例方式圖4所示為傳統(tǒng)虛擬機(jī)網(wǎng)絡(luò)架構(gòu),來自網(wǎng)絡(luò)的請(qǐng)求數(shù)據(jù)包首先到達(dá)VMM或DomO,然后通過vNet發(fā)送到響應(yīng)虛擬機(jī)中,交由虛擬 機(jī)及其應(yīng)用對(duì)數(shù)據(jù)包進(jìn)行處理;處理結(jié)束后,響應(yīng)數(shù)據(jù)包通過vNet發(fā)送到VMM或DomO,進(jìn)而發(fā)送到網(wǎng)絡(luò)。如圖5、6所示,本發(fā)明包括數(shù)據(jù)緩存模塊,網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留模塊和緩存數(shù)據(jù)交換通信模塊,應(yīng)用調(diào)用數(shù)據(jù)交換通信模塊接口,將待緩存數(shù)據(jù)及其編號(hào)和特征值傳輸?shù)綌?shù)據(jù)緩存模塊。當(dāng)網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留模塊接收到來自網(wǎng)絡(luò)的數(shù)據(jù)包時(shí),首先提取數(shù)據(jù)包的特征值,并以特征值為索引在數(shù)據(jù)緩存模塊中查找是否有相應(yīng)匹配,若存在響應(yīng)匹配,則將數(shù)據(jù)返回,并丟棄該數(shù)據(jù)包;若不存在相應(yīng)匹配則將數(shù)據(jù)包交給上層協(xié)議處理。下面將介紹各模塊的具體實(shí)現(xiàn)過程1.數(shù)據(jù)緩存模塊(I)建立數(shù)據(jù)結(jié)構(gòu)在VMM或DomO中建立一種支持索引的樹形結(jié)構(gòu),根據(jù)索引鏈(MAC地址+IP地址、端口號(hào)和URI)建立3層索引結(jié)構(gòu),樹的葉子節(jié)點(diǎn)為存儲(chǔ)數(shù)據(jù)。存儲(chǔ)數(shù)據(jù)包括元數(shù)據(jù)和有效數(shù)據(jù)兩部分組成。元數(shù)據(jù)是一個(gè)大小固定的數(shù)據(jù)塊,其中內(nèi)容包括存儲(chǔ)數(shù)據(jù)的id、存儲(chǔ)數(shù)據(jù)的大小、數(shù)據(jù)訪問次數(shù)、最新訪問時(shí)間等;有效數(shù)據(jù)為應(yīng)用緩存數(shù)據(jù),即需要通過網(wǎng)絡(luò)進(jìn)行傳遞的數(shù)據(jù)。如圖7所示。( 2 )實(shí)現(xiàn)插入緩存數(shù)據(jù)操作(2.1)根據(jù)緩存數(shù)據(jù)的特征值F〈MAC,IP,PORT,URI>,計(jì)算索引鏈L〈MAC+IP,PORT,URI > ;(2. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則根據(jù)MAC+IP建立新的子節(jié)點(diǎn),并以此為插入點(diǎn)A ;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)A ;(2. 3)從插入點(diǎn)A出發(fā),根據(jù)索引鏈L的PORT查找二級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則根據(jù)PORT建立新的子節(jié)點(diǎn),并以此為插入點(diǎn)B ;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)B ;
(2. 4)從插入點(diǎn)B出發(fā),根據(jù)索引鏈L的URI查找三級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則根據(jù)URI建立新的子節(jié)點(diǎn),并以此為插入點(diǎn)C ;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)C ;(2. 5)在插入點(diǎn)C下建立子節(jié)點(diǎn),并將數(shù)據(jù)及元數(shù)據(jù)拷貝至該子節(jié)點(diǎn)。(3)實(shí)現(xiàn)刪除緩存數(shù)據(jù)操作(3. 1)根據(jù)緩存數(shù)據(jù)的特征值?〈應(yīng),嚇,?01 1',肌1>,計(jì)算索引鏈1/應(yīng)>嚇,?01 1',肌1> ;(3. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則返回;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)A ;(3. 3)從插入點(diǎn)A出發(fā),根據(jù)L的PORT查找二級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則返回;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)B ;(3. 4)從插入點(diǎn)B出發(fā),根據(jù)L的URI查找三級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則返回;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)C ;(3. 5)刪除插入點(diǎn)C,插入點(diǎn)C下的數(shù)據(jù)。若插入點(diǎn)B為空,則刪除插入點(diǎn)B ;若插入點(diǎn)A為空,則刪除插入點(diǎn)A。(4)實(shí)現(xiàn)修改緩存數(shù)據(jù)操作(4.1)根據(jù)緩存數(shù)據(jù)的特征值 F〈MAC,IP,PORT,URI>,計(jì)算索引鏈 L〈MAC+IP,PORT,URI> ;(4. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)A ;

(4. 3)從插入點(diǎn)A出發(fā),根據(jù)索引鏈L的PORT查找二級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)B ;(4. 4)從插入點(diǎn)B出發(fā),根據(jù)索引鏈L的URI查找三級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)C ;
(4. 5)刪除插入點(diǎn)C下的子節(jié)點(diǎn),并建立新的子節(jié)點(diǎn)D,將數(shù)據(jù)及元數(shù)據(jù)拷貝至子節(jié)點(diǎn)D。(5 )實(shí)現(xiàn)查詢緩存數(shù)據(jù)操作(5. 1)根據(jù)緩存數(shù)據(jù)的特征值?〈應(yīng),1 ,?01 1',肌1>,計(jì)算索引鏈1/應(yīng)>嚇,?01 1',肌1> ;(5. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)A ;(5. 3)從插入點(diǎn)A出發(fā),根據(jù)索引鏈L的PORT查找二級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)B ;(5. 4)從插入點(diǎn)B出發(fā),根據(jù)索引鏈L的URI查找三級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)C ;(5.5)返回查詢點(diǎn)C下的數(shù)據(jù)信息。( 6 )實(shí)現(xiàn)查詢緩存元數(shù)據(jù)操作(6.1)根據(jù)緩存數(shù)據(jù)的特征值 F〈MAC,IP,PORT,URI>,計(jì)算索引鏈 L〈MAC+IP,PORT,URI> ;(6. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)A ;(6. 3)從插入點(diǎn)A出發(fā),根據(jù)索引鏈L的PORT查找二級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)B ;(6. 4)從插入點(diǎn)B出發(fā),根據(jù)索引鏈L的URI查找三級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)C ;(6. 5)返回插入點(diǎn)C下的元數(shù)據(jù)信息。2.數(shù)據(jù)包請(qǐng)求攔截模塊(I)數(shù)據(jù)包請(qǐng)求攔截在物理網(wǎng)卡和VNET之間添加了一個(gè)新的Netfilter掛鉤函數(shù)調(diào)用,并將其標(biāo)記為NF_INET_PRE_VSWICH,如圖9中所示。通過對(duì)這個(gè)掛鉤函數(shù)的調(diào)用就可以攔截到所以經(jīng)過VMM (DomO)的網(wǎng)絡(luò)數(shù)據(jù)包。(2)數(shù)據(jù)包特征值提取與匹配分別從以太網(wǎng)數(shù)據(jù)包、網(wǎng)絡(luò)層數(shù)據(jù)包(以IP為例)、傳輸層數(shù)據(jù)包(以TCP為例)和應(yīng)用層數(shù)據(jù)包(以HTTP為例)四種數(shù)據(jù)包報(bào)頭中提取數(shù)據(jù)包的特征值F〈MAC,IP, PORT,URI>,根據(jù)F計(jì)算索引鏈L〈MAC+IP,PORT,URI>。下面分別是這四種不同數(shù)據(jù)包的報(bào)頭格式。以太網(wǎng)數(shù)據(jù)包報(bào)頭
lypedef struct ethdr
{
unsigned ehar destination—mae[6]; //IJ 的 MAC 6 字節(jié)
unsigned char source—mac[6]; //源 MAC 6 字 |*i
unsigned short type; //后而的! 辦議. 2 Y 節(jié) ARP-0806;IP-0800
}ET HEADER,*PETHDR;IP數(shù)據(jù)報(bào)頭
typedef struct iphdr
I
unsigned char VIHL;版本 4bit = 4 III ff 部長(zhǎng)度 4bit = 5 unsigned char TOS; 服務(wù)類瘦I卞節(jié) unsigned short TotLen;總K度2 7節(jié),Ii括數(shù)掘和報(bào)頭 unsigned short ID; 標(biāo) I符2 節(jié)
unsigned short FlagOff;標(biāo)志 3b it 和分段偏移 Il 13 bit unsigned char TTL;生存期I字f/,為經(jīng)過路由器的總次數(shù)
unsigned char Protocol;協(xié)議類型 I 卞節(jié) ICMP-1,TCP-6 UDP-17 unsigned short Checksum; tlf .部(只足IPtf 部!!)校驗(yàn)和2 :節(jié) unsigned char sourceJp [4];源 IP it I; unsigned char destination—ip[4];目的 IP 地址
}IP—HEADER, *P!P—HEADER; TCP數(shù)據(jù)報(bào)頭typedef struct tcphdr
(
unsigned short sourcejort; //源端 P
iinsigiied short destinationjort; //f] _端 IJ
unsigned long sequence; //32 位 f.f:號(hào)
unsigned long ack—sequence; /732 位_ 認(rèn)序兮
unsigned char headerJength; //首部長(zhǎng)度 JVIj W 4 位通常為 5
unsigned char flags; //奪小-志位 X | X | URG | ACK | PSH | RST | SYN ] FIN
unsigned short window—size; //窗1.....1大小
unsigned short checksum; //校驗(yàn)和
unsigned short exigency jointer; //.緊急指針
} TCP HEADER;HTTP 數(shù)據(jù)包請(qǐng)求行格式
typedef struct littphdr
char* request_method; in 求//法char* itri;
char* http—version; http 木
}HTTP HEADER例如GET/index.html HTTP/1.1則特征值F=(ethdr->destination_mac, iphdr->destination_ip,tcphdr->destination_port, httphdr->uri); 索弓I 鏈 L=(ethdr->destination_mac+iphdr->destination_ip, tcphdr_>destination_port, httphdr_>uri);根據(jù)索引鏈L在緩存中查找響應(yīng)數(shù)據(jù),若返回結(jié)果不為空,則表明發(fā)現(xiàn)特征值匹配;反之,則未匹配。(3)丟棄數(shù)據(jù)請(qǐng)求包在Netfiltet機(jī)制中,可以通過在hook的調(diào)用函數(shù)中返回NF_DR0P的方式丟棄數(shù)據(jù)包,但非常遺憾的是新添加的這個(gè)掛鉤函數(shù)并不能直接使用hook函數(shù)返回值中的NF_DROP,原因是Iinux內(nèi)核的SMP機(jī)制導(dǎo)致其他進(jìn)程可能正在對(duì)這個(gè)skb數(shù)據(jù)包進(jìn)行操作,使用NF_DR0P會(huì)導(dǎo)致系統(tǒng)崩潰。為了防止對(duì)Linux內(nèi)核處理機(jī)制產(chǎn)生影響,并沒有采取傳統(tǒng)的同步鎖機(jī)制來解決這個(gè)問題,而是充分利用了 okfn函數(shù)和Linux內(nèi)核對(duì)數(shù)據(jù)包的管理機(jī)制。具體實(shí)現(xiàn)如下以太網(wǎng)數(shù)據(jù)包的報(bào)頭格式定義如下
權(quán)利要求
1.一種X86虛擬化條件下降低網(wǎng)絡(luò)I/O操作CPU開銷的系統(tǒng),其特征在于包括數(shù)據(jù)緩存模塊、網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留模塊和緩存數(shù)據(jù)交換通信模塊;其中 數(shù)據(jù)緩存模塊在VMM或DomO層建立數(shù)據(jù)緩存模塊用于緩存應(yīng)用數(shù)據(jù);具體為在VMM或DomO內(nèi)存中建立基于樹的三級(jí)索引結(jié)構(gòu)網(wǎng)絡(luò)數(shù)據(jù)包緩存,將虛擬機(jī)中的應(yīng)用數(shù)據(jù)緩存到VMM或DomO中,并通過索引進(jìn)行快速查找和定位;所述網(wǎng)絡(luò)數(shù)據(jù)包緩存位于VMM或DomO中;所述基于樹的三級(jí)索引結(jié)構(gòu)為第一級(jí)索引為MAC地址和IP地址標(biāo)識(shí),第二級(jí)索引為端口號(hào)PORT標(biāo)識(shí),第三級(jí)索引為緩存的數(shù)據(jù)特征(URI)標(biāo)識(shí);樹的葉子節(jié)點(diǎn)為存儲(chǔ)數(shù)據(jù);數(shù)據(jù)緩存模塊提供對(duì)緩存數(shù)據(jù)的插入、刪除、修改、查詢和對(duì)緩存元數(shù)據(jù)查詢操作; 網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留模塊在VMM或DomO層建立網(wǎng)絡(luò)數(shù)據(jù)包請(qǐng)求截留模塊用于攔截來自網(wǎng)絡(luò)的請(qǐng)求數(shù)據(jù)包,并直接對(duì)請(qǐng)求進(jìn)行相應(yīng)操作;具體為在物理網(wǎng)卡和VNET之間添加一個(gè)新的監(jiān)測(cè)點(diǎn)函數(shù),即Netfilter掛鉤函數(shù),通過對(duì)這個(gè)掛鉤函數(shù)的調(diào)用攔截到所經(jīng)過VMM或DomO的網(wǎng)絡(luò)數(shù)據(jù)包;當(dāng)一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包到達(dá)時(shí),從該監(jiān)測(cè)點(diǎn)中讀取該數(shù)據(jù)包,并提取該數(shù)據(jù)包的特征值F,計(jì)算索引鏈L,如果索引鏈L指向的數(shù)據(jù)塊存在,說明該數(shù)據(jù)包已經(jīng)被緩存,則取出該緩存數(shù)據(jù)進(jìn)行返回并丟棄該數(shù)據(jù)包;如果索引鏈L指向的數(shù)據(jù)塊不存在,則不作任何處理,將數(shù)據(jù)包交給上層協(xié)議繼續(xù)處理,數(shù)據(jù)包最終會(huì)被傳遞到目的虛擬機(jī);所述特征值是指來自網(wǎng)絡(luò)的數(shù)據(jù)包請(qǐng)求的目的地址、端口號(hào)和請(qǐng)求數(shù)據(jù)的數(shù)據(jù)特征(URI);所述索引鏈L是由指向緩存數(shù)據(jù)的索引組成的鏈,由特征值F經(jīng)過簡(jiǎn)單計(jì)算得到; 緩存數(shù)據(jù)交換通信模塊在緩存模塊與應(yīng)用之間建立通信通道,通過調(diào)用API對(duì)數(shù)據(jù)進(jìn)行插入、刪除、修改、查詢緩存數(shù)據(jù)和對(duì)緩存元數(shù)據(jù)查詢;具體為在虛擬機(jī)和VMM或DomO之間建立一種通信通道,用于虛擬機(jī)應(yīng)用和數(shù)據(jù)緩存模塊之間進(jìn)行通信,將待緩存數(shù)據(jù)和特征值傳輸?shù)綌?shù)據(jù)緩存模塊,虛擬機(jī)應(yīng)用通過通道將數(shù)據(jù)放置到緩存中,并且通過通道對(duì)緩存數(shù)據(jù)進(jìn)行插入、刪除、修改、查詢和對(duì)緩存元數(shù)據(jù)查詢操作。
2.根據(jù)權(quán)利要求1所述的X86虛擬化條件下降低網(wǎng)絡(luò)I/O操作CPU開銷的系統(tǒng),其特征在于所述數(shù)據(jù)緩存模塊對(duì)緩存數(shù)據(jù)的插入、刪除、修改、查詢緩存數(shù)據(jù)和對(duì)緩存元數(shù)據(jù)查詢操作的過程為 (1)實(shí)現(xiàn)插入緩存數(shù)據(jù)操作 (1.1)根據(jù)緩存數(shù)據(jù)的特征值F〈MAC,IP, PORT, URI>,計(jì)算索引鏈L〈MAC+IP,PORT,URI > ; (1. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則根據(jù)MAC+IP建立新的子節(jié)點(diǎn),并以此為插入點(diǎn)A ;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)A ; (1. 3)從插入點(diǎn)A出發(fā),根據(jù)索引鏈L的PORT查找二級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則根據(jù)PORT建立新的子節(jié)點(diǎn),并以此為插入點(diǎn)B ;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)B ; (1. 4)從插入點(diǎn)B出發(fā),根據(jù)索引鏈L的URI查找三級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則根據(jù)URI建立新的子節(jié)點(diǎn),并以此為插入點(diǎn)C ;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)C ; (1. 5)在插入點(diǎn)C下建立子節(jié)點(diǎn),并將數(shù)據(jù)及元數(shù)據(jù)拷貝至該子節(jié)點(diǎn); (2)實(shí)現(xiàn)刪除緩存數(shù)據(jù)操作 (2.1)根據(jù)緩存數(shù)據(jù)的特征值F〈MAC,IP, PORT, URI>,計(jì)算索引鏈L〈MAC+IP,PORT,URI > ;(2. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則返回;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)A ; (2. 3)從插入點(diǎn)A出發(fā),根據(jù)L的PORT查找二級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則返回;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)B ; (2. 4)從插入點(diǎn)B出發(fā),根據(jù)L的URI查找三級(jí)子節(jié)點(diǎn),若未發(fā)現(xiàn)匹配,則返回;若發(fā)現(xiàn)匹配,則以匹配到的子節(jié)點(diǎn)為插入點(diǎn)C ; (2. 5)刪除插入點(diǎn)C,插入點(diǎn)C下的數(shù)據(jù),若插入點(diǎn)B為空,則刪除插入點(diǎn)B ;若插入點(diǎn)A為空,則刪除插入點(diǎn)A ; (3)實(shí)現(xiàn)修改緩存數(shù)據(jù)操作 (3.1)根據(jù)緩存數(shù)據(jù)的特征值F〈MAC,IP, PORT, URI>,計(jì)算索引鏈L〈MAC+IP,PORT,URI > ; (3.2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)A; (3.3)從插入點(diǎn)A出發(fā),根據(jù)索引鏈L的PORT查找二級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)B; (3. 4)從插入點(diǎn)B出發(fā),根據(jù)索引鏈L的URI查找三級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)C ; (3. 5)刪除插入點(diǎn)C下的子節(jié)點(diǎn),并建立新的子節(jié)點(diǎn)D,將數(shù)據(jù)及元數(shù)據(jù)拷貝至子節(jié)點(diǎn)D ; (4)實(shí)現(xiàn)查詢緩存數(shù)據(jù)操作 (4.1)根據(jù)緩存數(shù)據(jù)的特征值F〈MAC,IP, PORT, URI>,計(jì)算索引鏈L〈MAC+IP,PORT,URI > ; (4. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)A ; (4. 3)從插入點(diǎn)A出發(fā),根據(jù)索引鏈L的PORT查找二級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)B ; (4. 4)從插入點(diǎn)B出發(fā),根據(jù)索引鏈L的URI查找三級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)C ; (4.5)返回查詢點(diǎn)C下的數(shù)據(jù)信息; (5)實(shí)現(xiàn)查詢緩存元數(shù)據(jù)操作 (5.1)根據(jù)緩存數(shù)據(jù)的特征值F〈MAC,IP, PORT, URI>,計(jì)算索引鏈L〈MAC+IP,PORT,URI > ; (5. 2)從根節(jié)點(diǎn)出發(fā),根據(jù)索引鏈L的MAC+IP查找第一級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)A ; (5.3)從插入點(diǎn)A出發(fā),根據(jù)索引鏈L的PORT查找二級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)B; (5. 4)從插入點(diǎn)B出發(fā),根據(jù)索引鏈L的URI查找三級(jí)子節(jié)點(diǎn),并以此為插入點(diǎn)C ; (5. 5)返回插入點(diǎn)C下的元數(shù)據(jù)信息。
3.根據(jù)權(quán)利要求1所述的X86虛擬化條件下降低網(wǎng)絡(luò)I/O操作CPU開銷的系統(tǒng),其特征在于所述網(wǎng)絡(luò)數(shù)據(jù)包包括以太網(wǎng)數(shù)據(jù)包、網(wǎng)絡(luò)層數(shù)據(jù)包、傳輸層數(shù)據(jù)包和應(yīng)用層數(shù)據(jù)包。
全文摘要
本發(fā)明涉及一種X86虛擬化條件下降低網(wǎng)絡(luò)I/O操作CPU開銷的系統(tǒng),包括數(shù)據(jù)緩存模塊、網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留模塊和緩存數(shù)據(jù)交換通信模塊;應(yīng)用調(diào)用數(shù)據(jù)交換通信模塊接口,將待緩存數(shù)據(jù)及其編號(hào)和特征值傳輸?shù)綌?shù)據(jù)緩存模塊;當(dāng)網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求截留模塊接收到來自網(wǎng)絡(luò)的數(shù)據(jù)包時(shí),首先提取數(shù)據(jù)包的特征值,并以特征值為索引在數(shù)據(jù)緩存模塊中查找是否有相應(yīng)匹配,若存在響應(yīng)匹配,則將數(shù)據(jù)返回,并丟棄該數(shù)據(jù)包;若不存在相應(yīng)匹配則將數(shù)據(jù)包交給上層協(xié)議處理。本發(fā)明可以有效的降低I/O虛擬化所占用的CPU開銷,提高I/O性能。
文檔編號(hào)H04L12/46GK103036759SQ201210526670
公開日2013年4月10日 申請(qǐng)日期2012年12月8日 優(yōu)先權(quán)日2012年12月8日
發(fā)明者張文博, 徐繼偉, 魏俊, 鐘華, 黃濤 申請(qǐng)人:中國(guó)科學(xué)院軟件研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
舞阳县| 乐陵市| 虎林市| 永春县| 五河县| 肃南| 大丰市| 巴青县| 青州市| 冀州市| 门源| 延安市| 昭平县| 双柏县| 潜江市| 苍山县| 和田市| 连州市| 郎溪县| 湟源县| 清河县| 永年县| 辰溪县| 抚远县| 黎平县| 墨竹工卡县| 望江县| 荔波县| 房产| 望江县| 巨野县| 沐川县| 明星| 淮南市| 孟津县| 临沭县| 南开区| 扎鲁特旗| 封丘县| 疏附县| 武义县|