亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

虛擬機(jī)的數(shù)據(jù)共享方法及裝置與流程

文檔序號(hào):11064824閱讀:442來(lái)源:國(guó)知局
虛擬機(jī)的數(shù)據(jù)共享方法及裝置與制造工藝

本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種虛擬機(jī)的數(shù)據(jù)共享方法及裝置。



背景技術(shù):

隨著通信技術(shù)的快速發(fā)展,NFV(Network Function Virtualizat-ion,網(wǎng)絡(luò)功能虛擬化)技術(shù)也日益成熟,網(wǎng)絡(luò)功能虛擬化需要提供高速的數(shù)據(jù)轉(zhuǎn)發(fā)功能,其中,包括服務(wù)器物理網(wǎng)卡間的數(shù)據(jù)轉(zhuǎn)發(fā)以及虛擬機(jī)之間的虛擬網(wǎng)卡的數(shù)據(jù)轉(zhuǎn)發(fā)。

在服務(wù)器中虛擬網(wǎng)絡(luò)的轉(zhuǎn)發(fā)功能一般通過(guò)虛擬網(wǎng)橋,或OVS(Open Virtual Switch,虛擬交換機(jī))來(lái)實(shí)現(xiàn),但是無(wú)論是虛擬網(wǎng)橋還是OVS,都是運(yùn)行在內(nèi)核態(tài),而虛擬機(jī)都是位于用戶態(tài),而虛擬機(jī)之間進(jìn)行通訊時(shí),需要經(jīng)由虛擬網(wǎng)橋或是OVS進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā),而數(shù)據(jù)在用戶態(tài)和內(nèi)核態(tài)之間轉(zhuǎn)發(fā)時(shí),需要經(jīng)過(guò)多次的拷貝,因此,這種情況下將數(shù)據(jù)從一個(gè)虛擬機(jī)發(fā)送到另一個(gè)虛擬機(jī),需要經(jīng)過(guò)多次拷貝才能進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā),導(dǎo)致虛擬機(jī)之間的數(shù)據(jù)共享效率低。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的主要目的在于提出一種虛擬機(jī)的數(shù)據(jù)共享方法及裝置,旨在解決虛擬機(jī)之間的數(shù)據(jù)共享效率低的技術(shù)問(wèn)題。

為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種虛擬機(jī)的數(shù)據(jù)共享方法,所述虛擬機(jī)的數(shù)據(jù)共享方法包括以下步驟:

第一虛擬機(jī)將第一待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中;

所述第一虛擬機(jī)獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址;

所述第一虛擬機(jī)將所述存儲(chǔ)地址信息以及所述目的物理地址封裝為第一待共享報(bào)文;

所述第一虛擬機(jī)將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送 列隊(duì)中;

其中,所述第一虛擬機(jī)將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,以供所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取所述第一待共享數(shù)據(jù),所述第一虛擬機(jī)以及所述第二虛擬機(jī)運(yùn)行于同一個(gè)宿主機(jī)內(nèi)。

優(yōu)選地,所述第一虛擬機(jī)獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址的步驟之后,所述虛擬機(jī)的數(shù)據(jù)共享方法還包括:

在所述目的物理地址獲取失敗時(shí),所述第一虛擬機(jī)將所述存儲(chǔ)地址信息封裝為第一待共享報(bào)文;

所述第一虛擬機(jī)將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中。

優(yōu)選地,所述第一虛擬機(jī)將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中的步驟之后,執(zhí)行以下步驟:

所述第一虛擬機(jī)實(shí)時(shí)或定時(shí)獲取其接收隊(duì)列中存儲(chǔ)的第二待共享報(bào)文;

在獲取到所述第二待共享報(bào)文時(shí),所述第一虛擬機(jī)提取所述第二待共享報(bào)文中的存儲(chǔ)地址信息;

所述第一虛擬機(jī)根據(jù)所述存儲(chǔ)地址信息獲取所述共享內(nèi)存中所述存儲(chǔ)地址信息對(duì)應(yīng)的第二待共享數(shù)據(jù)。

優(yōu)選地,所述第一待共享數(shù)據(jù)和/或所述第二待共享數(shù)據(jù)由多個(gè)數(shù)據(jù)包生成。

此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種虛擬機(jī)的數(shù)據(jù)共享裝置,所述虛擬機(jī)的數(shù)據(jù)共享裝置包括:

存儲(chǔ)模塊,用于將第一待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中;

第一獲取模塊,用于獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址;

第一封裝模塊,用于將所述存儲(chǔ)地址信息以及所述目的物理地址封裝為第一待共享報(bào)文;

存入模塊,用于將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中;

其中,所述存入模塊將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,以供所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取所述第一待共享數(shù)據(jù),所述數(shù)據(jù)共享裝置以及所述第二虛擬機(jī)運(yùn)行于同一個(gè)宿主機(jī)內(nèi)。

優(yōu)選地,所述虛擬機(jī)的數(shù)據(jù)共享裝置包括:

第二封裝模塊,用于在所述目的物理地址獲取失敗時(shí),將所述存儲(chǔ)地址信息封裝為第一待共享報(bào)文;

所述存入模塊,還用于將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中。

優(yōu)選地,所述虛擬機(jī)的數(shù)據(jù)共享裝置還包括:

第二獲取模塊,用于實(shí)時(shí)或定時(shí)獲取其接收隊(duì)列中存儲(chǔ)的第二待共享報(bào)文;

提取模塊,用于在獲取到所述第二待共享報(bào)文時(shí),提取所述第二待共享報(bào)文中的存儲(chǔ)地址信息;

所述第二獲取模塊,還用于根據(jù)所述存儲(chǔ)地址信息獲取所述共享內(nèi)存中所述存儲(chǔ)地址信息對(duì)應(yīng)的第二待共享數(shù)據(jù)。

優(yōu)選地,所述第一待共享數(shù)據(jù)和/或所述第二待共享數(shù)據(jù)由多個(gè)數(shù)據(jù)包生成。

本發(fā)明提出的虛擬機(jī)的數(shù)據(jù)共享方法及裝置,第一虛擬機(jī)先將第一待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中,然后獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址,并將所述存儲(chǔ)地址信息以及所述目的物理地址封裝為第一待共享報(bào)文,最后將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中,并將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,實(shí)現(xiàn)了所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取所述第一待共享數(shù)據(jù),而不是虛擬機(jī)之間進(jìn)行數(shù)據(jù)共享時(shí),要經(jīng)由虛擬網(wǎng)橋或是虛擬交換機(jī)進(jìn)行數(shù)據(jù)的拷貝轉(zhuǎn)發(fā),本方案中在內(nèi)存共享區(qū)存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)的存儲(chǔ)地址信息通知給其它虛擬機(jī),以供其它虛擬機(jī)在共享內(nèi)存中獲取所述數(shù)據(jù),從而提高了虛擬機(jī)之間的數(shù)據(jù)共享的效率。

附圖說(shuō)明

圖1為本發(fā)明虛擬機(jī)的數(shù)據(jù)共享方法第一實(shí)施例的流程示意圖;

圖2為本發(fā)明虛擬機(jī)之間共享內(nèi)存的示意圖;

圖3為本發(fā)明報(bào)文格式示意圖;

圖4為本發(fā)明虛擬機(jī)的數(shù)據(jù)共享方法第二實(shí)施例的流程示意圖;

圖5為本發(fā)明虛擬機(jī)的數(shù)據(jù)共享方法第三實(shí)施例的流程示意圖;

圖6為本發(fā)明虛擬機(jī)的數(shù)據(jù)共享裝置第一實(shí)施例的功能模塊示意圖;

圖7為本發(fā)明虛擬機(jī)的數(shù)據(jù)共享裝置第二實(shí)施例的功能模塊示意圖;

圖8為本發(fā)明虛擬機(jī)的數(shù)據(jù)共享裝置第三實(shí)施例的功能模塊示意圖。

本發(fā)明目的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。

具體實(shí)施方式

應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

本發(fā)明提供一種虛擬機(jī)的數(shù)據(jù)共享方法。

參照?qǐng)D1,圖1為本發(fā)明虛擬機(jī)的數(shù)據(jù)共享方法第一實(shí)施例的流程示意圖。

本實(shí)施例提出一種虛擬機(jī)的數(shù)據(jù)共享方法,所述虛擬機(jī)的數(shù)據(jù)共享方法包括:

步驟S10,第一虛擬機(jī)將第一待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中;

在本實(shí)施例中,應(yīng)用場(chǎng)景是同一個(gè)宿主機(jī)中的各個(gè)虛擬機(jī)進(jìn)行數(shù)據(jù)共享,而在同一個(gè)宿主機(jī)中的各個(gè)虛擬機(jī)進(jìn)行數(shù)據(jù)共享時(shí),為了減小數(shù)據(jù)拷貝轉(zhuǎn)發(fā)等操作,優(yōu)選通過(guò)內(nèi)存共享技術(shù)實(shí)現(xiàn)虛擬機(jī)之間的控制狀態(tài)傳遞和網(wǎng)絡(luò)數(shù)據(jù)的交互,即在宿主機(jī)中設(shè)置共享內(nèi)存,并將待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中,所述共享內(nèi)存用于完成虛擬機(jī)之間的數(shù)據(jù)交互和控制狀態(tài)信息交互,參照?qǐng)D2,所述共享內(nèi)存包含一個(gè)公共的數(shù)據(jù)共享區(qū),所述數(shù)據(jù)共享區(qū)用于存放虛擬機(jī)間之間的收發(fā)報(bào)文,所述共享內(nèi)存還包括一個(gè)控制狀態(tài)共享存儲(chǔ)區(qū),控制狀態(tài)共享存儲(chǔ)區(qū)主要用于虛擬機(jī)與宿主機(jī)中的數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程I/O進(jìn)程之間交 換報(bào)文描述符及狀態(tài)信息,而從虛擬機(jī)的角度來(lái)看,它細(xì)分為虛擬機(jī)到宿主機(jī)數(shù)據(jù)轉(zhuǎn)發(fā)I/O(Input/Output,輸入輸出)進(jìn)程的發(fā)送控制狀態(tài)描述區(qū)和從宿主機(jī)I/O到虛擬機(jī)的接收控制狀態(tài)描述區(qū)。進(jìn)一步地,所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程應(yīng)該包括一個(gè)或多個(gè)數(shù)據(jù)I/O線程,一般情況下,由宿主機(jī)支持的網(wǎng)絡(luò)平面數(shù)確定,一個(gè)平面對(duì)應(yīng)一個(gè)I/O線程,例如:一個(gè)宿主機(jī)的所有虛擬機(jī)如果只有控制面和數(shù)據(jù)面兩個(gè)網(wǎng)絡(luò)平面,就可以只啟動(dòng)兩個(gè)I/O線程,一個(gè)線程處理數(shù)據(jù)面的數(shù)據(jù)收發(fā),一個(gè)線程用于處理控制面的數(shù)據(jù)轉(zhuǎn)發(fā)。

步驟S20,所述第一虛擬機(jī)獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址;

步驟S30,所述第一虛擬機(jī)將所述存儲(chǔ)地址信息以及所述目的物理地址封裝為第一待共享報(bào)文;

在本實(shí)施例中,所述第一虛擬機(jī)在共享內(nèi)存中存儲(chǔ)所述第一待共享數(shù)據(jù)后,先獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址,然后,將獲取的所述存儲(chǔ)地址信息以及所述目的物理地址封裝為第一待共享報(bào)文,參照?qǐng)D3,待共享報(bào)文包括:CSD(Control-Status Discriptors,控制狀態(tài))描述符,BD(buffer Discriptors,緩沖區(qū))描述符,CSD描述符包括size報(bào)文大小、header頭指針,tail尾指針、Flags標(biāo)志位,BD包括Flags BD標(biāo)簽,len長(zhǎng)度,index索引、buf_ptr報(bào)文物理地址等等,其中,size定義了每個(gè)報(bào)文的BD數(shù),header,tail用于收發(fā)數(shù)據(jù)是標(biāo)識(shí)有數(shù)據(jù)的BD的首尾索引號(hào),而每個(gè)數(shù)據(jù)包會(huì)占用一個(gè)BD,而B(niǎo)D主要用于描述存放收發(fā)數(shù)據(jù)的緩沖區(qū)地址及收發(fā)數(shù)據(jù)的長(zhǎng)度。Flags定義了CSD的一些功能標(biāo)志,用于存放數(shù)據(jù)報(bào)文的一些特征標(biāo)志,index用于標(biāo)識(shí)BD的索引。BD中最重要的部分為buf_ptr和len,buf_ptr用于存放收發(fā)數(shù)據(jù)的緩沖區(qū)的物理地址,len為該緩沖區(qū)的數(shù)據(jù)凈荷長(zhǎng)度。

步驟S40,所述第一虛擬機(jī)將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中;

其中,所述第一虛擬機(jī)將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,以供所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取所述第一待共享數(shù)據(jù),所述第一虛擬機(jī)以及所述第二虛擬機(jī)運(yùn)行于同一個(gè)宿主機(jī)內(nèi)。

在本實(shí)施例中,所述第一虛擬機(jī)調(diào)用數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程,以將所述待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中,并且通過(guò)所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,可以理解的是,所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程運(yùn)行于用戶態(tài),即通過(guò)調(diào)用所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程進(jìn)行虛擬機(jī)之間的數(shù)據(jù)共享,可避免了數(shù)據(jù)的拷貝轉(zhuǎn)發(fā),從而提高了數(shù)據(jù)共享的效率,為更好的理解本實(shí)施例中,舉例具體應(yīng)用場(chǎng)景如下:

首先,在第一虛擬機(jī)中,第一虛擬機(jī)的虛擬網(wǎng)卡驅(qū)動(dòng)首先從共享內(nèi)存區(qū)申請(qǐng)控制狀態(tài)描述符CSD,由CSD獲得BD描述符,然后再申請(qǐng)pkt_buf地址,并將pkt_buf地址轉(zhuǎn)換成所述第一虛擬機(jī)的虛擬地址,并準(zhǔn)備要發(fā)送的第一待共享數(shù)據(jù),也就是將所述第一待共享數(shù)據(jù)拷貝到pkt_buf地址中,并填寫(xiě)len(該緩沖區(qū)的數(shù)據(jù)凈荷長(zhǎng)度),然后將pkt_buf的物理地址填寫(xiě)到BD描述符中的buf_ptr字段,封裝為第一待共享報(bào)文,完成發(fā)送數(shù)據(jù)的準(zhǔn)備工作。對(duì)于第二虛擬機(jī),在所述接收列隊(duì)中存有第一待共享報(bào)文時(shí),通過(guò)調(diào)用所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程,以調(diào)用網(wǎng)卡驅(qū)動(dòng)程序處理接收隊(duì)列的BD,首先獲取BD的buf_ptr指向的主機(jī)物理地址,并轉(zhuǎn)換成第二虛擬機(jī)的虛擬機(jī)地址,最后,獲取所述第一待共享報(bào)文以完成了虛擬機(jī)之間的通訊。

在宿主機(jī)的所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程中,數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程守護(hù)虛擬機(jī)的虛擬網(wǎng)卡的發(fā)送隊(duì)列,即所述第一虛擬機(jī)對(duì)應(yīng)的第一待共享報(bào)文,數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程依次從各隊(duì)列的tail標(biāo)簽開(kāi)始處理報(bào)文,獲取BD中的buf_prt地址,并轉(zhuǎn)換成數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程的虛擬地址,并獲取所述第一待共享報(bào)文的目的物理地址,此時(shí),根據(jù)目的物理地址查找預(yù)存的轉(zhuǎn)發(fā)表,從而提取第二虛擬機(jī)對(duì)應(yīng)的的接收隊(duì)列,并將發(fā)送隊(duì)列的buf_prt、flags、len等參數(shù)直接復(fù)制到接收隊(duì)列的buf_ptr、flags、len字段,最后將添加了參數(shù)的所述接收隊(duì)列發(fā)送給所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)。即I/O進(jìn)程從虛擬機(jī)的發(fā)送隊(duì)列收到發(fā)送的第一待共享報(bào)文后,根據(jù)目的物理地址查找轉(zhuǎn)發(fā)表,找到所述第一待共享報(bào)文的接收隊(duì)列,并將所述第一待共享報(bào)文發(fā)送到所述接收隊(duì)列,以供所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)第一待共享報(bào)文中的存儲(chǔ)地址信息獲取第一待共享數(shù)據(jù)。

本實(shí)施例提出的虛擬機(jī)的數(shù)據(jù)共享方法,第一虛擬機(jī)先將第一待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中,然后獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址,并將所述存儲(chǔ)地址信息以及所述目的物理地址封裝為 第一待共享報(bào)文,最后將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中,并將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,實(shí)現(xiàn)了所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取所述第一待共享數(shù)據(jù),而不是虛擬機(jī)之間進(jìn)行數(shù)據(jù)共享時(shí),要經(jīng)由虛擬網(wǎng)橋或是虛擬交換機(jī)進(jìn)行數(shù)據(jù)的拷貝轉(zhuǎn)發(fā),本方案中在內(nèi)存共享區(qū)存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)的存儲(chǔ)地址信息通知給其它虛擬機(jī),以供其它虛擬機(jī)在共享內(nèi)存中獲取所述數(shù)據(jù),從而提高了虛擬機(jī)之間的數(shù)據(jù)共享的效率。

進(jìn)一步地,為了提高虛擬機(jī)數(shù)據(jù)共享的靈活性,基于第一實(shí)施例提出本發(fā)明虛擬機(jī)的數(shù)據(jù)共享方法的第二實(shí)施例,在本實(shí)施例中,參照?qǐng)D4,所述步驟S20之后,所述虛擬機(jī)的數(shù)據(jù)共享方法還包括:

步驟S50,在所述目的物理地址獲取失敗時(shí),所述第一虛擬機(jī)將所述存儲(chǔ)地址信息封裝為第一待共享報(bào)文;

步驟S40,所述第一虛擬機(jī)將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中。

在本實(shí)施例中,所述第一虛擬機(jī)有可能會(huì)發(fā)送廣播第一待共享報(bào)文,或當(dāng)在第一待共享報(bào)文在轉(zhuǎn)發(fā)表中無(wú)法找到隊(duì)列,此時(shí),對(duì)所述第一待共享報(bào)文進(jìn)行特殊處理,即此時(shí)需要向每個(gè)虛擬機(jī)發(fā)送一份第一待共享報(bào)文。那么,所述虛擬機(jī)需要為其它各個(gè)虛擬機(jī)的接收隊(duì)列申請(qǐng)pkt_buf,并復(fù)制報(bào)文凈荷到所有的pkt_buf,復(fù)制len及flags到BD描述符相應(yīng)字段,同時(shí)將pkt_buf轉(zhuǎn)換成主機(jī)物理地址并填寫(xiě)到buf_ptr字段。也就是說(shuō)第一虛擬機(jī)在存儲(chǔ)數(shù)據(jù)時(shí),沒(méi)有將待共享的虛擬機(jī)的目的物理地址添加到所述第一待共享報(bào)文中,此時(shí),直接將所述存儲(chǔ)地址信息封裝為第一待共享報(bào)文,并調(diào)用數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程,以將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中,即所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程無(wú)法從所述第一待共享報(bào)文中獲取目的物理地址,那么所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程將提取的所述存儲(chǔ)地址信息發(fā)送給所述第一虛擬機(jī)對(duì)應(yīng)的宿主機(jī)內(nèi)的其它各個(gè)虛擬機(jī),即所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程將所述第一待共享報(bào)文存儲(chǔ)至其它各個(gè)虛擬機(jī)對(duì)應(yīng)的接收列隊(duì)中,以供其它各個(gè)虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取第一待共享數(shù)據(jù),以完成第一虛擬機(jī)與其它各 個(gè)虛擬機(jī)的數(shù)據(jù)共享。

進(jìn)一步地,為了提高虛擬機(jī)數(shù)據(jù)共享的靈活性,基于第一實(shí)施例提出本發(fā)明虛擬機(jī)的數(shù)據(jù)共享方法的第三實(shí)施例,在本實(shí)施例中,參照?qǐng)D5,所述步驟S40之后,所述虛擬機(jī)的數(shù)據(jù)共享方法包括:

步驟S60,所述第一虛擬機(jī)實(shí)時(shí)或定時(shí)獲取其接收隊(duì)列中存儲(chǔ)的第二待共享報(bào)文;

步驟S70,在獲取到所述第二待共享報(bào)文時(shí),所述第一虛擬機(jī)提取所述第二待共享報(bào)文中的存儲(chǔ)地址信息;

步驟S80,所述第一虛擬機(jī)根據(jù)所述存儲(chǔ)地址信息獲取所述共享內(nèi)存中所述存儲(chǔ)地址信息對(duì)應(yīng)的第二待共享數(shù)據(jù)。

在本實(shí)施例中,所述第一虛擬機(jī)獲取所述第一虛擬機(jī)中的接收隊(duì)列中存儲(chǔ)的第二待共享報(bào)文的方式包括:1)定時(shí)獲取,即用戶事先在所述宿主機(jī)中預(yù)設(shè)所述第一虛擬機(jī)獲取待共享報(bào)文的方式為定時(shí)獲取,如每隔10分鐘檢測(cè)接收列隊(duì)中是否有待共享報(bào)文。2)實(shí)時(shí)獲取,即用戶事先在所述宿主機(jī)中預(yù)設(shè)所述第一虛擬機(jī)獲取待共享報(bào)文的方式為實(shí)時(shí)獲取,那么,只要在所述第一虛擬機(jī)的接收列隊(duì)中存有待共享報(bào)文,所述第一虛擬機(jī)即可到檢測(cè)并獲取。

在獲取到所述第二待共享報(bào)文時(shí),所述第一虛擬機(jī)提取所述第二待共享報(bào)文中的存儲(chǔ)地址信息,根據(jù)所述存儲(chǔ)地址信息即可獲取所述共享內(nèi)存中所述存儲(chǔ)地址信息對(duì)應(yīng)的第二待共享數(shù)據(jù),以完成虛擬機(jī)之間的數(shù)據(jù)共享。

進(jìn)一步地,為了提高虛擬機(jī)數(shù)據(jù)共享的效率,所述第一待共享數(shù)據(jù)和/或所述第二待共享數(shù)據(jù)由多個(gè)數(shù)據(jù)包生成,即第一虛擬機(jī)在內(nèi)存共享中存儲(chǔ)待共享數(shù)據(jù)時(shí),存儲(chǔ)的數(shù)據(jù)是由多個(gè)數(shù)據(jù)包生成的,那么,數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程在檢測(cè)到所述第一和/或第二待共享報(bào)文時(shí),即可獲取各個(gè)數(shù)據(jù)包對(duì)應(yīng)的各個(gè)參數(shù),實(shí)現(xiàn)了一次性調(diào)用多個(gè)數(shù)據(jù)包,減小了每個(gè)數(shù)據(jù)包交互的平均時(shí)間,從而提高了虛擬機(jī)之間數(shù)據(jù)共享的效率。進(jìn)一步地,還可以采用較大的包長(zhǎng)來(lái)收發(fā)數(shù)據(jù),例如一般的網(wǎng)絡(luò)的MTU(Maximum Transmission Unit,最大傳輸單元長(zhǎng)度)是1500字節(jié),在實(shí)際應(yīng)用中可以采用更大的MTU來(lái)減少每包的成本,值得注意的是,它要求待共享報(bào)文收發(fā)的兩端必須采用相同的MTU,如果兩 端的MTU不匹配,可能導(dǎo)致報(bào)文碎片從而無(wú)法正常通訊。

進(jìn)一步地,根據(jù)報(bào)文的源物理地址生成或更新轉(zhuǎn)發(fā)表,即生成或更新目的物理地址與虛擬機(jī)接收隊(duì)列的對(duì)應(yīng)關(guān)系表,也就是說(shuō)I/O進(jìn)程為每個(gè)I/O線程維護(hù)一個(gè)轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)表維護(hù)目的物理地址與虛擬機(jī)接收隊(duì)列的對(duì)應(yīng)關(guān)系。

本發(fā)明進(jìn)一步提供一種虛擬機(jī)的數(shù)據(jù)共享裝置。

參照?qǐng)D6,圖6為本發(fā)明虛擬機(jī)的通訊裝置第一實(shí)施例的功能模塊示意圖。

需要強(qiáng)調(diào)的是,對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō),圖6所示功能模塊圖僅僅是一個(gè)較佳實(shí)施例的示例圖,本領(lǐng)域的技術(shù)人員圍繞圖6所示的虛擬機(jī)的數(shù)據(jù)共享裝置的功能模塊,可輕易進(jìn)行新的功能模塊的補(bǔ)充;各功能模塊的名稱是自定義名稱,僅用于輔助理解該虛擬機(jī)的數(shù)據(jù)共享裝置的各個(gè)程序功能塊,不用于限定本發(fā)明的技術(shù)方案,本發(fā)明技術(shù)方案的核心是,各自定義名稱的功能模塊所要達(dá)成的功能。

本實(shí)施例提出一種虛擬機(jī)的數(shù)據(jù)共享裝置,所述虛擬機(jī)的數(shù)據(jù)共享裝置包括:

存儲(chǔ)模塊10,用于將第一待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中;

在本實(shí)施例中,應(yīng)用場(chǎng)景是同一個(gè)宿主機(jī)中的各個(gè)虛擬機(jī)進(jìn)行數(shù)據(jù)共享,而在同一個(gè)宿主機(jī)中的各個(gè)虛擬機(jī)進(jìn)行數(shù)據(jù)共享時(shí),為了減小數(shù)據(jù)拷貝轉(zhuǎn)發(fā)等操作,優(yōu)選通過(guò)內(nèi)存共享技術(shù)實(shí)現(xiàn)虛擬機(jī)之間的控制狀態(tài)傳遞和網(wǎng)絡(luò)數(shù)據(jù)的交互,即在宿主機(jī)中設(shè)置共享內(nèi)存,所述存儲(chǔ)模塊10將待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中,所述共享內(nèi)存用于完成虛擬機(jī)之間的數(shù)據(jù)交互和控制狀態(tài)信息交互,參照?qǐng)D2,所述共享內(nèi)存包含一個(gè)公共的數(shù)據(jù)共享區(qū),所述數(shù)據(jù)共享區(qū)用于存放虛擬機(jī)間之間的收發(fā)報(bào)文,所述共享內(nèi)存還包括一個(gè)控制狀態(tài)共享存儲(chǔ)區(qū),控制狀態(tài)共享存儲(chǔ)區(qū)主要用于虛擬機(jī)與宿主機(jī)中的數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程I/O進(jìn)程之間交換報(bào)文描述符及狀態(tài)信息,而從虛擬機(jī)的角度來(lái)看,它細(xì)分為虛擬機(jī)到宿主機(jī)數(shù)據(jù)轉(zhuǎn)發(fā)I/O(Input/Output,輸入輸出)進(jìn)程的發(fā)送控制狀態(tài)描述區(qū)和從宿主機(jī)I/O到虛擬機(jī)的接收控制狀態(tài)描述區(qū)。進(jìn)一步地,所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程應(yīng)該包括一個(gè)或多個(gè)數(shù)據(jù)I/O線程,一般情況下,由宿主機(jī)支持的網(wǎng)絡(luò)平面數(shù)確定,一個(gè)平面對(duì)應(yīng)一個(gè)I/O線程,例如:一個(gè)宿主機(jī)的所有虛擬機(jī)如果只有控制面和數(shù)據(jù)面兩個(gè)網(wǎng)絡(luò)平面,就可以只啟動(dòng)兩個(gè)I/O線程,一個(gè)線程 處理數(shù)據(jù)面的數(shù)據(jù)收發(fā),一個(gè)線程用于處理控制面的數(shù)據(jù)轉(zhuǎn)發(fā)。

第一獲取模塊20,用于獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址;

第一封裝模塊30,用于將所述存儲(chǔ)地址信息以及所述目的物理地址封裝為第一待共享報(bào)文;

在本實(shí)施例中,所述存儲(chǔ)模塊10在共享內(nèi)存中存儲(chǔ)所述第一待共享數(shù)據(jù)后,所述第一獲取模塊20先獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址,然后,所述第一封裝模塊30將獲取的所述存儲(chǔ)地址信息以及所述目的物理地址封裝為第一待共享報(bào)文,參照?qǐng)D3,待共享報(bào)文包括:CSD(Control-Status Discriptors,控制狀態(tài))描述符,BD(buffer Discriptors,緩沖區(qū))描述符,CSD描述符包括size報(bào)文大小、header頭指針,tail尾指針、Flags標(biāo)志位,BD包括Flags BD標(biāo)簽,len長(zhǎng)度,index索引、buf_ptr報(bào)文物理地址等等,其中,size定義了每個(gè)報(bào)文的BD數(shù),header,tail用于收發(fā)數(shù)據(jù)是標(biāo)識(shí)有數(shù)據(jù)的BD的首尾索引號(hào),而每個(gè)數(shù)據(jù)包會(huì)占用一個(gè)BD,而B(niǎo)D主要用于描述存放收發(fā)數(shù)據(jù)的緩沖區(qū)地址及收發(fā)數(shù)據(jù)的長(zhǎng)度。Flags定義了CSD的一些功能標(biāo)志,用于存放數(shù)據(jù)報(bào)文的一些特征標(biāo)志,index用于標(biāo)識(shí)BD的索引。BD中最重要的部分為buf_ptr和len,buf_ptr用于存放收發(fā)數(shù)據(jù)的緩沖區(qū)的物理地址,len為該緩沖區(qū)的數(shù)據(jù)凈荷長(zhǎng)度。

存入模塊40,用于將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中;

其中,所述存入模塊將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,以供所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取所述第一待共享數(shù)據(jù),所述數(shù)據(jù)共享裝置以及所述第二虛擬機(jī)運(yùn)行于同一個(gè)宿主機(jī)內(nèi)。

在本實(shí)施例中,所述第一虛擬機(jī)調(diào)用數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程,以將所述待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中,并且通過(guò)所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,可以理解的是,所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程運(yùn)行于用戶態(tài),即通過(guò)調(diào)用所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程進(jìn)行虛擬機(jī)之間的數(shù)據(jù)共享,可避免了數(shù)據(jù)的拷貝轉(zhuǎn)發(fā),從而提高了數(shù)據(jù)共享的效率,為更好的理解本實(shí)施例中,舉例具體應(yīng)用場(chǎng)景如下:

首先,所述第一獲取模塊20從共享內(nèi)存區(qū)申請(qǐng)控制狀態(tài)描述符CSD,由CSD獲得BD描述符,然后再申請(qǐng)pkt_buf地址,并將pkt_buf地址轉(zhuǎn)換成所述第一虛擬機(jī)的虛擬地址,并準(zhǔn)備要發(fā)送的第一待共享數(shù)據(jù),也就是將所述第一待共享數(shù)據(jù)拷貝到pkt_buf地址中,并填寫(xiě)len(該緩沖區(qū)的數(shù)據(jù)凈荷長(zhǎng)度),然后將pkt_buf的物理地址填寫(xiě)到BD描述符中的buf_ptr字段,第一封裝模塊30封裝為第一待共享報(bào)文,完成發(fā)送數(shù)據(jù)的準(zhǔn)備工作。對(duì)于第二虛擬機(jī),在所述接收列隊(duì)中存有第一待共享報(bào)文時(shí),通過(guò)調(diào)用所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程,以調(diào)用網(wǎng)卡驅(qū)動(dòng)程序處理接收隊(duì)列的BD,首先獲取BD的buf_ptr指向的主機(jī)物理地址,并轉(zhuǎn)換成第二虛擬機(jī)的虛擬機(jī)地址,最后,獲取所述第一待共享報(bào)文以完成了虛擬機(jī)之間的通訊。

在宿主機(jī)的所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程中,數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程守護(hù)虛擬機(jī)的虛擬網(wǎng)卡的發(fā)送隊(duì)列,即所述第一虛擬機(jī)對(duì)應(yīng)的第一待共享報(bào)文,數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程依次從各隊(duì)列的tail標(biāo)簽開(kāi)始處理報(bào)文,獲取BD中的buf_prt地址,并轉(zhuǎn)換成數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程的虛擬地址,并獲取所述第一待共享報(bào)文的目的物理地址,此時(shí),根據(jù)目的物理地址查找預(yù)存的轉(zhuǎn)發(fā)表,從而提取第二虛擬機(jī)對(duì)應(yīng)的的接收隊(duì)列,并將發(fā)送隊(duì)列的buf_prt、flags、len等參數(shù)直接復(fù)制到接收隊(duì)列的buf_ptr、flags、len字段,最后將添加了參數(shù)的所述接收隊(duì)列發(fā)送給所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)。即I/O進(jìn)程從虛擬機(jī)的發(fā)送隊(duì)列收到發(fā)送的第一待共享報(bào)文后,根據(jù)目的物理地址查找轉(zhuǎn)發(fā)表,找到所述第一待共享報(bào)文的接收隊(duì)列,并將所述第一待共享報(bào)文發(fā)送到所述接收隊(duì)列,以供所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)第一待共享報(bào)文中的存儲(chǔ)地址信息獲取第一待共享數(shù)據(jù)。

本實(shí)施例提出的虛擬機(jī)的數(shù)據(jù)共享裝置,第一虛擬機(jī)先將第一待共享數(shù)據(jù)存儲(chǔ)到共享內(nèi)存中,然后獲取所述第一待共享數(shù)據(jù)的存儲(chǔ)地址信息以及待共享的目的物理地址,并將所述存儲(chǔ)地址信息以及所述目的物理地址封裝為第一待共享報(bào)文,最后將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中,并將所述第一待共享報(bào)文存儲(chǔ)至所述目的物理地址對(duì)應(yīng)的接收列隊(duì)中,實(shí)現(xiàn)了所述目的物理地址對(duì)應(yīng)的第二虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取所述第一待共享數(shù)據(jù),而不是虛擬機(jī)之間進(jìn)行數(shù)據(jù)共享時(shí),要經(jīng)由虛擬網(wǎng)橋或是虛擬交換機(jī)進(jìn)行數(shù)據(jù)的拷貝轉(zhuǎn)發(fā),本方案中在內(nèi)存共享區(qū)存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)的存儲(chǔ)地址信息通知給其它虛擬機(jī),以供 其它虛擬機(jī)在共享內(nèi)存中獲取所述數(shù)據(jù),從而提高了虛擬機(jī)之間的數(shù)據(jù)共享的效率。

進(jìn)一步地,為了提高虛擬機(jī)數(shù)據(jù)共享的靈活性,基于第一實(shí)施例提出本發(fā)明虛擬機(jī)的數(shù)據(jù)共享裝置的第二實(shí)施例,在本實(shí)施例中,參照?qǐng)D7,所述虛擬機(jī)的數(shù)據(jù)共享裝置包括:

第二封裝模塊50,用于在所述目的物理地址獲取失敗時(shí),將所述存儲(chǔ)地址信息封裝為第一待共享報(bào)文;

所述存入模塊40,還用于將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中。

在本實(shí)施例中,所述數(shù)據(jù)共享裝置有可能會(huì)發(fā)送廣播第一待共享報(bào)文,或當(dāng)在第一待共享報(bào)文在轉(zhuǎn)發(fā)表中無(wú)法找到隊(duì)列,此時(shí),對(duì)所述第一待共享報(bào)文進(jìn)行特殊處理,即此時(shí)需要向每個(gè)虛擬機(jī)發(fā)送一份第一待共享報(bào)文。那么,所述第二封裝模塊50需要為其它各個(gè)虛擬機(jī)的接收隊(duì)列申請(qǐng)pkt_buf,并復(fù)制報(bào)文凈荷到所有的pkt_buf,復(fù)制len及flags到BD描述符相應(yīng)字段,同時(shí)將pkt_buf轉(zhuǎn)換成主機(jī)物理地址并填寫(xiě)到buf_ptr字段。也就是說(shuō)第一虛擬機(jī)在存儲(chǔ)數(shù)據(jù)時(shí),沒(méi)有將待共享的虛擬機(jī)的目的物理地址添加到所述第一待共享報(bào)文中,此時(shí),所述第二封裝模塊50直接將所述存儲(chǔ)地址信息封裝為第一待共享報(bào)文,所述存入模塊40調(diào)用數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程,以將所述第一待共享報(bào)文存入所述第一虛擬機(jī)對(duì)應(yīng)的發(fā)送列隊(duì)中,即所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程無(wú)法從所述第一待共享報(bào)文中獲取目的物理地址,那么所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程將提取的所述存儲(chǔ)地址信息發(fā)送給所述第一虛擬機(jī)對(duì)應(yīng)的宿主機(jī)內(nèi)的其它各個(gè)虛擬機(jī),即所述數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程將所述第一待共享報(bào)文存儲(chǔ)至其它各個(gè)虛擬機(jī)對(duì)應(yīng)的接收列隊(duì)中,以供其它各個(gè)虛擬機(jī)根據(jù)所述第一待共享報(bào)文中的存儲(chǔ)地址信息獲取第一待共享數(shù)據(jù),以完成第一虛擬機(jī)與其它各個(gè)虛擬機(jī)的數(shù)據(jù)共享。

進(jìn)一步地,為了提高虛擬機(jī)數(shù)據(jù)共享的靈活性,基于第一實(shí)施例提出本發(fā)明虛擬機(jī)的數(shù)據(jù)共享裝置的第三實(shí)施例,在本實(shí)施例中,參照?qǐng)D8,所述虛擬機(jī)的數(shù)據(jù)共享裝置還包括:

第二獲取模塊60,用于實(shí)時(shí)或定時(shí)獲取其接收隊(duì)列中存儲(chǔ)的第二待共享 報(bào)文;

提取模塊70,用于在獲取到所述第二待共享報(bào)文時(shí),提取所述第二待共享報(bào)文中的存儲(chǔ)地址信息;

所述第二獲取模塊60,還用于根據(jù)所述存儲(chǔ)地址信息獲取所述共享內(nèi)存中所述存儲(chǔ)地址信息對(duì)應(yīng)的第二待共享數(shù)據(jù)。

在本實(shí)施例中,所述第二獲取模塊60獲取所述第一虛擬機(jī)中的接收隊(duì)列中存儲(chǔ)的待共享報(bào)文的方式包括:,1)定時(shí)獲取,即用戶事先在所述宿主機(jī)中預(yù)設(shè)所述第一虛擬機(jī)獲取待共享報(bào)文的方式為定時(shí)獲取,如每隔10分鐘檢測(cè)接收列隊(duì)中是否有待共享報(bào)文。2)實(shí)時(shí)獲取,即用戶事先在所述宿主機(jī)中預(yù)設(shè)所述第一虛擬機(jī)獲取待共享報(bào)文的方式為實(shí)時(shí)獲取,那么,只要在所述第一虛擬機(jī)的接收列隊(duì)中存有待共享報(bào)文,所述第一虛擬機(jī)即可到檢測(cè)。

在所述第二獲取模塊60獲取到所述第二待共享報(bào)文時(shí),所述提取模塊70提取所述第二待共享報(bào)文中的存儲(chǔ)地址信息,所述第二獲取模塊60根據(jù)所述存儲(chǔ)地址信息即可獲取所述共享內(nèi)存中所述存儲(chǔ)地址信息對(duì)應(yīng)的第二待共享數(shù)據(jù),以完成虛擬機(jī)之間的數(shù)據(jù)共享。

進(jìn)一步地,為了提高虛擬機(jī)數(shù)據(jù)共享的效率,所述第一待共享數(shù)據(jù)和/或所述第二待共享數(shù)據(jù)由多個(gè)數(shù)據(jù)包生成,即第一虛擬機(jī)在內(nèi)存共享中存儲(chǔ)待共享數(shù)據(jù)時(shí),存儲(chǔ)的數(shù)據(jù)是由多個(gè)數(shù)據(jù)包生成的,那么,數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程在檢測(cè)到所述第一和/或第二待共享報(bào)文時(shí),即可獲取各個(gè)數(shù)據(jù)包對(duì)應(yīng)的各個(gè)參數(shù),實(shí)現(xiàn)了一次性調(diào)用多個(gè)數(shù)據(jù)包,減小了每個(gè)數(shù)據(jù)包交互的平均時(shí)間,從而提高了虛擬機(jī)之間數(shù)據(jù)共享的效率。進(jìn)一步地,還可以采用較大的包長(zhǎng)來(lái)收發(fā)數(shù)據(jù),例如一般的網(wǎng)絡(luò)的MTU(Maximum Transmission Unit,最大傳輸單元長(zhǎng)度)是1500字節(jié),在實(shí)際應(yīng)用中可以采用更大的MTU來(lái)減少每包的成本,值得注意的是,它要求待共享報(bào)文收發(fā)的兩端必須采用相同的MTU,如果兩端的MTU不匹配,可能導(dǎo)致報(bào)文碎片從而無(wú)法正常通訊。

進(jìn)一步地,根據(jù)報(bào)文的源物理地址生成或更新轉(zhuǎn)發(fā)表,即生成或更新目的物理地址與虛擬機(jī)接收隊(duì)列的對(duì)應(yīng)關(guān)系表,也就是說(shuō)I/O進(jìn)程為每個(gè)I/O線程維護(hù)一個(gè)轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)表維護(hù)目的物理地址與虛擬機(jī)接收隊(duì)列的對(duì)應(yīng)關(guān)系。

需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其它變體 意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒(méi)有明確列出的其它要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。

上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。

以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1