iscsi架构分析

iscsi协议是SCSI协议在TCP/IP网络的具体实现。它将SCSI的逻辑模型映射为TCP/IP通道上的具体实现。同时,也提供了相应的路径管理相应的能力,比如target的发现、连接的建立、会话的管理等方面的工作。
SCSI协议解决了设备访问逻辑层面的问题,将传输层面、介质层面的问题交给相应的实现协议处理。因此,SCSI协议族中包括了许多具体链路上的实现。下图展现在SCSI协议的实现层次,SAM、CAM是对垂直层次关系的定义。从概念抽象的层次,SCSI协议架构可以分为互联、协议、命令三个层次。其中互联层次定义了数据端对端的通信。从iscsi协议的角度,TCP/IP可以理解为SCSI的互联层次,其解决的主要问题是点对点的数据互通。协议层是SCSI协议模块在具体互联协议中的实现定义。如,基于FC互联通信链路,定义了FCP协议;基于TCP/IP链路定义了iscsi。命令层详细定义了不同设备所需要的请求及响应。

图中在协议(protocol)层中没有将iscsi列入是因为iscsi协议与SCSI协议的起草组织不同。
由于我们将iscsi协议理解为SCSI协议层次的具体实现,也即SCSI协议在TCP/IP传输网络的具体实现。因此,iscsi协议不仅可以提供基于块设备的访问,也可以实现其他的设备类型。在前几年,也有厂商为虚拟带库提供iscsi接口。

scsi协议

下图展示了iscsi实现的总体框架。 与SCSI协议对应,iscsi采用C/S架构实现。客户端与服务端遵循请求响应模型。
在协议上下文中,我们将客户端称为启动端(initiator),将服务端称为目标端(target)。如图所示,两种型的节点在iscsi拓扑里,我们都称为网络实体。网络实体指的是可以通过IP网络访问的设备或者网关。

iscsi架构

通常情况下,iscsi的发起端会与操作系统的SCSI子系统对接,而操作系统往往将SCSI设备抽象为一个逻辑的设备,展现给用户使用。比如,我们在操作系统中看到的磁盘设备。应用程充可以像访问本地的磁盘设备一样,通过Posix接口访问发起端所呈现的设备。操作系统的SCSI子系统会将用户的访问翻译成SCSI指令传递到iscsi initiator模块。iscsi initator并不真正的执行指令,而是将这些指令封装成PDU传递给Target进行处理。
每个网络实体至少有一个网络接口用于连接网络。网络端口(network portal)在逻辑上指的是具体IP地址,可以连接到网络并进行通信的组件。对于initiator的网络实体可以用IP地址唯一标识;对于target网络实体可通过IP地址和端口号唯一确定。在实现层面,我们可以将网络端口理解为操作系统TCP/IP协议栈。网络实体与设备的物理网口并非严格的一对一的关系。事实上,对于一个物理网口,我们可以设置多个IP地址。对于一个IP地址,同样可以应用于多个物理端口。上述两种情况都有其现实的意义。前者出现在存储系统高可用应用场景中。设想两个节点分别采用不同的IP地址提供服务且相互热备,当一个节点出现故障时,另一个节点接管其IP地址及服务,这时一个节点的网口对应着两个不同的IP地址。后者出现在网络绑定的应用环境中。

在发起端和目标端进行实质性的数据传输之前,首先需要建立会话。
会话的建立确定了发起端和目标端的协作关系。iscsi提供了两种会话类型:
- 一般操作会话:不受限制的操作。在此会话状态下,发起端可以向目标端请求任何它已经支持的操作;
- 发现会话:此会话主要用于目标端的发现。在此会话状态下,目标端只接受文本请求。其它请求将被拒绝。
当发起端和目标端建立第一个TCP/IP连接时,会话被建立,当所发起端和目标端所有的连接失效时,会话被删除,因此,会话在存活期间,网络至少有一条链接可供数据传输。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值