專利名稱:用于低開銷數(shù)據(jù)傳輸?shù)姆椒ê拖到y(tǒng)的制作方法
用于低開銷數(shù)據(jù)傳輸?shù)姆椒ê拖到y(tǒng)
背景技術(shù):
常規(guī)地,在計(jì)算機(jī)相關(guān)領(lǐng)域中,網(wǎng)絡(luò)是配置成彼此通信的物理計(jì)算機(jī)系統(tǒng)的布置。 在一些情況中,物理計(jì)算機(jī)系統(tǒng)包括虛擬機(jī),該虛擬機(jī)也可以配置成與網(wǎng)絡(luò)交互(即,與網(wǎng) 絡(luò)中的其他物理計(jì)算機(jī)和/或虛擬計(jì)算機(jī)通信)。存在很多不同類型的網(wǎng)絡(luò),且網(wǎng)絡(luò)可以基 于網(wǎng)絡(luò)的各個(gè)方面分類,諸如通過規(guī)模、連接方法、網(wǎng)絡(luò)中計(jì)算機(jī)系統(tǒng)的功能關(guān)系和/或網(wǎng) 絡(luò)拓?fù)?。在連接方法方面,網(wǎng)絡(luò)可以廣義地分為有線(使用諸如以太網(wǎng)線纜的有形連接媒 介)或無線(使用諸如無線電波的無形連接媒介)。不同連接方法也可以組合在單個(gè)網(wǎng)絡(luò) 中。例如,有線網(wǎng)絡(luò)可以擴(kuò)展為允許裝置無線地連接到網(wǎng)絡(luò)。然而,諸如路由器、交換機(jī)和 服務(wù)器的核心網(wǎng)絡(luò)組件一般使用物理布線連接。以太網(wǎng)是電子和電氣工程師協(xié)會(huì)(IEEE) 內(nèi)限定的802. 3標(biāo)準(zhǔn),由802. 3工作組監(jiān)督管理。為了形成有線網(wǎng)絡(luò),計(jì)算機(jī)系統(tǒng)必須彼此物理連接。S卩,物理布線(例如以太網(wǎng)線 纜)的端部必須物理連接到形成網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)中的網(wǎng)絡(luò)接口卡。為了重新配置網(wǎng)絡(luò) (例如,為了更換服務(wù)器或者改變網(wǎng)絡(luò)拓?fù)?,物理布線其中的一個(gè)或多個(gè)必須從計(jì)算機(jī)系 統(tǒng)斷開且連接到不同的計(jì)算機(jī)系統(tǒng)。而且,當(dāng)在網(wǎng)絡(luò)中的計(jì)算機(jī)之間傳輸數(shù)據(jù)時(shí),一個(gè)或多個(gè)網(wǎng)絡(luò)協(xié)議常用于幫助確 保數(shù)據(jù)被成功傳輸。例如,網(wǎng)絡(luò)協(xié)議可以使用校驗(yàn)和、小數(shù)據(jù)分組、確認(rèn)以及其他數(shù)據(jù)完整 性特征來幫助避免數(shù)據(jù)丟失或數(shù)據(jù)傳輸期間的破壞。在(多個(gè))網(wǎng)絡(luò)協(xié)議中需要的數(shù)據(jù)完 整性特征的量一般依賴于被傳輸?shù)臄?shù)據(jù)的類型以及計(jì)算機(jī)系統(tǒng)之間的(多個(gè))連接的質(zhì)量。
發(fā)明內(nèi)容
一般地,在一個(gè)方面中,本發(fā)明涉及一種用于低開銷數(shù)據(jù)傳輸?shù)姆椒?。該方法?括由第一應(yīng)用啟動(dòng)與第二應(yīng)用的傳輸通信協(xié)議(TCP)連接,其中第一應(yīng)用在第一虛擬機(jī) 中在第一計(jì)算機(jī)上運(yùn)行,第二應(yīng)用在第二虛擬機(jī)中在第二計(jì)算機(jī)上運(yùn)行,且第一計(jì)算機(jī)和 第二計(jì)算機(jī)位于機(jī)柜中且通過機(jī)柜互連通信;響應(yīng)于所述啟動(dòng),建立第一應(yīng)用和第二應(yīng)用 之間的TCP連接;判斷第一計(jì)算機(jī)和第二計(jì)算機(jī)位于所述機(jī)柜中;由第一應(yīng)用向第二應(yīng)用 提供預(yù)發(fā)布緩存信息,其中所述預(yù)發(fā)布緩存信息對(duì)應(yīng)于第一計(jì)算機(jī)的物理存儲(chǔ)器中的位 置,且其中物理存儲(chǔ)器中的該位置對(duì)應(yīng)于第一應(yīng)用的虛擬存儲(chǔ)器地址;以及使用預(yù)發(fā)布緩 存信息由第二應(yīng)用向第一應(yīng)用傳輸數(shù)據(jù),其中傳輸數(shù)據(jù)包含直接向第一計(jì)算機(jī)的物理存儲(chǔ) 器中的位置寫入數(shù)據(jù)。一般地,在一個(gè)方面中,本發(fā)明涉及一種系統(tǒng)。該系統(tǒng)包含機(jī)柜互連以及運(yùn)行在第 一虛擬機(jī)中的第一計(jì)算機(jī)上的第一應(yīng)用以及運(yùn)行在第二虛擬機(jī)中的第二計(jì)算機(jī)上的第二 應(yīng)用,其中第一計(jì)算機(jī)和第二計(jì)算機(jī)位于機(jī)柜中且通過機(jī)柜互連通信,其中第一應(yīng)用被配 置成啟動(dòng)與第二應(yīng)用的傳輸通信協(xié)議(TCP)連接,其中響應(yīng)于所述啟動(dòng),在第一應(yīng)用和第 二應(yīng)用之間建立所述TCP連接,其中第一應(yīng)用被配置成在第一應(yīng)用被判斷為在與第二應(yīng)用相同的機(jī)柜上運(yùn)行之后向第二應(yīng)用提供預(yù)發(fā)布緩存信息,其中所述預(yù)發(fā)布緩存信息對(duì)應(yīng)于 第一計(jì)算機(jī)的物理存儲(chǔ)器中的位置且其中物理存儲(chǔ)器中的所述位置對(duì)應(yīng)于第一應(yīng)用的虛 擬存儲(chǔ)器地址,并且其中第二應(yīng)用使用預(yù)發(fā)布緩存信息向第一應(yīng)用傳輸數(shù)據(jù),其中傳輸數(shù) 據(jù)包含直接向第一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置寫入數(shù)據(jù)?!愕?,在一個(gè)方面中,本發(fā)明涉及一種例如在計(jì)算機(jī)可讀介質(zhì)上實(shí)施的程序產(chǎn) 品,該程序產(chǎn)品包含用于低開銷數(shù)據(jù)傳輸?shù)亩鄠€(gè)可執(zhí)行指令,其中該多個(gè)可執(zhí)行指令包含 用于以下目的的指令由第一應(yīng)用啟動(dòng)與第二應(yīng)用的傳輸通信協(xié)議(TCP)連接,其中第一 應(yīng)用在第一虛擬機(jī)中在第一計(jì)算機(jī)上運(yùn)行,第二應(yīng)用在第二虛擬機(jī)中在第二計(jì)算機(jī)上運(yùn) 行,且第一計(jì)算機(jī)和第二計(jì)算機(jī)位于機(jī)柜中且通過機(jī)柜互連通信;響應(yīng)于所述啟動(dòng),建立第 一應(yīng)用和第二應(yīng)用之間的TCP連接;判斷第一計(jì)算機(jī)和第二計(jì)算機(jī)位于所述機(jī)柜中;由第 一應(yīng)用向第二應(yīng)用提供預(yù)發(fā)布緩存信息,其中所述預(yù)發(fā)布緩存信息對(duì)應(yīng)于第一計(jì)算機(jī)的物 理存儲(chǔ)器中的位置,且其中物理存儲(chǔ)器中的該位置對(duì)應(yīng)于第一應(yīng)用的虛擬存儲(chǔ)器地址;以 及使用預(yù)發(fā)布緩存信息由第二應(yīng)用向第一應(yīng)用傳輸數(shù)據(jù),其中傳輸數(shù)據(jù)包含直接向第一計(jì) 算機(jī)的物理存儲(chǔ)器中的位置寫入數(shù)據(jù)。本發(fā)明的其他方面將從下面的說明和所附權(quán)利要求顯現(xiàn)。
圖1示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的刀片機(jī)柜的示圖。圖2示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的刀片的示圖。圖3示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的網(wǎng)絡(luò)直通管理器的示圖。圖4示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的虛擬機(jī)的示圖。圖5示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的用于創(chuàng)建虛擬網(wǎng)絡(luò)路徑的方法的流 程圖。圖6A-6C示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的創(chuàng)建虛擬網(wǎng)絡(luò)路徑的示例。圖7-8示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的用于低開銷數(shù)據(jù)傳輸?shù)姆椒ǖ牧?程圖。圖9示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的低開銷數(shù)據(jù)傳輸?shù)氖纠?
具體實(shí)施例方式參考附圖,現(xiàn)在將僅作為示例詳細(xì)描述本發(fā)明的特定實(shí)施例。出于一致性,各個(gè)附 圖中相似的元件由相似的附圖標(biāo)記指示。在下面的本發(fā)明的實(shí)施例的詳細(xì)描述中,提出了各種特定細(xì)節(jié)以提供本發(fā)明的更 徹底的理解。然而,對(duì)于本領(lǐng)域技術(shù)人員而言,很明顯,本發(fā)明可以不使用這些特定細(xì)節(jié)實(shí) 踐。在其他實(shí)例中,并不詳細(xì)描述公知的特性以避免使得說明書不必要地復(fù)雜化。一般而言,本發(fā)明的實(shí)施例提供用于低開銷數(shù)據(jù)傳輸?shù)姆椒ê拖到y(tǒng)。更具體而言, 本發(fā)明的實(shí)施例提供用于使得在公共刀片機(jī)柜內(nèi)的刀片上執(zhí)行的兩個(gè)應(yīng)用能夠使用低開 銷數(shù)據(jù)傳輸通信的方法和系統(tǒng)。而且,本發(fā)明的實(shí)施例提供使得兩個(gè)應(yīng)用參與零拷貝握手 且然后使用低開銷數(shù)據(jù)傳輸進(jìn)行通信的方法和系統(tǒng)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,VNIC經(jīng)由機(jī)柜互連彼此連接。尤其是,VNIC可以是虛擬網(wǎng)絡(luò)路徑的節(jié)點(diǎn),該虛擬網(wǎng)絡(luò)路徑包括用于經(jīng)由機(jī)柜互連發(fā)射網(wǎng)絡(luò)流量的“虛擬 線路”。虛擬線路的概念在稍后詳細(xì)討論。圖1示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的刀片機(jī)柜(100)的示圖。刀片機(jī)柜 (100)包括與機(jī)柜互連(106)耦合通信的多個(gè)刀片(例如,刀片A(102)、刀片B(104))。例 如,刀片機(jī)柜(100)可以是Sun微系統(tǒng)公司的Sun Blade 6048機(jī)柜、IBMBladeCenter 機(jī)柜、惠普公司的HP BladeSystem機(jī)箱或者任意其他類型的刀片機(jī)柜。刀片可以是與刀片 機(jī)柜(100)兼容的任意(多種)類型。BladeCenter 是總部設(shè)在紐約Armonk的國(guó)際 商業(yè)機(jī)器公司(IBM)的注冊(cè)商標(biāo)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,刀片配置成經(jīng)由機(jī)柜互連(106)彼此通信。因 而,刀片機(jī)柜(100)允許刀片之間的通信而無需刀片之間的傳統(tǒng)網(wǎng)絡(luò)線路(諸如以太網(wǎng) 線纜)。例如,依賴于刀片機(jī)柜(100)的類型,機(jī)柜互連(106)可以是外圍部件互連直通 (PCI-E)底板,且刀片可以配置成經(jīng)由PCI-E端點(diǎn)彼此通信。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)意識(shí)到, 其他連接技術(shù)可用于連接刀片和刀片機(jī)柜。繼續(xù)圖1的討論,為了與刀片機(jī)柜(100)外部的客戶端通信,刀片配置成共享物理 網(wǎng)絡(luò)接口(110)。物理網(wǎng)絡(luò)接口(110)包括一個(gè)或多個(gè)網(wǎng)絡(luò)端口(例如以太網(wǎng)端口),且提 供刀片機(jī)柜(100)與刀片機(jī)柜(100)所連接的網(wǎng)絡(luò)(即,刀片機(jī)柜(100)外部的互連計(jì)算 機(jī)系統(tǒng))之間的接口。刀片機(jī)柜(100)例如可以使用多個(gè)網(wǎng)絡(luò)端口連接到多個(gè)網(wǎng)絡(luò)。在一個(gè)或多個(gè)實(shí)施例中,物理網(wǎng)絡(luò)接口(110)通過網(wǎng)絡(luò)直通管理器(108)管理。具 體而言,網(wǎng)絡(luò)直通管理器(108)配置成管理刀片對(duì)于物理網(wǎng)絡(luò)接口(110)的訪問。網(wǎng)絡(luò)直 通管理器(108)還可以配置成以稍后詳細(xì)討論的方式管理刀片自身之間的內(nèi)部通信。網(wǎng)絡(luò) 直通管理器(108)可以是硬件、軟件和/或包括用于管理網(wǎng)絡(luò)流量的可執(zhí)行邏輯的固件的 任意組合。圖2示出了根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的刀片(200)的示圖?!暗镀痹诩夹g(shù) 方面指的是位于刀片機(jī)柜(例如圖1的刀片機(jī)柜(100))中的計(jì)算機(jī)系統(tǒng)。刀片典型地比 分立計(jì)算機(jī)系統(tǒng)或常規(guī)服務(wù)器包含更少的組件。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,也可以 使用全特征的分立計(jì)算機(jī)系統(tǒng)或常規(guī)服務(wù)器來代替刀片或者與刀片一起使用。一般而言, 刀片機(jī)柜中的刀片各包括一個(gè)或多個(gè)處理器和相關(guān)存儲(chǔ)器(例如RAM、R0M等)。刀片還可 以包括存儲(chǔ)裝置(例如,硬盤和/或光盤驅(qū)動(dòng))和很多現(xiàn)今計(jì)算機(jī)系統(tǒng)(未示出)常見的 其他元件和功能,諸如鍵盤、鼠標(biāo)和/或諸如監(jiān)視器的輸出裝置。上述組件其中一個(gè)或多個(gè) 可以被位于刀片機(jī)柜中的多個(gè)刀片到共享。例如,多個(gè)刀片可以共享單個(gè)輸出設(shè)備。繼續(xù)圖2的討論,刀片(200)包括配置成運(yùn)行一個(gè)或多個(gè)虛擬機(jī)(例如,虛擬機(jī) C (202),虛擬機(jī)D (204))的主機(jī)操作系統(tǒng)(未示出)。廣義地說,虛擬機(jī)是配置成經(jīng)由抽象層 繼承主機(jī)操作系統(tǒng)的底層功能性的不同的操作環(huán)境。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,每 個(gè)虛擬機(jī)包括操作系統(tǒng)的單獨(dú)的實(shí)例(例如操作系統(tǒng)實(shí)例C (206)、操作系統(tǒng)實(shí)例D (208))。 例如,Xen 虛擬化項(xiàng)目允許在一個(gè)主機(jī)操作系統(tǒng)中執(zhí)行多個(gè)來賓操作系統(tǒng)。Xen 是 Xen項(xiàng)目顧問委員會(huì)管理的商標(biāo)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,主機(jī)操作系統(tǒng)支持虛 擬運(yùn)行環(huán)境。虛擬運(yùn)行環(huán)境的一個(gè)示例是Solaris 容器。在這種情況下,Solaris 容器 可以在主機(jī)操作系統(tǒng)中運(yùn)行,該主機(jī)操作系統(tǒng)可以是Solaris 操作系統(tǒng)。Solaris 是Sim 微系統(tǒng)公司的商標(biāo)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,主機(jī)操作系統(tǒng)可以包括虛擬機(jī)和虛擬運(yùn)行環(huán)境。存在很多不同類型的虛擬機(jī)和虛擬運(yùn)行環(huán)境。而且,虛擬機(jī)可以包括很多不同類 型的功能性,諸如交換機(jī)、路由器、防火墻、負(fù)載均衡器、應(yīng)用服務(wù)器、任意其他類型的支持 網(wǎng)絡(luò)的服務(wù)或其任意組合。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,虛擬機(jī)和/或虛擬運(yùn)行環(huán)境經(jīng)由VNIC (例如 VNIC C(210), VNIC DQ12))從主機(jī)操作系統(tǒng)繼承網(wǎng)絡(luò)連接性。對(duì)于虛擬機(jī)和虛擬運(yùn)行環(huán) 境,VNIC看成是物理OTC。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,VNIC的使用允許任意數(shù)目的 虛擬機(jī)和/或虛擬運(yùn)行環(huán)境共享刀片(200)的聯(lián)網(wǎng)功能性。而且,在本發(fā)明的一個(gè)或多個(gè) 實(shí)施例中,每個(gè)虛擬機(jī)和/或虛擬運(yùn)行環(huán)境可以與任意數(shù)目的VNIC相關(guān)聯(lián),由此提高在可 用于虛擬機(jī)和/或虛擬運(yùn)行環(huán)境的聯(lián)網(wǎng)功能性的類型方面的的靈活性。例如,虛擬機(jī)可以 使用一個(gè)VNIC來用于輸入的網(wǎng)絡(luò)流量,且使用另一 VNIC來用于輸出的網(wǎng)絡(luò)流量。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的VNIC在Nicolas G. Droux, Erik Nordmark和 Sunay Tripathi 等人名下的名為“Multiple VirtualNetwork Stack Instances using Virtual Network Interface Cards”的共同所有的美國(guó)專利申請(qǐng)No. 11/489,942中詳細(xì) 描述,此處通過引用結(jié)合其全部?jī)?nèi)容作為參考。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的VNIC 還在 Sunay Tripathi,Tim P. Marsland 和 Nicolas G. Droux 等人名下的名為 “Method and System for Controlling Virtual Machine Bandwidth” 的共同所有的美國(guó)專利申請(qǐng) No. 11/480,000中詳細(xì)描述,此處通過引用結(jié)合其全部?jī)?nèi)容作為參考。如上面所討論,每個(gè)刀片的聯(lián)網(wǎng)功能性(以及通過擴(kuò)展,通過VNIC繼承的聯(lián)網(wǎng)功 能性)包括對(duì)于共享物理網(wǎng)絡(luò)接口的訪問以及經(jīng)由機(jī)柜互連與其他刀片的通信。圖3示出 根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的網(wǎng)絡(luò)直通管理器(300)的示圖。網(wǎng)絡(luò)直通管理器(300) 配置成從/向位于刀片中的VNIC路由網(wǎng)絡(luò)流量。尤其是,網(wǎng)絡(luò)直通管理器(300)包括虛擬 交換表(302),該交換表包括VNIC標(biāo)識(shí)符(304)到機(jī)柜互連中的VNIC位置(306)的映射。 在一個(gè)或多個(gè)實(shí)施例中,VNIC標(biāo)識(shí)符(304)是因特網(wǎng)協(xié)議(IP)地址,且VNIC位置(306)是 與刀片相關(guān)聯(lián)的PCI-E端點(diǎn)(例如,如果機(jī)柜互連是PCI-E底板)。備選地,可以使用其他 路由機(jī)制。在一個(gè)或多個(gè)實(shí)施例中,網(wǎng)絡(luò)直通管理器(300)配置成經(jīng)由物理網(wǎng)絡(luò)接口接收網(wǎng) 絡(luò)流量且使用虛擬交換表(302)將網(wǎng)絡(luò)流量路由到適當(dāng)位置(例如VNIC所處的位置)。而 且,網(wǎng)絡(luò)直通管理器(300)可以配置成在位于在刀片機(jī)柜中的不同VNIC之間路由網(wǎng)絡(luò)流 量。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,以這種方式使用虛擬交換表(30 有利于包括虛擬 線路的虛擬網(wǎng)絡(luò)路徑的創(chuàng)建。因而,使用虛擬交換表(302),位于不同刀片中的虛擬機(jī)可以 互連以形成任意虛擬網(wǎng)絡(luò)拓?fù)?,其中與每個(gè)虛擬機(jī)相關(guān)聯(lián)的VNIC不需要知道其他VNIC的 物理位置。而且,如果虛擬機(jī)從一個(gè)刀片遷移到另一刀片,虛擬物理拓?fù)淇梢酝ㄟ^更新虛擬 交換表(302)被保留以反映相應(yīng)VNIC的新物理位置(例如,不同的PCI-E端點(diǎn))。在一些情形中,來自一個(gè)VNIC的網(wǎng)絡(luò)流量的目的地可能是位于相同刀片中但與 不同虛擬機(jī)相關(guān)聯(lián)的VNIC。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,虛擬交換機(jī)可用于路由VNIC 之間的網(wǎng)絡(luò)流量,而與刀片機(jī)柜無關(guān)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的虛擬交換機(jī)在 Nicolas G. Droux, Sunay Tripathi 和 Erik Nordmark 名下的名為"VirtualSwitch” 的共 同所有的美國(guó)專利申請(qǐng)No. 11/480,261中詳細(xì)討論,此處通過引用結(jié)合其全部?jī)?nèi)容作為參考。例如,圖4示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的虛擬交換機(jī)G00)的示圖。虛 擬交換機(jī)(400)提供在與虛擬機(jī)X相關(guān)的VNIC X(406)以及與虛擬機(jī)Y(404)相關(guān)的VNIC Y(408)之間的連接。在一個(gè)或多個(gè)實(shí)施例中,虛擬機(jī)(400)通過其中布置虛擬機(jī)X(402)和 虛擬機(jī)Υ(404)的主機(jī)操作系統(tǒng)(410)管理。具體而言,主機(jī)操作系統(tǒng)(410)可以配置成識(shí) 別目標(biāo)為相同刀片中的VNIC的網(wǎng)絡(luò)流量,且使用虛擬交換機(jī)(400)將流量路由到VNIC。在 本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,虛擬交換機(jī)(400)可以通過避免不必要的來回傳輸?shù)木W(wǎng)絡(luò) 流量減小刀片機(jī)柜和網(wǎng)絡(luò)直通管理器的使用。圖5示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例用于創(chuàng)建虛擬網(wǎng)絡(luò)路徑的方法的流程 圖。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,圖5中示出的步驟其中的一個(gè)或多個(gè)可以被忽略、重 復(fù)和/或以不同順序執(zhí)行。相應(yīng)地,本發(fā)明的實(shí)施例不應(yīng)認(rèn)為限制于圖5中示出的特定步
驟布置。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,在步驟502中,為多個(gè)虛擬機(jī)實(shí)例化VNIC。如上 所述,虛擬機(jī)位于刀片中。而且,虛擬機(jī)各自可以與一個(gè)或多個(gè)VNIC相關(guān)。在本發(fā)明的一 個(gè)或多個(gè)實(shí)施例中,實(shí)例化VNIC涉及在存儲(chǔ)器中裝載VNIC對(duì)象且向主機(jī)操作系統(tǒng)(即宿 有與VNIC相關(guān)的虛擬機(jī)的操作系統(tǒng))登記VNIC對(duì)象。登記VNIC對(duì)象建立了主機(jī)操作系 統(tǒng)聯(lián)網(wǎng)功能性與VNIC提供的抽象層之間的接口。此后,當(dāng)主機(jī)操作系統(tǒng)接收尋址到VNIC 的網(wǎng)絡(luò)流量時(shí),主機(jī)操作系統(tǒng)將網(wǎng)絡(luò)流量轉(zhuǎn)發(fā)到VNIC。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的 VNIC的實(shí)例化在上面通過引用結(jié)合于此的美國(guó)專利申請(qǐng)11/489,942中詳細(xì)討論。如上面所討論,單個(gè)刀片可以包括配置成彼此通信的多個(gè)虛擬機(jī)。在本發(fā)明的一 個(gè)或多個(gè)實(shí)施例中,在步驟504,虛擬交換機(jī)實(shí)例化為促進(jìn)虛擬機(jī)之間的通信。如上所述,虛 擬交換機(jī)允許VNIC之間的通信,而與機(jī)柜互連無關(guān)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的虛 擬交換機(jī)的實(shí)例化在上面通過引用結(jié)合于此的美國(guó)專利申請(qǐng)11/480,261中詳細(xì)討論。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,在步驟506,填充虛擬交換表。如上所述,虛擬交 換表可以位于配置成管理流入到虛擬機(jī)且從虛擬機(jī)流出的網(wǎng)絡(luò)流量的網(wǎng)絡(luò)直通管理器中。 填充虛擬交換表涉及將VNIC標(biāo)識(shí)符(例如,因特網(wǎng)協(xié)議和/或介質(zhì)訪問控制(MAC)地址) 與VNIC位置(例如PCI-E端口 )相關(guān)聯(lián)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,響應(yīng)于經(jīng)由控 制操作系統(tǒng)(即,包括功能性以控制網(wǎng)絡(luò)直通管理器的操作系統(tǒng))發(fā)布的用戶命令而填充 虛擬交換表。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,VNIC包括用于控制網(wǎng)絡(luò)包的處理的設(shè)置。在本 發(fā)明的一個(gè)或多個(gè)實(shí)施例中,在步驟508,根據(jù)聯(lián)網(wǎng)策略,設(shè)置被分配給VNIC。使用VNIC中 的設(shè)置,可以強(qiáng)加很多不同類型的聯(lián)網(wǎng)策略。例如,設(shè)置可用于向一個(gè)或多個(gè)VNIC提供刀 片可用帶寬的特定部分。作為另一示例,設(shè)置可用于將VNIC的使用限制于特定類型的網(wǎng)絡(luò) 流量,諸如IP電話(VoIP)或傳輸控制協(xié)議/IP (TCP/IP)。而且,用于虛擬網(wǎng)絡(luò)路徑中的多 個(gè)VNIC的設(shè)置可以相同。例如,虛擬網(wǎng)絡(luò)路徑中的VNIC可以具有相同的帶寬限制,由此允 許一致數(shù)據(jù)流經(jīng)過虛擬網(wǎng)絡(luò)路徑。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,網(wǎng)絡(luò)直通管理器配置 成向VNIC發(fā)送所需設(shè)置。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,一旦VNIC被實(shí)例化且虛擬交換表被填充,網(wǎng)絡(luò) 流量可以從一個(gè)刀片中的VNIC發(fā)送到另一刀片中的VNIC。兩個(gè)VNIC之間的連接可以被認(rèn)為是“虛擬線路”,因?yàn)樵摬贾孟藢?duì)于諸如以太網(wǎng)線纜的常規(guī)網(wǎng)絡(luò)布線的需要。在經(jīng)過 一個(gè)虛擬線路的網(wǎng)絡(luò)流量與經(jīng)過另一虛擬線路的網(wǎng)絡(luò)流量隔離的意義上說,虛擬線路功能 類似于物理線路,甚至網(wǎng)絡(luò)流量可以經(jīng)過相同的刀片(即,使用位于刀片中的相同的虛擬 機(jī)或不同虛擬機(jī))。而且,兩個(gè)或更多虛擬線路的組合可以被認(rèn)為是“虛擬網(wǎng)絡(luò)路徑”。具體而言,在虛 擬網(wǎng)絡(luò)路徑上發(fā)射網(wǎng)絡(luò)流量涉及使得網(wǎng)絡(luò)流量路由通過第一虛擬線路(步驟510),且然后 通過第二虛擬線路(步驟512)。例如,當(dāng)經(jīng)由物理網(wǎng)絡(luò)接口從客戶端接收網(wǎng)絡(luò)流量時(shí),一個(gè) 虛擬線路可以位于物理網(wǎng)絡(luò)接口和VNIC之間,且第二虛擬線路可以位于VNIC和另一 VNIC 之間。圖6A-6C示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例用于創(chuàng)建虛擬網(wǎng)絡(luò)路徑的示例。具 體而言,圖6A示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的實(shí)際拓?fù)?600)的示圖,圖6B示出網(wǎng) 絡(luò)流量可以如何通過實(shí)際拓?fù)?600)路由,且圖6C示出如圖6B所示通過路由網(wǎng)絡(luò)流量創(chuàng) 建的虛擬網(wǎng)絡(luò)拓?fù)?640)。圖6A-6C僅以示例提供,且不應(yīng)解讀為限制本發(fā)明的范圍。首先參考圖6A,實(shí)際拓?fù)?600)包括多個(gè)虛擬機(jī)。具體而言,實(shí)際拓?fù)?600)包 括路由器(602)、防火墻(604)、應(yīng)用服務(wù)器M(606)以及應(yīng)用服務(wù)器N(608),它們中的每一 個(gè)在分離的虛擬機(jī)上運(yùn)行。虛擬機(jī)位于與機(jī)柜互連(62 通信耦合的刀片中且包括經(jīng)由 VNIC(即 VNIC H(610),VNIC J(612),VNIC K(614),VNIC M(618)和 VNIC N(620))由刀片 提供的聯(lián)網(wǎng)功能性。為了說明的簡(jiǎn)便性,在示圖中不包括刀片本身。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,路由器(602)、防火墻(604)、應(yīng)用服務(wù)器 M(606)和應(yīng)用服務(wù)器N(608)均位于分離的刀片中。備選地,如上所述,刀片可以包括多個(gè) 虛擬機(jī)。例如,路由器(60 和防火墻(604)位于單個(gè)刀片中。而且,每個(gè)虛擬機(jī)可以與圖 6A中示出的VNIC的數(shù)目不同數(shù)目的VNIC相關(guān)聯(lián)。繼續(xù)圖6A的討論,網(wǎng)絡(luò)直通管理器(624)配置成管理流入或流出虛擬機(jī)的網(wǎng)絡(luò) 流量。而且,網(wǎng)絡(luò)直通管理器(624)配置成管理對(duì)于物理網(wǎng)絡(luò)接口(626)的訪問,該物理 網(wǎng)絡(luò)接口用于與客戶端0(628)和客戶端P(630)通信。在圖6A中,虛擬機(jī)、VNIC、機(jī)柜互 連(622)、網(wǎng)絡(luò)直通管理器(6 )以及物理網(wǎng)絡(luò)接口(626)全都位于機(jī)柜互連內(nèi)。客戶端 0(628)和客戶端P (630)位于機(jī)柜互連所連接的一個(gè)或多個(gè)網(wǎng)絡(luò)(未示出)中。圖6B示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,網(wǎng)絡(luò)流量可以如何路由通過實(shí)際拓 撲陽(yáng)00)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,利用虛擬交換表(634)由網(wǎng)絡(luò)直通管理器 (624)執(zhí)行路由。如上面所討論,路由進(jìn)入或輸出VNIC的網(wǎng)絡(luò)流量可以被認(rèn)為流過“虛擬線路”。例 如,圖6B示出位于應(yīng)用服務(wù)器M(606)和應(yīng)用服務(wù)器N(608)之間的虛擬線路(632)。為了 使用該虛擬線路,應(yīng)用服務(wù)器M(606)經(jīng)由VNIC M(618)發(fā)送網(wǎng)絡(luò)包。網(wǎng)絡(luò)包被尋址到與應(yīng) 用服務(wù)器N(608)相關(guān)的VNIC N(620)。網(wǎng)絡(luò)直通管理器(624)經(jīng)由機(jī)柜互連(622)接收 網(wǎng)絡(luò)包,檢測(cè)該網(wǎng)絡(luò)包,且使用虛擬交換表(634)判斷目標(biāo)VNIC位置。如果在虛擬交換表 (634)中沒有發(fā)現(xiàn)該目標(biāo)VNIC位置,則該網(wǎng)絡(luò)包可被丟棄。在該示例中,目標(biāo)VNIC位置是 VNIC N(620)所位于的刀片。網(wǎng)絡(luò)直通管理器(624)將該網(wǎng)絡(luò)包路由到目標(biāo)VNIC位置,且 應(yīng)用服務(wù)器N(608)經(jīng)由VNICN(620)接收該網(wǎng)絡(luò)包,由此結(jié)束虛擬線路(632)。在本發(fā)明的 一個(gè)或多個(gè)實(shí)施例中,虛擬線路(632)還可用于在相反的方向,即從應(yīng)用服務(wù)器N(608)到應(yīng)用服務(wù)器M(606)發(fā)送網(wǎng)絡(luò)流量。而且,如上面所討論,多個(gè)虛擬線路可以組合以形成“虛擬網(wǎng)絡(luò)路徑”。例如,圖6B 示出虛擬網(wǎng)絡(luò)路徑R(636),其從客戶端0流出,通過路由器(602),通過防火墻(604),且終 止在應(yīng)用服務(wù)器M(606)。具體而言,虛擬網(wǎng)絡(luò)路徑R(636)包括下面的虛擬線路。一虛擬線 路位于物理網(wǎng)絡(luò)接口(626)和VNIC H(610)之間。另一虛擬線路位于VNIC J (612)和VNIC K(614)之間。又一虛擬線路位于VNIC L(616)和VNIC M(618)之間。如果路由器(602)和 防火墻(604)位于相同的刀片中,則虛擬交換機(jī)可以代替VNIC J(612)和VNIC K(614)之 間的虛擬線路,由此消除用于在路由器(60 和防火墻(604)之間通信的機(jī)柜互連的使用。類似地,圖6B示出虛擬網(wǎng)絡(luò)路徑S(638),其從客戶端P(630)流出,通過路由器 (602)且終止在應(yīng)用服務(wù)器N(608)。虛擬網(wǎng)絡(luò)路徑S包括物理網(wǎng)絡(luò)接口(626)和VNIC H(610)之間的虛擬線路以及VNIC J(612)和VNIC N(620)之間的虛擬線路。虛擬網(wǎng)絡(luò)路徑 R(636)和虛擬網(wǎng)絡(luò)路徑S(638)之間的差異示意了多個(gè)虛擬網(wǎng)絡(luò)路徑如何位于相同的刀片 機(jī)柜中。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,針對(duì)每個(gè)虛擬網(wǎng)絡(luò)路徑分別應(yīng)用VNIC設(shè)置。例 如,不同的帶寬限制可用于虛擬網(wǎng)絡(luò)路徑R(636)和虛擬網(wǎng)絡(luò)路徑S(638)。因而,虛擬網(wǎng) 絡(luò)路徑可以被認(rèn)為是包括很多與常規(guī)網(wǎng)絡(luò)路徑(例如以太網(wǎng)線纜)相同的特征,盡管常規(guī) 網(wǎng)絡(luò)線路在刀片機(jī)柜中并不使用。然而,在機(jī)柜外,例如在物理網(wǎng)絡(luò)接口(626)與客戶端 0(628)和/或客戶端P(630)之間,可能仍需要常規(guī)網(wǎng)絡(luò)線路。圖6C示出從使用如圖6B所示的虛擬網(wǎng)絡(luò)路徑R (636)、虛擬網(wǎng)絡(luò)路徑S (638)和虛 擬線路(63 得出的虛擬網(wǎng)絡(luò)拓?fù)?640)的示圖。虛擬網(wǎng)絡(luò)拓?fù)?640)允許各種網(wǎng)絡(luò)組件 (即,路由器(602)、防火墻(604)、應(yīng)用服務(wù)器M(606)、應(yīng)用服務(wù)器N(608)、客戶端0(628) 和客戶端P(630))以類似于常規(guī)有線網(wǎng)絡(luò)的方式交互。然而,如上面所討論,位于刀片機(jī)柜 內(nèi)的組件(即,路由器(602)、防火墻(604)、應(yīng)用服務(wù)器M(606)和應(yīng)用服務(wù)器N(608))之 間的通信無需使用常規(guī)網(wǎng)絡(luò)線路實(shí)現(xiàn)。在本發(fā)明的一個(gè)實(shí)施例中,使用傳輸控制協(xié)議(TCP)和因特網(wǎng)協(xié)議(IP),可以在 刀片機(jī)柜中不同刀片上運(yùn)行的虛擬機(jī)之間傳輸數(shù)據(jù)。而且,可以使用低開銷數(shù)據(jù)傳輸方式 在虛擬機(jī)之間傳輸數(shù)據(jù)。尤其是,數(shù)據(jù)可以直接從一個(gè)刀片上的物理存儲(chǔ)器傳輸?shù)搅硪坏?片上的物理存儲(chǔ)器。更具體而言,虛擬機(jī)(或其中執(zhí)行的應(yīng)用)可以建立與另一虛擬機(jī)的TCP連接,且 然后,使用TCP連接執(zhí)行零拷貝握手。在本發(fā)明的一個(gè)實(shí)施例中,零拷貝握手涉及判斷虛擬 機(jī)是否能夠使用低開銷數(shù)據(jù)傳輸通信且虛擬機(jī)(或其中運(yùn)行的應(yīng)用)是否希望使用低開銷 數(shù)據(jù)傳輸來傳輸數(shù)據(jù)。在本發(fā)明的一個(gè)實(shí)施例中,虛擬機(jī)可以使用TCP/IP上的數(shù)據(jù)傳輸與 使用低開銷數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸?shù)慕M合來通信。在本發(fā)明的一個(gè)實(shí)施例中,通過允許來自與發(fā)送應(yīng)用(在第一虛擬機(jī)上運(yùn)行)相 關(guān)聯(lián)的虛擬存儲(chǔ)器的數(shù)據(jù)直接傳輸?shù)浇邮諔?yīng)用(在第二虛擬機(jī)上運(yùn)行)的虛擬存儲(chǔ)器來實(shí) 現(xiàn)低開銷數(shù)據(jù)傳輸,其中第一應(yīng)用在第一刀片上運(yùn)行且第二應(yīng)用在第二刀片上運(yùn)行。在本 發(fā)明的一個(gè)實(shí)施例中,必須在數(shù)據(jù)傳輸之前提供傳輸所用的目標(biāo)虛擬存儲(chǔ)器地址。如果接 收應(yīng)用在來賓操作系統(tǒng)(在虛擬機(jī)中運(yùn)行)上運(yùn)行,該來賓操作系統(tǒng)在主機(jī)操作系統(tǒng)中運(yùn) 行,則接收應(yīng)用必須向發(fā)送應(yīng)用(或相關(guān)進(jìn)程)提供物理存儲(chǔ)器地址(對(duì)應(yīng)于與接收應(yīng)用相關(guān)聯(lián)的虛擬存儲(chǔ)器)以用于將數(shù)據(jù)傳輸?shù)降木彺妗H欢?,接收?yīng)用僅能夠提供用于接收 應(yīng)用的虛擬存儲(chǔ)器地址。該虛擬機(jī)存儲(chǔ)器地址必須轉(zhuǎn)換一次或更多次以獲得底層物理存儲(chǔ) 器地址。轉(zhuǎn)換處理在下面的圖7中描述。一旦完成了轉(zhuǎn)換,物理存儲(chǔ)器地址(以及任何其 他必要信息)被提供到發(fā)送應(yīng)用(或相關(guān)處理)以進(jìn)行低開銷數(shù)據(jù)傳輸,如圖8所述。圖7示出在使用低開銷數(shù)據(jù)傳輸?shù)膽?yīng)用之前用于為應(yīng)用預(yù)發(fā)布(pre-posting)緩 存的方法的流程圖。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,如圖7所示的步驟其中的一個(gè)或多 個(gè)可以省略、重復(fù)和/或以與圖7示出的順序不同的順序進(jìn)行。相應(yīng)地,本發(fā)明的實(shí)施例不 應(yīng)解讀為限制為圖7中示出的特定步驟布置。在步驟700,應(yīng)用指定預(yù)發(fā)布緩存地址。在本發(fā)明的一個(gè)實(shí)施例中,預(yù)發(fā)布緩存地 址是與該應(yīng)用相關(guān)的虛擬存儲(chǔ)器中的虛擬存儲(chǔ)器地址。在本發(fā)明的一個(gè)實(shí)施例中,預(yù)發(fā)布 緩存地址可以指容量大于1MB的緩存。在步驟702,來賓操作系統(tǒng)接收且轉(zhuǎn)換預(yù)發(fā)布緩存地 址為來賓OS虛擬存儲(chǔ)器地址。在本發(fā)明的一個(gè)實(shí)施例中,來賓OS虛擬存儲(chǔ)器地址是與來 賓操作系統(tǒng)相關(guān)的虛擬存儲(chǔ)器中的虛擬存儲(chǔ)器地址。在步驟704,來賓操作系統(tǒng)向主機(jī)操作系統(tǒng)提供來賓OS虛擬存儲(chǔ)器地址。在步驟 706,主機(jī)操作系統(tǒng)接收且轉(zhuǎn)換來賓OS虛擬存儲(chǔ)器地址為主機(jī)OS虛擬存儲(chǔ)器地址。基于主 機(jī)虛擬存儲(chǔ)器地址,操作系統(tǒng)可以判斷對(duì)應(yīng)于主機(jī)OS虛擬存儲(chǔ)器地址的底層物理存儲(chǔ)器 地址。對(duì)應(yīng)于主機(jī)OS虛擬存儲(chǔ)器地址的物理存儲(chǔ)器地址是對(duì)應(yīng)于該預(yù)發(fā)布緩存地址的相 同物理存儲(chǔ)器地址。在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)操作系統(tǒng)告知來賓操作系統(tǒng)該預(yù)發(fā)布緩存地址已 經(jīng)被成功預(yù)發(fā)布。來賓操作系統(tǒng)進(jìn)而可以告知應(yīng)用該預(yù)發(fā)布緩存地址已經(jīng)被成功預(yù)發(fā)布。 另外,主機(jī)操作系統(tǒng)可以保持轉(zhuǎn)換的物理地址和任意其他相關(guān)信息(總稱為“預(yù)發(fā)布緩存 fn 息)ο在此階段,該應(yīng)用現(xiàn)在可以參與低開銷數(shù)據(jù)傳輸。更具體而言,該應(yīng)用可以使用低 開銷數(shù)據(jù)傳輸來接收數(shù)據(jù)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)意識(shí)到,對(duì)于給定應(yīng)用,圖7可以重復(fù)多 次,以使得應(yīng)用預(yù)發(fā)布在低開銷數(shù)據(jù)傳輸中使用的多個(gè)緩存。而且,如果其他應(yīng)用也使用圖 7示出的方法預(yù)發(fā)布緩存,則應(yīng)用還可以使用低開銷數(shù)據(jù)傳輸向另一應(yīng)用發(fā)送數(shù)據(jù)。圖8示出啟動(dòng)和使用低開銷數(shù)據(jù)傳輸?shù)姆椒ǖ牧鞒虉D。在本發(fā)明的一個(gè)或多個(gè)實(shí) 施例中,如圖8所示的步驟其中的一個(gè)或多個(gè)可以省略、重復(fù)和/或以與圖8示出的順序不 同的順序進(jìn)行。因此,本發(fā)明的實(shí)施例不應(yīng)解讀為限制為圖8中示出的特定步驟布置。在步驟800,應(yīng)用A試圖發(fā)起與應(yīng)用B的TCP連接。在本發(fā)明的一個(gè)實(shí)施例中,應(yīng) 用A提供分配給其上運(yùn)行應(yīng)用B的虛擬機(jī)(或者分配給與該虛擬機(jī)相關(guān)的VNIC)的IP地 址。另外,應(yīng)用A還可以提供端口號(hào)。在步驟802,來賓OS內(nèi)核響應(yīng)于來自應(yīng)用A的啟動(dòng)TCP連接的請(qǐng)求,創(chuàng)建套接字A。 在本發(fā)明的一個(gè)實(shí)施例中,套接字A是IP端口號(hào)對(duì)所標(biāo)識(shí)的內(nèi)核層進(jìn)程,且是配置成與應(yīng) 用A和在主機(jī)操作系統(tǒng)(其上運(yùn)行來賓OS)上運(yùn)行的VNIC接口的通信端點(diǎn)。在步驟804, TCP連接通過套接字A啟動(dòng)。在步驟806,套接字B應(yīng)答該連接請(qǐng)求且建立TCP連接。在步驟808,啟動(dòng)零拷貝握手。在本發(fā)明的一個(gè)實(shí)施例中,零拷貝握手是一種數(shù)據(jù) 交換,其設(shè)計(jì)為確立兩個(gè)應(yīng)用是否可以使用低開銷數(shù)據(jù)傳輸來傳輸數(shù)據(jù)。在本發(fā)明的一個(gè) 實(shí)施例中,在應(yīng)用A向應(yīng)用B發(fā)送一個(gè)或多個(gè)請(qǐng)求以判斷應(yīng)用A和應(yīng)用B是否可以使用低開銷數(shù)據(jù)傳輸來傳輸數(shù)據(jù)時(shí),啟動(dòng)零拷貝握手。在本發(fā)明的一個(gè)實(shí)施例中,所述請(qǐng)求可以包 括在TCP SYN包中放置特定標(biāo)記。在本發(fā)明的一個(gè)實(shí)施例中,代替啟動(dòng)零拷貝握手的應(yīng)用,在各個(gè)主機(jī)操作系統(tǒng) (見下面的圖9)上運(yùn)行的VNCI可以啟動(dòng)且隨后進(jìn)行零拷貝握手。在這種情況下,在TCP連 接的啟動(dòng)之前,應(yīng)用之一或二者已經(jīng)指示它們能夠使用低開銷數(shù)據(jù)傳輸來傳輸數(shù)據(jù)且已經(jīng) 執(zhí)行了圖7中示出的方法以獲得預(yù)發(fā)布緩存信息。在步驟810,作為零拷貝握手的一部分,判斷應(yīng)用A和應(yīng)用B是否通過本地TCP連 接相連。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)應(yīng)用A和應(yīng)用B在相同刀片機(jī)柜內(nèi)的刀片上運(yùn)行時(shí), 應(yīng)用A和應(yīng)用B通過本地TCP連接相連。如果應(yīng)用A和應(yīng)用B通過本地TCP連接相連,則 處理前進(jìn)到步驟812。否則,處理前進(jìn)到步驟820。在步驟820,應(yīng)用A和應(yīng)用B使用TCP/ IP通信。在步驟812,作為零拷貝握手的一部分,判斷應(yīng)用B是否希望參與低開銷數(shù)據(jù)傳 輸。在本發(fā)明的一個(gè)實(shí)施例中,這種判斷可以包括以下判斷其中任一 (i)應(yīng)用B將使用低 開銷數(shù)據(jù)傳輸向應(yīng)用A發(fā)送數(shù)據(jù)但是將僅經(jīng)由TCP/IP從應(yīng)用A接收數(shù)據(jù);以及(ii)應(yīng)用 B將使用低開銷數(shù)據(jù)傳輸向應(yīng)用A發(fā)送數(shù)據(jù)且應(yīng)用B將使用低開銷數(shù)據(jù)傳輸從應(yīng)用A接收 數(shù)據(jù)。如果應(yīng)用B希望參與低開銷數(shù)據(jù)傳輸,則處理前進(jìn)到步驟814。否則,處理前進(jìn)到步 驟820 ( S卩,應(yīng)用B不希望參與上述方案任意一個(gè))。在本發(fā)明的一個(gè)實(shí)施例中,通過TCP連 接執(zhí)行零拷貝握手。在步驟814,應(yīng)用B被提供以應(yīng)用A的預(yù)發(fā)布緩存信息。在步驟816,取決于步驟 812中的判斷,應(yīng)用A可以被提供以應(yīng)用B的預(yù)發(fā)布緩存信息。在本發(fā)明的一個(gè)實(shí)施例中, 在步驟814和步驟816中傳輸?shù)男畔⑼ㄟ^TCP連接傳遞。在步驟818,應(yīng)用A和應(yīng)用B參與 低開銷數(shù)據(jù)傳輸。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,從應(yīng)用A到應(yīng)用B的低開銷數(shù)據(jù)傳輸例如使用 直接存儲(chǔ)器訪問(DMA)操作,其中DMA操作使用應(yīng)用B的預(yù)發(fā)布緩存信息作為輸入。本領(lǐng) 域技術(shù)人員將意識(shí)到,其他寫操作(例如RDMA)可用于直接從一個(gè)物理存儲(chǔ)器位置向不同 刀片上的另一物理存儲(chǔ)器寫入數(shù)據(jù)。在本發(fā)明的一個(gè)實(shí)施例中,由在各個(gè)主機(jī)操作系統(tǒng)上運(yùn)行(或管理)的DMA(或 DRMA)引擎執(zhí)行低開銷傳輸。而且,因?yàn)閿?shù)據(jù)傳輸直接從一個(gè)刀片到另一刀片,數(shù)據(jù)傳輸不 需要與諸如TCP的其他傳輸協(xié)議相關(guān)的附加處理開銷。而且,在本發(fā)明的一個(gè)實(shí)施例中,低 開銷數(shù)據(jù)傳輸可以使用機(jī)柜互連的底層錯(cuò)誤檢測(cè)和校正功能來以確保數(shù)據(jù)以非破壞方式 傳輸。在本發(fā)明的一個(gè)實(shí)施例中,一旦來自應(yīng)用B的數(shù)據(jù)使用低開銷數(shù)據(jù)傳輸被傳輸?shù)?應(yīng)用A,應(yīng)用A被通知數(shù)據(jù)的存在。在本發(fā)明的一個(gè)實(shí)施例中,應(yīng)用A從運(yùn)行它的來賓操作 系統(tǒng)接收通知。而且,該來賓操作系統(tǒng)被運(yùn)行它的主機(jī)操作系統(tǒng)通知。最后,主機(jī)操作系統(tǒng) 被應(yīng)用B、運(yùn)行應(yīng)用B的來賓操作系統(tǒng)或者運(yùn)行上述來賓操作系統(tǒng)(或其上運(yùn)行的進(jìn)程)的 主機(jī)操作系統(tǒng)通知。在本發(fā)明的一個(gè)實(shí)施例中,應(yīng)用A和應(yīng)用B可以使用TCP/IP和低開銷數(shù)據(jù)傳輸二 者通信。例如,TCP/IP可用于某一類型(例如特定文件格式的所有文件)和/或小于某一 大小的所有通信,且低開銷數(shù)據(jù)傳輸可用于另一類型和/或大于某一大小的所有通信。
圖9示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的低開銷數(shù)據(jù)傳輸?shù)氖纠?。圖9僅用 于示例性目的且不應(yīng)解讀為限制本發(fā)明的范圍。參考圖9,刀片A(900)和刀片B(902)各 自通信地耦合到機(jī)柜互連(912)。刀片A(900)中的應(yīng)用A(908)被配置成經(jīng)由使用套接字 A(918)和套接字B(920)作為端點(diǎn)的TCP連接與刀片B(902)中的應(yīng)用B(910)通信。具體 而言,套接字A (918)被配置成通過VNIC A (926) ,VNIC B (928)和機(jī)柜互連(912)向套接字 B(902)傳輸數(shù)據(jù)。而且,應(yīng)用A(908)在來賓OS A(未示出)上的虛擬機(jī)A(904)中運(yùn)行,且 應(yīng)用B (910)在來賓OS B (未示出)上的虛擬機(jī)B (906)中運(yùn)行。基于上述內(nèi)容,考慮應(yīng)用A(908)和應(yīng)用B(910)各自執(zhí)行了圖7所述的方法以產(chǎn) 生緩存預(yù)發(fā)布信息的場(chǎng)景。更具體而言,應(yīng)用A(908)在應(yīng)用A虛擬存儲(chǔ)器(VM) (914)中分 配預(yù)發(fā)布緩存A(未示出)。與預(yù)發(fā)布緩存A相關(guān)的虛擬存儲(chǔ)器地址然后被轉(zhuǎn)換成來賓操 作系統(tǒng)VM(922)地址。來賓操作系統(tǒng)VM(922)地址然后由主機(jī)操作系統(tǒng)A(930)轉(zhuǎn)換以從 主機(jī)VM(934)獲得對(duì)應(yīng)于底層物理存儲(chǔ)器地址的主機(jī)VM地址。針對(duì)應(yīng)用B執(zhí)行類似的過 程,且使用應(yīng)用B VM(916)且轉(zhuǎn)換成來賓操作系統(tǒng)VM(924)地址且最后轉(zhuǎn)換成對(duì)應(yīng)于主機(jī) VM(936)中的主機(jī)VM地址的底層物理存儲(chǔ)器地址。使用上述預(yù)發(fā)布緩存信息,根據(jù)本發(fā)明的一個(gè)實(shí)施例,應(yīng)用可以按照以下方式通 信。具體而言,應(yīng)用A(908)被配置成請(qǐng)求與應(yīng)用B(910)的TCP連接以用于傳輸數(shù)據(jù)。套 接字A (918)經(jīng)由VNIC A (926)至VNIC B (928)啟動(dòng)與套接字B (920)的TCP連接。一旦建立TCP連接,就進(jìn)行零拷貝握手。具體而言,VNIC A(926)做出應(yīng)用A(908) 和應(yīng)用B (910)通過本地TCP連接相連的判斷。做出應(yīng)用B (910)將使用低開銷數(shù)據(jù)傳輸向 應(yīng)用A(908)發(fā)送數(shù)據(jù)且應(yīng)用B(910)將使用低開銷數(shù)據(jù)傳輸從應(yīng)用A(908)接收數(shù)據(jù)的另 一判斷。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,VNIC A(926)然后將應(yīng)用A的預(yù)發(fā)布緩存信息 傳送到VNIC B (928)且VNIC B (928)將應(yīng)用B的預(yù)發(fā)布緩存信息傳送到VNIC A(926) 0兩 個(gè)應(yīng)用然后可以使用低開銷數(shù)據(jù)傳輸來傳輸數(shù)據(jù)。在本發(fā)明的一個(gè)實(shí)施例中,來自應(yīng)用B(910)的數(shù)據(jù)使用RDMA引擎?zhèn)鬏斍覒?yīng)用A 的預(yù)發(fā)布緩存信息被直接傳輸?shù)綉?yīng)用A的VM(914),其中RDMA引擎位于刀片B (902)中且由 VNIC B (928)管理。在傳輸之前,VNIC A可以將從VNIC B接收的物理存儲(chǔ)器中的位置與應(yīng) 用A相關(guān)的允許地址范圍進(jìn)行比較以判斷數(shù)據(jù)是否可以被傳輸?shù)筋A(yù)發(fā)布緩存信息指定的 存儲(chǔ)器中的位置。如果VNIC A接收的物理存儲(chǔ)器中的位置處于允許地址范圍之外,則傳輸 被拒絕。本發(fā)明的實(shí)施例還可用于通過使用本發(fā)明的實(shí)施例來傳輸數(shù)據(jù)應(yīng)用以在虛擬機(jī) (例如,虛擬機(jī)A (904)和虛擬機(jī)B (906))之間傳輸數(shù)據(jù)。例如,參考圖9,從應(yīng)用A (908)向 應(yīng)用B(910)發(fā)送數(shù)據(jù)。應(yīng)用A(908)可以通過到VNIC A(926)的連接傳輸數(shù)據(jù)。根據(jù)本發(fā) 明的實(shí)施例,VNIC A(926)獲得用于虛擬機(jī)B(906)的預(yù)發(fā)布緩存且隨后例如使用RDMA引 擎直接將數(shù)據(jù)傳輸?shù)教摂M來賓OSB VM(924) 0當(dāng)接收時(shí),數(shù)據(jù)被拷貝到應(yīng)用B VM(916)。在 這種情形中,與應(yīng)用相對(duì),虛擬機(jī)知道使用低開銷數(shù)據(jù)傳輸來傳輸數(shù)據(jù)的能力。然而,應(yīng)用 則不知道這種功能性。而且,在該場(chǎng)景中,應(yīng)用不需要包括預(yù)發(fā)布緩存的功能性。而是,虛 擬機(jī)需要包括預(yù)發(fā)布緩存的功能性。本領(lǐng)域技術(shù)人員將意識(shí)到,盡管使用刀片來描述本發(fā)明,本發(fā)明可以擴(kuò)展為與非
14刀片的其他計(jì)算機(jī)系統(tǒng)一起使用。具體而言,本發(fā)明可以擴(kuò)展到至少包括存儲(chǔ)器、處理器以 及物理連接到和通過機(jī)柜互連通信的機(jī)制的任意計(jì)算機(jī)。這種計(jì)算機(jī)的示例包括但不限于 多處理器服務(wù)器、網(wǎng)絡(luò)電器以及輕量化計(jì)算裝置(例如,僅包括存儲(chǔ)器、處理器、物理連接 到且通過機(jī)柜互連通信的機(jī)制)以及使得上述組件實(shí)現(xiàn)交互的必要硬件。而且,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)意識(shí)到,如果非刀片的一個(gè)或多個(gè)計(jì)算機(jī)不用于實(shí)現(xiàn) 本發(fā)明,則可以使用適當(dāng)?shù)臋C(jī)柜來代替刀片機(jī)柜。包含軟件指令的計(jì)算機(jī)程序產(chǎn)品可以執(zhí)行本發(fā)明的實(shí)施例。軟件指令可以存儲(chǔ)在 諸如光盤(CD)、磁盤、磁帶或任意其他計(jì)算機(jī)可讀存儲(chǔ)裝置的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。盡管參考有限數(shù)目的實(shí)施例描述了本發(fā)明,在獲知本公開的益處之后,本領(lǐng)域技 術(shù)人員將意識(shí)到可以設(shè)計(jì)其他實(shí)施例而不偏離此處公開的本發(fā)明的范圍。因此,本發(fā)明的 范圍僅由所附權(quán)利要求限定。
權(quán)利要求
1.一種用于低開銷數(shù)據(jù)傳輸?shù)姆椒?,包含由第一?yīng)用啟動(dòng)與第二應(yīng)用的傳輸通信協(xié)議(TCP)連接,其中第一應(yīng)用在第一虛擬機(jī) 中在第一計(jì)算機(jī)上運(yùn)行,第二應(yīng)用在第二虛擬機(jī)中在第二計(jì)算機(jī)上運(yùn)行,且第一計(jì)算機(jī)和 第二計(jì)算機(jī)位于機(jī)柜中且通過機(jī)柜互連通信;響應(yīng)于所述啟動(dòng),建立第一應(yīng)用和第二應(yīng)用之間的TCP連接;判斷所述第一計(jì)算機(jī)和所述第二計(jì)算機(jī)位于所述機(jī)柜中;由第一應(yīng)用向第二應(yīng)用提供預(yù)發(fā)布緩存信息,其中所述預(yù)發(fā)布緩存信息對(duì)應(yīng)于第一計(jì) 算機(jī)的物理存儲(chǔ)器中的位置,且其中物理存儲(chǔ)器中的該位置對(duì)應(yīng)于第一應(yīng)用的虛擬存儲(chǔ)器 地址;以及使用預(yù)發(fā)布緩存信息由第二應(yīng)用向第一應(yīng)用傳輸數(shù)據(jù),其中傳輸數(shù)據(jù)包含直接向第一 計(jì)算機(jī)的物理存儲(chǔ)器中的位置寫入數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,還包含產(chǎn)生預(yù)發(fā)布信息,其中產(chǎn)生預(yù)發(fā)布信息包含在與第一應(yīng)用相關(guān)的虛擬存儲(chǔ)器中分配虛擬存儲(chǔ)器地址;向運(yùn)行第一應(yīng)用的來賓操作系統(tǒng)(0 提供虛擬存儲(chǔ)器地址,其中該來賓OS在第一虛 擬機(jī)中運(yùn)行;轉(zhuǎn)換虛擬存儲(chǔ)器地址以獲得與來賓操作系統(tǒng)相關(guān)的來賓OS虛擬存儲(chǔ)器地址;向其上運(yùn)行來賓操作系統(tǒng)的主機(jī)操作系統(tǒng)提供來賓OS虛擬存儲(chǔ)器地址;轉(zhuǎn)換所述虛擬機(jī)存儲(chǔ)器地址以獲得與主機(jī)操作系統(tǒng)相關(guān)的主機(jī)OS虛擬存儲(chǔ)器地址, 其中該主機(jī)OS虛擬存儲(chǔ)器地址對(duì)應(yīng)于第一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置。
3.根據(jù)權(quán)利要求1或權(quán)利要求2所述的方法,其中該預(yù)發(fā)布信息通過TCP連接被提供 且該預(yù)發(fā)布信息被提供到第一虛擬網(wǎng)絡(luò)接口卡(VNIC)。
4.根據(jù)權(quán)利要求3所述的方法,其中該第一VNIC被配置成將從第二 VNIC接收的物理 存儲(chǔ)器中的位置與第一應(yīng)用相關(guān)的允許地址范圍進(jìn)行比較以判斷數(shù)據(jù)是否可以被發(fā)送到 所述物理存儲(chǔ)器中的所述位置,其中該第一 VNIC位于第一計(jì)算機(jī)上。
5.根據(jù)前述權(quán)利要求其中任一項(xiàng)所述的方法,其中該第二應(yīng)用向位于第二計(jì)算機(jī)上的 第二虛擬網(wǎng)絡(luò)接口卡(VNIC)提供與所述TCP連接相關(guān)的物理存儲(chǔ)器的位置。
6.根據(jù)權(quán)利要求5所述的方法,其中傳輸數(shù)據(jù)包含使用遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)和第一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置,由第二 VNIC向第一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置寫入數(shù)據(jù)。
7.根據(jù)權(quán)利要求5或6所述的方法,其中第一VNIC和第二 VNIC是虛擬網(wǎng)絡(luò)路徑中的 節(jié)點(diǎn),其中所述虛擬網(wǎng)絡(luò)路徑包含第一 VNIC和第二 VNIC之間的第一虛擬線路。
8.根據(jù)權(quán)利要求5所述的方法,其中第二虛擬機(jī)被配置成從第一虛擬機(jī)向第一計(jì)算機(jī) 的物理存儲(chǔ)器中的位置直接傳輸數(shù)據(jù),其中第二 VNIC使用遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)引 擎?zhèn)鬏斔鰯?shù)據(jù)。
9.根據(jù)前述權(quán)利要求其中任一項(xiàng)所述的方法,其中第一計(jì)算機(jī)和第二計(jì)算機(jī)是刀片。
10.一種系統(tǒng),包含機(jī)柜互連;以及運(yùn)行在第一虛擬機(jī)中的第一計(jì)算機(jī)上的第一應(yīng)用以及運(yùn)行在第二虛擬機(jī)中的第二計(jì)算機(jī)上的第二應(yīng)用,其中第一計(jì)算機(jī)和第二計(jì)算機(jī)位于機(jī)柜中且通過機(jī)柜互連通信, 其中第一應(yīng)用被配置成啟動(dòng)與第二應(yīng)用的傳輸通信協(xié)議(TCP)連接, 其中響應(yīng)于所述啟動(dòng),在第一應(yīng)用和第二應(yīng)用之間建立所述TCP連接, 其中第一應(yīng)用被配置成在第一應(yīng)用被判斷為在與第二應(yīng)用相同的機(jī)柜上運(yùn)行之后向 第二應(yīng)用提供預(yù)發(fā)布緩存信息,其中所述預(yù)發(fā)布緩存信息對(duì)應(yīng)于第一計(jì)算機(jī)的物理存儲(chǔ)器中的位置且其中物理存儲(chǔ) 器中的所述位置對(duì)應(yīng)于第一應(yīng)用的虛擬存儲(chǔ)器地址,并且其中第二應(yīng)用使用預(yù)發(fā)布緩存信息向第一應(yīng)用傳輸數(shù)據(jù),其中傳輸數(shù)據(jù)包含直接向第 一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置寫入數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中預(yù)發(fā)布信息通過以下步驟產(chǎn)生 在與第一應(yīng)用相關(guān)的虛擬存儲(chǔ)器中分配虛擬存儲(chǔ)器地址;向運(yùn)行第一應(yīng)用的來賓操作系統(tǒng)(0 提供虛擬存儲(chǔ)器地址,其中該來賓OS在第一虛 擬機(jī)中運(yùn)行;轉(zhuǎn)換虛擬存儲(chǔ)器地址以獲得與來賓操作系統(tǒng)相關(guān)的來賓OS虛擬存儲(chǔ)器地址; 向其上運(yùn)行來賓操作系統(tǒng)的主機(jī)操作系統(tǒng)提供來賓OS虛擬存儲(chǔ)器地址; 轉(zhuǎn)換所述虛擬存儲(chǔ)器地址以獲得與主機(jī)操作系統(tǒng)相關(guān)的主機(jī)OS虛擬存儲(chǔ)器地址,其 中該主機(jī)OS虛擬存儲(chǔ)器地址對(duì)應(yīng)于第一計(jì)算機(jī)的物理存儲(chǔ)器中的位置。
12.根據(jù)權(quán)利要求10或權(quán)利要求11所述的系統(tǒng),其中通過所述TCP連接提供所述預(yù)發(fā) 布信息。
13.根據(jù)權(quán)利要求10至12中任何一項(xiàng)所述的系統(tǒng),其中第二應(yīng)用向位于第二計(jì)算機(jī)上 的虛擬網(wǎng)絡(luò)接口卡(VNIC)提供與所述TCP連接相關(guān)的物理存儲(chǔ)器的位置。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中傳輸數(shù)據(jù)包含使用遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)和第一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置,由所述 VNIC向第一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置寫入數(shù)據(jù)。
15.根據(jù)權(quán)利要求13所述的系統(tǒng),其中第二虛擬機(jī)被配置成從第一虛擬機(jī)向第一計(jì)算 機(jī)的物理存儲(chǔ)器中的位置直接傳輸數(shù)據(jù),其中所述VNIC使用遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA) 引擎?zhèn)鬏斔鰯?shù)據(jù)。
16.根據(jù)權(quán)利要求10至15其中任一項(xiàng)所述的系統(tǒng),其中第一計(jì)算機(jī)和第二計(jì)算機(jī)是刀片。
17.一種計(jì)算機(jī)程序產(chǎn)品,包含用于低開銷數(shù)據(jù)傳輸?shù)亩鄠€(gè)可運(yùn)行指令,其中該多個(gè)可 運(yùn)行指令包含用于以下目的的指令由第一應(yīng)用啟動(dòng)與第二應(yīng)用的傳輸通信協(xié)議(TCP)連接,其中第一應(yīng)用在第一虛擬機(jī) 中在第一計(jì)算機(jī)上運(yùn)行,第二應(yīng)用在第二虛擬機(jī)中在第二計(jì)算機(jī)上運(yùn)行,且第一計(jì)算機(jī)和 第二計(jì)算機(jī)位于機(jī)柜中且通過機(jī)柜互連通信;響應(yīng)于所述啟動(dòng),建立第一應(yīng)用和第二應(yīng)用之間的TCP連接; 判斷第一計(jì)算機(jī)和第二計(jì)算機(jī)位于所述機(jī)柜中;由第一應(yīng)用向第二應(yīng)用提供預(yù)發(fā)布緩存信息,其中所述預(yù)發(fā)布緩存信息對(duì)應(yīng)于第一計(jì) 算機(jī)的物理存儲(chǔ)器中的位置,且其中物理存儲(chǔ)器中的該位置對(duì)應(yīng)于第一應(yīng)用的虛擬存儲(chǔ)器 地址;以及使用預(yù)發(fā)布緩存信息由第二應(yīng)用向第一應(yīng)用傳輸數(shù)據(jù),其中傳輸數(shù)據(jù)包含直接向第一 計(jì)算機(jī)的物理存儲(chǔ)器中的位置寫入數(shù)據(jù)。
18.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述多個(gè)可運(yùn)行指令還包含用于以 下目的的指令產(chǎn)生預(yù)發(fā)布信息,其中產(chǎn)生預(yù)發(fā)布信息包含在與第一應(yīng)用相關(guān)的虛擬存儲(chǔ)器中分配虛擬存儲(chǔ)器地址;向運(yùn)行第一應(yīng)用的來賓操作系統(tǒng)(0 提供虛擬存儲(chǔ)器地址,其中該來賓OS在第一虛 擬機(jī)中運(yùn)行;轉(zhuǎn)換虛擬存儲(chǔ)器地址以獲得與來賓操作系統(tǒng)相關(guān)的來賓OS虛擬存儲(chǔ)器地址;向其上運(yùn)行來賓操作系統(tǒng)的主機(jī)操作系統(tǒng)提供來賓OS虛擬存儲(chǔ)器地址;轉(zhuǎn)換所述虛擬機(jī)存儲(chǔ)器地址以獲得與主機(jī)操作系統(tǒng)相關(guān)的主機(jī)OS虛擬存儲(chǔ)器地址, 其中該主機(jī)OS虛擬存儲(chǔ)器地址對(duì)應(yīng)于第一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置。
19.根據(jù)權(quán)利要求17或權(quán)利要求18所述的計(jì)算機(jī)程序產(chǎn)品,其中在位于第一計(jì)算機(jī)上 的第一虛擬網(wǎng)絡(luò)接口卡(VNIC)和位于第二計(jì)算機(jī)上的第二 VNIC之間建立所述TCP連接, 其中第一計(jì)算機(jī)和第二計(jì)算機(jī)是刀片。
20.根據(jù)權(quán)利要求19所述的計(jì)算機(jī)程序產(chǎn)品,使用遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)引擎, 由第二 VNIC向第一計(jì)算機(jī)的物理存儲(chǔ)器中的所述位置寫入所述數(shù)據(jù)。
21.根據(jù)權(quán)利要求17至20其中任一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,包含計(jì)算機(jī)可讀介質(zhì), 該計(jì)算機(jī)可讀介質(zhì)承載該多個(gè)可運(yùn)行指令。
全文摘要
一種用于低開銷數(shù)據(jù)傳輸?shù)姆椒āT摲椒òㄓ傻谝粦?yīng)用啟動(dòng)與第二應(yīng)用的傳輸通信協(xié)議(TCP)連接;響應(yīng)于所述啟動(dòng),建立第一應(yīng)用和第二應(yīng)用之間的TCP連接;由第一應(yīng)用向第二應(yīng)用提供預(yù)發(fā)布緩存信息,其中該預(yù)發(fā)布緩存信息對(duì)應(yīng)于第一計(jì)算機(jī)的物理存儲(chǔ)器中的位置,且其中物理存儲(chǔ)器中的該位置對(duì)應(yīng)于第一應(yīng)用的虛擬存儲(chǔ)器地址。該方法還包含由第二應(yīng)用使用該預(yù)發(fā)布緩存信息向第一應(yīng)用傳輸數(shù)據(jù),其中傳輸數(shù)據(jù)包含直接向第一計(jì)算機(jī)的物理存儲(chǔ)器中的位置寫入所述數(shù)據(jù)。
文檔編號(hào)G06F9/54GK102124449SQ200980131451
公開日2011年7月13日 申請(qǐng)日期2009年6月25日 優(yōu)先權(quán)日2008年6月30日
發(fā)明者S·特里帕西 申請(qǐng)人:甲骨文美國(guó)公司