1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 高性能iSCSI設計分析

        時間:2023-03-03 14:11:14 碩士畢業論文 我要投稿
        • 相關推薦

        高性能iSCSI設計分析

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

        中國碩士論文網提供大量免費碩士畢業論文,如有業務需求請咨詢網站客服人員!
          
          [參考文獻] (References)
          [1] 任勁,謝長生,iSCSI 協議性能分析[J].計算機工程與科學,2006, 28(6):16-18
          [2] 陳大恒,閆立偉,陳南等,基于Windows 內核模式的iSCSI 啟動器設計[J].計算機工程與設計, 2007,28(9):2161-2164
          [3] 胡風華.基于以太網的存儲系統研究[D].北京:中國科學院計算技術研究所,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設計分析】相關文章:

        教育論文:淺談教學設計中的任務分析11-21

        高性能數據采集系統芯片LM12H458及其應用05-28

        現代建筑框架結構設計分析06-10

        城市道路高架橋的設計分析論文04-30

        住房裝修分析05-11

        認識“業務分析”08-25

        分析基于三維掃描的特種設備管理系統設計論文05-26

        企業變現能力分析02-23

        蘊涵與句義分析05-28

        平面廣告設計中的科學性和藝術性分析論文05-01

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>