專利名稱:iSCSI封包的數(shù)據(jù)解析方法
技術(shù)領(lǐng)域:
本發(fā)明公開了一種數(shù)據(jù)解析方法,特別有關(guān)于一種iSCSI封包的數(shù)據(jù)解析方法。
背景技術(shù):
因特網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口(internet Small Computer Systems hterface,簡(jiǎn) 稱iSCSI)為工程任務(wù)編組(Internet Engineering Task Force, IETF)提出的通信協(xié)議 標(biāo)準(zhǔn)。iSCSI通過TCP/TP通信協(xié)議連接網(wǎng)絡(luò)的多臺(tái)計(jì)算機(jī)主機(jī),以串聯(lián)多個(gè)分散于因特網(wǎng) 的儲(chǔ)存設(shè)備成為虛擬的網(wǎng)絡(luò)儲(chǔ)存設(shè)備。使用者存取此網(wǎng)絡(luò)儲(chǔ)存設(shè)備,就如同存取本機(jī)硬盤 裝置。相較于傳統(tǒng)小型計(jì)算機(jī)系統(tǒng)接口(Small Computer Systems hterface,簡(jiǎn)稱SCSI) 及冗余磁盤陣列(Redundant Array of Independent Disks, RAID)技術(shù),iSCSI 技術(shù)兼具 SCSI的高速傳輸能力,卻又不受限于儲(chǔ)存設(shè)備的擴(kuò)充/備分能力,可無(wú)限制擴(kuò)充虛擬儲(chǔ)存 設(shè)備的容量。此虛擬儲(chǔ)存設(shè)備稱為儲(chǔ)存局域網(wǎng)絡(luò)(Storage Area Network,SAN),主要由發(fā) 起端anitiator)及目標(biāo)端(target)構(gòu)成。發(fā)起端傳送存取請(qǐng)求與目標(biāo)端建立通話聯(lián)機(jī) (Session)0在因特網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口協(xié)議中定義了很多種封裝數(shù)據(jù)的格式,其中大部是 用于協(xié)議管理和錯(cuò)誤恢復(fù)使用。但真正涉及到因特網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口的數(shù)據(jù)傳輸只有 SCSI 指令負(fù)載單元(SCSI CMD PDU)、負(fù)載單元的數(shù)據(jù)(Data In PDU)、Data Out PDU, R2T PDU的格式。所以為能加速因特網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口的存取速度,可以對(duì)目標(biāo)端所傳送的 負(fù)載單元的數(shù)據(jù)著手,藉以加速發(fā)起端的存取。但是經(jīng)過每一層的封包解析需要耗費(fèi)許多 的時(shí)間。因此如何加快封包的解析處理,將有效的提高整體的存取效率。
發(fā)明內(nèi)容
鑒于以上的問題,本發(fā)明的主要目的在于提供一種iSCSI封包的數(shù)據(jù)解析方法, 用于加速解析iSCSI封包所傳遞的異步訊息封包。為達(dá)上述目的,本發(fā)明公開了一種iSCSI封包的數(shù)據(jù)解析方法,其用以加速解析 于一 iSCSI封包所傳遞的一異步訊息封包,該數(shù)據(jù)解析方法包括以下步驟建立一發(fā)起端與一目標(biāo)端的通信,并將該異步訊息封包發(fā)送至該發(fā)起端;通過該發(fā)起端的一區(qū)段重組引擎將該異步訊號(hào)封包解析出一發(fā)起端任務(wù)標(biāo)簽;由該發(fā)起端任務(wù)標(biāo)簽中提取出該發(fā)起端的一主機(jī)緩沖地址信息;以及發(fā)出一直接存取內(nèi)存命令,用以將該iSCSI封包的一負(fù)載內(nèi)容直接寫入相應(yīng)該主 機(jī)緩沖地址信息的內(nèi)存地址。于建立該發(fā)起端與該目標(biāo)端的通信步驟前還包括由該目標(biāo)端在該發(fā)起端任務(wù)標(biāo) 簽中記錄一區(qū)段重組信息,該區(qū)段重組信息具有一區(qū)塊數(shù)量值與一區(qū)塊容量值。該發(fā)起端任務(wù)標(biāo)簽為32位長(zhǎng)度,將該發(fā)起端任務(wù)標(biāo)簽的0 15位記錄一工作種 類(task)且該發(fā)起端任務(wù)標(biāo)簽的16 31位記錄該區(qū)塊數(shù)量值與該區(qū)塊容量值。該發(fā)起端任務(wù)標(biāo)簽為32位長(zhǎng)度,將該發(fā)起端任務(wù)標(biāo)簽的0 15位記錄一 task種類且該發(fā)起端任務(wù)標(biāo)簽的16 31位記錄該區(qū)塊數(shù)量值與一區(qū)塊位置偏移量。將該發(fā)起端任務(wù)標(biāo)簽記錄于該異步訊息封包的標(biāo)頭中。本發(fā)明提供了一種iSCSI封包的數(shù)據(jù)解析方法。本發(fā)明對(duì)目標(biāo)端所傳送的數(shù)據(jù)封 包的內(nèi)容進(jìn)行調(diào)整,藉以加速整體的存取速度。有關(guān)本發(fā)明的特征與實(shí)作,茲配合圖示作最佳實(shí)施例詳細(xì)說明如下。
圖1為本發(fā)明的架構(gòu)示意圖;圖2為本發(fā)明的運(yùn)作流程示意圖;圖3為本發(fā)明的發(fā)起端任務(wù)標(biāo)簽的封包格式示意圖;圖4為本發(fā)明的解析運(yùn)作示意圖。其中,附圖標(biāo)記發(fā)起端110主機(jī)總線配接器111目標(biāo)端120儲(chǔ)存設(shè)備130
具體實(shí)施例方式為能加速iSCSI的封包解析處理,因此本發(fā)明從發(fā)起端來(lái)看當(dāng)進(jìn)行讀取操作時(shí), 真正從目標(biāo)端攜帶數(shù)據(jù)的只有負(fù)載單元中的數(shù)據(jù)(Data In PDU)。所以如果想對(duì)發(fā)起端進(jìn) 行讀取操作的加速,則需要對(duì)負(fù)載單元中的數(shù)據(jù)進(jìn)行修改。請(qǐng)參考圖1所示,其為本發(fā)明的 架構(gòu)示意圖。在因特網(wǎng)小型計(jì)算機(jī)接口的網(wǎng)絡(luò)封包的處理系統(tǒng)包括有發(fā)起端110、目標(biāo)端 120與儲(chǔ)存設(shè)備130。發(fā)起端110用以向目標(biāo)端120發(fā)出存取請(qǐng)求。在發(fā)起端110中另包括一主機(jī)總線 配接器111 (Host Bus Adapter,簡(jiǎn)稱HBA)。主機(jī)總線配接器111的主要作用是用來(lái)對(duì)TCP/ IP封包與iSCSI封包進(jìn)行封包解析的動(dòng)作。儲(chǔ)存設(shè)備130用以儲(chǔ)存目標(biāo)信息。目標(biāo)端120 接收來(lái)自發(fā)起端110的存取請(qǐng)求,目標(biāo)端120根據(jù)存取請(qǐng)求用以存取儲(chǔ)存設(shè)備130中的目 標(biāo)信息并將目標(biāo)信息傳送至發(fā)起端110。其中,目標(biāo)端120、發(fā)起端110與儲(chǔ)存設(shè)備130間 系利用因特網(wǎng)相互傳遞網(wǎng)絡(luò)封包。請(qǐng)參考圖2所示,其為本發(fā)明的運(yùn)作流程示意圖。本發(fā)明的解析方法包括以下步 驟步驟S210 建立發(fā)起端與目標(biāo)端的通信,并將異步訊息封包(asynchronous message PDU)發(fā)送至發(fā)起端;步驟S220 通過發(fā)起端的區(qū)段重組引擎Segment Reassemble Engine)將異步訊 號(hào)封包解析出發(fā)起端任務(wù)標(biāo)簽(Initiator Task Tag,簡(jiǎn)稱ITT);步驟S230 由發(fā)起端任務(wù)標(biāo)簽中提取出發(fā)起端的主機(jī)緩沖地址信息;以及步驟S240 發(fā)出直接存取內(nèi)存命令,用以將iSCSI封包的負(fù)載內(nèi)容直接寫入相應(yīng) 主機(jī)緩沖地址信息的內(nèi)存地址。首先,建立發(fā)起端110與目標(biāo)端120的通信(對(duì)應(yīng)步驟S210)。當(dāng)兩端建立通信后,目標(biāo)端120會(huì)發(fā)出異步訊息封包發(fā)送至發(fā)起端110。在本發(fā)明中對(duì)異步訊息封包的負(fù) 載單元的數(shù)據(jù)(Data In PDU)、發(fā)起端110任務(wù)標(biāo)簽字段、發(fā)起端110與韌體的內(nèi)存地址傳 遞方式及硬件對(duì)iSCSI協(xié)議做出了下述修改,并請(qǐng)同時(shí)配合圖3。發(fā)起端110任務(wù)標(biāo)簽具 有32位的字段的封包,可以使用高位的16位來(lái)存放SCSI生成區(qū)塊(SG-Block)中的位置 信息,以便定位地址信息;低位的16位存放task的下標(biāo)。在目標(biāo)端120的驅(qū)動(dòng)器(Driver)負(fù)責(zé)把主機(jī)緩沖區(qū)(host buffer)地址以訊息 的形式(message)傳遞給韌體,而訊息的格式定義如下sg_addr0-主機(jī)的搜索清單(sg list)的基本地址sg_dma_start -搜索清單的第一區(qū)塊的索引定位sg_dma_len-搜索清單的連續(xù)定位數(shù)量sg_cnt-搜索清單中地址長(zhǎng)度的總數(shù)量Sg_add0中記錄搜索清單的起始地址,sg_Cnt標(biāo)識(shí)所有搜索清單的數(shù)量。通過 sg_add0把搜索清單的地址傳遞給韌體。韌體就可以通過直接存取內(nèi)存(Direct Memory Access, DMA)的方式把這些搜索清單的地址信息放到相應(yīng)的區(qū)塊中,使得底層的數(shù)據(jù)操作 考已從區(qū)塊中取出相應(yīng)的SCSI生成信息,用直接存取內(nèi)存去拿主機(jī)上的數(shù)據(jù)。韌體上的區(qū) 塊不需由驅(qū)動(dòng)器分配,驅(qū)動(dòng)器只需要知道總共有多少個(gè)區(qū)塊、每個(gè)區(qū)塊的大小與這些區(qū)塊 的狀態(tài)。驅(qū)動(dòng)器就可以通過區(qū)塊當(dāng)前的使用狀態(tài)知道下一個(gè)命令的搜索清單該占用從第幾 個(gè)開始的多少個(gè)區(qū)塊,韌體得到這些信息后會(huì)進(jìn)行處理。存放搜索清單的緩沖區(qū)應(yīng)該由驅(qū)動(dòng)器來(lái)進(jìn)行分配,以iSCSi_taSk_Sg_t的形式存 在,先把搜索清單轉(zhuǎn)成下述的結(jié)構(gòu)形式。在本發(fā)明的此一實(shí)施態(tài)樣中這個(gè)結(jié)構(gòu)是12個(gè)字 節(jié),知道搜索清單的個(gè)數(shù)就可以算出需要多少空間及需要占用韌體上多少個(gè)區(qū)塊。typedef struct iscsi—task—sg—s {—uint32_t addr—high; 一uint32_t addr—low; —uint32_t Ien;} iscsi一task一sg一t;發(fā)起端110的區(qū)段重組引擎將異步訊號(hào)封包解析出發(fā)起端110任務(wù)標(biāo)簽(對(duì)應(yīng)步 驟S220),在本發(fā)明的解析過程通過主機(jī)總線配接器111來(lái)進(jìn)行的。請(qǐng)配合圖4所述,其為本 發(fā)明的解析運(yùn)作示意圖。發(fā)起端110任務(wù)標(biāo)簽在iSCSI協(xié)議中的作用是區(qū)分不同的iSCSI 任務(wù)(iSCSI Task),本發(fā)明用以實(shí)現(xiàn)發(fā)起端110的任務(wù)和收到的iSCSI負(fù)載單元(iSCSI PDU)。由發(fā)起端110將其填充在iSCSI負(fù)載單元的文件頭(iSCSI PDU Header)中。接著, 目標(biāo)端120返回的所有針對(duì)該任務(wù)的iSCSI負(fù)載單元的文件頭中都會(huì)攜帶相同的發(fā)起端 110任務(wù)標(biāo)簽進(jìn)行標(biāo)識(shí)。所以我們可以在搜尋清單的SCSI生成區(qū)塊字段中存放SCSI指令 (SCSI CMD)相關(guān)地址的位置信息封裝進(jìn)發(fā)起端110任務(wù)標(biāo)簽。這樣當(dāng)收到目標(biāo)端120返 回的數(shù)據(jù)時(shí),就能從發(fā)起端110任務(wù)標(biāo)簽中直接拿到SCSI生成區(qū)塊中的位置信息。同時(shí)還 要保證通過發(fā)起端110任務(wù)標(biāo)簽?zāi)軌蛘业綄?duì)應(yīng)的任務(wù)所以可以用兩部分來(lái)組成發(fā)起端110任務(wù)標(biāo)簽。如前文所述,發(fā)起端Iio任務(wù)標(biāo)簽高端的16位來(lái)存放SCSI生成區(qū)塊中的位置 信息,以便定位地址信息;低端的16位存放任務(wù)的下標(biāo),以便在發(fā)起端110的任務(wù)池(task pool)中找到對(duì)應(yīng)的任務(wù)。換言之,發(fā)起端110任務(wù)標(biāo)簽的0 15位記錄任務(wù)種類且發(fā)起 端110任務(wù)標(biāo)簽的16 31位記錄區(qū)塊數(shù)量值與區(qū)塊容量值。最后,由發(fā)起端110發(fā)出直接存取內(nèi)存命令,將iSCSI封包的負(fù)載內(nèi)容直接寫入相 應(yīng)主機(jī)緩沖地址信息的內(nèi)存地址。區(qū)段重組引擎從網(wǎng)絡(luò)卡接收到網(wǎng)絡(luò)包后進(jìn)行解析。iSCSI 層只在快速路徑(fast path)中處理負(fù)載單元的數(shù)據(jù)。這是因?yàn)樨?fù)載單元的數(shù)據(jù)才有攜帶 數(shù)據(jù),而其它的負(fù)載單元的數(shù)據(jù)只是進(jìn)行基本協(xié)議檢測(cè)。所以具體的解析和錯(cuò)誤處理動(dòng)作 都由軟件在慢路徑(slow path)中完成。當(dāng)區(qū)段重組引擎解析到負(fù)載單元的數(shù)據(jù)時(shí)就可以 從發(fā)起端110任務(wù)標(biāo)簽中提取出SCSI生成區(qū)塊的位置信息,然后再?gòu)南鄳?yīng)的SCSI生成區(qū) 塊中取出主機(jī)緩沖區(qū)的地址信息,之后就可以針對(duì)該地址發(fā)送直接存取內(nèi)存的請(qǐng)求將封包 中的數(shù)據(jù)寫到主機(jī)(意即發(fā)起端110)緩沖區(qū)中(對(duì)應(yīng)步驟S230 步驟S240)。本發(fā)明提供了一種iSCSI封包的數(shù)據(jù)解析方法。本發(fā)明對(duì)目標(biāo)端120所傳送的數(shù) 據(jù)封包的內(nèi)容進(jìn)行調(diào)整,藉以加速整體的存取速度。
權(quán)利要求
1.一種iSCSI封包的數(shù)據(jù)解析方法,其用以加速解析于一 iSCSI封包所傳遞的一異步 訊息封包,其特征在于,該數(shù)據(jù)解析方法包括以下步驟建立一發(fā)起端與一目標(biāo)端的通信,并將該異步訊息封包發(fā)送至該發(fā)起端;通過該發(fā)起端的一區(qū)段重組引擎將該異步訊號(hào)封包解析出一發(fā)起端任務(wù)標(biāo)簽;由該發(fā)起端任務(wù)標(biāo)簽中提取出該發(fā)起端的一主機(jī)緩沖地址信息;以及發(fā)出一直接存取內(nèi)存命令,用以將該iSCSI封包的一負(fù)載內(nèi)容直接寫入相應(yīng)該主機(jī)緩 沖地址信息的內(nèi)存地址。
2.如權(quán)利要求1所述的iSCSI封包的數(shù)據(jù)解析方法,其特征在于,于建立該發(fā)起端與該 目標(biāo)端的通信步驟前還包括由該目標(biāo)端在該發(fā)起端任務(wù)標(biāo)簽中記錄一區(qū)段重組信息,該區(qū)段重組信息具有一區(qū)塊 數(shù)量值與一區(qū)塊容量值。
3.如權(quán)利要求2所述的iSCSI封包的數(shù)據(jù)解析方法,其特征在于,該發(fā)起端任務(wù)標(biāo)簽為 32位長(zhǎng)度,將該發(fā)起端任務(wù)標(biāo)簽的0 15位記錄一工作種類(task)且該發(fā)起端任務(wù)標(biāo)簽 的16 31位記錄該區(qū)塊數(shù)量值與該區(qū)塊容量值。
4.如權(quán)利要求2所述的iSCSI封包的數(shù)據(jù)解析方法,其特征在于,該發(fā)起端任務(wù)標(biāo)簽為 32位長(zhǎng)度,將該發(fā)起端任務(wù)標(biāo)簽的0 15位記錄一 task種類且該發(fā)起端任務(wù)標(biāo)簽的16 31位記錄該區(qū)塊數(shù)量值與一區(qū)塊位置偏移量。
5.如權(quán)利要求1所述的iSCSI封包的數(shù)據(jù)解析方法,其特征在于,將該發(fā)起端任務(wù)標(biāo)簽 記錄于該異步訊息封包的標(biāo)頭中。
全文摘要
本發(fā)明公開了一種iSCSI封包的數(shù)據(jù)解析方法,用于加速解析iSCSI封包所傳遞的異步訊息封包。數(shù)據(jù)解析方法包括下列步驟建立發(fā)起端與目標(biāo)端的通信,并將異步訊息封包發(fā)送至發(fā)起端;通過發(fā)起端的區(qū)段重組引擎將異步訊號(hào)封包解析出發(fā)起端任務(wù)標(biāo)簽;由發(fā)起端任務(wù)標(biāo)簽中提取出發(fā)起端的主機(jī)緩沖地址信息;發(fā)出直接存取內(nèi)存命令,將iSCSI封包的負(fù)載內(nèi)容直接寫入相應(yīng)主機(jī)緩沖地址信息的內(nèi)存地址。
文檔編號(hào)H04L12/56GK102055729SQ20091020794
公開日2011年5月11日 申請(qǐng)日期2009年11月2日 優(yōu)先權(quán)日2009年11月2日
發(fā)明者朱明勝, 陳玄同 申請(qǐng)人:英業(yè)達(dá)股份有限公司