專利名稱:遠(yuǎn)端直接存儲(chǔ)器存取啟用網(wǎng)絡(luò)適配器的存儲(chǔ)器管理卸載的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及主機(jī)計(jì)算機(jī)與輸入/輸出(I/O)設(shè)備之間的通信協(xié)議。更具體地說(shuō),本發(fā)明提供一種用于在主機(jī)與I/O設(shè)備之間通信的上下文中進(jìn)行存儲(chǔ)器管理的方法。
背景技術(shù):
在網(wǎng)際協(xié)議(IP)網(wǎng)絡(luò)中,軟件提供可以用來(lái)與輸入/輸出設(shè)備、通用計(jì)算機(jī)(主機(jī))和專用計(jì)算機(jī)通信的消息傳遞機(jī)制。消息傳遞機(jī)制包括傳輸協(xié)議、高層協(xié)議和應(yīng)用編程接口。目前在IP網(wǎng)絡(luò)上使用的關(guān)鍵標(biāo)準(zhǔn)傳輸協(xié)議是傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)。TCP提供可靠服務(wù),而UDP提供不可靠服務(wù)。今后,流控制傳輸協(xié)議(SCTP)也將用來(lái)提供可靠服務(wù)。在設(shè)備或計(jì)算機(jī)上執(zhí)行的進(jìn)程通過(guò)高層協(xié)議如套接字、iSCSI、和直接訪問(wèn)文件系統(tǒng)(DAFS)來(lái)訪問(wèn)IP網(wǎng)絡(luò)。
不幸的是,TCP/IP軟件消耗相當(dāng)大量的處理器和存儲(chǔ)器資源。這一問(wèn)題在有關(guān)參考文獻(xiàn)中有詳盡的描述(參見(jiàn)J.Kay,J.Pasquale,“Profiling and reducing processing overhead in TCP/IP(分析和降低TCP/IP中的處理開(kāi)銷)”,IEEE/ACM Transactions onNetworking(IEEE/ACM網(wǎng)絡(luò)化學(xué)報(bào)),Vol 4,No.6,pp.817-828,1996年12月;以及D.D.Clark,V.Jacobson,J.Romkey,H.Salwen,“Ananalysis of TCP processing overhead(TCP處理開(kāi)銷的分析)”,IEEECommunications Magazine(IEEE通信雜志),Vol,27,第6期,1989年6月,pp.23-29)。今后,網(wǎng)絡(luò)棧將由于下面若干原因而繼續(xù)消耗大量資源通過(guò)應(yīng)用的網(wǎng)絡(luò)化使用增大;使用網(wǎng)絡(luò)安全協(xié)議;以及底層結(jié)構(gòu)帶寬比微處理器和存儲(chǔ)器帶寬以更高的速率增長(zhǎng)。為了解決這一問(wèn)題,業(yè)界正在將網(wǎng)絡(luò)棧處理轉(zhuǎn)給IP集卸載引擎(IP suite Offload Engine,IPSOE)。
目前業(yè)界存在兩種卸載(offload)方法。第一方法使用現(xiàn)有TCP/IP網(wǎng)絡(luò)棧,而不增加任何附加協(xié)議。該方法可以將TCP/IP轉(zhuǎn)給硬件。但是不幸的是沒(méi)有消除接收方復(fù)制的需要。如上面論文所述,復(fù)制對(duì)中央處理單元(CPU)使用的影響最大。為消除復(fù)制需要,業(yè)界正在尋求第二方法,包括添加幀、直接數(shù)據(jù)放置(DDP)和基于TCP的遠(yuǎn)端直接存儲(chǔ)器存取(RDMA)以及基于SCTP的DDP和RDMA。支持這兩種方法所需的IP集卸載引擎(IPSOE)是類似的,它們之間的關(guān)鍵不同之處在于采用第二方法硬件必須支持附加協(xié)議。
IPSOE提供可以通過(guò)套接字、iSCSI和DAFS用來(lái)在節(jié)點(diǎn)之間通信的消息傳遞機(jī)制。在主機(jī)計(jì)算機(jī)或設(shè)備上執(zhí)行的進(jìn)程通過(guò)將發(fā)送/接收消息投遞到IPSOE上的發(fā)送/接收工作隊(duì)列來(lái)訪問(wèn)IP網(wǎng)絡(luò)。這些進(jìn)程也稱作使用者(consumer)”。
發(fā)送/接收工作隊(duì)列(WQ)作為隊(duì)列對(duì)(QP)分配給使用者。消息可以通過(guò)若干不同傳輸類型來(lái)發(fā)送傳統(tǒng)TCP、RDMA TCP、UDP或SCTP。使用者通過(guò)IPSOE發(fā)送和接收工作完成(WC)隊(duì)列從完成隊(duì)列(CQ)中提取這些消息的結(jié)果。源端IPSOE負(fù)責(zé)將外出消息進(jìn)行分段,并且將它們發(fā)送到目的端。目的端IPSOE負(fù)責(zé)重新組裝進(jìn)入消息,并且將它們放置到由目的端使用者指定的存儲(chǔ)器空間中。這些使用者使用IPSO動(dòng)詞來(lái)訪問(wèn)由IPSOE支持的功能。解釋動(dòng)詞并且直接訪問(wèn)IPSOE的軟件稱作IPSO接口(IPSOI)。
目前,主機(jī)CPU執(zhí)行大部分IP集處理。IP集卸載引擎提供一種用于與其他通用計(jì)算機(jī)和I/O設(shè)備進(jìn)行通信的較高性能接口。通過(guò)IPSOE發(fā)送或接收數(shù)據(jù)需要CPU將數(shù)據(jù)從一個(gè)存儲(chǔ)器位置復(fù)制到另一個(gè)位置,或者登記存儲(chǔ)器從而使IPSOE可以直接訪問(wèn)存儲(chǔ)器區(qū)域。這些選項(xiàng)均需要大量的CPU資源,其中,存儲(chǔ)器登記選項(xiàng)更適合于大的存儲(chǔ)傳輸。然而,隨著網(wǎng)絡(luò)速度的提高,所需的CPU資源量將增大。最好具有一種改進(jìn)方法、裝置和計(jì)算機(jī)指令,用于減少執(zhí)行下列操作所需的CPU資源量登記這些存儲(chǔ)器位置,通過(guò)存儲(chǔ)器窗口將它們暴露給遠(yuǎn)端系統(tǒng),然后提供一次接觸(One Touch)訪問(wèn)作為暴露存儲(chǔ)器窗口的選項(xiàng)。另外,最好讓該機(jī)制適用于iSCSI 1.0、RDMA和iSCSI-R。
發(fā)明內(nèi)容
本發(fā)明提供一種方法、計(jì)算機(jī)程序產(chǎn)品及分布數(shù)據(jù)處理系統(tǒng),用于登記存儲(chǔ)器位置,通過(guò)存儲(chǔ)器窗口暴露先前登記的存儲(chǔ)器位置,然后提供一次接觸訪問(wèn)作為暴露存儲(chǔ)器窗口的選項(xiàng)。
具體地說(shuō),本發(fā)明涉及由根據(jù)本發(fā)明優(yōu)選實(shí)施例的網(wǎng)際協(xié)議集卸載引擎(IPSOE)進(jìn)行存取的存儲(chǔ)器區(qū)域。提供一種機(jī)制用于隱式或顯式登記存儲(chǔ)器區(qū)域并且允許硬件通過(guò)存儲(chǔ)器區(qū)域表和地址轉(zhuǎn)換表直接使用該區(qū)域同時(shí)防止該區(qū)域被其他應(yīng)用使用。一種利用標(biāo)記表將請(qǐng)求與一個(gè)物理或虛擬地址相關(guān)聯(lián)從而通過(guò)進(jìn)入請(qǐng)求訪問(wèn)先前登記的存儲(chǔ)器區(qū)域的方法。一種當(dāng)通過(guò)進(jìn)入消息第一次使用時(shí)對(duì)先前綁定的窗口去綁定的機(jī)制。
被認(rèn)為是本發(fā)明特征的新特性在所附權(quán)利要求中進(jìn)行闡述。然而,通過(guò)參照下面結(jié)合附圖對(duì)示例性實(shí)施例的詳細(xì)描述,本發(fā)明本身以及優(yōu)選使用模式及其另外目的和優(yōu)點(diǎn)將變得更好理解,其中圖1是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的分布計(jì)算機(jī)系統(tǒng)的圖;圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例的主機(jī)處理器節(jié)點(diǎn)的功能方框圖;圖3A是根據(jù)本發(fā)明優(yōu)選實(shí)施例的IP集卸載引擎的圖;圖3B是根據(jù)本發(fā)明優(yōu)選實(shí)施例的交換機(jī)的圖;圖3C是根據(jù)本發(fā)明優(yōu)選實(shí)施例的路由器的圖;圖4是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的工作請(qǐng)求處理的圖;圖5是示出其中使用TCP或SCTP傳輸?shù)母鶕?jù)本發(fā)明優(yōu)選實(shí)施例的分布計(jì)算機(jī)系統(tǒng)的一部分的圖;圖6是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的數(shù)據(jù)幀的圖;圖7是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的分布計(jì)算機(jī)系統(tǒng)的一部分的圖;圖8是示出用于本發(fā)明的分布網(wǎng)絡(luò)系統(tǒng)中的網(wǎng)絡(luò)尋址的圖;圖9是本發(fā)明優(yōu)選實(shí)施例中的包含子網(wǎng)的分布計(jì)算機(jī)系統(tǒng)的一部分的圖;圖10是用于本發(fā)明的優(yōu)選實(shí)施例中的分層通信架構(gòu)的圖;圖11是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的兩種存儲(chǔ)器登記機(jī)制的流程圖及圖表;圖12示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的存儲(chǔ)器管理系統(tǒng);圖13是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的存儲(chǔ)器區(qū)域表?xiàng)l目的圖;圖14是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的當(dāng)?shù)怯洿鎯?chǔ)器區(qū)域時(shí)必須進(jìn)行的檢查的流程圖;圖15是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的由IPSOE用來(lái)驗(yàn)證由使用者作為工作請(qǐng)求投遞到IPSOE工作隊(duì)列中的工作隊(duì)列元素所執(zhí)行的存儲(chǔ)器存取的過(guò)程的流程圖及圖表;圖16是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的用來(lái)區(qū)分可以與遠(yuǎn)端操作相關(guān)聯(lián)的不同類型的流的過(guò)程的流程圖及圖表;圖17A是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的與iSCSI QP相關(guān)聯(lián)的存儲(chǔ)器管理機(jī)制的流程圖及圖表;圖17B是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的用來(lái)驗(yàn)證遠(yuǎn)端iSCSI 1.0操作的存儲(chǔ)器管理過(guò)程的流程圖及圖表;以及圖18是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的用來(lái)向一次接觸訪問(wèn)機(jī)制提供不暴露給遠(yuǎn)端節(jié)點(diǎn)的注銷功能并且驗(yàn)證遠(yuǎn)端RDMA讀取請(qǐng)求、RDMA讀取響應(yīng)和RDMA寫入消息的存儲(chǔ)器管理過(guò)程的流程圖及圖表。
具體實(shí)施例方式
本發(fā)明提供一種分布計(jì)算機(jī)系統(tǒng),包括端節(jié)點(diǎn)、交換機(jī)、路由器和互連這些組件的鏈路。端節(jié)點(diǎn)可以是網(wǎng)際協(xié)議集卸載引擎或基于網(wǎng)際協(xié)議集的傳統(tǒng)主機(jī)軟件。各端節(jié)點(diǎn)使用收發(fā)隊(duì)列對(duì)來(lái)接收和發(fā)送消息。端節(jié)點(diǎn)將消息分成多個(gè)幀,并且通過(guò)鏈路傳輸這些幀。交換機(jī)和路由器互連端節(jié)點(diǎn),并且通過(guò)路由選擇將這些幀傳送到適當(dāng)?shù)亩斯?jié)點(diǎn)。端節(jié)點(diǎn)在目的端將這些段重新組裝成消息。
現(xiàn)在參照附圖特別是圖1,示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的分布計(jì)算機(jī)系統(tǒng)的圖。圖1所示的分布計(jì)算機(jī)系統(tǒng)采用網(wǎng)際協(xié)議網(wǎng)絡(luò)(IP網(wǎng)絡(luò))如IP網(wǎng)絡(luò)100的形式,并且僅是為了示例的目的而提供的,并且下述本發(fā)明實(shí)施例可以在各種其他類型和結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)。例如,實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)的范圍可以從具有一個(gè)處理器和一些輸入/輸出(I/O)適配器的小型服務(wù)器到具有成百上千處理器和數(shù)千I/O適配器的大型并行超級(jí)計(jì)算機(jī)系統(tǒng)。而且,本發(fā)明可以在由互聯(lián)網(wǎng)或內(nèi)部網(wǎng)連接的遠(yuǎn)端計(jì)算機(jī)系統(tǒng)的底層結(jié)構(gòu)中實(shí)現(xiàn)。
IP網(wǎng)絡(luò)100是互連分布計(jì)算機(jī)系統(tǒng)內(nèi)的節(jié)點(diǎn)的高帶寬、低延遲網(wǎng)絡(luò)。節(jié)點(diǎn)是連至一個(gè)或多個(gè)網(wǎng)絡(luò)鏈路并且在網(wǎng)絡(luò)內(nèi)形成消息源端和/或目的端的任何組件。在所示例子中,IP網(wǎng)絡(luò)100包括采用主機(jī)處理器節(jié)點(diǎn)102、主機(jī)處理器節(jié)點(diǎn)104以及冗余陣列獨(dú)立盤(RAID)子系統(tǒng)節(jié)點(diǎn)106形式的節(jié)點(diǎn)。由于IP網(wǎng)絡(luò)100可以連接任何數(shù)目和任何類型的獨(dú)立處理器節(jié)點(diǎn)、存儲(chǔ)節(jié)點(diǎn)和專用處理節(jié)點(diǎn),因此圖1所示的節(jié)點(diǎn)僅是為了示例的目的。這些節(jié)點(diǎn)中的任一個(gè)均可以用作端節(jié)點(diǎn),在此它被定義為在IP網(wǎng)絡(luò)100中發(fā)起或最終使用消息或幀的設(shè)備。
在本發(fā)明的一個(gè)實(shí)施例中,錯(cuò)誤處理機(jī)制存在于分布計(jì)算機(jī)系統(tǒng)中,其中,錯(cuò)誤處理機(jī)制考慮到分布計(jì)算系統(tǒng)如IP網(wǎng)絡(luò)100中端節(jié)點(diǎn)之間的TCP或SCTP通信。
在此所用的消息是應(yīng)用定義的數(shù)據(jù)交換單元,它是在協(xié)作進(jìn)程之間進(jìn)行通信的基本單元。幀是用網(wǎng)際協(xié)議集首標(biāo)和/或尾標(biāo)封裝的一個(gè)數(shù)據(jù)單元。首標(biāo)一般提供控制和路由選擇信息,用于引導(dǎo)幀通過(guò)IP網(wǎng)絡(luò)100。尾標(biāo)一般包含控制和循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù),用于確保不傳送帶有被破壞內(nèi)容的幀。
在分布計(jì)算機(jī)系統(tǒng)內(nèi),IP網(wǎng)絡(luò)100包含支持各種形式的通信(traffic)如存儲(chǔ)、進(jìn)程間通信(IPC)、文件訪問(wèn)和套接字的通信和管理底層結(jié)構(gòu)。圖1所示的IP網(wǎng)絡(luò)100包括交換通信結(jié)構(gòu)116,它允許很多設(shè)備在安全、遠(yuǎn)端管理的環(huán)境中以高帶寬和低延遲同時(shí)傳輸數(shù)據(jù)。端節(jié)點(diǎn)可以通過(guò)多個(gè)端口進(jìn)行通信,并且利用多個(gè)路徑通過(guò)IP網(wǎng)絡(luò)結(jié)構(gòu)。圖1所示的通過(guò)IP網(wǎng)絡(luò)的多個(gè)端口和路徑可以用于容錯(cuò)和增大帶寬數(shù)據(jù)傳輸。
圖1中的IP網(wǎng)絡(luò)100包括交換機(jī)112、交換機(jī)114和路由器117。交換機(jī)是將多個(gè)鏈路連接在一起并且允許使用層2目的端地址字段通過(guò)路由選擇將幀從一個(gè)鏈路傳送到另一鏈路的設(shè)備。當(dāng)使用以太網(wǎng)作為鏈路時(shí),目的端字段公知為介質(zhì)訪問(wèn)控制(MAC)地址。路由器是根據(jù)層3目的端地址字段對(duì)幀執(zhí)行路由選擇的設(shè)備。當(dāng)使用網(wǎng)際協(xié)議(IP)作為層3協(xié)議時(shí),目的端地址字段是IP地址。
在一個(gè)實(shí)施例中,鏈路是任何兩個(gè)網(wǎng)絡(luò)結(jié)構(gòu)單元如端節(jié)點(diǎn)、交換機(jī)或路由器之間的全雙工通道。適當(dāng)?shù)逆溌防影ǖ幌抻阢~纜、光纜、底板和印刷電路板上的印刷電路銅跡(copper trace)。
對(duì)于可靠服務(wù)類型(TCP和SCTP),端節(jié)點(diǎn)如主機(jī)處理器端節(jié)點(diǎn)和I/O適配器端節(jié)點(diǎn)產(chǎn)生請(qǐng)求幀,并且返回確認(rèn)幀。交換機(jī)和路由器將幀從源端傳到目的端。
在如圖1所示的IP網(wǎng)絡(luò)100中,主機(jī)處理器節(jié)點(diǎn)102、主機(jī)處理器節(jié)點(diǎn)104和RAID子系統(tǒng)節(jié)點(diǎn)106包括至少一個(gè)IPSOE以與IP網(wǎng)絡(luò)100接口。在一個(gè)實(shí)施例中,各IPSOE是對(duì)在IP網(wǎng)絡(luò)100上傳輸?shù)脑磶蛐潘迬?sink frame)以足夠的細(xì)節(jié)實(shí)現(xiàn)IPSOI的端點(diǎn)。主機(jī)處理器節(jié)點(diǎn)102包含采用主機(jī)IPSOE 118和IPSOE 120形式的IPSOE。主機(jī)處理器節(jié)點(diǎn)104包含IPSOE 122和IPSOE 124。主機(jī)處理器節(jié)點(diǎn)102還包括通過(guò)總線系統(tǒng)134互連的中央處理單元126-130和存儲(chǔ)器132。主機(jī)處理器節(jié)點(diǎn)104類似地包括通過(guò)總線系統(tǒng)144互連的中央處理單元136-140和存儲(chǔ)器142。
IPSOE 118提供與交換機(jī)112的連接,而IPSOE 124提供與交換機(jī)114的連接,并且IP集卸載引擎120和122提供與交換機(jī)112和114的連接。
在一個(gè)實(shí)施例中,IP集卸載引擎是以硬件或者硬件和卸載微處理器的組合來(lái)實(shí)現(xiàn)的。在這一實(shí)現(xiàn)中,IP集處理轉(zhuǎn)給IPSOE。該實(shí)現(xiàn)還允許在交換網(wǎng)絡(luò)上同時(shí)進(jìn)行多個(gè)通信,而無(wú)需與通信協(xié)議相關(guān)聯(lián)的傳統(tǒng)開(kāi)銷。在一個(gè)實(shí)施例中,圖1中的IPSOE和IP網(wǎng)絡(luò)100在不涉及操作系統(tǒng)內(nèi)核進(jìn)程的情況下向分布計(jì)算機(jī)系統(tǒng)的使用者提供零處理器復(fù)制數(shù)據(jù)傳輸,并且采用硬件來(lái)提供可靠、容錯(cuò)的通信。
如圖1所示,路由器117連至與其他主機(jī)或其他路由器的廣域網(wǎng)(WAN)和/或局域網(wǎng)(LAN)連接。
在本例中,圖1中的RAID子系統(tǒng)節(jié)點(diǎn)106包括處理器168、存儲(chǔ)器170、IP集卸載引擎(IPSOE)172、以及多個(gè)冗余和/或條式(striped)存儲(chǔ)盤單元174。
IP網(wǎng)絡(luò)100處理用于存儲(chǔ)、處理器間通信、文件訪問(wèn)和套接字的數(shù)據(jù)通信。IP網(wǎng)絡(luò)100支持高帶寬、可擴(kuò)展和極其低延遲的通信。用戶客戶可以繞過(guò)操作系統(tǒng)內(nèi)核進(jìn)程,直接訪問(wèn)網(wǎng)絡(luò)通信組件如IPSOE,這就允許高效的消息傳遞協(xié)議。IP網(wǎng)絡(luò)100適于當(dāng)前計(jì)算模型,并且是新形式的存儲(chǔ)、群集(cluster)和通用網(wǎng)絡(luò)化通信的構(gòu)建塊。此外,圖1中的IP網(wǎng)絡(luò)100允許存儲(chǔ)節(jié)點(diǎn)在它們之間通信,或者與分布計(jì)算機(jī)系統(tǒng)中的任何或所有處理器節(jié)點(diǎn)通信。在存儲(chǔ)設(shè)備連至IP網(wǎng)絡(luò)100的情況下,存儲(chǔ)節(jié)點(diǎn)大致具有與IP網(wǎng)絡(luò)100中的任何主機(jī)處理器節(jié)點(diǎn)相同的通信能力。
在一個(gè)實(shí)施例中,圖1所示的IP網(wǎng)絡(luò)100支持通道語(yǔ)義和存儲(chǔ)器語(yǔ)義。通道語(yǔ)義有時(shí)稱作發(fā)送/接收或推送(push)通信操作。通道語(yǔ)義是在傳統(tǒng)I/O通道中采用的通信類型,其中,源端設(shè)備推送數(shù)據(jù),并且目的端設(shè)備確定數(shù)據(jù)的最終目的地。在通道語(yǔ)義中,從源進(jìn)程傳輸?shù)膸付康倪M(jìn)程的通信端口,但是不指定幀將要寫入的目的進(jìn)程存儲(chǔ)器空間位置。因此,在通道語(yǔ)義中,目的進(jìn)程預(yù)先分配將傳輸數(shù)據(jù)置于何處。
在存儲(chǔ)器語(yǔ)義中,源進(jìn)程直接讀取或?qū)懭脒h(yuǎn)端節(jié)點(diǎn)目的進(jìn)程的虛擬地址空間。遠(yuǎn)端目的進(jìn)程僅需要與數(shù)據(jù)緩沖區(qū)的位置進(jìn)行通信,并且不需要涉及任何數(shù)據(jù)傳輸。因此,在存儲(chǔ)器語(yǔ)義中,源進(jìn)程發(fā)送包含目的進(jìn)程的目的緩沖區(qū)存儲(chǔ)器地址的數(shù)據(jù)幀。在存儲(chǔ)器語(yǔ)義中,目的進(jìn)程先前向源進(jìn)程授予存取其存儲(chǔ)器的權(quán)限。
對(duì)于存儲(chǔ)、群集和通用網(wǎng)絡(luò)化通信,通道語(yǔ)義和存儲(chǔ)器語(yǔ)義典型地都是必要的。典型的存儲(chǔ)操作采用通道和存儲(chǔ)器語(yǔ)義的組合。在圖1所示的分布計(jì)算機(jī)系統(tǒng)的存儲(chǔ)操作示例中,主機(jī)處理器節(jié)點(diǎn)如主機(jī)處理器節(jié)點(diǎn)102通過(guò)使用通道語(yǔ)義發(fā)起存儲(chǔ)操作,以將盤寫入命令發(fā)送到RAID子系統(tǒng)IPSOE 172。RAID子系統(tǒng)檢查命令,并且使用存儲(chǔ)器語(yǔ)義來(lái)直接從主機(jī)處理器節(jié)點(diǎn)的存儲(chǔ)器空間讀取數(shù)據(jù)緩沖區(qū)。在讀取數(shù)據(jù)緩沖區(qū)之后,RAID子系統(tǒng)采用通道語(yǔ)義將I/O完成消息推送回到主機(jī)處理器節(jié)點(diǎn)。
在一個(gè)示例性實(shí)施例中,圖1所示的分布計(jì)算機(jī)系統(tǒng)執(zhí)行采用虛擬地址和虛擬存儲(chǔ)器保護(hù)機(jī)制的操作以確保對(duì)所有存儲(chǔ)器的正確和適當(dāng)存取。運(yùn)行在該分布計(jì)算機(jī)系統(tǒng)中的應(yīng)用程序?qū)τ谌魏尾僮鞫疾恍枰褂梦锢韺ぶ贰?br>
下一步參照?qǐng)D2,示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的主機(jī)處理器節(jié)點(diǎn)的功能方框圖。主機(jī)處理器節(jié)點(diǎn)200是主機(jī)處理器節(jié)點(diǎn)的例子,如圖1中的主機(jī)處理器節(jié)點(diǎn)102。在本例中,圖2所示的主機(jī)處理器節(jié)點(diǎn)200包括一組使用者202-208,它們是在主機(jī)處理器節(jié)點(diǎn)200上執(zhí)行的進(jìn)程。主機(jī)處理器節(jié)點(diǎn)200還包括IP集卸載引擎(IPSOE)210和IPSOE 212。IPSOE 210包含端口214和216,而IPSOE 212包含端口218和220。各端口連接到一個(gè)鏈路。這些端口可以連接到一個(gè)IP網(wǎng)絡(luò)子網(wǎng)或多個(gè)IP網(wǎng)絡(luò)子網(wǎng),如圖1中的IP網(wǎng)絡(luò)100。
使用者202-208通過(guò)動(dòng)詞接口222以及消息和數(shù)據(jù)服務(wù)224將消息傳輸?shù)絀P網(wǎng)絡(luò)。動(dòng)詞接口在本質(zhì)上是IP集卸載引擎功能的抽象描述。操作系統(tǒng)可以通過(guò)其編程接口暴露一些或全部動(dòng)詞功能?;旧?,該接口定義主機(jī)的行為。另外,主機(jī)處理器節(jié)點(diǎn)200包括消息和數(shù)據(jù)服務(wù)224,它是比動(dòng)詞層更高的高層接口,并且用來(lái)處理通過(guò)IPSOE 210和IPSOE 212接收的消息和數(shù)據(jù)。消息和數(shù)據(jù)服務(wù)224向使用者202-208提供一個(gè)接口來(lái)處理消息和其他數(shù)據(jù)。
現(xiàn)在參照?qǐng)D3A,示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的IP集卸載引擎的圖。圖3A所示的IP集卸載引擎300A包括一組隊(duì)列對(duì)(QP)302A-310A,它們用來(lái)將消息傳輸?shù)絀PSOE端口312A-316A。對(duì)IPSOE端口312A-316A進(jìn)行數(shù)據(jù)緩沖使用網(wǎng)絡(luò)層的服務(wù)質(zhì)量字段(QOSF)例如IP版本6規(guī)范中的通信類(Traffic Class)字段來(lái)引導(dǎo)(channel)。各網(wǎng)絡(luò)層服務(wù)質(zhì)量字段具有其自己的流控。網(wǎng)際工程任務(wù)組(IETF)標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議用來(lái)配置連接到網(wǎng)絡(luò)的所有IP集卸載引擎端口的鏈路和網(wǎng)絡(luò)地址。兩個(gè)這樣的協(xié)議是地址解析協(xié)議(ARP)和動(dòng)態(tài)主機(jī)配置協(xié)議。存儲(chǔ)器轉(zhuǎn)換和保護(hù)(MTP)338A是將虛擬地址轉(zhuǎn)換成物理地址并且驗(yàn)證存取權(quán)限的機(jī)制。直接存儲(chǔ)器存取(DMA)340A支持使用存儲(chǔ)器350A對(duì)于隊(duì)列對(duì)302A-310A的直接存儲(chǔ)器存取操作。
單個(gè)IP集卸載引擎如圖3A所示的IPSOE 300A可以支持上千隊(duì)列對(duì)。各隊(duì)列對(duì)包括發(fā)送工作隊(duì)列(SWQ)和接收工作隊(duì)列(RWQ)。發(fā)送工作隊(duì)列用來(lái)發(fā)送通道和存儲(chǔ)器語(yǔ)義消息。接收工作隊(duì)列接收通道語(yǔ)義消息。使用者調(diào)用在此稱作“動(dòng)詞”的特定于操作系統(tǒng)的編程接口,以將工作請(qǐng)求(WR)放置到工作隊(duì)列中。
圖3B示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的交換機(jī)300B。交換機(jī)300B包括通過(guò)鏈路或網(wǎng)絡(luò)層服務(wù)質(zhì)量字段如IP版本4的服務(wù)類型字段306B與多個(gè)端口304B通信的幀中繼器302B。交換機(jī)如交換機(jī)300B一般可以通過(guò)路由選擇將幀從一個(gè)端口傳送到同一交換機(jī)上的任何其他端口。
類似地,圖3C示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的路由器300C。路由器300C包括通過(guò)網(wǎng)絡(luò)層服務(wù)質(zhì)量字段如IP版本4的服務(wù)類型字段306C與多個(gè)端口304C通信的幀中繼器302C。如同交換機(jī)300B,路由器300C一般將能夠通過(guò)路由選擇將幀從一個(gè)端口傳送到同一路由器上的任何其他端口。
現(xiàn)在參照?qǐng)D4,示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的工作請(qǐng)求處理的圖。在圖4中,存在接收工作隊(duì)列400、發(fā)送工作隊(duì)列402和完成隊(duì)列404用于處理使用者406的來(lái)往請(qǐng)求。來(lái)自使用者406的這些請(qǐng)求最終發(fā)送到硬件408。在本例中,使用者406產(chǎn)生工作請(qǐng)求410和412,并且接收工作完成信息414。如圖4所示,放置在工作隊(duì)列中的工作請(qǐng)求稱作工作隊(duì)列元素(WQE)。
發(fā)送工作隊(duì)列402包含工作隊(duì)列元素(WQE)422-428,描述要在IP網(wǎng)絡(luò)結(jié)構(gòu)上傳輸?shù)臄?shù)據(jù)。接收工作隊(duì)列400包含工作隊(duì)列元素(WQE)416-420,描述將來(lái)自IP網(wǎng)絡(luò)結(jié)構(gòu)的進(jìn)入通道語(yǔ)義數(shù)據(jù)置于何處。工作隊(duì)列元素由IPSOE中的硬件408進(jìn)行處理。
動(dòng)詞還提供用于從完成隊(duì)列404中提取完成工作的機(jī)制。如圖4所示,完成隊(duì)列404包含完成隊(duì)列元素(CQE)430-436。完成隊(duì)列元素包含有關(guān)先前完成的工作隊(duì)列元素的信息。完成隊(duì)列404用來(lái)為多個(gè)隊(duì)列對(duì)創(chuàng)建單個(gè)完成通知點(diǎn)。完成隊(duì)列元素是完成隊(duì)列中的數(shù)據(jù)結(jié)構(gòu)。該元素描述完成工作隊(duì)列元素。完成隊(duì)列元素包含足夠信息來(lái)確定隊(duì)列對(duì)和所完成的特定工作隊(duì)列元素。完成隊(duì)列上下文是包含管理各個(gè)完成隊(duì)列所需的指針、長(zhǎng)度和其他信息的信息塊。
被支持用于圖4所示的發(fā)送工作隊(duì)列402的示例工作請(qǐng)求如下所述。發(fā)送工作請(qǐng)求是將一組本地?cái)?shù)據(jù)段推送到由遠(yuǎn)端節(jié)點(diǎn)的接收工作隊(duì)列元素引用的數(shù)據(jù)段的通道語(yǔ)義操作。例如,工作隊(duì)列元素428包含對(duì)數(shù)據(jù)段4 438、數(shù)據(jù)段5 440和數(shù)據(jù)段6 442的引用。發(fā)送工作請(qǐng)求的數(shù)據(jù)段均包含部分虛擬連續(xù)存儲(chǔ)器區(qū)域。用來(lái)引用本地?cái)?shù)據(jù)段的虛擬地址位于創(chuàng)建本地隊(duì)列對(duì)的進(jìn)程的地址上下文中。
遠(yuǎn)端直接存儲(chǔ)器存取(RDMA)讀取工作請(qǐng)求提供一種存儲(chǔ)器語(yǔ)義操作來(lái)讀取遠(yuǎn)端節(jié)點(diǎn)上的虛擬連續(xù)存儲(chǔ)器空間。存儲(chǔ)器空間可以是存儲(chǔ)器區(qū)域的一部分或存儲(chǔ)器窗口的一部分。存儲(chǔ)器區(qū)域引用先前登記的由虛擬地址和長(zhǎng)度定義的虛擬連續(xù)存儲(chǔ)器地址集。存儲(chǔ)器窗口引用已綁定到先前登記區(qū)域的虛擬連續(xù)存儲(chǔ)器地址集。
RDMA讀取工作請(qǐng)求讀取遠(yuǎn)端端節(jié)點(diǎn)上的虛擬連續(xù)存儲(chǔ)器空間,并且將數(shù)據(jù)寫入到虛擬連續(xù)本地存儲(chǔ)器空間。類似于發(fā)送工作請(qǐng)求,由RDMA讀取工作隊(duì)列元素用來(lái)引用本地?cái)?shù)據(jù)段的虛擬地址位于創(chuàng)建本地隊(duì)列對(duì)的進(jìn)程的地址上下文中。遠(yuǎn)端虛擬地址位于由RDMA讀取工作隊(duì)列元素把其作為目標(biāo)的遠(yuǎn)端隊(duì)列對(duì)所屬進(jìn)程的地址上下文中。
RDMA寫入工作隊(duì)列元素提供一種存儲(chǔ)器語(yǔ)義操作來(lái)寫入遠(yuǎn)端節(jié)點(diǎn)上的虛擬連續(xù)存儲(chǔ)器空間。例如,接收工作隊(duì)列400中的工作隊(duì)列元素416引用數(shù)據(jù)段1 444、數(shù)據(jù)段2 446和數(shù)據(jù)段3 448。RDMA寫入工作隊(duì)列元素包含本地虛擬連續(xù)存儲(chǔ)器空間的分散列表和將本地存儲(chǔ)器空間寫入其中的遠(yuǎn)端存儲(chǔ)器空間的虛擬地址。
RDMA FetchOp(提取操作)工作隊(duì)列元素提供一種存儲(chǔ)器語(yǔ)義操作來(lái)對(duì)遠(yuǎn)端字執(zhí)行原子操作。RDMA FetchOp工作隊(duì)列元素是組合RDMA讀取、修改和RDMA寫入操作。RDMA FetchOp工作隊(duì)列元素可以支持若干讀取-修改-寫入操作,例如比較并且如果相等則交換。RDMA FetchOp不包括在基于IP標(biāo)準(zhǔn)化方向的當(dāng)前RDMA中,但是在此進(jìn)行描述,因?yàn)樗梢杂米髂承?shí)現(xiàn)中的增值特性。
綁定(去綁定)遠(yuǎn)端存取鍵(STag)工作隊(duì)列元素將一個(gè)命令提供給IP集卸載引擎硬件,以通過(guò)將存儲(chǔ)器窗口與一個(gè)存儲(chǔ)器區(qū)域進(jìn)行關(guān)聯(lián)(斷開(kāi)關(guān)聯(lián))來(lái)更改(銷毀)存儲(chǔ)器窗口。STag是各RDMA存取的一部分,并且用來(lái)驗(yàn)證遠(yuǎn)端進(jìn)程準(zhǔn)許訪問(wèn)緩沖區(qū)。
在一個(gè)實(shí)施例中,圖4所示的接收工作隊(duì)列400僅支持一種工作隊(duì)列元素,它稱作接收工作隊(duì)列元素。接收工作隊(duì)列元素提供一種通道語(yǔ)義操作來(lái)描述將進(jìn)入發(fā)送消息寫入其中的本地存儲(chǔ)器空間。接收工作隊(duì)列元素包括描述若干虛擬連續(xù)存儲(chǔ)器空間的分散列表。進(jìn)入發(fā)送消息寫入到這些存儲(chǔ)器空間。這些虛擬地址位于創(chuàng)建本地隊(duì)列對(duì)的進(jìn)程的地址上下文中。
對(duì)于處理器間通信,用戶模式軟件進(jìn)程直接從緩沖區(qū)駐留在存儲(chǔ)器中的位置通過(guò)隊(duì)列對(duì)傳輸數(shù)據(jù)。在一個(gè)實(shí)施例中,通過(guò)隊(duì)列對(duì)的傳輸繞過(guò)操作系統(tǒng),并且占用很少主機(jī)指令循環(huán)。隊(duì)列對(duì)允許不涉及操作系統(tǒng)內(nèi)核的情況下的零處理器復(fù)制數(shù)據(jù)傳輸。零處理器復(fù)制數(shù)據(jù)傳輸提供高帶寬和低延遲通信的高效支持。
當(dāng)創(chuàng)建隊(duì)列對(duì)時(shí),隊(duì)列對(duì)設(shè)為提供所選類型的傳輸服務(wù)。在一個(gè)實(shí)施例中,實(shí)現(xiàn)本發(fā)明的分布計(jì)算機(jī)系統(tǒng)支持三種傳輸服務(wù)TCP、SCTP和UDP。
TCP和SCTP將本地隊(duì)列對(duì)與一個(gè)且僅與一個(gè)遠(yuǎn)端隊(duì)列對(duì)相關(guān)聯(lián)。TCP和SCTP需要一個(gè)進(jìn)程為它要通過(guò)IP網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行通信的每個(gè)進(jìn)程創(chuàng)建一個(gè)隊(duì)列對(duì)。因此,如果N個(gè)主機(jī)處理器節(jié)點(diǎn)均包含P個(gè)進(jìn)程,并且各節(jié)點(diǎn)上的所有P個(gè)進(jìn)程都希望與所有其他節(jié)點(diǎn)上的所有進(jìn)程進(jìn)行通信,則每個(gè)主機(jī)處理器節(jié)點(diǎn)需要P2×(N-1)個(gè)隊(duì)列對(duì)。而且,進(jìn)程可以將一個(gè)隊(duì)列對(duì)與同一IPSOE上的另一隊(duì)列對(duì)相關(guān)聯(lián)。
采用TCP或SCTP在分布進(jìn)程之間通信的分布計(jì)算機(jī)系統(tǒng)的一部分在總體上如圖5所示。圖5的分布計(jì)算機(jī)系統(tǒng)500包括主機(jī)處理器節(jié)點(diǎn)1、主機(jī)處理器節(jié)點(diǎn)2和主機(jī)處理器節(jié)點(diǎn)3。主機(jī)處理器節(jié)點(diǎn)1包括進(jìn)程A 510。主機(jī)處理器節(jié)點(diǎn)2包括進(jìn)程C 520和進(jìn)程D 530。主機(jī)處理器節(jié)點(diǎn)3包括進(jìn)程E 540。
主機(jī)處理器節(jié)點(diǎn)1包括隊(duì)列對(duì)4、6和7,它們均具有發(fā)送工作隊(duì)列和接收工作隊(duì)列。主機(jī)處理器節(jié)點(diǎn)2具有隊(duì)列對(duì)9,并且主機(jī)處理器節(jié)點(diǎn)3具有隊(duì)列對(duì)2和5。分布計(jì)算機(jī)系統(tǒng)500的TCP或SCTP將本地隊(duì)列對(duì)與一個(gè)且僅與一個(gè)遠(yuǎn)端隊(duì)列對(duì)相關(guān)聯(lián)。因此,隊(duì)列對(duì)4用來(lái)與隊(duì)列對(duì)2通信;隊(duì)列對(duì)7用來(lái)與隊(duì)列對(duì)5通信;并且隊(duì)列對(duì)6用來(lái)與隊(duì)列對(duì)9通信。
置于一個(gè)發(fā)送隊(duì)列中的WQE采用TCP或SCTP使數(shù)據(jù)寫入到由相關(guān)隊(duì)列對(duì)的接收WQE引用的接收存儲(chǔ)器空間中。RDMA操作工作于相關(guān)隊(duì)列對(duì)的地址空間。
在本發(fā)明的一個(gè)實(shí)施例中,TCP或SCTP由于硬件維護(hù)順序號(hào)并且確認(rèn)所有幀傳輸而變得可靠。硬件和IP網(wǎng)絡(luò)驅(qū)動(dòng)程序軟件的組合重試任何失敗通信。隊(duì)列對(duì)的進(jìn)程客戶即使在出現(xiàn)比特錯(cuò)誤、接收欠載和網(wǎng)絡(luò)堵塞的情況下也獲得可靠的通信。如果IP網(wǎng)絡(luò)結(jié)構(gòu)中存在替代路徑,則即使在交換機(jī)結(jié)構(gòu)、鏈路或IP集卸載引擎端口出現(xiàn)故障的情況下也可以保持可靠的通信。
另外,可以采用確認(rèn)來(lái)可靠地跨越IP網(wǎng)絡(luò)結(jié)構(gòu)傳送數(shù)據(jù)。確認(rèn)可以是或可以不是進(jìn)程級(jí)別確認(rèn),即驗(yàn)證接收進(jìn)程已使用數(shù)據(jù)的確認(rèn)?;蛘?,確認(rèn)可以是僅表示數(shù)據(jù)已到達(dá)其目的端的信息。
用戶數(shù)據(jù)報(bào)協(xié)議是無(wú)連接的。UDP由管理應(yīng)用程序用來(lái)發(fā)現(xiàn)新交換機(jī)、路由器和端節(jié)點(diǎn)并且將它們整合到給定分布計(jì)算機(jī)系統(tǒng)中。UDP不提供TCP或SCTP的可靠性保證。因此,UDP在每個(gè)端節(jié)點(diǎn)維護(hù)較少狀態(tài)信息的情況下工作。
下一步參照?qǐng)D6,示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的數(shù)據(jù)幀示例。數(shù)據(jù)幀是根據(jù)路由選擇通過(guò)IP網(wǎng)絡(luò)結(jié)構(gòu)的信息單元。數(shù)據(jù)幀是端節(jié)點(diǎn)到端節(jié)點(diǎn)構(gòu)造,因此由端節(jié)點(diǎn)創(chuàng)建和使用。對(duì)于送往IPSOE的幀,數(shù)據(jù)幀既不由IP網(wǎng)絡(luò)結(jié)構(gòu)中的交換機(jī)和路由器產(chǎn)生,也不由其使用。相反,對(duì)于送往IPSOE的數(shù)據(jù)幀,交換機(jī)和路由器簡(jiǎn)單地將請(qǐng)求幀或確認(rèn)幀移近最終目的端,從而在進(jìn)程中修改鏈路首標(biāo)字段。當(dāng)幀跨越子網(wǎng)邊界時(shí),路由器可以修改幀的網(wǎng)絡(luò)首標(biāo)。在穿越子網(wǎng)中,單幀停留在單個(gè)服務(wù)級(jí)別上。
消息數(shù)據(jù)600包含數(shù)據(jù)段1 602、數(shù)據(jù)段2 604和數(shù)據(jù)段3 606,它們類似于圖4所示的數(shù)據(jù)段。在本例中,這些數(shù)據(jù)段形成置于數(shù)據(jù)幀612內(nèi)的幀有效載荷610中的幀608。另外,數(shù)據(jù)幀612包含用于錯(cuò)誤校驗(yàn)的循環(huán)冗余校驗(yàn)(CRC)614。另外,數(shù)據(jù)幀612中還有路由首標(biāo)616和傳輸首標(biāo)618。路由首標(biāo)616用來(lái)標(biāo)識(shí)數(shù)據(jù)幀612的源和目的端口。本例中的傳輸首標(biāo)618指定數(shù)據(jù)幀612的順序號(hào)以及源和目的端口號(hào)。當(dāng)建立通信時(shí),對(duì)順序號(hào)進(jìn)行初始化,并且它對(duì)于幀首標(biāo)、DDP/RDMA首標(biāo)、數(shù)據(jù)有效載荷和CRC的每一字節(jié)增1。本例中的幀首標(biāo)620指定與幀相關(guān)聯(lián)的目的隊(duì)列對(duì)號(hào)以及直接數(shù)據(jù)放置和/或遠(yuǎn)端直接存儲(chǔ)器存取(DDP/RDMA)首標(biāo)與數(shù)據(jù)有效載荷加上CRC的長(zhǎng)度。DDP/RDMA首標(biāo)622指定數(shù)據(jù)有效載荷的消息標(biāo)識(shí)符和放置信息。消息標(biāo)識(shí)符對(duì)于作為消息一部分的所有幀均不變。示例消息標(biāo)識(shí)符例如包括發(fā)送、寫入RDMA和讀取RDMA。
在圖7中,示出分布計(jì)算機(jī)系統(tǒng)700的一部分來(lái)闡述示例請(qǐng)求和確認(rèn)事務(wù)。圖7中的分布計(jì)算機(jī)系統(tǒng)700包括運(yùn)行進(jìn)程A 716的主機(jī)處理器節(jié)點(diǎn)702和運(yùn)行進(jìn)程B 718的主機(jī)處理器節(jié)點(diǎn)704。主機(jī)處理器節(jié)點(diǎn)702包括IPSOE 706。主機(jī)處理器節(jié)點(diǎn)704包括IPSOE 708。圖7中的分布計(jì)算機(jī)系統(tǒng)包括IP網(wǎng)絡(luò)結(jié)構(gòu)710,它包括交換機(jī)712和交換機(jī)714。IP網(wǎng)絡(luò)結(jié)構(gòu)包括將IPSOE 706連至交換機(jī)712的鏈路;將交換機(jī)712連至交換機(jī)714的鏈路;以及將IPSOE 708連至交換機(jī)714的鏈路。
在示例事務(wù)中,主機(jī)處理器節(jié)點(diǎn)702包括客戶進(jìn)程A。主機(jī)處理器節(jié)點(diǎn)704包括客戶進(jìn)程B??蛻暨M(jìn)程A通過(guò)包括發(fā)送隊(duì)列724和接收隊(duì)列726的隊(duì)列對(duì)23 720與主機(jī)IPSOE 706交互??蛻暨M(jìn)程B通過(guò)隊(duì)列對(duì)24 722與主機(jī)IPSOE 708交互。隊(duì)列對(duì)23和24是包括發(fā)送工作隊(duì)列和接收工作隊(duì)列的數(shù)據(jù)結(jié)構(gòu)。
進(jìn)程A通過(guò)將工作隊(duì)列元素投遞到隊(duì)列對(duì)23的發(fā)送隊(duì)列來(lái)發(fā)起一個(gè)消息請(qǐng)求。該工作隊(duì)列元素如圖4所示??蛻暨M(jìn)程A的消息請(qǐng)求由包含在發(fā)送工作隊(duì)列元素中的聚集列表(gather list)引用。聚集列表中的各數(shù)據(jù)段指向虛擬連續(xù)本地存儲(chǔ)器區(qū)域的一部分,它包含消息的一部分,如圖4中分別保存消息部分1、2和3的數(shù)據(jù)段1、2和3所示。
主機(jī)IPSOE 706中的硬件讀取工作隊(duì)列元素,并且將存儲(chǔ)在虛擬連續(xù)緩沖區(qū)中的消息分段為多個(gè)數(shù)據(jù)幀如圖6所示的數(shù)據(jù)幀。數(shù)據(jù)幀根據(jù)路由選擇通過(guò)IP網(wǎng)絡(luò)結(jié)構(gòu),并且對(duì)于可靠傳輸服務(wù),由最終目的端節(jié)點(diǎn)進(jìn)行確認(rèn)。如果沒(méi)有成功確認(rèn),則數(shù)據(jù)幀由源端節(jié)點(diǎn)進(jìn)行重新傳輸。數(shù)據(jù)幀由源端節(jié)點(diǎn)產(chǎn)生,并且由目的端節(jié)點(diǎn)使用。
參照?qǐng)D8,示出本發(fā)明的用于分布網(wǎng)絡(luò)系統(tǒng)中的網(wǎng)絡(luò)尋址的圖。主機(jī)名提供主機(jī)節(jié)點(diǎn)如主機(jī)處理器節(jié)點(diǎn)或I/O適配器節(jié)點(diǎn)的邏輯標(biāo)識(shí)。主機(jī)名標(biāo)識(shí)消息端點(diǎn),從而使消息送往駐留在由主機(jī)名指定的端節(jié)點(diǎn)上的進(jìn)程。因此,對(duì)于每一節(jié)點(diǎn),都存在一個(gè)主機(jī)名,但是一個(gè)節(jié)點(diǎn)可以具有多個(gè)IPSOE。
單個(gè)鏈路層地址(例如,以太網(wǎng)介質(zhì)訪問(wèn)層地址)804分配給端節(jié)點(diǎn)組件802的各端口806。組件可以是IPSOE、交換機(jī)或路由器。所有IPSOE和路由器組件都必須具有一個(gè)MAC地址。交換機(jī)上的介質(zhì)訪問(wèn)點(diǎn)也分配有一個(gè)MAC地址。
一個(gè)網(wǎng)絡(luò)地址(例如,IP地址)812分配給端節(jié)點(diǎn)組件802的各端口806。組件可以是IPSOE、交換機(jī)或路由器。所有IPSOE和路由器組件必須具有一個(gè)網(wǎng)絡(luò)地址。交換機(jī)上的介質(zhì)訪問(wèn)點(diǎn)也分配有一個(gè)MAC地址。
交換機(jī)810的各端口沒(méi)有與之相關(guān)聯(lián)的鏈路層地址。然而,交換機(jī)810可以具有介質(zhì)訪問(wèn)端口814,其中,介質(zhì)訪問(wèn)端口814具有與之相關(guān)聯(lián)的鏈路層地址808和網(wǎng)絡(luò)層地址816。
圖9示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的分布計(jì)算機(jī)系統(tǒng)的一部分。分布計(jì)算機(jī)系統(tǒng)900包括子網(wǎng)902和子網(wǎng)904。子網(wǎng)902包括主機(jī)處理器節(jié)點(diǎn)906、908和910。子網(wǎng)904包括主機(jī)處理器節(jié)點(diǎn)912和914。子網(wǎng)902包括交換機(jī)916和918。子網(wǎng)904包括交換機(jī)920和922。
路由器創(chuàng)建并連接子網(wǎng)。例如,子網(wǎng)902通過(guò)路由器924和926連接到子網(wǎng)904。在一個(gè)示例實(shí)施例中,子網(wǎng)具有最大216個(gè)端節(jié)點(diǎn)、交換機(jī)和路由器。
子網(wǎng)被定義為作為單個(gè)單元管理的一組端節(jié)點(diǎn)和級(jí)聯(lián)交換機(jī)。典型地,子網(wǎng)占據(jù)單個(gè)地理或功能區(qū)域。例如,一個(gè)房屋內(nèi)的單個(gè)計(jì)算機(jī)系統(tǒng)可以被定義為子網(wǎng)。在一個(gè)實(shí)施例中,子網(wǎng)中的交換機(jī)可以對(duì)消息執(zhí)行非??斓南x(chóng)孔(wormhole)或直通(cut-through)路由選擇。
子網(wǎng)內(nèi)的交換機(jī)檢查在子網(wǎng)內(nèi)唯一的目的端鏈路層地址(例如,MAC地址)以允許交換機(jī)快速且高效地對(duì)進(jìn)入消息幀執(zhí)行路由選擇。在一個(gè)實(shí)施例中,交換機(jī)是相對(duì)簡(jiǎn)單的電路,并且典型地被實(shí)現(xiàn)為單個(gè)集成電路。子網(wǎng)可以具有由級(jí)聯(lián)交換機(jī)形成的成百上千個(gè)端節(jié)點(diǎn)。
如圖9所示,為擴(kuò)展成大得多的系統(tǒng),子網(wǎng)通過(guò)路由器如路由器924和926來(lái)連接。路由器解釋目的端網(wǎng)絡(luò)層地址(例如,IP地址)和對(duì)幀執(zhí)行路由選擇。
交換機(jī)的一個(gè)示例實(shí)施例在總體上如圖3B所示。交換機(jī)或路由器上的每個(gè)I/O路徑均具有一個(gè)端口。通常,交換機(jī)可以通過(guò)路由選擇將幀從一個(gè)端口傳送到同一交換機(jī)上的任何其他端口。
在子網(wǎng)如子網(wǎng)902或子網(wǎng)904內(nèi),從源端口到目的端口的路徑由目的端主機(jī)IPSOE端口的鏈路層地址(例如,MAC地址)來(lái)確定。在子網(wǎng)之間,路徑由目的端IPSOE端口的網(wǎng)絡(luò)層地址(IP地址)和將要用來(lái)到達(dá)目的端子網(wǎng)的路由器端口的鏈路層地址(例如,MAC地址)來(lái)確定。
在一個(gè)實(shí)施例中,請(qǐng)求幀及其相應(yīng)肯定確認(rèn)(ACK)幀所用的路徑不要求是對(duì)稱的。在一個(gè)采用遺忘路由選擇的實(shí)施例中,交換機(jī)根據(jù)鏈路層地址(例如,MAC地址)選擇輸出端口。在一個(gè)實(shí)施例中,交換機(jī)對(duì)于所有其輸入端口使用一組路由判定標(biāo)準(zhǔn)。在一個(gè)示例實(shí)施例中,路由判定標(biāo)準(zhǔn)包含在一個(gè)路由表中。在另一個(gè)實(shí)施例中,交換機(jī)對(duì)于各輸入端口均采用單獨(dú)的一組標(biāo)準(zhǔn)。
本發(fā)明的分布計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)事務(wù)典型地由若干硬件和軟件步驟組成。客戶進(jìn)程數(shù)據(jù)傳輸服務(wù)可以是用戶模式或內(nèi)核模式進(jìn)程。客戶進(jìn)程通過(guò)一個(gè)或多個(gè)隊(duì)列對(duì)如圖3A、5和8所示的隊(duì)列對(duì)來(lái)訪問(wèn)IP集卸載引擎硬件??蛻暨M(jìn)程調(diào)用特定于操作系統(tǒng)的編程接口,在此稱作“動(dòng)詞”。實(shí)現(xiàn)動(dòng)詞的軟件代碼將工作隊(duì)列元素投遞到給定隊(duì)列對(duì)工作隊(duì)列。
存在多種可能的工作隊(duì)列元素投遞方法和多種可能的工作隊(duì)列元素格式,它們考慮到各種代價(jià)/性能設(shè)計(jì)點(diǎn)但不影響互操作性。然而,用戶進(jìn)程必須以完備定義的方式與動(dòng)詞進(jìn)行通信,并且必須充分指定跨越IP網(wǎng)絡(luò)結(jié)構(gòu)傳輸?shù)臄?shù)據(jù)的格式和協(xié)議,以允許設(shè)備在不同廠商環(huán)境下互操作。
在一個(gè)實(shí)施例中,IPSOE硬件檢測(cè)工作隊(duì)列元素投遞,并且訪問(wèn)工作隊(duì)列元素。在該實(shí)施例中,IPSOE硬件轉(zhuǎn)換并驗(yàn)證工作隊(duì)列元素的虛擬地址,并且訪問(wèn)數(shù)據(jù)。
外出消息拆分成一個(gè)或多個(gè)數(shù)據(jù)幀。在一個(gè)實(shí)施例中,IPSOE硬件將DDP/RDMA首標(biāo)、幀首標(biāo)和CRC、傳輸首標(biāo)和網(wǎng)絡(luò)首標(biāo)添加到各幀。傳輸首標(biāo)包括順序號(hào)和其他傳輸信息。網(wǎng)絡(luò)首標(biāo)包括路由信息如目的端IP地址和其他網(wǎng)絡(luò)路由信息。鏈路首標(biāo)包含目的端鏈路層地址(例如,MAC地址)或其他本地路由信息。
如果采用TCP或SCTP,當(dāng)請(qǐng)求數(shù)據(jù)幀到達(dá)其目的端節(jié)點(diǎn)時(shí),目的端節(jié)點(diǎn)使用確認(rèn)數(shù)據(jù)幀來(lái)讓請(qǐng)求數(shù)據(jù)幀發(fā)送者知道請(qǐng)求數(shù)據(jù)幀在目的端得到驗(yàn)證和接受。確認(rèn)數(shù)據(jù)幀確認(rèn)一個(gè)或多個(gè)有效且接受的請(qǐng)求數(shù)據(jù)幀。請(qǐng)求者在接收任何確認(rèn)之前可以具有多個(gè)未決請(qǐng)求數(shù)據(jù)幀。在一個(gè)實(shí)施例中,當(dāng)創(chuàng)建隊(duì)列對(duì)時(shí),確定多個(gè)未決消息即請(qǐng)求數(shù)據(jù)幀的數(shù)目。
用于實(shí)現(xiàn)本發(fā)明的分層架構(gòu)1000的一個(gè)實(shí)施例在總體上如圖10所示。圖10的分層架構(gòu)圖示出數(shù)據(jù)通信路徑各層以及在各層之間傳遞的數(shù)據(jù)和控制信息組織。
IPSOE端節(jié)點(diǎn)協(xié)議層(例如,由端節(jié)點(diǎn)1011采用)包括由使用者1003定義的高層協(xié)議1002,傳輸層1004;網(wǎng)絡(luò)層1006,鏈路層1008,和物理層1010。交換機(jī)層(例如,由交換機(jī)1013采用)包括鏈路層1008和物理層1010。路由器層(例如,由路由器1015采用)包括網(wǎng)絡(luò)層1006、鏈路層1008和物理層1010。
分層架構(gòu)1000在總體上大致遵循經(jīng)典通信棧,從而完成在使用者1003與1005之間傳輸數(shù)據(jù)的使用者操作1012。例如,對(duì)于端節(jié)點(diǎn)1011的各協(xié)議層,高層協(xié)議1002采用動(dòng)詞在傳輸層1004創(chuàng)建消息。傳輸層1004將消息1014傳到網(wǎng)絡(luò)層1006。網(wǎng)絡(luò)層1006在網(wǎng)絡(luò)子網(wǎng)之間對(duì)幀執(zhí)行路由選擇1016。鏈路層1008在網(wǎng)絡(luò)子網(wǎng)內(nèi)對(duì)幀執(zhí)行路由選擇1018。物理層1010將比特或比特組發(fā)送到其他設(shè)備的物理層。各層不知道高層或低層如何執(zhí)行它們的功能。
使用者1003和1005表示采用其他層以在端節(jié)點(diǎn)之間通信的應(yīng)用程序或進(jìn)程。傳輸層1004提供端對(duì)端的消息移動(dòng)。在一個(gè)實(shí)施例中,傳輸層提供如上所述的四種傳輸服務(wù),它們是傳統(tǒng)TCP、基于TCP的RDMA、SCTP和UDP。網(wǎng)絡(luò)層1006執(zhí)行通過(guò)一個(gè)子網(wǎng)或多個(gè)子網(wǎng)到目的端節(jié)點(diǎn)的幀路由選擇。鏈路層1008執(zhí)行跨越鏈路的流控1020、錯(cuò)誤校驗(yàn)和優(yōu)先幀傳送。
物理層1010執(zhí)行依賴于技術(shù)的比特傳輸。比特或比特組通過(guò)鏈路1022、1024和1026在物理層之間傳遞。鏈路可以用印刷電路銅跡、銅纜、光纜或其他適當(dāng)鏈路來(lái)實(shí)現(xiàn)。
現(xiàn)在參照?qǐng)D11,提供示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的兩種存儲(chǔ)器登記機(jī)制的流程圖及圖表。在通過(guò)IPSOE登記存儲(chǔ)器區(qū)域的“傳統(tǒng)機(jī)制”(1120)中,使用者1100使用單個(gè)步驟1104來(lái)通過(guò)IPSOE登記存儲(chǔ)器區(qū)域。該單個(gè)步驟使用存儲(chǔ)器映射I/O(MMIO)、編程I/O(PIO)或者可能是直接存儲(chǔ)器存取(DMA)CPU輔助來(lái)將存儲(chǔ)器轉(zhuǎn)換和保護(hù)表(TPT)條目傳輸?shù)絀PSOE 1112的存儲(chǔ)器TPT 1108中。如果傳統(tǒng)機(jī)制使用MMIO或PIO來(lái)執(zhí)行傳輸,則使用者在能夠使用新創(chuàng)建的存儲(chǔ)器TPT之前,必須等待這些MMIO或PIO返回控制給主機(jī)CPU。依賴于具體實(shí)現(xiàn),該延遲可能降低系統(tǒng)性能。
圖11還示出基于發(fā)送隊(duì)列的物理存儲(chǔ)器登記機(jī)制1130。在該機(jī)制下,通過(guò)發(fā)送隊(duì)列的物理存儲(chǔ)器登記通過(guò)使用者用來(lái)訪問(wèn)IPSOE的動(dòng)詞來(lái)顯式暴露。使用者1140必須首先在QP中激活使用該機(jī)制。這是基于發(fā)送隊(duì)列的物理存儲(chǔ)器登記機(jī)制的第一步驟(1144)。該步驟包括設(shè)置QP上下文1148中的“激活基于發(fā)送隊(duì)列的物理存儲(chǔ)器登記”字段。在QP上下文被激活支持基于發(fā)送隊(duì)列的物理存儲(chǔ)器登記之后,(1152)使用者1140通過(guò)將發(fā)送隊(duì)列(SQ)工作請(qǐng)求(WR)投遞到IPSOE SQ之一如SQ 1164中來(lái)請(qǐng)求IPSOE 1192在存儲(chǔ)器TPT 1172中創(chuàng)建一個(gè)條目。動(dòng)詞接口立即返回與存儲(chǔ)器登記WR相關(guān)聯(lián)的STag,將存儲(chǔ)器登記WR轉(zhuǎn)換成SQ工作隊(duì)列元素(WQE)1160,并且將存儲(chǔ)器登記WQE放置到SQ 1164中(步驟1156)。當(dāng)接收到立即返回時(shí),使用者1140可以開(kāi)始在置于同一SQ 1164中的本地或遠(yuǎn)端WR中使用該STag。
當(dāng)IPSOE 1192的SQ 1164處理物理存儲(chǔ)器登記WQE 1160時(shí),它驗(yàn)證存儲(chǔ)器登記WQE。如果QP已激活基于發(fā)送隊(duì)列的物理存儲(chǔ)器登記機(jī)制并且STag有效(例如,STag指向存儲(chǔ)器TPT的一個(gè)條目,STagTag_Instance(標(biāo)記實(shí)例)匹配該條目中的Tag_Instance,并且存儲(chǔ)器TPT有足夠的空間用于新條目),則創(chuàng)建新的存儲(chǔ)器TPT條目1172(步驟1168)。
如果存儲(chǔ)器登記WQE遇到錯(cuò)誤(例如,STag不指向存儲(chǔ)器TPT的一個(gè)條目,或者STag Tag_Instance不匹配STag所指向的條目中的Tag_Instance,或者STag所指向的條目沒(méi)有足夠的空間用于新存儲(chǔ)器TPT條目),則可以采取兩種語(yǔ)義選項(xiàng)來(lái)實(shí)現(xiàn)。選項(xiàng)1(步驟1174)是反應(yīng)性(reactive)的,并且假定使用者1140不清楚存儲(chǔ)器TPT空間。如果IPSOE實(shí)現(xiàn)使用選項(xiàng)1,則執(zhí)行下面過(guò)程IPSOE將與SQ相關(guān)聯(lián)的QP置于發(fā)送隊(duì)列耗盡狀態(tài),停止處理存儲(chǔ)器登記WQE 1160之后的WQE(但是繼續(xù)處理所有RQ WQE、所有進(jìn)入RDMA讀取請(qǐng)求、任何終止消息和所有以前SQ WQE),產(chǎn)生標(biāo)識(shí)存儲(chǔ)器登記WQE中的錯(cuò)誤的完成錯(cuò)誤CQE 1180,將CQE 1180置于完成隊(duì)列1184中,并且通過(guò)CQ 1184對(duì)所有隨后SQ WQE返回刷新(Flush)錯(cuò)誤CQE。使用者1140可以重試以錯(cuò)誤完成的存儲(chǔ)器登記WR和所有隨后WR。
選項(xiàng)2(步驟1176)是預(yù)期性(anticipatory)的,并且假定使用者1140清楚存儲(chǔ)器TPT空間。也就是,使用者清楚IPSOE 1192正在如何使用存儲(chǔ)器TPT空間。在這一選項(xiàng)下,使用者1140僅發(fā)出保證在存儲(chǔ)器TPT中有足夠空間的存儲(chǔ)器登記WR。如果IPSOE實(shí)現(xiàn)使用選項(xiàng)2,則執(zhí)行下面過(guò)程IPSOE將與SQ相關(guān)聯(lián)的QP置于錯(cuò)誤狀態(tài),停止處理所有本地和遠(yuǎn)端操作,發(fā)出終止消息以關(guān)閉RDMA流,產(chǎn)生標(biāo)識(shí)存儲(chǔ)器登記WQE中的錯(cuò)誤的完成錯(cuò)誤CQE 1180,將CQE 1180置于完成隊(duì)列1184中,并且通過(guò)CQ 1184對(duì)所有其他SQ和RQ WQE返回刷新錯(cuò)誤CQE。
最后(步驟1188),使用者1140通過(guò)工作完成1188提取物理存儲(chǔ)器登記WR的結(jié)果。
下一步參照?qǐng)D12,示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的存儲(chǔ)器管理系統(tǒng)的圖。存儲(chǔ)器管理系統(tǒng)1200采用雙表存儲(chǔ)器轉(zhuǎn)換和保護(hù)管理結(jié)構(gòu),它包括存儲(chǔ)器區(qū)域/窗口表1202和地址轉(zhuǎn)換表1204。這兩個(gè)表合在一起稱作存儲(chǔ)器轉(zhuǎn)換和保護(hù)表(存儲(chǔ)器TPT)。存儲(chǔ)器區(qū)域/窗口表1202包含由IPSOE硬件用來(lái)判定是否被授權(quán)訪問(wèn)在工作請(qǐng)求或遠(yuǎn)端操作中引用的存儲(chǔ)器區(qū)域的信息。在本例中,訪問(wèn)可以在工作隊(duì)列1208內(nèi)的WQE數(shù)據(jù)段1206中請(qǐng)求。地址轉(zhuǎn)換表1204包含用來(lái)將在WQE數(shù)據(jù)段1206中提供的虛擬地址轉(zhuǎn)換成構(gòu)成存儲(chǔ)器區(qū)域如存儲(chǔ)器區(qū)域1210內(nèi)的數(shù)據(jù)緩沖區(qū)的頁(yè)的一個(gè)或多個(gè)實(shí)際地址的列表的信息。
當(dāng)接收到WQE數(shù)據(jù)段如WQE數(shù)據(jù)段1206時(shí),使用WQE數(shù)據(jù)段內(nèi)的鍵索引作為對(duì)存儲(chǔ)器區(qū)域/窗口表1202的索引來(lái)識(shí)別存儲(chǔ)器區(qū)域/窗口表內(nèi)的存儲(chǔ)器區(qū)域條目或存儲(chǔ)器窗口條目如存儲(chǔ)器區(qū)域條目1212或存儲(chǔ)器窗口條目1213。存儲(chǔ)器區(qū)域表?xiàng)l目1212用來(lái)判定所請(qǐng)求的存儲(chǔ)器存取對(duì)于由存儲(chǔ)器區(qū)域條目定義的存儲(chǔ)器區(qū)域是否得到授權(quán)。如果存取得到授權(quán),則訪問(wèn)地址轉(zhuǎn)換表1204。存在多個(gè)地址轉(zhuǎn)換表,其中,對(duì)于所定義的每一個(gè)存儲(chǔ)器區(qū)域/窗口,都使用一個(gè)地址轉(zhuǎn)換表。地址轉(zhuǎn)換表中的每個(gè)條目是構(gòu)成存儲(chǔ)器區(qū)域/窗口一部分的頁(yè)的實(shí)際地址。各條目以遞增的與存儲(chǔ)器區(qū)域/窗口相關(guān)聯(lián)的虛擬地址所對(duì)應(yīng)的遞增次序來(lái)排列。IPSOE硬件根據(jù)對(duì)存儲(chǔ)器區(qū)域/窗口的偏移來(lái)索引地址轉(zhuǎn)換表1204,其中,該偏移是通過(guò)從在工作請(qǐng)求或遠(yuǎn)端操作分組首標(biāo)中指定的虛擬地址1216中減去從存儲(chǔ)器區(qū)域/窗口表?xiàng)l目1212中獲得的存儲(chǔ)器區(qū)域/窗口起始虛擬地址1214來(lái)算出的。該結(jié)果形成對(duì)所要訪問(wèn)的存儲(chǔ)器區(qū)域的偏移1218。該偏移的低位比特用來(lái)索引在地址轉(zhuǎn)換表?xiàng)l目中指定的頁(yè),并且高位比特用來(lái)索引地址轉(zhuǎn)換表。在本例中,偏移1218導(dǎo)致將地址轉(zhuǎn)換成標(biāo)識(shí)頁(yè)1220-1226的實(shí)際地址,其中,頁(yè)1220-1226包含由WQE數(shù)據(jù)段1206引用的數(shù)據(jù)緩沖區(qū)。
圖13示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的存儲(chǔ)器區(qū)域/窗口表(MRWT)1300以及當(dāng)?shù)怯洿鎯?chǔ)器區(qū)域或者將存儲(chǔ)器窗口與底層存儲(chǔ)器區(qū)域綁定時(shí)分別插入的存儲(chǔ)器區(qū)域和存儲(chǔ)器窗口條目的布局。
在本例中,存儲(chǔ)器區(qū)域/窗口條目1302包括存儲(chǔ)器區(qū)域/窗口的起始虛擬地址1304,存儲(chǔ)器區(qū)域/窗口長(zhǎng)度1306、保護(hù)域1308、標(biāo)記實(shí)例(tag_instance)1310、條目類型1311、有效條目1312、訪問(wèn)控制1314、iSCSI控制1315、ATT控制1316、頁(yè)大小1318以及地址轉(zhuǎn)換指針1320。
存儲(chǔ)器區(qū)域/窗口表1300中的各條目定義存儲(chǔ)器區(qū)域或存儲(chǔ)器窗口的特征。存儲(chǔ)器區(qū)域條目(1302)用來(lái)描述存儲(chǔ)器區(qū)域。存儲(chǔ)器窗口條目(1303)用來(lái)描述存儲(chǔ)器窗口。這一節(jié)的其余部分將描述存儲(chǔ)器區(qū)域條目的內(nèi)容。除非另外指明,該描述適用于存儲(chǔ)器窗口條目,因?yàn)镸RE和MWE包含相同的字段。不過(guò),存儲(chǔ)器窗口條目可以經(jīng)過(guò)優(yōu)化來(lái)使用存儲(chǔ)器窗口所綁定的存儲(chǔ)器區(qū)域的地址轉(zhuǎn)換表。
用來(lái)引用數(shù)據(jù)緩沖區(qū)的STag的一部分稱作Tag_Index,并且這由IPSOE硬件用來(lái)索引存儲(chǔ)器區(qū)域/窗口表以獲取所要訪問(wèn)的存儲(chǔ)器區(qū)域所對(duì)應(yīng)的存儲(chǔ)器區(qū)域表?xiàng)l目(MRE)。更具體地說(shuō),STag Tag_Index用來(lái)引用存儲(chǔ)器區(qū)域。存儲(chǔ)器區(qū)域的STag包括在綁定WQE中。
存儲(chǔ)器區(qū)域的起始虛擬地址1304和存儲(chǔ)器區(qū)域的長(zhǎng)度1306定義存儲(chǔ)器區(qū)域的邊界。保護(hù)域(PD)1308用來(lái)判定發(fā)起工作隊(duì)列請(qǐng)求的QP是否具有訪問(wèn)該存儲(chǔ)器區(qū)域的權(quán)限。也就是,存儲(chǔ)在存儲(chǔ)器區(qū)域條目中的PD值必須匹配存儲(chǔ)在QP中的PD值。Tag_Instance 1310是與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記實(shí)例值,并且用來(lái)驗(yàn)證不同于Tag_Index的STag其他部分。當(dāng)存儲(chǔ)器區(qū)域的定義改變時(shí),Tag_Instance提供訪問(wèn)控制。更具體地說(shuō),使用存儲(chǔ)在該區(qū)域的存儲(chǔ)器區(qū)域條目中的Tag_Instance來(lái)驗(yàn)證STag Tag_Instance。
條目類型1311指定條目用于下列哪一個(gè)RDMA區(qū)域、RDMA窗口或iSCSI。它可以用兩個(gè)比特實(shí)現(xiàn),其中,使用三個(gè)值,并且保留一個(gè)值,或者用三個(gè)比特實(shí)現(xiàn)。
下面例子是兩比特實(shí)現(xiàn)的情況如果條目類型字段為‘00’b,則該條目用于RDMA區(qū)域;如果條目類型字段為‘01’b,則該條目用于RDMA窗口;如果條目類型字段為‘10’b,則該條目用于iSCSI區(qū)域;并且條目類型字段1‘1’b被保留未用。
如果條目用于RDMA區(qū)域(包括iSCSI-R),則存儲(chǔ)器區(qū)域的第一地址轉(zhuǎn)換表?xiàng)l目指向與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的第一物理頁(yè)的字節(jié)偏移。如果條目用于RDMA窗口(包括iSCSI-R),則存儲(chǔ)器窗口的第一地址轉(zhuǎn)換表?xiàng)l目可以作為對(duì)綁定到存儲(chǔ)器窗口的存儲(chǔ)器區(qū)域ATT的索引來(lái)實(shí)現(xiàn)。如果該條目用于iSCSI 1.0,則虛擬地址1304字段用作包含iSCSI命令的發(fā)送隊(duì)列WQE的指針,并且用于iSCSI 1.0區(qū)域的第一地址轉(zhuǎn)換表?xiàng)l目指向與iSCSI 1.0區(qū)域相關(guān)聯(lián)的第一物理頁(yè)的字節(jié)偏移。
有效條目1312表示條目是否有效。有效條目1312可以用一個(gè)比特實(shí)現(xiàn)。如果該比特置位,則條目有效,否則無(wú)效。
訪問(wèn)控制1314確定對(duì)該存儲(chǔ)器區(qū)域的寫入訪問(wèn)權(quán)限。訪問(wèn)控制1314字段包含三個(gè)子字段訪問(wèn)控制類型1330、窗口綁定控制1332以及接觸訪問(wèn)控制1334。
訪問(wèn)控制類型1330字段包含四個(gè)不同訪問(wèn)類型本地讀取、本地寫入、遠(yuǎn)端讀取以及遠(yuǎn)端寫入。這些不同訪問(wèn)類型可以用四個(gè)比特來(lái)編碼,其中,如果其中一個(gè)比特置位,則激活與該比特相關(guān)聯(lián)的訪問(wèn)類型。如果其中一個(gè)比特未置位,則禁止與該比特相關(guān)聯(lián)的訪問(wèn)類型。例如,如果本地寫入訪問(wèn)比特置位,則激活本地寫入訪問(wèn)。如果本地寫入訪問(wèn)比特未置位,則禁止本地寫入訪問(wèn)。注意如果標(biāo)準(zhǔn)規(guī)范禁止窗口用于本地訪問(wèn),則存儲(chǔ)器窗口條目將只有兩種不同訪問(wèn)類型遠(yuǎn)端讀取訪問(wèn)和遠(yuǎn)端寫入訪問(wèn)。
窗口綁定控制1332字段包含單個(gè)比特來(lái)表示存儲(chǔ)器窗口是否可以綁定到存儲(chǔ)器區(qū)域。如果該比特置位,則存儲(chǔ)器窗口可以綁定到存儲(chǔ)器區(qū)域。如果該比特未置位,則存儲(chǔ)器窗口不可以綁定到存儲(chǔ)器區(qū)域。
接觸訪問(wèn)控制1334字段包含至少兩個(gè)比特一次接觸激活比特,指定條目是否激活一次接觸;以及接觸比特,只有一次接觸激活比特置位,它才有意義,并且指定條目是否以前已被接觸。
在進(jìn)入字節(jié)流到達(dá)(line up with)與目標(biāo)為該條目的第一RDMA消息相關(guān)聯(lián)的最后段的結(jié)束之后,不能使用一次接觸條目。在進(jìn)入字節(jié)流到達(dá)與目標(biāo)為區(qū)域的第一RDMA消息相關(guān)聯(lián)的最后段的結(jié)束之后,可以使用多次接觸條目。
對(duì)于一次接觸存儲(chǔ)器區(qū)域,當(dāng)進(jìn)入字節(jié)流到達(dá)與目標(biāo)為該區(qū)域的第一RDMA消息相關(guān)聯(lián)的最后段的結(jié)束時(shí),對(duì)存儲(chǔ)器區(qū)域的有效條目1312字段復(fù)位。對(duì)于多次接觸存儲(chǔ)器區(qū)域,當(dāng)在進(jìn)入字節(jié)流到達(dá)與目標(biāo)為該區(qū)域的第一RDMA消息相關(guān)聯(lián)的最后段的結(jié)束時(shí),存儲(chǔ)器區(qū)域的有效條目1312字段不受影響。該過(guò)程的更詳細(xì)描述在圖18及附文中提供。
如果標(biāo)準(zhǔn)規(guī)范僅允許對(duì)窗口的一次接觸訪問(wèn),則一種實(shí)現(xiàn)可以選擇僅使用對(duì)存儲(chǔ)器窗口條目的一次接觸訪問(wèn)(或者可以提供對(duì)存儲(chǔ)器區(qū)域的一次接觸訪問(wèn)作為選項(xiàng))。
存儲(chǔ)DDP順序號(hào)1315用來(lái)存儲(chǔ)與DDP首標(biāo)中最后一個(gè)比特置位的DDP段的有效載荷的最后一個(gè)字節(jié)相關(guān)聯(lián)的DDP順序號(hào)。該過(guò)程的更詳細(xì)描述在圖18及附文中提供。
ATT控制1316指定ATT條目是引用物理頁(yè)地址(直接指針)、物理頁(yè)地址列表(一級(jí)間接指針)或包含ATT頁(yè)列表的間接ATT頁(yè)(二級(jí)間接指針)。地址轉(zhuǎn)換指針1212引用與該存儲(chǔ)器區(qū)域相關(guān)聯(lián)的地址轉(zhuǎn)換表。注意,引用一個(gè)物理頁(yè)的ATT第一條目可以指向?qū)υ擁?yè)的偏移。類似地,最后一個(gè)條目可以從最后一個(gè)物理頁(yè)的起點(diǎn)開(kāi)始以一定的偏移結(jié)束。
頁(yè)大小1318指定頁(yè)大小。例如,4KB、8KB、64KB、1MB、16MB和256MB以及其他可能的大小都可以是有效的頁(yè)大小,這一點(diǎn)本領(lǐng)域的技術(shù)人員清楚。
ATT條目1320指定一個(gè)或多個(gè)64比特物理地址。如果ATT控制字段1316設(shè)為直接指針1320,則各ATT條目1320指向一個(gè)物理地址。如果ATT控制字段1316設(shè)為一級(jí)間接指針1338,則各ATT條目1320指向一個(gè)物理地址列表1340。如果ATT控制字段1316設(shè)為二級(jí)間接指針1348,則各ATT條目1320指向一個(gè)ATT條目列表1350,并且ATT條目1350中的各條目指向一個(gè)物理地址列表1354。
圖14是根據(jù)本發(fā)明優(yōu)選實(shí)施例的由存儲(chǔ)器登記使用者(簡(jiǎn)稱為使用者)用來(lái)登記存儲(chǔ)器區(qū)域的過(guò)程的流程圖。首先,使用者檢查存儲(chǔ)器區(qū)域是否由具有公共地址轉(zhuǎn)換表?xiàng)l目的多個(gè)進(jìn)程共享(步驟1400)。如果存儲(chǔ)器區(qū)域不是以這種方式共享的(步驟1400否),則使用者必須創(chuàng)建存儲(chǔ)器區(qū)域表?xiàng)l目(MRTE)和地址轉(zhuǎn)換表?xiàng)l目(ATTE)。如果多個(gè)進(jìn)程使用公共地址轉(zhuǎn)換表?xiàng)l目(步驟1400是),則使用者必須使用相同ATTE而僅創(chuàng)建MRTE(步驟1412)。
現(xiàn)在參照?qǐng)D15,它是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的由IPSOE用來(lái)驗(yàn)證由使用者作為工作請(qǐng)求投遞到IPSOE工作隊(duì)列中的工作隊(duì)列元素所執(zhí)行的存儲(chǔ)器訪問(wèn)的過(guò)程的流程圖及圖表。
首先(步驟1552),使用者1540將工作請(qǐng)求投遞到IPSOE工作隊(duì)列1564中。工作隊(duì)列可以是發(fā)送隊(duì)列或接收隊(duì)列。工作請(qǐng)求包含零個(gè)或更多數(shù)據(jù)段。對(duì)于RDMA(包括iSCSI-R),各數(shù)據(jù)段包含STag、虛擬地址和長(zhǎng)度。對(duì)于iSCSI 1.0單個(gè)STag用于WR中的所有數(shù)據(jù)段;WR中的各數(shù)據(jù)段包含一個(gè)物理地址;第一數(shù)據(jù)段包含一個(gè)附加字段用來(lái)定義對(duì)第一物理頁(yè)的起始偏移;最后一個(gè)數(shù)據(jù)段也包含一個(gè)附加字段用來(lái)定義對(duì)最后一個(gè)物理頁(yè)的結(jié)束偏移;并且所有中間數(shù)據(jù)段僅包含一個(gè)物理地址,因?yàn)橹虚g頁(yè)必須以頁(yè)邊界開(kāi)始和結(jié)束。
下一步(步驟1556),動(dòng)詞接口將WR轉(zhuǎn)換成工作隊(duì)列元素(WQE),并且將WQE 1560置于WQ 1564中。
然后(步驟1568),IPSOE 1592訪問(wèn)WQE 1560。如果WQ 1564為RDMA(包括iSCSI-R)WQ,則驗(yàn)證在WQE 1560中引用的各數(shù)據(jù)段。驗(yàn)證包括下面檢查a)有效條目字段置位;b)該條目的條目類型設(shè)為區(qū)域(即,窗口不能用于本地訪問(wèn));c)與WQ 1564相關(guān)聯(lián)的QP上下文中的PD(保護(hù)域)匹配由數(shù)據(jù)段STag引用的存儲(chǔ)器區(qū)域條目1570的PD;d)作為數(shù)據(jù)段STag一部分的Tag_Instance匹配MRE 1570中的Tag_Instance;e)數(shù)據(jù)段的基址和長(zhǎng)度位于與MRE 1570相關(guān)聯(lián)的地址范圍內(nèi);f)訪問(wèn)類型有效(SQ RDMA寫入和發(fā)送WR需要本地讀取訪問(wèn);并且RQ WR需要本地寫入訪問(wèn));以及g)對(duì)于SQ綁定WR,綁定到存儲(chǔ)器窗口的MRE 1570允許窗口訪問(wèn)。注意如果WR是SQ綁定WR并且它請(qǐng)求對(duì)相關(guān)窗口設(shè)置一次接觸訪問(wèn),則當(dāng)IPSOE創(chuàng)建相關(guān)窗口時(shí),將對(duì)一次接觸訪問(wèn)比特置位。
如果WQ是iSCSI 1.0 WQE,則使用在WQE中提供的STag來(lái)根據(jù)在WQE中提供的數(shù)據(jù)段列表創(chuàng)建iSCSI存儲(chǔ)器區(qū)域。iSCSI 1.0存儲(chǔ)器區(qū)域從零開(kāi)始引用,因?yàn)樗鼈儧](méi)有虛擬地址字段。
如果使用者所提供的數(shù)據(jù)段有效,則訪問(wèn)相關(guān)存儲(chǔ)器區(qū)域,并且處理WQE。當(dāng)成功完成時(shí),通過(guò)與WQ相關(guān)聯(lián)的CQ返回CQE。
下一步(步驟1576),如果任一數(shù)據(jù)段無(wú)效,則不訪問(wèn)相關(guān)存儲(chǔ)器區(qū)域,并且在與WQ 1564相關(guān)聯(lián)的CQ 1584中通過(guò)CQE 1580返回錯(cuò)誤。
最后,在步驟1588,使用者1540提取在步驟1552提交的WR的WC。
現(xiàn)在參照?qǐng)D16,它是用來(lái)區(qū)分可以與遠(yuǎn)端操作相關(guān)聯(lián)的不同類型的流的過(guò)程的流程圖及圖表。
IPSOE接收進(jìn)入TCP/IP段1600。
在步驟1604,IPSOE使用公知的TCP/IP/以太網(wǎng)驗(yàn)證機(jī)制來(lái)驗(yàn)證進(jìn)入TCP段1604。在步驟1608,IPSOE檢查在TCP/IP段驗(yàn)證期間是否遇到錯(cuò)誤。如果進(jìn)入TCP/IP段有效,則過(guò)程進(jìn)入步驟1612。否則1616丟棄該段并且過(guò)程繼續(xù)等待TCP/IP段(步驟1616)。
在步驟1612,在完成驗(yàn)證過(guò)程之后,使用進(jìn)入TCP/IP段的TCP/IP五元組(傳輸類型、目的端TCP端口號(hào)、源端TCP端口號(hào)、目的端IP地址以及源端IP地址)來(lái)訪問(wèn)與進(jìn)入TCP段相關(guān)聯(lián)的QP上下文。
在步驟1620,如果對(duì)于進(jìn)入TCP段不存在任何QP上下文,則使用者不使用任何IPSOE TCP/IP卸載機(jī)制,并且通過(guò)公知的傳統(tǒng)NIC機(jī)制將進(jìn)入TCP段上傳給使用者。
在步驟1624,如果進(jìn)入TCP段引用iSCSI 1.0 QP上下文,則對(duì)進(jìn)入TCP段執(zhí)行圖17所示的處理。
在步驟1630,如果進(jìn)入TCP段引用RDMA(包括iSCSI-R)QP上下文,則IPSOE使用帶PDU對(duì)齊的標(biāo)志器(Marker with PDU Alignment,MPA)機(jī)制來(lái)提取DDP段及其相關(guān)DDP首標(biāo),并且對(duì)進(jìn)入TCP段執(zhí)行圖18所示的處理。
圖17A是根據(jù)本發(fā)明優(yōu)選實(shí)施例的與iSCSI QP相關(guān)聯(lián)的存儲(chǔ)器登記和注銷機(jī)制的流程圖及圖表。圖17A示出與在iSCSI模式下經(jīng)過(guò)初始化的QP如IPSOE 170中的QP上下文1706相關(guān)聯(lián)的存儲(chǔ)器管理功能。
在步驟1704,當(dāng)使用者1702(典型地是運(yùn)行在主機(jī)CPU的操作系統(tǒng)內(nèi)核中的iSCSI設(shè)備驅(qū)動(dòng)程序)初始化QP上下文1706時(shí),使用者1702將QP模式設(shè)為iSCSI 1.0。當(dāng)QP上下文在iSCSI模式下經(jīng)過(guò)初始化之后,投遞到QP發(fā)送隊(duì)列如SQ 1728的工作請(qǐng)求包含iSCSI命令及其相關(guān)數(shù)據(jù)傳輸數(shù)據(jù)段列表。IPSOE將遵循圖17A所示的流程圖為iSCSI命令及其相關(guān)數(shù)據(jù)傳輸數(shù)據(jù)段創(chuàng)建(登記)一個(gè)存儲(chǔ)器TPT條目;將iSCSI命令發(fā)送到目標(biāo)端;執(zhí)行與iSCSI命令相關(guān)聯(lián)的數(shù)據(jù)傳輸(圖17B),并且當(dāng)接收到iSCSI響應(yīng)時(shí),銷毀iSCSI命令的存儲(chǔ)器TPT條目(注銷),并且創(chuàng)建包含iSCSI響應(yīng)的WC。
在使用者1702可以將iSCSI命令發(fā)送到目標(biāo)端之前,使用者1702必須創(chuàng)建RQ WQE來(lái)接收iSCSI響應(yīng)。在步驟1710,使用者1702對(duì)于將要與iSCSI命令相關(guān)聯(lián)的iSCSI響應(yīng),將RQ WR傳到IPSOE1708。在步驟1712,動(dòng)詞接口驗(yàn)證RQ WR,并且如果有效,則動(dòng)詞接口根據(jù)該WR創(chuàng)建RQ WQE 1714,將RQ WQE 1714置于相關(guān)RQ1716中,并且立即返回到使用者1702。如果WR無(wú)效,則動(dòng)詞接口返回一個(gè)錯(cuò)誤給使用者1702。
在步驟1720,使用者1702然后通過(guò)將包含iSCSI命令及其相關(guān)數(shù)據(jù)傳輸數(shù)據(jù)段的SQ WR傳到IPSOE 1708來(lái)請(qǐng)求該IPSOE執(zhí)行iSCSI命令。在步驟1732,動(dòng)詞接口驗(yàn)證SQ WR,并且如果有效,則動(dòng)詞接口根據(jù)該WR創(chuàng)建一個(gè)SQ WQE,將SQ WQE 1724置于相關(guān)SQ1728中,并且立即返回一個(gè)iSCSI命令I(lǐng)D給使用者1702。該命令I(lǐng)D在使用者與IPSOE之間使用以將iSCSI響應(yīng)與iSCSI命令相關(guān)聯(lián)。如果WR無(wú)效,則動(dòng)詞接口返回一個(gè)錯(cuò)誤給使用者1702。
當(dāng)IPSOE 1708的SQ 1728處理iSCSI命令SQ WQE 1724時(shí),它驗(yàn)證該WQE。在步驟1736,如果QP初始化為iSCSI模式,iSCSI命令對(duì)于它將要發(fā)送的設(shè)備類型有效,與該iSCSI命令相關(guān)聯(lián)的數(shù)據(jù)傳輸數(shù)據(jù)段有效(例如,它們不重疊(wrap)),并且存儲(chǔ)器TPT有足夠空間用于新條目,則在存儲(chǔ)器TPT 1744中創(chuàng)建新iSCSI存儲(chǔ)器TPT條目1740。
如果iSCSI命令SQ WQE 1724遇到錯(cuò)誤(例如,存儲(chǔ)器TPT沒(méi)有足夠空間用于另一條目或者iSCSI命令操作碼對(duì)于所引用的設(shè)備類型無(wú)效),則可以采取兩種語(yǔ)義選項(xiàng)來(lái)實(shí)現(xiàn)。選項(xiàng)1(步驟1748)是反應(yīng)性的,并且假定使用者1702不清楚存儲(chǔ)器TPT空間。如果IPSOE實(shí)現(xiàn)使用選項(xiàng)1,則執(zhí)行下面過(guò)程IPSOE將與SQ相關(guān)聯(lián)的QP置于發(fā)送隊(duì)列耗盡狀態(tài),停止處理iSCSI命令SQ WQE 1724之后的WQE(但是繼續(xù)處理所有RQ WQE、所有進(jìn)入R2T、所有以前SQ WQE以及其他進(jìn)入iSCSI控制消息),產(chǎn)生標(biāo)識(shí)iSCSI命令SQ WQE 1724中的錯(cuò)誤的完成錯(cuò)誤CQE 1776,將CQE 1776置于完成隊(duì)列1772中,并且通過(guò)CQ1772對(duì)所有隨后SQ WQE返回刷新錯(cuò)誤CQE。使用者1772可以重試以錯(cuò)誤完成的iSCSI命令WR和所有隨后WR。
選項(xiàng)2(步驟1152)是預(yù)期性的,并且假定使用者1702清楚存儲(chǔ)器TPT空間。也就是,使用者清楚IPSOE正在如何使用存儲(chǔ)器TPT空間。在這一選項(xiàng)下,使用者1702僅發(fā)出保證在存儲(chǔ)器TPT中有足夠空間的iSCSI命令WR。如果IPSOE實(shí)現(xiàn)使用選項(xiàng)2,則執(zhí)行下面過(guò)程IPSOE將與SQ相關(guān)聯(lián)的QP(QP 1706)置于錯(cuò)誤狀態(tài),停止處理所有本地和遠(yuǎn)端操作,終止iSCSI流,產(chǎn)生標(biāo)識(shí)iSCSI命令SQ WQE中的錯(cuò)誤的完成錯(cuò)誤CQE 1776,將CQE 1776置于完成隊(duì)列1772中,并且通過(guò)CQ 1772對(duì)所有其他SQ和RQ WQE返回刷新錯(cuò)誤CQE。
在步驟1156,當(dāng)IPSOE目標(biāo)端處理邏輯獲得iSCSI命令SQ WQE時(shí),IPSOE將iSCSI命令發(fā)送到目標(biāo)端。
下面描述的圖17B中的流程圖示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的由IPSOE用來(lái)執(zhí)行iSCSI命令的數(shù)據(jù)傳輸階段的機(jī)制。
當(dāng)目標(biāo)端完成iSCSI命令時(shí),(步驟1764),目標(biāo)端將iSCSI響應(yīng)(或者,對(duì)于設(shè)備讀取,包括數(shù)據(jù)輸入消息中的iSCSI狀態(tài))發(fā)送到發(fā)起端。
在步驟1768,當(dāng)IPSOE接收到iSCSI響應(yīng)時(shí),IPSOE驗(yàn)證QP上下文1706與接收iSCSI響應(yīng)的流(例如,通過(guò)SCTP)或者連接(例如,通過(guò)TCP)相關(guān)聯(lián)。對(duì)于TCP/IP,IPSOE通過(guò)確保與進(jìn)入iSCSI響應(yīng)相關(guān)聯(lián)的五元組(傳輸類型、目的端端口號(hào)、源端端口號(hào)、目的端IP地址以及源端IP地址)匹配與QP上下文相關(guān)聯(lián)的五元組來(lái)執(zhí)行該步驟。然后,IPSOE驗(yàn)證與iSCSI響應(yīng)消息相關(guān)聯(lián)的其他iSCSI和TCP字段(例如,包含iSCSI響應(yīng)的TCP段中的順序號(hào)匹配存儲(chǔ)在QP中的下一預(yù)期順序號(hào))。然后,IPSOE使用iSCSI發(fā)起端標(biāo)記的Tag_Index部分來(lái)查詢與iSCSl響應(yīng)相關(guān)聯(lián)的存儲(chǔ)器TPT條目(1740)。IPSOE驗(yàn)證iSCSI發(fā)起端標(biāo)記的Tag_Instance部分。
如果進(jìn)入iSCSI響應(yīng)有效(包括iSCSI發(fā)起端標(biāo)記的Tag_Instance部分),則IPSOE 1708訪問(wèn)存儲(chǔ)器TPT條目1740來(lái)提取與iSCSI響應(yīng)相關(guān)聯(lián)的iSCSI命令的命令I(lǐng)D;從存儲(chǔ)器TPT條目1740中提取命令I(lǐng)D;銷毀(注銷)存儲(chǔ)器TPT條目1740;并且將命令I(lǐng)D和進(jìn)入iSCSI響應(yīng)置于與進(jìn)入iSCSI響應(yīng)相關(guān)聯(lián)的QP的RQ WQE 1714中。否則,IPSOE 1708丟棄進(jìn)入iSCSI響應(yīng)。
最后,在步驟12 1778,使用者1702提取包含iSCSI命令I(lǐng)D和iSCSI響應(yīng)的WC。使用者1702使用iSCSI命令I(lǐng)D來(lái)關(guān)聯(lián)iSCSI響應(yīng)與iSCSI命令。
圖17A所示的機(jī)制可以應(yīng)用于通用QP。也就是,存儲(chǔ)器登記步驟可以與通用WR進(jìn)行組合,并且注銷步驟可以在遠(yuǎn)端節(jié)點(diǎn)發(fā)送一個(gè)包含要被注銷的標(biāo)記(例如,操縱標(biāo)記(Steering Tag))的消息時(shí)執(zhí)行。
圖17B是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的用來(lái)執(zhí)行驗(yàn)證遠(yuǎn)端iSCSI 1.0數(shù)據(jù)傳輸(例如,R2T或數(shù)據(jù)輸入)操作的iSCSI發(fā)起端數(shù)據(jù)傳輸部分的存儲(chǔ)器管理過(guò)程的流程圖及圖表。下述實(shí)現(xiàn)僅包括數(shù)據(jù)傳輸消息。非數(shù)據(jù)傳輸消息通過(guò)iSCSI QP的接收隊(duì)列上傳給使用者。
在步驟1796,使用進(jìn)入iSCSI首標(biāo)的發(fā)起端任務(wù)標(biāo)記的Tag_Index部分來(lái)驗(yàn)證進(jìn)入DDP段。進(jìn)入步驟B。
在步驟1794,對(duì)由進(jìn)入iSCSI首標(biāo)的發(fā)起端任務(wù)標(biāo)記的Tag_Index部分索引的條目執(zhí)行下面檢查a)有效條目字段置位;b)該條目的條目類型設(shè)為iSCSI 1.0(即,區(qū)域或窗口不能用于iSCSI 1.0);c)與進(jìn)入TCP段相關(guān)聯(lián)的QP上下文中的PD匹配存儲(chǔ)器TPT條目的PD;d)作為iSCSI 1.0首標(biāo)的發(fā)起端任務(wù)標(biāo)記一部分的Tag_Instance匹配存儲(chǔ)器TPT條目中的Tag_Instance;e)進(jìn)入iSCSI 1.0段首標(biāo)的偏移不超過(guò)存儲(chǔ)在存儲(chǔ)器TPT條目中的長(zhǎng)度字段大小;f)訪問(wèn)類型有效(例如,對(duì)于R2T,存儲(chǔ)器TPT條目激活遠(yuǎn)端讀取訪問(wèn),并且對(duì)于數(shù)據(jù)輸入,存儲(chǔ)器TPT條目激活遠(yuǎn)端寫入訪問(wèn));以及g)發(fā)起端的iSCSI命令(通過(guò)使用存儲(chǔ)器TPT條目的虛擬地址字段來(lái)查詢)匹配進(jìn)入(目標(biāo)端)iSCSI消息的操作(即,發(fā)起端iSCSI命令是盤寫入并且進(jìn)入iSCSI消息是R2T,或者iSCSI命令是盤讀取并且進(jìn)入iSCSI消息是數(shù)據(jù))。如果這些檢查均通過(guò),則處理進(jìn)入步驟1792。否則通過(guò)iSCSI QP的接收隊(duì)列將錯(cuò)誤的iSCSI消息傳給使用者。
在步驟1792,確定iSCSI消息的類型。在步驟1790,如果進(jìn)入iSCSI首標(biāo)是R2T,則使用目標(biāo)偏移來(lái)偏移到由發(fā)起端任務(wù)標(biāo)記的標(biāo)記索引部分指向的緩沖區(qū),并且將直到在iSCSI首標(biāo)中指定的長(zhǎng)度的緩沖區(qū)內(nèi)容傳輸?shù)竭h(yuǎn)端節(jié)點(diǎn)。iSCSI首標(biāo)的控制信息通過(guò)iSCSI QP的接收隊(duì)列傳給使用者。
在步驟1788,如果進(jìn)入iSCSI首標(biāo)為數(shù)據(jù)輸入傳輸,則使用目標(biāo)偏移來(lái)偏移到由發(fā)起端任務(wù)標(biāo)記的標(biāo)記索引部分指向的緩沖區(qū),并且將直到在iSCSI首標(biāo)中指定的長(zhǎng)度的緩沖區(qū)內(nèi)容傳輸?shù)竭h(yuǎn)端節(jié)點(diǎn)。iSCSI首標(biāo)的控制信息通過(guò)iSCSI QP的接收隊(duì)列傳給使用者。
在步驟1786,如果進(jìn)入iSCSI首標(biāo)不同于數(shù)據(jù)輸入或R2T傳輸,則通過(guò)iSCSI QP的接收隊(duì)列將整個(gè)iSCSI消息(控制信息和任何數(shù)據(jù))傳給使用者。
圖18是示出根據(jù)本發(fā)明優(yōu)選實(shí)施例所使用的存儲(chǔ)器管理過(guò)程的流程圖及圖表向一次接觸訪問(wèn)機(jī)制提供不暴露給遠(yuǎn)端節(jié)點(diǎn)的注銷功能;以及驗(yàn)證與遠(yuǎn)端RDMA讀取請(qǐng)求、RDMA讀取響應(yīng)以及RDMA寫入操作相關(guān)聯(lián)的存儲(chǔ)器存取。RDMA讀取請(qǐng)求引用DDP未帶標(biāo)記緩沖區(qū)。RDMA讀取響應(yīng)或RDMA寫入引用DDP帶標(biāo)記緩沖區(qū)。需要注意的是,RDMA發(fā)送消息處理在圖11中有描述。
對(duì)于RDMA讀取請(qǐng)求1800,如果進(jìn)入DPP段首標(biāo)引用帶緩沖區(qū)號(hào)2的未帶標(biāo)記緩沖區(qū),則使用進(jìn)入DDP首標(biāo)的消息順序號(hào)(MSN)來(lái)索引RDMA讀取資源隊(duì)列。這對(duì)應(yīng)于步驟1804。
為索引RDMA讀取請(qǐng)求隊(duì)列,IPSOE維護(hù)下一預(yù)期MSN。在步驟1806,如果進(jìn)入DDP首標(biāo)的MSN是下一預(yù)期MSN或者對(duì)應(yīng)于將與可獲得的RDMA讀取請(qǐng)求隊(duì)列條目相關(guān)聯(lián)的MSN,然后將進(jìn)入DDP段的有效載荷(即RDMA讀取請(qǐng)求)置于由進(jìn)入DDP首標(biāo)的MSN引用的RDMA讀取請(qǐng)求隊(duì)列條目中。否則,由IPSOE調(diào)用RDMA流終止過(guò)程。RDMA流終止過(guò)程包括創(chuàng)建包含終止原因的終止RDMA消息,將終止RDMA消息發(fā)送到RDMA流的另一側(cè),然后斷開(kāi)RDMA流(例如,通過(guò)斷開(kāi)TCP連接)。
在步驟1808,使用進(jìn)入RDMA讀取請(qǐng)求首標(biāo)的源STag的Tag_Index部分來(lái)驗(yàn)證進(jìn)入RDMA讀取請(qǐng)求。
在步驟1812,對(duì)由進(jìn)入RDMA讀取請(qǐng)求首標(biāo)的源STag的Tag_Index部分索引的條目執(zhí)行下列檢查a)有效條目字段置位;b)該條目的條目類型設(shè)為窗口(即,區(qū)域不能用于遠(yuǎn)端訪問(wèn));c)與進(jìn)入TCP段相關(guān)聯(lián)的QP上下文中的PD匹配存儲(chǔ)器窗口條目的PD;d)作為DDP首標(biāo)STag一部分的Tag_Instance匹配MWE中的Tag_Instance;e)進(jìn)入DDP段的基址(目標(biāo)偏移)和長(zhǎng)度(MPA首標(biāo)長(zhǎng)度)位于與MWE相關(guān)聯(lián)的地址范圍內(nèi);以及f)訪問(wèn)類型有效(即,MWE激活遠(yuǎn)端讀取訪問(wèn))。
如果所有檢查均通過(guò),則IPSOE通過(guò)讀取由RDMA讀取請(qǐng)求引用的存儲(chǔ)器窗口并且發(fā)出RDMA讀取響應(yīng)來(lái)創(chuàng)建RDMA讀取響應(yīng)。否則,產(chǎn)生描述錯(cuò)誤原因的終止消息。
對(duì)于RDMA讀取響應(yīng)或RDMA寫入1814,在步驟1816,如果進(jìn)入DDP段的首標(biāo)引用帶標(biāo)記緩沖區(qū),則使用DDP首標(biāo)STag的Tag_Index部分來(lái)索引存儲(chǔ)器區(qū)域/窗口表。
在步驟1820,對(duì)由進(jìn)入DDP首標(biāo)STag的Tag_Index部分索引的條目執(zhí)行下列檢查a)有效條目字段置位;b)該條目的條目類型設(shè)為窗口(即,區(qū)域不能用于遠(yuǎn)端訪問(wèn));c)與進(jìn)入TCP段相關(guān)聯(lián)的QP上下文中的PD匹配存儲(chǔ)器窗口條目的PD;d)作為DDP首標(biāo)STag一部分的Tag_Instance匹配MWE中的Tag_Instance;e)進(jìn)入DDP段的基址(目標(biāo)偏移)和長(zhǎng)度(MPA首標(biāo)長(zhǎng)度)位于與MWE相關(guān)聯(lián)的地址范圍內(nèi);以及f)訪問(wèn)類型有效(即,MWE激活遠(yuǎn)端寫入訪問(wèn))。如果所有檢查均通過(guò),則處理進(jìn)入步驟1824,否則,產(chǎn)生描述錯(cuò)誤原因的終止消息。
在步驟1824,檢查下列字段進(jìn)入DDP首標(biāo)中的DDP標(biāo)準(zhǔn)最后一個(gè)比特(如果置位,則它表示進(jìn)入DDP段為RDMA消息的最后一個(gè)DDP段);由STag引用的存儲(chǔ)器TPT條目中所存儲(chǔ)的一次接觸激活比特;由STag引用的存儲(chǔ)器TPT條目中所存儲(chǔ)的接觸比特;由STag引用的存儲(chǔ)器TPT條目中所存儲(chǔ)的存儲(chǔ)DDP(字節(jié)流)順序號(hào);底層TCP字節(jié)順序號(hào);以及進(jìn)入DDP段(字節(jié)流)順序號(hào)的最后一個(gè)字節(jié)。在步驟1828,對(duì)上列字段執(zhí)行下列檢查。
如果最后一個(gè)比特未置位,則使用進(jìn)入DDP首標(biāo)的目標(biāo)偏移字段來(lái)索引由存儲(chǔ)器TPT條目引用的存儲(chǔ)器區(qū)域/窗口,并且將進(jìn)入DDP段的有效載荷傳輸?shù)酱鎯?chǔ)器區(qū)域/窗口中(以TO開(kāi)始)。
如果最后一個(gè)比特置位并且與進(jìn)入DDP段相關(guān)聯(lián)的存儲(chǔ)器TPT條目的一次接觸激活比特未置位,則使用進(jìn)入DDP首標(biāo)的目標(biāo)偏移來(lái)索引由存儲(chǔ)器TPT條目引用的存儲(chǔ)器區(qū)域/窗口,并且將進(jìn)入DDP段的有效載荷傳輸?shù)酱鎯?chǔ)器區(qū)域/窗口中(以TO開(kāi)始)。
如果最后一個(gè)比特置位并且與進(jìn)入DDP段相關(guān)聯(lián)的存儲(chǔ)器TPT條目的一次接觸激活比特和接觸比特均置位,則對(duì)存儲(chǔ)器TPT條目的有效條目比特復(fù)位,并且產(chǎn)生描述錯(cuò)誤原因(例如,試圖對(duì)一次接觸區(qū)域/窗口進(jìn)行兩次訪問(wèn))的終止消息。
如果最后一個(gè)比特置位并且與進(jìn)入DDP段相關(guān)聯(lián)的存儲(chǔ)器TPT條目的一次接觸激活比特和接觸比特均未置位,并且進(jìn)入DDP段(字節(jié)流)順序號(hào)的最后一個(gè)字節(jié)等于下一預(yù)期TCP字節(jié)順序號(hào)減1,則對(duì)存儲(chǔ)器TPT條目的有效條目比特復(fù)位,并且使用進(jìn)入DDP首標(biāo)的目標(biāo)偏移字段來(lái)索引由存儲(chǔ)器TPT條目引用的存儲(chǔ)器區(qū)域/窗口,并且將進(jìn)入DDP段的有效載荷傳輸?shù)酱鎯?chǔ)器區(qū)域/窗口中(以TO開(kāi)始)。這包括進(jìn)入DDP段是帶標(biāo)記緩沖區(qū)消息的最后一段且有序接收的情況。
如果最后一個(gè)比特置位并且與進(jìn)入DDP段相關(guān)聯(lián)的存儲(chǔ)器TPT條目的一次接觸激活比特置位而接觸比特未置位,并且進(jìn)入DDP段(字節(jié)流)順序號(hào)的最后一個(gè)字節(jié)在TCP字節(jié)順序號(hào)窗口之內(nèi)但不是下一預(yù)期TCP字節(jié)順序號(hào)減1,則對(duì)存儲(chǔ)器TPT條目的接觸比特置位,將與進(jìn)入DDP段的有效載荷的最后一個(gè)字節(jié)相關(guān)聯(lián)的(字節(jié)流)順序號(hào)存儲(chǔ)在存儲(chǔ)器TPT條目的DDP順序號(hào)字段中,并且將進(jìn)入DDP段的有效載荷傳輸?shù)酱鎯?chǔ)器區(qū)域/窗口中(以TO開(kāi)始)。當(dāng)進(jìn)入比特流到達(dá)存儲(chǔ)器TPT條目DDP順序號(hào)字段的結(jié)束時(shí),對(duì)存儲(chǔ)器TPT的有效條目字段復(fù)位。這包括進(jìn)入DDP段是帶標(biāo)記緩沖區(qū)消息的最后一段并且無(wú)序接收的情況。
如果最后一個(gè)比特置位并且與進(jìn)入DDP段相關(guān)聯(lián)的存儲(chǔ)器TPT條目的一次接觸激活比特置位而接觸比特未置位,并且進(jìn)入DDP段(字節(jié)流)順序號(hào)的最后一個(gè)字節(jié)在TCP字節(jié)順序號(hào)窗口之外,則丟棄進(jìn)入DDP段(發(fā)送者將重新發(fā)送)。
值得注意的是,雖然本發(fā)明是在完全功能化數(shù)據(jù)處理系統(tǒng)的上下文中描述的,但是本領(lǐng)域的普通技術(shù)人員應(yīng)該理解本發(fā)明的過(guò)程能夠以指令或其他功能描述資料的計(jì)算機(jī)可讀介質(zhì)形式以及各種其他形式來(lái)分發(fā),并且本發(fā)明同樣適用而與實(shí)際用來(lái)實(shí)現(xiàn)分發(fā)的信號(hào)承載介質(zhì)的具體類型無(wú)關(guān)。計(jì)算機(jī)可讀介質(zhì)的例子包括可記錄型介質(zhì)如軟盤、硬盤驅(qū)動(dòng)器、RAM、CD-ROM、DVD-ROM以及傳輸型介質(zhì)如數(shù)字和模擬通信鏈路、使用傳輸形式的有線或無(wú)線通信鏈路例如無(wú)線頻率和光波傳輸。計(jì)算機(jī)可讀介質(zhì)可以采用針對(duì)具體數(shù)據(jù)處理器系統(tǒng)中的實(shí)際使用而解碼的編碼格式的形式。功能描述資料是將功能授予機(jī)器的信息。功能描述資料包括但不限于計(jì)算機(jī)程序、指令、規(guī)則、事實(shí)(fact)、可計(jì)算函數(shù)的定義、對(duì)象和數(shù)據(jù)結(jié)構(gòu)。
本發(fā)明的描述是為了示例和描述起見(jiàn)而給出的,而并不是無(wú)遺漏的或者將本發(fā)明限于所公開(kāi)的形式。很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實(shí)施例是為了更好說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)出適于特定用途的帶有各種修改的各種實(shí)施例。
權(quán)利要求
1.一種方法,包括在網(wǎng)絡(luò)卸載引擎中從主機(jī)接收工作請(qǐng)求;響應(yīng)接收工作請(qǐng)求,在轉(zhuǎn)換表中登記與主機(jī)相關(guān)聯(lián)的存儲(chǔ)器區(qū)域。
2.如權(quán)利要求1所述的方法,其中,工作請(qǐng)求包括與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的存儲(chǔ)器保護(hù)信息,并且所述方法還包括在轉(zhuǎn)換表中存儲(chǔ)存儲(chǔ)器保護(hù)信息。
3.如權(quán)利要求1所述的方法,其中,工作請(qǐng)求通過(guò)發(fā)送隊(duì)列來(lái)接收。
4.如權(quán)利要求1所述的方法,還包括響應(yīng)登記存儲(chǔ)器區(qū)域,將一個(gè)標(biāo)記返回給主機(jī),其中,標(biāo)記與存儲(chǔ)器區(qū)域相關(guān)聯(lián)。
5.如權(quán)利要求4所述的方法,其中,標(biāo)記包括對(duì)轉(zhuǎn)換表的索引。
6.如權(quán)利要求1所述的方法,還包括響應(yīng)登記存儲(chǔ)器區(qū)域,將一個(gè)完成隊(duì)列元素置于完成隊(duì)列中。
7.如權(quán)利要求1所述的方法,其中,工作請(qǐng)求包括iSCSI命令。
8.如權(quán)利要求7所述的方法,其中,響應(yīng)處理iSCSI命令而登記存儲(chǔ)器區(qū)域,并且所述方法還包括在完成iSCSI命令中執(zhí)行一個(gè)事務(wù);接收與事務(wù)相關(guān)聯(lián)的iSCSI響應(yīng);以及響應(yīng)接收iSCSI響應(yīng),注銷與iSCSI事務(wù)相關(guān)聯(lián)的存儲(chǔ)器區(qū)域。
9.如權(quán)利要求1所述的方法,還包括產(chǎn)生與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記;以及使用標(biāo)記引用存儲(chǔ)器區(qū)域,在網(wǎng)絡(luò)中通過(guò)連接協(xié)議執(zhí)行與遠(yuǎn)端節(jié)點(diǎn)的輸入/輸出事務(wù),其中,在輸入/輸出事務(wù)中,使用對(duì)存儲(chǔ)器區(qū)域的直接訪問(wèn)來(lái)傳輸數(shù)據(jù)。
10.如權(quán)利要求9所述的方法,其中,連接協(xié)議是傳輸控制協(xié)議(TCP)。
11.如權(quán)利要求1所述的方法,還包括建立表示與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的設(shè)置的數(shù)據(jù),其中,所述設(shè)置表示存儲(chǔ)器區(qū)域被配置為僅對(duì)遠(yuǎn)端節(jié)點(diǎn)的一次訪問(wèn)有效,從而將響應(yīng)在完成有效進(jìn)入遠(yuǎn)端操作中訪問(wèn)存儲(chǔ)器區(qū)域而使存儲(chǔ)器區(qū)域無(wú)效。
12.如權(quán)利要求1所述的方法,其中,響應(yīng)處理與高層協(xié)議中的一個(gè)事務(wù)相關(guān)聯(lián)的組合登記存儲(chǔ)器區(qū)域與發(fā)送工作請(qǐng)求而登記存儲(chǔ)器區(qū)域,并且所述方法還包括接收高層協(xié)議中的進(jìn)入事務(wù)發(fā)送消息,其中,事務(wù)發(fā)送消息包括注銷與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記的請(qǐng)求;以及響應(yīng)接收到發(fā)送消息,注銷與標(biāo)記相關(guān)聯(lián)的存儲(chǔ)器區(qū)域。
13.一種方法,包括將工作請(qǐng)求置于網(wǎng)絡(luò)卸載引擎內(nèi)的發(fā)送隊(duì)列中,其中,工作請(qǐng)求包含要通過(guò)網(wǎng)絡(luò)卸載引擎登記的存儲(chǔ)器區(qū)域的標(biāo)識(shí);以及從網(wǎng)絡(luò)卸載引擎接收與所登記的存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記。
14.一種方法,包括在網(wǎng)絡(luò)卸載引擎中登記存儲(chǔ)器區(qū)域,以用于與遠(yuǎn)端節(jié)點(diǎn)的事務(wù)使用;對(duì)于存儲(chǔ)器區(qū)域,與遠(yuǎn)端節(jié)點(diǎn)執(zhí)行單個(gè)事務(wù);以及響應(yīng)執(zhí)行單個(gè)事務(wù),注銷存儲(chǔ)器區(qū)域。
15.一種方法,包括從遠(yuǎn)端節(jié)點(diǎn)接收與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記;判定與標(biāo)記相關(guān)聯(lián)的存儲(chǔ)器區(qū)域是否已被注銷;以及響應(yīng)與標(biāo)記相關(guān)聯(lián)的存儲(chǔ)器區(qū)域已被注銷的判定結(jié)果,指示一個(gè)錯(cuò)誤情況。
16.至少一種計(jì)算機(jī)可讀介質(zhì)中的一種計(jì)算機(jī)程序產(chǎn)品,包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列操作的功能描述資料在網(wǎng)絡(luò)卸載引擎中從主機(jī)接收工作請(qǐng)求;響應(yīng)接收工作請(qǐng)求,在轉(zhuǎn)換表中登記與主機(jī)相關(guān)聯(lián)的存儲(chǔ)器區(qū)域。
17.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中,工作請(qǐng)求包括與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的存儲(chǔ)器保護(hù)信息,并且所述計(jì)算機(jī)程序產(chǎn)品還包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列另外操作的功能描述資料在轉(zhuǎn)換表中存儲(chǔ)存儲(chǔ)器保護(hù)信息。
18.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中,工作請(qǐng)求通過(guò)發(fā)送隊(duì)列來(lái)接收。
19.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,還包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列另外操作的功能描述資料響應(yīng)登記存儲(chǔ)器區(qū)域,將一個(gè)標(biāo)記返回給主機(jī),其中,標(biāo)記與存儲(chǔ)器區(qū)域相關(guān)聯(lián)。
20.如權(quán)利要求19所述的計(jì)算機(jī)程序產(chǎn)品,其中,標(biāo)記包括對(duì)轉(zhuǎn)換表的索引。
21.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,還包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列另外操作的功能描述資料響應(yīng)登記存儲(chǔ)器區(qū)域,將一個(gè)完成隊(duì)列元素置于完成隊(duì)列中。
22.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中,工作請(qǐng)求包括iSCSI命令。
23.如權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,其中,響應(yīng)處理iSCSI命令而登記存儲(chǔ)器區(qū)域,并且所述計(jì)算機(jī)程序產(chǎn)品還包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列另外操作的功能描述資料在完成iSCSI命令中執(zhí)行一個(gè)事務(wù);接收與事務(wù)相關(guān)聯(lián)的iSCSI響應(yīng);以及響應(yīng)接收iSCSI響應(yīng),注銷存儲(chǔ)器區(qū)域。
24.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,還包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列另外操作的功能描述資料產(chǎn)生與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記;以及使用標(biāo)記引用存儲(chǔ)器區(qū)域,在網(wǎng)絡(luò)中通過(guò)傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)執(zhí)行與遠(yuǎn)端節(jié)點(diǎn)的輸入/輸出事務(wù),其中,在輸入/輸出事務(wù)中,使用對(duì)存儲(chǔ)器區(qū)域的直接訪問(wèn)來(lái)傳輸數(shù)據(jù)。
25.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,還包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列另外操作的功能描述資料建立表示與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的設(shè)置的數(shù)據(jù),其中,所述設(shè)置表示存儲(chǔ)器區(qū)域被配置為僅對(duì)遠(yuǎn)端節(jié)點(diǎn)的一次訪問(wèn)有效,從而將響應(yīng)在完成有效進(jìn)入遠(yuǎn)端操作中訪問(wèn)存儲(chǔ)器區(qū)域而使存儲(chǔ)器區(qū)域無(wú)效。
26.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中,響應(yīng)處理與高層協(xié)議中的一個(gè)事務(wù)相關(guān)聯(lián)的組合登記存儲(chǔ)器區(qū)域與發(fā)送工作請(qǐng)求而登記存儲(chǔ)器區(qū)域,并且所述計(jì)算機(jī)程序產(chǎn)品還包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列另外操作的功能描述資料接收高層協(xié)議中的進(jìn)入事務(wù)發(fā)送消息,其中,事務(wù)發(fā)送消息包括注銷與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記的請(qǐng)求;以及響應(yīng)接收到發(fā)送消息,注銷與標(biāo)記相關(guān)聯(lián)的存儲(chǔ)器區(qū)域。
27.至少一種計(jì)算機(jī)可讀介質(zhì)中的一種計(jì)算機(jī)程序產(chǎn)品,包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列操作的功能描述資料將工作請(qǐng)求置于網(wǎng)絡(luò)卸載引擎內(nèi)的發(fā)送隊(duì)列中,其中,工作請(qǐng)求包含要通過(guò)網(wǎng)絡(luò)卸載引擎登記的存儲(chǔ)器區(qū)域的標(biāo)識(shí);以及從網(wǎng)絡(luò)卸載引擎接收與所登記的存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記。
28.至少一種計(jì)算機(jī)可讀介質(zhì)中的一種計(jì)算機(jī)程序產(chǎn)品,包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列操作的功能描述資料在網(wǎng)絡(luò)卸載引擎中登記存儲(chǔ)器區(qū)域,以用于與遠(yuǎn)端節(jié)點(diǎn)的事務(wù)使用;對(duì)于存儲(chǔ)器區(qū)域,與遠(yuǎn)端節(jié)點(diǎn)執(zhí)行單個(gè)事務(wù);以及響應(yīng)執(zhí)行單個(gè)事務(wù),注銷存儲(chǔ)器區(qū)域。
29.至少一種計(jì)算機(jī)可讀介質(zhì)中的一種計(jì)算機(jī)程序產(chǎn)品,包括當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)允許計(jì)算機(jī)執(zhí)行下列操作的功能描述資料從遠(yuǎn)端節(jié)點(diǎn)接收與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記;判定與標(biāo)記相關(guān)聯(lián)的存儲(chǔ)器區(qū)域是否已被注銷;以及響應(yīng)與標(biāo)記相關(guān)聯(lián)的存儲(chǔ)器區(qū)域已被注銷的判定結(jié)果,指示一個(gè)錯(cuò)誤情況。
30.一種網(wǎng)絡(luò)卸載引擎,包括一裝置,用于從主機(jī)接收工作請(qǐng)求;一裝置,用于響應(yīng)接收工作請(qǐng)求而在轉(zhuǎn)換表中登記與主機(jī)相關(guān)聯(lián)的存儲(chǔ)器區(qū)域。
31.如權(quán)利要求30所述的網(wǎng)絡(luò)卸載引擎,其中,工作請(qǐng)求通過(guò)發(fā)送隊(duì)列來(lái)接收。
32.如權(quán)利要求30所述的網(wǎng)絡(luò)卸載引擎,還包括一裝置,用于產(chǎn)生與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記;以及一裝置,用于使用標(biāo)記引用存儲(chǔ)器區(qū)域,在網(wǎng)絡(luò)中通過(guò)傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)執(zhí)行與遠(yuǎn)端節(jié)點(diǎn)的輸入/輸出事務(wù),其中,在輸入/輸出事務(wù)中,使用對(duì)存儲(chǔ)器區(qū)域的直接訪問(wèn)來(lái)傳輸數(shù)據(jù)。
33.一種主機(jī)數(shù)據(jù)處理系統(tǒng),包括一裝置,用于將工作請(qǐng)求置于與主機(jī)相關(guān)聯(lián)的網(wǎng)絡(luò)卸載引擎內(nèi)的發(fā)送隊(duì)列中,其中,工作請(qǐng)求包含要通過(guò)網(wǎng)絡(luò)卸載引擎登記的存儲(chǔ)器區(qū)域的標(biāo)識(shí);以及一裝置,用于從網(wǎng)絡(luò)卸載引擎接收與所登記的存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記。
34.如權(quán)利要求33所述的主機(jī)數(shù)據(jù)處理系統(tǒng),其中,標(biāo)記包括對(duì)轉(zhuǎn)換表的索引。
35.一種數(shù)據(jù)處理系統(tǒng),包括一裝置,用于登記存儲(chǔ)器區(qū)域以用于與遠(yuǎn)端節(jié)點(diǎn)的事務(wù)使用;一裝置,用于對(duì)于存儲(chǔ)器區(qū)域與遠(yuǎn)端節(jié)點(diǎn)執(zhí)行單個(gè)事務(wù);以及一裝置,用于響應(yīng)執(zhí)行單個(gè)事務(wù)而注銷存儲(chǔ)器區(qū)域。
36.一種網(wǎng)絡(luò)卸載引擎,包括一裝置,用于從遠(yuǎn)端節(jié)點(diǎn)接收與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的標(biāo)記;一裝置,用于判定與標(biāo)記相關(guān)聯(lián)的存儲(chǔ)器區(qū)域是否已被注銷;以及一裝置,用于響應(yīng)與標(biāo)記相關(guān)聯(lián)的存儲(chǔ)器區(qū)域已被注銷的判定結(jié)果,指示一個(gè)錯(cuò)誤情況。
全文摘要
一種用于存儲(chǔ)器管理的方法、計(jì)算機(jī)程序產(chǎn)品及分布數(shù)據(jù)處理系統(tǒng)。存儲(chǔ)器區(qū)域響應(yīng)接收包含虛擬地址的存儲(chǔ)器操作請(qǐng)求而登記,并且它具有訪問(wèn)權(quán)限及其相關(guān)保護(hù)域,其中,虛擬地址用于對(duì)一個(gè)數(shù)據(jù)結(jié)構(gòu)尋址。然后,使用第二數(shù)據(jù)結(jié)構(gòu)來(lái)將虛擬地址轉(zhuǎn)換成物理地址以執(zhí)行操作。使用第三數(shù)據(jù)結(jié)構(gòu)來(lái)允許進(jìn)入請(qǐng)求響應(yīng)所發(fā)起的遠(yuǎn)端操作。
文檔編號(hào)G06F12/08GK1487418SQ0315578
公開(kāi)日2004年4月7日 申請(qǐng)日期2003年9月2日 優(yōu)先權(quán)日2002年9月5日
發(fā)明者威廉·T·博伊德, 道格拉斯·J·約瑟夫, 邁克爾·A·科, 瑞納特·J·勒西歐, A 科, J 勒西歐, 威廉 T 博伊德, 斯 J 約瑟夫 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司