版權(quán)聲明
本專利文檔公開的一部分包含受版權(quán)保護(hù)的素材。版權(quán)擁有者不反對(duì)任何人對(duì)專利文檔或?qū)@_按照在專利商標(biāo)局的專利文件或記錄中出現(xiàn)那樣進(jìn)行的傳真復(fù)制,但是除此之外在任何情況下都保留所有版權(quán)。
本發(fā)明一般而言涉及計(jì)算機(jī)系統(tǒng),并且具體而言,涉及多租戶(multi-tenant)集群環(huán)境。
背景技術(shù):
多租賃允諾對(duì)可用系統(tǒng)資源的高利用率,并且有助于維護(hù)服務(wù)提供商的成本有效(costeffective)的操作。然而,多租戶高性能計(jì)算(hpc)基礎(chǔ)設(shè)施帶來(lái)了獨(dú)特的挑戰(zhàn),這些挑戰(zhàn)與向租戶提供性能隔離以及實(shí)現(xiàn)跨網(wǎng)絡(luò)架構(gòu)的高效負(fù)載平衡這二者關(guān)聯(lián)。
技術(shù)實(shí)現(xiàn)要素:
系統(tǒng)和方法可以支持多租戶集群環(huán)境中的分區(qū)感知(partition-aware)路由。示例性方法可以支持多租戶集群環(huán)境內(nèi)的一個(gè)或多個(gè)租戶。該方法可以將一個(gè)或多個(gè)租戶中的每個(gè)租戶與多個(gè)分區(qū)中的分區(qū)關(guān)聯(lián)。然后該方法可以將該多個(gè)分區(qū)中的每個(gè)分區(qū)與多個(gè)節(jié)點(diǎn)中的一個(gè)或多個(gè)節(jié)點(diǎn)關(guān)聯(lián),該多個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)與多個(gè)交換機(jī)中的一葉子交換機(jī)關(guān)聯(lián),該多個(gè)交換機(jī)包括多個(gè)葉子交換機(jī)和多個(gè)根交換機(jī)。最后,該方法可以生成一個(gè)或多個(gè)線性轉(zhuǎn)發(fā)表,這一個(gè)或多個(gè)線性轉(zhuǎn)發(fā)表提供多個(gè)分區(qū)之間的隔離,其中這多個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)與一分區(qū)次序關(guān)聯(lián)。
根據(jù)實(shí)施例,在多租戶hpc系統(tǒng)中,每個(gè)租戶可以經(jīng)歷可預(yù)測(cè)的網(wǎng)絡(luò)性能,而不受其他租戶的工作負(fù)載的影響。
附圖說(shuō)明
圖1示出了根據(jù)實(shí)施例的多租戶集群環(huán)境的圖示。
圖2示出了在其中可以實(shí)踐本公開的實(shí)施例的網(wǎng)絡(luò)環(huán)境中的樹形拓?fù)涞膱D示。
圖3示出了在其中可以實(shí)踐本公開的實(shí)施例的多租戶集群環(huán)境中的路由的圖示。
圖4示出了在其中可以實(shí)踐本公開的實(shí)施例的多租戶集群環(huán)境中的路由的圖示。
圖5示出了根據(jù)實(shí)施例的支持多租戶集群環(huán)境中的分區(qū)感知路由的圖示。
圖6示出了根據(jù)實(shí)施例的支持多租戶集群環(huán)境中的分區(qū)感知路由的圖示。
圖7示出了根據(jù)實(shí)施例的支持多租戶集群環(huán)境中的分區(qū)感知路由的圖示。
圖8示出了根據(jù)實(shí)施例的支持多租戶集群環(huán)境中的分區(qū)感知路由的圖示。
圖9示出了根據(jù)實(shí)施例的用于支持多租戶集群環(huán)境中的分區(qū)感知路由的方法的圖示。
具體實(shí)施方式
在下面的詳細(xì)描述中,將通過(guò)舉例而不是限制的方式在附圖的圖中說(shuō)明本發(fā)明。應(yīng)當(dāng)指出,在本公開中對(duì)“一”或“一個(gè)”或“一些”實(shí)施例的引用不一定是對(duì)相同的實(shí)施例,并且這種引用意味著至少一個(gè)實(shí)施例。雖然討論了具體的實(shí)現(xiàn),但是應(yīng)當(dāng)理解,具體實(shí)現(xiàn)僅僅是為了說(shuō)明的目的而提供的。相關(guān)領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,在不背離本發(fā)明的范圍和精神的情況下,可以使用其它部件和配置。
在整個(gè)附圖和詳細(xì)描述中,使用共同的引用標(biāo)號(hào)來(lái)指示相同的元件;因此,如果在其它地方對(duì)元件進(jìn)行了描述,則圖中所使用的引用標(biāo)號(hào)可以在特定于這個(gè)圖的具體描述中引用,或者可以不在特定于這個(gè)圖的具體描述中引用。
本發(fā)明的以下描述使用infinibandtm(ib)網(wǎng)絡(luò)作為高性能網(wǎng)絡(luò)的示例。對(duì)于本領(lǐng)域技術(shù)人員將清楚的是,可以使用其它類型的高性能網(wǎng)絡(luò)而不受限制。以下描述還使用胖樹拓?fù)渥鳛榧軜?gòu)拓?fù)涞氖纠?。?duì)于本領(lǐng)域技術(shù)人員將清楚的是,可以使用其它類型的架構(gòu)拓?fù)涠皇芟拗啤?/p>
infinibandtm
infinibandtm(ib)是由infinibandtm貿(mào)易協(xié)會(huì)開發(fā)的開放標(biāo)準(zhǔn)無(wú)損網(wǎng)絡(luò)技術(shù)。該技術(shù)基于提供高吞吐量和低延遲通信的串行點(diǎn)對(duì)點(diǎn)全雙工互連,尤其適用于hpc應(yīng)用和數(shù)據(jù)中心。
infinibandtm體系結(jié)構(gòu)(iba)支持雙層拓?fù)鋭澐帧T谙聦樱琲b網(wǎng)絡(luò)被稱為子網(wǎng),其中子網(wǎng)可以包括使用交換機(jī)和點(diǎn)對(duì)點(diǎn)鏈路互連的一組主機(jī)。在上層,ib架構(gòu)構(gòu)成一個(gè)或多個(gè)子網(wǎng),該一個(gè)或多個(gè)子網(wǎng)可以使用路由器互連。
在子網(wǎng)內(nèi),使用交換機(jī)和點(diǎn)對(duì)點(diǎn)鏈路來(lái)連接主機(jī)。此外,存在一個(gè)主管理實(shí)體——子網(wǎng)管理器(sm),它駐留在子網(wǎng)中的指定的子網(wǎng)設(shè)備上。子網(wǎng)管理器負(fù)責(zé)配置、激活和維護(hù)ib子網(wǎng)。此外,子網(wǎng)管理器(sm)可以負(fù)責(zé)執(zhí)行ib架構(gòu)中的路由表計(jì)算。在這里,例如,ib網(wǎng)絡(luò)的路由的目的在于本地子網(wǎng)中的所有源和目的地對(duì)之間的恰當(dāng)?shù)呢?fù)載平衡。
通過(guò)子網(wǎng)管理接口,子網(wǎng)管理器與子網(wǎng)管理代理(sma)交換被稱為子網(wǎng)管理數(shù)據(jù)包(smp)的控制數(shù)據(jù)包。子網(wǎng)管理代理駐留在每個(gè)ib子網(wǎng)設(shè)備上。通過(guò)使用smp,子網(wǎng)管理器能夠發(fā)現(xiàn)架構(gòu),配置端節(jié)點(diǎn)和交換機(jī),以及接收來(lái)自sma的通知。
一般而言,除主子網(wǎng)管理器之外的所有其它子網(wǎng)管理器都在待機(jī)模式下起作用以用于容錯(cuò)。然而,在主子網(wǎng)管理器發(fā)生故障的情景中,由待機(jī)的子網(wǎng)管理器協(xié)商新的主子網(wǎng)管理器。主子網(wǎng)管理器還執(zhí)行對(duì)子網(wǎng)的周期性掃描(sweep),以檢測(cè)任何拓?fù)渥兓⑾鄳?yīng)地重新配置網(wǎng)絡(luò)。
此外,子網(wǎng)內(nèi)的主機(jī)和交換機(jī)可以使用本地標(biāo)識(shí)符(lid)來(lái)尋址,并且單個(gè)子網(wǎng)可以被限制為49151個(gè)lid。除了作為在子網(wǎng)內(nèi)有效的本地地址的lid,每個(gè)ib設(shè)備還可以具有被燒錄到其非易失性存儲(chǔ)器中的64位全局唯一標(biāo)識(shí)符(guid)。guid可以被用于形成全局標(biāo)識(shí)符(gid),全局標(biāo)識(shí)符是ib層三(l3)地址??梢酝ㄟ^(guò)將64位子網(wǎng)標(biāo)識(shí)符(id)與64位guid串接以形成類似于ipv6的128位地址來(lái)創(chuàng)建gid。例如,可以將不同的端口guid指派給連接到ib架構(gòu)的端口。
在網(wǎng)絡(luò)初始化時(shí),sm可以計(jì)算路由表(即,樹內(nèi)的每對(duì)節(jié)點(diǎn)之間的連接/路由)。此外,無(wú)論何時(shí)拓?fù)涓淖?,路由表都可以被更新,以便確保連接性和最佳性能。在正常操作期間,sm可以執(zhí)行對(duì)網(wǎng)絡(luò)的周期性輕掃描(lightsweep)以檢查拓?fù)渥兓H绻谳p掃描期間發(fā)現(xiàn)變化,或者如果sm接收到發(fā)信號(hào)通知網(wǎng)絡(luò)變化的信息(陷阱),則sm可以根據(jù)所發(fā)現(xiàn)的變化重新配置網(wǎng)絡(luò)。
例如,當(dāng)網(wǎng)絡(luò)拓?fù)涓淖儠r(shí),諸如當(dāng)鏈路斷開時(shí)、當(dāng)添加設(shè)備時(shí)或者當(dāng)鏈路被移除時(shí),sm可以重新配置網(wǎng)絡(luò)。重新配置步驟可以包括在網(wǎng)絡(luò)初始化期間執(zhí)行的步驟。此外,重新配置可以具有限于在其中發(fā)生網(wǎng)絡(luò)變化的子網(wǎng)的局部范圍。而且,使用路由器對(duì)大型架構(gòu)的分段會(huì)限制重新配置的范圍。
ib系統(tǒng)中的多租賃
從聯(lián)網(wǎng)角度來(lái)看,經(jīng)由分區(qū)的多租賃可以提供對(duì)網(wǎng)絡(luò)資源的高利用率,并有助于維護(hù)服務(wù)提供商的成本有效的操作。然而,多租戶基礎(chǔ)設(shè)施還強(qiáng)加了若干重要的安全問(wèn)題,最具挑戰(zhàn)性的安全問(wèn)題之一是與為租戶提供性能隔離關(guān)聯(lián)的。應(yīng)當(dāng)向每個(gè)租戶提供可預(yù)測(cè)的網(wǎng)絡(luò)性能,而不受系統(tǒng)中其他租戶的工作負(fù)載的影響。ib系統(tǒng)中的網(wǎng)絡(luò)隔離可以通過(guò)分區(qū)來(lái)提供。
根據(jù)實(shí)施例,分區(qū)是端口的邏輯組,使得組的成員只能與同一組的其他成員通信。在主機(jī)通道適配器(hca)和交換機(jī)處,可以使用分區(qū)成員資格信息來(lái)過(guò)濾數(shù)據(jù)包以實(shí)施隔離。數(shù)據(jù)包一到達(dá)傳入端口,就可以丟棄具有無(wú)效分區(qū)信息的數(shù)據(jù)包。在多租戶ib系統(tǒng)中,分區(qū)可以被用于創(chuàng)建租戶集群。在分區(qū)實(shí)施到位的情況下,節(jié)點(diǎn)不可以與屬于不同租戶集群的其它節(jié)點(diǎn)通信。以這種方式,即使在存在受損租戶節(jié)點(diǎn)或惡意租戶節(jié)點(diǎn)的情況下,也可以保證系統(tǒng)的安全性。
ib路由一般可以基于存儲(chǔ)在交換機(jī)中的線性轉(zhuǎn)發(fā)表(lft)。lft是由子網(wǎng)管理器(sm)在不考慮分區(qū)信息的情況下計(jì)算的。因此,中間網(wǎng)絡(luò)鏈路可能攜帶屬于不同分區(qū)的流量。中間鏈路的這種共享可能導(dǎo)致分區(qū)干擾。因此,租戶體驗(yàn)不可預(yù)測(cè)的網(wǎng)絡(luò)性能。此外,在分區(qū)的子網(wǎng)中路由算法的平衡特征也受到影響。這是因?yàn)?,即使跨越分區(qū)邊界的鏈路不用于用戶流量,這些鏈路也與其它起作用的鏈路以相同的方式被路由(并且因此在平衡中被考慮)。變差的平衡會(huì)導(dǎo)致縮減的有效帶寬和次優(yōu)的網(wǎng)絡(luò)利用率。
ib一般提供服務(wù)質(zhì)量(qos)特征,該服務(wù)質(zhì)量特征可以被用于向每個(gè)分區(qū)保證可用帶寬的份額而無(wú)論其它分區(qū)中的節(jié)點(diǎn)如何。然后通過(guò)給每個(gè)分區(qū)指派被稱為服務(wù)層級(jí)(sl)的可用的差異化的流量類別來(lái)提供帶寬保證。然后根據(jù)sl到虛擬道(virtuallane,vl)映射表將每個(gè)sl映射到鏈路上可用的十五個(gè)vl中的一個(gè)。
在將sl指派給分區(qū)時(shí)可能出現(xiàn)問(wèn)題,這是因?yàn)橄到y(tǒng)只可以利用15個(gè)vl在網(wǎng)絡(luò)中創(chuàng)建不同的分區(qū),而ib網(wǎng)絡(luò)一般可以具有大量的分區(qū)(例如,每個(gè)端口可以是最多達(dá)32768個(gè)分區(qū)的成員)。此外,在現(xiàn)有的ib硬件中,常見的是只支持九個(gè)vl(包括為子網(wǎng)管理保留的一個(gè)vl)。另外,由于sl是稀缺資源,所以可能期望盡可能多地留出它們以用于其它目的,例如,用以在網(wǎng)絡(luò)中提供容錯(cuò)或服務(wù)差異化。
ib體系結(jié)構(gòu)
根據(jù)實(shí)施例,ib是由ibta(infinibandtradeassociation,infiniband貿(mào)易協(xié)會(huì))開發(fā)的開放標(biāo)準(zhǔn)無(wú)損網(wǎng)絡(luò)技術(shù)。該技術(shù)定義了提供高吞吐量和低延遲通信的串行點(diǎn)對(duì)點(diǎn)全雙工互連。ib網(wǎng)絡(luò)可以由使用路由器互連的一個(gè)或多個(gè)子網(wǎng)組成。在子網(wǎng)內(nèi),使用交換機(jī)和點(diǎn)對(duì)點(diǎn)鏈路連接主機(jī)。在每個(gè)ib子網(wǎng)內(nèi),可以存在一個(gè)主管理實(shí)體——駐留在任何指定的子網(wǎng)設(shè)備上的子網(wǎng)管理器(sm),該子網(wǎng)管理器配置、激活和維護(hù)該ib子網(wǎng)。
通過(guò)子網(wǎng)管理接口,sm與駐留在每個(gè)ib設(shè)備上的子網(wǎng)管理代理(sma)交換被稱為子網(wǎng)管理數(shù)據(jù)包(smp)的控制數(shù)據(jù)包。通過(guò)使用smp,sm能夠發(fā)現(xiàn)架構(gòu)、配置端節(jié)點(diǎn)和交換機(jī),以及接收來(lái)自sma的通知。sm還可以執(zhí)行對(duì)子網(wǎng)的周期性輕掃描,以檢測(cè)任何拓?fù)渥兓⑾鄳?yīng)地重新配置網(wǎng)絡(luò)。
根據(jù)實(shí)施例,ib網(wǎng)絡(luò)中的子網(wǎng)內(nèi)路由可以基于存儲(chǔ)在交換機(jī)中的lft。lft由sm根據(jù)使用中的路由機(jī)制計(jì)算。在子網(wǎng)中,所有交換機(jī)以及端節(jié)點(diǎn)上的所有hca端口都使用本地標(biāo)識(shí)符(lid)來(lái)尋址。lft中的每個(gè)條目由目的地lid(dlid)和輸出端口組成。支持表中每個(gè)lid僅一個(gè)條目。當(dāng)數(shù)據(jù)包到達(dá)交換機(jī)時(shí),它的輸出端口是通過(guò)在該交換機(jī)的轉(zhuǎn)發(fā)表中查找dlid來(lái)確定的。路由是確定性的,因?yàn)閿?shù)據(jù)包在給定的源-目的地對(duì)(lid對(duì))之間采用網(wǎng)絡(luò)中的相同的路徑。
根據(jù)實(shí)施例,分區(qū)是由ib支持的、用于提供共享網(wǎng)絡(luò)架構(gòu)的系統(tǒng)的邏輯組的隔離的安全機(jī)制。架構(gòu)中的節(jié)點(diǎn)上的每個(gè)hca端口可以是一個(gè)或多個(gè)分區(qū)的成員。分區(qū)成員資格由集中式分區(qū)管理器管理,該集中式分區(qū)管理器可以是sm的一部分。sm可以將關(guān)于每個(gè)端口的分區(qū)成員資格信息配置為16位分區(qū)鍵(p鍵)的表。sm還可以利用包含與lid關(guān)聯(lián)的p鍵信息的分區(qū)實(shí)施表來(lái)配置交換機(jī)和路由器。
根據(jù)實(shí)施例,對(duì)于節(jié)點(diǎn)之間的通信,除了管理隊(duì)列對(duì)(qp0和qp1)之外,可以將隊(duì)列對(duì)(qp)和端到端上下文(eec)指派給特定分區(qū)。然后可以將p鍵信息添加到所發(fā)送的每個(gè)ib傳送數(shù)據(jù)包。當(dāng)數(shù)據(jù)包到達(dá)hca端口或交換機(jī)時(shí),可以對(duì)照由sm配置的表驗(yàn)證該數(shù)據(jù)包的p鍵值。如果找到無(wú)效的p鍵值,則立即丟棄數(shù)據(jù)包。以這種方式,僅在共享分區(qū)的端口之間允許通信。
圖1中示出了ib分區(qū)的示例,圖1示出了根據(jù)實(shí)施例的多租戶集群環(huán)境的圖示。在圖1中所示的示例中,節(jié)點(diǎn)a-e即101-105使用infiniband架構(gòu)100經(jīng)由相應(yīng)的主機(jī)信道適配器111-115進(jìn)行通信。節(jié)點(diǎn)a-e被布置成分區(qū),即分區(qū)1110、分區(qū)2120和分區(qū)3130。分區(qū)1包括節(jié)點(diǎn)a101和節(jié)點(diǎn)d104。分區(qū)2包括節(jié)點(diǎn)a101、節(jié)點(diǎn)b102和節(jié)點(diǎn)c103。分區(qū)3包括節(jié)點(diǎn)c103和節(jié)點(diǎn)e105。由于分區(qū)的布置,節(jié)點(diǎn)d104和節(jié)點(diǎn)e105不允許通信,因?yàn)檫@些節(jié)點(diǎn)不共享分區(qū)。同時(shí),例如,節(jié)點(diǎn)a101和節(jié)點(diǎn)c103被允許通信,因?yàn)檫@些節(jié)點(diǎn)兩者都是分區(qū)2120的一部分。
根據(jù)實(shí)施例,ib是分層體系結(jié)構(gòu),其中可以使用vl將每個(gè)物理鏈路劃分成多個(gè)虛擬鏈路。每個(gè)vl可以具有自己的緩沖、流量控制和擁塞管理資源??梢酝ㄟ^(guò)一組差異化的流量類別(sl)來(lái)提供qos。sl表示數(shù)據(jù)包可以在網(wǎng)絡(luò)中接收的服務(wù)的類別。每個(gè)sl基于所配置的sl到vl映射表而映射到鏈路上的vl。ib支持最多達(dá)16個(gè)vl。然而,最后一個(gè)vl是為子網(wǎng)管理流量保留的并且一般不被用戶應(yīng)用使用。
胖樹(ftree)拓?fù)浜吐酚?/u>
根據(jù)實(shí)施例,基于ib的hpc系統(tǒng)中的一些采用胖樹拓?fù)湟岳门謽涮峁┑挠杏脤傩?。這些屬性包括由于每個(gè)源-目的地對(duì)之間的多個(gè)路徑的可用性而產(chǎn)生的固有的容錯(cuò)和完全的二分帶寬。胖樹背后的最初想法是,當(dāng)樹朝向拓?fù)涞母苿?dòng)時(shí),在節(jié)點(diǎn)之間采用具有更多的可用帶寬的較胖的鏈路。較胖的鏈路可以幫助避免上層交換機(jī)中的擁塞并且二分帶寬被維持。
圖2示出了其中可以實(shí)踐本公開的實(shí)施例的網(wǎng)絡(luò)環(huán)境中的樹形拓?fù)涞膱D示。如圖2中所示,在網(wǎng)絡(luò)架構(gòu)200中可以連接一個(gè)或多個(gè)端節(jié)點(diǎn)201-204。網(wǎng)絡(luò)架構(gòu)200可以基于胖樹拓?fù)洌撆謽渫負(fù)浒ǘ鄠€(gè)葉子交換機(jī)211-214以及多個(gè)脊交換機(jī)或根交換機(jī)231-234。此外,網(wǎng)絡(luò)架構(gòu)200可以包括一個(gè)或多個(gè)中間交換機(jī),諸如交換機(jī)221-224。
還如圖2中所示,端節(jié)點(diǎn)201-204中的每一個(gè)可以是多宿主節(jié)點(diǎn),即,通過(guò)多個(gè)端口連接到網(wǎng)絡(luò)架構(gòu)200的兩個(gè)或更多個(gè)部分的單個(gè)節(jié)點(diǎn)。例如,節(jié)點(diǎn)201可以包括端口h1和h2,節(jié)點(diǎn)202可以包括端口h3和h4,節(jié)點(diǎn)203可以包括端口h5和h6,并且節(jié)點(diǎn)204可以包括端口h7和h8。
此外,每個(gè)交換機(jī)可以具有多個(gè)交換機(jī)端口。例如,根交換機(jī)231可以具有交換機(jī)端口1-2,根交換機(jī)232可以具有交換機(jī)端口3-4,根交換機(jī)233可以具有交換機(jī)端口5-6,并且根交換機(jī)234可以具有交換機(jī)端口7-8。
根據(jù)實(shí)施例,胖樹路由機(jī)制是用于基于ib的胖樹拓?fù)涞淖盍餍械穆酚伤惴ㄖ弧E謽渎酚蓹C(jī)制也在ofed(開放架構(gòu)企業(yè)分發(fā)——用于構(gòu)建和部署基于ib的應(yīng)用的標(biāo)準(zhǔn)軟件堆棧)子網(wǎng)管理器opensm中實(shí)現(xiàn)。
胖樹路由機(jī)制的目的在于生成跨網(wǎng)絡(luò)架構(gòu)中的鏈路均勻散布最短路徑路由的lft。該機(jī)制按索引次序遍歷架構(gòu)并將端節(jié)點(diǎn)的目標(biāo)lid(以及因此對(duì)應(yīng)的路由)指派給每個(gè)交換機(jī)端口。對(duì)于連接到相同葉子交換機(jī)的端節(jié)點(diǎn),索引次序可以取決于端節(jié)點(diǎn)所連接到的交換機(jī)端口(即,端口編號(hào)順序)。對(duì)于每個(gè)端口,該機(jī)制可以維護(hù)端口使用計(jì)數(shù)器,并且可以在每次添加新路由時(shí)使用這個(gè)端口使用計(jì)數(shù)器來(lái)選擇最少使用的端口。
如上面所提到的,在分區(qū)的子網(wǎng)中,不允許不是共同分區(qū)的成員的節(jié)點(diǎn)進(jìn)行通信。在實(shí)踐中,這意味著由胖樹路由算法指派的路由中的一些不用于用戶流量。當(dāng)胖樹路由機(jī)制以與該胖樹路由機(jī)制針對(duì)其它起作用的路徑相同的方式為這些路由生成lft時(shí),會(huì)出現(xiàn)問(wèn)題。這種行為會(huì)導(dǎo)致鏈路上的變差的平衡,因?yàn)楣?jié)點(diǎn)是以索引的次序路由的。由于路由是在不注意(oblivious)分區(qū)的情況下進(jìn)行的,所以胖樹路由的子網(wǎng)一般在分區(qū)間提供不佳的隔離。
圖3示出了其中可以實(shí)踐本公開的實(shí)施例的多租戶集群環(huán)境中的路由的圖示。更具體而言,圖3詳細(xì)說(shuō)明了變差的負(fù)載平衡和不佳的隔離的問(wèn)題。
圖3示出了在三個(gè)重疊分區(qū)中具有四個(gè)交換機(jī)(根交換機(jī)325-326和葉子交換機(jī)320-321)以及六個(gè)端節(jié)點(diǎn)(節(jié)點(diǎn)a-f,301-306)的二級(jí)胖樹拓?fù)?。分區(qū)1包括節(jié)點(diǎn)b302和節(jié)點(diǎn)c303。分區(qū)2包括節(jié)點(diǎn)a301、節(jié)點(diǎn)c303、節(jié)點(diǎn)d304和節(jié)點(diǎn)f306。最后,分區(qū)3包括節(jié)點(diǎn)d304和節(jié)點(diǎn)e305。
根據(jù)實(shí)施例,分區(qū)1和分區(qū)3分別被完全限制在葉子交換機(jī)320和321(即,單葉子交換機(jī)分區(qū))內(nèi)。因此,分區(qū)1和分區(qū)3中的節(jié)點(diǎn)之間的通信通過(guò)它們對(duì)應(yīng)的葉子交換機(jī)進(jìn)行,而不會(huì)將流量移動(dòng)到根交換機(jī)325或326。當(dāng)這個(gè)拓?fù)渫ㄟ^(guò)胖樹路由機(jī)制路由時(shí),朝向連接到葉子交換機(jī)320和葉子交換機(jī)321的節(jié)點(diǎn)的路由被指派根交換機(jī),因此葉子交換機(jī)間(inter-leafswitch)的流可以到達(dá)它們的目的地。為了負(fù)載平衡,朝向a和c的路由被指派根交換機(jī)325(在圖上示為鏈路p),而根交換機(jī)326路由朝向節(jié)點(diǎn)b的流量(在圖上示為鏈路q)。類似地,對(duì)于葉子交換機(jī)321,朝向葉子交換機(jī)間的分區(qū)2中的節(jié)點(diǎn)d和節(jié)點(diǎn)f的流量經(jīng)由根交換機(jī)325被路由(在圖上示為鏈路r),并且朝向節(jié)點(diǎn)e的流量經(jīng)由根交換機(jī)326被路由(在圖上示為鏈路s)。
根據(jù)實(shí)施例,根交換機(jī)上的端端口(endport)選擇被示為圖中具有節(jié)點(diǎn)標(biāo)識(shí)符的小圓圈。由于路由是(使用胖樹路由機(jī)制)在不考慮分區(qū)信息的情況下進(jìn)行的,所以子網(wǎng)中的路徑不是恰當(dāng)?shù)仄胶獾摹f溌穚和鏈路r被超額訂閱,而永遠(yuǎn)沒(méi)有葉子交換機(jī)內(nèi)(intra-leafswitch)的流會(huì)使用鏈路q或鏈路s。所指派的朝向節(jié)點(diǎn)b和節(jié)點(diǎn)e的路由不被利用(除了相對(duì)較低的管理流量),因?yàn)檫@兩個(gè)節(jié)點(diǎn)由于它們的分區(qū)而都不能從其葉子交換機(jī)外部接收任何通信。當(dāng)分區(qū)的通信僅限于拓?fù)渲械囊恍蛹?jí)時(shí),這種平衡問(wèn)題也會(huì)在胖樹中發(fā)生。
現(xiàn)在參考圖4,圖4示出了其中可以實(shí)踐本公開的實(shí)施例的多租戶集群環(huán)境中的路由的圖示。更具體而言,圖4詳細(xì)說(shuō)明了與胖樹中不佳的隔離關(guān)聯(lián)的問(wèn)題。
圖4示出了具有四個(gè)交換機(jī)(根交換機(jī)425-426和葉子交換機(jī)420-421)以及八個(gè)端節(jié)點(diǎn)(節(jié)點(diǎn)a-g,401-408)的二級(jí)胖樹拓?fù)?。同樣,端?jié)點(diǎn)被劃分成兩個(gè)分區(qū)。分區(qū)1包括節(jié)點(diǎn)a401、節(jié)點(diǎn)b402、節(jié)點(diǎn)g407和節(jié)點(diǎn)h408。分區(qū)2包括節(jié)點(diǎn)c403、節(jié)點(diǎn)d404、節(jié)點(diǎn)e405和節(jié)點(diǎn)f406。
這些分區(qū)中的每一個(gè)具有連接到兩個(gè)葉子交換機(jī)中的每一個(gè)的兩個(gè)節(jié)點(diǎn)。如圖所示,胖樹路由機(jī)制指派根交換機(jī)425和根交換機(jī)426上的向下端口。由于胖樹路由機(jī)制的本質(zhì),每個(gè)根交換機(jī)路由朝向?qū)儆趦蓚€(gè)分區(qū)的節(jié)點(diǎn)的流量,這提供了不佳的隔離,這在分區(qū)環(huán)境中是不期望的。例如,朝向節(jié)點(diǎn)a和節(jié)點(diǎn)c的流量在共享鏈路p上被路由。不同分區(qū)的節(jié)點(diǎn)之間的對(duì)中間鏈路的共享會(huì)造成它們之間的干擾。盡管網(wǎng)絡(luò)在根層級(jí)處具有足夠的資源以在提供分區(qū)之間的完全隔離,但是胖樹路由機(jī)制不提供所期望的隔離。
分區(qū)感知的胖樹(pftree)路由
根據(jù)實(shí)施例,分區(qū)感知的胖樹路由機(jī)制(在本文不同地稱為pftree)可以實(shí)現(xiàn)與ib網(wǎng)絡(luò)中的多租賃關(guān)聯(lián)的期望目標(biāo)。例如,pftree機(jī)制可以通過(guò)跨樹中的鏈路均勻分布路由來(lái)為胖樹拓?fù)涮峁┝己闷胶獾木€性轉(zhuǎn)發(fā)表。此外,在維持鏈路上的路由平衡的同時(shí),pftree可以去除屬于不同分區(qū)的路徑之間的爭(zhēng)用。
根據(jù)實(shí)施例,pftree機(jī)制可以使用關(guān)于子網(wǎng)的分區(qū)信息來(lái)確保分區(qū)中的節(jié)點(diǎn)接收不受其它分區(qū)中運(yùn)行的工作負(fù)載影響的可預(yù)測(cè)的網(wǎng)絡(luò)性能。在拓?fù)錄](méi)有足夠鏈路可用于在每個(gè)層級(jí)處提供分區(qū)隔離(而不損害負(fù)載平衡)的情景中,pftree可以指派vl以減少爭(zhēng)用的影響。
根據(jù)實(shí)施例,pftree機(jī)制可以遞歸地工作,以便為與每個(gè)端節(jié)點(diǎn)關(guān)聯(lián)的lid在所有相關(guān)的交換機(jī)上設(shè)置lft。這在下面的偽代碼(本文中稱為清單1)中示出:
根據(jù)實(shí)施例,routedowngoingbyascending()在下面的偽代碼(本文中稱為清單2)中例示:
根據(jù)實(shí)施例,routeupgoingbydescending()在下面的偽代碼(本文中稱為清單3)中例示:
根據(jù)實(shí)施例,assignvirtuallanes()在下面的偽代碼(在本文中不同地被稱為清單4)中例示:
根據(jù)實(shí)施例,在濾除單葉子交換機(jī)分區(qū)(即,可以完全在單個(gè)葉子交換機(jī)內(nèi)通信的那些分區(qū))之后,對(duì)于每個(gè)葉子交換機(jī),該機(jī)制可以按特定于分區(qū)的次序?qū)B接的端節(jié)點(diǎn)進(jìn)行分類(上面清單1的行4)(例如,經(jīng)由具有唯一分區(qū)次序號(hào)的每個(gè)分區(qū))。這種排序可以輔助確保在考慮在葉子交換機(jī)處的上行端口的可用數(shù)量的情況下根據(jù)節(jié)點(diǎn)的分區(qū)對(duì)節(jié)點(diǎn)進(jìn)行路由。然后,pftree機(jī)制可以調(diào)用諸如routedowngoingbyascending(上面清單1的行9)的函數(shù),并在樹中向上移動(dòng),以選擇下一層級(jí)處的路由lid的端口,如清單2中所示。
根據(jù)實(shí)施例,端口選擇是基于最少數(shù)量的已經(jīng)指派的路由。這可以幫助確保負(fù)載跨可用的路徑散布。然而,當(dāng)具有相同負(fù)載的若干端口可用時(shí),該函數(shù)可以遍歷這些最少負(fù)載的端口,并且選擇連接到已經(jīng)被正被路由的節(jié)點(diǎn)的分區(qū)鍵標(biāo)記的交換機(jī)的端口(清單2的行3-行9)。如果沒(méi)有交換機(jī)被標(biāo)記(這可以指示這個(gè)分區(qū)的第一個(gè)節(jié)點(diǎn)正被路由),則系統(tǒng)可以默認(rèn)選擇具有最大全局唯一標(biāo)識(shí)符(guid)的端口(清單2的行2)。當(dāng)交換機(jī)被第一次選擇用于分區(qū)時(shí),用分區(qū)鍵在向下方向上標(biāo)記該交換機(jī)(清單2的行11)。
根據(jù)實(shí)施例,在為lid設(shè)置交換機(jī)處的下行端口之后,該機(jī)制可以通過(guò)下降樹調(diào)用來(lái)在所有連接的向下交換機(jī)上為它指派向上端口(清單3的routeupgoingbydescending)。同樣,上行端口的選擇可以首先基于負(fù)載準(zhǔn)則,并且然后基于在向上方向上遠(yuǎn)程交換機(jī)的分區(qū)標(biāo)記。然后,可以通過(guò)向上移動(dòng)到樹中的下一層級(jí)來(lái)重復(fù)該過(guò)程,直到所有l(wèi)ft都被設(shè)置。注意到,可以使用多個(gè)分區(qū)鍵標(biāo)記交換機(jī)。pftree機(jī)制可以為每個(gè)交換機(jī)維護(hù)表,從而為每個(gè)分區(qū)存儲(chǔ)所路由的節(jié)點(diǎn)的計(jì)數(shù)。如果具有標(biāo)記的分區(qū)的若干交換機(jī)可用于路由節(jié)點(diǎn),則該計(jì)數(shù)器可以被用于決定端口的選擇??梢赃x擇具有分區(qū)的最大數(shù)量的已經(jīng)路由的節(jié)點(diǎn)的交換機(jī)。
根據(jù)實(shí)施例,一旦生成了路由表,保持分區(qū)隔離準(zhǔn)則,該機(jī)制就可以繼續(xù)以檢查鏈路中的一些是否正被用于朝向不同分區(qū)中的節(jié)點(diǎn)的流。對(duì)于這些情況,該機(jī)制可以將vl指派給干擾分區(qū)以提供隔離。清單4中示出了vl指派機(jī)制的示例。
根據(jù)實(shí)施例,vl指派機(jī)制可以遍歷分區(qū)并檢查由分區(qū)中的節(jié)點(diǎn)使用的任何中間通信鏈路是否與尚未被指派單獨(dú)vl的另一個(gè)分區(qū)共享中間鏈路。如果遇到這種情景,則可以指派新的vl。pftree路由機(jī)制可以支持用于vl選擇的兩種模式:嚴(yán)格模式和正常模式。
根據(jù)實(shí)施例,在嚴(yán)格模式中,如果用于pftree路由的所需的vl的數(shù)量超過(guò)系統(tǒng)中的可用vl,則路由會(huì)失敗(清單4的行10)。
根據(jù)實(shí)施例,在正常模式中,算法可以從vl1起重新開始將vl指派給分區(qū)(清單4的行8)。
根據(jù)實(shí)施例,提供了用于基于ib的胖樹網(wǎng)絡(luò)(不同地稱為pftree)的高效的分區(qū)感知路由機(jī)制。pftree機(jī)制可以為胖樹拓?fù)涮峁┓謪^(qū)的網(wǎng)絡(luò)范圍的隔離。此外,pftree為交換機(jī)產(chǎn)生良好平衡的lft。給定足夠的網(wǎng)絡(luò)資源,pftree可以僅在物理鏈路層級(jí)處對(duì)分區(qū)進(jìn)行隔離。例如,如果胖樹具有兩個(gè)不重疊的相等大小的分區(qū),則pftree可以基于路由本身將中間網(wǎng)絡(luò)鏈路劃分成兩個(gè)相等大小的邏輯子網(wǎng)絡(luò)。此外,如果網(wǎng)絡(luò)沒(méi)有足夠的可用資源來(lái)提供完全的分區(qū)隔離,則pftree可以采用與物理隔離相結(jié)合而起作用的補(bǔ)充的基于vl的隔離方案。
根據(jù)實(shí)施例,pftree路由機(jī)制的目的在于實(shí)現(xiàn)兩個(gè)主要目標(biāo)。首先,通過(guò)跨樹中的鏈路均勻地分布路由,該機(jī)制可以為胖樹拓?fù)渖闪己闷胶獾膌ft。其次,在維護(hù)鏈路上的路由平衡的同時(shí),pftree去除屬于不同分區(qū)的路徑之間的爭(zhēng)用。pftree可以使用關(guān)于子網(wǎng)的分區(qū)信息,并確保分區(qū)中的節(jié)點(diǎn)接收可預(yù)測(cè)的網(wǎng)絡(luò)性能而不受其它分區(qū)中運(yùn)行的工作負(fù)載的影響。如果拓?fù)錄](méi)有足夠的鏈路可用于在每個(gè)層級(jí)處提供分區(qū)隔離(而不損害負(fù)載平衡),則pftree可以使用vl來(lái)減少爭(zhēng)用的影響。
根據(jù)實(shí)施例,pftree機(jī)制可以遞歸地工作,以為與每個(gè)端節(jié)點(diǎn)關(guān)聯(lián)的lid在所有相關(guān)的交換機(jī)上設(shè)置lft。在濾除單葉子交換機(jī)分區(qū)之后,對(duì)于每個(gè)葉子交換機(jī),該機(jī)制可以按特定于分區(qū)的次序?qū)B接的端節(jié)點(diǎn)進(jìn)行排序。這種排序確保在考慮在葉子交換機(jī)處的上行端口的可用數(shù)量的情況下根據(jù)節(jié)點(diǎn)的分區(qū)對(duì)節(jié)點(diǎn)進(jìn)行路由。在每個(gè)層級(jí)處的端口選擇可以基于最少數(shù)量的已經(jīng)指派的路由,以確保負(fù)載跨可用路徑散布。然而,當(dāng)具有相同負(fù)載的若干端口可用時(shí),該函數(shù)遍歷這些最少負(fù)載的端口,并選擇連接到已經(jīng)用正在被路由的節(jié)點(diǎn)的分區(qū)鍵標(biāo)記的交換機(jī)的端口。如果沒(méi)有交換機(jī)被標(biāo)記(即,路由特定分區(qū)的第一個(gè)節(jié)點(diǎn)),則pftree可以落到具有最大全局唯一標(biāo)識(shí)符(guid)的端口的默認(rèn)選擇。當(dāng)交換機(jī)被第一次選擇用于分區(qū)時(shí),可以使用分區(qū)鍵來(lái)標(biāo)記該交換機(jī)。以這種方式,該機(jī)制可以幫助確保給定足夠的可用于平衡的路徑,屬于一個(gè)分區(qū)的節(jié)點(diǎn)將路由通過(guò)相同的交換機(jī)和對(duì)應(yīng)的鏈路。一旦生成了路由表,保持分區(qū)隔離準(zhǔn)則,該機(jī)制就可以繼續(xù)以檢查鏈路中的一些是否正用于朝向不同分區(qū)中的節(jié)點(diǎn)的流。對(duì)于那些情況,該機(jī)制可以將vl指派給干擾分區(qū)以提供隔離。
現(xiàn)在參考圖5-圖8,這些圖是根據(jù)實(shí)施例的支持多租戶集群環(huán)境中的分區(qū)感知路由的圖示。
根據(jù)實(shí)施例,在圖5-圖8中通過(guò)超額訂閱的胖樹網(wǎng)絡(luò)的簡(jiǎn)單部分示出pftree路由中的端口選擇機(jī)制。
現(xiàn)在參考圖5,圖5示出了具有四個(gè)交換機(jī)(根交換機(jī)525-526和葉子交換機(jī)520-521)以及八個(gè)端節(jié)點(diǎn)(節(jié)點(diǎn)a-g,501-508)的二級(jí)胖樹拓?fù)?。同樣,端?jié)點(diǎn)被劃分成兩個(gè)分區(qū)。分區(qū)1包括節(jié)點(diǎn)a401、節(jié)點(diǎn)d504、節(jié)點(diǎn)g507和節(jié)點(diǎn)h508。分區(qū)2包括節(jié)點(diǎn)b502、節(jié)點(diǎn)c503、節(jié)點(diǎn)e505和節(jié)點(diǎn)f506。
根據(jù)實(shí)施例,如圖5中所示,示例部分由兩個(gè)葉子交換機(jī)(520和521)組成,每個(gè)葉子交換機(jī)分別連接到四個(gè)端節(jié)點(diǎn)和在葉子交換機(jī)上方的下一層級(jí)處的兩個(gè)交換機(jī),即根交換機(jī)(525和526)。圖中還指示了down和max變量,它們分別表示在向下方向上指派的路由的數(shù)量以及為了確保每個(gè)鏈路上的恰當(dāng)平衡而可以被路由的節(jié)點(diǎn)的最大數(shù)量。
根據(jù)實(shí)施例,給定在每個(gè)葉子交換機(jī)處存在兩個(gè)上行端口,其中要路由四個(gè)端節(jié)點(diǎn),上行鏈路中的每一個(gè)應(yīng)當(dāng)向下路由兩個(gè)端節(jié)點(diǎn),以確保鏈路是平衡的(即,max=2)。
根據(jù)實(shí)施例,對(duì)于葉子交換機(jī)520,前兩個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)a和節(jié)點(diǎn)b)的路由在圖6中示出。路由機(jī)制可以選擇根交換機(jī)525來(lái)路由朝向節(jié)點(diǎn)a的流量,并且使用節(jié)點(diǎn)a的分區(qū)鍵標(biāo)記該交換機(jī),在圖中被示為“(分區(qū)1)”。類似地,對(duì)于節(jié)點(diǎn)b,可以選擇根交換機(jī)526并且用節(jié)點(diǎn)b的分區(qū)鍵標(biāo)記根交換機(jī)526,在圖中被示為“(分區(qū)2)”。變量down也被更新,以對(duì)兩個(gè)向下鏈路中的每一個(gè)上的單個(gè)被路由的節(jié)點(diǎn)進(jìn)行計(jì)數(shù)。
根據(jù)實(shí)施例,對(duì)于節(jié)點(diǎn)c和節(jié)點(diǎn)d,可以選擇已經(jīng)用對(duì)應(yīng)的分區(qū)鍵標(biāo)記的交換機(jī),如圖7中給出的。得出的路由通過(guò)經(jīng)過(guò)根交換機(jī)525的相同鏈路流向?qū)儆诘谝环謪^(qū)的節(jié)點(diǎn)(即,節(jié)點(diǎn)a和d)。類似地,可以經(jīng)過(guò)根交換機(jī)526向下路由第二分區(qū)的節(jié)點(diǎn)(即,節(jié)點(diǎn)b和節(jié)點(diǎn)c)。路由的這種分離避免兩個(gè)分區(qū)的流量流之間的干擾。注意到,在每個(gè)鏈路上向下路由的節(jié)點(diǎn)的數(shù)量不超過(guò)max變量,這意味著路由仍然是平衡的。
最后,根據(jù)實(shí)施例,圖8示出了用于連接到葉子交換機(jī)521的端節(jié)點(diǎn)的路由。而且在這里,由于第二層級(jí)的交換機(jī)已經(jīng)根據(jù)第一葉子交換機(jī)路由用分區(qū)鍵進(jìn)行標(biāo)記,因此對(duì)應(yīng)的交換機(jī)可以被選擇以路由每個(gè)節(jié)點(diǎn)(即,節(jié)點(diǎn)e、f、g和g)。如圖中所示,最終的路由可以通過(guò)基于路由將中間網(wǎng)絡(luò)鏈路劃分成兩個(gè)相等大小的邏輯子網(wǎng)絡(luò)來(lái)隔離兩個(gè)分區(qū)。
圖9示出了根據(jù)實(shí)施例的用于支持多租戶集群環(huán)境中的分區(qū)感知路由的方法的圖示。示例性方法900可以在支持多租戶集群環(huán)境中的一個(gè)或多個(gè)租戶的步驟901處開始。在步驟902處,示例性方法可以將一個(gè)或多個(gè)租戶中的每個(gè)租戶與多個(gè)分區(qū)的一分區(qū)關(guān)聯(lián)。在步驟903處,該方法可以將多個(gè)分區(qū)中的每個(gè)分區(qū)與多個(gè)節(jié)點(diǎn)中的一個(gè)或多個(gè)節(jié)點(diǎn)關(guān)聯(lián),這多個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)與多個(gè)交換機(jī)中的一葉子交換機(jī)關(guān)聯(lián),這多個(gè)交換機(jī)包括多個(gè)葉子交換機(jī)和在其它層級(jí)處的多個(gè)交換機(jī)。最后,在步驟904處,該方法可以生成一個(gè)或多個(gè)線性轉(zhuǎn)發(fā)表,這一個(gè)或多個(gè)線性轉(zhuǎn)發(fā)表提供這多個(gè)分區(qū)之間的隔離,其中這多個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)與一分區(qū)次序關(guān)聯(lián)。
本發(fā)明的許多特征可以在硬件、軟件、固件或其組合中執(zhí)行,利用硬件、軟件、固件或其組合執(zhí)行,或者在硬件、軟件、固件或其組合的輔助下執(zhí)行。因此,本發(fā)明的特征可以利用(例如,包括一個(gè)或多個(gè)處理器的)處理系統(tǒng)來(lái)實(shí)現(xiàn)。
本發(fā)明的特征可以在計(jì)算機(jī)程序產(chǎn)品中實(shí)現(xiàn),利用計(jì)算機(jī)程序產(chǎn)品實(shí)現(xiàn),或者在計(jì)算機(jī)程序產(chǎn)品的輔助下實(shí)現(xiàn),其中計(jì)算機(jī)程序產(chǎn)品是其上/其中存儲(chǔ)有可用來(lái)編程處理系統(tǒng)以執(zhí)行本文所呈現(xiàn)的任何特征的指令的存儲(chǔ)介質(zhì)或計(jì)算機(jī)可讀介質(zhì)。存儲(chǔ)介質(zhì)可以包括但不限于任何類型的盤(包括軟盤、光盤、dvd、cd-rom、微驅(qū)動(dòng)器、以及磁光盤)、rom、ram、eprom、eeprom、dram、vram、閃存存儲(chǔ)器設(shè)備、磁卡或光卡、納米系統(tǒng)(包括分子存儲(chǔ)器ic)、或適于存儲(chǔ)指令和/或數(shù)據(jù)的任何類型的媒介或設(shè)備。
存儲(chǔ)在任何一種(一個(gè)或多個(gè))機(jī)器可讀介質(zhì)中,本發(fā)明的特征可以被結(jié)合到軟件和/或固件中,以用于控制處理系統(tǒng)的硬件,并且用于使處理系統(tǒng)能夠利用本發(fā)明的結(jié)果與其它機(jī)制交互。這種軟件或固件可以包括但不限于應(yīng)用代碼、設(shè)備驅(qū)動(dòng)程序、操作系統(tǒng)和執(zhí)行環(huán)境/容器。
本發(fā)明的特征也可以利用例如諸如專用集成電路(asic)的硬件部件在硬件中實(shí)現(xiàn)。實(shí)現(xiàn)硬件狀態(tài)機(jī)以便執(zhí)行本文所描述的功能對(duì)相關(guān)領(lǐng)域的技術(shù)人員將是顯然的。
此外,本發(fā)明可以方便地利用一個(gè)或多個(gè)常規(guī)的通用或?qū)S脭?shù)字計(jì)算機(jī)、計(jì)算設(shè)備、機(jī)器或微處理器來(lái)實(shí)現(xiàn),這些數(shù)字計(jì)算機(jī)、計(jì)算設(shè)備、機(jī)器或微處理器包括一個(gè)或多個(gè)處理器、存儲(chǔ)器和/或根據(jù)本公開的教導(dǎo)編程的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。如對(duì)軟件領(lǐng)域的技術(shù)人員將清楚的,適當(dāng)?shù)能浖幋a可以容易地由熟練的程序員基于本公開的教導(dǎo)來(lái)準(zhǔn)備。
雖然以上已經(jīng)描述了本發(fā)明的各種實(shí)施例,但是應(yīng)該理解,它們已通過(guò)示例而不是限制給出。對(duì)相關(guān)領(lǐng)域的技術(shù)人員將清楚的是,在不背離本發(fā)明的精神和范圍的情況下,其中可以做出各種形式和細(xì)節(jié)上的變化。
本發(fā)明已經(jīng)借助說(shuō)明指定功能及其關(guān)系的執(zhí)行的功能構(gòu)建塊進(jìn)行了描述。這些功能構(gòu)建塊的邊界在本文中通常是為了方便描述而任意定義的??梢远x可替代的邊界,只要指定的功能及其關(guān)系被適當(dāng)?shù)貓?zhí)行。任何這種可替代的邊界因此在本發(fā)明的范圍和精神之內(nèi)。
本發(fā)明的以上描述是為了說(shuō)明和描述的目的而提供的。它不旨在是窮盡的或者要把本發(fā)明限定到所公開的精確形式。本發(fā)明的廣度和范圍不應(yīng)該由任何上述示例性實(shí)施例來(lái)限制。許多修改和變化對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)將是清楚的。修改和變化包括所公開特征的任何相關(guān)組合。實(shí)施例的選擇與描述是為了最好地解釋本發(fā)明的原理及其實(shí)踐應(yīng)用,從而使本領(lǐng)域其他技術(shù)人員能夠理解用于各種實(shí)施例的本發(fā)明以及具有適于預(yù)期特定用途的各種修改的本發(fā)明。本發(fā)明的范圍旨在由以下權(quán)利要求及其等價(jià)物來(lái)定義。