当前位置:文档之家› 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 target

SCSI target port SCSI host port iSCSI host/initiator iSCSI target

iSCSI target Portal Group (Tag)iSCSI host/initiator session end (ISID)I_T nexus normal session SSID

I_T nexus ID

图2. SCSI 与iSCSI 的映射

一个iSCSI 节点只能有且只有一个SCSI 设备;只能通过正常运行的iSCSI session 访问SCSI 设备;SCSI 名称也就是iSCSI 节点的名称。

相关主题