iSCSI协议及实现.ppt_第1页
iSCSI协议及实现.ppt_第2页
iSCSI协议及实现.ppt_第3页
iSCSI协议及实现.ppt_第4页
iSCSI协议及实现.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

iSCSI协议及实现,iSCSI协议简介,涉及到的SCSI的概念,启动设备和目标设备启动设备(initiator):发起I/O请求的设备目标设备(target):响应请求执行实际I/O操作的设备在启动设备和目标设备建立连接后,目标设备在操作中作为主设备控制整个工作过程一般情况下主机适配器HBA作为启动设备,磁盘/磁带作为目标设备,涉及到的SCSI的概念,CDB:命令描述块。SCSI的命令及参数是填充在一定长度的数据块内传输的,SCSIread(6)CDB,典型的SCSI系统,SCSI的缺点,SCSI是点对点的、直接相连的计算机到存储器的设备接口,不适用于主机到存储器的存储网络通讯SCSI总线的长度被限制在25米以内,对于UltraSCSI长度限制为12米,不适于构造各种网络拓扑结构SCSI总线上设备数限制为15,不适用于多服务器对多存储设备的网络结构,SCSI传输协议,iSCSI的概念,iSCSI是关于SCSI的命令、数据和状态到TCP/IP网络的映射的协议对TCP层的改造和增加较低功能层(对TCP层透明)是为了适应大批量存储数据传输的需要,iSCSI协议现状,IETF正在制定iSCSI协议标准,最新草案是draft-ietf-ips-iSCSI-06IETF:/IPS工作组:/ips/,iSCSI产品,CiscoSN5420StorageRouterIBMTotalStorageIPStorage200i,用CiscoSN5420构造的存储系统,iSCSI协议结构,1.概述2.协议数据单元格式3.用于iSCSI协议的SCSI模式参数4.登录相5.登录相之外的工作参数协商6.错误处理和恢复,iSCSI的命名和编址,iSCSI使用类似URL的iSCSI名字来唯一鉴别启动设备和目标设备。地址会随着启动设备和目标设备的移动而改变,但名字始终是不变的,iSCSI的命名和编址,一个iSCSI名字由三部分组成:类型定义符、名字认证机构、由该认证机构分配的名字.acme.sn.8675309iSCSI地址格式:/,iSCSI的发现机制,启动设备可以通过下列方法发现目标设备:在启动设备上设置目标设备的地址在启动设备上设置默认目标设备地址,启动设备可通过“SendTargets”命令从默认目标设备上获取iSCSI名字列表发出服务定位协议(SLP)广播请求,等待目标设备回应查询存储设备名字服务器获取可访问的目标设备列表,iSCSI会话(session),启动设备和目标设备之间的TCP连接构成一次会话一个会话包含一个或多个TCP连接会话由会话号区分,会话号包括启动设备部分和目标设备部分会话中包含的TCP连接可以增加也可以删除,这些连接由连接号(CID)区分,命令编号,从启动设备到目标设备SCSI层的命令由iSCSI编号,该号码由iSCSI协议数据单元中的命令序列号(CmdSN)携带目标设备的iSCSI层必须按命令序列号的顺序把命令传递给SCSI层目标设备的SCSI层接收到命令后该命令序列号即失效。命令序列号也能被用来进行命令的流量控制,iSCSI登录和协商,iSCSI登录是用来在启动设备和目标设备之间建立TCP连接的机制登录的作用包括鉴别通讯双方、协商会话参数、打开相关安全协议并且给属于该会话的连接作标记登录过程完成后,iSCSI会话进入全功能相(fullfeaturephase),这时启动设备就能通过iSCSI协议访问目标设备里的各逻辑单元了,响应/状态编号,从目标设备到启动设备的响应由iSCSI编号,在iSCSI协议数据单元中用状态序列号(StatSN)表示启动设备提供期望状态序列号ExpStatSN来确认状态如果状态序列号和期望状态序列号不同则意味着连接出现了错误,协议数据单元格式,iSCSI启动设备命令基本首部(BHS),iSCSI协议的实现,iSCSI代码来源,iscsi-Apr6.tgz:Intel()kernel_emulator_10.tgz:IOL(InterOperabilityLab)ofUNH(UniversityofNewHampshire)()Iscsi-0.1.tar.gz:iSCSIresearchteamofUML(UniversityofMassachusettsLowell)(/mbrown/iscsi),程序的运行,启动设备端:insmodscsi_target.oinsmodiscsi_target.o客户端:insmodiscsi.oinsmodiscsi_client.ofdisk/dev/sdamke2fs/dev/sda1mounttext2/dev/sda1/mnt/iscsiraiddev/dev/md0(多个目标设备),程序的结构(目标设备),1.STML(SCSITargetmid-level)处理SCSI命令2.FETD(front-endTargetdriver)将STML发来的命令数据封装成底层通讯协议数据包的格式发送到网络上或者将从网络接受到的数据包解包传递给STML,将STML和FETD分开的原因,增强程序的可重用性STML是通用的FETD是和底层采用的通讯协议(TCP/IP、Fibrechannel)相关的,程序功能模块图,STML提供给FETD的API,register_target_template()deregister_target_template()register_target_front_end()deregister_target_front_end()rx_cmnd()scsi_rx_data()scsi_target_done()scsi_release()rx_task_mgmt_fn(),FETD提供给STML的API,detect()release()xmit_response()rdy_to_xfer()task_mgmt_fn_done()report_aen(),重要的数据结构,structTarget_EmulatorstructScsi_Target_TemplatestructScsi_Target_DevicestructTarget_Scsi_Cmndstructscsi_requeststructTarget_Scsi_Messagestructscsi_cmndstructsg_io_hdr_t,STML的初始化,初始化一个structTarget_Emulator类型的全局变量创建线程scsi_target_process_thread处理大多数的STML的工作进入等待,FETD的初始化,向STML注册,STML将其加入设备队列创建线程iscsi_server_thread监听端口4002进入等待,FETD向STML的注册过程,FETD向STML的注册过程,FETD向STML注销过程,FETD对请求的响应,当在4002端口监听的线程接收请求后创建线程iscsi_rx_thread接收SCSI命令创建线程iscsi_tx_thread传送应答和状态FETD创建一个Target_Scsi_Cmnd类型的数据接收SCSI命令,将其加入命令队列,唤醒STML的线程STT处理收到的SCSI命令,STML对FETD的响应,调用handle_cmd处理命令队列调用hand_to_front_end返回处理结果处理结果加入FETD的发送队列xmit_queue等待发送在结果发送完成后调用scsi_target_dones释放资源,读类型命令的处理,iSCSI的应用,采用iSCSI的设备的特点,采用了iSCSI协议的硬件设备是NAS和SAN的中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论