啟用主機的管理信道的制作方法
【專利摘要】在目標虛擬機(VM)和與該VM通信的主機或應用之間提供邏輯通信路徑。目標VM在具有管理程序和代理的管理程序主機上運行。管理程序管理VM的執行。指示哪些VM在哪些主機上執行的映射被維護。當主機或應用要將消息或分組發送到目標VM時,該映射被查閱并且托管該目標VM的管理程序主機被標識出。可以標識目標VM的消息或分組被傳送至管理程序主機。在管理程序主機處的代理選擇管理程序和目標VM之間的通信信道。管理程序隨后通過所選擇的信道把消息或分組傳遞到目標VM。
【專利說明】啟用主機的管理信道
[0001]背景
[0002]在機器虛擬化領域,虛擬機(VM)具有網絡功能。也即,VM可以實現網絡協議棧以經由網絡與其他VM或物理機器通信。例如,虛擬化主機(例如,Hyper-V (TM)主機)可以形成托管客VM的虛擬機結構的一部分,其中結構控制器管理虛擬化結構(如在此背景中所使用的,“主機”可指例如結構控制器,或者任何其他計算機)。然而,由于各種原因,在網絡上的主機和VM之間可能不存在網絡連接,即使在該主機和運行該VM的機器(被稱作“VM主機”)之間存在網絡連接。例如,VM可能在主機不屬于的虛擬專用網絡(VPN)上并且該VM的網絡地址可能在該主機的網路上無效。防火墻可能阻止從該主機的網絡訪問VM,而允許在VM主機的網絡上訪問VM。VM可能只是在可能需要與VM通信的主機不同的網絡上。
[0003]在某些情況下,使用諸如HTTP (超文本傳輸協議)、SOAP (簡單對象訪問協議)、WMI(TM) (Windows管理工具)、WS管理協議(經由HTTP通過基于SOAP的協議傳輸WMI調用)等標準協議來與VM通信是合乎需要的。例如,在某些數據中心或云中,VM可具有在其上運行的可能通過針對控制(例如,通過HTTP的WMI)或數據(經由HTTP的BITS)的一個或多個通信信道來執行管理功能(諸如,向客操作系統應用補丁、處理云結構任務等)的網絡代理或服務。這些管理服務或代理由例如控制器主機上運行的管理應用(例如,結構控制器)控制。管理應用向VM的網絡地址發送例如HTTP分組的分組,并且HTTP分組被遞送至管理代理。管理代理可以響應于分組的載荷中的信息來執行功能。然而,當管理應用沒有到VM的網絡連接時,調用VM上的管理代理是不可能的。
[0004]下面討論經由管理程序和VM之間的通信信道啟動與VM通信的技術。
[0005]概述
[0006]以下概述僅是為了介紹在以下詳細描述中討論的某些概念而被包括的。本概述并不是全面的,并且不旨在描繪所要求保護的主題的范圍,該范圍由所附的權利要求書來闡明。
[0007]在目標虛擬機(VM)和與該VM通信的主機或應用之間提供邏輯通信路徑。例如,虛擬化主機和VM之間的路徑。目標VM在具有管理程序和代理(例如,HTTP代理)的管理程序主機上運行。管理程序管理VM的執行。指示哪些VM在哪些主機上執行的映射被維護。當主機或應用要將消息或分組發送到目標VM時,該映射被查閱并且托管該目標VM的管理程序主機被標識出。可以標識目標VM的消息或分組被傳送至管理程序主機。在管理程序主機處的代理選擇管理程序和目標VM之間的通信信道。管理程序隨后通過所選擇的信道把消息或分組傳遞到目標VM。
[0008]許多附帶特征將參考以下的詳細描述并結合附圖考慮以在下文解釋。
[0009]附圖簡述
[0010]根據附圖閱讀以下詳細描述,將更好地理解本發明,其中在所附描述中使用相同的附圖標記來指代相同的部分。
[0011]圖1示出示例虛擬化層。
[0012]圖2示出與虛擬機和虛擬機映像有關的虛擬化層的過程和交互。[0013]圖3示出應用與在由VM托管的客操作系統上運行的代理進行通信的示例。
[0014]圖4示出應用和VM之間的邏輯通信路徑的概覽。
[0015]圖5示出客戶端主機發起與VM的連接。
[0016]圖6示出管理程序主機處理來自客戶端主機的分組。
[0017]詳細描述
[0018]以下討論的實施例涉及使用VM/管理程序主機上的內部通信信道來允許外部網路通信。討論將從虛擬化技術和虛擬化層(也被稱作管理程序)的概覽開始。接下來描述應用和VM之間的網絡通信的示例。將說明使用管理程序主機上的專用信道的邏輯通信路徑的概覽。最后,將詳細地描述這種通信路徑的細節,該通信路徑包括在該通信路徑的一端處的應用以及在該通信路徑的另一端處的管理程序主機(VM主機)。
[0019]機器虛擬化
[0020]圖1示出示例虛擬化層100。計算機102具有硬件104,該硬件104包括中央處理單元(CPU) 106、存儲器108、網絡接口 110、非易失性存儲112以及諸如總線、顯示適配器等沒有示出的其他組件。虛擬化層100管理和促進虛擬機114的執行。盡管圖1中未示出,每個虛擬機114通常具有相關聯的虛擬盤映像和客操作系統。為簡明起見,虛擬機114的操作系統和可能的應用軟件有時會被稱作訪客,訪客存儲在與虛擬機114相關聯的虛擬盤映像中并且從與虛擬機114相關聯的虛擬盤映像中執行。為方便起見,術語“管理程序”在本文中將被用來指各種形式的虛擬化層。此外,如下文將討論的,虛擬機114被用來托管分布式應用的各元素。
[0021]虛擬化層100可以是任何種已知或未來的實現,諸如Hyper-V服務器(TM)、VMWareESX服務器(TM)、Xen、0racle VM (TM)等。虛擬化層的架構可以是虛擬機監視器(VMM)在主機操作系統上運行的托管類型,或者是管理程序等在計算機102的硬件104上直接運行的裸金屬類型。如本文中所使用的,術語“虛擬機”是指模擬任何特定的硬件架構(例如,x86)能夠運行該硬件架構的本機代碼的系統型虛擬機;對于訪客而言,虛擬機與硬件機器可能是幾乎不可區分的。在本文中所討論的虛擬機不是諸如Java虛擬機等抽象或進程型的虛擬機。
[0022]虛擬化層100執行管理虛擬機114以及由其本身和虛擬機114 二者共享硬件104的基本功能。可以使用各種技術中的任何一種把虛擬機114和硬件104隔離開。在一個實施例中,虛擬化層可以提供與虛擬機114相對應的不同的隔離環境(S卩,分區或域)。虛擬化層100中的一些,諸如共享虛擬設備驅動程序、虛擬機內通信設施和虛擬機管理API (應用編程接口),可以在一個特殊的特權分區或域中運行,從而允許緊湊且高效的管理程序。在其他實施例中,用于虛擬機管理和對硬件104的一致共享的功能可以駐留在單片金屬上(on-the-metal)系統管理程序中。
[0023]圖2示出與虛擬機114和虛擬機映像140有關的虛擬化層100的過程和交互。虛擬化層100可能根據相應的虛擬機配置參數執行啟動并執行虛擬機114的過程142。當虛擬機(VM)114被啟動時,虛擬化層標識相關聯的虛擬機映像140。在實踐中,任何虛擬機114可以使用任何虛擬機映像140。虛擬機映像140可以是虛擬化層100的文件系統141上的經特殊格式化的文件(如,VHD)。虛擬化層100加載所標識的虛擬機映像140。啟動的虛擬機114也許通過尋求主引導記錄或其他引導信息來安裝和讀取虛擬機映像140,并且引導開始執行的客操作系統。
[0024]虛擬化層100管理虛擬機114的執行,處理對訪客的內核的特定調用、超級調用等,以及協調虛擬機114對底層硬件104的訪問。隨著訪客及其軟件運行,虛擬化層100可以維護虛擬盤映像140上的訪客的狀態;當訪客或由訪客運行的應用向“盤”寫數據時,虛擬化層100將該數據轉換成虛擬盤映像140的格式并寫入到該映像。
[0025]虛擬化層100可以執行用于關閉虛擬機114的過程144。當接收到停止虛擬機114的指令時,虛擬機114及其訪客的狀態被保存到虛擬盤映像140,并且執行中的虛擬機114的過程(或分區)被刪除。可以保留虛擬機114的規范以用于虛擬機114的稍后重啟。
[0026]對虛擬機通信的概覽
[0027]圖3示出應用180與在由VM186托管的客操作系統(訪客184)上運行的代理182進行通信的示例。可以是例如管理應用的應用180在客戶端主機188上運行,該客戶端主機188可以是具有用于允許經由網絡190通信的網絡接口卡(NIC) 189的普通計算機。客戶端主機188具有包括各種協議實現的協議棧,各種協議實現包括應用協議實現192 (由應用180實現)、傳輸協議實現194和網絡協議實現196。
[0028]訪客184也具有上述協議的實現,管理程序主機198上的管理程序196 —樣具有上述協議的實現。管理程序主機198是運行管理VM186的執行的管理程序196的計算機。代理182 (也稱作“訪客代理182”)駐留在訪客184上并且可以實現與應用180所實現的相同的應用協議。應用180和訪客182可以是任何種軟件,例如后臺網絡服務、交互應用、可執行應用、較大的應用或套件的組件,等等。在一個實施例中,應用180可以是管理VM的虛擬機管理應用,并且代理182根據與應用180的通信執行管理功能。
[0029]VM186的執行由管理程序196管理,管理程序196可以管理圖3中未示出的其他VM0在客戶端主機188和VM186之間的直接連接可能的情況下,應用180和代理182經由網絡190如下通信。應用180根據應用協議192 (例如,HTTP分組或消息)形成應用消息。應用180請求其本地操作系統向管理程序主機198的網絡地址(例如,HTTP地址)發送消息。本地操作系統的協議棧開啟到管理程序主機198的連接,把應用180的消息封裝在傳輸載荷中并把該傳輸載荷封裝在網絡分組202中。其網絡頭部(包含管理程序主機198的網絡地址)通過網絡190被路由到管理程序主機198。管理程序主機192可以把分組202傳遞到VM186并繼而到訪客184和訪客代理182。按此方式,各種載荷被相應的協議實現提取,并且訪客代理182接收所傳送的應用消息(例如,“命令foo”)。過程是相似的,但在訪客代理182把應用消息傳送到應用192時相反。
[0030]如在本文中所使用的,術語“客戶端”、“客戶端主機”、“應用”以及“代理”、“管理程序”和“管理程序主機”以其最寬泛的含義被使用。使用本文中所述各技術來進行通信的特定平臺和軟件較不重要的。事實上,值得注意的是現有應用級軟件和協議可以使用以下所述的通信技術而無需顯著的修改(如果有的話),尤其在經由網絡(例如,應用180)與VM通信的那端。此外,盡管有時為了說明而提及了 HTTP、IP (因特網協議)、以及TCP/UDP (傳輸控制協議/通用數據報協議)協議,以下描述的通信技術可以與任何標準聯網協議或其版本(例如,SOCKS)—起工作。此外,為簡明起見,“HTTP”將被認為指HTTP及HTTPs (HTTP安全)的各種版本及各種變體。
[0031]邏輯通信路徑,應用和管理稈序實施例[0032]圖4示出應用180和VM186之間的邏輯通信路徑220的概覽。管理程序主機198上的代理222使客戶端主機188與VM186橋接。可以假設VM186和客戶端主機188具有通信所必須的網路組件(例如,協議棧)但是不能直接通信。例如,網絡190可能不能在它們之間路由網絡分組(例如,任意一方在網絡190上不可尋址)。然而,在客戶端主機188處,網絡分組223可以被引導至虛擬化層的網絡地址(管理程序主機198的地址)。當分組223被接收到時,代理222確定分組223意在被VM186接收并且致使虛擬化層(管理程序)通過專用或本地通信信道224向VM186傳遞該分組。
[0033]在一個實施例中,VM-主機映射地圖226包含指示哪些VM駐留在哪些管理程序主機上的信息。客戶端主機188可以使用已知的VM186的標識符(可能被應用180所知道)來在VM主機映射226中查找管理程序主機198的網絡地址。該標識符可以被添加到分組223以供代理222使用。客戶端主機188將分組223發送到查找到的管理程序主機198的網絡地址,網絡190使用該查找到的地址將分組223路由226到管理程序主機198。如上所述,代理222使用VM186的標識符(例如,來自HTTP連接頭部)來使得虛擬化層向VM186傳遞分組 223。
[0034]圖5示出客戶端主機188發起與VM186的連接。客戶端主機188具有對VM-主機映射226的訪問。客戶端主機188執行用于與VM186通信的過程250。在步驟252,與特定VM186通信的請求254被接收,該請求可能是應用180的邏輯的一部分,或者可能接收自外部實體。在步驟256,VM186的標識符(例如,圖5中的“VM1”)被用來查找其上駐留有VM186的主機;即管理程序主機186。該查找可以返回管理程序主機198的網絡地址或者網絡主機名(如在本文中所使用的,假設“網絡地址”包括數字地址和可以被解析為數字地址的主機名這兩者)。在步驟258,形成包括實質載荷(例如,應用協議消息)的分組223。在使用HTTP的實施例中,在步驟258形成的分組223是HTTP分組并且管理程序主機的網絡地址被包括在該HTTP頭部中。在步驟260,使用管理程序的網絡地址(圖5中的“網絡addrl”,例如“128.1.2.3”)將分組223傳送至網絡190。
[0035]在一個實施例中,過程250可以完全地或者部分地由應用180執行。在另一個實施例中,應用180可以充當要與VM186通信的其他應用的代理或服務。這些應用向應用180傳遞VM標識符和消息正文,并且應用180構建該正文的分組、添加VM標識符以及將該分組傳送到相應的管理程序主機。在又一個實施例中,不是維護查找表(VM-主機映射226),VM標識符可以是向DNS (域名服務)服務器注冊的、映射到與VM相對應的管理程序主機的網絡地址的全局唯一主機名(可能具有局部的或有限的范圍以避免沖突)。在這種情況下,當應用或者客戶端主機想要與VM通信時,它經由本地DNS服務器來查找VM的標識符(例如,“假”DNS名)以獲取正確的管理程序主機的網絡地址。
[0036]只要代理222和客戶端主機/應用共享相同的名稱,VM標識符的形式并不重要。系統可以使用命名VM的任何約定,例如定制URI(統一資源標識符)格式,諸如“主機”。
[0037]圖6示出管理程序主機198處理來自客戶端主機188的分組223。代理222結合虛擬化層或管理程序192 —起操作以執行過程280。在步驟282,管理程序主機198接收分組223,分組223包括目標VM (即,VM186)的VM標識符(例如“VM1 ”、“主機1: VMl”等)。代理222提取VM標識符,并且在步驟283在信道表284中查找VM標識符。信道表283將通信信道224、224A映射到相應的VM186、186A。每個通信信道224、224A可以具有包括管理程序側端點286和VM側端點288 (在一個實施例中,VM側端點286是VM186的虛擬NIC)的一對通信端點。如果步驟283沒有發現通信信道,執行步驟290并且創建新的信道。到新的信道的引用隨后被添加到信道表284。注意,虛擬NIC或管理NIC可以是連接與主機和各VM連接的內部網絡交換機的虛擬總線網絡適配器;各VM具有自動內部IP地址(例如,在169的范圍內)。在一個實施例中,維護與內部網絡交換機相關聯的ACL (訪問控制列表)以防止每一訪客VM未經許可彼此通信;在ACL中沒有顯式許可時,主機到VM的通信被允許但是VM-VM通信不被允許。
[0038]為分組223標識出了正確的通信信道224后,在步驟292,管理程序192和/或代理222將分組223傳遞到通信信道224。繼而,VM186執行過程294。在步驟296,訪客184接收分組223。在步驟298,基于分組223,訪客184將分組223傳遞到訪客代理182,訪客代理182繼續服務于分組223的實質內容(例如,執行“命令foo”)。例如,分組223的應用-協議類型(例如,HTTP)可以被訪客映射到訪客代理182監聽的端口號。也即,訪客代理182可以監聽特定端口(例如,用于管理的指定的WS-管理端口 5986,用于數據的BITS端口8114,等等)。代理222 (例如,HTTP代理)監聽(管理程序主機186的)外部IP地址的相同端口(5986,8114)。代理222隨后將任何傳入流量轉發到訪客VM中的相應端口上,從而允許在訪客VM上復用各種控制和數據流量。
[0039]關于這些通信信道,在一個實施例中,這些通信信道基于用來向管理程序主機198遞送分組223的相同的網絡和/或傳輸協議。實際上,通信信道可以是管理程序主機192和VM186之間的受限專用網絡連接。在另一個示例中,代理222可以在向VM186轉發分組223之前查看分組223并改變頭部信息或以其他方式修改分組223。
[0040]實際上,從應用180和訪客代理182的角度來看,這兩者能夠使用普通網絡通信協議和地址來交換應用級通信,與VM能從客戶端主機188處被直接地訪問或尋址時它們可能做的事情非常像。關于接收分組,代理222的作用和各已知代理的作用非常像。
[0041 ] 如上所述,通信還可以源自訪客184或訪客代理182內,并且通過通信信道和虛擬化層被傳遞至代理222。例如,訪客代理182可以被配置有客戶端主機188的網絡地址。代理222繼而將源自訪客的分組傳送到客戶端主機188。
[0042]在一個實施例中,為了提供VM的可見性,管理程序主機(VM在其上運行的主機)可以在VM被創建時自注冊VM。例如,管理程序主機可以為新VM向VM-主機映射表226添加標識主機和新VM的新條目。
[0043]
[0044]以上討論的實施例和特征都可用儲存在易失性或非易失性計算機或設備可讀介質中的信息的形式來實現。這被認為至少包括諸如光學存儲(例如,緊致盤只讀存儲器(CD-ROM))、磁介質、閃速只讀存儲器(ROM)或存儲數字信息的任何現有或未來手段等介質。所存儲的信息可采用機器可執行指令(例如,經編譯的可執行二進制代碼)、源代碼、字節代碼或可用于允許或配置計算機設備來執行上述各實施例的信息的任何其它形式。這還被認為至少包括諸如隨機存取存儲器(RAM)和/或在程序的執行以實現一實施例的期間存儲諸如中央處理單元(CPU)指令等信息的虛擬存儲器等易失性存儲器,以及存儲允許程序或可執行代碼被加載和執行的信息的非易失性介質。實施例和特征可在任何類型的計算設備上執行,這些計算設備包括便攜設備、工作站、服務器、移動無線設備等。
【權利要求】
1.一種用于在第一主機上運行的目標虛擬機(VM)和第二主機上運行的應用之間提供網絡連接的方法,所述方法包括: 經由所述第一主機處的網絡來接收由所述應用發起的連接請求,所述請求包括標識所述目標VM的信息; 在管理所述VM的管理程序和所述目標VM之間形成通信信道;以及 通過所述信道將所述請求傳遞到所述目標VM。
2.根據權利要求1所述的方法,其特征在于,所述通信信道僅對所述管理程序和所述目標VM可訪問,從而使所述第一主機上的另一 VM在沒有授權的情況下不能使用所述通信信道與所述目標VM通信。
3.根據權利要求1所述的方法,其特征在于,所述分組包括因特網協議分組,其中所述第一主機具有第一因特網協議(IP)地址,所述第二主機具有第二 IP地址,并且所述目標VM具有第三IP地址,其中所述網絡不能將分組從所述第二主機的第二 IP地址路由到所述VM的第三IP地址。
4.根據權利要求3所述的方法,其特征在于,還包括通過所述第二主機將分組尋址到所述第一 IP地址來將所述分組從所述第二主機發送到所述第一主機。
5.根據權利要求4所述的方法,其特征在于,所述分組包括符合應用級協議的載荷,所述方法還包括在所述分組已經通過通信信道被所述VM接收之后將所述載荷遞送到在所述VM上執行的代理。
6.根據權利要求1所述的方法,其特征在于,所述通信信道包括所述管理程序的內部網絡交換機和由所述管理程序提供并被分配給所述目標VM的虛擬網絡接口卡。
7.根據權利要求1所述的方法,其特征在于,所述管理程序和所述第一主機上的代理協作以允許所述第二主機使用標準網絡協議與所述目標VM通信。
8.一種或多種存儲使計算機能夠執行一種過程的信息的計算機可讀存儲介質,所述過程包括: 執行虛擬機(VM)和所述VM上的客操作系統,其中所述VM包括網絡級協議的實現和傳輸協議的實現,并且其中所述VM的執行由所述計算機上的管理程序管理; 執行所述計算機上的代理;以及 在所述計算機處接收分組,所述分組符合協議并且已經使用網絡協議被尋址并發送到所述計算機的網絡地址,其中所述代理確定所述VM要接收所述分組,并且作為響應所述管理程序通過所述VM和所述管理程序之間的專用通信信道(224)將所述分組傳遞到所述VM。
9.根據權利要求8所述的一種或多種計算機可讀存儲介質,其特征在于,所述VM實現所述網絡協議并且具有根據所述網絡協議的網絡地址,經由所述網絡將所述分組傳送到所述計算機的主機不具有經由所述網絡和所述網絡協議與所述VM的所述網絡地址的直接連接。
10.根據權利要求8所述的一種或多種計算機可讀存儲介質,其特征在于,所述過程還包括在所述計算機處維護指示哪些VM對應于被所述管理程序管理的哪些VM的信道信息。
11.一種方法,其中第一主機包括管理所述第一主機上的虛擬機(VM)的執行的虛擬化層,所述方法包括: 建立所述虛擬化層和VM之間的通信信道,所述VM包括所述第一主機上的VM之一,所述通信信道具有在所述虛擬化層中的第一端點和在所述VM中的第二端點; 在所述第一主機經由網絡從第二主機接收分組;以及 由在所述第一主機上執行的代理啟用所述第二主機和所述VM之間的間接網絡連接,致使所述虛擬化層通過所述通信信道之一將所述分組傳遞到所述VM。
12.根據權利要求11所述的方法,其特征在于,所述方法還包括維護分別與所述虛擬化層和所述VM之間的各通信信道相關聯的關聯信息,并且當分組被所述代理處理時,所述代理使用所述關聯信息來選擇要將所述分組攜帶到所述VM之一的通信信道。
13.根據權利要求12所述的方法,其特征在于,所述代理包括管理超文本傳輸協議(HTTP)0
14.根據權利要求13所述的方法,其特征在于,所述分組包括HTTP頭部,所述HTTP頭部包括標識所述VM的標識符,并且所述代理讀取所述HTTP頭部,提取所述標識符以及使用所述標識符來選擇要接收所述分組的信道。
15.根據權利要求11所述的方法,其特征在于,所述VM的客操作系統實現傳輸協議和網絡協議以允許經由所述訪客的網絡地址到所述客操作系統的連接,其中所述第二主機無法使用所述網絡協議和所述網絡地址經由所述網絡直接連接到所述VM,其中所述方法還包括所述第二主機將所述分組 尋址到所述第一主機的網絡地址。
【文檔編號】H04L29/06GK103621041SQ201280031632
【公開日】2014年3月5日 申請日期:2012年6月6日 優先權日:2011年6月27日
【發明者】R·弗萊爾斯, S·帕塔薩拉蒂, A·薩格維, A·拉瑪拉丁納姆, M·吉爾 申請人:微軟公司