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