- 相關(guān)推薦
高性能iSCSI設(shè)計分析
引言
iSCSI是由Cisco和IBM共同發(fā)起的,并于2003年2月11日, 被IETF( Internet EngineeringTask Force, 互聯(lián)網(wǎng)工程任務組) 通過的新的網(wǎng)絡存儲標準[4]。它是一種在Internet協(xié)議網(wǎng)絡上, 特別是在以太網(wǎng)上進行數(shù)據(jù)塊傳輸?shù)臉藴。是一個供硬件設(shè)備使用的可以在IP協(xié)議上層運行的SCSI指令集。簡單地說, iSCSI 可以實現(xiàn)在IP 網(wǎng)絡上運行SCSI 協(xié)議, 使其能夠在諸如高速千兆以太網(wǎng)上進行路由選擇。而整個過程在用戶看來,使用遠端的存儲設(shè)備就像訪問本地的SCSI 設(shè)備一樣簡單。iSCSI協(xié)議利用現(xiàn)有的TCP/IP 網(wǎng)絡傳輸SCSI協(xié)議命令和數(shù)據(jù),價格較低,傳輸距離也不受限制,但協(xié)議開銷較大。主要是因為CPU在處理TCP/IP這層協(xié)議的開銷較大,占用了較多的系統(tǒng)資源和CPU時鐘。為此許多學者提出了很多改進措施,例如TOE(TCP/IP offload engine)技術(shù),它使用硬件來承擔TCP/IP等網(wǎng)絡協(xié)議數(shù)據(jù)包處理的絕大部分工作,將主機CPU從繁重的網(wǎng)絡協(xié)議處理工作中解放出來,同時也大大提高了處理的效率。采用具有TOE的網(wǎng)卡實現(xiàn)iSCSl協(xié)議,主機CPU和軟件部分就只需要完成iSCSl協(xié)議數(shù)據(jù)單元的封裝、解封裝,下層的處理工作由網(wǎng)卡完成。但是對于處理大量的小數(shù)據(jù)塊來說這種技術(shù)又會成為系統(tǒng)瓶頸。因此本文設(shè)計一種基于UDP數(shù)據(jù)傳輸?shù)母咝阅躨SCSI軟件來提高數(shù)據(jù)的處理和傳輸率,即采用基于UDP的數(shù)據(jù)傳輸,數(shù)據(jù)的傳輸與命令、狀態(tài)的傳輸分離來提高數(shù)據(jù)傳輸率,同時減輕了CUP處理繁瑣的TCP數(shù)據(jù)包的負擔。
1 基于 UDP 數(shù)據(jù)傳輸?shù)膇SCSI 模型
iSCSI 協(xié)議棧的傳輸層使用的是TCP,而TCP 協(xié)議在數(shù)據(jù)處理方面比較保守,在傳輸大量的數(shù)據(jù)時,勢必占用過多的CUP 時鐘。如果完全用UDP 代替,又達不到可靠的要求,本文結(jié)合TCP 與UDP 作為iSCSI 協(xié)議棧的并行傳輸層。其結(jié)構(gòu)模型。TCP 主要是用來建立可靠的連接和傳輸讀寫命令及狀態(tài),保障命令被執(zhí)行完,如果出錯則要求重傳命令。UDP 的作用是在iSCSI 進入全功能階段后傳輸大量數(shù)據(jù)。并且iSCSI 層在數(shù)據(jù)方面設(shè)計了數(shù)據(jù)序號機制和錯誤恢復機制來加強數(shù)據(jù)的可靠傳輸。
1.1 iSCSI 數(shù)據(jù)序號機制
在iSCSI中一條命令的執(zhí)行可能涉及到多個PDU,如數(shù)據(jù)(DATA)PDU和準備傳輸(R2T)PDU,iSCSI規(guī)定用一個DataSN參數(shù)來同步這些PDU。這個參數(shù)是基于命令范圍內(nèi)的,對于輸入命令(iSCSI中方向是以客戶端為參照物的),如讀命令,目標器將數(shù)據(jù)分成多個DATA-INPDU,DataSN由0開始,從第一個DATA-IN PDU向后依次遞增。一旦發(fā)現(xiàn)數(shù)據(jù)序號出錯則要求重傳所缺序號的數(shù)據(jù)才能給與確認和續(xù)傳之后的數(shù)據(jù)。
對于寫命令,客戶端要將待輸出的數(shù)據(jù)分成多個DATA-OUT PDU 傳往目標器DataSN也是從每個R2T 的第一個DATA-OUT PDU 起以0 開始,以后每個DATA-OUT 遞增1,這時的DATA PDU 是針對R2T 而言。
對于雙向命令如讀-寫命令,則是采用上面的兩種方向結(jié)合方式,這里不再舉例。Data和R2T PDU 不像命令和狀態(tài)都有一個明確的確認信息,在iSCSI 中DATA-OUT 和R2T 對端都不會給予任何確認信息,但對DATA-IN PDU 啟動器可以通過一種叫(總是由目標器發(fā)出)SNACK 命令給予確認。通過DataSN 和R2TSN 以及SNACK(序列號確認)可以使啟動器和目標器很容易的檢測出丟失的數(shù)據(jù)PDU。
1.2 iSCSI 錯誤恢復機制
iSCSI的恢復模型規(guī)定了啟動器端每個支持錯誤恢復的connection都必須實現(xiàn)下面的功能:
-使用NOP-OUT命令來獲取目標器的序列機制息。
-能夠進行命令重傳。
-支持R2T的恢復。
-能夠使用SNACK要求目標器重傳狀態(tài)、Data或R2T PDU。
-確認已接收的數(shù)據(jù)。
-重新分配命令忠貞。
-在session恢復時必須徹底終結(jié)老的session。
同樣這個恢復模型也為目標器規(guī)定了一些必須實現(xiàn)的功能:
-使用NOP-IN探測啟動器的序列信息。
-可以使用R2T要求啟動啟動器重傳數(shù)據(jù)。
-支持SNACK功能。
-可以要求啟動器對自己發(fā)送的Data序列予以確認。
-支持命令忠貞的再分配。
-終結(jié)session。
iSCSI錯誤恢復機制從高到低依次是0級(會話恢復), 1級(冗余恢復),2級(連接恢復)三層。一般的實現(xiàn)是1級或2級,本文實驗使用的是0級,使得數(shù)據(jù)可靠性更高。由于iSCSI有以上2種機制,即使采用UDP包進行數(shù)據(jù)傳輸也會保證數(shù)據(jù)正確可靠的傳輸,再參照可看出,TCP層和iSCSI層在數(shù)據(jù)可靠性保證方面從語義上來說是重復的,而且TCP能保證命令順利完成,否則會要求重發(fā)命令或重新建立連接,所以本改進協(xié)議使用UDP也能保證數(shù)據(jù)可靠。
2 高性能 iSCSI 讀寫處理設(shè)計
啟動設(shè)備通過登錄建立與目標設(shè)備的會話(session),登錄成功后目標設(shè)備賦予啟動設(shè)備會話號(sessionID)。其中登錄過程中在建立TCP連接的時候,給每個連接一個CID(connection ID),對于每個TCP連接我們配套添加UDP套接字接口來進行數(shù)據(jù)的傳輸,一旦一個連接出錯(如TCP連接錯誤,傳輸異常等),為了保證命令的連接忠貞,可以為該命令分配一個新的連接及相應的UDP套接字接口。連接成功后,雙方再通過協(xié)商確定各種參數(shù),然后會話進入iSCSI全功能階段,可以發(fā)命令對設(shè)備進行讀寫操作了,下面來分析新iSCSI的讀寫過程設(shè)計。
2.1 iSCSI 讀處理
內(nèi)進數(shù)據(jù)的讀處理設(shè)計過程如,此圖是啟動器協(xié)議棧執(zhí)行SCSI讀操作所處理內(nèi)進數(shù)據(jù)PDU(數(shù)據(jù)從目標器流向啟動器為內(nèi)進數(shù)據(jù),否則為外出數(shù)據(jù))的過程。一個iSCSI PDU的默認大8Kb,可能被包含在多個UDP包中,當NIC收到這些包時,通過DMA(Direct MemoryAccess)把它們放到NIC(Network Interface Control)緩沖區(qū)然后中斷CUP,設(shè)備驅(qū)動棧使用Rx接收線程和UDP控制塊來執(zhí)行UDP/IP處理,即去掉Eth/UDP/IP頭部。前5步就是處理UDP/IP及其下層。第6-10步處理相關(guān)的iSCSI層,首先iSCSI層從套接字讀iSCSI頭部到內(nèi)部臨時緩沖區(qū)。iSCSI頭部是由48字節(jié)的基本頭部,CRC校驗和,以及一些可選的附加頭部組成。第7步計算CRC,然后與附加在頭部上的CRC進行比較,如果相符,則iSCSI層去掉頭部并把內(nèi)進的iSCSI PDU作為數(shù)據(jù)PDU處理。第8步,在頭部中包含一個標識值,根據(jù)它能把數(shù)據(jù)PDU放在SCSI緩沖中正確的位置;基于PDU的長度以及相對偏移,iSCSI層創(chuàng)建一個指向SCSI緩沖區(qū)的聚集鏈表。然后iSCSI層把聚集鏈表傳給套接字接口(從UDP包復制iSCSI PDU負載到SCSI緩沖區(qū)),第10步驗證整個PDU數(shù)據(jù)負載CRC校驗和。
2.2 iSCSI 寫處理
顯示的是啟動器對目標器執(zhí)行SCSI寫外出數(shù)據(jù)PDU的處理流程。啟動器端的iSCSI層必須在一個SCSI緩沖區(qū)中保留指向下一次寫到目標端的數(shù)據(jù)PDU的指針。一旦收到從目標端傳來的流控制(如R2T)PDU,iSCSI層立即傳輸數(shù)據(jù)PDU。首先構(gòu)造iSCSI頭部并計算頭部的CRC值,把CRC值附加在頭部上(1)。然后iSCSI層創(chuàng)建聚集鏈表來描述這個頭部、頭部的的CRC以及iSCSI PDU負載,接著計算負載數(shù)據(jù)的CRC值并把它添加到聚集鏈表中(2)。最后數(shù)據(jù)通過內(nèi)核接口到UDP/IP棧再傳到目標器。對于UDP/IP棧的實現(xiàn)問題,數(shù)據(jù)要么直接從SCSI緩沖區(qū)到NIC要么經(jīng)過復制到一個臨時套接字緩沖區(qū)(3,4,5)。UDP/IP棧加上自己的鏈接頭部和負載描述符來分別指向包頭和UDP負載(6,7)。最后協(xié)議棧發(fā)送信號給NIC,通過DMA把數(shù)據(jù)發(fā)送出去(8)。
3 實驗結(jié)果分析
本實驗是由2臺主機構(gòu)建iSCSI啟動器和目標器模塊,啟動端是自主開發(fā)的支持UDP數(shù)據(jù)傳輸?shù)膇SCSI模塊加載到windows XP內(nèi)核中所構(gòu)成,目標端是修改的linux下的HNU的修改版(支持UDP數(shù)據(jù)),再在中間加上千兆以太網(wǎng)交換機連接構(gòu)成實驗環(huán)境。首先啟動兩模塊,把目標端的磁盤映射成啟動端的虛擬磁盤。然后啟動器端機器隨機讀寫不同大小的數(shù)據(jù)塊。
并通過對傳統(tǒng)的iSCSI做對比實驗,讀寫結(jié)果的實驗數(shù)據(jù)所示。實驗結(jié)果表明高性能iSCSI能提高大概20%~30%的讀吞吐率,20%~25%的寫吞吐率。從可看出所讀寫的數(shù)據(jù)塊越小效果越明顯,這是因為大數(shù)據(jù)塊進行分片和重組所需時間較多,塊越小使用UDP效果更明顯。顯示的是CUP利用率的對比圖,其結(jié)果表明,在訪問的數(shù)據(jù)塊大于512kB時,改進的iSCSI對CPU的利用率比傳統(tǒng)的低10%~15%。實驗充分證明了使用UDP數(shù)據(jù)傳輸?shù)膇SCSI的優(yōu)越性。
4 結(jié)論
本文給出了基于UDP數(shù)據(jù)傳輸?shù)膇SCSI,它能大幅提高數(shù)據(jù)處理和傳輸?shù)男,減輕了CUP的負擔。但是也存在不少問題,一旦數(shù)據(jù)異常過多就需要重啟iSCSI會話,重新建立連接,將花費更多的額外時間。如果跨越網(wǎng)絡數(shù)較多的話,由于數(shù)據(jù)出錯概率相對較大,不適于使用基于UDP數(shù)據(jù)傳輸?shù)膇SCSI軟件,需要后續(xù)改進完善。
中國碩士論文網(wǎng)提供大量免費碩士畢業(yè)論文,如有業(yè)務需求請咨詢網(wǎng)站客服人員!
[參考文獻] (References)
[1] 任勁,謝長生,iSCSI 協(xié)議性能分析[J].計算機工程與科學,2006, 28(6):16-18
[2] 陳大恒,閆立偉,陳南等,基于Windows 內(nèi)核模式的iSCSI 啟動器設(shè)計[J].計算機工程與設(shè)計, 2007,28(9):2161-2164
[3] 胡風華.基于以太網(wǎng)的存儲系統(tǒng)研究[D].北京:中國科學院計算技術(shù)研究所,2005
[4] Satran J,Meth K,Sapuntzakis C,et a1.Internet small computer systems interface(iSCSI)[EB/OL].NetworkWorking Group,2004-04
[5] Tan Huailiang,Tang Weixin,Sun Jianhua. An I/O Acceleration Technology for Networkcomputing: i-TRM[C].Proc of the 2012 International Conference on computer Science and Software Engineering.
[6] NianminYao, Shaozhen Wang,Jianming Zhao.Optimization of Flow Control Mechanism in iSCSI[C].Proc of 2012 IEEE Computer Society .Washington.DC: IEEE Computer Press, 2012: 140-145
【高性能iSCSI設(shè)計分析】相關(guān)文章:
高性能數(shù)據(jù)采集系統(tǒng)芯片LM12H458及其應用05-28
現(xiàn)代建筑框架結(jié)構(gòu)設(shè)計分析06-10
城市道路高架橋的設(shè)計分析論文04-30
住房裝修分析05-11
認識“業(yè)務分析”08-25
分析基于三維掃描的特種設(shè)備管理系統(tǒng)設(shè)計論文05-26
企業(yè)變現(xiàn)能力分析02-23
蘊涵與句義分析05-28