版權(quán)聲明
本專利文檔公開內(nèi)容的一部分包含受版權(quán)保護的素材。版權(quán)擁有者不反對任何人對專利文檔或?qū)@_內(nèi)容按照在專利商標局的專利文件或記錄中出現(xiàn)得那樣進行的傳真復(fù)制,但是除此之外在任何情況下都保留所有版權(quán)。
本發(fā)明一般而言涉及計算機系統(tǒng),并且具體而言涉及使用sr-iovvswitch體系架構(gòu)來支持計算機系統(tǒng)虛擬化和實時遷移。
背景技術(shù):
隨著更大的云計算體系架構(gòu)的引入,與傳統(tǒng)網(wǎng)絡(luò)和存儲相關(guān)聯(lián)的性能和管理瓶頸成為重要的問題。人們越來越感興趣使用infiniband(ib)技術(shù)作為云計算結(jié)構(gòu)的基礎(chǔ)。這是本發(fā)明的實施例旨在解決的一般領(lǐng)域。
技術(shù)實現(xiàn)要素:
本文描述了用于支持子網(wǎng)中的虛擬機遷移的系統(tǒng)和方法。示例性方法可以在包括一個或多個微處理器的一個或多個計算機處提供:一個或多個交換機,該一個或多個交換機至少包括葉交換機,其中一個或多個交換機中的每一個包括多個端口;多個主機通道適配器,其中多個主機通道適配器經(jīng)由一個或多個交換機互連;多個管理程序,其中多個管理程序中的每一個與多個主機通道適配器中的一個相關(guān)聯(lián);以及多個虛擬機。該方法還可以為多個主機通道適配器布置具有預(yù)填充的本地標識符(lid)體系架構(gòu)的虛擬交換機或具有動態(tài)lid分配體系架構(gòu)的虛擬交換機中的一個或多個。該方法可以附加地將多個虛擬機中的、在多個管理程序中的第一管理程序上運行的第一虛擬機實時遷移到多個管理程序中的第二管理程序;并且其中第一管理程序與多個主機通道適配器中的第一主機通道適配器相關(guān)聯(lián),并且第二管理程序與多個主機通道適配器中的第二主機通道適配器相關(guān)聯(lián)。
附圖說明
圖1示出了根據(jù)實施例的infiniband環(huán)境的圖示。
圖2示出了根據(jù)實施例的網(wǎng)絡(luò)環(huán)境中的樹狀拓撲的圖示。
圖3示出了根據(jù)實施例的示例性共享端口體系架構(gòu)。
圖4示出了根據(jù)實施例的示例性vswitch體系架構(gòu)。
圖5示出了根據(jù)實施例的具有預(yù)填充lid的示例性vswitch體系架構(gòu)。
圖6示出了根據(jù)實施例的具有動態(tài)lid分配的示例性vswitch體系架構(gòu)。
圖7示出了根據(jù)實施例的具有動態(tài)lid分配和預(yù)填充lid的vswitch的示例性vswitch體系架構(gòu)。
圖8示出了根據(jù)實施例的在虛擬機遷移之前具有預(yù)填充lid的示例性vswitch體系架構(gòu)。
圖9示出了根據(jù)實施例的在虛擬機遷移之后具有預(yù)填充lid的示例性vswitch體系架構(gòu)。
圖10示出了根據(jù)實施例的具有潛在虛擬機遷移路徑的具有預(yù)填充lid的示例性vswitch體系架構(gòu)。
圖11是根據(jù)實施例的用于支持子網(wǎng)中的虛擬機遷移的方法的流程圖。
具體實施方式
通過示例而非限制的方式在附圖的各圖中圖示本發(fā)明,附圖中相同的標號指示類似的元件。應(yīng)當注意的是,在本公開中對“一個”或“一些”實施例的引用不一定是相同的實施例,并且這種引用意味著至少一個。雖然討論了特定的實現(xiàn),但是要理解的是,特定實現(xiàn)僅僅是為了說明性目的而提供。相關(guān)領(lǐng)域的技術(shù)人員將認識到,在不背離本發(fā)明的范圍和精神的情況下,可以使用其它部件和配置。
貫穿附圖和具體實施方式可以使用共同的標號來指示相同的元件;因此,如果元件在其它地方進行了描述,那么在圖中使用的標號可以或可以不在特定于該圖的具體描述中引用。
本文描述的是可以支持網(wǎng)絡(luò)中的虛擬機(vm)遷移的系統(tǒng)和方法。
本發(fā)明的以下描述使用infinibandtm(ib)網(wǎng)絡(luò)作為高性能網(wǎng)絡(luò)的示例。對于本領(lǐng)域技術(shù)人員將顯而易見的是,可以使用其它類型的高性能網(wǎng)絡(luò)而沒有限制。以下描述還使用胖樹拓撲作為結(jié)構(gòu)拓撲的示例。對于本領(lǐng)域技術(shù)人員將顯而易見的是,可以使用其它類型的結(jié)構(gòu)拓撲而沒有限制。
根據(jù)本發(fā)明的實施例,虛擬化可以有益于云計算中的高效資源利用和彈性資源分配。實時遷移使得有可能通過以應(yīng)用透明的方式在物理服務(wù)器之間移動虛擬機(vm)來優(yōu)化資源使用。因此,虛擬化可以使得能夠通過實時遷移進行合并、資源的按需供應(yīng)以及彈性。
infinibandtm
infinibandtm(ib)是由infinibandtm貿(mào)易協(xié)會開發(fā)的開放標準無損網(wǎng)絡(luò)技術(shù)。該技術(shù)是基于串行點對點全雙工互連,其提供高吞吐量和低延遲通信,特別適用于高性能計算(high-performancecomputing,hpc)應(yīng)用和數(shù)據(jù)中心。
infinibandtm體系架構(gòu)(iba)支持雙層拓撲劃分。在下層,ib網(wǎng)絡(luò)被稱為子網(wǎng),其中子網(wǎng)可以包括使用交換機和點對點鏈路互連的主機集合。在上層,ib結(jié)構(gòu)構(gòu)成一個或多個子網(wǎng),其可以使用路由器互連。
在子網(wǎng)內(nèi),主機可以使用交換機和點對點鏈路連接。此外,可以存在主管理實體,子網(wǎng)管理器(sm),其駐留在子網(wǎng)中指定的子網(wǎng)設(shè)備上。子網(wǎng)管理器負責配置、激活和維護ib子網(wǎng)。此外,子網(wǎng)管理器(sm)可以負責在ib結(jié)構(gòu)中執(zhí)行路由表計算。這里,例如,ib網(wǎng)絡(luò)的路由旨在在本地子網(wǎng)中的所有源和目的地對之間進行適當?shù)呢撦d平衡。
通過子網(wǎng)管理接口,子網(wǎng)管理器利用子網(wǎng)管理代理(sma)交換被稱為子網(wǎng)管理分組(smp)的控制分組。子網(wǎng)管理代理駐留在每個ib子網(wǎng)設(shè)備上。通過使用smp,子網(wǎng)管理器能夠發(fā)現(xiàn)結(jié)構(gòu)、配置端節(jié)點和交換機,并從sma接收通知。
根據(jù)實施例,ib網(wǎng)絡(luò)中的子網(wǎng)間和子網(wǎng)內(nèi)路由可以基于存儲在交換機中的lft。lft由sm根據(jù)使用的路由機制來計算。在子網(wǎng)中,端節(jié)點和交換機上的主機通道適配器(hca)端口使用本地標識符(lid)進行尋址。lft中的每個條目包括目的地lid(dlid)和輸出端口。表中只支持每lid一個條目。當分組到達交換機時,其輸出端口通過在交換機的轉(zhuǎn)發(fā)表中查找dlid來確定。路由是確定性的,因為分組在網(wǎng)絡(luò)中在給定的源-目的地對(lid對)之間采用相同的路徑。
通常,除主子網(wǎng)管理器之外的所有其它子網(wǎng)管理器為了容錯都在待機模式下起作用。但是,在主子網(wǎng)管理器發(fā)生故障的情況下,由待機子網(wǎng)管理器協(xié)商新的主子網(wǎng)管理器。主子網(wǎng)管理器還執(zhí)行子網(wǎng)的周期性掃描,以檢測任何拓撲變化并相應(yīng)地重新配置網(wǎng)絡(luò)。
此外,子網(wǎng)內(nèi)的主機和交換機可以使用本地標識符(lid)進行尋址,并且單個子網(wǎng)可以被限制為49151個單播lid。除了作為在子網(wǎng)內(nèi)有效的本地地址的lid之外,每個ib設(shè)備還可以具有64位全局唯一標識符(guid)。guid可以用于形成作為ib層三(l3)地址的全局標識符(gid)。
在網(wǎng)絡(luò)初始化時,sm可以計算路由表(即,子網(wǎng)內(nèi)每對節(jié)點之間的連接/路由)。此外,每當拓撲改變時,路由表可以被更新,以便確保連接性和最佳性能。在普通操作期間,sm可以執(zhí)行網(wǎng)絡(luò)的周期性輕微掃描,以檢查拓撲變化。如果在輕微掃描期間發(fā)現(xiàn)變化,或者如果sm接收到發(fā)信號通知網(wǎng)絡(luò)變化的信息(陷阱),那么sm可以根據(jù)發(fā)現(xiàn)的變化重新配置網(wǎng)絡(luò)。
例如,當網(wǎng)絡(luò)拓撲改變時,諸如當鏈路斷開時、當添加設(shè)備時或者當鏈路被去除時,sm可以重新配置網(wǎng)絡(luò)。重新配置步驟可以包括在網(wǎng)絡(luò)初始化期間執(zhí)行的步驟。此外,重新配置可以具有限于其中發(fā)生網(wǎng)絡(luò)變化的子網(wǎng)的局部范圍。此外,具有路由器的大型結(jié)構(gòu)的分段可以限制重新配置的范圍。
根據(jù)實施例,ib網(wǎng)絡(luò)可以支持分區(qū)作為安全機制,以提供共享網(wǎng)絡(luò)結(jié)構(gòu)的系統(tǒng)的邏輯組的隔離。結(jié)構(gòu)中的節(jié)點上的每個hca端口可以是一個或多個分區(qū)的成員。分區(qū)成員由集中式分區(qū)管理器管理,集中式分區(qū)管理器可以是sm的一部分。sm可以將每個端口上的分區(qū)成員身份信息配置為16位分區(qū)密鑰(p密鑰)表。sm還可以用包含與lid相關(guān)聯(lián)的p密鑰信息的分區(qū)實施表來配置交換機和路由器。此外,在一般情況下,交換機端口的分區(qū)成員身份可以表示與在出口(朝鏈路)方向經(jīng)由端口路由的lid間接相關(guān)聯(lián)的所有成員身份的聯(lián)合。
根據(jù)實施例,對于節(jié)點之間的通信,除管理隊列對(qp0和qp1)以外,隊列對(qp)和端到端上下文(eec)可以被分配給特定分區(qū)。然后,p密鑰信息可以被添加到發(fā)送的每個ib傳輸分組。當分組到達hca端口或交換機時,可以針對由sm配置的表驗證其p密鑰值。如果找到無效的p密鑰值,那么立即丟棄分組。以這種方式,只有在共享分區(qū)的端口之間才允許通信。
圖1中示出了示例infiniband結(jié)構(gòu),其示出了根據(jù)實施例的infiniband環(huán)境100的圖示。在圖1所示的示例中,節(jié)點a-e、101-105使用infiniband結(jié)構(gòu)120經(jīng)由相應(yīng)的主機通道適配器111-115通信。根據(jù)實施例,各種節(jié)點(例如,節(jié)點a-e、101-105)可以由各種物理設(shè)備來表示。根據(jù)實施例,各種節(jié)點(例如,節(jié)點a-e、101-105)可以由諸如虛擬機的各種虛擬設(shè)備來表示。
infiniband中的虛擬機
在過去十年中,虛擬化高性能計算(hpc)環(huán)境的前景已得到相對大提高,因為cpu開銷已通過硬件虛擬化支持被實際上消除;存儲器開銷已通過虛擬化存儲器管理單元被顯著降低;存儲裝置開銷已通過使用快速san存儲裝置或分布式聯(lián)網(wǎng)文件系統(tǒng)被減少;并且網(wǎng)絡(luò)i/o開銷已通過使用比如單根輸入/輸出虛擬化(sr-iov)的設(shè)備直通技術(shù)被減少。現(xiàn)在,云有可能使用高性能互連解決方案來適應(yīng)虛擬hpc(vhpc)集群,并提供必要的性能。
但是,當與諸如infiniband(ib)的無損網(wǎng)絡(luò)耦合時,由于在這些解決方案中使用的復(fù)雜尋址和路由方案,某些云功能(諸如虛擬機(vm)的實時遷移)仍然是個問題。ib是提供高帶寬和低延遲的互連網(wǎng)絡(luò)技術(shù),因此,非常適合hpc和其它通信密集型工作負載。
用于將ib設(shè)備連接到vm的傳統(tǒng)方法是通過利用具有直接分配的sr-iov。但是,為了實現(xiàn)分配有ib主機通道適配器(hca)的vm的實時遷移,使用sr-iov已被證明是具有挑戰(zhàn)性的。每個ib連接的節(jié)點具有三個不同的地址:lid、guid和gid。當發(fā)生實時遷移時,這些地址中的一個或多個改變。與遷移中的vm(vm-in-migration)通信的其它節(jié)點會丟失連接性。當發(fā)生這種情況時,通過向ib子網(wǎng)管理器(sm)發(fā)送子網(wǎng)管理(sa)路徑記錄查詢來定位要重新連接到的虛擬機的新地址,可以嘗試更新丟失的連接。
ib使用三種不同類型的地址。第一種類型的地址是16位本地標識符(lid)。sm向每個hca端口和每個交換機分配至少一個唯一的lid。lid用于在子網(wǎng)內(nèi)路由流量。由于lid為16位長,因此可以做出65536個唯一地址組合,其中只有49151個(0x0001-0xbfff)可以用作單播地址。因此,可用單播地址的數(shù)量限定了ib子網(wǎng)的最大大小。第二種類型的地址是制造商分配給每個設(shè)備(例如hca和交換機)和每個hca端口的64位全局唯一標識符(guid)。sm可以向hca端口分配附加的子網(wǎng)唯一guid,其在使用sr-iov時是有用的。第三種類型的地址是128位全局標識符(gid)。gid是有效的ipv6單播地址,并且向每個hca端口分配至少一個。gid通過組合由結(jié)構(gòu)管理員分配的全局唯一64位前綴和每個hca端口的guid地址形成。
胖樹(ftree)拓撲和路由
根據(jù)實施例,基于ib的hpc系統(tǒng)中有一些采用胖樹拓撲來利用胖樹提供的有用屬性。由于每個源-目的地對之間有多條路徑可用,因此這些屬性包括完全的二分帶寬和固有的容錯。胖樹背后的最初想法是,當樹朝著拓撲的根移動時,在節(jié)點之間采用具有更多可用帶寬的較胖的鏈路。較胖的鏈路可以幫助避免上層交換機中的擁塞并維持二分帶寬。
圖2示出了根據(jù)實施例的網(wǎng)絡(luò)環(huán)境中的樹狀拓撲的圖示。如圖2所示,一個或多個端節(jié)點201-204可以在網(wǎng)絡(luò)結(jié)構(gòu)200中連接。網(wǎng)絡(luò)結(jié)構(gòu)200可以基于胖樹拓撲,其包括多個葉交換機211-214以及多個脊交換機或根交換機231-234。此外,網(wǎng)絡(luò)結(jié)構(gòu)200可以包括一個或多個中間交換機,諸如交換機221-224。
還如圖2所示,端節(jié)點201-204中的每一個可以是多歸屬節(jié)點,即,通過多個端口連接到網(wǎng)絡(luò)結(jié)構(gòu)200的兩個或更多個部分的單個節(jié)點。例如,節(jié)點201可以包括端口h1和h2,節(jié)點202可以包括端口h3和h4,節(jié)點203可以包括端口h5和h6,并且節(jié)點204可以包括端口h7和h8。
此外,每個交換機可以具有多個交換機端口。例如,根交換機231可以具有交換機端口1-2,根交換機232可以具有交換機端口3-4,根交換機233可以具有交換機端口5-6,并且根交換機234可以具有交換機端口7-8。
根據(jù)實施例,胖樹路由機制是用于基于ib的胖樹拓撲的最流行的路由算法之一。胖樹路由機制也在ofed(開放結(jié)構(gòu)企業(yè)分發(fā)–用于構(gòu)建和部署基于ib的應(yīng)用的標準軟件棧)子網(wǎng)管理器opensm中實現(xiàn)。
胖樹路由機制旨在生成在網(wǎng)絡(luò)結(jié)構(gòu)中跨鏈路均勻傳播最短路徑路由的lft。該機制按索引次序遍歷結(jié)構(gòu)并將端節(jié)點的目標lid(以及因此對應(yīng)的路由)分配給每個交換機端口。對于連接到相同葉交換機的端節(jié)點,索引次序可以取決于端節(jié)點連接到的交換機端口(即,端口編號順序)。對于每個端口,該機制可以維護端口使用計數(shù)器,并且可以在每次添加新路由時使用這個端口使用計數(shù)器來選擇最少使用的端口。
如以上所提到的,在分區(qū)的子網(wǎng)中,不允許不是公共分區(qū)的成員的節(jié)點通信。在實踐中,這意味著由胖樹路由算法分配的一些路由不用于用戶流量。當胖樹路由機制以與它針對其它功能路徑所做的相同的方式為那些路由生成lft時,會出現(xiàn)該問題。由于節(jié)點按索引的次序進行路由,因此這種行為會導(dǎo)致鏈路上降級的平衡。由于路由是在不知道分區(qū)的情況下完成的,因此胖樹路由的子網(wǎng)通常在分區(qū)間提供較差的隔離。
輸入/輸出(i/o)虛擬化
根據(jù)實施例,i/o虛擬化(iov)可以通過允許虛擬機(vm)訪問底層物理資源來提供i/o的可用性。存儲流量和服務(wù)器間通信的組合強加了可能淹沒單個服務(wù)器的i/o資源的增加的負載,從而導(dǎo)致積壓以及在等待數(shù)據(jù)時的空閑處理器。隨著i/o請求數(shù)量的增加,iov可以提供可用性;并且可以提高(虛擬化)i/o資源的性能、可擴展性和靈活性,以匹配現(xiàn)代cpu虛擬化中看到的性能水平。
根據(jù)實施例,iov是期望的,因為它可以允許i/o資源的共享并且提供對來自vm的資源的受保護的訪問。iov將暴露于vm的邏輯設(shè)備與其物理實現(xiàn)分離。當前,可以有不同類型的iov技術(shù),諸如仿真、半虛擬化、直接分配(da)和單根i/o虛擬化(sr-iov)。
根據(jù)實施例,一種類型的iov技術(shù)是軟件仿真。軟件仿真可以允許分離的前端/后端軟件體系架構(gòu)。前端可以是置于vm中、與管理程序(hypervisor)實現(xiàn)的以提供i/o訪問的后端通信的設(shè)備驅(qū)動程序。物理設(shè)備共享比高,并且vm的實時遷移可能只需幾毫秒的網(wǎng)絡(luò)停機時間。但是,軟件仿真引入了附加的、不期望的計算開銷。
根據(jù)實施例,另一種類型的iov技術(shù)是直接設(shè)備分配。直接設(shè)備分配涉及將i/o設(shè)備耦合到vm,其中在vm之間沒有設(shè)備共享。直接分配或設(shè)備直通以最小的開銷提供接近原生的性能。物理設(shè)備繞過管理程序,并直接附連到vm。但是,這種直接設(shè)備分配的缺點是有限的可擴展性,因為在虛擬機之間沒有共享——一個物理網(wǎng)卡與一個vm耦合。
根據(jù)實施例,單根iov(sr-iov)可以允許物理設(shè)備通過硬件虛擬化顯示為相同設(shè)備的多個獨立的輕量級實例。這些實例可以被分配給vm作為直通設(shè)備,并作為虛擬功能(virtualfunction,vf)被訪問。管理程序通過唯一的(每設(shè)備)、全特征物理功能(physicalfunction,pf)訪問設(shè)備。sr-iov簡化了純直接分配的可擴展性問題。但是,sr-iov提出的問題是它可能會影響vm遷移。在這些iov技術(shù)中,sr-iov可以擴展pciexpress(pcie)規(guī)范,意味著允許從多個vm直接訪問單個物理設(shè)備,同時維持接近原生的性能。因此,sr-iov可以提供良好的性能和可擴展性。
sr-iov允許pcie設(shè)備通過向每個客戶分配一個虛擬設(shè)備來暴露可以在多個客戶之間共享的多個虛擬設(shè)備。每個sr-iov設(shè)備具有至少一個物理功能(pf)和一個或多個相關(guān)聯(lián)的虛擬功能(vf)。pf是由虛擬機監(jiān)視器(vmm)或管理程序控制的普通pcie功能,而vf是輕量級的pcie功能。每個vf都有其自己的基地址(bar),并被分配有唯一的請求者id,其使得i/o存儲器管理單元(iommu)能夠區(qū)分來自/去往不同vf的流量。iommu還在pf和vf之間應(yīng)用存儲器和中斷轉(zhuǎn)換。
但是,令人遺憾的是,直接設(shè)備分配技術(shù)在其中數(shù)據(jù)中心優(yōu)化期望虛擬機的透明實時遷移的情況下對云提供商造成障礙。實時遷移的實質(zhì)是將vm的存儲器內(nèi)容復(fù)制到遠程管理程序。然后在源管理程序處暫停vm,并且在目的地處恢復(fù)vm的操作。當使用軟件仿真方法時,網(wǎng)絡(luò)接口是虛擬的,因此其內(nèi)部狀態(tài)被存儲到存儲器中并且也被復(fù)制。因此,可以使停機時間下降到幾毫秒。
但是,當使用諸如sr-iov的直接設(shè)備分配技術(shù)時,遷移變得更加困難。在這種情況下,網(wǎng)絡(luò)接口的完整內(nèi)部狀態(tài)不能被復(fù)制,因為它與硬件綁定。作為替代,分配給vm的sr-iovvf被分離,實時遷移將運行,并且新的vf將在目的地處被附連。在infiniband和sr-iov的情況下,該處理可以引入在秒的數(shù)量級上的停機時間。此外,在sr-iov共享端口模型中,在遷移之后,vm的地址將改變,從而導(dǎo)致sm中的附加開銷并對底層網(wǎng)絡(luò)結(jié)構(gòu)的性能產(chǎn)生負面影響。
infinibandsr-iov體系架構(gòu)-共享端口
可以存在不同類型的sr-iov模型,例如,共享端口模型和虛擬交換機模型。
圖3示出了根據(jù)實施例的示例性共享端口體系架構(gòu)。如圖所示,主機300(例如,主機通道適配器)可以與管理程序310交互,管理程序310可以將各種虛擬功能330、340、350分配給多個虛擬機。同樣,物理功能可以由管理程序310處理。
根據(jù)實施例,當使用諸如圖3所示的共享端口體系架構(gòu)時,主機(例如,hca)在網(wǎng)絡(luò)中呈現(xiàn)為具有單個共享lid和在物理功能320和虛擬功能330、340、350之間的共享隊列對(qp)空間的單個端口。但是,每個功能(即,物理功能和虛擬功能)可以具有其自己的gid。
如圖3所示,根據(jù)實施例,可以將不同的gid分配給虛擬功能和物理功能,并且特殊隊列對qp0和qp1(即,用于infiniband管理分組的專用隊列對)由物理功能擁有。這些qp也被暴露給vf,但是vf不被允許使用qp0(從vf到qp0的所有smp都被丟棄),并且qp1可以充當由pf擁有的實際qp1的代理。
根據(jù)實施例,共享端口體系架構(gòu)可以允許不受(通過分配給虛擬功能附連到網(wǎng)絡(luò)的)vm的數(shù)量限制的高度可擴展的數(shù)據(jù)中心,因為lid空間僅被網(wǎng)絡(luò)中的物理機器和交換機消耗。
但是,共享端口體系架構(gòu)的缺點是無法提供透明的實時遷移,從而阻礙了靈活的vm布置的潛力。由于每個lid與特定管理程序相關(guān)聯(lián),并且在駐留在管理程序上的所有vm之間共享,因此遷移的vm(即,遷移到目的地管理程序的虛擬機)必須將其lid改變?yōu)槟康牡毓芾沓绦虻膌id。此外,由于受限的qp0訪問,子網(wǎng)管理器不能在vm內(nèi)部運行。
infinibandsr-iov體系架構(gòu)模型-虛擬交換機(vswitch)
可以存在不同類型的sr-iov模型,例如,共享端口模型和虛擬交換機模型。
圖4示出了根據(jù)實施例的示例性vswitch體系架構(gòu)。如圖所示,主機400(例如,主機通道適配器)可以與管理程序410交互,管理程序410可以將各種虛擬功能430、440、450分配給多個虛擬機。同樣,物理功能可以由管理程序410處理。虛擬交換機415也可以由管理程序401處理。
根據(jù)實施例,在vswitch體系架構(gòu)中,每個虛擬功能430、440、450是完整的虛擬主機通道適配器(vhca),這意味著分配給vf的vm被分配完整的ib地址集合(例如,gid、guid、lid)和硬件中的專用qp空間。對于網(wǎng)絡(luò)的其余部分和sm,hca400看起來像經(jīng)由虛擬交換機415、具有連接到它的附加節(jié)點的交換機。管理程序410可以使用pf420,并且vm(附連到虛擬功能)使用vf。
根據(jù)實施例,vswitch體系架構(gòu)提供透明虛擬化。但是,由于每個虛擬功能都被分配唯一的lid,因此可用lid的數(shù)量被迅速消耗。同樣,在使用許多l(xiāng)id地址(即,每個物理功能和每個虛擬功能都有一個lid地址)的情況下,必須由sm計算更多的通信路徑,并且必須將更多的子網(wǎng)管理分組(smp)發(fā)送到交換機,以便更新其lft。例如,通信路徑的計算在大型網(wǎng)絡(luò)中可能花費幾分鐘。因為lid空間限于49151個單播lid,并且由于每個vm(經(jīng)由vf)、物理節(jié)點和交換機占用一個lid,因此網(wǎng)絡(luò)中的物理節(jié)點和交換機的數(shù)量限制了活動vm的數(shù)量,反之亦然。
infinibandsr-iov體系架構(gòu)模型-具有預(yù)填充lid的vswitch
根據(jù)實施例,本公開提供了用于提供具有預(yù)填充lid的vswitch體系架構(gòu)的系統(tǒng)和方法。
圖5示出了根據(jù)實施例的具有預(yù)填充lid的示例性vswitch體系架構(gòu)。如圖所示,多個交換機501-504可以在結(jié)構(gòu)(諸如infiniband結(jié)構(gòu))的成員之間提供網(wǎng)絡(luò)交換環(huán)境500(例如,ib子網(wǎng))內(nèi)的通信。該結(jié)構(gòu)可以包括多個硬件設(shè)備,諸如主機通道適配器510、520、530。主機通道適配器510、520、530中的每一個又可以分別與管理程序511、521和531交互。每個管理程序又可以連同與它交互的主機通道適配器建立多個虛擬功能514、515、516、524、525、526、534、535、536并將它們分配給多個虛擬機。例如,虛擬機1550可以由管理程序511分配給虛擬功能1514。管理程序511可以附加地將虛擬機2551分配給虛擬功能2515,并且將虛擬機3552分配給虛擬功能3516。管理程序531又可以將虛擬機4553分配給虛擬功能1534。管理程序可以通過每個主機通道適配器上的全特征物理功能513、523、533訪問主機通道適配器。
根據(jù)實施例,交換機501-504中的每一個可以包括多個端口(未示出),其用于設(shè)置線性轉(zhuǎn)發(fā)表以便引導(dǎo)網(wǎng)絡(luò)交換環(huán)境500內(nèi)的流量。
根據(jù)實施例,虛擬交換機512、522和532可以由其各自的管理程序511、521、531來處理。在這種vswitch體系架構(gòu)中,每個虛擬功能是完整的虛擬主機通道適配器(vhca),這意味著分配給vf的vm被分配完整的ib地址集合(例如,gid、guid、lid)和硬件中的專用qp空間。對于網(wǎng)絡(luò)的其余部分和sm(未示出),hca510、520和530看起來像經(jīng)由虛擬交換機、具有連接到它們的附加節(jié)點的交換機。
根據(jù)實施例,本公開提供了用于提供具有預(yù)填充lid的vswitch體系架構(gòu)的系統(tǒng)和方法。參考圖5,lid被預(yù)填充到各種物理功能513、523、533以及虛擬功能514-516、524-526、534-536(甚至那些當前未與活動虛擬機相關(guān)聯(lián)的虛擬功能)。例如,物理功能513用lid1預(yù)填充,而虛擬功能1534用lid10預(yù)填充。當網(wǎng)絡(luò)被啟動(boot)時,lid在啟用sr-iovvswitch的子網(wǎng)中被預(yù)填充。即使并非所有的vf都在網(wǎng)絡(luò)中被vm占用,填充的vf也被分配lid,如圖5所示。
根據(jù)實施例,非常類似于物理主機通道適配器可以具有多于一個端口(為了冗余,兩個端口是常見的),虛擬hca也可以用兩個端口表示,并且經(jīng)由一個、兩個或更多個虛擬交換機連接到外部ib子網(wǎng)。
根據(jù)實施例,在具有預(yù)填充lid的vswitch體系架構(gòu)中,每個管理程序可以通過pf為自己消耗一個lid,并為每個附加的vf再多消耗一個lid。在ib子網(wǎng)中的所有管理程序中可用的所有vf的總和給出了允許在子網(wǎng)中運行的vm的最大數(shù)量。例如,在子網(wǎng)中每管理程序具有16個虛擬功能的ib子網(wǎng)中,那么每個管理程序在子網(wǎng)中消耗17個lid(16個虛擬功能中的每個虛擬功能一個lid加上用于物理功能的一個lid)。在這種ib子網(wǎng)中,對單個子網(wǎng)的理論管理程序限制由可用單播lid的數(shù)量決定,并且是:2891個(49151個可用lid除以每管理程序17個lid),并且vm的總數(shù)(即,限制)是46256個(2891個管理程序乘以每管理程序16個vf)。(現(xiàn)實中,這些數(shù)字實際上較小,因為ib子網(wǎng)中的每個交換機、路由器或?qū)S胹m節(jié)點也消耗lid)。注意的是,vswitch不需要占用附加的lid,因為它可以與pf共享lid。
根據(jù)實施例,在具有預(yù)填充lid的vswitch體系架構(gòu)中,當網(wǎng)絡(luò)被啟動時,一次為所有l(wèi)id計算通信路徑。當需要啟動新的vm時,系統(tǒng)不必在子網(wǎng)中添加新的lid,否則該動作將導(dǎo)致網(wǎng)絡(luò)完全重新配置,包括路徑重新計算,這是最耗時的部分。作為替代,在管理程序之一中定位用于vm的可用端口(即,可用的虛擬功能),并且將虛擬機附連到該可用的虛擬功能。
根據(jù)實施例,具有預(yù)填充lid的vswitch體系架構(gòu)還允許計算和使用不同路徑以到達由同一管理程序托管的不同vm的能力。本質(zhì)上,這允許這樣的子網(wǎng)和網(wǎng)絡(luò)使用類似lid-掩碼控制(lid-mask-control-like,lmc-like)特征向一個物理機器提供替代路徑,而不受lmc要求lid必須是順序的限制。當需要遷移vm并將其相關(guān)聯(lián)的lid攜帶到目的地時,自由使用非順序lid尤其有用。
根據(jù)實施例,以及以上示出的具有預(yù)填充lid的vswitch體系架構(gòu)的優(yōu)點,可以考慮某些注意事項。例如,因為當網(wǎng)絡(luò)被啟動時,lid在啟用sr-iovvswitch的子網(wǎng)中被預(yù)填充,因此初始路徑計算(例如,在啟動時)會比如果lid沒有被預(yù)填充所花費的時間更長。
infinibandsr-iov體系架構(gòu)模型-具有動態(tài)lid分配的vswitch
根據(jù)實施例,本公開提供了用于提供具有動態(tài)lid分配的vswitch體系架構(gòu)的系統(tǒng)和方法。
圖6示出了根據(jù)實施例的具有動態(tài)lid分配的示例性vswitch體系架構(gòu)。如圖所示,多個交換機501-504可以在結(jié)構(gòu)(諸如infiniband結(jié)構(gòu))的成員之間提供網(wǎng)絡(luò)交換環(huán)境600(例如,ib子網(wǎng))內(nèi)的通信。該結(jié)構(gòu)可以包括多個硬件設(shè)備,諸如主機通道適配器510、520、530。主機通道適配器510、520、530中的每一個又可以分別與管理程序511、521、531交互。每個管理程序又可以連同與它交互的主機通道適配器建立多個虛擬功能514、515、516、524、525、526、534、535、536并將它們分配給多個虛擬機。例如,虛擬機1550可以由管理程序511分配給虛擬功能1514。管理程序511可以附加地將虛擬機2551分配給虛擬功能2515,并且將虛擬機3552分配給虛擬功能3516。管理程序531又可以將虛擬機4553分配給虛擬功能1534。管理程序可以通過每個主機通道適配器上的全特征物理功能513、523、533訪問主機通道適配器。
根據(jù)實施例,交換機501-504中的每一個可以包括多個端口(未示出),其用于設(shè)置線性轉(zhuǎn)發(fā)表以便引導(dǎo)網(wǎng)絡(luò)交換環(huán)境600內(nèi)的流量。
根據(jù)實施例,虛擬交換機512、522和532可以由其各自的管理程序511、521、531來處理。在這種vswitch體系架構(gòu)中,每個虛擬功能是完整的虛擬主機通道適配器(vhca),這意味著分配給vf的vm被分配完整的ib地址集合(例如,gid、guid、lid)和硬件中的專用qp空間。對于網(wǎng)絡(luò)的其余部分和sm(未示出),hca510、520和530看起來像經(jīng)由虛擬交換機、具有連接到它們的附加節(jié)點的交換機。
根據(jù)實施例,本公開提供了用于提供具有動態(tài)lid分配的vswitch體系架構(gòu)的系統(tǒng)和方法。參考圖6,lid被動態(tài)分配給各種物理功能513、523、533,其中物理功能513接收lid1、物理功能523接收lid2并且物理功能533接收lid3。與活動虛擬機相關(guān)聯(lián)的那些虛擬功能也可以接收動態(tài)分配的lid。例如,由于虛擬機1550是活動的并且與虛擬功能1514相關(guān)聯(lián),因此虛擬功能514可以被分配lid5。同樣,虛擬功能2515、虛擬功能3516和虛擬功能1534每個與活動虛擬功能相關(guān)聯(lián)。由此,這些虛擬功能被分配lid,其中l(wèi)id7被分配給虛擬功能2515、lid11被分配給虛擬功能3516、并且虛擬功能9被分配給虛擬功能1535。不同于具有預(yù)填充lid的vswitch,那些當前未與活動虛擬機相關(guān)聯(lián)的虛擬功能不接收lid分配。
根據(jù)實施例,利用動態(tài)lid分配,可以顯著減少初始的路徑計算。當網(wǎng)絡(luò)第一次啟動并且不存在vm時,那么可以使用相對較少數(shù)量的lid用于初始的路徑計算和lft分發(fā)。
根據(jù)實施例,非常類似于物理主機通道適配器可以具有多于一個端口(為了冗余,兩個端口是常見的),虛擬hca也可以用兩個端口表示,并且經(jīng)由一個、兩個或更多個虛擬交換機連接到外部ib子網(wǎng)。
根據(jù)實施例,當在利用具有動態(tài)lid分配的vswitch的系統(tǒng)中創(chuàng)建新的vm時,找到空閑的vm時隙,以便決定在哪個管理程序上啟動新添加的vm,并且也找到唯一的未使用的單播lid。但是,在網(wǎng)絡(luò)中沒有已知的路徑和交換機的lft用于處理新添加的lid。為了處理新添加的vm而計算一組新的路徑在其中每分鐘可以啟動若干vm的動態(tài)環(huán)境中是不期望的。在大型ib子網(wǎng)中,計算一組新的路由會花費幾分鐘,并且這個過程將在每次啟動新的vm時必須重復(fù)。
有利地,根據(jù)實施例,由于管理程序中的所有vf與pf共享相同的上行鏈路,因此不需要計算一組新的路由。只需要遍歷網(wǎng)絡(luò)中所有物理交換機的lft、將轉(zhuǎn)發(fā)端口從屬于管理程序(其中創(chuàng)建vm)的pf的lid條目復(fù)制到新添加的lid、并且發(fā)送單個smp以更新特定交換機的對應(yīng)lft塊。因此,該系統(tǒng)和方法避免了計算一組新的路由的需要。支持動態(tài)lid分配的vswitch系統(tǒng)和方法的進一步細節(jié)在附錄a中被描述,附錄a通過引用被結(jié)合于此。
根據(jù)實施例,在具有動態(tài)lid分配體系架構(gòu)的vswitch中分配的lid不一定是順序的。當將具有預(yù)填充lid的vswitch中的每個管理程序上的vm上分配的lid與具有動態(tài)lid分配的vswitch進行比較時,值得注意的是,在動態(tài)lid分配體系架構(gòu)中分配的lid是非連續(xù)的,而被預(yù)填充的那些lid本質(zhì)上是順序的。在vswitch動態(tài)lid分配體系架構(gòu)中,當創(chuàng)建新的vm時,在vm的整個生命周期中使用下一個可用的lid。相反,在具有預(yù)填充lid的vswitch中,每個vm都會繼承已經(jīng)分配給對應(yīng)vf的lid,并且在沒有實時遷移的網(wǎng)絡(luò)中,連續(xù)附連到給定vf的vm獲得相同的lid。
根據(jù)實施例,具有動態(tài)lid分配體系架構(gòu)的vswitch可以以一些附加的網(wǎng)絡(luò)和運行時sm開銷為代價,利用預(yù)填充lid體系架構(gòu)模型來解決vswitch的缺點。每次創(chuàng)建vm時,子網(wǎng)中的物理交換機的lft可以用與創(chuàng)建的vm相關(guān)聯(lián)的新添加的lid進行更新。對于此操作,需要發(fā)送每交換機一個子網(wǎng)管理分組(smp)。因為每個vm正在使用與其主機管理程序相同的路徑,因此類似lmc的功能也不可用。但是,對所有管理程序中存在的vf的總量沒有限制,并且vf的數(shù)量可以超過單播lid限制的數(shù)量。當然,如果是這種情況,那么并不是所有vf都被允許同時附連到活動vm上,但是,當操作接近單播lid限制時,具有更多的備用管理程序和vf增加了災(zāi)難恢復(fù)和分段網(wǎng)絡(luò)優(yōu)化的靈活性。
infinibandsr-iov體系架構(gòu)模型-具有動態(tài)lid分配和預(yù)填充lid的vswitch
圖7示出了根據(jù)實施例的具有動態(tài)lid分配和預(yù)填充lid的vswitch的示例性vswitch體系架構(gòu)。如圖所示,多個交換機501-504可以在結(jié)構(gòu)(諸如infiniband結(jié)構(gòu))的成員之間提供網(wǎng)絡(luò)交換環(huán)境500(例如,ib子網(wǎng))內(nèi)的通信。該結(jié)構(gòu)可以包括多個硬件設(shè)備,諸如主機通道適配器510、520、530。主機通道適配器510、520、530中的每一個又可以分別與管理程序511、521和531交互。每個管理程序又可以連同與它交互的主機通道適配器建立多個虛擬功能514、515、516、524、525、526、534、535、536并將它們分配給多個虛擬機。例如,虛擬機1550可以由管理程序511分配給虛擬功能1514。管理程序511可以附加地將虛擬機2551分配給虛擬功能2515。管理程序521可以將虛擬機3552分配給虛擬功能3526。管理程序531又可以將虛擬機4553分配給虛擬功能2535。管理程序可以通過每個主機通道適配器上的全特征物理功能513、523、533訪問主機通道適配器。
根據(jù)實施例,交換機501-504中的每一個可以包括多個端口(未示出),其用于設(shè)置線性轉(zhuǎn)發(fā)表以便引導(dǎo)網(wǎng)絡(luò)交換環(huán)境700內(nèi)的流量。
根據(jù)實施例,虛擬交換機512、522和532可以由其各自的管理程序511、521、531來處理。在這種vswitch體系架構(gòu)中,每個虛擬功能是完整的虛擬主機通道適配器(vhca),這意味著分配給vf的vm被分配完整的ib地址集合(例如,gid、guid、lid)和硬件中的專用qp空間。對于網(wǎng)絡(luò)的其余部分和sm(未示出),hca510、520和530看起來像經(jīng)由虛擬交換機、具有連接到它們的附加節(jié)點的交換機。
根據(jù)實施例,本公開提供了用于提供具有動態(tài)lid分配和預(yù)填充lid的混合vswitch體系架構(gòu)的系統(tǒng)和方法。參考圖7,管理程序511可以布置有具有預(yù)填充lid體系架構(gòu)的vswitch,而管理程序521可以布置有具有預(yù)填充lid和動態(tài)lid分配的vswitch。管理程序531可以布置有具有動態(tài)lid分配的vswitch。因此,物理功能513和虛擬功能514-516使其lid被預(yù)填充(即,即使那些未附連到活動虛擬機的虛擬功能被分配了lid)。物理功能523和虛擬功能1524可以使其lid被預(yù)填充,而虛擬功能2和3、525和526使其lid被動態(tài)分配(即,虛擬功能2525可用于動態(tài)lid分配,并且由于虛擬機3552被附連,因此虛擬功能3526具有動態(tài)分配的lid11)。最后,與管理程序3531相關(guān)聯(lián)的功能(物理功能和虛擬功能)可以使其lid被動態(tài)分配。這使得虛擬功能1和3、534和536可用于動態(tài)lid分配,而虛擬功能2535具有動態(tài)分配的lid9,因為虛擬機4553被附連到那里。
根據(jù)諸如圖7所示的實施例,其中(在任何給定管理程序內(nèi)獨立地或組合地)利用了具有預(yù)填充lid的vswitch和具有動態(tài)lid分配的vswitch,每主機通道適配器的預(yù)填充lid的數(shù)量可以由結(jié)構(gòu)管理員定義,并且可以在0<=預(yù)填充的vf<=總vf(每主機通道適配器)的范圍內(nèi),并且可用于動態(tài)lid分配的vf可以通過從vf的總數(shù)(每主機通道適配器)減去預(yù)填充vfs的數(shù)量找到。
根據(jù)實施例,非常類似于物理主機通道適配器可以具有多于一個端口(為了冗余,兩個端口是常見的),虛擬hca也可以用兩個端口表示,并且經(jīng)由一個、兩個或更多個虛擬交換機連接到外部ib子網(wǎng)。
利用vswitch進行動態(tài)重新配置
根據(jù)實施例,本公開提供了用于利用vswitch進行動態(tài)網(wǎng)絡(luò)重新配置的系統(tǒng)和方法。在動態(tài)云環(huán)境中,可以處理實時遷移并且實時遷移可以是可擴展的。當遷移vm并且必須將其地址攜帶到目的地時,需要進行網(wǎng)絡(luò)重新配置。虛擬或別名guid(vguid)以及因此gid的遷移不會造成很大的負擔,因為它們是不影響底層ib路由(例如,線性轉(zhuǎn)發(fā)表和路由)的高層地址。為了遷移vguid,必須將smp發(fā)送到目的地管理程序,以便向當完成遷移時將在vm上分配的vf設(shè)置與傳入vm相關(guān)聯(lián)的vguid。但是,lid的遷移并不是那么簡單,因為必須重新計算路由,并且需要重新配置物理交換機的lft。路由重新計算和分發(fā)需要相當長的時間,其在大型子網(wǎng)上是分鐘的數(shù)量級,從而對可擴展性帶來挑戰(zhàn)。
根據(jù)實施例,vswitch具有通過vswitch訪問的所有vf與pf共享相同上行鏈路的屬性。拓撲不可知動態(tài)重新配置機制可以利用該屬性使重新配置在動態(tài)遷移環(huán)境中可行??梢酝ㄟ^消除路徑計算和減少路徑分發(fā)來最小化lid重新配置時間。對于以上討論的兩種vswitch體系架構(gòu)(lid的預(yù)填充和動態(tài)lid分配),該方法略有不同,但是基礎(chǔ)是相同的。
根據(jù)實施例,動態(tài)重新配置方法包括兩個通用步驟:(a)更新參與管理程序中的lid:一個子網(wǎng)管理分組(smp)被發(fā)送到參與實時遷移的每個管理程序,指示它們向?qū)?yīng)的vf設(shè)置/取消設(shè)置正確的lid;以及(b)更新物理交換機上的線性轉(zhuǎn)發(fā)表(lft):在一個或多個交換機上發(fā)送一個或最多兩個smp,從而強制它們更新其對應(yīng)的lft條目以反映遷移的虛擬機的新位置。這在下面遷移虛擬機和重新配置網(wǎng)絡(luò)的過程中更具體地示出:
1:procedureupdatelftblock(lftblock,switch)
2://如果需要更新lft塊,那么在交換機上發(fā)送smp以
3://更新lft塊。當交換lid時,每交換機可能需要更新
4://所有l(wèi)ft塊中的1或2個lft塊。當復(fù)制
5://lid時,每交換機可能只需要更新所有l(wèi)ft塊中的1個
6://lft塊
7:iflftblockinswitchneedstobeupdatedthen
8:sendsmponswitchtoupdatelftblock
9:endif
10:endprocedure
11:procedureupdatelftblocksonallswitches
12:/*遍歷所有交換機上的所有l(wèi)ft塊
13:*并且如果需要,那么更新lft塊。*/
14:forlftblockinall_lftblocksdo
15:forswinall_switchesdo
16:updatelftblock(lftblock,sw)
17:endfor
18:endfor
19:endprocedure
20:proceduremigratevm(vm,desthypervisor)
21:detachibvffromvm
22:startlivemigrationofvmtothedesthypervisor
23:/*網(wǎng)絡(luò)的重新配置如下*/
24://lid地址遷移過程在具有預(yù)填充lid的vswitch
25://和具有動態(tài)lid分配的vswitch中略微不同。
26:/*在更新參與管理程序中的lid中描述的步驟*/
27:migratetheibaddressesofvm
28:/*在更新物理交換機上的線性轉(zhuǎn)發(fā)表(lft)中描述的步驟*/
29:updatelftblocksonallswitches
30:endprocedure
31:proceduremain
32:migratevm(vm_to_be_migrated,tohypervisor)
33:endprocedure
具有預(yù)填充lid的vswitch中的重新配置
圖8示出了根據(jù)實施例的在虛擬機遷移之前具有預(yù)填充lid的示例性vswitch體系架構(gòu)。如圖所示,多個交換機501-504可以在結(jié)構(gòu)(諸如infiniband結(jié)構(gòu))的成員之間提供網(wǎng)絡(luò)交換環(huán)境800(例如,ib子網(wǎng))內(nèi)的通信。該結(jié)構(gòu)可以包括多個硬件設(shè)備,諸如主機通道適配器510、520、530。主機通道適配器510、520、530中的每一個又可以分別與管理程序511、521和531交互。每個管理程序又可以連同與它交互的主機通道適配器建立多個虛擬功能514、515、516、524、525、526、534、535、536并將它們分配給多個虛擬機。例如,虛擬機1550可以由管理程序511分配給虛擬功能1514。管理程序511可以附加地將虛擬機2551分配給虛擬功能2515,并且將虛擬機3552分配給虛擬功能3516。管理程序531又可以將虛擬機4553分配給虛擬功能1534。管理程序可以通過每個主機通道適配器上的全特征物理功能513、523、533訪問主機通道適配器。
根據(jù)實施例,虛擬交換機512、522和532可以由其各自的管理程序511、521、531來處理。在這種vswitch體系架構(gòu)中,每個虛擬功能是完整的虛擬主機通道適配器(vhca),這意味著分配給vf的vm被分配完整的ib地址集合(例如,gid、guid、lid)和硬件中的專用qp空間。對于網(wǎng)絡(luò)的其余部分和sm(未示出),hca510、520和530看起來像經(jīng)由虛擬交換機、具有連接到它們的附加節(jié)點的交換機。
根據(jù)實施例,交換機501-504中的每一個可以包括多個端口(未示出),其用于設(shè)置線性轉(zhuǎn)發(fā)表(諸如與交換機501相關(guān)聯(lián)的線性轉(zhuǎn)發(fā)表810)以便引導(dǎo)網(wǎng)絡(luò)交換環(huán)境800內(nèi)的流量。如圖所示,線性轉(zhuǎn)發(fā)表810通過交換機501的端口2轉(zhuǎn)發(fā)尋址到虛擬機2551(即,lid3)的流量。同樣,因為即使vm沒有運行,也存在用于所有l(wèi)id的路徑,因此線性轉(zhuǎn)發(fā)表可以定義通過交換機501的端口4到lid12的轉(zhuǎn)發(fā)路徑。
圖9示出了根據(jù)實施例的在虛擬機遷移之后具有預(yù)填充lid的示例性vswitch體系架構(gòu)。如圖所示,多個交換機501-504可以在結(jié)構(gòu)(諸如infiniband結(jié)構(gòu))的成員之間提供網(wǎng)絡(luò)交換環(huán)境900(例如,ib子網(wǎng))內(nèi)的通信。該結(jié)構(gòu)可以包括多個硬件設(shè)備,諸如主機通道適配器510、520、530。主機通道適配器510、520、530中的每一個又可以分別與管理程序511、521和531交互。每個管理程序又可以連同與它交互的主機通道適配器建立多個虛擬功能514、515、516、524、525、526、534、535、536并將它們分配給多個虛擬機。例如,虛擬機1550可以由管理程序511分配給虛擬功能1514。管理程序511可以附加地將虛擬機2551分配給虛擬功能2515,并且將虛擬機3552分配給虛擬功能3516。管理程序531又可以將虛擬機4553分配給虛擬功能1534。管理程序可以通過每個主機通道適配器上的全特征物理功能513、523、533訪問主機通道適配器。
根據(jù)實施例,虛擬交換機512、522和532可以由其各自的管理程序511、521、531來處理。在這種vswitch體系架構(gòu)中,每個虛擬功能是完整的虛擬主機通道適配器(vhca),這意味著分配給vf的vm被分配完整的ib地址集合(例如,gid、guid、lid)和硬件中的專用qp空間。對于網(wǎng)絡(luò)的其余部分和sm(未示出),hca510、520和530看起來像經(jīng)由虛擬交換機、具有連接到它們的附加節(jié)點的交換機。
根據(jù)實施例,交換機501-504中的每一個可以包括多個端口(未示出),其用于設(shè)置線性轉(zhuǎn)發(fā)表(諸如與交換機501相關(guān)聯(lián)的線性轉(zhuǎn)發(fā)表910)以便引導(dǎo)網(wǎng)絡(luò)交換環(huán)境900內(nèi)的流量。
根據(jù)實施例,如果虛擬機2551需要從管理程序511遷移到管理程序531,并且管理程序531上的虛擬功能3536可用,那么虛擬機2可以附連到虛擬功能3536。在這種情況下,lid可以交換(即,分配給遷移的vm的lid的條目可以與在實時遷移完成之后將在目的地管理程序處使用的vf的lid進行交換)。交換機501上的線性轉(zhuǎn)發(fā)表910可以如圖所示被更新,即,到lid3的流量現(xiàn)在通過端口4轉(zhuǎn)發(fā)(以前通過端口2),并且到lid12的路徑現(xiàn)在通過端口2轉(zhuǎn)發(fā)(以前通過端口4)。
根據(jù)實施例,對于具有預(yù)填充lid的vswitch體系架構(gòu),即使vm沒有運行,也存在用于所有l(wèi)id的路徑。為了遷移lid并保持初始路由的平衡,所有交換機上的兩個lft條目可以交換——分配給遷移的vm的lid的條目與在實時遷移完成之后將在目的地管理程序處使用的vf的lid(即,在目的地管理程序處遷移的虛擬機附連到的虛擬功能)。再次參考圖7和圖8,如果具有l(wèi)id2的vm1550需要從管理程序551遷移到管理程序531,并且在管理程序531上具有l(wèi)id12的vf3536可用并且被確定附連到遷移的虛擬機1551,那么交換機501的lft可以被更新。在遷移之前,lid2是通過端口2轉(zhuǎn)發(fā)的,并且lid12是通過端口4轉(zhuǎn)發(fā)的。在遷移之后,lid2通過端口4轉(zhuǎn)發(fā),并且lid12通過端口2轉(zhuǎn)發(fā)。在這種情況下,只需要為這個更新發(fā)送一個smp,因為lft在每塊64個lid的塊中更新,并且lid2和lid12兩者都是包括lid0-63的同一塊的一部分。如果管理程序531上的vf3的lid替代地為64或更大,那么將需要發(fā)送兩個smp,因為兩個lft塊將必須被更新:包含lid2的塊(vmlid)和包含要交換的大于63的lid塊。
具有動態(tài)lid分配的vswitch中的重新配置
根據(jù)實施例,對于具有動態(tài)lid分配的vswitch體系架構(gòu),vf的路徑遵循與其中當前托管vm的管理程序的對應(yīng)pf的路徑相同的路徑。當vm移動時,系統(tǒng)必須找到分配給目的地管理程序的pf的lid,并且遍歷所有交換機的所有l(wèi)ft,并且用目的地管理程序的路徑更新vmlid的路徑。與在具有預(yù)填充lid的重新配置中使用的lid交換技術(shù)相反,始終只需要向需要被更新的交換機發(fā)送一個smp,因為該處理中只涉及一個lid。
重新配置的傳統(tǒng)成本
根據(jù)實施例,全網(wǎng)絡(luò)重新配置方法所需的時間rct是路徑計算所需的時間pct加上lft分發(fā)到所有交換機所需的時間lftdt之和,如等式1所示:
rct=pct+lftdt(1)
根據(jù)實施例,路徑的計算復(fù)雜度隨子網(wǎng)的大小呈多項式增長,并且pct在大型子網(wǎng)上是幾分鐘的數(shù)量級。
在計算路徑之后,可以更新網(wǎng)絡(luò)(諸如ib子網(wǎng))中的交換機的lft。lft分發(fā)時間lftdt隨子網(wǎng)的大小和交換機的數(shù)量呈線性增長。如上所述,lft在64個lid的塊上更新,因此在具有少量交換機和至多64個消耗的lid的小型子網(wǎng)中,在路徑分發(fā)期間只需要向每個交換機發(fā)送一個smp。在其中諸如具有消耗了49151個lid的完全填充的ib子網(wǎng)的其它情況下,在傳統(tǒng)模型中的路徑分發(fā)期間,需要每交換機發(fā)送768個smp。
smp可以使用定向路由或基于目的地的路由。當使用定向路由時,每個中間交換機必須在將分組轉(zhuǎn)發(fā)到下一跳之前,用當前跳指針處理和更新分組的報頭并且反轉(zhuǎn)路徑。在基于目的地的路由中,每個分組被立即轉(zhuǎn)發(fā)。自然地,定向路由會向轉(zhuǎn)發(fā)的分組添加延遲。但是無論如何,opensm為所有傳統(tǒng)smp使用定向路由。對于其中l(wèi)ft尚未分發(fā)到交換機的初始拓撲發(fā)現(xiàn)處理,或者當正在發(fā)生重新配置和到交換機的路由正在改變時,這是必需的。
假定n是網(wǎng)絡(luò)中的交換機的數(shù)量;m是由消耗的lid數(shù)量確定的、將在每個交換機上更新的所有l(wèi)ft塊的數(shù)量;k是在到達每個交換機之前,每個smp遍歷網(wǎng)絡(luò)所需的平均時間;以及r是由于定向路由而對每個smp添加的平均時間。假設(shè)沒有流水線,那么lft分發(fā)時間lftdt可以在等式2中被進一步分解:
lftdt=n·m·(k+r)(2)
通過組合等式1和2,等式3是全網(wǎng)絡(luò)重新配置所需的時間的結(jié)果:
rct=pct+n·m·(k+r)(3)
在大型子網(wǎng)中,傳統(tǒng)上,路徑計算所需的時間pct遠遠大于lft分發(fā)所需的時間lftdt,即使(當使用更多的lid,并且因此每交換機m使用更多的lft塊時,以及當網(wǎng)絡(luò)中存在更多的交換機n時)lftdt變大。等式2和3中的n·m部分定義了為重新配置需要發(fā)送的smp的總數(shù)。
利用vswitch體系架構(gòu)進行實時遷移的重新配置成本
使用傳統(tǒng)的重新配置技術(shù)將使vm遷移無法使用。在大型子網(wǎng)中,等式3中的pct變得非常大并且主導(dǎo)rct。如果實時遷移觸發(fā)了完全的傳統(tǒng)重新配置,那么它通常將花費幾分鐘的時間才能完成。
根據(jù)實施例,通過利用具有預(yù)填充lid的vswitch或具有動態(tài)lid分配的vswitch,可以基本上消除重新配置時間的pct部分,因為已經(jīng)計算了路徑以交換或復(fù)制每個交換機的lft中的lid條目。此外,不需要每交換機發(fā)送m個smp,因為當遷移vm時,取決于使用所建議的哪個vswitch方案,只有一個或最多兩個lid受到影響,而與lft塊的總數(shù)無關(guān)。因此,對于每個遷移,只有m'∈{1,2}個smp需要發(fā)送到交換機(如果當lid被預(yù)填充時兩個lid條目不位于同一lft塊中,則m'=2,否則m'=1)。同樣,存在某些情況,需要更新0<n'<n個交換機。
根據(jù)實施例,現(xiàn)在參考圖10,其示出了根據(jù)實施例的具有潛在虛擬機遷移路徑的具有預(yù)填充lid的示例性vswitch架構(gòu)。如圖所示,多個交換機501-504可以在結(jié)構(gòu)(諸如infiniband結(jié)構(gòu))的成員之間提供網(wǎng)絡(luò)交換環(huán)境1000(例如,ib子網(wǎng))內(nèi)的通信。該結(jié)構(gòu)可以包括多個硬件設(shè)備,諸如主機通道適配器510、520、530。主機通道適配器510、520、530中的每一個又可以分別與管理程序511、521和531交互。每個管理程序又可以連同與它交互的主機通道適配器建立多個虛擬功能514、515、516、524、525、526、534、535、536并將它們分配給多個虛擬機。例如,虛擬機1550可以由管理程序511分配給虛擬功能1514。管理程序511可以附加地將虛擬機2551分配給虛擬功能2515,并且將虛擬機3552分配給虛擬功能3516。管理程序531又可以將虛擬機4553分配給虛擬功能1534。管理程序可以通過每個主機通道適配器上的全特征物理功能513、523、533訪問主機通道適配器。
根據(jù)實施例,虛擬交換機512、522和532可以由其各自的管理程序511、521、531來處理。在這種vswitch體系架構(gòu)中,每個虛擬功能是完整的虛擬主機通道適配器(vhca),這意味著分配給vf的vm被分配完整的ib地址集合(例如,gid、guid、lid)和硬件中的專用qp空間。對于網(wǎng)絡(luò)的其余部分和sm(未示出),hca510、520和530看起來像經(jīng)由虛擬交換機、具有連接到它們的附加節(jié)點的交換機。
根據(jù)實施例,交換機501-504中的每一個可以包括多個端口(未示出),其用于設(shè)置線性轉(zhuǎn)發(fā)表(諸如與交換機501相關(guān)聯(lián)的線性轉(zhuǎn)發(fā)表1010)以便引導(dǎo)網(wǎng)絡(luò)交換環(huán)境1000內(nèi)的流量。
根據(jù)實施例,圖10繪出了在其中vm2551可以潛在地從管理程序511遷移到管理程序521(其中存在三個可用的虛擬功能)的網(wǎng)絡(luò)交換環(huán)境1000中的情況。如果lid3與管理程序521中的任何可用的lid(6、7或8)進行了交換,那么交換機501將根本不需要更新,因為初始路由已經(jīng)路由共享交換機501上的相同端口(端口2)的lid3和lid6、7和8。特別地,對于該示例,n'=1,因為只有交換機503(即,葉交換機)將需要被更新。
根據(jù)實施例,最終,所公開的重新配置機制的成本vswitchrct在等式4中找到,并且在大型子網(wǎng)中,vswitchrct遠小于rct。
vswitch_rct=n′·m′·(k+r)(4)
根據(jù)實施例,可以使用針對smp分組的基于目的地的路由。當遷移vm時,屬于交換機的lid的路由將不受影響。因此,基于目的地的路由可以保證向交換機正確地交付smp,并且r可以從等式4中消除,從而給出等式5:
vswitch_rct=n′·m′·k(5)
根據(jù)實施例,流水線可以用于更進一步減少vswitch重新配置時間。
圖11是根據(jù)實施例的用于支持網(wǎng)絡(luò)中的虛擬機遷移的方法的流程圖。在步驟1110處,該方法可以在包括一個或多個微處理器的一個或多個計算機處提供一個或多個交換機,該一個或多個交換機至少包括葉交換機,其中一個或多個交換機中的每一個包括多個端口;多個主機通道適配器,其中主機通道適配器中的每一個包括至少一個虛擬功能,并且其中多個主機通道適配器經(jīng)由一個或多個交換機互連;多個管理程序,其中多個管理程序中的每一個與多個主機通道適配器中的至少一個相關(guān)聯(lián);以及多個虛擬機,其中多個虛擬機中的每一個與至少一個虛擬功能相關(guān)聯(lián)。
在步驟1120處,該方法可以利用具有預(yù)填充的本地標識符(lid)體系架構(gòu)的虛擬交換機或具有動態(tài)lid分配體系架構(gòu)的虛擬交換機中的一個或多個布置多個主機通道適配器。
在步驟1130處,該方法可以將在多個管理程序中的第一管理程序上運行的多個虛擬機的第一虛擬機實時遷移到多個管理程序中的第二管理程序;并且其中第一管理程序與多個主機通道適配器中的第一主機通道適配器相關(guān)聯(lián),并且第二管理程序與多個主機通道適配器中的第二主機通道適配器相關(guān)聯(lián)。
本發(fā)明可以使用一個或多個常規(guī)的通用或?qū)S脭?shù)字計算機、計算設(shè)備、機器或微處理器(包括一個或多個處理器、存儲器和/或根據(jù)本發(fā)明的教導(dǎo)編程的計算機可讀存儲介質(zhì))來方便地實現(xiàn)。如對于軟件領(lǐng)域的技術(shù)人員將顯而易見,基于本公開的教導(dǎo),熟練的編程人員可以容易地準備適當?shù)能浖幋a。
在一些實施例中,本發(fā)明包括計算機程序產(chǎn)品,該計算機程序產(chǎn)品是具有存儲在其上/其中可以用于對計算機進行編程以執(zhí)行本發(fā)明的任何處理的指令的存儲介質(zhì)或計算機可讀介質(zhì)。存儲介質(zhì)可以包括但不限于,任何類型的盤(包括軟盤、光盤、dvd、cd-rom、微驅(qū)動器和磁光盤)、rom、ram、eprom、eeprom、dram、vram、閃存存儲器設(shè)備、磁或光卡、納米系統(tǒng)(包括分子存儲器ic)或適于存儲指令和/或數(shù)據(jù)的任何類型的介質(zhì)或設(shè)備。
已經(jīng)為圖示和描述的目的提供了本發(fā)明的前述描述。它不是窮盡的或者要把本發(fā)明限定到所公開的精確形式。許多修改和變化對本領(lǐng)域技術(shù)人員來說將顯而易見。修改和變化包括所公開特征的任何相關(guān)組合。實施例的選擇與描述是為了最好地解釋本發(fā)明的原理及其實踐應(yīng)用,從而使本領(lǐng)域其他技術(shù)人員能夠理解本發(fā)明用于各種實施例并且可以進行適于預(yù)期特定用途的各種修改。本發(fā)明的范圍要由以下權(quán)利要求及其等價物來定義。