iSCSI协议Word文件下载.docx
- 文档编号:19132707
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:17
- 大小:190.80KB
iSCSI协议Word文件下载.docx
《iSCSI协议Word文件下载.docx》由会员分享,可在线阅读,更多相关《iSCSI协议Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
网络实体的一个组成部分,它有一个TCP/IP地址。
网络端口在initiator用IP地址标识,在target用IP地址+侦听的TCP端口标识。
Session:
连接initiator和target的一组TCP连接构成一个session(可以简单理解为I_Tnexus)。
可以向session添加TCP连接,也可以把TCP连接从session删除。
通过一个session的所有连接,initiator只看到同一个target。
Connection:
一个TCP连接。
Initiator和target之间使用一或者多个TCP连接通信。
CID(ConnectionID):
一个session里的每个connection用CID进行标识,该标识在session围是唯一。
CID由initiator产生,在login请求和使用logout关闭连接时传递给target。
PortalGroups:
网络端口组。
iSCSIsession支持多连接,一些实现能把通过多个端口建立的多个连接捆绑到一个session。
一个iSCSI网络实体的多个网络端口被定义为一个网络端口组,把该组和一个session联系起来,该session就可以捆绑通过该组多个端口建立的多个连接,再使它们一起协同工作以达到捆绑的目的。
每一个该组的session并不需要包括该组的所有网络端口。
一个iSCSI节点可能有一或者多个网络端口组,但是每一个iSCSI使用的网络端口只能属于iSCSI节点的一个组。
PortalGroupTag:
网络端口组标识。
使用16比特的数标识一个网络端口组。
在一个iSCSI节点里,所有具有同样组标志的端口构成一个网络端口组。
iSCSITask:
一个iSCSI任务是指一个需要响应的iSCSI请求。
I_Tnexus:
I_Tnexus是指一个SCSIinitiator的端口和一个SCSItarget端口之间的关系。
对于iSCSI,这个关系对应一个session,它指session的initiator端和iSCSItarget网络端口组之间的关系。
I_Tnexus的标识是一对端口名称(iSCSIinitiator名称+i+ISID,iSCSItarget名称+t+网络端口组标识)。
PDU(ProtocolDataUnit):
initiator和target之间通信时把信息分割为消息。
这些消息称为iSCSIPDU。
SSID(SessionID):
iSCSIinitiator和iSCSItarget之间的session用SSID进行标识,该标识由initiator部分的ISID和target部分的TPGT构成。
ISID由initiator在session建立的时候明确给出,TPGT隐含的由建立连接时选择的网络端口确定。
当TargetName给定后,建立连接的过程中,target必须把TPGT关键字当作确认信息发送出去。
TSIH(TargetSessionIdentifyingHandle):
Target分配给与特定名称initiator建立的session的标识。
但是0被保留着用于initiator告知target这是一个新session。
在为一个session添加一个connect时,TSIH已经隐含指明。
二、SCSI与iSCSI的映射关系
在SCSI中,一个Device(SCSIinitiator或者SCSItarget)可以包含多个ports,一个SCSIinitiatorport和一个SCSItargetport之间的联结就是一个I_Tnexus,一个SCSIinitiatorport和一个SCSItargetport之间只允许建立一个I_Tnexus。
I_Tnexus对应与iSCSI中的一个session(normal),SCSItargetport对应于iSCSItarget中的一个portalgroup(具有相同tag的一组ports,iSCSItarget在这些ports上进行监听等待iSCSIinitiator的连接登陆,所有这些ports一起支撑一个I_Tnexus),SCSIinitiatorport对应于iSCSIinitiator中的session(normal)的端点。
图2.SCSI与iSCSI的映射
一个iSCSI节点只能有且只有一个SCSI设备;
只能通过正常运行的iSCSIsession访问SCSI设备;
SCSI名称也就是iSCSI节点的名称。
SCSIInitiatorPort:
SCSIinitiator端口。
它被映射到一定正常运行的iSCSIsession的一端。
在login过程中,一个iSCSIinitiator节点和一个iSCSItarget节点协商建立一个正常运行的session;
当session成功建立后,一个隶属于iSCSIinitiator设备的SCSIinitiator端口被创建。
SCSIinitiator端口的名称和标识被定义为:
iSCSIinitiatorname+‘i’+ISID标识,
对于iSCSI,SCSIinitiator端口和SCSItarget端口的定义是不一样的。
SCSItarget端口,映射为iSCSItarget的一个网络端口组。
SCSItarget端口名称和标识:
都被定义为:
iSCSItargetname+‘t’+iSCSItargetPGT
三、iSCSI中的一些命名及标识
每个iSCSIinitiator或者iSCSItarget都有一个全球唯一的名称,对于iSCSIinitiator称为initiatorname,对于iSCSItarget称为targetname。
iSCSItarget中的portgroup使用portgrouptag来标识;
session在iSCSIinitiator端使用ISID(initiatorsessionidentifier)标识,在iSCSItarget端使用TSIH(targetsessionidentifierhandle)标识。
四、session和connection的状态划分及登陆登出
对于connection,有两种状态,即loginphase(登陆状态)和fullfunctionphase(全功能状态),登陆状态即iSCSIinitiator与iSCSItarget正处于登陆协商过程;
全功能状态即登陆过程已经完成,该connection已经能为上层SCSI提供服务。
Session与connection一样也有loginphase和fullfunctionphase,当session中仅有的一个connection处于登陆状态时,session处于登陆状态,当session至少有一个connection处于全功能状态时session处于全功能状态。
iSCSIinitiator登陆到iSCSItarget的过程分三个过程:
1)首先是iSCSIinitiator往iSCSItarget发送initiallogin请求,请求中包括iSCSIinitiator支持的协议版本、iSCSIinitiatorname和iSCSItargetname、ISID和TSIH及CID;
2)其次是安全协商,也就是chap认证之类,用于iSCSIinitiator和iSCSItarget互相之间的授权认证;
3)最后是操作参数协商,用于协商在全功能时期的一些通讯参数。
有两种登出方式,一种是iSCSIinitiator主动发出logout请求,在收到iSCSItarget的logout响应后完成登出;
另一种就是iSCSItarget发送包含“requestlogout”的Async协议数据包,启动器再发送logout请求。
图3.iSCSI登陆及状态划分
五、iSCSIPDU
PDU格式
iSCSIPDU包含:
a.一个BasicHeaderSegment(BHS,48字节);
b.可选地n(任意)个AdditionalHeaderSegment(AHS,长度不固定,字节数为4的整数倍(不够必须填补0),iSCSItarget发往iSCSIinitiator的PDU中不包含AHS);
c.可选地一个HeaderDigest(头校验信息,4个字节);
d.可选地一个DataSegment(数据段,长度不固定,字节数为4的整数倍(不够必须填补0));
e.可选的一个DataDigest(数据校验信息,4个字节)。
图4.iSCSIPDU格式
BHS格式
Byte
1
2
3
0-3
.
I
Opcode
F
OpcodeSpecificFields
4-7
TotalAHSLength
DataSegmentLength
8-15
LUNorOpcodeSpecificFields
16-19
InitialTaskTag
20-47
图5.BasicHeaderSegment格式
a.Ibit:
1bit,标识本PDU为需要马上发送;
b.Opcode操作码:
6bit,标识本PDU的类型;
由iSCSIinitiator发往iSCSItarget的请求PDU有:
0x00NOP-Out
0x01SCSICommand(encapsulatesaSCSICommandDescriptorBlock)
0x02SCSITaskManagementfunctionrequest
0x03LoginRequest
0x04TextRequest
0x05SCSIData-Out(forWRITEoperations)
0x06LogoutRequest
0x10SNACKRequest
0x1c-0x1eVendorspecificcodes
由iSCSItarget发往iSCSIinitiator的相应PDU有:
0x20NOP-In
0x21SCSIResponse-containsSCSIstatusandpossiblysense
informationorotherresponseinformation.
0x22SCSITaskManagementfunctionresponse
0x23LoginResponse
0x24TextResponse
0x25SCSIData-In-forREADoperations.
0x26LogoutResponse
0x31ReadyToTransfer(R2T)-sentbytargetwhenitisready
toreceivedata.
0x32AsynchronousMessage-sentbytargettoindicatecertain
specialconditions.
0x3c-0x3eVendorspecificcodes
0x3fReject
c.Fbit:
1bit,标识本PDU为一个PDU序列中的最后一个;
d.TotalAHSLength:
1byte,本PDU中所有AHS的长度,以4字节为单位,包括可能需要填补的0(padding);
e.DataSegmentLength:
3byte,本PDU中数据段的长度,以字节为单位,不包括可能需要填补的0(padding);
f.LUN:
如果此(命令/响应/数据)PDU与具体的LU相关联,则使用LUN(LogicalUnitNumber)标识该LU;
g.InitialTaskTag(ITT):
在一个session中使用ITT标识iSCSIinitiator发起的任何iSCSI任务,凡是与某iSCSI任务相关联的PDU,不管是由iSCSIinitiator发出的还是由iSCSItarget发出的,都携带该iSCSI任务相应的ITT。
六、PDU分类及概述
1、只携带SCSI信息的PDU,包括:
1)SCSICommand:
iSCSIinitiatoriSCSItarget。
PDU中包含SCSICDB(CommandDescriptionBlock)和命令执行需要的所有参数(如任务属性,希望传输的数据的长度,LUN,ITT等);
也包含iSCSI协议通讯需要用到的信息:
✧CmdSN(session围iSCSI命令的序号,与ExpCmdSN一起用于检测iSCSI命令是否在传输过程中有丢失)。
✧ExpStatSN(期望iSCSItarget发送的connection状态序号,用于向iSCSItarget确认该connection中所有StatSN小于ExpStatSN的状态响应都已被iSCSIinitiator接收到,与StatSN一起用于检测含Status信息的iSCSIpdu是否在传输过程中有丢失);
2)SCSIResponse
iSCSItargetiSCSIinitiator,用于iSCSItarget反馈SCSICommand的执行结果。
PDU中包含SCSI命令执行的结果,是没有被执行还是已经被执行但执行中出现一些问题;
如果命令中进行了数据传输,还包括数据传输的偏差值Residualcount(如iSCSIinitiator起初表明要写5k字节,目标器接收到了5k+2字节等,Residualcount就为2)
SCSI命令执行结果字段:
response和status,如果response为0(commandcompleted)而status为2(checkcondition),将会有sensedata(含有checkcondition的详细信息)包含在pdu的data字段中。
iSCSI协议通讯需要用到的字段:
✧ExpCmdSN(session围iSCSItarget期望iSCSIinitiator发送的命令序号,用于向iSCSIinitiator确认所有CmdSN小于ExpCmdSN的命令都已被iSCSItarget接收到),
✧MaxCmdSN(session中iSCSIinitiator能够发送的最大命令序号,用于构建一个窗口缓冲区,匹配iSCSIinitiator和iSCSItarget的命令发送速率和命令处理速率),
✧StatSN(connection围iSCSI响应pdu的状态序号,用于状态响应编号),
✧ExpDataSN(本命令中iSCSItarget已发送DataPDU的个数)。
3)TaskManagementFunctionRequest
iSCSIinitiatoriSCSItarget,用于iSCSIinitiator控制管理(如中止)之前发往iSCSItarget的多个任务。
4)TaskManagementFunctionResponse
iSCSItargetiSCSIinitiator,用于iSCSItarget反馈任务管理请求的执行结果
5)、SCSIDataOut和SCSIDataIn
iSCSIinitiatoriSCSItarget,用于传输SCSI数据。
PDU中除了包含SCSI数据外,还包含用于iSCSI协议通讯的信息:
✧所携带数据在命令所要传送的所有数据中的BufferOffset和DataSegmentLength,传递方向,
✧DataSN(数据在一个DataPDU序列中的序号,用于检测是否有DataPDU在传输中丢失)。
6)ReadyToTransfer(R2T)
iSCSIinitiatoriSCSItarget,用于iSCSIinitiator往iSCSItarget传输数据时,iSCSItarget通知iSCSIinitiator其已准备好接收数据了,收到此PDU后iSCSIinitiator就可以往iSCSItarget发送数据了。
PDU中包含TargetTransferTag(TTT),iSCSIinitiator针对此PDU发送的DataOutPDU中包含一样的TTT以标识此数据包与此R2T的关联性。
此外还包含用于iSCSI协议通讯的信息:
✧R2TSN是在一个iSCSI命令围R2T的序号,iSCSIinitiator据此可以检测到R2Tpdu的丢失。
✧StatSN、ExpCmdSN、MaxCmdSN。
2、携带SCSI信息和iSCSI信息的PDU
AsynchronousMessage
异步消息是一种iSCSItarget可以主动向iSCSIinitiator发送的pdu,用于告知iSCSIinitiator一些事件。
异步消息pdu中可以是SCSI消息,也可以是iSCSI消息。
Pdu中有一个字段AsyncEvent用于指示具体的事件,如为0表示是SCSI异步事件,具体容放置在pdu的data部分(称为sensedata);
如为1表示iSCSItarget要求iSCSIinitiator登出(logout);
等等。
3、只携带iSCSI信息的PDU
1)Textrequest和Textresponse
文本请求和文本响应用于实现参数(启动器和目标器在通讯时要使用到,具体参见RFC3720第12章)的协商。
Pdu中的data部分以形式“key=value”出现。
多个文本请求/响应pdu包含相同的ITT来标识这些请求/响应属于同一个协商操作。
此外,Pdu中的TTT使用不同的机制来标识是否继续一个协商操作还是启动一个新的协商操作。
2)loginrequest和loginresponse
登陆请求和响应用来实现iSCSIinitiator登陆到iSCSItarget。
Pduheader含:
✧登陆阶段信息Tbit、Cbit、CSG、NSG(登陆分两个阶段,安全协商阶段和操作参数协商阶段);
✧ISID和TSIH(分别在iSCSIinitiator和iSCSItarget中唯一地标识session),指示本次登陆session的ID;
✧CID(在session中唯一的标识connection),指示本次登陆connection的ID;
✧CmdSN、ExpStatSN(loginrequest);
✧StatSN、ExpCmdSN、MaxCmdSN(loginresponse)。
Pdu的data部分与文本请求/响应pdu一样以形式“key=value”出现,含登陆参数,包括安全协商参数(参见RFC3720第11章)和操作参数(参见RFC3720第12章)。
一个session的第一个connection的登陆过程会确定/协商整个session围的一些参数,如iSCSI协议版本号、sessionID、session允许创建的connection个数。
具体登陆过程请参阅图3。
3)logoutrequest和logoutresponse
登出请求和响应用来实现iSCSI登出iSCSItarget,登出requestpdu中包含登出的原因:
✧0:
关闭整个session;
✧1:
关闭session中的某个connecton(可以是发送登出请求的connection本身由pduheader中的CID确定);
✧2:
删除session中的某个connecton以便进行修复,原connection中的未决iSCSI命令都将被转移到另外的connection中进行传输处理,也就是所谓的connectionrecovery。
登出responsepduheader中包含response字段反馈登出请求的响应结果:
成功关闭session或者connection;
找不到connection;
iSCSItarget不支持connectionrecovery;
✧3:
关闭session/connection失败或者修复connection失败。
如果是connection修复响应pdu,pduheader中还包含两个字段:
Time2Wait:
如果iSCSIinitiator要进行把任务(iSCSI命令)重新指派到别的connection(taskreasign),至少要等待的时间,单位为秒;
Time2Retain:
iSCSItarget在Time2Wait之后会等待
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iSCSI 协议