專(zhuān)利名稱(chēng):使用本地標(biāo)識(shí)符的端節(jié)點(diǎn)分區(qū)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)系統(tǒng)之間的通信。
背景技術(shù):
在系統(tǒng)區(qū)域網(wǎng)絡(luò)(SAN)中,硬件提供了一種可用于輸入/輸出設(shè)備(I/O)和一般計(jì)算節(jié)點(diǎn)之間的進(jìn)程間通信(IPC)的消息傳遞機(jī)制。用戶(hù)(consumer)通過(guò)向SAN通道適配器(CA)上的發(fā)送/接收工作隊(duì)列傳遞發(fā)送/接收消息來(lái)訪問(wèn)SAN消息傳遞硬件。該發(fā)送/接收工作隊(duì)列(WQ)以隊(duì)列對(duì)(QP)的形式分配給用戶(hù)。消息可以通過(guò)5種不同的規(guī)定的傳輸類(lèi)型而發(fā)送可靠連接的(RC)、可靠數(shù)據(jù)報(bào)(RD)、不可靠連接(UC)、不可靠數(shù)據(jù)報(bào)(UD)、和原始數(shù)據(jù)報(bào)(RawD)。此外,還有一組可由制造商規(guī)定的操作碼,其允許不同公司定義定制的包,這些包還具有相同的路由報(bào)頭格式。用戶(hù)經(jīng)由SAN發(fā)送和接收工作完成(WC),從一完成隊(duì)列(CQ)中獲取定義的消息的結(jié)果。對(duì)于這些可由制造商定義的操作,并不規(guī)定它們是否使用與定義的包類(lèi)型相同的排隊(duì)結(jié)構(gòu)。不管包的類(lèi)型是什么,源通道適配器負(fù)責(zé)將輸出的消息分段,并將它們發(fā)送到目的地。目的地通道適配器負(fù)責(zé)將輸入的消息重新裝配,并將它們置于由目的地的用戶(hù)指定的存儲(chǔ)器空間中。目前存在兩種通道適配器類(lèi)型,即主機(jī)通道適配器(HCA)和目標(biāo)通道適配器(TCA)。通用計(jì)算節(jié)點(diǎn)使用主機(jī)通道適配器來(lái)訪問(wèn)SAN結(jié)構(gòu)(fabric)。用戶(hù)使用SAN動(dòng)詞(verb)來(lái)訪問(wèn)主機(jī)通道適配器的功能。解釋動(dòng)詞并直接訪問(wèn)通道適配器的軟件稱(chēng)為通道接口(CI)。
InfiniBand(InfiniBand行業(yè)協(xié)會(huì)的商標(biāo))組件在初始化過(guò)程中被分配一本地標(biāo)識(shí)符(LID)。LID用來(lái)在一子網(wǎng)中為組件編址。所有InfiniBand包包含一源LID和一目的LID,其分別定義該包在該子網(wǎng)中的源和目的地址。InfiniBand組件也被分配至少一個(gè)分區(qū)關(guān)鍵字(P_Key)。該P(yáng)_Key用來(lái)將一InfiniBand結(jié)構(gòu)分區(qū)為一個(gè)或多個(gè)組。于是一些InfiniBand組件被置于所述的一個(gè)或多個(gè)組中。所有其它通信都是允許的。端節(jié)點(diǎn)被分組到一些區(qū)中,并且其訪問(wèn)是通過(guò)P_Key控制。InfiniBand分區(qū)機(jī)制實(shí)質(zhì)上使得主機(jī)能夠以一種受控制的方式提供適配器和共享適配器。
然而,InfiniBand沒(méi)有提供這樣一種機(jī)制,該機(jī)制用于將一端節(jié)點(diǎn)分區(qū),使得多個(gè)操作系統(tǒng)實(shí)例可以共享單個(gè)通道適配器端口,而同時(shí)獲得對(duì)InfiniBand子網(wǎng)的受控制的訪問(wèn)?,F(xiàn)有技術(shù)的系統(tǒng)通常增加額外的一個(gè)或多個(gè)包報(bào)頭以識(shí)別操作系統(tǒng)實(shí)例。通過(guò)增加一個(gè)或多個(gè)包報(bào)頭,這導(dǎo)致了數(shù)據(jù)傳輸?shù)母髲?fù)雜性。因此,這種端節(jié)點(diǎn)的分區(qū)機(jī)制的缺乏對(duì)于高端服務(wù)器來(lái)說(shuō)構(gòu)成了一個(gè)問(wèn)題,其中的高端服務(wù)器通過(guò)邏輯的或物理的分區(qū)而支持在其處理和存儲(chǔ)資源中進(jìn)行分區(qū)。
因此,需要一種機(jī)制,允許單個(gè)物理組件表現(xiàn)為多個(gè)組件,所述多個(gè)組件中的每一單個(gè)組件具有唯一的訪問(wèn)控制級(jí)別。這些組件可以是主機(jī)通道適配器(HCA)、目標(biāo)通道適配器(TCA)或交換機(jī)。
本發(fā)明提供了如權(quán)利要求1所述的方法,如權(quán)利要求2所述的相應(yīng)的系統(tǒng)以及如權(quán)利要求3所述的計(jì)算機(jī)程序產(chǎn)品。
在所附權(quán)利要求中提出了被認(rèn)為是本發(fā)明特有的新特征。然而,本發(fā)明本身、以及采用的優(yōu)選方式及其進(jìn)一步的目的和優(yōu)點(diǎn),通過(guò)參照以下對(duì)示例性實(shí)施例的詳細(xì)描述,并結(jié)合附圖進(jìn)行閱讀,將獲得最好的理解,其中圖1示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的一網(wǎng)絡(luò)計(jì)算系統(tǒng)的示意圖;圖2示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的一主機(jī)處理器節(jié)點(diǎn)的功能框圖;
圖3示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的一主機(jī)通道適配器的示意圖;圖4示出了描述根據(jù)本發(fā)明的優(yōu)選實(shí)施例的工作請(qǐng)求處理的示意圖;圖5示出了根據(jù)本發(fā)明的一優(yōu)選實(shí)施例的數(shù)據(jù)包的圖解;圖6示出了根據(jù)本發(fā)明的實(shí)施例的具有虛擬通道適配器和虛擬交換機(jī)的物理組件的示意圖;圖7是一示例性流程圖,其描述了根據(jù)合本發(fā)明的優(yōu)選實(shí)施例的、用于物理元件的配置的一靜態(tài)選擇系統(tǒng)的操作;圖8是一示例性流程圖,其描述了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的,當(dāng)主機(jī)通道適配器及與其相關(guān)聯(lián)的節(jié)點(diǎn)變?yōu)榭晒┦褂脮r(shí)或從運(yùn)行中刪除時(shí),將它們報(bào)告;以及圖9是一示例性流程圖,其描述了根據(jù)本發(fā)明的一優(yōu)選實(shí)施例的、用于物理元件的配置的一動(dòng)態(tài)選擇系統(tǒng)的操作。
具體實(shí)施例方式
網(wǎng)絡(luò)計(jì)算系統(tǒng)具有端節(jié)點(diǎn)、交換機(jī)、路由器和把這些組件互連在一起的鏈路。端節(jié)點(diǎn)將消息分段為包,并將這些包通過(guò)鏈路傳輸。交換機(jī)和路由器將這些端節(jié)點(diǎn)互連在一起,并將這些包送到合適的端節(jié)點(diǎn)。這些端節(jié)點(diǎn)在目的地將這些包重新裝配成消息。
現(xiàn)在參照附圖,具體為圖1,其中示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的一網(wǎng)絡(luò)計(jì)算系統(tǒng)的示意圖。圖1所代表的網(wǎng)絡(luò)計(jì)算系統(tǒng)采取了系統(tǒng)區(qū)域網(wǎng)絡(luò)(SAN)100的形式,并且只是為說(shuō)明目的而提供的,而如下所述的本發(fā)明的一些實(shí)施例可以在多種其它類(lèi)型和配置的計(jì)算機(jī)系統(tǒng)上實(shí)施。
SAN 100是一種高帶寬、低時(shí)延的網(wǎng)絡(luò),其將網(wǎng)絡(luò)計(jì)算系統(tǒng)中的節(jié)點(diǎn)互連在一起。節(jié)點(diǎn)是連接到網(wǎng)絡(luò)的一個(gè)或多個(gè)鏈路上、并構(gòu)成該網(wǎng)絡(luò)中消息的來(lái)源和/或目的地的任何組件。在圖示的例子中,SAN 100包括的節(jié)點(diǎn)形式有主機(jī)處理器節(jié)點(diǎn)102、主機(jī)處理器節(jié)點(diǎn)104、獨(dú)立磁盤(pán)冗余陣列(RAID)子系統(tǒng)節(jié)點(diǎn)106、I/O機(jī)架節(jié)點(diǎn)108,和PCI I/O機(jī)架節(jié)點(diǎn)184。圖1所示的節(jié)點(diǎn)只是為了說(shuō)明目的,因?yàn)镾AN 100可以連接任何數(shù)量和任何類(lèi)型的獨(dú)立處理器節(jié)點(diǎn)、I/O適配器節(jié)點(diǎn)、和I/O設(shè)備節(jié)點(diǎn)。這些節(jié)點(diǎn)中的任何一個(gè)都可以作為一端節(jié)點(diǎn),在這里端節(jié)點(diǎn)被定義為在SAN 100中發(fā)起和最終消耗掉消息或幀的設(shè)備。
在這里所用的消息是應(yīng)用程序定義的數(shù)據(jù)交換單元,其是在相互合作的進(jìn)程之間進(jìn)行通信的基本單元。包是由網(wǎng)絡(luò)連接協(xié)議報(bào)頭和/或報(bào)尾所封裝的數(shù)據(jù)單元。報(bào)頭一般提供了用于在SAN中指引幀的控制和路由信息。報(bào)尾一般包含了用于確保包在傳輸時(shí)不帶有被破壞的內(nèi)容的控制和循環(huán)冗余檢驗(yàn)(CRC)數(shù)據(jù)。
SAN 100包含了在網(wǎng)絡(luò)計(jì)算系統(tǒng)中既支持I/O通信也支持處理器間通信(IPC)的通信和管理的基礎(chǔ)結(jié)構(gòu)。圖1所示的SAN 100包括一個(gè)交換通信結(jié)構(gòu),其使得很多設(shè)備能夠在一安全的、遠(yuǎn)程管理的環(huán)境中并行地以高帶寬和低時(shí)延傳輸數(shù)據(jù)。端節(jié)點(diǎn)可以通過(guò)多個(gè)端口進(jìn)行通信,并利用在SAN結(jié)構(gòu)之中的多個(gè)路徑??衫脠D1所示的多個(gè)端口和在SAN之中的多個(gè)路徑,以用于容錯(cuò)和增加帶寬的數(shù)據(jù)傳輸。
圖1中的SAN 100包括交換機(jī)112、交換機(jī)114、交換機(jī)146和路由器117。交換機(jī)是這樣一種設(shè)備,其把多個(gè)鏈路連接起來(lái),并允許使用一小的報(bào)頭目的地本地標(biāo)識(shí)符(DLID)字段將包從一子網(wǎng)中的一鏈路路由到另一鏈路。路由器是這樣一種設(shè)備,其把多個(gè)子網(wǎng)連接在一起,并能夠使用一大的報(bào)頭目的地全局唯一標(biāo)識(shí)符(DGUID)將包從第一子網(wǎng)中的一鏈路傳送到第二子網(wǎng)中的另一鏈路。
在一個(gè)實(shí)施例中,鏈路是在任何兩個(gè)網(wǎng)絡(luò)結(jié)構(gòu)單元如端節(jié)點(diǎn)、交換機(jī)或路由器之間的全雙工通道。示例性的合適的鏈路包括但不限于,銅纜、光纜以及在底板和印刷電路板上的印刷電路銅跡線。
對(duì)于可靠的服務(wù)類(lèi)型,端節(jié)點(diǎn),例如主機(jī)處理器端節(jié)點(diǎn)和I/O適配器端節(jié)點(diǎn),產(chǎn)生請(qǐng)求包并返回確認(rèn)包。交換機(jī)和路由器將包從源一直傳遞到目的地。除了可變的CRC報(bào)尾字段是在網(wǎng)絡(luò)中的每一階段被更新外,交換機(jī)將包不作改變地傳遞下去。路由器在包被路由選擇時(shí)更新該可變的CRC報(bào)尾字段,并且更新報(bào)頭中的其它字段。
在如圖1所示的SAN 100中,主機(jī)處理器節(jié)點(diǎn)102、主機(jī)處理器節(jié)點(diǎn)104、RAID I/O子系統(tǒng)106、I/O機(jī)架108、和PCI I/O機(jī)架184包括至少一個(gè)通道適配器(CA),以提供到SAN 100的接口。在一個(gè)實(shí)施例中,每個(gè)通道適配器是這樣的一個(gè)端點(diǎn),其以足夠的細(xì)節(jié)實(shí)施通道適配器接口,以發(fā)出或接收在該SAN結(jié)構(gòu)中傳輸?shù)陌V鳈C(jī)處理器節(jié)點(diǎn)102包含通道適配器,其形式為主機(jī)通道適配器118和主機(jī)通道適配器120。主機(jī)處理器節(jié)點(diǎn)104包含主機(jī)通道適配器122和主機(jī)通道適配器124。主機(jī)處理器節(jié)點(diǎn)102也包括由總線系統(tǒng)134互連起來(lái)的中央處理單元126-130和存儲(chǔ)器132。同樣地,主機(jī)處理器節(jié)點(diǎn)104包括由總線系統(tǒng)144互連起來(lái)的中央處理單元136-140和存儲(chǔ)器142。主機(jī)通道適配器118提供了到交換機(jī)112的連接,主機(jī)通道適配器120和122提供了到交換機(jī)112和114的連接,而主機(jī)通道適配器124提供了到交換機(jī)114的連接。
在一個(gè)實(shí)施例中,主機(jī)通道適配器是由硬件實(shí)現(xiàn)的。在這種實(shí)現(xiàn)中,主機(jī)通道適配器硬件卸載了中央處理單元和I/O適配器通信的很大開(kāi)銷(xiāo)。主機(jī)通道適配器的這種硬件實(shí)現(xiàn)也允許在一交換網(wǎng)絡(luò)上的多個(gè)并發(fā)通信,而沒(méi)有與通信協(xié)議相關(guān)的傳統(tǒng)開(kāi)銷(xiāo)。在一個(gè)實(shí)施例中,圖1中的主機(jī)通道適配器和SAN 100為該網(wǎng)絡(luò)計(jì)算系統(tǒng)的I/O和處理器間通信(IPC)的用戶(hù)提供了零處理器副本的數(shù)據(jù)傳輸,而不牽涉操作系統(tǒng)內(nèi)核進(jìn)程,并利用硬件來(lái)提供可靠的、容錯(cuò)的通信。如圖1所示,路由器117與連接其它主機(jī)或其它路由器的廣域網(wǎng)(WAN)和/或局域網(wǎng)(LAN)相耦合。
圖1中的I/O機(jī)架108包括一交換機(jī)146和多個(gè)I/O模塊148-156。在這些例子中,I/O模塊采取了適配器卡的形式。圖1所示示例性的適配器卡包括用于I/O模塊148的SCSI適配器卡;用于I/O模塊152的連接到光纖通道集線器和光纖通道仲裁環(huán)(FC-AL)設(shè)備的適配器卡;用于I/O模塊150的以太網(wǎng)適配器卡;用于I/O模塊154的圖形適配器卡;以及用于I/O模塊156的視頻適配器卡。任何已知類(lèi)型的適配器卡都可以使用。I/O適配器也包括位于I/O適配器底板上的一交換機(jī),以將這些適配器卡耦合到該SAN結(jié)構(gòu)。這些模塊包含目標(biāo)通道適配器158-166。
在本例中,圖1中的RAID子系統(tǒng)節(jié)點(diǎn)106包括一處理器168、一存儲(chǔ)器170、一目標(biāo)通道適配器(TCA)172、以及多個(gè)冗余的和/或條帶化的存儲(chǔ)器盤(pán)單元174。目標(biāo)通道適配器172可以是一具有完整功能的主機(jī)通道適配器。
PCI I/O機(jī)架節(jié)點(diǎn)184包括一個(gè)TCA 186,以及通過(guò)PCI總線188連接到TCA 186的多個(gè)PCI輸入/輸出適配器(IOA)190-192。在這些例子中,IOA采取適配器卡的形式。圖1所示的示例性適配器卡包括調(diào)制解調(diào)器適配器卡190和串行適配器卡192。TCA 186將自PCI IOA 190-192接收的PCI事務(wù)請(qǐng)求或響應(yīng)封裝為數(shù)據(jù)包,以便通過(guò)SAN結(jié)構(gòu)傳輸給一HCA,如HCA 118。HCA 118判斷收到的數(shù)據(jù)包是否包含PCI傳輸,并且如果是,就將該數(shù)據(jù)包解碼,以獲得所封裝的PCI事務(wù)請(qǐng)求或響應(yīng),例如一DMA寫(xiě)或讀操作。HCA 118將它發(fā)送給合適的單元,例如存儲(chǔ)器132。如果該P(yáng)CI事務(wù)是一DMA讀請(qǐng)求,則HCA從存儲(chǔ)器,例如存儲(chǔ)器132接收響應(yīng),將該P(yáng)CI響應(yīng)封裝為一數(shù)據(jù)包,并通過(guò)SAN結(jié)構(gòu)將該數(shù)據(jù)包發(fā)回給請(qǐng)求的TCA 186。然后,該TCA從該數(shù)據(jù)包中將PCI事務(wù)解碼,并通過(guò)PCI總線188將該P(yáng)CI事務(wù)發(fā)送給PCI IOA 190或192。
類(lèi)似地,從一處理器,例如CPU 126到一PCI IOA,例如PCI IOA 190或192的存儲(chǔ)或加載請(qǐng)求由HCA 118封裝為一數(shù)據(jù)包,以便通過(guò)SAN結(jié)構(gòu)傳輸給與合適的PCI IOA 190或192相應(yīng)的TCA 186。TCA 186將該數(shù)據(jù)包解碼,以獲得PCI傳輸,并通過(guò)PCI總線188將PCI存儲(chǔ)或加載請(qǐng)求和數(shù)據(jù)傳輸給PCI IOA 190或192。如果該請(qǐng)求是一加載請(qǐng)求,則TCA186從PCI IOA 190或192接收一響應(yīng),TCA將該響應(yīng)封裝為一數(shù)據(jù)包,并通過(guò)SAN結(jié)構(gòu)將其傳輸給HCA 118,而該HCA 118將該數(shù)據(jù)包解碼,以獲得PCI數(shù)據(jù)和命令,并將該P(yáng)CI數(shù)據(jù)和命令發(fā)送給請(qǐng)求的CPU 126。這樣,PCI適配器可以連接到SAN結(jié)構(gòu)。
SAN 100處理用于I/O和處理器間通信的數(shù)據(jù)通信。SAN 100支持I/O所需的高帶寬和可伸縮性,并且也支持處理器間通信所需的極低的時(shí)延和低的CPU開(kāi)銷(xiāo)。用戶(hù)的客戶(hù)程序可以繞過(guò)操作系統(tǒng)內(nèi)核進(jìn)程,并直接訪問(wèn)網(wǎng)絡(luò)通信硬件,例如主機(jī)通道適配器,這樣就允許高效的消息傳遞協(xié)議。SAN 100適合于目前的計(jì)算模型,并且是新形式的I/O和計(jì)算機(jī)群集通信的積木式結(jié)構(gòu)。此外,圖1所示的SAN 100使得I/O適配器節(jié)點(diǎn)能夠相互之間通信,或者與網(wǎng)絡(luò)計(jì)算系統(tǒng)中的任何或所有處理器節(jié)點(diǎn)通信。當(dāng)一I/O適配器連接到SAN 100上時(shí),所產(chǎn)生的I/O適配器節(jié)點(diǎn)實(shí)質(zhì)上具有與SAN100中的任何主機(jī)處理器節(jié)點(diǎn)相同的通信能力。
圖1意欲作為一個(gè)例子,而不是對(duì)本發(fā)明的結(jié)構(gòu)限制,并且只是為說(shuō)明目的而提供。如下所述的本發(fā)明的優(yōu)選實(shí)施例可以在多種類(lèi)型和配置的計(jì)算機(jī)系統(tǒng)上實(shí)施。例如,實(shí)施本發(fā)明的計(jì)算機(jī)系統(tǒng)的范圍可以是從具有一個(gè)處理器和有限數(shù)量的輸入/輸出(I/O)適配器的一個(gè)小服務(wù)器到具有例如數(shù)百個(gè)處理器和數(shù)千個(gè)I/O適配器的一個(gè)或多個(gè)大規(guī)模并行超計(jì)算機(jī)系統(tǒng)。此外,本發(fā)明可以在由例如一因特網(wǎng)或一內(nèi)部網(wǎng)連接起來(lái)的一些遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的基礎(chǔ)結(jié)構(gòu)上實(shí)施。
圖2描述了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的一主機(jī)處理器節(jié)點(diǎn)的功能框圖。主機(jī)處理器節(jié)點(diǎn)200是諸如圖1所示主機(jī)處理器節(jié)點(diǎn)102等主機(jī)處理器節(jié)點(diǎn)的一個(gè)例子。
在本例中,圖2所示的主機(jī)處理器節(jié)點(diǎn)200包括一組用戶(hù)202-208以及一個(gè)或多個(gè)PCI/PCI-X設(shè)備驅(qū)動(dòng)程序230,它們是在主機(jī)處理器節(jié)點(diǎn)200上執(zhí)行的進(jìn)程。主機(jī)處理器節(jié)點(diǎn)200還包括通道適配器210和通道適配器212。通道適配器210包含端口214和216,而通道適配器212包含端口218和220。每個(gè)端口連接到一鏈路。這些端口可以連接到一個(gè)SAN子網(wǎng)或多個(gè)SAN子網(wǎng),例如圖1中的SAN 100。在這些例子中,這些通道適配器采取主機(jī)通道適配器的形式。
用戶(hù)202-208通過(guò)動(dòng)詞接口222以及消息與數(shù)據(jù)服務(wù)224將消息傳送到SAN。動(dòng)詞接口實(shí)質(zhì)上是對(duì)主機(jī)通道適配器的功能的一抽象描述。操作系統(tǒng)可以通過(guò)其編程接口提供部分或全部動(dòng)詞功能?;旧?,這一接口定義了該主機(jī)的行為。此外,主機(jī)處理器節(jié)點(diǎn)200包括消息與數(shù)據(jù)服務(wù)224,其是比該動(dòng)詞層更高層的接口,并用來(lái)處理通過(guò)通道適配器210和通道適配器212接收到的消息和數(shù)據(jù)。消息與數(shù)據(jù)服務(wù)224為用戶(hù)202-208提供了一接口,以處理消息和其它數(shù)據(jù)。此外,通道適配器210和通道適配器212可以接收來(lái)自處理器的、目標(biāo)為與SAN連接的PCI IOA的加載和存儲(chǔ)指令。這些都繞過(guò)了該動(dòng)詞層,如圖2所示。
圖3示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的一主機(jī)通道適配器的示意圖。圖3所示的主機(jī)通道適配器300包括一組隊(duì)列對(duì)(QP)302-310,其是一種用來(lái)將消息傳送給主機(jī)通道適配器端口312-316的手段。數(shù)據(jù)到主機(jī)通道適配器端口312-316的緩沖是通過(guò)虛擬通道(VL)318-334引導(dǎo)的,其中每個(gè)VL具有自己的流控制。一子網(wǎng)管理器(未示出)使用用于每個(gè)物理端口的本地地址,即端口的LID,來(lái)配置通道適配器。子網(wǎng)管理器代理(SMA)336為了配置通道適配器,而與子網(wǎng)管理器通信。存儲(chǔ)器轉(zhuǎn)換與保護(hù)(MTP)338是一種將虛擬地址轉(zhuǎn)換為物理地址并驗(yàn)證訪問(wèn)權(quán)限的機(jī)制。直接存儲(chǔ)器訪問(wèn)(DMA)340提供了與隊(duì)列對(duì)302-310有關(guān)的、使用存儲(chǔ)器(也標(biāo)記為340)的直接存儲(chǔ)器訪問(wèn)操作。
如圖3所示主機(jī)通道適配器300的單個(gè)通道適配器,可以支持?jǐn)?shù)千個(gè)隊(duì)列對(duì)。相比之下,I/O適配器中的一目標(biāo)通道適配器通常支持?jǐn)?shù)量少得多的隊(duì)列對(duì)。
每個(gè)隊(duì)列對(duì)由一發(fā)送工作隊(duì)列(SWQ)和一接收工作隊(duì)列組成。發(fā)送工作隊(duì)列用于發(fā)送通道和存儲(chǔ)器語(yǔ)義消息。接收工作隊(duì)列接收通道語(yǔ)義消息。用戶(hù)調(diào)用在這里被稱(chēng)為動(dòng)詞的、特定于操作系統(tǒng)的編程接口,以將工作請(qǐng)求(WR)置于工作隊(duì)列中。
圖4示出了一示意圖,其描繪了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的工作請(qǐng)求處理。圖4中具有接收工作隊(duì)列400、發(fā)送工作隊(duì)列402和完成隊(duì)列404,用于處理來(lái)自用戶(hù)406和用于用戶(hù)406的請(qǐng)求。這些來(lái)自用戶(hù)406的請(qǐng)求最終被發(fā)送給硬件408。在本例中,用戶(hù)406產(chǎn)生工作請(qǐng)求410和412,并接收工作完成414。如圖4所示,被置于一工作隊(duì)列中的工作請(qǐng)求被稱(chēng)為工作隊(duì)列元素(WQE)。
發(fā)送工作隊(duì)列402包含工作隊(duì)列元素(WQE)422-428,其描述將在SAN結(jié)構(gòu)中傳輸?shù)臄?shù)據(jù)。接收工作隊(duì)列400包含工作隊(duì)列元素(WQE)416-420,其描述放置來(lái)自SAN結(jié)構(gòu)的輸入的通道語(yǔ)義數(shù)據(jù)的位置。工作隊(duì)列元素由該主機(jī)通道適配器中的硬件408處理。
動(dòng)詞也提供了用于從完成隊(duì)列404中獲取完成的工作的機(jī)制。如圖4所示,完成隊(duì)列404包含完成隊(duì)列元素(CQE)430-436。完成隊(duì)列元素包含關(guān)于先前完成的工作隊(duì)列元素的信息。完成隊(duì)列404用來(lái)生成多個(gè)隊(duì)列對(duì)的單一完成通知點(diǎn)。完成隊(duì)列元素是在完成隊(duì)列中的一種數(shù)據(jù)結(jié)構(gòu)。該元素描述一個(gè)已被完成的工作隊(duì)列元素。該完成隊(duì)列元素包含足夠的信息,以確定隊(duì)列對(duì)和已完成的特定工作隊(duì)列元素。一完成隊(duì)列環(huán)境(context)是一信息塊,其包含管理單個(gè)完成隊(duì)列所需的指向該隊(duì)列的指針、長(zhǎng)度和其它信息。
所支持的用于圖4所示的發(fā)送工作隊(duì)列402的示例性工作請(qǐng)求描述如下。發(fā)送工作請(qǐng)求是一種通道語(yǔ)義操作,其把一組本地?cái)?shù)據(jù)段推放到由一遠(yuǎn)程節(jié)點(diǎn)的接收工作隊(duì)列元素所引用的數(shù)據(jù)段。例如,工作隊(duì)列元素428包含對(duì)數(shù)據(jù)段4 438、數(shù)據(jù)段5 440、和數(shù)據(jù)段6 442的引用。發(fā)送工作請(qǐng)求的這些數(shù)據(jù)段中的每一個(gè)都包含一虛擬連續(xù)的存儲(chǔ)器區(qū)域。用于引用本地?cái)?shù)據(jù)段的虛擬地址處于創(chuàng)建該本地隊(duì)列對(duì)的進(jìn)程的地址環(huán)境中。
遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)讀工作請(qǐng)求提供一種存儲(chǔ)器語(yǔ)義操作,以讀取遠(yuǎn)程節(jié)點(diǎn)上的一虛擬連續(xù)的存儲(chǔ)器空間。存儲(chǔ)器空間既可以是存儲(chǔ)器區(qū)域的一部分,也可以是存儲(chǔ)器窗口的一部分。存儲(chǔ)器區(qū)域引用先前注冊(cè)的、由虛擬地址和長(zhǎng)度定義的一組虛擬連續(xù)的存儲(chǔ)器地址。存儲(chǔ)器窗口引用已被綁定到先前注冊(cè)的區(qū)域的一組虛擬連續(xù)的存儲(chǔ)器地址。
該RDMA讀工作請(qǐng)求讀取遠(yuǎn)程端節(jié)點(diǎn)上的一虛擬連續(xù)的存儲(chǔ)器空間,并將該數(shù)據(jù)寫(xiě)入一虛擬連續(xù)的本地存儲(chǔ)器空間。與發(fā)送工作請(qǐng)求相似,由該RDMA讀工作隊(duì)列元素引用本地?cái)?shù)據(jù)段而采用的虛擬地址處于創(chuàng)建了該本地隊(duì)列對(duì)的進(jìn)程的地址環(huán)境中。例如,接收工作隊(duì)列400中的工作隊(duì)列元素416引用數(shù)據(jù)段1 444、數(shù)據(jù)段2 446、數(shù)據(jù)段3 448。該遠(yuǎn)程虛擬地址處于這樣的進(jìn)程的地址環(huán)境中,該進(jìn)程擁有作為該RDMA讀工作隊(duì)列元素的目標(biāo)的遠(yuǎn)程隊(duì)列對(duì)。
RDMA寫(xiě)工作隊(duì)列元素提供一種存儲(chǔ)器語(yǔ)義操作,以寫(xiě)入在遠(yuǎn)程節(jié)點(diǎn)上的一虛擬連續(xù)的存儲(chǔ)器空間。該RDMA寫(xiě)工作隊(duì)列元素包含本地虛擬連續(xù)存儲(chǔ)器空間以及被寫(xiě)入所述本地存儲(chǔ)器空間的遠(yuǎn)程存儲(chǔ)器空間虛擬地址的一分散列表(scatter list)。
RDMA FetchOp工作隊(duì)列元素提供一種存儲(chǔ)器語(yǔ)義操作,以對(duì)遠(yuǎn)程字執(zhí)行一原子操作。該RDMA FetchOp工作隊(duì)列元素是合并的RDMA讀、修改、和RDMA寫(xiě)操作。該RDMA FetchOp工作隊(duì)列元素可以支持幾種讀-修改-寫(xiě)操作,如“比較并在相等時(shí)交換”。
一綁定(解除綁定)遠(yuǎn)程訪問(wèn)關(guān)鍵字(R_Key)工作隊(duì)列元素向主機(jī)通道適配器硬件提供一命令,以通過(guò)將一存儲(chǔ)器窗口與一存儲(chǔ)器區(qū)域相關(guān)聯(lián)(解除關(guān)聯(lián)),來(lái)修改(清除)該存儲(chǔ)器窗口。R_Key是每個(gè)RDMA訪問(wèn)的一部分,并被用于驗(yàn)證遠(yuǎn)程進(jìn)程已允許對(duì)緩沖區(qū)的訪問(wèn)。
在一實(shí)施例中,圖4所示的接收工作隊(duì)列400只支持一種類(lèi)型的工作隊(duì)列元素,其被稱(chēng)為接收工作隊(duì)列元素。該接收工作隊(duì)列元素提供一種通道語(yǔ)義操作,其描述輸入的發(fā)送消息寫(xiě)入其中的一本地存儲(chǔ)器空間。該接收工作隊(duì)列元素包括一分散列表,其描述數(shù)個(gè)虛擬連續(xù)的存儲(chǔ)器空間。輸入的發(fā)送消息寫(xiě)入這些存儲(chǔ)器空間中。這些虛擬地址處于創(chuàng)建該本地隊(duì)列對(duì)的進(jìn)程的地址環(huán)境中。
對(duì)于處理器間通信,一用戶(hù)模式軟件進(jìn)程通過(guò)隊(duì)列對(duì)直接從緩沖區(qū)在存儲(chǔ)器中所在的位置傳送數(shù)據(jù)。在一實(shí)施例中,通過(guò)隊(duì)列對(duì)的傳送繞過(guò)操作系統(tǒng),并耗用很少的主機(jī)指令周期。隊(duì)列對(duì)允許零處理器副本的數(shù)據(jù)傳送,而不牽涉操作系統(tǒng)內(nèi)核。該零處理器副本的數(shù)據(jù)傳送對(duì)高帶寬和低時(shí)延的通信提供了有效的支持。
當(dāng)一隊(duì)列對(duì)生成時(shí),該隊(duì)列對(duì)被設(shè)置為提供所選類(lèi)型的傳輸服務(wù)。在一實(shí)施例中,實(shí)施本發(fā)明的網(wǎng)絡(luò)計(jì)算系統(tǒng)支持4種類(lèi)型的傳輸服務(wù)。
可靠和不可靠連接的服務(wù)將一本地隊(duì)列對(duì)與一個(gè)且只有一個(gè)遠(yuǎn)程隊(duì)列對(duì)相關(guān)聯(lián)。連接的服務(wù)需要進(jìn)程為每個(gè)將通過(guò)SAN結(jié)構(gòu)與之通信的進(jìn)程創(chuàng)建一隊(duì)列對(duì)。因而,如果N個(gè)主機(jī)處理器節(jié)點(diǎn)中的每一個(gè)都包含P個(gè)進(jìn)程,而每個(gè)節(jié)點(diǎn)上的所有P個(gè)進(jìn)程都要與所有其它節(jié)點(diǎn)上的所有進(jìn)程通信,則每個(gè)主機(jī)處理器節(jié)點(diǎn)需要P2×(N-1)個(gè)隊(duì)列對(duì)。此外,一進(jìn)程可將一隊(duì)列對(duì)與同一主機(jī)通道適配器上的另一隊(duì)列對(duì)相關(guān)聯(lián)。
可靠數(shù)據(jù)報(bào)服務(wù)將一本地端到端(EE)環(huán)境與一個(gè)且只有一個(gè)遠(yuǎn)程端到端環(huán)境相關(guān)聯(lián)??煽繑?shù)據(jù)報(bào)服務(wù)允許一個(gè)隊(duì)列對(duì)的客戶(hù)進(jìn)程與任何其它遠(yuǎn)程節(jié)點(diǎn)上的任何其它隊(duì)列對(duì)通信。在接收工作隊(duì)列中,可靠數(shù)據(jù)報(bào)服務(wù)允許來(lái)自任何其它遠(yuǎn)程節(jié)點(diǎn)上的任何發(fā)送工作隊(duì)列的輸入消息。由于可靠數(shù)據(jù)報(bào)服務(wù)是無(wú)連接的,因此,可靠數(shù)據(jù)報(bào)服務(wù)極大地改進(jìn)了可伸縮性。所以,與使用可靠連接傳輸服務(wù)相比,使用可靠數(shù)據(jù)報(bào)服務(wù),具有固定數(shù)量的隊(duì)列對(duì)的一端節(jié)點(diǎn)可以與多得多的進(jìn)程和端節(jié)點(diǎn)通信。例如,如果N個(gè)主機(jī)處理器節(jié)點(diǎn)中的每一個(gè)都包含P個(gè)進(jìn)程,并且每個(gè)節(jié)點(diǎn)上的所有P個(gè)進(jìn)程都要與所有其它節(jié)點(diǎn)上的所有進(jìn)程通信,則可靠連接服務(wù)在每個(gè)節(jié)點(diǎn)上需要P2×(N-1)個(gè)隊(duì)列對(duì)。相比之下,無(wú)連接的可靠數(shù)據(jù)報(bào)服務(wù)在每個(gè)節(jié)點(diǎn)上只需要P個(gè)隊(duì)列對(duì)加上(N-1)個(gè)EE環(huán)境,就可以進(jìn)行完全相同的通信。
不可靠數(shù)據(jù)報(bào)服務(wù)是無(wú)連接的。不可靠數(shù)據(jù)報(bào)服務(wù)由管理應(yīng)用程序使用,以發(fā)現(xiàn)新的交換機(jī)、路由器和端節(jié)點(diǎn),并將它們集成到一給定的網(wǎng)絡(luò)計(jì)算系統(tǒng)中。不可靠的數(shù)據(jù)報(bào)服務(wù)不提供可靠連接服務(wù)和可靠數(shù)據(jù)報(bào)服務(wù)的可靠性保證。因而,不可靠數(shù)據(jù)報(bào)服務(wù)利用在每個(gè)端節(jié)點(diǎn)上保持的較少的狀態(tài)信息運(yùn)行。
圖5是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的一數(shù)據(jù)包的圖解。消息數(shù)據(jù)500包含數(shù)據(jù)段1 502、數(shù)據(jù)段2 504、和數(shù)據(jù)段3 506,其與圖4所示的數(shù)據(jù)段相似。在本例中,這些數(shù)據(jù)段構(gòu)成包508,其被置于數(shù)據(jù)包512中的包凈荷(payload)510中。此外,數(shù)據(jù)包512包含CRC 514,其用于錯(cuò)誤檢驗(yàn)。此外,在數(shù)據(jù)包512中還有路由報(bào)頭516和傳輸報(bào)頭518。路由報(bào)頭516用于標(biāo)識(shí)數(shù)據(jù)包512的源和目的端口。本例中的傳輸報(bào)頭518指定數(shù)據(jù)包512的目的隊(duì)列對(duì)。此外,傳輸報(bào)頭518還提供用于數(shù)據(jù)包512的諸如操作碼、包順序號(hào)、和分區(qū)等信息。該操作碼標(biāo)識(shí)該包是否是一消息的第一個(gè)、最后一個(gè)、中間的、或唯一的包。該操作碼也指定是否該操作是一發(fā)送RDMA寫(xiě)、讀或原子操作。該包順序號(hào)在通信建立時(shí)被初始化,并且每當(dāng)隊(duì)列對(duì)創(chuàng)建一新包時(shí)遞增。端節(jié)點(diǎn)的端口可以被配置成為一個(gè)或多個(gè)有可能重疊的、被稱(chēng)為分區(qū)的集合的成員。
圖6示出了根據(jù)本發(fā)明的實(shí)施例的、具有虛擬通道適配器和虛擬交換機(jī)的一物理組件的示意圖。圖6示出了一多功能芯片的內(nèi)部結(jié)構(gòu),該芯片包含一個(gè)或多個(gè)交換機(jī),這些交換機(jī)將一個(gè)或多個(gè)HCA互連到一個(gè)或多個(gè)子網(wǎng)。圖6中的物理元件600包括虛擬主機(jī)處理器節(jié)點(diǎn)602和虛擬主機(jī)處理器節(jié)點(diǎn)604。虛擬主機(jī)處理器節(jié)點(diǎn)602包括虛擬主機(jī)通道適配器(HCA)606。虛擬主機(jī)處理器節(jié)點(diǎn)604包括虛擬主機(jī)通道適配器(HCA)608。虛擬HCA 606和608可以具有與物理HCA相同的屬性。例如,在本例中,虛擬HCA 606和608具有強(qiáng)制性的隊(duì)列對(duì)號(hào)碼0和1。
圖6所示的物理元件600包括SAN結(jié)構(gòu)610,該SAN結(jié)構(gòu)610包括交換機(jī)612。圖6所示的SAN結(jié)構(gòu)610包括將主機(jī)通道適配器606耦合到交換機(jī)612的一鏈路,以及將交換機(jī)612耦合到TCA 642的一鏈路。圖6所示的網(wǎng)絡(luò)計(jì)算系統(tǒng)600還包括SAN結(jié)構(gòu)611,該SAN結(jié)構(gòu)611包括交換機(jī)614。圖6所示的SAN結(jié)構(gòu)611包括將主機(jī)通道適配器608耦合到交換機(jī)614的一鏈路,以及將交換機(jī)614耦合到TCA 644的一鏈路。虛擬HCA 606包括端口650和652。端口650通過(guò)交換機(jī)612的端口678連接到子網(wǎng)646。端口652通過(guò)交換機(jī)614的端口682連接到子網(wǎng)648。與子網(wǎng)646相關(guān)聯(lián)的一子網(wǎng)管理器已將LID 670分配給HCA 606的端口650,并將LID 694分配給交換機(jī)612的端口686。端口686是交換機(jī)612的InfiniBand子網(wǎng)管理端口0。與子網(wǎng)648相關(guān)聯(lián)的一子網(wǎng)管理器已將LID672分配給HCA 606的端口652,并將LID 696分配給交換機(jī)614的端口688。端口688是交換機(jī)614的InfiniBand子網(wǎng)管理端口0。虛擬HCA 608包括端口654和656。端口654通過(guò)交換機(jī)612的端口680連接到子網(wǎng)646。端口656通過(guò)交換機(jī)614的端口684連接到子網(wǎng)648。與子網(wǎng)646相關(guān)聯(lián)的一子網(wǎng)管理器已將LID 674分配給HCA 608的端口654。與子網(wǎng)648相關(guān)聯(lián)的一子網(wǎng)管理器已將LID 676分配給HCA 608的端口656。
在示例性的事務(wù)中,主機(jī)處理器節(jié)點(diǎn)602包括客戶(hù)進(jìn)程A 616。主機(jī)處理器節(jié)點(diǎn)604包括客戶(hù)進(jìn)程B 618。客戶(hù)進(jìn)程A 616通過(guò)隊(duì)列對(duì)620、完成隊(duì)列632和轉(zhuǎn)換保護(hù)表(TPT)634與主機(jī)通道適配器硬件606交互作用??蛻?hù)進(jìn)程B 618通過(guò)隊(duì)列對(duì)622、完成隊(duì)列636和TPT 638與主機(jī)通道適配器608交互作用。隊(duì)列對(duì)620、隊(duì)列對(duì)622、完成隊(duì)列632、完成隊(duì)列636、TPT 634和TPT 638是一些數(shù)據(jù)結(jié)構(gòu)。隊(duì)列對(duì)620包括一發(fā)送工作隊(duì)列624和一接收工作隊(duì)列626。隊(duì)列對(duì)622包括一發(fā)送工作隊(duì)列628和一接收工作隊(duì)列630。完成隊(duì)列632和636由單個(gè)完成隊(duì)列組成。TPT 634和638由一存儲(chǔ)器組成,該存儲(chǔ)器由一存儲(chǔ)器地址轉(zhuǎn)換與保護(hù)表組成。
通道適配器,例如TCA或HCA,可以向?qū)⒆鳛槲锢碓?00的一部分而運(yùn)行的軟件、固件或硬件狀態(tài)機(jī)提供一資源配置和分配接口。該資源配置和分配接口允許軟件、固件或硬件狀態(tài)機(jī)為虛擬HCA,例如圖6所示的HCA 606和608,設(shè)置操作策略。該操作策略可能包括1)在一多功能芯片中使用的交換機(jī)的數(shù)量;2)每個(gè)交換機(jī)的端口的數(shù)量;3)分配給每個(gè)交換機(jī)的交換機(jī)資源的數(shù)量;4)在該多功能芯片中使用的HCA的數(shù)量;5)每個(gè)HCA的端口的數(shù)量;以及6)分配給每個(gè)HCA的HCA資源的數(shù)量。
軟件、固件或硬件狀態(tài)機(jī)可以選擇物理元件600的實(shí)際配置。一物理元件可以是,例如,一HCA。該選擇可以是靜態(tài)的或動(dòng)態(tài)的。靜態(tài)選擇可能需要通過(guò)一結(jié)構(gòu)的重新初始化和/或一節(jié)點(diǎn)的重新啟動(dòng)來(lái)改變HCA或交換機(jī)的配置。動(dòng)態(tài)選擇允許改變HCA或交換機(jī)的配置而不需要結(jié)構(gòu)的重新初始化,但可能需要該節(jié)點(diǎn)的啟動(dòng)。
在靜態(tài)選擇機(jī)制下,物理元件600可能必須報(bào)告在結(jié)構(gòu)初始化期間可以作為物理元件600的一部分而包括進(jìn)來(lái)的虛擬交換機(jī)、HCA、和主機(jī)處理器節(jié)點(diǎn)的精確數(shù)量。靜態(tài)選擇機(jī)制可能提供在該物理元件上是否有任何端口可用的信息,但不提供關(guān)于端口狀態(tài)的信息,如果沒(méi)有對(duì)該信息的請(qǐng)求的話。使用靜態(tài)選擇機(jī)制,每個(gè)虛擬HCA可能表現(xiàn)為一有區(qū)別的物理HCA。在圖6中,通過(guò)使用標(biāo)準(zhǔn)的InfiniBand子網(wǎng)管理包(SMP)探查端口644,與子網(wǎng)646相關(guān)聯(lián)的一子網(wǎng)管理器檢測(cè)到交換機(jī)612。對(duì)于與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器,交換機(jī)612表現(xiàn)為一物理交換機(jī),并且LID 694被分配給其SMP端口686。與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器通過(guò)InfiniBand SMP識(shí)別交換機(jī)612具有兩個(gè)其它的端口,即端口678和680。通過(guò)使用標(biāo)準(zhǔn)的InfiniBand SMP探查交換機(jī)612的端口678以及定位HCA 606的端口650,與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器檢測(cè)到HCA 606。對(duì)于與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器,HCA 606表現(xiàn)為一物理HCA。與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器使用InfiniBand SMP將LID 670分配給HCA 606的端口650。類(lèi)似地,通過(guò)使用InfiniBand SMP,與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器檢測(cè)到HCA 608。對(duì)于與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器,HCA 608表現(xiàn)為一物理HCA。與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器使用InfiniBand SMP將LID 674分配給端口654。
使用動(dòng)態(tài)選擇機(jī)制,物理元件600可能報(bào)告虛擬交換機(jī)的最大可配置數(shù)量和它們相應(yīng)的拓?fù)?,但可能不?bào)告在結(jié)構(gòu)初始化期間可能作為物理元件600的一部分包括進(jìn)來(lái)的HCA和主機(jī)處理器節(jié)點(diǎn)的精確數(shù)量。動(dòng)態(tài)選擇機(jī)制可能提供在該物理元件上是否有任何端口可用的信息,并可能提供在先前不可用的端口變?yōu)榭晒┦褂脮r(shí)的信息。類(lèi)似地,動(dòng)態(tài)選擇機(jī)制可能在HCA及與其相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)被從運(yùn)行中刪除時(shí)報(bào)告它們的刪除。使用動(dòng)態(tài)選擇機(jī)制,每個(gè)虛擬HCA可以表現(xiàn)為一有區(qū)別的、物理的HCA。
在圖6中,如果HCA 606在后來(lái)的一時(shí)刻變成可供使用的,則將發(fā)生以下過(guò)程。通過(guò)使用InfiniBand管理包(SMP)探查端口644,與子網(wǎng)646相關(guān)聯(lián)的一子網(wǎng)管理器檢測(cè)出交換機(jī)612。對(duì)于與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器,交換機(jī)612表現(xiàn)為一物理交換機(jī),并且LID 694被分配給其SMP端口686。與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器通過(guò)標(biāo)準(zhǔn)的InfiniBand SMP識(shí)別交換機(jī)612具有兩個(gè)其它的端口,即端口678和680。通過(guò)使用InfiniBand SMP探查交換機(jī)612端口678以及定位HCA 606的端口650,與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器檢測(cè)出HCA 606。對(duì)于與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器,HCA 606表現(xiàn)為一物理HCA。與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器使用InfiniBand SMP將LID 670分配給HCA的端口650。在后來(lái)的一時(shí)刻,通過(guò)與子網(wǎng)646相關(guān)聯(lián)的子網(wǎng)管理器進(jìn)行SMP掃描(sweep)以探查交換機(jī)612、端口680并定位HCA 608的端口654,與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器可以檢測(cè)到HCA 608。
或者,通過(guò)來(lái)自交換機(jī)612的、指明狀態(tài)改變的一陷阱(trap),與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器可能檢測(cè)到HCA 608。這將導(dǎo)致與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器使用InfiniBand SMP探查交換機(jī)612、端口680并定位HCA 608的端口654。對(duì)于與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器,HCA608表現(xiàn)為一物理HCA。與子網(wǎng)646相關(guān)聯(lián)的該子網(wǎng)管理器使用InfiniBandSMP將LID 674分配給HCA 608的端口654。
如上所述,本發(fā)明提供了用于對(duì)一物理元件進(jìn)行端節(jié)點(diǎn)分區(qū)的方法和系統(tǒng)。該物理元件的配置的選擇可以是靜態(tài)的或動(dòng)態(tài)的。使用靜態(tài)選擇機(jī)制,子網(wǎng)管理器可以探查該物理元件,例如一交換機(jī)或HCA,以確定該物理元件是否被檢測(cè)到。如果該物理元件被檢測(cè)到,則分配一LID給該物理元件的SM P端口。如果檢測(cè)到該物理元件的其它端口,則為這些其它端口分配一LID。
使用動(dòng)態(tài)選擇機(jī)制,當(dāng)HCA及與這些HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)變?yōu)榭晒┦褂脮r(shí),它們將被報(bào)告。此外,當(dāng)這些HCA及與這些HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)被從運(yùn)行中刪除時(shí),該動(dòng)態(tài)選擇機(jī)制將報(bào)告這些HCA及與這些HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)的刪除。當(dāng)一HCA變?yōu)榭晒┦褂脮r(shí),子網(wǎng)管理器將一LID分配給與該HCA相關(guān)聯(lián)的一端口。
圖7是一示例性流程圖,其描繪了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的、用于物理元件的配置的一靜態(tài)選擇系統(tǒng)的操作。在本例中,該操作開(kāi)始于由子網(wǎng)管理器使用InfiniBand子網(wǎng)管理包來(lái)探查一端口(步驟702)。響應(yīng)于由該子網(wǎng)管理器使用InfiniBand子網(wǎng)管理包來(lái)探查該端口,判斷是否檢測(cè)到一交換機(jī)(步驟704)。如果未檢測(cè)到交換機(jī)(步驟704否),則該操作終止。如果檢測(cè)到交換機(jī)(步驟704是),則一LID被分配給該交換機(jī)的SMP端口(步驟706)。
然后判斷是否該予網(wǎng)管理器已檢測(cè)到該交換機(jī)的其它端口(步驟708)。如果該子網(wǎng)管理器已檢測(cè)到該交換機(jī)的(一些)其它端口(步驟708是),則LID被分配給(這些)其它端口(步驟710),并且操作返回到步驟708,在此判斷是否該子網(wǎng)管理器已檢測(cè)到該交換機(jī)的其它端口。如果該子網(wǎng)管理器沒(méi)有檢測(cè)到該交換機(jī)的其它端口(步驟708否),則判斷是否將對(duì)結(jié)構(gòu)進(jìn)行重新初始化(步驟712)。如果不對(duì)結(jié)構(gòu)進(jìn)行重新初始化(步驟712否),則執(zhí)行一節(jié)點(diǎn)的重新啟動(dòng)(步驟716)。然后,虛擬交換機(jī)、HCA和主機(jī)處理器節(jié)點(diǎn)的精確數(shù)量被報(bào)告給一子網(wǎng)管理器(步驟720),然后該操作終止。如果將對(duì)該結(jié)構(gòu)進(jìn)行重新初始化(步驟712是),則執(zhí)行該結(jié)構(gòu)的重新初始化(步驟714)。然后判斷是否將執(zhí)行一節(jié)點(diǎn)的重新啟動(dòng)(步驟718)。如果將執(zhí)行一節(jié)點(diǎn)的重新啟動(dòng)(步驟718是),則執(zhí)行該結(jié)點(diǎn)的重新啟動(dòng)(步驟716),并報(bào)告虛擬交換機(jī)、HCA和主機(jī)處理器節(jié)點(diǎn)的精確數(shù)量(步驟720),然后該操作終止。如果不執(zhí)行一節(jié)點(diǎn)的重新啟動(dòng)(步驟718否),則報(bào)告虛擬交換機(jī)、HCA和主機(jī)處理器節(jié)點(diǎn)的精確數(shù)量(步驟720),然后該操作終止。
圖8是一示例性流程圖,其描述了根據(jù)本發(fā)明的優(yōu)選實(shí)施例,當(dāng)主機(jī)通道適配器及與其相關(guān)聯(lián)的節(jié)點(diǎn)變?yōu)榭晒┦褂没驈倪\(yùn)行中刪除時(shí)將它們報(bào)告。在本例中,該操作開(kāi)始于判斷是否一HCA及與該HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)可供使用(步驟802)。如果該HCA及與該HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)是不可使用的(步驟802否),則該操作終止。如果該HCA及與該HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)是可供使用的(步驟802是),則該HCA及與該HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)在它們變?yōu)榭晒┦褂脮r(shí)將它們報(bào)告給一子網(wǎng)管理器(步驟804)。然后判斷該HCA及與該HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)是否已從運(yùn)行中刪除(步驟806)。如果該HCA及與該HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)沒(méi)有從運(yùn)行中刪除(步驟806否),則該操作終止。如果該HCA及與該HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)已從運(yùn)行中刪除(步驟806是),則報(bào)告該HCA及與該HCA相關(guān)聯(lián)的主機(jī)節(jié)點(diǎn)已從運(yùn)行中刪除(步驟808),然后該操作終止。
圖9是一示例性流程圖,其描繪了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的、用于物理元件的配置的一動(dòng)態(tài)選擇系統(tǒng)的操作。在本例中,該操作開(kāi)始于判斷是否一HCA在接通電源之時(shí)的條件下變?yōu)榭晒┦褂玫?步驟902)。如果HCA在接通電源之時(shí)的條件下沒(méi)有變?yōu)榭晒┦褂玫?步驟902否),則判斷是否HCA在接通電源之后的條件下變?yōu)榭晒┦褂玫?步驟904)。如果HCA在接通電源之后的條件下沒(méi)有變?yōu)榭晒┦褂玫?步驟904否),則該操作終止。如果HCA在接通電源之后的條件下變?yōu)榭晒┦褂玫?步驟904是),則該操作前進(jìn)到步驟906,在此由一子網(wǎng)管理器使用InfiniBand子網(wǎng)管理包探查一端口。
回到步驟902,如果一HCA在接通電源之時(shí)的條件下變?yōu)榭晒┦褂玫?步驟902是),則由一子網(wǎng)管理器使用InfiniBand子網(wǎng)管理包探查一端口(步驟906)。判斷是否檢測(cè)到一交換機(jī)(步驟908)。如果沒(méi)有檢測(cè)到交換機(jī)(步驟908否),則該操作終止。如果檢測(cè)到交換機(jī)(步驟908是),則一LID被分配給該交換機(jī)的SMP端口(步驟910)。然后判斷是否子網(wǎng)管理器已使用SMP掃描檢測(cè)到該交換機(jī)的其它端口(步驟912)。如果子網(wǎng)管理器已使用SMP掃描檢測(cè)到該交換機(jī)的其它端口(步驟912是),則一LID被分配給該其它端口,并且該操作前進(jìn)到步驟914,在此判斷是否該子網(wǎng)管理器已使用來(lái)自該交換機(jī)的、指明狀態(tài)改變的一陷阱而檢測(cè)到該交換機(jī)的其它端口。
如果該子網(wǎng)管理器未能使用SMP掃描檢測(cè)到該交換機(jī)的其它端口(步驟912否),則然后判斷是否該子網(wǎng)管理器已使用來(lái)自該交換機(jī)的、指明狀態(tài)改變的一陷阱而檢測(cè)到該交換機(jī)的其它端口(步驟914)。如果該子網(wǎng)管理器已使用來(lái)自該交換機(jī)的、指明狀態(tài)改變的一陷阱而檢測(cè)到該交換機(jī)的其它端口(步驟914是),則一LID被分配給該其它端口(步驟916),并且該操作返回到步驟912,在此判斷是否該子網(wǎng)管理器已使用SMP掃描檢測(cè)到該交換機(jī)的其它端口。
如果該子網(wǎng)管理器未能使用來(lái)自該交換機(jī)的、指明狀態(tài)改變的一陷阱而檢測(cè)到該交換機(jī)的其它端口(步驟914否),則判斷是否將進(jìn)行結(jié)構(gòu)的重新初始化(步驟918)。如果將進(jìn)行結(jié)構(gòu)的重新初始化(步驟918是),則進(jìn)行結(jié)構(gòu)的初始化,并且該操作前進(jìn)到步驟920,在此進(jìn)行一節(jié)點(diǎn)的重新啟動(dòng)。如果不進(jìn)行結(jié)構(gòu)的初始化(步驟918否),則進(jìn)行一節(jié)點(diǎn)的重新啟動(dòng)(步驟920)。當(dāng)HCA及主機(jī)處理器節(jié)點(diǎn)變?yōu)榭晒┦褂脮r(shí),將它們報(bào)告(步驟922),然后該操作終止。
因此,本發(fā)明提供了一種機(jī)制,其允許單個(gè)物理組件表現(xiàn)為多個(gè)組件,所述多個(gè)組件中的每一單個(gè)組件都有自己獨(dú)特的訪問(wèn)控制級(jí)別。這些組件可以是主機(jī)通道適配器(HCA)、目標(biāo)通道適配器(TCA)或交換機(jī)。用來(lái)創(chuàng)建主機(jī)通道適配器和交換機(jī)的資源可以通過(guò)從一公共池中靜態(tài)或動(dòng)態(tài)地選擇軟件、固件和狀態(tài)機(jī)來(lái)獲得。這些資源的分配可以通過(guò)各種機(jī)制來(lái)進(jìn)行。例如,可以使用一簡(jiǎn)單的1/N機(jī)制將資源分配給所有虛擬HCA?;蛘?,可以使用一加權(quán)平均機(jī)制創(chuàng)建具有具有不同能力的虛擬HCA。這些資源可以包括但不限于所有HCA和QP可選擇的修改量(modifier)。例如,這些HCA和QP可選擇的修改量可以是QP的數(shù)量、CQ的數(shù)量、TPT的大小、P-Key表的大小、未完成的讀RDMA的數(shù)量、及其類(lèi)似物。
重要的是認(rèn)識(shí)到,盡管已在一具有完整功能的數(shù)據(jù)處理系統(tǒng)的環(huán)境下描述了本發(fā)明,本領(lǐng)域的普通技術(shù)人員可以理解,本發(fā)明中的過(guò)程能夠以包含指令的計(jì)算機(jī)可讀介質(zhì)的形式以及多種形式分布,而且不管實(shí)際用于進(jìn)行這種分布的信號(hào)承載介質(zhì)的特殊類(lèi)型,本發(fā)明都同樣適用。計(jì)算機(jī)可讀介質(zhì)的例子包括可記錄類(lèi)型的介質(zhì),如軟盤(pán)、硬盤(pán)驅(qū)動(dòng)器、RAM、CD-ROM、DVD-ROM,也包括傳輸類(lèi)型的介質(zhì),如數(shù)字和模擬通信鏈路,使用諸如射頻和光波傳輸?shù)葌鬏斝问降挠芯€或無(wú)線通信鏈路。計(jì)算機(jī)可讀介質(zhì)可以采取編碼格式的形式,這種編碼格式被解碼以實(shí)際用于一特定的數(shù)據(jù)處理系統(tǒng)。
權(quán)利要求
1.一種用于將一物理元件(600)的一端節(jié)點(diǎn)(606)分區(qū)的方法,其包括以下步驟使用一子網(wǎng)管理包(SMP)探查(702)一端口(644);通過(guò)探查該端口(644),檢測(cè)到(704)與該端口(644)相關(guān)聯(lián)的一交換機(jī)(612);將一本地標(biāo)識(shí)符(694)分配(706)給該交換機(jī)(612)的一SMP端口(686);檢測(cè)(708)該交換機(jī)(612)的一其它端口(678);以及將一本地標(biāo)識(shí)符(670)分配(710)給與該其它端口(678)相應(yīng)的端節(jié)點(diǎn)(606)的一端口(650)。
2.一種用于將一物理元件(600)的一端節(jié)點(diǎn)(606)分區(qū)的系統(tǒng),其包括用于使用一子網(wǎng)管理包(SMP)探查(702)一端口(644)的裝置;用于通過(guò)探查該端口(644),檢測(cè)到(704)與該端口(644)相關(guān)聯(lián)的一交換機(jī)(612)的裝置;用于將一本地標(biāo)識(shí)符(694)分配(706)給該交換機(jī)(612)的一SMP端口(686)的裝置;用于檢測(cè)(708)該交換機(jī)(612)的一其它端口(678)的裝置;以及用于將一本地標(biāo)識(shí)符(670)分配(710)給與該其它端口(678)相應(yīng)的端節(jié)點(diǎn)(606)的一端口(650)的裝置。
3.一種存儲(chǔ)在一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品,用于當(dāng)其在一計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),執(zhí)行權(quán)利要求1的方法。
全文摘要
一種用于將一物理元件(600)的一端節(jié)點(diǎn)(606)分區(qū)的方法,其包括以下步驟使用一子網(wǎng)管理包(SMP)探查(702)一端口(644);通過(guò)探查該端口(644),檢測(cè)到(704)與該端口(644)相關(guān)聯(lián)的一交換機(jī)(612);將一本地標(biāo)識(shí)符(694)分配給該交換機(jī)(612)的一SMP端口(686);檢測(cè)(708)該交換機(jī)(612)的一其它端口(678);以及將一本地標(biāo)識(shí)符(670)分配(710)給與該其它端口(678)相應(yīng)的端節(jié)點(diǎn)(606)的一端口(650)。
文檔編號(hào)G06F9/445GK1520556SQ02812904
公開(kāi)日2004年8月11日 申請(qǐng)日期2002年3月18日 優(yōu)先權(quán)日2001年6月29日
發(fā)明者D·克拉多克, D·A·埃爾科, T·A·格雷格, G·F·菲斯特, R·J·雷西奧, D 克拉多克, 埃爾科, 格雷格, 菲斯特, 雷西奧 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司