本申請是2015年5月11日提交的美國專利申請No.14/708,685的后續(xù)申請,美國專利申請No.14/708,685要求2014年5月12日提交的名為“管理NIC加密流以用于遷移客戶或任務(wù)(MANAGINGNIC-ENCRYPTED FLOWS FOR MIGRATING GUESTS OR TASKS)”的美國臨時專利申請No.61/991,784的優(yōu)先權(quán),通過引用將其全部內(nèi)容合并于此。
背景技術(shù):
虛擬機(VM)上的客戶從主機服務(wù)器到目標服務(wù)器的遷移不僅可能影響數(shù)據(jù)的位置,而且影響與客戶以及服務(wù)器交互的各種外部計算裝置。技術(shù)進步已經(jīng)解決了與本機遷移相關(guān)聯(lián)的一些問題,本機遷移可以有效地中止客戶執(zhí)行,直到遷移結(jié)束。就此而言,可以采用限電和停電階段來縮短客戶的中止時間,使得唯一的中止是在停電階段,以傳送臟頁面。如果在多個服務(wù)器和計算裝置中采用加密,那么每個服務(wù)器和計算裝置都可能需要知道與目標服務(wù)器相關(guān)聯(lián)的不同的加密和解密密鑰。
技術(shù)實現(xiàn)要素:
本公開的方面提供一種計算機實施的系統(tǒng)和方法。該方法包括:利用一個或多個處理器準備將信息發(fā)送至目標計算裝置,所述信息至少包括流密鑰和多個數(shù)據(jù)分組中的第一數(shù)據(jù)分組;利用所述一個或多個處理器,通過利用接收主密鑰將所述流密鑰加密來生成接收令牌;利用所述流密鑰將所述第一數(shù)據(jù)分組加密;以及將經(jīng)加密的第一數(shù)據(jù)分組和接收令牌發(fā)送至所述目標計算裝置。
在附加示例中,該方法包括:將所述信息發(fā)送至網(wǎng)絡(luò)適配器;在所述網(wǎng)絡(luò)適配器上存儲所述信息和所述接收令牌作為元組,所述元組對應(yīng)于流ID;以及將所述接收令牌、流密鑰、第一數(shù)據(jù)分組、以及封裝信息作為元組發(fā)送至所述目標服務(wù)器。在另一個示例中,該方法可包括:通過利用發(fā)送主密鑰將接收主密鑰、流密鑰、以及第一數(shù)據(jù)分組加密來生成發(fā)送令牌,其中,所述發(fā)送令牌封裝接收主密鑰、流密鑰、以及第一數(shù)據(jù)分組;將所述發(fā)送令牌發(fā)送至網(wǎng)絡(luò)適配器;以及在所述網(wǎng)絡(luò)適配器上將所述接收主密鑰、流密鑰、以及數(shù)據(jù)分組解密。在該示例中,該方法可進一步包括:從第一表中檢索發(fā)送令牌;將所檢索的發(fā)送令牌復(fù)制到第二表中;以及將所復(fù)制的發(fā)送令牌發(fā)送至所述網(wǎng)絡(luò)適配器。在其他示例中,所述第一表和所述第二表包括可靠性數(shù)目,所述可靠性數(shù)目與所述發(fā)送令牌相對應(yīng),且該方法進一步包括:更新與第一表相關(guān)聯(lián)的發(fā)送令牌;響應(yīng)于所述更新而遞增與所述第一表的所述發(fā)送令牌相關(guān)聯(lián)的所述可靠性數(shù)目。此外,在本示例中,該方法可進一步包括:在將所述發(fā)送令牌復(fù)制到第二表中之前,檢查與第一表中的發(fā)送令牌相對應(yīng)的所述可靠性數(shù)目;將所述可靠性數(shù)目存儲在所述第二表中;在復(fù)制發(fā)送令牌之后,在第一表以及第二表中驗證與發(fā)送令牌相對應(yīng)的所述可靠性數(shù)目在所述第一表以及所述第二表中相同;以及當所述可靠性數(shù)目不同時,再次檢索所述發(fā)送令牌。進而,該方法可進一步包括:當所述可靠性數(shù)目相同時,將所復(fù)制的發(fā)送令牌發(fā)送至所述網(wǎng)絡(luò)適配器。作為另一個示例,該方法包括:在目標計算裝置處接收經(jīng)加密的第一數(shù)據(jù)分組和接收令牌;利用接收主密鑰將接收令牌解密;響應(yīng)于將接收令牌解密而識別所述流密鑰;以及利用所識別的流密鑰將第一數(shù)據(jù)分組解密。
本公開的另一個方面提供一種包括主機計算裝置的系統(tǒng)。所述主機計算裝置可包括存儲器以及一個或多個處理器,所述一個或多個處理器被配置為:準備用于發(fā)送至目標計算裝置的信息,所述信息至少包括流密鑰和多個數(shù)據(jù)分組的第一數(shù)據(jù)分組;通過利用接收主密鑰將所述流密鑰加密來生成接收令牌;利用所述流密鑰將所述第一數(shù)據(jù)分組加密;以及將經(jīng)加密的第一數(shù)據(jù)分組和接收令牌發(fā)送至所述目標計算裝置。
作為另一個示例,所述主機裝置的一個或多個處理器可將所述信息發(fā)送至網(wǎng)絡(luò)適配器,在所述網(wǎng)絡(luò)適配器上存儲所述信息和所述接收令牌作為元組,所述元組與流ID相對應(yīng);以及將所述接收令牌、流密鑰、第一數(shù)據(jù)分組、以及封裝信息作為元組發(fā)送至目標服務(wù)器。作為另一個示例,系統(tǒng)可通過利用發(fā)送主密鑰將所述接收主密鑰、流密鑰、以及第一數(shù)據(jù)分組加密來生成發(fā)送令牌,其中發(fā)送令牌封裝所述接收主密鑰、流密鑰、以及第一數(shù)據(jù)分組;將發(fā)送令牌發(fā)送至所述網(wǎng)絡(luò)適配器;以及在所述網(wǎng)絡(luò)適配器上將所述接收主密鑰、流密鑰、以及數(shù)據(jù)分組解密。在該示例中,系統(tǒng)可以進一步從第一表中接收發(fā)送令牌;將所檢索的發(fā)送令牌復(fù)制到第二表中;以及將所復(fù)制的發(fā)送令牌發(fā)送至網(wǎng)絡(luò)適配器。在該示例的其他實施例中,所述第一表和所述第二表包括可靠性數(shù)目,所述可靠性數(shù)目對應(yīng)于發(fā)送令牌,且一個或多個處理器被進一步配置為:更新與所述第一表相關(guān)聯(lián)的所述發(fā)送令牌;響應(yīng)于所述更新而遞增與所述第一表的所述發(fā)送令牌相關(guān)聯(lián)的所述可靠性數(shù)目。作為附加示例,所述系統(tǒng)可以在將所述發(fā)送令牌復(fù)制到第二表中之前,檢查與所述第一表中的所述發(fā)送令牌相對應(yīng)的所述可靠性數(shù)目;將所述可靠性數(shù)目存儲在所述第二表中;在復(fù)制所述發(fā)送令牌之后,驗證與發(fā)送令牌相對應(yīng)的所述可靠性數(shù)目在所述第一表以及所述第二表中相同;以及當所述可靠性數(shù)目不同時,再次檢索所述發(fā)送令牌。在以上示例的相反情況下,所述系統(tǒng)可以在所述可靠性數(shù)目相同時將所復(fù)制的發(fā)送令牌發(fā)送至所述網(wǎng)絡(luò)適配器。最后,作為另一個示例,所述系統(tǒng)可以在所述目標計算裝置處接收所述信息和所述接收令牌;利用所述接收主密鑰將所述接收令牌解密;響應(yīng)于將所述接收令牌解密識別所述流密鑰;以及利用所識別的流密鑰將所述第一數(shù)據(jù)分組解密。
本公開的另一個方面提供一種包括目標計算裝置的系統(tǒng)。所述目標計算裝置可包括存儲器以及與所述存儲器通信的一個或多個處理器。所述一個或多個處理器可以被配置為:接收來自托管計算裝置的接收令牌和加密數(shù)據(jù)分組;利用所述接收主密鑰將所述接收令牌解密;響應(yīng)于將所述接收令牌解密而識別流密鑰;以及利用所識別的流密鑰將所述數(shù)據(jù)分組解密。
在另一個示例中,所述目標計算裝置的所述一個或多個處理器可以被進一步配置為:將客戶虛擬機從托管計算機向目標計算裝置遷移的指示發(fā)送至外部計算機;以及發(fā)送與所述目標計算裝置相關(guān)聯(lián)的IP地址。作為另一個示例,所述目標計算裝置的所述一個或多個處理器可以被進一步配置為:接收與所述托管服務(wù)器相關(guān)聯(lián)的接收者流密鑰;基于與所述目標計算裝置相關(guān)聯(lián)的所述接收主密鑰計算新的接收者流密鑰;以及將所述新的接收者流密鑰發(fā)送至所述外部計算機。最后,作為另一個示例,所述一個或多個處理器可以被進一步配置為:在與所述外部計算機通信時利用所識別的流密鑰將數(shù)據(jù)分組加密。
附圖說明
圖1是根據(jù)本公開方面的客戶的分組的示例性遷移。
圖2是根據(jù)本公開方面的駐留在主機服務(wù)器上的網(wǎng)絡(luò)接口控制器(“NIC”)的方框圖。
圖3是根據(jù)本公開方面的從主機服務(wù)器的NIC傳輸至目標服務(wù)器的NIC的元組的示例。
圖4是根據(jù)本公開方面的用于將數(shù)據(jù)分組從主機服務(wù)器傳輸?shù)侥繕朔?wù)器的示例發(fā)送令牌方案。
圖5是根據(jù)本公開方面的利用代編號復(fù)制列隊分組的示例。
圖6是根據(jù)本公開方面的將主機服務(wù)器的主密鑰變換為目標服務(wù)器的主密鑰的示例計算。
圖7是根據(jù)本公開方面的目標服務(wù)器將遷移通知給傳輸服務(wù)器的示例。
圖8是圖示出本公開方面的流程圖。
具體實施方式
本技術(shù)一般涉及將虛擬機的客戶從主機服務(wù)器遷移到目標服務(wù)器,同時避免連接中斷并繼續(xù)準確地加密數(shù)據(jù)。例如,主機服務(wù)器上的虛擬機可能需要遷移到目標服務(wù)器。在這種情況下,與主機服務(wù)器相關(guān)聯(lián)的監(jiān)控器可以在客戶服務(wù)器與網(wǎng)絡(luò)接口控制器(NIC)之間協(xié)作并最終與目標服務(wù)器協(xié)作。
主機服務(wù)器可以使用流密鑰來加密和解密主機服務(wù)器與目標服務(wù)器之間的通信。當涉及遷移客戶時,可通過接收主密鑰將流密鑰加密,這可以產(chǎn)生接收密鑰。作為一個示例,該過程可在主機服務(wù)器的監(jiān)控器上發(fā)生。然后監(jiān)控器可將該接收令牌(連同其中封裝的流密鑰一起)發(fā)送給主機服務(wù)器的NIC。然后NIC利用流密鑰將數(shù)據(jù)分組加密,并將加密的數(shù)據(jù)分組、接收令牌、以及封裝信息發(fā)送給目標服務(wù)器。
主機服務(wù)器可以采用兩種不同方案將接收令牌和數(shù)據(jù)分組發(fā)送給目標服務(wù)器。在第一方案中,可以實施交易表,其中存儲通過對應(yīng)的流標識符加索引的元組。元組例如可以存儲接收令牌,在這種情況下可將元組照原樣發(fā)送給目標服務(wù)器。在第二方案中,可以實施發(fā)送者令牌方案。在發(fā)送令牌方案中,作為一個示例,監(jiān)控器利用發(fā)送者主密鑰將接收令牌加密(這產(chǎn)生發(fā)送令牌)。然后監(jiān)控器可將發(fā)送令牌發(fā)送給主機服務(wù)器。NIC可將發(fā)送令牌解密,識別流密鑰和接收令牌,利用流密鑰將數(shù)據(jù)分組加密,然后將除了發(fā)送令牌之外的所有東西傳輸給目標服務(wù)器。
根據(jù)另一個示例,每次從只讀陣列中檢索發(fā)送令牌,監(jiān)控器可將發(fā)送令牌復(fù)制到單獨的表。一般而言,NIC可以接收發(fā)送令牌,發(fā)送令牌要求NIC訪問監(jiān)控器的直接訪問存儲器(“DMA”),這會花費時間。因此,通過監(jiān)控器在向只讀陣列提出請求的時候復(fù)制發(fā)送令牌,NIC可以不必那么頻繁地訪問DMA,從而提高性能。
此外,在只讀陣列中可以實施代編號。就此而言,代編號可以在每次發(fā)送令牌更新的時候增加。因此,當監(jiān)控器復(fù)制發(fā)送令牌時,監(jiān)控器也可以驗證,在復(fù)制發(fā)送令牌之后代編號尚未改變。如果代編號相同,則監(jiān)控器知道發(fā)送令牌相同。如果代編號不同,則發(fā)送令牌可能已經(jīng)更新,并且因此監(jiān)控器會再次訪問只讀陣列。
一旦目標服務(wù)器從主機服務(wù)器接收到所述接收令牌和數(shù)據(jù)分組,目標服務(wù)器就可以將信息解密。例如,目標服務(wù)器可以利用它自己的接收主密鑰將接收令牌解密并識別流密鑰。然后目標服務(wù)器可以利用該流密鑰將數(shù)據(jù)分組解密。
除了將接收令牌和數(shù)據(jù)分組解密之外,目標服務(wù)器還可以計算流密鑰。流密鑰的使用是雙向的,因為流密鑰被用于發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。因此,為了發(fā)送數(shù)據(jù),遷移客戶的流密鑰不需要改變,因為與外部計算裝置相關(guān)聯(lián)的流密鑰相同。但是,為了接收數(shù)據(jù),遷移客戶的流密鑰可能需要改變,因為客戶的位置不再處于主機服務(wù)器的位置,而是處于目標服務(wù)器的位置。因此,應(yīng)當重新計算接收流密鑰,以符合目標服務(wù)器,然后將其發(fā)送至外部計算裝置。
系統(tǒng)管理者可以決定將實時虛擬機遷移到另一個服務(wù)器,而不需要延遲或中止業(yè)務(wù)。例如對于重啟主機服務(wù)器、更新主機服務(wù)器、或者為了效率的目的對虛擬機進行負載平衡而言,這是必要的。
圖1的示例100描繪客戶124從主機服務(wù)器110遷移到目標服務(wù)器150的高級示意圖。雖然客戶124在遷移完成的時候保持相同的操作和功能,但是為了區(qū)分它在主機服務(wù)器上的操作與它在目標服務(wù)器上的操作,圖1描繪客戶124變?yōu)榭蛻?24。因此,當客戶124開始遷移到目標服務(wù)器150時,客戶124實際上變?yōu)槟繕朔?wù)器150上的客戶224。
如圖1的示例100所示,客戶124具有操作系統(tǒng)126和應(yīng)用128,操作系統(tǒng)126和應(yīng)用128在客戶124上操作。操作系統(tǒng)126和應(yīng)用128可以執(zhí)行特定功能和處理某些處理任務(wù)。此外,每個客戶并不限于主機服務(wù)器110,而是可以跨多個服務(wù)器(未示出)來實施以用于更有效的處理。
主機服務(wù)器110和目標服務(wù)器150可以處于網(wǎng)絡(luò)190的不同節(jié)點處,并且能夠與網(wǎng)絡(luò)190的其他節(jié)點直接或間接通信。雖然在圖1中只描繪了一對計算裝置,但是應(yīng)當理解,典型系統(tǒng)可包括大量的連接的計算裝置,每個不同的計算裝置處于網(wǎng)絡(luò)190的不同節(jié)點處。本文所述網(wǎng)絡(luò)190和中間節(jié)點可以利用各種協(xié)議和系統(tǒng)互連,因此網(wǎng)絡(luò)可以是互聯(lián)網(wǎng)、萬維網(wǎng)、特定內(nèi)聯(lián)網(wǎng)、廣域網(wǎng)或本地網(wǎng)絡(luò)的一部分。網(wǎng)絡(luò)可以利用標準協(xié)議,諸如以太網(wǎng)、WiFi和HTTP、一個或多個公司專有的協(xié)議、以及它們的各種組合。雖然在如上所述傳輸或接收信息時獲得某些優(yōu)點,但是本文所述主題內(nèi)容的其他方面不限于信息傳輸?shù)娜魏翁囟ǚ绞健?/p>
可將與客戶124相關(guān)聯(lián)的數(shù)據(jù)分組從主機服務(wù)器110傳送至目標服務(wù)器150。當客戶124的所有數(shù)據(jù)分組都傳送至目標服務(wù)器150時,客戶224完全形成并且客戶124的遷移完成。例如,圖1的分組1圖示出一個數(shù)據(jù)分組從主機服務(wù)器110傳送至目標服務(wù)器150。如下更詳細所述,網(wǎng)絡(luò)接口控制器(“NIC”)120可以利用流密鑰將數(shù)據(jù)分組加密,然后連同其他信息一起將數(shù)據(jù)分組發(fā)送至目標服務(wù)器150。一旦數(shù)據(jù)分組1-6被傳送至目標服務(wù)器150,遷移就完成。因此,客戶操作系統(tǒng)136和應(yīng)用138可以在目標服務(wù)器150上運行。雖然這里只示出少量數(shù)據(jù)分組,但是應(yīng)當理解,在遷移完成之前可以傳送遠遠更多的數(shù)據(jù)分組。
圖2圖示出示例系統(tǒng)200,其中實施上述特征。該示例不應(yīng)視為限制本公開的范圍或者本文所述特征的用處。如圖所示,主機服務(wù)器110包括一個或多個處理器212、包括指令216和數(shù)據(jù)218的存儲器214、以及NIC 120。主機服務(wù)器110還包括具有客戶124的監(jiān)控器222。在只討論客戶124的遷移時,應(yīng)當理解,主機服務(wù)器110可以在任何時候操作多個客戶,并且相同的原理也適用于這樣的客戶的遷移。例如,客戶280和客戶282也在主機服務(wù)器110上運行。
存儲器214可以存儲可通過處理器212訪問的信息,包括可通過處理器212執(zhí)行的指令216以及數(shù)據(jù)218。存儲器214可以是可操作為存儲可通過處理器212訪問的信息的任意類型的存儲器,包括非暫時性計算機可讀介質(zhì)、或者存儲可利用電子裝置的幫助讀取的數(shù)據(jù)的其他介質(zhì),例如硬盤驅(qū)動器、存儲卡、只讀存儲器(“ROM”)、隨機訪問存儲器(“RAM”)、數(shù)字通用盤(“DVD”)、或其他光盤、以及其他可寫存儲器和只讀存儲器。本文的系統(tǒng)和方法可包括上述的不同組合,由此可將指令和數(shù)據(jù)的不同部分存儲在不同類型的介質(zhì)上。
指令216可以是要通過處理器212直接(諸如機器碼)或間接(諸如腳本)執(zhí)行的指令的任意集合。例如,指令216可以被存儲為計算機可讀介質(zhì)上的計算機代碼??梢园凑沼糜谕ㄟ^處理器212直接處理的對象代碼格式或者按照任何其他計算機語言(包括腳本或者按需解釋或事先編譯的獨立源代碼模塊的集合)來存儲指令216。
可以根據(jù)指令216通過處理器212檢索、存儲或修改數(shù)據(jù)218。例如,雖然系統(tǒng)和方法不受任何特定數(shù)據(jù)結(jié)構(gòu)限制,但是數(shù)據(jù)218可以作為有多個不同字段和記錄、可擴展標記語言(“XML”)文檔或平面文件的表存儲在計算機寄存器中、存儲在關(guān)系數(shù)據(jù)庫中。此外,可通過任何計算機可讀格式將數(shù)據(jù)格式化。
一個或多個處理器212可以是任何傳統(tǒng)處理器,諸如市售CPU。替選地,處理器可以是專用組件,諸如ASIC或其他基于硬件的處理器。雖然并非必要,但是主機服務(wù)器110可包括更快或更有效地執(zhí)行特定計算過程(諸如將視頻解碼、將圖像幀與圖像匹配、扭曲視頻、將扭曲的視頻編碼等等)的專用硬件組件。作為另一個示例,一個或多個處理器212可以負責處理基本系統(tǒng)指令216,包括運行應(yīng)用程序、處理運算和計算、以及處理來自諸如鍵盤、鼠標、麥克風等等裝置的輸入。處理器可以接收來自計算裝置(未示出)的請求并處理這些請求,例如通過訪問存儲器214、檢索所請求的信息、以及將所述信息發(fā)送至請求計算裝置。
主機服務(wù)器110可以利用以太網(wǎng)卡或網(wǎng)絡(luò)適配器來連接網(wǎng)絡(luò)190,諸如NIC 120。NIC 120可以負責將數(shù)據(jù)分組發(fā)送至另一個服務(wù)器或者從另一個服務(wù)器接收數(shù)據(jù)分組,諸如從主機服務(wù)器110和目標服務(wù)器150。此外,NIC 120可以能夠諸如利用公鑰和私鑰在發(fā)送之前將數(shù)據(jù)分組加密以及在接收之后將數(shù)據(jù)分組解密。
就此而言,雖然圖2在功能上將處理器、存儲器、客戶虛擬機以及主機服務(wù)器110的其他元件示出為處在相同模塊內(nèi),但是實際上處理器、計算機、計算裝置、或存儲器可包括多個處理器、計算機、計算裝置、或存儲器,它們可以存儲在相同的物理殼體中,也可以不存儲在相同的物理殼體中。例如,存儲器可以是位于在與主機服務(wù)器110的殼體不同的殼體中的硬盤驅(qū)動器或其他存儲介質(zhì)。因此,對于處理器、計算機、計算裝置、或存儲器的引用可以理解為包括對于處理器、計算機、計算裝置、或存儲器的集合的引用,它們可以并行操作,也可以不并行操作。例如,主機服務(wù)器110可包括作為負載平衡服務(wù)器群操作的多個服務(wù)器計算裝置。并且雖然下述某些功能被指示為在具有單個處理器的單個計算裝置上發(fā)生,但是本文所述主題內(nèi)容的其他方面可通過多個計算裝置來實施,例如通過網(wǎng)絡(luò)190傳遞信息。
圖2圖示出在從主機服務(wù)器110向目標服務(wù)器傳送流密鑰和數(shù)據(jù)分組230時實施的加密方案。就此而言,將與客戶124相關(guān)的數(shù)據(jù)分組發(fā)送至主機服務(wù)器110的NIC 120(或其他網(wǎng)絡(luò)適配器),因此NIC能夠?qū)?shù)據(jù)分組加密并向目標發(fā)送信息,如下更詳細所述。如圖2的示例200所示,NIC 120包括一個或多個處理器223以及存儲器224,存儲器224包括數(shù)據(jù)226和指令228。處理器223、包括數(shù)據(jù)226和指令228的存儲器224可以類似于上面參照圖1所述的主機服務(wù)器110的處理器212、存儲器214、指令316、以及數(shù)據(jù)218。除了發(fā)送和接收數(shù)據(jù)分組和流密鑰之外,處理器223也可以負責將數(shù)據(jù)分組和流密鑰加密和解密。
可將流密鑰實施為主機服務(wù)器與目標服務(wù)器之間加密方案的一部分。例如,如圖2的示例200所示,可將數(shù)據(jù)分組從主機服務(wù)器110的監(jiān)控器發(fā)送至NIC 120。在這種情況下,NIC 120可以利用與目標服務(wù)器相關(guān)聯(lián)的接收主密鑰將流密鑰加密,這可以生成接收令牌。因此,可以根據(jù)以下公式來計算接收者令牌:{Flow Key(流密鑰)}Receive Master Key(接收主密鑰)=Receive Token(接收令牌)。因此,接收令牌是采用加密形式的流密鑰。目標服務(wù)器150的NIC知道接收主密鑰,并且因此能夠?qū)⒔邮樟钆平饷?,以獲得流密鑰,下面進一步描述它的多個方面。
作為發(fā)送接收令牌、流密鑰、以及數(shù)據(jù)分組的第一途徑,可以實施交易表。圖3示出示例性交易表310和320。交易表可以被實施為向目標服務(wù)器發(fā)送多個接收令牌和數(shù)據(jù)分組。例如,交易表可以在主機服務(wù)器的NIC上實施,但是由監(jiān)控器來管理。作為另一個示例,交易表可通過主機服務(wù)器110的內(nèi)核來管理。例如,主機服務(wù)器內(nèi)核可以利用交易表來管理數(shù)據(jù)分組的傳送。
如圖3所示,交易表310包括流ID和元組。每個元組由對應(yīng)的流ID來索引。如圖所示,在與流ID 1相關(guān)聯(lián)的元組中,包括每個元組如下:{Flow Key(流密鑰),Receive Token(接收令牌),[encapsulatedinformation(所封裝的信息)],[list of allowed queues(所允許隊列的列表)]}。應(yīng)當注意,本文所述元組包括用于遷移目的的接收令牌,但是在不包括遷移的情況下,接收令牌并非必要且不一定存在。與元組1類似的元組信息應(yīng)用于元組2至元組N以及它們對應(yīng)的流ID。
根據(jù)一個示例,可將每個元組集合從主機服務(wù)器發(fā)送至目標服務(wù)器。例如,如箭頭330、332和334所圖示,元組1、2和3從主機服務(wù)器110傳送至目標服務(wù)器150。但是,與每個元組相關(guān)聯(lián)的對應(yīng)流ID不傳送。當目標服務(wù)器接收到元組時,可以利用通過目標服務(wù)器創(chuàng)建的新的對應(yīng)流ID來存儲每個接收到的元組。
在發(fā)送接收令牌和數(shù)據(jù)分組的第二途徑中,可以實施發(fā)送令牌方案。圖4圖示出主機服務(wù)器110將數(shù)據(jù)和信息發(fā)送至目標服務(wù)器150。就此而言,目標服務(wù)器150包含一個或多個處理器以及包括數(shù)據(jù)和指令(未示出)的存儲器。目標服務(wù)器的處理器、存儲器、數(shù)據(jù)、以及指令可以類似于上面關(guān)于主機服務(wù)器110的處理器212、存儲器214、指令216以及數(shù)據(jù)218所述的運作。此外,NIC 160可以是諸如向主機服務(wù)器110或單獨的計算裝置(未示出)發(fā)送和接收數(shù)據(jù)分組的網(wǎng)絡(luò)適配器的一個示例。此外,客戶224可以類似于關(guān)于主機服務(wù)器110所述的客戶操作,包括操作系統(tǒng)和應(yīng)用。監(jiān)控器462也可以負責將客戶(諸如客戶224)與目標服務(wù)器150的各種組件和硬件(諸如處理器和存儲器)互操作。作為另一個示例,監(jiān)控器可以表示負責運行、管理、或遷移客戶虛擬機的任何代碼。
在圖4的示例中,在向NIC傳送接收令牌、流密鑰以及數(shù)據(jù)分組時實施發(fā)送令牌方案。發(fā)送令牌操作可用于在向NIC發(fā)送接收令牌之前,連同封裝的流密鑰一起將接收令牌加密。因此,發(fā)送令牌方案允許向主機服務(wù)器本地NIC傳送數(shù)據(jù)分組和信息。發(fā)送令牌方案例如可以在主機服務(wù)器的監(jiān)控器或內(nèi)核上建立。然后通過主機服務(wù)器的內(nèi)核、客戶的內(nèi)核、或者與客戶相關(guān)聯(lián)的代碼來執(zhí)行發(fā)送令牌操作。例如,客戶124可具有執(zhí)行發(fā)送令牌方面的軟件代碼。
與上述交易表不同,發(fā)送令牌方案可以利用發(fā)送主密鑰封裝接收令牌和流密鑰。就此而言,除了流密鑰之外,還可以利用發(fā)送主密鑰將接收令牌加密。例如,可以實施以下發(fā)送令牌公式:Send Token(發(fā)送令牌)={Flow Key(流密鑰),Receive Token(接收令牌),[list of allowed queues(所允許隊列的列表)],[encapsulation information(封裝信息)]Send Master Key(發(fā)送主密鑰)}。然后可將生成的發(fā)送令牌發(fā)送至主機服務(wù)器的NIC。如圖4的示例400所示,NIC 120之后將發(fā)送令牌解密,以獲得接收令牌。
使用發(fā)送令牌和交易表方案可以是有利的。例如,發(fā)送令牌方案允許傳送更多數(shù)據(jù),但是信息的傳送可能比交易表方案慢。另一方面,雖然交易表方案可以允許數(shù)據(jù)的更快傳送,但是也可能傳送的數(shù)據(jù)更少,因為交易表與發(fā)送令牌相比尺寸有限。因此,所采用的方案可能取決于整個系統(tǒng)管理者的偏好。
此外可通過主機服務(wù)器NIC將每個數(shù)據(jù)分組加密。NIC可以利用流密鑰將數(shù)據(jù)分組加密。因此,在NIC上將數(shù)據(jù)分組加密的公式可以如下:Packet Cryptotext(分組密文)={Packet Plaintext(分組明文)}Flow Key(流密鑰)。下面更詳細地討論目標服務(wù)器將加密的分組和接收令牌解密的過程。
在圖4的示例中,主機服務(wù)器110將生成的接收令牌以及加密的數(shù)據(jù)分組發(fā)送至目標服務(wù)器150。在這種情況下,信息420包括數(shù)據(jù)分組、接收令牌、以及封裝信息。封裝信息例如可包括源位置和目的地信息。應(yīng)當注意,如果實施發(fā)送令牌方案(與交易表相對),則發(fā)送令牌停留在主機服務(wù)器本地;因此,既不將發(fā)送令牌也不將發(fā)送主密鑰傳送至目標服務(wù)器。但是,一旦主機服務(wù)器的NIC準備好發(fā)送收集的信息,那么兩種方案將相同的信息元組發(fā)送至目標服務(wù)器。目標服務(wù)器150包括NIC 160,NIC 160包括一個或多個處理器462、存儲器464、數(shù)據(jù)466、以及指令468,它們都可以類似于上面關(guān)于NIC 120的處理器223、存儲器224、指令226以及數(shù)據(jù)228所述的操作。
當目標服務(wù)器150接收到信息420時,目標服務(wù)器將接收令牌解密,如圖4所圖示。目標服務(wù)器150的NIC 160可以利用它自己的接收主密鑰將接收令牌解密。在將接收令牌解密并獲得流密鑰之后,NIC然后可以利用流密鑰將數(shù)據(jù)分組解密,如同主機服務(wù)器利用流密鑰將數(shù)據(jù)分組加密。一旦將分組有效載荷解密,就可將分組發(fā)送至監(jiān)控器、客戶224、或者與客戶224相關(guān)聯(lián)的操作系統(tǒng)。
再參照利用流ID和元組將數(shù)據(jù)從主機服務(wù)器傳送至目標服務(wù)器的情況,目標服務(wù)器可以組織所接收的信息。例如,類似于主機服務(wù)器上的交易表,目標服務(wù)器可以生成類似的與主機服務(wù)器的流ID和元組相對應(yīng)的表。流ID號碼不一定相同,但是可以使用類似的方案,諸如將元組布置為使得每個元組對應(yīng)于特定的流ID。
在主機服務(wù)器上使用發(fā)送令牌方案的情況下,可以實施只讀陣列。只讀陣列例如可以在監(jiān)控器或客戶上實施,并且監(jiān)控器的發(fā)送軟件、客戶內(nèi)核、或客戶用戶代碼可以管理該只讀陣列。發(fā)送軟件可以負責將發(fā)送令牌發(fā)送至NIC。作為一個示例,可以存在對于只讀陣列的單元中的數(shù)據(jù)的請求,與遷移無關(guān)。
圖5提供監(jiān)控器訪問只讀陣列并將其載入它的隊列(即,將發(fā)送令牌排隊520)的示例500。當這種情況發(fā)生時,副本被制成單獨隊列(即,發(fā)送隊列副本522)。然后對信息的原始請求可以行進至NIC,NIC會將該信息傳輸至適當?shù)挠嬎阊b置(未示出)。當從主機服務(wù)器到目標服務(wù)器的遷移發(fā)生時,NIC不需要第二次訪問只讀陣列,因為發(fā)送令牌已經(jīng)存儲在發(fā)送軟件中,如圖5所示。在這種情況下復(fù)制發(fā)送令牌的優(yōu)點是相對于再次訪問DMA,縮短了NIC檢索發(fā)送令牌的延遲。
可將代編號存儲在只讀陣列中,以確定發(fā)送令牌的可靠性。例如,自將發(fā)送令牌的副本制成發(fā)送隊列副本522的時間以來,發(fā)送令牌可能已經(jīng)更新。因此,發(fā)送隊列副本522中存儲的發(fā)送令牌不一定是發(fā)送令牌的最近版本。如圖5所示,與發(fā)送令牌相對應(yīng)的代編號存儲在只讀陣列中。就此而言,發(fā)送軟件可以檢查代編號,以確定是否存在更新。每次監(jiān)控器更新發(fā)送令牌的時候,監(jiān)控器可通過給定值將代編號更新。在一個示例中,可將代編號增加值1。僅僅作為示例,發(fā)送軟件可以檢查與特定發(fā)送令牌(諸如圖5的ST1)相關(guān)聯(lián)的代編號。發(fā)送軟件可以在復(fù)制發(fā)送令牌之前檢查代編號,并在復(fù)制發(fā)送令牌之后重新檢查代編號。發(fā)送軟件可以在每次檢查之后將所識別的生成數(shù)目存儲在存儲器中。如果生成數(shù)據(jù)不同于第一次檢查,那么發(fā)送軟件可通過在類似過程中第二次檢索發(fā)送令牌并檢查代編號來重新嘗試。
NIC負責將數(shù)據(jù)發(fā)送至目標服務(wù)器。例如,一旦執(zhí)行上述發(fā)送令牌方案,NIC就可以從發(fā)送軟件中檢索發(fā)送令牌。如上所述,NIC可將發(fā)送令牌解密以獲得接收令牌,將數(shù)據(jù)分組加密,然后將所有東西發(fā)送至目標服務(wù)器。然后目標服務(wù)器將接收令牌和數(shù)據(jù)分組解密,如上所述。
主機服務(wù)器的發(fā)送令牌被更新為與目標服務(wù)器的主密鑰相對應(yīng)。更新例如可以在目標服務(wù)器的監(jiān)控器上發(fā)生。更新可以在遷移的限電和/或停電階段里發(fā)生。作為另一個示例,發(fā)送令牌更新可以在主機服務(wù)器或目標服務(wù)器上發(fā)生,作為加快完成過程的方式。
圖6是在目標服務(wù)器150的監(jiān)控器上重新計算發(fā)送令牌的示例600。為了利用目標服務(wù)器的主密鑰重新計算發(fā)送令牌,作為一個示例,可以實施以下公式:Send Token(發(fā)送令牌)={Flow Key(流密鑰),Receive Token(接收令牌),[encapsulated information(所封裝的信息)]}Target Server Master Key(目標服務(wù)器主密鑰)。應(yīng)當將這個公式或類似公式應(yīng)用于目標服務(wù)器接收的每個發(fā)送令牌。
在目標服務(wù)器上更新發(fā)送令牌之前、之后或期間,也可以更新外部計算裝置。這種情況可以在限電或停電階段里發(fā)生。例如,外部計算裝置可以仍然正在與主機服務(wù)器上的客戶通信,但是該客戶已經(jīng)遷移到目標服務(wù)器。因此,外部計算裝置正在用來與主機服務(wù)器上的客戶通信的信息應(yīng)當改變?yōu)榕c新的主機服務(wù)器(即,目標服務(wù)器)對應(yīng)。
在圖7的示例700中,目標服務(wù)器150向外部計算裝置710警告遷移。此外,目標服務(wù)器150將目標服務(wù)器的IP地址和目標服務(wù)器的接收令牌、以及目標服務(wù)器經(jīng)過更新的流密鑰發(fā)送至外部計算裝置710。IP地址的傳輸將允許外部計算裝置710知道目標服務(wù)器150的位置。例如,如圖7所示,外部計算裝置710可通過用目標服務(wù)器信息代替主機服務(wù)器信息來將存儲器712更新。接收令牌和流密鑰允許外部計算裝置利用目標服務(wù)器加密和解密數(shù)據(jù)。例如,外部計算裝置710可以利用經(jīng)過更新的流密鑰將它發(fā)送至目標服務(wù)器的數(shù)據(jù)分組加密。此外,如圖7所示,外部計算裝置710將對遷移的確認發(fā)送至目標服務(wù)器150。目標服務(wù)器可以警告與目標服務(wù)器已經(jīng)接收的發(fā)送令牌相關(guān)聯(lián)的所有外部計算裝置。
根據(jù)另一個示例,流密鑰可以適合于目標服務(wù)器,如同上述發(fā)送令牌。例如,流密鑰是雙向的,從而要求兩個流密鑰。一個方向是在客戶發(fā)送數(shù)據(jù)時,另一個方向是在客戶接收數(shù)據(jù)時。就此而言,如果流密鑰與遷移發(fā)送者相關(guān)聯(lián),那么流密鑰可能不需要改變。相反,如果流密鑰與遷移接收者相關(guān)聯(lián),那么流密鑰可能需要改變。作為一個示例,與遷移發(fā)送者相關(guān)聯(lián)的流密鑰可以繼續(xù)使用外部計算裝置的流密鑰,從而允許成功通信。成功通信因為目標服務(wù)器在發(fā)送數(shù)據(jù)時可以使用外部計算裝置的流密鑰而發(fā)生。因此,外部計算裝置不改變,即使客戶遷移到不同的服務(wù)器。但是在另一個示例中,與遷移接收者相關(guān)聯(lián)的流密鑰要求外部計算裝置獲知目標服務(wù)器的流密鑰。這是為什么外部計算裝置可以利用正確服務(wù)器的流密鑰將分組加密。為了這種情況的運作,遷移接收者可將與目標服務(wù)器相關(guān)聯(lián)的流密鑰發(fā)送至希望與目標服務(wù)器通信的外部計算裝置。然后外部計算裝置可以利用目標服務(wù)器的流密鑰生成接收令牌。
主機服務(wù)器可以繼續(xù)從外部計算裝置接收數(shù)據(jù)分組。例如,這種情況可以在停電階段里發(fā)生,其中外部計算裝置不知道遷移。主機服務(wù)器傳輸離群分組的能力會因為停電階段而被禁用。在這種情況下,主機服務(wù)器可以為離群的數(shù)據(jù)分組創(chuàng)建新的監(jiān)控器內(nèi)隊列,其中監(jiān)控器在將數(shù)據(jù)分組放置到隊列中之前仍然將數(shù)據(jù)分組加密。可將列隊的分組發(fā)送至遷移客戶(例如客戶124)。然后可以按照與上述方式相同的方式將離群分組發(fā)送至目標服務(wù)器(例如,發(fā)送令牌方案或通過交易表)。
圖8的示例800描繪上述方面的示例流程圖。例如,在步驟802,主機服務(wù)器基于流密鑰、接收令牌、以及發(fā)送者主密鑰生成發(fā)送令牌。然后在步驟804,主機服務(wù)器將發(fā)送令牌發(fā)送至與主機服務(wù)器相關(guān)聯(lián)的網(wǎng)絡(luò)適配器。在步驟806,網(wǎng)絡(luò)適配器利用它自己的發(fā)送者主密鑰將發(fā)送令牌解密,并識別接收令牌作為結(jié)果。在步驟808,網(wǎng)絡(luò)適配器利用流密鑰將數(shù)據(jù)分組加密并將流密鑰封裝在接收令牌中。然后在步驟810,網(wǎng)絡(luò)適配器將數(shù)據(jù)分組、接收令牌、以及封裝信息發(fā)送至目標服務(wù)器。
本文所述主題是有利的,因為它提供一種用于客戶虛擬機從一個服務(wù)器到另一個服務(wù)器的實時遷移的系統(tǒng)和方法。以上公開的大部分可能在限電階段里發(fā)生,因此主機服務(wù)器上的客戶仍然可以在遷移過程期間操作。其他優(yōu)點包括相對于經(jīng)由直接存儲器訪問來訪問只讀陣列,當主機服務(wù)器的NIC從復(fù)制隊列檢索發(fā)送令牌時所涉及的縮短延遲。
因為可以在不脫離權(quán)利要求書限定的主題的情況下利用上述特征的這些和其他變型和組合,所以應(yīng)當通過說明而非限制權(quán)利要求書限定的主題的方式來進行實施例的以上描述。此外應(yīng)當理解,本文所述示例的配置(以及措詞為“諸如”、“例如”、“包括”等等的分句)不應(yīng)解釋為將所主張的主題限制為特定示例;相反,這些示例只是旨在說明很多可能方面中的一些方面。