iSCSI协议及实现
iSCSI协议简介
涉及到的SCSI的概念
启动设备和目标设备
启动设备(initiator):发起I/O请求的设备
目标设备(target):响应请求执行实际I/O操作的设备
在启动设备和目标设备建立连接后,目标设备在操作中作为主设备控制整个工作过程
一般情况下主机适配器HBA作为启动设备,磁盘/磁带作为目标设备
涉及到的SCSI的概念
CDB:命令描述块。SCSI的命令及参数是填充在一定长度的数据块内传输的
典型的SCSI系统
SCSI的缺点
SCSI是点对点的、直接相连的计算机到存储器的设备接口,不适用于主机到存储器的存储网络通讯
SCSI总线的长度被限制在25米以内,对于Ultra SCSI长度限制为12米,不适于构造各种网络拓扑结构
SCSI总线上设备数限制为15,不适用于多服务器对多存储设备的网络结构
iSCSI的概念
iSCSI是关于SCSI的命令
、数据和状态到TCP/IP
网络的映射的 协议
对TCP层的改造和增加较
低功能层(对TCP层透明)
是为了适应大批量存储数
据传输的需要
iSCSI协议现状
IETF正在制定iSCSI协议标准,最新草案是draft-ietf-ips-iSCSI-06
IETF:http://www.ietf.org/
IPS工作组:http://www.ece.cmu.edu/~ips/
iSCSI产品
Cisco SN 5420 Storage Router
IBM TotalStorage IP Storage 200i
用Cisco SN 5420构造的存储系统
iSCSI协议结构
1.概述
2.协议数据单元格式
3.用于iSCSI协议的SCSI模式参数
4.登录相
5.登录相之外的工作参数协商
6.错误处理和恢复
iSCSI的命名和编址
iSCSI使用类似URL的iSCSI名字来唯一鉴别启动设备和目标设备。
地址会随着启动设备和目标设备的移动而改变,但名字始终是不变的
iSCSI的命名和编址
一个iSCSI名字由三部分组成:类型定义符、名字认证机构、由该认证机构分配的名字
iscsi.com.acme.sn.8675309
iSCSI地址格式
[:]/
iSCSI的发现机制
启动设备可以通过下列方法发现目标设备:
在启动设备上设置目标设备的地址
在启动设备上设置默认目标设备地址,启动设备可通过“SendTargets”命令从默认目标设备上获取iSCSI名字列表
发出服务定位协议(SLP)广播请求,等待目标设备回应
查询存储设备名字服务器获取可访问的目标设备列表
iSCSI会话(session)
启动设备和目标设备之间的TCP连接构成一次会话
一个会话包含一个或多个TCP连接
会话由会话号区分,会话号包括启动设备部分和目标设备部分
会话中包含的TCP连接可以增加也可以删除,这些连接由连接号(CID)区分
命令编号
从启动设备到目标设备SCSI层的命令由iSCSI编号,该号码由iSCSI协议数据单元中的命令序列号(CmdSN)携带
目标设备的iSCSI层必须按命令序列号的顺序把命令传递给SCSI层
目标设备的SCSI层接收到命令后该命令序列号即失效。命令序列号也能被用来进行命令的流量控制
iSCSI登录和协商
iSCSI登录是用来在启动设备和目标设备之间建立TCP连接的机制
登录的作用包括鉴别通讯双方、协商会话参数、打开相关安全协议并且给属于该会话的连接作标记
登录过程完成后,iSCSI会话进入全功能相(full feature phase),这时启动设备就能通过iSCSI协议访问目标设备里的各逻辑单元了
响应/状态编号
从目标设备到启动设备的响应由iSCSI编号,在iSCSI协议数据单元中用状态序列号(StatSN)表示
启动设备提供期望状态序列号ExpStatSN来确认状态
如果状态序列号和期望状态序列号不同则意味着连接出现了错误
协议数据单元格式
iSCSI启动设备命令基本首部(BHS)
iSCSI协议的实现
iSCSI代码来源
iscsi-Apr6.tgz:
Intel (http://sourceforge.net)
kernel_emulator_10.tgz:
IOL(InterOperability Lab) of UNH(University of New Hampshire) (http://www.iol.unh.edu)
Iscsi-0.1.tar.gz:
iSCSI research team of UML(University of Massachusetts Lowell) (http
1