高性能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