两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于實(shí)現(xiàn)卸載發(fā)起方功能的方法和系統(tǒng)的制作方法

文檔序號:7951787閱讀:251來源:國知局
專利名稱:用于實(shí)現(xiàn)卸載發(fā)起方功能的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及主計算機(jī)與輸入/輸出(I/O)設(shè)備之間的通信協(xié)議,更具體地說,涉及借助遠(yuǎn)程直接存儲器訪問(RDMA)的iSCSI(互聯(lián)網(wǎng)小型計算機(jī)系統(tǒng)接口)卸載(offload)實(shí)現(xiàn)。
背景技術(shù)
遠(yuǎn)程直接存儲器訪問(RDMA)是一種通過高速傳輸高效移動數(shù)據(jù)的技術(shù)。RDMA使得計算機(jī)能夠在所需存儲器總線帶寬和CPU處理開銷最小的情況下直接將信息放置在另一計算機(jī)的存儲器中,同時保留存儲器保護(hù)語義。RNIC是一種向客戶提供RDMA服務(wù)的網(wǎng)絡(luò)接口卡。RNIC可以在TCP(傳輸控制協(xié)議)上為RDMA提供支持。
RNIC的許多重要功能之一是它可以用作iSCSI(互聯(lián)網(wǎng)小型計算機(jī)系統(tǒng)接口)目標(biāo)或發(fā)起方(initiator)適配器。iSCSI將術(shù)語發(fā)起方和目標(biāo)定義為如下“發(fā)起方”指SCSI命令請求方(例如,主機(jī)),而“目標(biāo)”指SCSI命令響應(yīng)方(例如,諸如SCSI驅(qū)動器承載器(carrier)、磁帶之類的I/O設(shè)備)。RNIC還可以提供iSER(“用于RDMA的iSCSI擴(kuò)展”)服務(wù)。iSER是iSCSI的數(shù)據(jù)傳輸模型的擴(kuò)展,其使得iSCSI協(xié)議能夠利用RDMA協(xié)議的直接數(shù)據(jù)放置技術(shù)。iSER數(shù)據(jù)傳輸協(xié)議允許帶有RNIC的iSCSI實(shí)現(xiàn)具有達(dá)到真正零復(fù)制行為(通過消除TCP/IP處理開銷)的數(shù)據(jù)傳輸,同時保留與iSCSI基礎(chǔ)結(jié)構(gòu)的兼容性。iSER使用RDMA有線協(xié)議,并且對遠(yuǎn)程側(cè)(目標(biāo)或發(fā)起方)是不透明的。它還略為更改或修改了RDMA上的iSCSI實(shí)現(xiàn);例如,它除去了諸如數(shù)據(jù)出(DataOut)和數(shù)據(jù)入(DataIn)之類的iSCSI PDU,并且改為使用RDMA讀取和RDMA寫入消息?;旧?,iSER將類似于iSCSI的功能展示給上層,但是數(shù)據(jù)移動的協(xié)議和有線協(xié)議是不同的。
iSCSI協(xié)議交換iSCSI協(xié)議數(shù)據(jù)單元(PDU)以執(zhí)行由SCSI層提供的SCSI命令。iSCSI協(xié)議可以允許從本地附加的SCSI存儲設(shè)備到遠(yuǎn)程附加的SCSI存儲設(shè)備的無縫過渡。iSCSI服務(wù)可以提供iSCSI功能的部分卸載,卸載的級別與實(shí)現(xiàn)相關(guān)。簡言之,iSCSI使用常規(guī)的TCP連接,而iSER在RDMA上實(shí)現(xiàn)iSCSI。iSER使用RDMA連接并利用不同的RDMA功能來實(shí)現(xiàn)更好的恢復(fù)功能,改進(jìn)了等待時間和性能。由于RNIC同時支持iSCSI和iSER服務(wù),它使得SCSI能夠與支持不同級別的iSCSI實(shí)現(xiàn)的設(shè)備進(jìn)行通信。在iSCSI登錄階段執(zhí)行協(xié)議選擇(iSCSI對iSER)。
RDMA使用操作系統(tǒng)編程接口(稱為“verbs”)來將工作請求(WR)放置到工作隊列上。美國專利申請20040049600(Boyd等人,受讓給國際商業(yè)機(jī)器公司)中描述了使用工作請求實(shí)現(xiàn)iSER的一個實(shí)例。在該申請中,可以在來自主機(jī)的網(wǎng)絡(luò)卸載引擎中接收包括iSCSI命令的工作請求,并且響應(yīng)于接收到該工作請求,可以在轉(zhuǎn)換表中登記與所述主機(jī)關(guān)聯(lián)的存儲器區(qū)域。如在RDMA中,可以通過發(fā)送隊列接收所述工作請求,并且響應(yīng)于登記所述存儲器區(qū)域,一個完成隊列元素可以被放置在完成隊列上。

發(fā)明內(nèi)容
如下文中更詳細(xì)地描述的,本發(fā)明尋求提供一種借助RNIC的高效iSCSI卸載實(shí)現(xiàn),以及使用為RDMA開發(fā)的RNIC機(jī)制來達(dá)到此卸載級別。
按照本發(fā)明,可以使用用于RDMA功能的即刻可用的RNIC機(jī)制來實(shí)現(xiàn)所述iSCSI卸載功能。對于RDMA寫操作,這包括但不限于,以任何順序和任何SCSI緩沖區(qū)偏移量的到預(yù)先登記的SCSI緩沖區(qū)的數(shù)據(jù)入和數(shù)據(jù)出有效負(fù)載的遠(yuǎn)程直接數(shù)據(jù)放置。對于RDMA讀請求,可以使用相同的機(jī)制來處理入站R2T(“準(zhǔn)備傳輸”)PDU,并生成數(shù)據(jù)出PDU。例如,可以使用接收隊列和共享接收隊列來放置控制iSCSI PDU。
根據(jù)本發(fā)明的第一方面公開了一種方法,所述方法包括使用用于RDMA(遠(yuǎn)程直接存儲器訪問)功能的RNIC(啟用遠(yuǎn)程直接存儲器訪問的網(wǎng)絡(luò)接口控制器)機(jī)制來實(shí)現(xiàn)iSCSI(互聯(lián)網(wǎng)小型計算機(jī)系統(tǒng)接口)卸載發(fā)起方功能。
根據(jù)本發(fā)明的第二方面公開了一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括使用用于RDMA功能的RNIC機(jī)制來實(shí)現(xiàn)iSCSI卸載發(fā)起方功能的指令。
根據(jù)本發(fā)明的第三方面公開了一種系統(tǒng),所述系統(tǒng)包括RDMA服務(wù)單元;RDMA消息傳送單元,所述RDMA消息傳送單元可操作以處理入站和出站RDMA消息,并且使用由所述RDMA服務(wù)單元提供的服務(wù)來執(zhí)行直接放置和傳遞操作;以及iSCSI消息傳送單元,所述iSCSI消息傳送單元可操作以執(zhí)行iSCSI卸載發(fā)起方功能并處理入站和出站iSCSI PDU,所述iSCSI消息傳送單元適合于使用由所述RDMA服務(wù)單元提供的服務(wù)來執(zhí)行將由所述PDU攜帶的iSCSI有效負(fù)載直接放置和傳遞到登記的SCSI緩沖區(qū)。


通過以下結(jié)合附圖的詳細(xì)描述可以更充分地理解并認(rèn)識本發(fā)明,這些附圖是圖1是SCSI寫入和SCSI讀取事務(wù)的簡化流程圖;圖2是示出了排序規(guī)則和SCSI命令的iSCSI協(xié)議的簡化流程圖;圖3是根據(jù)本發(fā)明的一個實(shí)施例的分布式計算機(jī)系統(tǒng)的簡化方塊圖;圖4是根據(jù)本發(fā)明的一個實(shí)施例的用于實(shí)現(xiàn)iSCSI卸載功能的RDMA機(jī)制的簡化方塊圖;圖5是RDMA的遠(yuǎn)程存儲器訪問操作(讀取和寫入)的簡化流程圖;圖6是根據(jù)本發(fā)明的一個實(shí)施例的可以同時實(shí)現(xiàn)本地和遠(yuǎn)程地訪問系統(tǒng)存儲器的RDMA中的存儲器登記的簡化流程圖;圖7和8分別是根據(jù)本發(fā)明的一個實(shí)施例的由支持RNIC的RDMA進(jìn)行的iSCSI數(shù)據(jù)移動操作的卸載的簡化方塊圖和流程圖;圖9是根據(jù)本發(fā)明的一個實(shí)施例的使用基于RDMA的iSCSI卸載實(shí)現(xiàn)的軟件結(jié)構(gòu)的簡化方塊圖;圖10是根據(jù)本發(fā)明的一個實(shí)施例的在沒有硬件/軟件交互的情況下到SCSI緩沖區(qū)的iSCSI數(shù)據(jù)移動PDU的直接數(shù)據(jù)放置的簡化流程圖;圖11A和11B形成了根據(jù)本發(fā)明的一個實(shí)施例的處理數(shù)據(jù)入和RNIC請求的數(shù)據(jù)出以及執(zhí)行到登記的SCSI緩沖區(qū)的由那些PDU攜帶的iSCSI有效負(fù)載的直接數(shù)據(jù)放置的簡化流程圖;以及圖12是根據(jù)本發(fā)明的一個實(shí)施例的處理硬件中的入站R2T以及生成數(shù)據(jù)出PDU的簡化流程圖。
具體實(shí)施例方式
為了更好地理解本發(fā)明,現(xiàn)在提供了對iSCSI數(shù)據(jù)移動和卸載功能的一般性說明(參考圖1和圖2)。此后,將說明使用RDMA verb和機(jī)制(從圖4及以上)在分布式計算機(jī)系統(tǒng)(參考圖3描述)中實(shí)現(xiàn)iSCSI數(shù)據(jù)移動和卸載功能。
iSCSI協(xié)議交換iSCSI協(xié)議數(shù)據(jù)單元(PDU)以執(zhí)行由SCSI層提供的SCSI命令。iSCSI協(xié)議實(shí)現(xiàn)了從本地附加的SCSI存儲設(shè)備到遠(yuǎn)程附加的SCSI存儲設(shè)備的無縫過渡。
有兩個主要的iSCSI PDU組iSCSI控制和iSCSI數(shù)據(jù)移動PDU。iSCSI控制定義了多種類型的控制PDU,如SCSI命令、SCSI響應(yīng)、任務(wù)管理請求。數(shù)據(jù)移動PDU是一個較小的組,其包括但不限于R2T(準(zhǔn)備傳輸)、SCSI數(shù)據(jù)出(請求的和未經(jīng)請求的)以及SCSI數(shù)據(jù)入PDU。
如上所述,“發(fā)起方”指SCSI命令請求方(例如,主機(jī)),而“目標(biāo)”指SCSI命令響應(yīng)方(例如,諸如SCSI驅(qū)動器承載器、磁帶之類的I/O設(shè)備)。通過那些由發(fā)起方生成并由目標(biāo)處理以及那些由目標(biāo)生成并由發(fā)起方處理的命令,可以劃分所有iSCSI控制和數(shù)據(jù)移動命令。
現(xiàn)在參考圖1,其分別示出了SCSI寫入和SCSI讀取事務(wù)的流程。
在SCSI寫入流程中,發(fā)起方向目標(biāo)發(fā)送SCSI寫入命令(由標(biāo)號101指示)。此命令除了其他字段外還攜帶有發(fā)起方任務(wù)標(biāo)記(ITT),其標(biāo)識了應(yīng)被放置到盤(或目標(biāo)的其他部分)的SCSI緩沖區(qū)。SCSI寫入命令還可以攜帶即時數(shù)據(jù),其最大大小可以在iSCSI邏輯階段進(jìn)行協(xié)商。此外,SCSI寫入命令可以后跟所謂的未經(jīng)請求的數(shù)據(jù)出PDU。由目標(biāo)傳輸標(biāo)記(TTT)來標(biāo)識未經(jīng)請求的數(shù)據(jù)出PDU,在此情況下,TTT應(yīng)等于0xFFFFFFFF。未經(jīng)請求的數(shù)據(jù)的大小也在iSCSI登錄階段進(jìn)行協(xié)商。這兩種數(shù)據(jù)傳輸模式能夠減少短SCSI寫入操作上的等待時間,盡管這同樣也可以被用來在大型事務(wù)中傳輸初始數(shù)量的數(shù)據(jù)。在未經(jīng)請求或即時模式中可以傳輸?shù)淖畲髷?shù)據(jù)大小取決于目標(biāo)的緩沖能力。
在目標(biāo)接收到SCSI寫入命令后,目標(biāo)響應(yīng)以一個或多個R2T(由標(biāo)號102指示)。每個R2T都指示目標(biāo)已準(zhǔn)備好從SCSI緩沖區(qū)(無需按次序)中的指定偏移處接收指定量的數(shù)據(jù)。R2T攜帶兩個標(biāo)記來自SCSI命令的ITT和指示數(shù)據(jù)將被放置到其中的目標(biāo)緩沖區(qū)的TTT。
對于每個接收到的R2T,發(fā)起方可以發(fā)送一個或多個數(shù)據(jù)出PDU(由標(biāo)號103指示)。數(shù)據(jù)出PDU攜帶有來自SCSI緩沖區(qū)(由ITT指示)的數(shù)據(jù)。每個接收到的數(shù)據(jù)出都攜帶有指示在何處放置數(shù)據(jù)的TTT。最后接收到的數(shù)據(jù)出還攜帶有F-位(由標(biāo)號104指示)。此位指示已接收到最后的數(shù)據(jù)出,并且這通知目標(biāo)R2T交換已完成。
當(dāng)已通知目標(biāo)所有R2T都已經(jīng)完成時,目標(biāo)發(fā)送一個SCSI響應(yīng)PDU(由標(biāo)號105指示)。所述SCSI響應(yīng)攜帶有ITT并指示是否成功地完成了SCSI寫入操作。
在SCSI讀取流程中,發(fā)起方將SCSI讀取命令發(fā)送給目標(biāo)(由標(biāo)號106指示)。此命令除了其他字段外還攜帶有ITT,所述ITT標(biāo)識了從該處讀取數(shù)據(jù)的SCSI緩沖區(qū)。
所述目標(biāo)可以響應(yīng)以一個或多個數(shù)據(jù)入PDU(由標(biāo)號107指示)。每個數(shù)據(jù)入都攜帶有將被放置在SCSI緩沖區(qū)中的數(shù)據(jù)。數(shù)據(jù)入可以以任意順序到達(dá),并且可以具有任意大小。每個數(shù)據(jù)入都攜帶有ITT,該ITT標(biāo)識了SCSI緩沖區(qū)和將數(shù)據(jù)放置到該處的緩沖區(qū)偏移量。
數(shù)據(jù)入PDU流后跟SCSI響應(yīng)(由標(biāo)號108指示)。SCSI響應(yīng)攜帶有指示是否成功地完成了SCSI讀取操作的ITT。
注意,根據(jù)本發(fā)明的一個實(shí)施例,與現(xiàn)有技術(shù)不同,RNIC處理數(shù)據(jù)出和數(shù)據(jù)入以及R2T的流程。
現(xiàn)在參考圖2,其示出了iSCSI協(xié)議的一個實(shí)例。iSCSI協(xié)議具有明確定義的排序規(guī)則。iSCSI任務(wù)(標(biāo)號201)包括一個或多個SCSI命令202。在任意給定時刻,iSCSI任務(wù)201可以具有單個未完成的命令202。每個任務(wù)201由ITT 203來標(biāo)識。單個iSCSI連接可以具有多個未完成的iSCSI任務(wù)。iSCSI任務(wù)201的PDU 204可以在連接流中交織。每個iSCSI PDU204可以攜帶有若干序列號。與數(shù)據(jù)移動PDU有關(guān)的序列號包括但不限于R2TSN(R2T序列號)、DataSN和ExpDataSN,以及StatSN和ExpStatSN。
每個攜帶數(shù)據(jù)(數(shù)據(jù)出和數(shù)據(jù)入)的iSCSI PDU 204都攜帶有DataSN。對于數(shù)據(jù)入,所述DataSN對于每個SCSI讀取命令可以從0開始,并且可以隨每個發(fā)送的數(shù)據(jù)入由目標(biāo)來遞增。緊隨數(shù)據(jù)入之后的SCSI響應(yīng)PDU攜帶有ExpDataSN,其指示了為每個相應(yīng)的SCSI命令發(fā)送的數(shù)據(jù)入的數(shù)量。對于雙向SCSI命令,所述DataSN被數(shù)據(jù)入和R2T共享,其中所述R2T攜帶R2TSN而不是DataSN,但這些是用于同一字段的不同名稱,它們在iSCSI標(biāo)頭(BHS-緩沖區(qū)段處理堆棧)中具有相同的位置。
對于數(shù)據(jù)出,所述DataSN對于每個R2T都可以從0開始,并且可以隨每個發(fā)送的數(shù)據(jù)出由發(fā)起方來遞增。R2TSN可以由R2T來攜帶。對于每個SCSI寫入命令,R2TSN可以從0開始,并且可以隨每個發(fā)送的R2T由目標(biāo)來遞增。
DataSN和R2TSN都可以被用來遵循接收的數(shù)據(jù)移動PDU的次序。注意,iSCSI允許亂序放置接收的數(shù)據(jù),以及亂序執(zhí)行R2T。但是,iSCSI從發(fā)起方和目標(biāo)來請求實(shí)現(xiàn)以防止放置已被放置的數(shù)據(jù)或執(zhí)行已被執(zhí)行的R2T。
StatSN和ExpStatSN可以被用于目標(biāo)響應(yīng)緩沖區(qū)的管理。目標(biāo)可以隨每個生成的響應(yīng)來遞增StatSN。所述響應(yīng)以及可能用于該命令中的數(shù)據(jù)可以被保存在內(nèi)部目標(biāo)中,直到發(fā)起方使用ExpStatSN來確認(rèn)所述響應(yīng)的接收。以從發(fā)起方到目標(biāo)的方向流動的所有iSCSI PDU都可以攜帶ExpStatSN。發(fā)起方可以保持ExpStatSN單調(diào)地增加以允許所述目標(biāo)的高效實(shí)現(xiàn)。
如上所述,根據(jù)本發(fā)明的一個非限制性實(shí)施例,iSCSI卸載功能可以使用用于RDMA功能的RNIC機(jī)制來實(shí)現(xiàn)。首先,現(xiàn)在將說明用于分布式計算機(jī)系統(tǒng)中的RDMA中的工作隊列的概念的一般性解釋。
現(xiàn)在參考圖3,其示出了根據(jù)本發(fā)明的一個實(shí)施例的分布式計算機(jī)系統(tǒng)300。分布式計算機(jī)系統(tǒng)300可以包括,例如但不限于,因特網(wǎng)協(xié)議網(wǎng)絡(luò)(IP網(wǎng)絡(luò))和許多其他具有各種其他類型和配置的計算機(jī)系統(tǒng)。例如,實(shí)現(xiàn)本發(fā)明的計算機(jī)系統(tǒng)的范圍可以從具有一個處理器和少數(shù)輸入/輸出(I/O)適配器的小型服務(wù)器到具有多種處理器和I/O適配器的大量并行超級計算機(jī)系統(tǒng)。此外,本發(fā)明可以在由互聯(lián)網(wǎng)或內(nèi)聯(lián)網(wǎng)連接的遠(yuǎn)程計算機(jī)系統(tǒng)的基礎(chǔ)結(jié)構(gòu)中實(shí)現(xiàn)。
分布式計算機(jī)系統(tǒng)300可以連接任意數(shù)量和任何類型的主處理器節(jié)點(diǎn)301,諸如但不限于獨(dú)立處理器節(jié)點(diǎn)、存儲節(jié)點(diǎn)以及專用處理節(jié)點(diǎn)。這些節(jié)點(diǎn)中的任何一個節(jié)點(diǎn)都可以用作末端節(jié)點(diǎn),其在此被定義為分布式計算機(jī)系統(tǒng)300中產(chǎn)生或最終消費(fèi)消息或幀的設(shè)備。每個主處理器節(jié)點(diǎn)301都可以包括客戶302,其是在該主處理器節(jié)點(diǎn)301上執(zhí)行的過程。主處理器節(jié)點(diǎn)301還可以包括一個或多個IP套件卸載引擎(IPSOE)303,其可以以硬件或硬件和卸載微處理器(多個)的組合來實(shí)現(xiàn)。卸載引擎303可以支持多種用于將消息傳輸給IPSOE端口305的隊列對304。每個隊列對304都可以包括發(fā)送工作隊列(SWQ)和接收工作隊列(RWQ)。所述發(fā)送工作隊列可以被用來發(fā)送通道和存儲器語義消息。所述接收工作隊列可以接收通道語義消息??蛻艨梢允褂枚x需要被實(shí)現(xiàn)的語義的“verbs”將工作請求(WR)放置在工作隊列上。所述verbs還可以提供一種用于從完成隊列檢索已完成的工作的機(jī)制。
例如,客戶可以生成工作請求,它們作為工作隊列元素(WQE)被放置在工作隊列上。相應(yīng)地,發(fā)送工作隊列可以包括WQE,其描述了將在分布式計算機(jī)系統(tǒng)300的構(gòu)造上被傳輸?shù)臄?shù)據(jù)。接收工作隊列可以包括WQE,其描述了在何處放置來自分布式計算機(jī)系統(tǒng)300的構(gòu)造的入站通道語義數(shù)據(jù)。工作隊列元素可以由卸載引擎303中的硬件或軟件來處理。
完成隊列可以包括完成隊列元素(CQE),其包含與先前完成的工作隊列元素有關(guān)的信息。完成隊列可以被用來創(chuàng)建用于多個隊列對的一個或多個完成通知點(diǎn)。完成隊列元素是包含足夠信息以確定所述隊列對和已被完成的特定工作隊列元素的完成隊列上的數(shù)據(jù)結(jié)構(gòu)。完成隊列上下文是包含指針、長度,以及管理各個完成隊列所需的其他信息的信息塊。
RDMA讀取工作請求提供了存儲器語義操作以讀取遠(yuǎn)程節(jié)點(diǎn)上的虛擬相鄰存儲器空間。存儲器空間可以是存儲器區(qū)域的一部分,也可以是存儲器窗口的一部分。存儲器區(qū)域指先前登記的由虛擬地址和長度定義的虛擬相鄰存儲器地址集。存儲器窗口指已被綁定到先前登記的區(qū)域的虛擬相鄰存儲器地址集。類似地,RDMA寫入工作隊列元素提供了存儲器語義操作以寫入遠(yuǎn)程節(jié)點(diǎn)上的虛擬相鄰存儲器空間。
綁定(未綁定)遠(yuǎn)程訪問關(guān)鍵字(控制標(biāo)記-STag)工作隊列元素向卸載引擎硬件提供命令以便通過將存儲器窗口與存儲器區(qū)域關(guān)聯(lián)(或去關(guān)聯(lián))來修改(或破壞)所述存儲器窗口。STag是每個RDMA訪問的一部分并且被用來驗證遠(yuǎn)程過程已允許訪問緩沖區(qū)。
注意,下文中示出并描述的方法和系統(tǒng)可以由計算機(jī)程序產(chǎn)品306(諸如但不限于,網(wǎng)絡(luò)接口卡、硬盤、光盤、存儲設(shè)備等)來執(zhí)行,所述計算機(jī)程序產(chǎn)品可以包括用于執(zhí)行此處描述的方法和系統(tǒng)的指令。
現(xiàn)在參考圖4說明了用于實(shí)現(xiàn)iSCSI卸載功能的某些相關(guān)和有關(guān)的RDMA機(jī)制。
在RDMA中,主機(jī)A可以在沒有任何主機(jī)B的介入的情況下訪問主機(jī)B的存儲器。主機(jī)A決定在何處何時訪問主機(jī)B的存儲器,并且主機(jī)B并不知道此訪問的發(fā)生,除非主機(jī)A提供了明確的通知。
在主機(jī)A可以訪問主機(jī)B的存儲器之前,主機(jī)B必須登記將被訪問的存儲器區(qū)域。每個已登記的存儲器區(qū)域得到一個STag。STag與被稱作保護(hù)塊(PB)的保護(hù)表中的表項關(guān)聯(lián)。PB完整地描述了已登記的存儲器區(qū)域,包括其邊界、訪問權(quán)限等。RDMA允許登記物理上不連續(xù)的存儲器區(qū)域。此類區(qū)域由頁-列表(或塊-列表)來表示。PB也指向所述存儲器區(qū)域頁-列表(或塊-列表)。
RDMA只允許對登記的存儲器區(qū)域的遠(yuǎn)程訪問。所述存儲器區(qū)域STag被遠(yuǎn)程側(cè)使用以便在訪問存儲器時引用所述存儲器。對于存儲應(yīng)用,RDMA借助零基(zero-based)訪問來訪問存儲器區(qū)域。在零基訪問中,由標(biāo)記的直接數(shù)據(jù)放置協(xié)議(DDP)段攜帶的目標(biāo)偏移(TO)定義了所述登記的存儲器區(qū)域中的偏移。
現(xiàn)在參考圖5,其示出了RDMA的遠(yuǎn)程存儲器訪問操作(即,讀取和寫入)。使用攜帶有應(yīng)被放置到遠(yuǎn)程存儲器的數(shù)據(jù)的RDMA寫入消息-標(biāo)記的DDP消息,可以實(shí)現(xiàn)遠(yuǎn)程寫入操作(由標(biāo)號501指示)。
使用兩個RDMA消息-RDMA讀取請求和RDMA讀取響應(yīng)消息,可以實(shí)現(xiàn)遠(yuǎn)程讀取操作(由標(biāo)號502指示)。所述RDMA讀取是未標(biāo)記的DDP消息,它同時指定了需要從其取回數(shù)據(jù)的位置和放置所述數(shù)據(jù)的位置。所述RDMA讀取響應(yīng)是攜帶有由所述RDMA讀取請求所請求的數(shù)據(jù)的標(biāo)記的DDP消息。
處理入站標(biāo)記的DDP段(其同時用于RDMA寫入和RDMA讀取響應(yīng))的過程可以包括但不限于,讀取由STag引用的PB(503)、訪問驗證(504)、讀取區(qū)域頁-列表(轉(zhuǎn)換表)(505),以及對存儲器的直接寫入操作(506)??梢杂伤鯮NIC來排隊入站RDMA讀取請求(507)。此隊列被稱為讀取響應(yīng)工作隊列。
所述RNIC可以在所有先前的RDMA請求已被完成后按次序處理RDMA讀取請求(508),并且可以生成被發(fā)送回請求方的RDMA讀取響應(yīng)消息(509)。
處理RDMA讀取請求的過程可以包括但不限于,可選地將RDMA讀取請求排隊和解除排隊到寫入響應(yīng)WQ(510)、讀取由數(shù)據(jù)源STag引用的PB(所述STag引用從其進(jìn)行讀取的存儲器區(qū)域)(511)、訪問驗證(512)、讀取區(qū)域頁-列表(轉(zhuǎn)換表)(513),以及來自存儲器的直接讀取操作并生成RDMA讀取響應(yīng)段(514)。
RDMA定義了允許同時本地和遠(yuǎn)程地訪問系統(tǒng)存儲器的地址轉(zhuǎn)換和保護(hù)(ATP)機(jī)制。如現(xiàn)在將參考圖6說明的,此機(jī)制基于需要被訪問的存儲器的登記。
存儲器登記是遠(yuǎn)程存儲器訪問所需的強(qiáng)制操作。在RDMA中可以使用兩種方法存儲器窗口和快速存儲器登記。
當(dāng)將被遠(yuǎn)程地訪問的存儲器是靜態(tài)的并且提前知道該將被訪問的存儲器時(601),可以使用存儲器窗口方法(標(biāo)號600)。在此情況下,使用所謂的經(jīng)典存儲器登記方案來登記所述存儲器區(qū)域,其中由驅(qū)動器在具有或沒有硬件幫助的情況下執(zhí)行PB和轉(zhuǎn)換表(TT)的分配和更新(602)。這是一種同步操作,只有當(dāng)PB和TT都使用相應(yīng)信息被更新之后才可以完成此操作。存儲器窗口被用來允許(或禁止)對整個(或部分)登記的存儲器區(qū)域的遠(yuǎn)程存儲器訪問(603)。此過程被稱為窗口綁定,并在客戶請求時由所述RNIC來執(zhí)行。其要比存儲器登記快得多。但是,存儲器窗口并不是允許遠(yuǎn)程訪問的唯一方式。區(qū)域自身的STag也可以被用于此目的。因此,可以使用三種機(jī)制來訪問登記的存儲器使用靜態(tài)地登記的區(qū)域、使用綁定到這些區(qū)域的窗口和/或使用快速登記的區(qū)域。
如果預(yù)先并不知道用于遠(yuǎn)程訪問的存儲器(604),則使用預(yù)先登記的區(qū)域并不是高效的。相反,RDMA定義了一種快速存儲器登記和無效方法(605)。
此方法將存儲器登記過程分成兩部分-分配將由區(qū)域消耗的RNIC資源(606)(例如,用來保持頁-列表的PB和TT的一部分),以及更新PB和TT以保持區(qū)域特定的信息(607)。所述第一操作606可以由軟件來執(zhí)行,并且可以為每個STag執(zhí)行一次。所述第二操作607可以由軟件來發(fā)布并由硬件來執(zhí)行,并且可以被執(zhí)行多次(對于每個將被登記的新的區(qū)域/緩沖區(qū))。除快速存儲器登記外,RDMA還定義了無效操作,其使得能夠無效STag并在以后重新使用該STag(608)。
快速存儲器登記和無效操作都被定義為異步操作。它們作為工作請求被發(fā)布到RNIC發(fā)送隊列,并通過關(guān)聯(lián)的完成隊列來報告它們的完成。
RDMA定義了兩種類型的接收隊列-共享和非共享RQ。共享RQ可以在多個連接之間被共享,并且發(fā)布到此類隊列的接收WR可以被不同連接上接收的發(fā)送消息所消耗。非共享RQ始終與一個連接關(guān)聯(lián),并且發(fā)布到此類RQ的WR將被通過此連接接收的發(fā)送所消耗。
現(xiàn)在參考圖7和8,它們示出了根據(jù)本發(fā)明的一個實(shí)施例的借助支持RNIC的RDMA的iSCSI數(shù)據(jù)移動操作的卸載。
首先特別參考圖7。根據(jù)本發(fā)明的一個非限制性實(shí)施例,常規(guī)的RDMA卸載功能可以被分成兩部分RDMA服務(wù)單元700和RDMA消息傳送單元701。RDMA消息傳送單元701可以處理入站和出站RDMA消息,并且可以使用由RDMA服務(wù)單元700提供的服務(wù)來執(zhí)行直接放置和傳輸操作。為了實(shí)現(xiàn)iSCSI卸載,可以由iSCSI消息傳送單元702替代并執(zhí)行所述iSCSI卸載功能。iSCSI消息傳送單元702可以負(fù)責(zé)處理入站和出站iSCSI PDU,并且可以使用由RDMA服務(wù)單元700提供的服務(wù)來執(zhí)行直接放置和傳輸。
對于iSCSI和RDMA卸載功能兩者來說,由RDMA服務(wù)單元700提供的服務(wù)和接口是相同的。
現(xiàn)在參考圖8。所有iSCSI PDU都在軟件中生成(標(biāo)號801),除了在硬件中生成的數(shù)據(jù)出之外(802)。生成的iSCSI PDU可以作為發(fā)送工作請求被發(fā)布到發(fā)送隊列(803)。RNIC通過關(guān)聯(lián)的完成隊列來報告那些WR(成功的傳送操作)的完成(804)。
軟件負(fù)責(zé)將緩沖區(qū)發(fā)布到接收隊列(805)(例如,利用接收工作請求)。注意,通常在傳輸緩沖區(qū)之前發(fā)布接收緩沖區(qū)以避免任何不愉快的競爭情況。發(fā)布發(fā)送和接收緩沖區(qū)的特定次序并非本發(fā)明的要點(diǎn)并且可以留給實(shí)現(xiàn)者。所述緩沖區(qū)可以被用于入站控制和未經(jīng)請求的數(shù)據(jù)出PDU(806)??梢詳U(kuò)展RNIC以支持兩個RQ-一個用于入站iSCSI控制PDU,另一個用于入站未經(jīng)請求的數(shù)據(jù)出(807)。軟件可以使用共享RQ來改進(jìn)存儲器管理和用于iSCSI控制PDU的緩沖區(qū)的利用率(808)。
可以使用完成隊列來報告控制接收或未經(jīng)請求的數(shù)據(jù)出PDU(809)。可以通過用于消耗RQ中的WQE的iSCSI PDU的完成隊列或通過用于數(shù)據(jù)移動iSCSI PDU的異步事件隊列來報告在iSCSI PDU數(shù)據(jù)中檢測到的數(shù)據(jù)損壞或其他錯誤(810)。然后,RNIC可以處理下一個PDU(811)。
根據(jù)本發(fā)明的一個非限制性實(shí)施例,可以利用用于基于iSCSI和iSER的解決方案的統(tǒng)一軟件體系結(jié)構(gòu)來執(zhí)行使用基于RDMA的機(jī)制的iSCSI語義的實(shí)現(xiàn)。
現(xiàn)在參考圖9,其示出了使用基于RDMA的iSCSI卸載來實(shí)現(xiàn)的軟件結(jié)構(gòu)。SCSI層900通過iSCSI應(yīng)用協(xié)議與iSCSI驅(qū)動器901通信。數(shù)據(jù)移動器接口902與iSCSI驅(qū)動器901和iSER數(shù)據(jù)移動器903以及iSCSI數(shù)據(jù)移動器904接口。其中數(shù)據(jù)移動器接口902與這些元素接口的方式可以與由RDMA協(xié)會定義的標(biāo)準(zhǔn)數(shù)據(jù)移動器接口相一致。此類軟件結(jié)構(gòu)的一個非限制性優(yōu)點(diǎn)是iSCSI與iSER軟件堆棧之間的軟件組件和接口的高級共享。所述數(shù)據(jù)移動器接口允許拆分?jǐn)?shù)據(jù)移動和iSCSI驅(qū)動器的iSCSI管理功能。簡言之,所述數(shù)據(jù)移動器接口保證當(dāng)SCSI層900請求傳送命令(例如,為了完成用于發(fā)起方的SCSI命令)或發(fā)送/接收iSCSI數(shù)據(jù)序列(例如,為了完成用于目標(biāo)的SCSI命令的一部分)時所有必需的數(shù)據(jù)傳輸都將發(fā)生。
可以利用由RNIC 906實(shí)現(xiàn)的基于RDMA的服務(wù)905來卸載iSCSI和iSER數(shù)據(jù)移動器903和904的功能。根據(jù)本發(fā)明的一個實(shí)施例,使用RDMA機(jī)制來卸載iSCSI功能包括卸載iSCSI目標(biāo)和iSCSI發(fā)起方功能兩者。卸載功能(目標(biāo)和/或發(fā)起方)中的每一個功能都可以被單獨(dú)地并獨(dú)立于其他功能或端點(diǎn)來實(shí)現(xiàn)。換言之,發(fā)起方可以在無需任何更改或修改的情況下使數(shù)據(jù)移動操作卸載,并仍然與目標(biāo)的任何其他iSCSI實(shí)現(xiàn)進(jìn)行通信。對于卸載的iSCSI目標(biāo)功能也同樣如此。所有用于卸載iSCSI數(shù)據(jù)移動功能的RDMA機(jī)制都是本地的并且對遠(yuǎn)程側(cè)都是透明的。
現(xiàn)在參考圖10,其示出了根據(jù)本發(fā)明的一個實(shí)施例的在沒有硬件/軟件交互的情況下到SCSI緩沖區(qū)的iSCSI數(shù)據(jù)移動PDU的直接數(shù)據(jù)放置。首先,為RNIC提供了SCSI緩沖區(qū)的描述(例如,通過軟件)(標(biāo)號1001)。每個SCSI緩沖區(qū)都可以分別由ITT或TTT來唯一地標(biāo)識(1002)。所述SCSI緩沖區(qū)可以包括一個或多個頁或塊,并且可以由頁-列表或塊-列表來表示。
為了執(zhí)行直接數(shù)據(jù)放置,RNIC可以執(zhí)行一個兩步解決過程。第一步驟(1003)包括標(biāo)識給定ITT(或TTT)的SCSI緩沖區(qū),第二步驟(1004)包括定位列表中的頁/塊以讀/寫此頁/塊。所述第一和第二步驟都可以采用由RDMA定義的地址轉(zhuǎn)換和保護(hù)機(jī)制,并使用STag和RDMA存儲器登記語義來實(shí)現(xiàn)iSCSI ITT和TTT語義。例如,所述RDMA保護(hù)機(jī)制可以被用來定位SCSI緩沖區(qū)并使其免于未經(jīng)請求的訪問(1005),并且所述地址轉(zhuǎn)換機(jī)制可以允許對頁-列表或塊-列表中的頁/塊的高效訪問(1006)。為了對iSCSI數(shù)據(jù)移動PDU執(zhí)行類似于RDMA的遠(yuǎn)程存儲器訪問,發(fā)起方或目標(biāo)軟件可以登記所述SCSI緩沖區(qū)(1007)(例如,使用登記存儲器區(qū)域語義)。存儲器登記導(dǎo)致保護(hù)塊被與所述SCSI緩沖區(qū)關(guān)聯(lián)。以此方式,所述保護(hù)塊指向保存有描述所述SCSI緩沖區(qū)的頁-列表或塊-列表的轉(zhuǎn)換表表項。所述登記的存儲器區(qū)域可以是零基類型的存儲器區(qū)域,其允許在iSCSI數(shù)據(jù)移動PDU中使用緩沖區(qū)偏移來訪問SCSI緩沖區(qū)。
用在iSCSI控制PDU中的ITT和TTT可以獲得引用登記的SCSI緩沖區(qū)的STag的值(1008)。例如,由發(fā)起方生成的SCSI讀取命令可以攜帶等于所述登記的SCSI緩沖區(qū)的STag的ITT。相應(yīng)的數(shù)據(jù)入和SCSI響應(yīng)PDU也可以攜帶此STag。因此,所述STag可以被發(fā)起方用來執(zhí)行遠(yuǎn)程直接數(shù)據(jù)放置。對于SCSI寫入命令,所述目標(biāo)可以登記其為入站請求的數(shù)據(jù)出PDU分配的SCSI緩沖區(qū),并且可以使用等于R2T PDU中的SCSI緩沖區(qū)的STag的TTT(1009)。
本發(fā)明的此非限制性方法允許利用現(xiàn)有硬件和軟件機(jī)制來執(zhí)行iSCSI數(shù)據(jù)移動操作的高效卸載,保持如iSCSI規(guī)范中定義的這些操作的靈活性。
現(xiàn)在參考圖11A和11B,它們示出了根據(jù)本發(fā)明的一個實(shí)施例的使用參考圖10描述的RDMA保護(hù)和地址轉(zhuǎn)換方法借助RNIC來處理數(shù)據(jù)入和請求的數(shù)據(jù)出,以及執(zhí)行到登記的SCSI緩沖區(qū)的由那些PDU攜帶的iSCSI有效負(fù)載的直接數(shù)據(jù)放置。此外,所述RNIC可以跟蹤數(shù)據(jù)入和數(shù)據(jù)出的數(shù)據(jù)順序并實(shí)施由iSCSI規(guī)范定義的iSCSI排序規(guī)則,以及在數(shù)據(jù)事務(wù)結(jié)束時執(zhí)行PB的無效。
入站數(shù)據(jù)入和請求的數(shù)據(jù)出可以被RNIC完全類似地處理(分別由發(fā)起方和目標(biāo))?,F(xiàn)在將說明這些PDU類型都通用的處理。
RNIC首先檢測iSCSI數(shù)據(jù)入和請求的數(shù)據(jù)出PDU(1101)。這可以通過但不限于使用BHSOpcode和BHSTTT字段(如上所述,TTT=h‘FFFFFFFF’指示數(shù)據(jù)出PDU是未經(jīng)請求的,并且此類PDU作為控制iSCSI PDU被處理)來完成。RNIC可以將用于數(shù)據(jù)入PDU的BHSITT字段和用于數(shù)據(jù)出PDU的BHSTTT用作STag(當(dāng)其分別生成SCSI命令或R2T時,被所述驅(qū)動器先前所使用)。
所述RNIC可以查找PB(1102),例如,通過使用描述了相應(yīng)登記的SCSI緩沖區(qū)并驗證訪問權(quán)限的STag的索引字段。所述RNIC可以知道所述登記的SCSI緩沖區(qū)內(nèi)在該處訪問數(shù)據(jù)的位置(1103),例如,通過使用BHSBufferOffset。然后,所述RNIC可以使用地址轉(zhuǎn)換機(jī)制來解析頁/塊并執(zhí)行到所述登記的SCSI緩沖區(qū)的直接數(shù)據(jù)放置(或直接數(shù)據(jù)讀取)(1104)。
客戶軟件(驅(qū)動器)并不知道由RNIC執(zhí)行的直接放置操作。除非在請求的數(shù)據(jù)出PDU具有‘F-位’集的情況下,否則沒有完成通知。
除了直接放置操作(例如,在其之前),所述RNIC可以執(zhí)行入站PDU的順序驗證(1105)。數(shù)據(jù)入和數(shù)據(jù)出PDU都攜帶有DataSN。在數(shù)據(jù)入的情況下,可以為每個SCSI命令將DataSN置零,在數(shù)據(jù)出的情況下,可以為每個R2T將DataSN置零(1106)。RNIC可以將ExpDataSN保存在保護(hù)塊中(1107)。此字段可以在PB初始化時(快速存儲器登記)被初始化為零(1108)。借助每個入站數(shù)據(jù)入或請求的數(shù)據(jù)出PDU,此字段可以被與BHSDataSN進(jìn)行比較(1109)a.如果DataSN=ExpDataSN,則由RNIC接受并處理所述PDU,并增加ExpDataSN(1110)。
b.如果DataSN>ExpDataSN,則將錯誤報告給軟件(1111),諸如通過使用異步事件通知機(jī)制(有關(guān)的異步錯誤-排序錯誤)。然后,PB中的錯誤位被設(shè)置,并且每個引用此PB(使用STag)的入站PDU都將從該點(diǎn)開始被丟棄。這有效地意味著iSCSI驅(qū)動器將需要在iSCSI命令級別(或相應(yīng)的R2T級別)上進(jìn)行恢復(fù)。
c.最后一種情況是重影PDU的接收(DataSN<ExpDataSN)。在此情況下,接收的PDU被丟棄,并且沒有錯誤被報告給軟件(1112)。這允許如iSCSI規(guī)范定義的那樣來處理重復(fù)的iSCSI PDU。
在SCSI讀取命令的情況下,發(fā)起方接收后跟SCSI響應(yīng)的一個或多個數(shù)據(jù)入PDU(1113)。所述SCSI響應(yīng)可以攜帶BHSExpDataSN。此字段指示SCSI響應(yīng)之前的數(shù)據(jù)入的數(shù)量。為了完成iSCSI排序規(guī)則的執(zhí)行,RNIC可以將BHSExpDataSN與由該SCSI響應(yīng)攜帶的STag(ITT)引用的PBExpDataSN相比較。在不匹配的情況下,報告完成錯誤,表明已經(jīng)檢測到排序錯誤(1114)。
具有‘F-位’集的請求的數(shù)據(jù)出PDU指示此PDU完成了由相應(yīng)的R2T請求的事務(wù)(1115)。在此情況下,將完成通知傳遞給客戶軟件(1116)。例如,RNIC可以從接收隊列跳過一個WQE,并將CQE添加到指示數(shù)據(jù)出事務(wù)的完成的各個完成隊列。目標(biāo)軟件可以要求此通知以便知道R2T操作是否已經(jīng)完成,以及其是否可以生成確認(rèn)整個SCSI寫入操作已經(jīng)完成的SCSI響應(yīng)。注意,此通知可以是處理入站數(shù)據(jù)入和請求的數(shù)據(jù)出PDU時來自RNIC的對軟件的僅有的通知。上述排序驗證確保了所有數(shù)據(jù)出都已被成功地接收并被放置到登記的緩沖區(qū)。丟失最后的數(shù)據(jù)出PDU(攜帶有‘F-位’集)的情況可以由軟件(超時機(jī)制)所涵蓋。
可以由RNIC執(zhí)行以結(jié)束處理數(shù)據(jù)入和請求的數(shù)據(jù)出PDU的最后操作是保護(hù)塊的無效(1117)??梢詫哂小瓼-位’集的數(shù)據(jù)入和請求的數(shù)據(jù)出PDU執(zhí)行此操作。所述無效可以在從所述PDU標(biāo)頭收集的STag引用的PB上執(zhí)行??梢允褂糜糜谡埱蟮臄?shù)據(jù)出的CQE將無效的STag傳送給SCSI驅(qū)動器,或者在結(jié)束SCSI寫入命令(ITT字段)的SCSI響應(yīng)的標(biāo)頭中將無效的STag傳送給SCSI驅(qū)動器。這允許iSCSI驅(qū)動器重新使用釋放的STag以便用于下一個SCSI命令。
類似地,還可以執(zhí)行由目標(biāo)(1118)登記的區(qū)域的無效。注意,一種可替代的無效方法可以是無效由接收的SCSI響應(yīng)中的STag(ITT)引用的PB。
現(xiàn)在參考圖12,其示出了根據(jù)本發(fā)明的一個實(shí)施例的處理硬件中的入站R2T以及生成數(shù)據(jù)出PDU。
所述SCSI寫入命令可以導(dǎo)致發(fā)起方從目標(biāo)接收多個R2T(1201)。每個R2T都可以要求發(fā)起方從登記的SCSI緩沖區(qū)中的指定位置取回指定量的數(shù)據(jù),并使用數(shù)據(jù)出PDU將此數(shù)據(jù)發(fā)送給所述目標(biāo)(1202)。所述R2T攜帶有由發(fā)起方在SCSI命令中提供的ITT(1203)。如上所述,當(dāng)所述驅(qū)動器生成SCSI命令時,可以由驅(qū)動器而不是ITT來使用登記的SCSI緩沖區(qū)的STag(1204)。
可以使用BHSOpcode字段來標(biāo)識R2T PDU。使用BHSR2TSN字段,RNIC可以執(zhí)行R2T排序的驗證(1205)。所述RNIC將ExpDataSN字段保存在PB中。由于對于單向命令,發(fā)起方可以看到R2T或數(shù)據(jù)入的進(jìn)入,所以同一字段可以被用于排序驗證。對入站R2T的順序驗證可以與用于以上討論的數(shù)據(jù)入和數(shù)據(jù)出的順序驗證的過程相同(1206)。
使用與處理入站RDMA讀取請求的機(jī)制相同的機(jī)制,所述RNIC可以處理通過順序驗證的R2T(1207)。所述RNIC可以使用單獨(dú)的讀取響應(yīng)工作隊列來發(fā)布描述了需要由RNIC傳送邏輯發(fā)送的數(shù)據(jù)出的WQE(1208)(在RDMA讀取請求的情況下,RNIC可以排隊描述了RDMA讀取響應(yīng)的WQE)。傳送邏輯可以在發(fā)送WQ與讀取響應(yīng)WQ之間做出仲裁,并且可以根據(jù)內(nèi)部仲裁規(guī)則處理來自每個WQ的WQE(1209)。
每個接收到的R2T都可以產(chǎn)生單個數(shù)據(jù)出PDU(1210)。生成的數(shù)據(jù)出PDU可以攜帶來自由BHSITT(驅(qū)動器在SCSI命令生成時將STag放置在該處)引用的登記的SCSI緩沖區(qū)的數(shù)據(jù)。BHSBufferOffset和BHSDesireDataTransferLength可以標(biāo)識SCSI緩沖區(qū)中的偏移和數(shù)據(jù)事務(wù)的大小。
當(dāng)所述RNIC為具有F-位集的R2T PDU傳輸數(shù)據(jù)出時,所述RNIC可以在遠(yuǎn)程側(cè)確認(rèn)成功接收所述數(shù)據(jù)出PDU之后無效由STag(ITT)引用的保護(hù)塊。當(dāng)將傳送相應(yīng)的SCSI響應(yīng)PDU時,用于此SCSI寫入命令的STag可以被軟件重新使用。
一種可替代的存儲器區(qū)域無效的方法可以是無效由接收到的SCSI響應(yīng)中的STag(ITT)引用的PB。
出于示例和說明目的給出了對本發(fā)明的描述,并且所述描述并非旨在是窮舉的或是將本發(fā)明限于所公開的形式。對于本領(lǐng)域的技術(shù)人員來說,許多修改和變化是顯而易見的。實(shí)施例的選擇和描述是為了最佳地解釋本發(fā)明的原理、實(shí)際應(yīng)用,并且當(dāng)適合于所構(gòu)想的特定使用時,使得本領(lǐng)域的其他技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實(shí)施例。
權(quán)利要求
1.一種方法,所述方法包括使用用于遠(yuǎn)程直接存儲器訪問(RDMA)功能的啟用遠(yuǎn)程直接存儲器訪問的網(wǎng)絡(luò)接口控制器(RNIC)機(jī)制來實(shí)現(xiàn)互聯(lián)網(wǎng)小型計算機(jī)系統(tǒng)接口(iSCSI)卸載發(fā)起方功能。
2.根據(jù)權(quán)利要求1的方法,還包括單獨(dú)地并獨(dú)立于iSCSI目標(biāo)功能來卸載iSCSI發(fā)起方功能。
3.根據(jù)權(quán)利要求1的方法,其中實(shí)現(xiàn)所述iSCSI卸載發(fā)起方功能包括使用RDMA寫入操作邏輯的以任何次序和任何SCSI緩沖區(qū)偏移量的到預(yù)先登記的SCSI緩沖區(qū)的數(shù)據(jù)出有效負(fù)載的遠(yuǎn)程直接數(shù)據(jù)放置。
4.根據(jù)權(quán)利要求3的方法,包括借助用作控制標(biāo)記(STag)的目標(biāo)任務(wù)標(biāo)記(TTT)來標(biāo)識所述預(yù)先登記的SCSI緩沖區(qū)。
5.根據(jù)權(quán)利要求1的方法,其中實(shí)現(xiàn)所述iSCSI卸載發(fā)起方功能包括使用具有接收工作請求的RDMA接收隊列來放置控制iSCSI PDU。
6.根據(jù)權(quán)利要求5的方法,還包括通過關(guān)聯(lián)的完成隊列來報告所述接收工作請求的完成。
7.根據(jù)權(quán)利要求1的方法,其中實(shí)現(xiàn)所述iSCSI卸載發(fā)起方功能包括提供通過iSCSI應(yīng)用協(xié)議與iSCSI驅(qū)動器通信的SCSI層;以及提供與所述iSCSI驅(qū)動器、用于RDMA的iSCSI擴(kuò)展(iSER)數(shù)據(jù)移動器以及iSCSI數(shù)據(jù)移動器接口的數(shù)據(jù)移動器接口。
8.根據(jù)權(quán)利要求7的方法,還包括使用所述數(shù)據(jù)移動器接口來拆分?jǐn)?shù)據(jù)移動和所述iSCSI驅(qū)動器的iSCSI管理功能。
9.根據(jù)權(quán)利要求1的方法,其中實(shí)現(xiàn)所述iSCSI卸載發(fā)起方功能包括將生成的iSCSI PDU作為發(fā)送工作請求發(fā)布到發(fā)送隊列以及通過關(guān)聯(lián)的完成隊列來報告所述發(fā)送工作請求的完成。
10.根據(jù)權(quán)利要求1的方法,其中實(shí)現(xiàn)所述iSCSI卸載發(fā)起方功能包括實(shí)現(xiàn)RDMA地址轉(zhuǎn)換和保護(hù)(ATP)機(jī)制以實(shí)現(xiàn)對預(yù)先登記的SCSI緩沖區(qū)的直接訪問、借助用作STag的TTT來標(biāo)識所述預(yù)先登記的SCSI緩沖區(qū)、定位頁和塊中的至少一個以及對所述頁和塊中的至少一個執(zhí)行讀取和寫入操作中的至少一個操作。
11.一種系統(tǒng),所述系統(tǒng)包括RDMA服務(wù)單元;RDMA消息傳送單元,所述RDMA消息傳送單元可操作以處理入站和出站RDMA消息,并且使用由所述RDMA服務(wù)單元提供的服務(wù)來執(zhí)行直接放置和傳送操作;以及iSCSI消息傳送單元,所述iSCSI消息傳送單元可操作以執(zhí)行iSCSI卸載發(fā)起方功能并處理入站和出站iSCSI PDU,所述iSCSI消息傳送單元適合于使用由所述RDMA服務(wù)單元提供的服務(wù)來執(zhí)行將由所述PDU攜帶的iSCSI有效負(fù)載直接放置和傳送到登記的SCSI緩沖區(qū)。
12.根據(jù)權(quán)利要求11的系統(tǒng),其中所述iSCSI卸載發(fā)起方功能包括單獨(dú)地并獨(dú)立于iSCSI目標(biāo)功能來卸載iSCSI發(fā)起方功能。
13.根據(jù)權(quán)利要求11的系統(tǒng),其中所述iSCSI卸載發(fā)起方功能包括使用RDMA寫入操作邏輯的以任何次序和任何SCSI緩沖區(qū)偏移量的到預(yù)先登記的SCSI緩沖區(qū)的數(shù)據(jù)出有效負(fù)載的遠(yuǎn)程直接數(shù)據(jù)放置。
14.根據(jù)權(quán)利要求13的系統(tǒng),其中所述iSCSI卸載發(fā)起方功能還包括借助用作STag的TTT來標(biāo)識所述預(yù)先登記的SCSI緩沖區(qū)。
15.根據(jù)權(quán)利要求11的系統(tǒng),其中所述iSCSI卸載發(fā)起方功能包括使用具有接收工作請求的RDMA接收隊列來放置控制iSCSI PDU以及通過關(guān)聯(lián)的完成隊列來報告所述接收工作請求的完成。
16.根據(jù)權(quán)利要求11的系統(tǒng),其中所述iSCSI卸載發(fā)起方功能包括通過iSCSI應(yīng)用協(xié)議與iSCSI驅(qū)動器通信的SCSI層;以及與所述iSCSI驅(qū)動器、用于RDMA的iSCSI擴(kuò)展(iSER)數(shù)據(jù)移動器以及iSCSI數(shù)據(jù)移動器接口的數(shù)據(jù)移動器接口。
17.根據(jù)權(quán)利要求16的系統(tǒng),其中所述數(shù)據(jù)移動器接口適合于拆分?jǐn)?shù)據(jù)移動和所述iSCSI驅(qū)動器的iSCSI管理功能。
18.根據(jù)權(quán)利要求11的系統(tǒng),其中所述iSCSI卸載發(fā)起方功能包括將生成的iSCSI PDU作為發(fā)送工作請求發(fā)布到發(fā)送隊列以及通過關(guān)聯(lián)的完成隊列來報告所述發(fā)送工作請求的完成。
19.根據(jù)權(quán)利要求11的系統(tǒng),其中所述iSCSI卸載發(fā)起方功能包括實(shí)現(xiàn)RDMA地址轉(zhuǎn)換和保護(hù)(ATP)機(jī)制以實(shí)現(xiàn)對預(yù)先登記的SCSI緩沖區(qū)的直接訪問、借助用作STag的TTT來標(biāo)識所述預(yù)先登記的SCSI緩沖區(qū)、定位頁和塊中的至少一個以及對所述頁和塊中的至少一個執(zhí)行讀取和寫入操作中的至少一個操作。
20.一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括用于實(shí)現(xiàn)權(quán)利要求1到10中的任一方法的指令。
全文摘要
一種包括使用用于遠(yuǎn)程直接存儲器訪問(RDMA)功能的啟用遠(yuǎn)程直接存儲器訪問的網(wǎng)絡(luò)接口控制器(RNIC)機(jī)制來實(shí)現(xiàn)互聯(lián)網(wǎng)小型計算機(jī)系統(tǒng)接口(iSCSI)卸載發(fā)起方功能的方法和系統(tǒng)。
文檔編號H04L29/06GK1818890SQ20061000193
公開日2006年8月16日 申請日期2006年1月19日 優(yōu)先權(quán)日2005年1月21日
發(fā)明者V·馬赫瓦克斯, G·比朗, Z·馬舒爾斯基, K·Z·梅特, R·雷西奧 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
巫山县| 浦东新区| 红河县| 韩城市| 鸡西市| 大新县| 阿鲁科尔沁旗| 定兴县| 巴马| 东城区| 双牌县| 绥德县| 定襄县| 内黄县| 佛坪县| 武安市| 萨嘎县| 肃宁县| 承德县| 定安县| 淮北市| 大石桥市| 彝良县| 开鲁县| 社旗县| 磴口县| 寻甸| 金湖县| 马尔康县| 杭锦后旗| 齐齐哈尔市| 工布江达县| 铜川市| 纳雍县| 古浪县| 南投县| 河津市| 大渡口区| 九龙坡区| 化德县| 广昌县|