iscsi技术Word下载.docx
- 文档编号:6043800
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:14
- 大小:146.24KB
iscsi技术Word下载.docx
《iscsi技术Word下载.docx》由会员分享,可在线阅读,更多相关《iscsi技术Word下载.docx(14页珍藏版)》请在冰点文库上搜索。
SCSI是1979年由美国的施加特(Shugart)公司(希捷的前身)研发并制订,由美国国家标准协会(ANSI)公布的接口标准。
SCSIArchitectureModel(SAM-3)用一种较松散的方式定义了SCSI的体系架构。
图1-1
SCSI体系结构分解图
SCSIArchitectureModel-3,是SCSI体系模型的标准规范;
它自底向上分为4个层次:
●
物理连接层(PhysicalInterconnects)——如FibreChannelArbitratedLoop、FibreChannelPhysicalInterfaces;
回应response,在iSCSI协议中也沿用了这套思路。
图1-2
SCSI设备服务和任务请求交互模型
第2章
iSCSI协议
2.1
iSCSI协议栈描述
iSCSI是集成了SCSI协议和TCP/IP协议的新的协议。
它是在SCSI基础上扩展了网络功能,也就是可以让SCSI命令通过网络传送到远程SCSI设备上,而SCSI协议只能访问本地的SCSI设备。
iSCSI是传输层之上的协议,使用TCP连接建立会话。
在initiator端的TCP端口号随机选取,target的端口号默认是3260。
iSCSI使用客户/服务器模型。
客户端称为initiator,服务器端称为target。
Initiator:
通常指用户主机系统,用户产生SCSI请求,并将SCSI命令和数据封装到TCP/IP包中发送到IP网络中。
Target:
通常存在于存储设备上,用于转换TCP/IP包中的SCSI命令和数据。
图2-1
iSCSI协议栈
2.2
iSCSI通信模型
iSCSI结构模型见下图,从图中可以看出,在iSCSI结构模型中的网络实体可以包含多个iSCSI节点(Initiator或者Target),而网络实体之间又通过网络入口(NetworkPortal)连接。
2.3
iSCSI名字规范
iSCSI协议中,initiator和target是通过名字进行通信的,因此,每一个iSCSI节点(即initiator)必须拥有一个iSCSI名字。
iSCSI协议定义了3类名称结构:
1、iqn(iSCSIQualifiedName)
格式是:
“iqn”+“年月”+“.”+“域名的颠倒”+“:
”+“设备的具体名称”,之所以颠倒域名是为了避免可能的冲突。
举例:
iqn.2008-.h3c.rd:
test
2、eui(ExtendUniqueIdentifier)
eui来源与IEEE中的EUI,格式是:
“eui”+
“64bits的唯一标识(16个字母)”。
64bits中,前24bits(6个字母)是公司的唯一标识,后面40bits(10个字母)是设备的标识。
eui.acde48234667abcd
3、naa(NetworkAddressAuthority)
由于SAS协议和FC协议都支持naa,
iSCSI协议定义也支持这种名字结构。
naa的格式:
“naa”+“64bits(16个字母)或者128bits(32个字母)的唯一标识”。
naa.52004567BA64678D
naa.62004567BA64678D0123456789ABCDEF
在实际使用过程中,iSCSI节点名称可以不这么复杂。
第3章
iSCSI协议会话交互过程
3.1
背景
3.1.1
会话和连接的概念
1.
会话(Session)
Initiator和Target间的一组TCP连接,逻辑层概念(等价于SCSI规范中的I_Tnexus)
2.
连接(Connection)
Initiator和Target间的一个TCP连接,实体层概念(源地址:
源端口号+目的地址:
目的端口号唯一确定了一个TCP连接)
iSCSI报文交互是在由连接构成的会话上进行的。
iSCSI协议在设计的时候,为了提高性能,允许在1个会话包含多个连接,在会话建立过程中,第一个连接建立成功的同时会话也成功建立。
3.
连接忠贞(ConnectionAllegiance)
在iSCSI协议中,有连接忠贞的概念:
如果一个iSCSI请求是通过某个TCP连接(称为A)发送的,那么相应的应答以及其他相关的PDU必须在该连接(A)上发送。
因此,虽然一个会话可以有多个连接,如果一个SCSI命令通过连接A发送出去,那么必须在连接A上得到回应。
3.1.2
会话类型和会话阶段
iSCSI协议包括2种会话类型,每种会话类型又分为3个阶段。
两种会话类型
发现会话(DiscoverySession)——
用于发现指定的iSCSI网关上可用的Target,该会话建立后仅允许发送TextCommand/Response,LogoutRequest/ResponsePDU,其他类型报文PDU一律拒绝,SessionType
=Discovery;
这种会话类型主要用在4.11中的第2种方法:
“发现会话”。
如果initiator只有target网关的地址,而没有target的名字,就需要使用Discovery类型的会话,发起会话建立请求。
正常操作会话(NormalOperationalSession)——
没有任何限制的会话类型,SessionType
=
Normal。
Initiator与target会话建立成功后,使用的会话类型就是Normal类型。
每种会话类型又分三种会话阶段
SecurityNegotiationPhase——
安全协商阶段0x00
LoginOperationalNegotiationPhase——
操作协商阶段0x01
FullFeaturePhase——
全功能阶段0x03
安全协商阶段和操作协商阶段统称为登录阶段。
Initiator和target只有到达全功能阶段后,才能进行数据读写操作。
3.2
发现会话(Discovery)
Discovery会话主要用于initiator通过targetportal发现所有的target,为接下来initiator与target连接作准备。
3.2.1
过程概述
Discovery会话建立的过程主要分为以下几步:
(1)、建立TCP连接
(2)、进行安全协商
(3)、进行操作协商
(4)、获得可用资源
(5)、关闭会话
(6)、关闭TCP连接
3.3
正常操作会话
3.3.1
发现会话和正常操作会话的不同作用
实际的数据传输都是通过正常操作会话来进行,所以它和SCSI层的关系更为紧密,所有的PDU都可以在正常操作会话中传输
在发现会话建立初始化时,照例要进行loginrequest/response(这点和发现会话的登录过程相似)
发现会话进入全功能阶段时,仅能传输TextCommand和LogoutCommand,其他类型的报文会reject;
而正常操作会话进入全功能阶段后,则开始包含SCSI指令的数据进行传输
发现会话只是为了获得Target网关上可用的Target列表,其他什么事情也不干;
而正常操作会话的建立才是为了实际的数据读写操作!
发现会话是为正常会话服务的,通过发现会话,initiator可以获得target的名称和IP地址,从而与target建立正常会话。
正常会话的建立过程与发现会话类似,下面着重介绍正常会话建立完毕后,SCSI读写过程。
3.3.2
SCSI读写过程
数据读写准备过程
数据读写之前,需要有一个读写准备的过程,这个过程中,initiator和target端的动作
包括:
Initiator->
Target:
读写前的设备状态、大小查询
◆
ReportLUNS
Inquiry
SCSIReadCapacity
SCSIModeSense
Target->
Initiator:
SCSIResponse
SCSIDataIn
ReportLUNS用于从I_T连接中获取逻辑单元的目录。
INQUIRY命令用于请求逻辑单元和SCSI目标设备发送信息给申请用户。
ReadCapacity命令属于SCSI块命令(SBC),该命令请求设备服务器向输入缓冲区传输8字节的参数数据,用于描述直接存取块设备的存储介质的格式和容量。
Modesense命令用于申请用户指定存储介质、逻辑单元或外围设备参数给设备服务器
Initiator向target发送上述信息后,target对这些信息进行回应。
下面是以上命令的大致流程,它们之间并没有明确的顺序关系,所以下图实际上是4
个流程的大致组合:
SCSI读过程
SCSIRead(10)(ExpectedDataSegmentLength)
Target->
SCSIDataIn
(Solicteddata)
SCSIResponse
(orincludedinthefinalDataInPDU)
Initiator首先向target发送读请求,其中包含了需要读的数据长度;
target收到请求后,向initiator发送Solicteddata,最后target发出response报文(或者该response报文包含在最后一个Data-IN报文中)。
SCSI写过程
数据写有2种情况,一种是target需要确认状态;
另外一种是target端不需要确认状态。
一、需要确认状态的情况
读写前的设备状态查询和设置
SCSIWrite(10)
ExpectedDataLength
ImmediateData
R2T
SCSIDataOut
SolicitedData
SCSIResponse
二、不需要确认状态的情况
UnsolicitedData
3.4
iSCSI错误恢复机制
3.4.1
可能的错误
iSCSI协议中,将可能发生的错误归为3类:
协议错误;
可能由程序引起,需要SCSI层重启会话来恢复
CRC校验出错;
这一错误可能发生在头校验位或数据校验位;
重新发送PDU可能修复该错误;
TCP/IP或链路连接错误;
这一错误可以通过重启连接或将会话从失败的连接上移开来恢复
3.4.2
三种错误恢复级别
根据3种可能发生的错误,有3种错误恢复级别
ErrorRecoveryLevel=0
(又称会话恢复级)不论出现什么样的连接错误,都会重启会话;
CRC校验出错时,Initiator会中止会话并向SCSI层返回错误码;
SCSI层将负责恢复错误
ErrorRecoveryLevel=1(又称校验恢复级),如果需要,可以转向Level0;
当initiator或target收到一个头部校验出错的PDU,它们通常可以恢复该错误的PDU;
Initiator可以发送SNACKPDU来获得丢失的PDUs;
Initiator/Target可以发现丢失的命令并重新发送
ErrorRecoveryLevel=2(又称连接恢复级),连接错误时可以将连接忠贞从失败的连接上转移到完好的连接上;
TCP/IP的连接错误可以通过重新建立新的TCP/IP连接并将连接忠贞转移到新的连接上来恢复;
如果需要,可以转向Level0
3.4.3
各种恢复级别的关系
错误恢复级别由高到低的顺序为2、1、0
如果一些错误无法由高级别的错误方法恢复,则转向低级别的恢复方法
在一些简单的实现中,大多仅支持到错误恢复级别0
3.4.4
ErrorRecoveryLevel=0
必须实现的错误恢复级别
可以通过较简单的软件设计来实现
当错误发生时,Initiator和Target会放弃正在执行或在队列中的任务,关闭TCP连接;
当所有的状态清除后重新建立会话;
该会话的所有连接会重新建立。
3.4.5
ErrorRecoveryLevel=1
除了0级所支持的会话恢复方式外,错误恢复级别1还能恢复大多数由CRC校验监测出的错误
如果头部校验值出错了,则PDU会悄悄丢弃掉,Initiator或Target通过序列号中的“Hole”来发现丢失了某个PDU
如果数据校验值出错了,则可以这样处理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iscsi 技术