背景技術:
遠程直接存儲器存取(rdma)直接在兩個應用之間提供讀和寫服務,并使得數據直接傳輸到應用緩沖區(qū)而無需中間數據拷貝。rdma使得存儲器數據傳輸能夠繞過操作系統(tǒng)和內核。
目前存在若干種通過網絡傳輸rdma分組的協(xié)議。rdma傳輸協(xié)議的示例是融合以太網上的rdma(rdmaoverconvergedethernet,roce)和互聯網廣域rdma協(xié)議(internetwideareardmaprotocol,iwarp)。roce是開放系統(tǒng)互連(osi)模型第二層網絡技術,其通過繞過cpu或內核實現同一以太網上兩個主機之間的直接數據傳輸。
目前,roce版本1不支持互聯網協(xié)議(ip)層路由,并且在多租戶域中不可用。roce版本2確實支持ip層路由,但是在多租戶域中不可用。
目前沒有機制利用在軟件定義數據中心中支持多租賃的覆蓋網絡來使用rdma數據傳輸協(xié)議(諸如roce或iwarp)。
當今,源自vm的覆蓋網絡l2幀的封裝用軟件處理。這涉及在覆蓋網絡軟件部分上的重要工作,以維護和查找覆蓋網絡地址映射表,并且在分組被發(fā)出到線路上之前用包含相關覆蓋網絡、udp、ip和以太網信息的外部報頭封裝傳送分組。
類似地,對于接收到的分組,外部報頭解封裝的相反處理也是軟件負責。用軟件進行的每次映射表查找和分組的封裝/解封裝都會導致顯著的cpu成本并影響性能。
技術實現要素:
一些實施例提供用于在虛擬l3網絡上的多租戶云計算環(huán)境中經由作為l2技術的rdma數據傳輸協(xié)議(諸如roce)使得能夠進行rdma傳輸的方法。這使得能夠使用軟件定義網絡(softwaredefinednetwork,sdn)方法來利用rdma技術的能力并實現多個物理和虛擬網絡之間的無縫連接的目標。
覆蓋網絡是在云計算環(huán)境中實現多租賃的網絡虛擬化技術。一些實施例利用覆蓋網絡來提供l3可路由性并使得能夠在多租戶環(huán)境中進行rdma傳輸。這些實施例通過用覆蓋網絡路由報頭封裝rdma數據傳輸協(xié)議(諸如roce或iwarp)分組使得能夠在覆蓋網絡上進行rdma數據傳輸。
覆蓋網絡軟件負責維護覆蓋網絡映射表,以包括到隧道端點ip的vm媒體訪問控制(mac)地址和其它地址映射。這些實施例中的一些實施例還用特定于每個rdma連接的覆蓋網絡地址映射信息對覆蓋網絡接口控制器(nic)進行編程,以便將利用覆蓋網絡報頭對rdma分組的封裝卸載到硬件。
前面的發(fā)明內容旨在用作對本發(fā)明的一些實施例的簡要介紹。它并不意味著是對本文檔中公開的所有發(fā)明性主題的介紹或概述。以下的具體實施方式和在具體實施方式中提及的附圖將進一步描述在本發(fā)明內容中描述的實施例以及其它實施例。相應地,為了理解本文檔描述的所有實施例,需要對發(fā)明內容、具體實施方式和附圖進行全面地審查。此外,所要求保護的主題不受發(fā)明內容、具體實施方式和附圖中的說明性細節(jié)的限制。
附圖說明
本發(fā)明的新穎特征在所附權利要求中闡述。但是,為了解釋的目的,在以下圖中闡述了本發(fā)明的若干實施例。
圖1概念性地圖示本發(fā)明的一些實施例的虛擬基礎設施的一部分,該虛擬基礎設施在位于兩個不同主機上的相同租戶的兩個虛擬機之間啟用rdma。
圖2是示出roce版本1協(xié)議的選定數量的字段的簡化圖。
圖3是示出roce版本2協(xié)議的選定數量的字段的簡化圖。
圖4概念性地圖示在本發(fā)明的一些實施例中由請求vm發(fā)起的執(zhí)行rdma地址解析的過程。
圖5概念性地圖示在本發(fā)明的一些實施例中由rdma棧從覆蓋網絡地址映射表獲得的覆蓋網絡信息元組。
圖6概念性地圖示在本發(fā)明的一些實施例中由請求vm發(fā)起的執(zhí)行rdma請求rdma連接的過程。
圖7是示出在本發(fā)明的一些實施例中用于在覆蓋網絡報頭中封裝rdma協(xié)議分組的選定數量的字段的簡化圖。
圖8概念性地圖示在本發(fā)明的一些實施例中當目的地rdmanic接收rdma連接請求時執(zhí)行的過程。
圖9概念性地圖示在本發(fā)明的一些實施例中執(zhí)行的將rdma連接請求的接受或拒絕從目的地vm發(fā)送到請求vm的過程。
圖10概念性地圖示在本發(fā)明的一些實施例中當在請求vm處接收到來自目的地vm的rdma連接請求的接受或拒絕時執(zhí)行的過程。
圖11概念性地圖示在本發(fā)明的一些實施例中當由已請求建立rdma連接的vm創(chuàng)建隊列對時執(zhí)行的過程。
圖12概念性地圖示在本發(fā)明的一些實施例中當目的地vm創(chuàng)建隊列對時執(zhí)行的過程。
圖13概念性地圖示在本發(fā)明的一些實施例中為請求使用rdma進行數據傳輸而執(zhí)行的過程。
圖14概念性地圖示在本發(fā)明的一些實施例中執(zhí)行的使用rdma將數據寫入到目的地vm的存儲器中的過程。
圖15概念性地圖示在本發(fā)明的一些實施例中執(zhí)行的使用rdma從目的地vm的存儲器讀取數據的過程。
圖16概念性地圖示在本發(fā)明的一些實施例中執(zhí)行的在請求vm處從目的地vm接收所請求的rdma數據的過程。
圖17概念性地圖示實現本發(fā)明的一些實施例的電子系統(tǒng)。
具體實施方式
在本發(fā)明的以下詳細描述中,闡述和描述了本發(fā)明的許多細節(jié)、示例和實施例。但是,對于本領域技術人員來說,將清楚并顯而易見的是,本發(fā)明不限于所闡述的實施例,并且本發(fā)明可以在沒有所討論的一些具體細節(jié)和示例的情況下實踐。
虛擬化是用軟件模擬硬件平臺(諸如服務器、存儲設備或網絡資源)的能力。虛擬機(vm)是機器(諸如計算機)的軟件實現。虛擬網絡是物理網絡的抽象。vm可以使用虛擬網絡進行通信。一個這樣的虛擬網絡是覆蓋網絡,它是第3層網絡上的第2層覆蓋方案。覆蓋網絡是在云計算環(huán)境中實現多租賃的網絡虛擬化技術。覆蓋網絡的示例包括虛擬可擴展lan(vxlan)、通用網絡虛擬化封裝(geneve)和使用通用路由封裝的網絡虛擬化(nvgre)。例如,vxlan是第3層(l3)網絡上的l2覆蓋方案。vxlan在ip(mac-in-udp封裝)中封裝以太網l2幀,并允許vm作為在單獨的物理l3網絡中操作的虛擬化l2子網的一部分。類似地,nvgre使用通用路由封裝(gre)在l3網絡上隧道化l2分組。
覆蓋網絡(諸如vxlan和geneve)是在云計算環(huán)境中實現多租賃的優(yōu)選網絡虛擬化技術。覆蓋網絡是l3網絡上的l2覆蓋方案。覆蓋網絡實現涉及利用相關覆蓋網絡外部用戶數據報協(xié)議(udp)報頭封裝流量,這使得能夠在虛擬網絡中進行l(wèi)2流量的路由。
一些實施例通過利用覆蓋網絡路由報頭封裝rdma數據傳輸協(xié)議(諸如roce)分組來使得能夠在覆蓋網絡上進行rdma數據傳輸。參與覆蓋網絡的主機包括覆蓋配置/控制平面、數據平面和覆蓋網絡分組處理功能的覆蓋網絡虛擬化軟件。主機充當隧道端點。對于vxlan覆蓋網絡,隧道端點被稱為虛擬隧道端點(virtualtunnelendpoint,vtep)。
利用特定于每個rdma連接的覆蓋網絡地址映射信息對rdmanic進行編程,以便提供l3可路由性和多租賃能力。此外,一些實施例將利用覆蓋網絡報頭對roce分組的封裝卸載到nic硬件。這需要對當前rdma軟件實現的當前控制平面和數據平面做出改變。
圖1概念性地圖示本發(fā)明的一些實施例的虛擬基礎設施的一部分,該虛擬基礎設施在位于兩個不同主機上的相同租戶的兩個虛擬機之間啟用rdma。如圖所示,在若干個物理主機機器130-132上托管若干個vm105-110。
在一些實施例中,虛擬化基礎設施由單個云管理系統(tǒng)管理。術語云服務是指通過網絡以分布式方式提供的服務(諸如計算、存儲等)。虛擬化基礎設施包括托管多個租戶的一組主機機器120-132。每個租戶具有一個或多個vm。為了簡單起見,圖1僅示出用于一個租戶(即,租戶1)的vm105-110。
每個主機120-132包括主機虛擬化軟件115(有時被稱為管理程序)。該圖中所示的主機虛擬化軟件115代表可以在這種虛擬化基礎設施中的主機上操作的各種類型的虛擬化軟件(例如,虛擬機監(jiān)視器等)。
在虛擬化領域中,有人將軟件交換機稱為虛擬交換機,這是因為它們是軟件元件。但是,在本說明書中,軟件轉發(fā)元件被稱為物理轉發(fā)元件(pfe),以便將它們與邏輯轉發(fā)元件(lfe)區(qū)分開,邏輯轉發(fā)元件(lfe)是不與物理世界綁定的邏輯構造。換句話說,軟件轉發(fā)元件被稱為pfe是因為它們在物理世界中存在并操作,而lfe是在設計邏輯網絡時呈現給用戶的轉發(fā)元件的邏輯表示。在一些實施例中,若干個pfe分布在實現租戶的lfe的整個網絡中,其中每個pfe是跨不同主機機器操作并且可以在主機機器或不同主機機器上的vm之間執(zhí)行l(wèi)3分組轉發(fā)的lfe的本地實例化。lfe有時被稱為虛擬分布式交換機(vds)。
在每個主機130-132中,lfe120連接到物理網絡接口卡(pnic)以發(fā)送傳出分組和接收傳入分組。圖1中的pnic185-187是具有rdma能力的nic。在一些實施例中,lfe被定義為包括一組端口140,通過這組端口140,lfe通過上行鏈路170連接到pnic以發(fā)送和接收分組。
上行鏈路170是在lfe120和具有rdma能力的nic185(或187)之間中繼分組,以便對傳入和傳出流量執(zhí)行各種分組處理功能的模塊。具有rdma能力的nic185-187是也被稱為融合網絡適配器(cna)的pnic,其被編程為執(zhí)行以太網分組傳輸以及rdma分組傳輸。具有rdma能力的nic上的每個端口能夠運送以太網流量和rdma流量。在一些實施例中,具有rdma能力的nic向主機虛擬化軟件115注冊兩個邏輯設備,一個邏輯設備處理上行鏈路流量并且一個邏輯設備處理rdma流量。每個lfe還被定義為具有通過虛擬nic(vnic)連接到租戶vm105-110的若干個虛擬端口145-148。如下所述,rdma訪客設備(或rdma準虛擬化設備)160-162提供vnic功能以及與rdma棧175的接口。
vm中的vnic功能負責通過相關聯的vnic仿真器(未示出)在vm與主機虛擬化軟件115的網絡虛擬化層之間交換分組。每個vnic仿真器與vm中的vnic驅動器交互,以向vm發(fā)送數據和從vm接收數據。在一些實施例中,虛擬nic是由虛擬nic仿真器實現的物理nic的軟件抽象。例如,在一些實施例中,用于請求和獲得連接id的代碼駐留在vnic仿真器的組件中。換句話說,在一些實施例中,vnic狀態(tài)由每個vnic仿真器實現和維護。虛擬設備(諸如vnic)是可方便地像vm的一部分那樣進行討論,但實際上由虛擬化軟件使用仿真器實現的軟件抽象。但是,每個vm的狀態(tài)包括其虛擬設備的狀態(tài),該狀態(tài)由底層虛擬化軟件進行控制和維護。
租戶的vm105-110形成邏輯網絡(也被稱為專用網絡或虛擬網絡),其由虛線152概念性地示出。邏輯網絡是物理網絡的抽象,并且可以為諸如將網絡層數據分組封裝和解封裝成幀、幀同步、媒體訪問控制等的服務提供虛擬層2(或數據鏈路層)。邏輯網絡可以跨越一個或多個物理網絡并且可以獨立于底層物理拓撲和物理網絡的組織來組織。每個邏輯網絡由租戶配置。
參與覆蓋網絡的主機包括覆蓋配置/控制平面、數據平面和覆蓋網絡分組處理功能的覆蓋網絡虛擬化軟件。主機包括(例如,作為lfe軟件的一部分)充當隧道端點的覆蓋網絡虛擬化軟件150。在vxlan覆蓋網絡的示例中,覆蓋網絡虛擬化軟件被稱為vxlan虛擬隧道端點(vtep)軟件,并且隧道端點被稱為vtep。存在與覆蓋網絡的每個實例相關聯的唯一標識符。覆蓋網絡軟件150負責維護映射表以包括例如到隧道端點地址的vmmac和其它地址映射。托管在獨立主機130-132上的租戶的vm105-110之間的覆蓋網絡流量經由通過通信網絡127的隧道125傳送。通信網絡127可以包括互聯網、局域網(lan)、廣域網(wan)、不同的硬件裝備,諸如電纜、路由器、交換機等。
圖1中的vm105和110屬于同一租戶,但分別由兩個不同的主機130和132托管。在圖1的示例中,兩個vm在兩個不同的子網上,并且具有兩個不同的ip地址。vm105和110能夠使用rdma傳輸數據。每個租戶包括虛擬rdma設備(rdma訪客設備)160-162。每個主機虛擬化軟件115包括rdma訪客設備后端190、rdma?;?rdma協(xié)議棧)175以及rdmanic驅動器180。在一些實施例中,rdma棧是用于在主機中提供rdma能力的openfabricsenterprisedistribution(ofedtm)開源軟件。
rdma訪客設備160-162是準虛擬化設備。準虛擬化是指其中由vm使用的訪客操作系統(tǒng)(os)被修改為用與主機的虛擬化軟件直接通信的超級調用(hypercall)替換非可虛擬化指令的技術。虛擬化軟件還提供超級調用接口,以便與vm中的準虛擬化設備通信。在一些實施例中,rdma訪客設備160-162利用庫調用(例如,“verbs(動詞)”庫調用)來建立rdma連接。這些庫調用提供所需行為的語義描述(例如,用于提供建立rdma連接所需的信息)。這些調用用于通過創(chuàng)建和銷毀對象(諸如發(fā)送和接收工作隊列對、完成隊列和存儲器區(qū)域)來管理控制路徑對象。這些應用編程接口(api)調用也用于通過請求工作處理(諸如發(fā)布發(fā)送和接收以及請求完成事件)來管理數據路徑。
rdma訪客設備后端190將來自訪客中的rdma訪客設備(即,vm105-100)的庫調用轉換為rdma棧175調用。訪客物理地址空間(或訪客虛擬地址空間)被映射(或轉換)到主機的物理地址空間(或機器存儲器地址),并傳遞到具有rdma能力的nic180。具有rdma能力的nic維護地址轉換表,并直接從/向訪客物理存儲器執(zhí)行零拷貝dma。
主機中的rdma訪客設備160-162提供兩個功能。rdma訪客設備160-162提供到rdma棧175的接口和為vm提供vnic功能的另一個接口。在一些實施例中,rdma訪客設備160-162向主機虛擬化軟件115注冊兩個邏輯設備,一個邏輯設備提供vnic功能以及一個邏輯設備與rdma棧接口。
rdma訪客設備160-162對rdma訪客設備后端190進行庫調用以在兩個vm之間建立rdma連接。vm105中正在請求建立連接的rdma訪客設備160-162與諸如lfe120上的端口145的端口相關聯。如果端口與覆蓋網絡相關聯(例如,端口與vxlan網絡上的vtep相關聯),則與覆蓋網絡相關的信息(諸如,源vtepip、源vtepmac、源vtepvlan、源vtep最大總單元(mtu)、內部目的地ip、內部目的地mac、目的地vtepip、目的地vtepmac等)通過rdma棧175和rdmanic驅動器180被推送到作為硬件nic的rdmanic185。然后,rdmanic執(zhí)行roce協(xié)議封裝以及覆蓋網絡封裝,并通過覆蓋網絡隧道125將結果產生的分組發(fā)送到連接到目的地主機132的rdmanic187。
目的地rdmanic187通過去除外部覆蓋網絡報頭來解封裝分組,并將分組傳遞到目的地主機132的rdma棧用于處理。如下面進一步描述的,一旦建立連接,通過繞過源主機和目的地主機的os和內核,通過對應的rdmanic直接在源vm和目的地vm之間執(zhí)行對rdma數據傳輸的任何請求。
rdma連接創(chuàng)建邏輯rdma連接,其由虛線195概念性地示出。在請求vm105和目的地vm110之間創(chuàng)建rdma連接以在被識別用于rdma連接的兩個vm的應用緩沖區(qū)197和199之間直接傳輸數據。傳輸數據的物理路徑是通過覆蓋網絡。一旦所請求的數據到達與請求vm的主機130相關聯的rdmanic185,rdmanic就直接將數據傳輸到由請求vm105識別出的應用緩沖區(qū)199,從而繞過主機和訪客操作系統(tǒng)和內核。
雖然通過參考roce的示例描述了rdma數據傳輸協(xié)議,但是本領域普通技術人員將意識到,相同的討論同樣適用于其它rdma數據傳輸協(xié)議,諸如iwarp,其通過在數據放置協(xié)議(ddp)之上分層rdma有效載荷來提供rdma,其中數據放置協(xié)議又由流控制傳輸協(xié)議(sctp)報頭和傳輸控制協(xié)議(tcp)報頭封裝。
i.使用覆蓋網絡啟用rdma數據傳輸
在本部分中描述了roce作為rdma網絡協(xié)議的示例。roce是允許在以太網網絡上進行rdma訪問的網絡協(xié)議。與傳統(tǒng)網絡相反,roce直接向應用提供消息傳輸服務,這需要應用使用os的服務來傳輸消息分組。
roce版本1是用于在同一以太網廣播域上的主機之間的rdma訪問的鏈路層(即,l2)協(xié)議。圖2是示出roce版本1(v1)協(xié)議的選定數量的字段的簡化圖。描述roce版本1的其它字段的更多詳細信息在2010年4月6日的infinibandtm行業(yè)協(xié)會(infinibandtradeassociation)的“supplementtoinfinibandtmarchitecturespecification,volume1,release1.2.1annexa16:rdmaoverconvergedethernet(roce)”中描述,該規(guī)范通過引用被結合于此。
如圖2所示,rocev1分組結構200包括幀校驗序列(fcs)260、不變循環(huán)冗余碼(crc)250、rdma分組有效載荷205、infinibandtm體系架構(iba)傳輸報頭210、全局路由報頭(grh)215、虛擬局域網(vlan)字段225以及以太網報頭230。fcs260是用于檢測以太網幀的任何途中(in-transit)損壞數據的crc。不變crc250是crc錯誤檢測碼,其覆蓋通過網絡上的所有交換機和路由器從端到端不變的分組的所有字段。
rdma分組有效載荷205是實際的rdma分組(或消息)。iba傳輸報頭210包括諸如用于iba傳輸的基本傳輸報頭和擴展傳輸報頭的字段。
grh215包括用于在子網之間路由分組的字段。vlan字段225是用于取決于所使用的vlan的類型來指示幀的端口的vlan成員資格或幀的端口和協(xié)議組合的ieee802.1q標簽字段。以太網報頭230包括以太網幀字段,該以太網幀字段包括源mac地址和目的地mac地址。如可以看到的,rocev1中的以太網報頭230僅包含l2地址,并且不允許遍歷l3路由器。
通常,roce需要無損網絡。在rocev1的情況下,這是經由數據中心橋接(dcb)實現的,數據中心橋接是對以太網局域網的一組增強,以在數據中心環(huán)境中使用網絡。通過添加外部報頭,必須跨l3域保持網絡的無損性質。在一些實施例中,路由器處的l3無損特征(例如,ip報頭中的差分服務代碼點(dscp))用于外部報頭。例如,一些實施例使用確保轉發(fā)(assuredforwarding,af)每跳行為(per-hopbehavior,phb)組來提供交付的保證。這些實施例中的一些實施例利用ip報頭中的af等級3(諸如af31)來提供分組的無損交付。rocev2使用相同的原理。
圖3是示出roce版本2(v2)協(xié)議的選定數量的字段的簡化圖。描述roce版本1的其它字段的更多詳細信息在2014年9月2日的infinibandtm行業(yè)協(xié)會(infinibandtmtradeassociation)的“supplementtoinfinibandtmarchitecturespecification,volume1,release1.2.1annexa17:rocev2”中描述,該規(guī)范通過引用被結合于此。
如圖3所示,rocev2分組結構300包括fcs260、不變crc250、rdma分組有效載荷205、iba傳輸報頭210、udp報頭305、ip報頭310、vlan字段225和以太網報頭230。fcs260、不變crc250、rdma分組有效載荷205、iba傳輸報頭210、vlan字段225和以太網報頭230與以上參考圖2描述的字段類似。
rocev1的grh字段215被rocev2中的udp報頭305和ip報頭310替換。ip報頭310允許遍歷ipl3路由器。udp報頭305用作用于ip上的rdma分組的無狀態(tài)封裝層。如可以看到的,在諸如利用覆蓋網絡為托管用于多個租戶的vm的主機機器提供多租賃支持的軟件定義數據中心(sddc)之類的環(huán)境中,圖2和圖3的幀格式不支持多租賃。
請求rdma連接的應用創(chuàng)建包括發(fā)送隊列和接收隊列的工作隊列對(qp)。目的地應用也創(chuàng)建匹配的qp。每個qp表示連接用于rdma數據傳輸的兩個應用的通道的端點。應用通過發(fā)布工作請求(wr)(諸如向工作隊列發(fā)布發(fā)送請求或工作完成請求)來請求rdma服務。
為了建立連接,兩個應用初始地利用特殊的qp(被稱為qp1)。一旦建立連接,每個應用使用在連接的生命周期期間創(chuàng)建和維護的專用qp。
a.利用覆蓋網絡地址映射信息對rdmanic進行編程
一些實施例提供控制路徑改變,其包括利用特定于每個rdma連接的覆蓋網絡地址映射信息對rdmanic進行編程。覆蓋網絡地址映射信息從在覆蓋網絡虛擬化軟件中維護的覆蓋網絡地址表獲得。這使得nic硬件能夠通過參考硬件表來生成外部封裝報頭。在一些實施例中,rdmanic向覆蓋網絡軟件注冊其覆蓋網絡能力以接收覆蓋網絡地址通知和映射更新。
在一些實施例中,rdma棧在rdma連接建立階段期間將覆蓋網絡映射信息編程到rdmanic中。rdmanic本地設備驅動器具有相關的基礎設施/api,以向覆蓋網絡軟件或rdma棧注冊其覆蓋網絡能力。此外,為rdmanic本地設備驅動器提供了回調函數(callback)方面的必要基礎設施,以接收覆蓋網絡配置和更新信息。回調函數是作為參數傳遞給另一個函數的函數。在一些實施例中,提供回調函數以將覆蓋網絡信息與rdmanic設備相關聯/綁定。
在一些實施例中,rdma連接建立階段利用rdma連接管理器(rdma-cm),并且涉及三個廣泛的步驟:rdma地址解析、rdma連接以及rdmaqp創(chuàng)建和配置。以下部分描述如何通過在以上每個連接建立步驟中做出新的程序化改變,利用覆蓋網絡信息對rdmanic進行編程,并且在本發(fā)明的一些實施例中實現對多租賃的支持。
以下示例使用一個vm作為請求vm(或客戶端),并且另一個vm作為目的地vm(或服務器)。相同的討論適用于其中客戶端、服務器或兩者都是主機(而不是vm)的情況。在這些情況下,目的地ip地址(而不是指vmip地址)是指在內核vnic(被稱為vmknic)上配置的、由主機使用以連接到lfe端口以與主機內核外部的實體通信的ip地址。因此,本發(fā)明同樣適用于涉及內核應用和/或vm的rdma傳輸。在任一種情況下,rdma是利用執(zhí)行將數據從一個存儲器區(qū)域拷貝到另一個存儲器區(qū)域的任務的主機cpu執(zhí)行的。
1.rdma地址解析
圖4概念性地圖示在本發(fā)明的一些實施例中由請求vm發(fā)起的執(zhí)行rdma地址解析的過程400。虛線490以上所示的操作由請求vm(例如,由圖1所示的rdma訪客設備160)執(zhí)行,而線490下面所示的操作由源主機130的rdma棧175執(zhí)行(即,請求vm105的主機)。
如圖所示,當rdma客戶端(諸如vm105)使用rdma-cm發(fā)起rdma連接時,客戶端創(chuàng)建(在405處)唯一連接管理器標識符(cm_id)。接下來,該過程通過與覆蓋網絡相關聯的虛擬網絡接口向rdma棧(例如,向rdma訪客設備后端190)發(fā)送(在410處)rdma地址解析請求。然后,該過程確定(在415處)虛擬網絡接口是否與覆蓋網絡相關聯(例如,連接到vm的rdma訪客設備160的lfe端口145是否與諸如vxlanvtep的覆蓋網絡端隧道相關聯)。
目前,如在現有技術虛擬化環(huán)境中所做的那樣,當rdma客戶端通過vnic發(fā)起連接時,rdma棧代表其執(zhí)行地址解析,以獲得對應的路由信息。然后,rdma棧經由程序化接口(例如,bindsourcelnfo驅動器回調函數)將該虛擬網絡接口及其屬性{cm_id、源ip、源mac、源vlan、源mtu}與roce設備相關聯/綁定。這種綁定由cm_id唯一識別,并且在rdma連接過程期間存在。rdma棧調用驅動器回調函數以將該信息編程到rdmanic中。如可以看到的,這種機制不支持其中每個租戶可以定義其自己的邏輯網絡的覆蓋網絡(諸如vxlan)上的多租賃。
當過程400確定虛擬網絡接口不與覆蓋網絡相關聯時,該過程通過將虛擬網絡接口及其屬性{cm_id、源ip、源mac、源vlan、源mtu}與rdmanic綁定而不提供多租賃支持來執(zhí)行(在420處)地址解析(如在現有技術中所完成的)。cmd-id是唯一連接管理器標識,源ip、源mac、源vlan以及源mtu是與請求rdma連接的vm相關聯的vtep的ip地址、mac地址、相關聯vlan以及最大總單元(mtu)。通信協(xié)議層的mtu是該層可以向前傳送的最大協(xié)議數據單元(pdu)的大小(以字節(jié)為單位)。
當虛擬網絡接口與覆蓋網絡相關聯時(例如,當連接到vm的rdma訪客設備160的lfe端口145與諸如vxlanvtep的覆蓋網絡端隧道相關聯時),過程400提供用于為rdma數據傳輸提供多租賃的新穎機制。具體而言,如果該過程確定(在415處)虛擬網絡接口與覆蓋網絡相關聯,則rdma棧將跳過其部分上的任何地址解析。替代地,rdma棧依賴覆蓋網絡虛擬化軟件作為獲得地址映射信息的源。rdma棧從由覆蓋網絡虛擬化軟件維護的覆蓋網絡表檢索(在425處)相關聯的覆蓋網絡地址映射信息。
圖5概念性地圖示在本發(fā)明的一些實施例中由rdma棧獲得的覆蓋網絡信息元組。如圖所示,對于rdma連接的給定源vmip地址和目的地vmip地址,執(zhí)行以下地址解析。對于給定目的地ip地址,地址解析中有兩個步驟:確定要使用的本地rdma訪客設備以及確定目的地端隧道信息?;趌fe上行鏈路和配對的rdma訪客設備確定本地rdma訪客設備。目的地端隧道信息通過使用地址解析協(xié)議(arp)確定內部目的地mac地址(即,目的地vm的mac地址)來確定,并且外部目的地端隧道信息(例如,vxlan目的地vtepip和mac地址)通過經由覆蓋網絡虛擬化軟件使用覆蓋網絡橋接表來確定。源端隧道的覆蓋網絡信息(例如,vxlan源vtepmac地址、vxlan源vtepip地址、源vlan)被本地存儲在由覆蓋網絡軟件維護的覆蓋地址映射表中。所需的源端隧道的信息從這些表中檢索。
在一些實施例中,用于地址解析的元組包括:目的地端隧道m(xù)ac地址505(例如,vxlan目的地vtepmac地址)、源端隧道m(xù)ac地址510(例如,vxlan源vtepmac地址)、以太網信息515(例如,以太網類型或以太網分組報頭所需的任何其它信息)、源端隧道ip地址520(例如,vxlan目的地vtepip地址)、目的地端隧道ip地址525(例如,vxlan目的地vtepip地址)、源端隧道vlanid530(例如,源vxlan網絡標識符(vni))、源mtu535(源vtepmtu)、udp信息540(例如,udp源端口、vxlan端口等)。
元組505-540連同創(chuàng)建用于建立rdma連接的cm-id590被發(fā)送到啟用rdma的nic。啟用rdma的nic使用該信息來通過使用覆蓋網絡傳輸分組所需的報頭封裝rdma分組。圖5所示的字段是封裝rdma分組以使用覆蓋網絡傳輸分組可能需要的字段的示例。取決于特定的覆蓋網絡和特定的網絡配置,不同的實施例從主機中的覆蓋網絡地址映射表檢索不同的信息,并將它們推送到啟用rdma的nic。
回到參考圖4,過程400然后將元組500與cm_id590相關聯(在430處),使得它對于當前的rdma連接是唯一的。然后,該過程在rdma棧表中保存(在435處)覆蓋網絡地址映射信息和cm-id,以便在連接存在期間使用。如下所述,在一些實施例中,覆蓋網絡地址映射信息和cm-id在由rdma棧使用的初始連接數據報的地址句柄結構中使用。地址句柄是描述從本地端口到遠程端口的路徑的對象。地址句柄描述在qp中使用的rdma連接的另一端。
在ofedtm編程模型中,通過提供地址句柄建立qp連接。例如,對于“可靠連接qp”,在連接建立期間,利用指定目的地全局標識符(gid)、目的地本地標識符(lid)和目的地mac地址的地址句柄修改qp。這是在面向連接的可靠連接期間的一次性操作。在“不可靠數據報(ud)qp”的情況下,在ud隊列對上發(fā)送的每個工作請求應該具有指定目的地gid、lid、目的地mac的地址句柄。
一些實施例改變地址句柄以反映目的地vtep信息。其它實施例將rdmacm-id與地址句柄進行映射。cm-id具有可傳遞給rdmanic驅動器的整個元組(源vtep和目的地vtep)。在一些實施例中,rdmanic驅動器將該cm-id綁定信息與地址句柄進行組合來封裝用于給定后發(fā)送操作的分組。在接收路徑中,在一些實施例中,rdmanic除了解封裝內部報頭之外還解封裝外部報頭,并將rdma有效載荷發(fā)布到對應的qp。但是,rdmanic需要在發(fā)布到應用緩沖區(qū)之前驗證外部報頭和內部報頭。
2.rdma連接
圖6概念性地圖示在本發(fā)明的一些實施例中由請求vm(或客戶端)發(fā)起的請求rdma連接的過程600。虛線690以上所示的操作由請求vm(例如,由圖1所示的rdma訪客設備160)執(zhí)行,線695下面所示的操作由rdmanic(例如,rdmanic185)執(zhí)行,并且線690和695之間所示的操作由源主機130的rdma棧175(即,請求vm105的主機)執(zhí)行。如圖所示,該過程使用先前創(chuàng)建的cm-id發(fā)送(在605處)連接到目的地vm的rdma連接請求。
對于經由rdma-cm的rdma連接請求,使用被稱為通用服務接口(gsi)qp或qp1的特殊qp類型將初始連接數據報(被稱為管理數據報或mad)發(fā)送到rdma連接的目的地端。在一些實施例中,新的字段被添加到由rdma虛擬化棧使用的地址句柄結構中。這些新的字段保持如以上通過參考圖4所述計算的覆蓋網絡地址映射元組。rdma虛擬化棧將mad緩沖區(qū)連同修改后的地址句柄結構一起向下發(fā)送(在610處)到rdmanic。
然后,rdmanic使用(在615處)覆蓋網絡地址映射信息利用覆蓋網絡外部報頭封裝rdma數據報。具體而言,在一些實施例中,rdmanic從地址句柄結構中檢索cm_id、源地址和覆蓋網絡映射信息。rdmanic基于修改后的地址句柄結構計算外部vxlan報頭,并利用它封裝內部分組(連接mad)。然后,rdmanic將封裝后的分組在虛擬網絡線路上發(fā)出到(在620處)目的地vm(或服務器)。
圖7是示出在本發(fā)明的一些實施例中用于在覆蓋網絡報頭中封裝rdma協(xié)議分組的選定數量的字段的簡化圖。如圖所示,封裝后的分組結構700包括rdma分組725。rdma分組725例如是圖2所示的rocev1分組200、圖3所示的rocev2分組300、iwarp分組、或將在兩個vm之間進行交換的任何其它rdma協(xié)議分組。
rdma分組725被包裹在包括覆蓋網絡標識的覆蓋網絡報頭735(例如,包括vxlanid的vxlan報頭)中。該內部幀被進一步包裹在udp報頭740中(被稱為外部udp)。結果被進一步包裹在外部ip報頭790中,其中外部ip報頭790包括目的地端隧道的ip地址745(例如,vxlan目的地vtepip地址)和源端隧道的ip地址750(例如,vxlan源vtepip地址)。結果被進一步包裹在外部以太網報頭795(其包括外部虛擬局域網(vlan)標簽信息(例如,vxlan標簽信息)和以太網類型755、源端隧道m(xù)ac地址760(例如,vxlan源vtepmac地址)和目的地端隧道m(xù)ac地址765)(例如,vxlan目的地vtepmac地址)中。最后,覆蓋網絡封裝包括可選的外部fcs770。通過進行外部包裹,覆蓋網絡為跨不同網絡的vm創(chuàng)建邏輯網絡。覆蓋網絡(例如,vxlan)在第3層網絡之上創(chuàng)建第2層網絡。字段735-765和可選的外部fcs770在本文中被稱為外部報頭,并且封裝后的分組700被稱為外部分組。
圖7是示出用于覆蓋網絡封裝的選定數量的字段的簡化圖。對于覆蓋網絡的示例,描述用于vxlan封裝的其它字段的進一步詳細信息在由m.mahalingam等人所寫的、2011年8月26日的網絡工作組(networkworkinggroup)的“vxlan:aframeworkforoverlayingvirtualizedlayer2networksoverlayer3networks”中描述,該文章通過引用被結合于此。雖然為了簡單起見,本文檔參考該選定字段,但是本領域普通技術人員將意識到,封裝用于覆蓋網絡(諸如vxlan、geneve等)的分組需要利用覆蓋網絡的整個外部報頭封裝分組。
在圖7中,使用外部包裹通過l3網絡交付l2有效載荷。例如,外部源ip源地址是源vtep的ip地址,并且外部目的地ip地址是目的地vtep的ip地址。外部源mac地址是源vtep的mac地址,并且外部目的地mac地址是在從源vtep到目的地vtep的路徑上的下一個網絡實體(諸如網關的路由器)的mac地址。
在一些實施例中,用于vxlan的vtep包括以下組件:作為lfe的一部分并用于vxlan數據路徑處理(包括轉發(fā)表的維護)的vm內核組件;運送vxlan流量的vm內核nic虛擬適配器;以及指示vxlan流量如何通過物理nic被送入和送出主機vtep的vxlan端口組。
外部ip報頭790允許遍歷ipl3路由器。udp報頭740用作用于ip上的rdma分組的無狀態(tài)封裝層,取決于所使用的vlan的類型,vlan字段755是用于指示幀的端口的vlan成員資格或幀的端口和協(xié)議組合的ieee802.1q標簽字段。
圖8概念性地圖示在本發(fā)明的一些實施例中當目的地rdmanic(例如,圖1所示的rdmanic187)接收rdma連接請求時執(zhí)行的過程800。虛線890以上所示的操作由目的地vm(例如,由圖1所示的rdma訪客設備162)執(zhí)行,線895下面所示的操作由rdmanic(例如,rdmanic187)執(zhí)行,并且線890和895之間所示的操作由目的地主機132的rdma棧175執(zhí)行。
如圖所示,該過程通過覆蓋網絡從請求vm接收(在805處)封裝在覆蓋網絡報頭中的rdma連接請求。例如,rdma連接的接收端的rdmanic在qp1上接收覆蓋網絡封裝的mad分組。然后,該過程去除(在810處)與覆蓋網絡有關的分組的外部報頭。來自外部報頭的覆蓋網絡信息被消費和驗證(例如,對照vxlan網絡中的源vxlan/vtep信息進行)。該過程確定(在815處)覆蓋網絡信息是否有效。例如,傳入的vxlan信息是否與用于接收vm的vxlan匹配。如果不匹配,則丟棄分組(在820處)。
否則,該過程(使用接收rdmanic)剝離外部覆蓋網絡報頭,并將mad連同外部覆蓋網絡報頭信息(由rdmanic從分組中提取)向上發(fā)送(在825處)到用于連接請求接受/拒絕的rdma棧。然后,該過程通過rdma棧從mad緩沖區(qū)的地址句柄結構中讀取字段,并了解覆蓋網絡映射信息。然后,該過程存儲(在825處)所請求的連接的覆蓋映射地址。該過程在目的地vm處接收(在830處)用于接受或拒絕的連接請求。
圖9概念性地圖示在本發(fā)明的一些實施例中執(zhí)行的將rdma連接請求的接受或拒絕從目的地vm發(fā)送到請求vm的過程900。虛線990以上所示的操作由目的地vm執(zhí)行,線995下面所示的操作由目的地rdmanic執(zhí)行,并且線990和995之間所示的操作由目的地主機的rdma棧執(zhí)行。
如圖所示,連接請求由目的地vm處理(在905處)。接下來,過程900將對rdma連接請求的響應發(fā)送(到910處)到roce虛擬化軟件。
roce虛擬化軟件已基于以上參考圖8描述的操作825了解覆蓋網絡路由信息。通過rdma棧,該過程在學習過程期間從保存在rdma棧表中的信息獲得(在915處)與cm-id相關聯的覆蓋網絡地址映射信息。在經由qp1上的mad分組發(fā)送連接接受響應時,目的地主機上的roce虛擬化軟件利用覆蓋網絡映射表填充地址句柄結構,并將mad分組(在920處)發(fā)送到nic。roce硬件從mad緩沖區(qū)的地址句柄結構中查找覆蓋網絡信息、構建外部覆蓋網絡報頭、并利用覆蓋網絡外部報頭封裝mad響應以及在虛擬網絡上發(fā)送(在925處)分組。
圖10概念性地圖示在本發(fā)明的一些實施例中當在請求vm處接收到來自目的地vm的rdma連接請求的接受或拒絕時執(zhí)行的過程1000。虛線1090以上所示的操作由請求rdma連接的vm執(zhí)行,線1095下面所示的操作由與請求vm的主機相關聯的rdmanic執(zhí)行,并且線1090和1095之間所示的操作由請求vm的主機的rdma棧執(zhí)行。
如圖所示,該過程在rdmanic處通過覆蓋網絡從目的地vm接收(在1005處)對rdma地址解析請求的響應。rdmanic去除(在1010處)與覆蓋網絡相關的分組的外部報頭。來自外部報頭的覆蓋網絡信息被消費和驗證(例如,對照vxlan網絡中的源vxlan/vtep信息進行)。該過程確定(在1015處)覆蓋網絡信息是否有效。如果無效,則丟棄分組(在1020處)。
否則,該過程(使用rdmanic)剝離外部覆蓋網絡報頭,并向請求vm發(fā)送(在1025處)rdma連接請求響應。然后,該過程由請求vm接收并處理(在1030處)對rdma連接請求的響應。
3.rdma隊列對創(chuàng)建
在rdma連接完成之前,rdma客戶端創(chuàng)建用于連接的qp。作為rdma連接的一部分,客戶端(例如,請求vm)將客戶端連接參數傳遞到服務器(例如,目的地vm)。連接參數之一是與創(chuàng)建的qp相關聯的qp號。服務器接收該連接信息。在服務器發(fā)送連接接受之前,服務器已經創(chuàng)建了qp。作為連接接受的一部分,服務器將qp號發(fā)送給客戶端。
初始連接mad通過qp1進行交換。一旦建立rdma連接,rdma客戶端和rdma服務器就使用為連接創(chuàng)建的qp運送用于該連接的rdma(例如roce)流量/數據。在一些實施例中,一旦進來對數據隊列對創(chuàng)建的請求,rdma棧就修改隊列對屬性。作為修改隊列對屬性的一部分,覆蓋網絡地址映射信息被添加到隊列對的屬性中。
作為修改隊列對的一部分,隊列對的屬性在roce硬件中進行編程。覆蓋網絡映射信息在硬件中與該隊列對相關聯。換句話說,一旦為連接創(chuàng)建了qp,則qp就通過連接的地址句柄進行修改。
圖11概念性地圖示在本發(fā)明的一些實施例中當由請求建立rdma連接的vm創(chuàng)建隊列對時執(zhí)行的過程1100。虛線1190以上所示的操作由請求vm執(zhí)行,線1195下面所示的操作由與請求vm的主機相關聯的rdmanic執(zhí)行,并且線1190和1195之間所示的操作由請求vm的主機的rdma棧執(zhí)行。
如圖所示,該過程向rdma棧發(fā)送(在1105處)qp創(chuàng)建請求以創(chuàng)建用于連接的qp。通過rdma棧,該過程創(chuàng)建(在1110處)包括與連接相關聯的覆蓋網絡映射信息的qp。然后,該過程將qp發(fā)送(在1115處)到rdmanic。然后,該過程通過包括在qp中的地址映射信息來存儲(在1120處)。
圖12概念性地圖示在本發(fā)明的一些實施例中當目的地vm創(chuàng)建隊列對時執(zhí)行的過程1200。虛線1290以上所示的操作由目的地vm執(zhí)行,線1295下面所示的操作由與目的地vm的主機相關聯的rdmanic執(zhí)行,并且線1290和1295之間所示的操作由目的地vm的主機的rdma棧執(zhí)行。
如圖所示,該過程向rdma棧發(fā)送(在1205處)qp創(chuàng)建請求以創(chuàng)建用于連接的qp。在一些實施例中,在接收到對rdma連接的請求之前,請求vm(或服務器)創(chuàng)建用于rdma連接的qp。然后,服務器監(jiān)聽rdma連接請求。一旦接收到對連接的請求,該過程將qp分配(在1210處)給所請求的連接。該過程然后將與連接相關聯的覆蓋網絡映射信息包括(在1215處)到qp中。然后,該過程將qp發(fā)送(在1220處)到rdmanic。該過程還會復刻(fork)和創(chuàng)建(在1225處)另一個qp并監(jiān)聽下一個rdma連接請求。該過程還通過rdmanic來存儲(在1220處)包括在qp中的地址映射信息。
b.建立的連接上的rdma數據傳輸
一旦qp的屬性在rdmanic硬件中利用覆蓋網絡信息進行編程,在所創(chuàng)建的qp上向下發(fā)送的、被稱為工作請求(wr)的任何數據消息在它們被發(fā)出到虛擬網絡線路上之前,由rdmanic硬件利用相關的覆蓋網絡外部報頭進行封裝。
圖13概念性地圖示在本發(fā)明的一些實施例中為請求使用rdma進行數據傳輸而執(zhí)行的過程1300。虛線1390以上所示的操作由請求vm執(zhí)行,線1395下面所示的操作由與請求vm的主機相關聯的rdmanic執(zhí)行,并且線1390和1395之間的操作由請求vm的主機的rdma棧執(zhí)行。
如圖所示,該過程將來自請求vm的rdma請求發(fā)送(在1305處)到rdmanic。rdma請求指定目的地vm中所請求的緩沖區(qū)以及為連接創(chuàng)建的qp。在rdma寫請求的情況下,要寫入到目的地vm存儲器中的數據也包括在rdma請求中。該過程然后使用(在1315處)與qp相關聯的覆蓋網絡地址映射信息來利用覆蓋網絡外部報頭封裝rdma數據報。該過程然后通過網絡將封裝的rdma數據報發(fā)送(在1320處)到目的地vm。
圖14概念性地圖示在本發(fā)明的一些實施例中執(zhí)行的使用rdma將數據寫入到目的地vm的存儲器中的過程1400。虛線1490以上所示的操作由目的地vm執(zhí)行,線1495下面所示的操作由與目的地vm的主機相關聯的rdmanic執(zhí)行,并且在線1490和1495之間所示的操作由目的地vm的主機的rdma棧執(zhí)行。
如圖所示,該過程在目的地rdmanic處通過覆蓋網絡從請求vm接收(在1405處)rdma請求。rdma數據請求指定目的地vm中所請求的緩沖區(qū)。該過程去除(在1410處)與覆蓋網絡相關的分組的外部報頭。來自外部報頭的覆蓋網絡信息被消費和驗證(例如,對照vxlan網絡中的源vxlan/vtep信息進行)。該過程確定(在1415處)覆蓋網絡信息是否有效。如果無效,則丟棄分組(在1420處)。
否則,通過接收rdmanic,該過程使用(在1425處)rdma請求中的存儲器區(qū)域信息將在rdma分組中接收到的數據從rdmanic直接寫入到目的地vm的存儲器緩沖區(qū)中,從而繞過目的地主機操作系統(tǒng)和內核(即,零拷貝傳輸零拷貝傳輸)。零拷貝是指其中中央處理單元(cpu)不執(zhí)行將數據從一個存儲器區(qū)域復制到另一個存儲器區(qū)域的任務的操作。
圖15概念性地圖示在本發(fā)明的一些實施例中執(zhí)行的使用rdma從目的地vm的存儲器讀取數據的過程1500。虛線1590以上所示的操作由目的地vm執(zhí)行,線1595下面所示的操作由與目的地vm的主機相關聯的rdmanic執(zhí)行,并且線1590和1595之間所示的操作由目的地vm的主機的rdma棧執(zhí)行。
如圖所示,該過程在目的地rdmanic處通過覆蓋網絡接收(在1505處)來自請求vm的rdma請求。rdma數據請求指定目的地vm中所請求的緩沖區(qū)。該過程去除(在1510處)與覆蓋網絡相關的分組的外部報頭。來自外部報頭的覆蓋網絡信息被消費和驗證(例如,對照vxlan網絡中的源vxlan/vtep信息進行)。該過程確定(在1515處)覆蓋網絡信息是否有效。如果無效,則丟棄分組(在1520處)。
否則,通過接收rdmanic,該過程使用(在1525處)rdma請求中的存儲器區(qū)域信息從目的地vm的存儲器緩沖區(qū)1580直接提取數據,從而繞過目的地主機操作系統(tǒng)和內核(即,執(zhí)行零拷貝傳輸)。
然后,該過程使用與連接隊列對相關聯的地址映射信息來利用覆蓋網絡外部報頭封裝(在1530處)包含所請求的數據的rdma數據報。然后,該過程通過覆蓋網絡將封裝的rdma數據報發(fā)送(在1535處)到請求vm。
圖16概念性地圖示在本發(fā)明的一些實施例中執(zhí)行的在請求vm處從目的地vm接收所請求的rdma數據的過程1600。虛線1690以上所示的操作由請求vm執(zhí)行,線1695下面所示的操作由與請求vm的主機相關聯的rdmanic執(zhí)行,并且線1690和1695之間所述的操作由請求vm的主機的rdma棧執(zhí)行。
如圖所示,該過程通過覆蓋網絡從目的地vm接收(在1605處)包括所請求的數據的一個或多個數據報。然后,該過程去除(在1610處)與覆蓋網絡相關的分組的外部報頭。然后,該過程確定(在1615處)覆蓋網絡是否有效。如果無效,則該過程丟棄(在1620處)數據報。
否則,通過rdmanic,該過程使用(在1625處)rdma數據分組中的存儲器區(qū)域信息將數據直接移動到請求vm的存儲器緩沖區(qū)1580中。
如從圖4、圖6和圖8-13中可以看到的,用于地址解析、連接創(chuàng)建和qp創(chuàng)建的命令通過rdma棧來處理。如從圖14-16中可以看到的,實際的rdma數據傳輸直接向/從vm的存儲器緩沖區(qū)和rdmanic完成,從而繞過主機和訪客操作系統(tǒng)的操作系統(tǒng)內核。
ii.電子系統(tǒng)
許多上述特征和應用被實現為軟件過程,其被指定為記錄在計算機可讀存儲介質(也被稱為計算機可讀介質)上的指令集。當這些指令被一個或多個處理單元(例如,一個或多個處理器、處理器核心、或其它處理單元)執(zhí)行時,它們使得該(一個或多個)處理單元執(zhí)行在指令中指示的動作。計算機可讀介質的示例包括,但不限于,cd-rom、閃存驅動器、ram芯片、硬盤驅動器、eprom等。計算機可讀介質不包括無線或通過有線連接傳遞的載波和電子信號。
在本說明書中,術語“軟件”是指包括駐留在只讀存儲器中的固件或者存儲在磁存儲設備中的應用,其可以被讀入到存儲器中以供處理器處理。此外,在一些實施例中,若干軟件發(fā)明可以被實現為更大程序的子部分,同時保持明顯的軟件發(fā)明。在一些實施例中,若干軟件發(fā)明也可以被實現為單獨的程序。最后,一起實現本文所描述的軟件發(fā)明的單獨程序的任意組合是在本發(fā)明的范圍之內。在一些實施例中,當軟件程序被安裝,以在一個或多個電子系統(tǒng)上操作時,軟件程序定義運行和執(zhí)行該軟件程序的操作的一個或多個特定的機器實現。
圖17概念性地示出了實現本發(fā)明的一些實施例的電子系統(tǒng)1700。電子系統(tǒng)1700可以用于執(zhí)行任何上述的控制、虛擬化或操作系統(tǒng)應用。電子系統(tǒng)1700可以是計算機(例如,臺式計算機、個人計算機、平板計算機、服務器計算機、大型機、刀片計算機等)、電話、pda或任何其它種類的電子設備。這種電子系統(tǒng)包括用于各種其它類型的計算機可讀介質的各種類型的計算機可讀介質和接口。電子系統(tǒng)1700包括總線1705、(一個或多個)處理單元1710、系統(tǒng)存儲器1725、只讀存儲器(rom)1730、永久存儲設備1735、輸入設備1740、以及輸出設備1745。
總線1705統(tǒng)一地表示可通信地連接電子系統(tǒng)1700的眾多內部設備的所有系統(tǒng)、外設和芯片組總線。例如,總線1705將(一個或多個)處理單元1710與只讀存儲器1730、系統(tǒng)存儲器1725、永久存儲設備1735可通信地連接。
從這些各種存儲器單元中,(一個或多個)處理單元1710檢索要執(zhí)行的指令和要處理的數據,以便執(zhí)行本發(fā)明的過程。(一個或多個)處理單元在不同實施例中可以是單個處理器或多核心處理器。
只讀存儲器1730存儲由(一個或多個)處理單元1710和電子系統(tǒng)的其它模塊所需的靜態(tài)數據和指令。另一方面,永久存儲設備1735是讀和寫存儲器設備。這個設備是即使當電子系統(tǒng)1700關閉時也存儲指令和數據的非易失性存儲單元。本發(fā)明的一些實施例使用大容量存儲設備(諸如磁或光盤及其對應的盤驅動器)作為永久存儲設備1735。
其它實施例使用可移除存儲設備(諸如軟盤、閃存驅動器等)作為永久存儲設備。與永久存儲設備1735一樣,系統(tǒng)存儲器1725是讀和寫存儲器設備。但是,與存儲設備1735不同,系統(tǒng)存儲器是易失性讀和寫存儲器,諸如隨機存取存儲器。系統(tǒng)存儲器存儲處理器在運行時需要的一些指令和數據。在一些實施例中,本發(fā)明的過程被存儲在系統(tǒng)存儲器1725、永久存儲設備1735和/或只讀存儲器1730中。從這些各種存儲器單元中,(一個或多個)處理單元1710檢索要執(zhí)行的指令和要處理的數據,以便執(zhí)行一些實施例的過程。
總線1705還連接到輸入和輸出設備1740和1745。輸入設備使用戶能夠傳遞信息和選擇到電子系統(tǒng)的命令。輸入設備1740包括字母數字鍵盤和定點設備(也稱為“光標控制設備”)。輸出設備1745顯示由電子系統(tǒng)生成的圖像。輸出設備包括打印機和顯示設備,諸如陰極射線管(crt)或液晶顯示器(lcd)。一些實施例包括諸如用作輸入和輸出設備兩者的觸摸屏的設備。
最后,如在圖17中所示,總線1705還通過網絡適配器(未示出)將電子系統(tǒng)1700耦合到網絡1725。以這種方式,計算機可以是計算機的網絡(諸如局域網(“l(fā)an”)、廣域網(“wan”)、或內聯網、或諸如互聯網之類的網絡的網絡)的一部分。電子系統(tǒng)1700的任何或所有組件可以與本發(fā)明結合使用。
一些實施例包括電子組件,諸如微處理器、在機器可讀或計算機可讀介質(可替代地稱為計算機可讀存儲介質、機器可讀介質或機器可讀存儲介質)中存儲計算機程序指令的存儲設備和存儲器。這種計算機可讀介質的一些示例包括ram、rom、只讀壓縮盤(cd-rom)、可記錄壓縮盤(cd-r)、可重寫壓縮盤(cd-rw)、只讀數字多功能盤(例如,dvd-rom,雙層dvd-rom)、各種可記錄/可重寫dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、閃存存儲器(例如,sd卡、小型sd卡、微型sd卡等)、磁和/或固態(tài)硬盤驅動器、只讀和可記錄
雖然以上討論主要涉及執(zhí)行軟件的微處理器或多核處理器,但是一些實施例通過一個或多個集成電路(諸如專用集成電路(asic)或現場可編程門陣列(fpga))來執(zhí)行。在一些實施例中,這種集成電路執(zhí)行在該電路自身上存儲的指令。
如在本說明書中所使用的,術語“計算機”、“服務器”、“處理器”、以及“存儲器”都是指電子或其它技術設備。這些術語不包括人或人群。為了本說明書的目的,術語顯示或正在顯示意味著在電子設備上顯示。如本說明書中所使用的,術語“計算機可讀介質”、“一個或多個計算機可讀介質”和“機器可讀介質”被完全限制為以由計算機可讀的形式存儲信息的、有形的、物理的對象。這些術語不包括任何無線信號、有線下載信號、以及任何其它短暫或暫時性信號。
雖然本發(fā)明已經參考許多特定細節(jié)進行了描述,但是本領域普通技術人員將認識到,在不脫離本發(fā)明的精神的情況下,本發(fā)明可以以其它特定形式體現。此外,多個圖(包括圖4、6和8-15)概念性地示出了過程。這些過程的特定操作可能沒有以與所示出和描述的確切順序執(zhí)行。特定操作可能沒有在一系列連續(xù)的操作中執(zhí)行,并且不同的特定操作可能在不同的實施例中執(zhí)行。此外,過程可以利用幾個子過程來實現,或者作為較大的宏過程的一部分來實現。
貫穿本說明書提到包括虛擬機(vm)的計算和網絡環(huán)境。但是,虛擬機只是數據計算節(jié)點(dcn)或數據計算端節(jié)點(也被稱為可尋址節(jié)點)的一個示例。dcn可以包括非虛擬化物理主機、虛擬機、在主機操作系統(tǒng)之上運行而不需要管理程序或單獨的操作系統(tǒng)的容器、以及管理程序內核網絡接口模塊。
在一些實施例中,vm使用由虛擬化軟件(例如,管理程序、虛擬機監(jiān)視器等)虛擬化的主機的資源與在主機上其自己的客戶操作系統(tǒng)一起操作。租戶(即vm的所有者)可以選擇在客戶操作系統(tǒng)之上要操作哪些應用。另一方面,一些容器是在主機操作系統(tǒng)之上運行而不需要管理程序或單獨的客戶操作系統(tǒng)的構造。在一些實施例中,主機操作系統(tǒng)使用名稱空間將容器彼此隔離,并且因此提供在不同容器內操作的不同應用組的操作系統(tǒng)級隔離。這種隔離類似于在虛擬化系統(tǒng)硬件的管理程序虛擬化環(huán)境中提供的vm隔離,并且因此可以被視為隔離在不同容器中操作的不同應用組的一種虛擬化形式。這種容器比vm更輕巧。
在一些實施例中,管理程序內核網絡接口模塊是包括具有管理程序內核網絡接口和接收/發(fā)送線程的網絡棧的非-vmdcn。管理程序內核網絡接口模塊的一個示例是作為vmware公司的esxitm管理程序的一部分的vmknic模塊。
本領域普通技術人員將認識到,雖然本說明書提到vm,但是給出的示例可以是任何類型的dcn,包括物理主機、vm、非-vm容器和管理程序內核網絡接口模塊。事實上,在一些實施例中,示例網絡可以包括不同類型的dcn的組合。
因此,鑒于上述,本領域普通技術人員將理解,本發(fā)明不受上述說明性細節(jié)的限制,而是由所附權利要求來限定。