当前位置:文档之家› iSCSI协议

iSCSI协议

一、基本概念SCSI,小型计算机系统接口,基于client-server模型,client(initiator)将命令发送给server(target),server处理命令后回传结果给client。

由于要传送命令必然要用到相应的传输协议,iSCSI就是其中的一种传输协议,除此之外还有FC等。

iSCSI也就是SCSI over IP,使用TCP/IP协议来传递SCSI命令与响应,其借用现有的互连网来实现SCSI通讯,成本低,管理、使用方便。

iSCSI也有initiator和target,分别对应于SCSI的initiator和target,iSCSI initiator 与target使用TCP进行通信从而实现了SCSI的initiator与target之间的通信。

如何使用iSCSI来传递SCSI命令与响应呢?首先要明白SCSI target中包含许多LU(逻辑单元),每一个SCSI命令都有其目标LU,这些LU负责对针对其的SCSI命令进行处理与响应。

iSCSI有自己的PDU,在iSCSI initiator端,其包含SCSI initiator下发给其的LUN (逻辑单元)及SCSI命令(CDB),在被作为TCP的数据部分传递到iSCSI target端后由SCSI target根据LUN将SCSI命令投放到目标LU中,LU在处理命令后把响应结果递交给SCSI target,SCSI target再将其递交给iSCSI target,iSCSI target把结果封装成iSCSI PDU,再使用TCP回传给iSCSI initiator,iSCSI initiator再将结果递交给上层SCSI initiator,如图1所示:图1.iSCSI协议层次iSCSI Device: 利用iSCSI传递服务子系统进行传递的SCSI设备。

iSCSI Node: iSCSI节点表示一个iSCSI启动器或者iSCSI目标器。

在一个网络实体里,可能有一或者多个iSCSI节点。

可以通过一个或者多个网络端口访问iSCSI节点。

iSCSI节点的标识是iSCSI名称。

把iSCSI名称和地址分开来后,允许多个iSCSI节点使用同一个地址,或者一个iSCSI节点使用多个地址。

Network Entity: 网络实体。

它表示一个可以通过IP网络访问的设备或者网关。

一个网络实体必须有一或者多个网络端口,包含在该网络实体的iSCSI节点可以用这些端口来访问IP网络。

Network Portal: 网络端口。

网络实体的一个组成部分,它有一个TCP/IP地址。

网络端口在initiator用IP地址标识,在target用IP地址+侦听的TCP端口标识。

Session:连接initiator和target的一组TCP连接构成一个session(可以简单理解为I_T nexus)。

可以向session添加TCP连接,也可以把TCP连接从session删除。

通过一个session的所有连接,initiator只看到同一个target。

Connection:一个TCP连接。

Initiator和target之间使用一或者多个TCP连接通信。

CID(Connection ID):一个session里的每个connection用CID进行标识,该标识在session围是唯一。

CID由initiator产生,在login请求和使用logout 关闭连接时传递给target。

Portal Groups: 网络端口组。

iSCSI session支持多连接,一些实现能把通过多个端口建立的多个连接捆绑到一个session。

一个iSCSI网络实体的多个网络端口被定义为一个网络端口组,把该组和一个session联系起来,该session 就可以捆绑通过该组多个端口建立的多个连接,再使它们一起协同工作以达到捆绑的目的。

每一个该组的session并不需要包括该组的所有网络端口。

一个iSCSI 节点可能有一或者多个网络端口组,但是每一个iSCSI使用的网络端口只能属于iSCSI节点的一个组。

Portal Group Tag: 网络端口组标识。

使用16比特的数标识一个网络端口组。

在一个iSCSI节点里,所有具有同样组标志的端口构成一个网络端口组。

iSCSI Task: 一个iSCSI任务是指一个需要响应的iSCSI请求。

I_T nexus: I_T nexus是指一个SCSI initiator的端口和一个SCSI target 端口之间的关系。

对于iSCSI,这个关系对应一个session,它指session的initiator端和iSCSI target网络端口组之间的关系。

I_T nexus的标识是一对端口名称(iSCSI initiator名称+i+ISID,iSCSI target名称+t+网络端口组标识)。

PDU (Protocol Data Unit): initiator和target之间通信时把信息分割为消息。

这些消息称为iSCSI PDU。

SSID (Session ID): iSCSI initiator和iSCSI target之间的session用SSID 进行标识,该标识由initiator部分的ISID和target部分的TPGT构成。

ISID 由initiator在session建立的时候明确给出,TPGT隐含的由建立连接时选择的网络端口确定。

当TargetName给定后,建立连接的过程中,target必须把TPGT 关键字当作确认信息发送出去。

TSIH (Target Session Identifying Handle): Target分配给与特定名称initiator建立的session的标识。

但是0被保留着用于initiator告知target这是一个新session。

在为一个session添加一个connect时,TSIH已经隐含指明。

二、SCSI 与iSCSI 的映射关系在SCSI 中,一个Device (SCSI initiator 或者SCSI target )可以包含多个ports ,一个SCSI initiator port 和一个SCSI target port 之间的联结就是一个I_T nexus ,一个SCSI initiator port 和一个SCSI target port 之间只允许建立一个I_T nexus 。

I_T nexus 对应与iSCSI 中的一个session (normal ),SCSI target port 对应于iSCSI target 中的一个portal group (具有相同tag 的一组ports ,iSCSI target 在这些ports 上进行监听等待iSCSI initiator 的连接登陆,所有这些ports 一起支撑一个I_T nexus ),SCSI initiator port 对应于iSCSI initiator 中的session (normal )的端点。

SCSI host SCSI targetSCSI target port SCSI host port iSCSI host/initiator iSCSI targetiSCSI target Portal Group (Tag)iSCSI host/initiator session end (ISID)I_T nexus normal session SSIDI_T nexus ID图2. SCSI 与iSCSI 的映射一个iSCSI 节点只能有且只有一个SCSI 设备;只能通过正常运行的iSCSI session 访问SCSI 设备;SCSI 名称也就是iSCSI 节点的名称。

SCSI Initiator Port: SCSI initiator端口。

它被映射到一定正常运行的iSCSI session的一端。

在login过程中,一个iSCSI initiator节点和一个iSCSI target节点协商建立一个正常运行的session;当session成功建立后,一个隶属于iSCSI initiator设备的SCSI initiator端口被创建。

SCSI initiator端口的名称和标识被定义为:iSCSI initiator name + ‘i’+ ISID标识,对于iSCSI,SCSI initiator端口和SCSI target端口的定义是不一样的。

SCSI target端口,映射为iSCSI target的一个网络端口组。

SCSI target端口名称和标识:都被定义为:iSCSI target name + ‘t’+ iSCSI target PGT三、iSCSI中的一些命名及标识每个iSCSI initiator或者iSCSI target都有一个全球唯一的名称,对于iSCSI initiator称为initiator name,对于iSCSI target称为target name。

iSCSI target中的port group使用port group tag来标识;session在iSCSI initiator端使用ISID(initiator session identifier)标识,在iSCSI target端使用TSIH(target session identifier handle)标识。

四、session和connection的状态划分及登陆登出对于connection,有两种状态,即login phase(登陆状态)和full function phase (全功能状态),登陆状态即iSCSI initiator与iSCSI target正处于登陆协商过程;全功能状态即登陆过程已经完成,该connection已经能为上层SCSI提供服务。

Session与connection一样也有login phase和full function phase,当session中仅有的一个connection处于登陆状态时,session处于登陆状态,当session至少有一个connection 处于全功能状态时session处于全功能状态。

iSCSI initiator登陆到iSCSI target的过程分三个过程:1)首先是iSCSI initiator往iSCSI target发送initial login请求,请求中包括iSCSI initiator支持的协议版本、iSCSI initiator name和iSCSI targetname、ISID和TSIH及CID;2) 其次是安全协商,也就是chap 认证之类,用于iSCSI initiator 和iSCSI target互相之间的授权认证;3)最后是操作参数协商,用于协商在全功能时期的一些通讯参数。

相关主题