iscsi技术白皮书


iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 1 页, 共 14 页 iSCSI 技术白皮书 目 录 第 1 章 背景技术........................................................................................................................3  1.1 iSCSI概述.............................................................................................................................. 3  1.2 SCSI技术............................................................................................................................... 3  图 1-1 SCSI体系结构分解图.......................................................................................................3  第 2 章 iSCSI协议......................................................................................................................4  2.1 iSCSI协议栈描述................................................................................................................... 4  2.2 iSCSI通信模型 ...................................................................................................................... 5  2.3 iSCSI名字规范 ...................................................................................................................... 6  第 3 章 iSCSI协议会话交互过程 ................................................................................................7  3.1 背景 ...................................................................................................................................... 7  3.1.1 会话和连接的概念...................................................................................................... 7  3.1.2 会话类型和会话阶段 .................................................................................................. 7  3.2 发现会话(Discovery)........................................................................................................ 8  3.2.1 过程概述 .................................................................................................................... 8  3.3 正常操作会话........................................................................................................................ 9  3.3.1 发现会话和正常操作会话的不同作用......................................................................... 9  3.3.2 SCSI读写过程............................................................................................................. 9  一、需要确认状态的情况 .........................................................................................................11  二、不需要确认状态的情况......................................................................................................12  3.4 iSCSI错误恢复机制 ............................................................................................................. 13  3.4.1 可能的错误............................................................................................................... 13  3.4.2 三种错误恢复级别.................................................................................................... 13  3.4.3 各种恢复级别的关系 ................................................................................................ 13  3.4.4 ErrorRecoveryLevel=0 ............................................................................................. 13  3.4.5 ErrorRecoveryLevel=1 ............................................................................................. 14  3.4.6 ErrorRecoveryLevel=2 ............................................................................................. 14  iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 2 页, 共 14 页 图 目 录 图 1-1 SCSI体系结构分解图....................................................................................... 3  图 1-2 SCSI设备服务和任务请求交互模型 ................................................................. 4  图 2-1 iSCSI协议栈 .................................................................................................... 5  iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 3 页, 共 14 页 第1章 背景技术 1.1 iSCSI 概述 2003 年 2 月 11 日,IETF(Internet Engineering Task Force,互联网工程任务组)通 过了 iSCSI(Internet SCSI)标准,这项由 IBM、Cisco 共同发起的技术标准,经过三年 20 个版本的不断完善,终于得到了 IETF 认可。这吸引了很多的厂商参与到相关产品的开发中 来,也推动了更多的用户采用 iSCSI 的解决方案。 iSCSI ,全称:Internet Small Computer System Interface,它是通过 TCP/IP 网络传 输 SCSI 指令的协议。iSCSI 协议参照 SAM-3(SCSI Architecture Model – 3)制订。在 SAM-3 的体系结构,iSCSI 属于传输层协议,在 TCP/IP 模型中属于应用层协议。 1.2 SCSI 技术 要了解 iSCSI 协议,首先需要了解 SCSI。SCSI 全称是 Small Computer System Interface,小型计算机接口。SCSI 是 1979 年由美国的施加特(Shugart)公司(希捷的前 身)研发并制订,由美国国家标准协会(ANSI)公布的接口标准。 SCSI Architecture Model(SAM-3)用一种较松散的方式定义了 SCSI 的体系架构。 图1-1 SCSI 体系结构分解图 SCSI Architecture Model-3,是 SCSI 体系模型的标准规范; 它自底向上分为 4 个层次: z 物理连接层(Physical Interconnects)——如 Fibre Channel Arbitrated Loop、Fibre Channel Physical Interfaces; z SCSI 传输协议层(SCSI Transport Protocols)——如 SCSI Fibre Channel Protocol、Serial Bus Protocol、Internet SCSI; iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 4 页, 共 14 页 z 共享指令集(SCSI Primary Command),适用于所有设备类型;设备类 型 z 专用指令集(Device-Type Specific Command Sets)——如块设备指令集 SBC(SCSI Block Commands);流设备指令集 SSC(SCSI Stream Commands);多媒体指令集 MMC(SCSI-3 Multimedia Command Set) 简单地说,SCSI 定义了一系列规则提供给 I/O 设备,用以请求相互之间的服务用。每 个 I/O 设备称为“逻辑单元”(LU),每个逻辑单元都有一个唯一的地址来区分它们,这 个地址称为“逻辑单元号”(LUN)。 SCSI 模型采用客户端/服务器(C/S,Client/Server)模式,客户端称为 initiator,服务 器称为 target,数据传输时,initiator 向 target 发送 request,target 回应 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。 iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 5 页, 共 14 页 Initiator:通常指用户主机系统,用户产生 SCSI 请求,并将 SCSI 命令和数据封装到 TCP/IP 包中发送到 IP 网络中。 Target:通常存在于存储设备上,用于转换 TCP/IP 包中的 SCSI 命令和数据。 图2-1 iSCSI 协议栈 2.2 iSCSI 通信模型 iSCSI 结构模型见下图,从图中可以看出,在 iSCSI 结构模型中的网络实体可以包含多 个 iSCSI 节点(Initiator 或者 Target),而网络实体之间又通过网络入口(Network Portal) 连接。 iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 6 页, 共 14 页 2.3 iSCSI 名字规范 iSCSI 协议中,initiator 和 target 是通过名字进行通信的,因此,每一个 iSCSI 节 点(即 initiator)必须拥有一个 iSCSI 名字。 iSCSI 协议定义了 3 类名称结构: 1、iqn(iSCSI Qualified Name) 格式是:“iqn”+“年月”+“.”+“域名的颠倒”+“:”+“设备的具体 名称”,之所以颠倒域名是为了避免可能的冲突。 举例: iqn.2008-07.com.h3c.rd:test 2、eui(Extend Unique Identifier) eui 来源与 IEEE 中的 EUI,格式是: “eui”+ “64bits 的唯一标识(16 个字母)”。 64bits 中,前 24bits(6 个字母)是公司的唯一标识,后面 40bits (10 个字母)是设备的标识。 举例:eui.acde48234667abcd 3、naa(Network Address Authority) 由于 SAS 协议和 FC 协议都支持 naa, iSCSI 协议定义也支持这种名字 结构。 iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 7 页, 共 14 页 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_T nexus) 2. 连接(Connection) Initiator 和 Target 间的一个 TCP 连接,实体层概念(源地址:源端口号+ 目的地址:目的端口号唯一确定了一个 TCP 连接) iSCSI 报文交互是在由连接构成的会话上进行的。 iSCSI 协议在设计的时候,为了提高性能,允许在 1 个会话包含多个连接, 在会话建立过程中,第一个连接建立成功的同时会话也成功建立。 3. 连接忠贞(Connection Allegiance) 在 iSCSI 协议中,有连接忠贞的概念:如果一个 iSCSI 请求是通过某个 TCP 连接(称为 A)发送的,那么相应的应答以及其他相关的 PDU 必须在该 连接(A)上发送。 因此,虽然一个会话可以有多个连接,如果一个 SCSI 命令通过连接 A 发 送出去,那么必须在连接 A 上得到回应。 3.1.2 会话类型和会话阶段 iSCSI 协议包括 2 种会话类型,每种会话类型又分为 3 个阶段。 iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 8 页, 共 14 页 1. 两种会话类型 z 发现会话(Discovery Session)—— 用于发现指定的 iSCSI 网关上可用 的 Target,该会话建立后仅允许发送 Text Command/Response,Logout Request/Response PDU,其他类型报文 PDU 一律拒绝,SessionType = Discovery;这种会话类型主要用在 4.11 中的第 2 种方法:“发现会话”。 如果 initiator 只有 target 网关的地址,而没有 target 的名字,就需要使用 Discovery 类型的会话,发起会话建立请求。 z 正常操作会话(Normal Operational Session)—— 没有任何限制的会话 类型,SessionType = Normal。Initiator 与 target 会话建立成功后,使用 的会话类型就是 Normal 类型。 2. 每种会话类型又分三种会话阶段 z Security Negotiation Phase —— 安全协商阶段 0x00 z Login Operational Negotiation Phase —— 操作协商阶段 0x01 z Full Feature Phase —— 全功能阶段 0x03 安全协商阶段和操作协商阶段统称为登录阶段。 Initiator 和 target 只有到达全功能阶段后,才能进行数据读写操作。 3.2 发现会话(Discovery) Discovery 会话主要用于 initiator 通过 target portal 发现所有的 target,为接下来 initiator 与 target 连接作准备。 3.2.1 过程概述 iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 9 页, 共 14 页 Discovery 会话建立的过程主要分为以下几步: (1)、建立 TCP 连接 (2)、进行安全协商 (3)、进行操作协商 (4)、获得可用资源 (5)、关闭会话 (6)、关闭 TCP 连接 3.3 正常操作会话 3.3.1 发现会话和正常操作会话的不同作用 z 实际的数据传输都是通过正常操作会话来进行,所以它和 SCSI 层的关系 更为紧密,所有的 PDU 都可以在正常操作会话中传输 z 在发现会话建立初始化时,照例要进行 login request/response(这点和发 现会话的登录过程相似) z 发现会话进入全功能阶段时,仅能传输 Text Command 和 Logout Command,其他类型的报文会 reject;而正常操作会话进入全功能阶段后, 则开始包含 SCSI 指令的数据进行传输 发现会话只是为了获得 Target 网关上可用的 Target 列表,其他什么事情也不干; 而正常操作会话的建立才是为了实际的数据读写操作! 发现会话是为正常会话服务的,通过发现会话,initiator 可以获得 target 的名称和 IP 地址,从而与 target 建立正常会话。 正常会话的建立过程与发现会话类似,下面着重介绍正常会话建立完毕后,SCSI 读写过程。 3.3.2 SCSI 读写过程 1. 数据读写准备过程 数据读写之前,需要有一个读写准备的过程,这个过程中,initiator 和 target 端的动作 包括: z Initiator->Target: 读写前的设备状态、大小查询 ‹ Report LUNS ‹ Inquiry iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 10 页, 共 14 页 ‹ SCSI Read Capacity ‹ SCSI Mode Sense z Target->Initiator: ‹ SCSI Response ‹ SCSI Data In Report LUNS 用于从 I_T 连接中获取逻辑单元的目录。 INQUIRY 命令用于请求逻辑单元和 SCSI 目标设备发送信息给申请用户。 Read Capacity 命令属于 SCSI 块命令(SBC),该命令请求设备服务器向输入缓冲区 传输 8 字节的参数数据,用于描述直接存取块设备的存储介质的格式和容量。 Mode sense 命令用于申请用户指定存储介质、逻辑单元或外围设备参数给设备服务器 Initiator 向 target 发送上述信息后,target 对这些信息进行回应。 下面是以上命令的大致流程,它们之间并没有明确的顺序关系,所以下图实际上是 4 个流程的大致组合: iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 11 页, 共 14 页 2. SCSI 读过程 z Initiator->Target: SCSI Read(10)(ExpectedDataSegmentLength) z Target->Initiator: SCSI Data In (Solicted data) z Target->Initiator: SCSI Response (or included in the final Data In PDU) Initiator 首先向 target 发送读请求,其中包含了需要读的数据长度;target 收到请求后,向 initiator 发送 Solicted data,最后 target 发出 response 报文(或 者该 response 报文包含在最后一个 Data-IN 报文中)。 3. SCSI 写过程 数据写有 2 种情况,一种是 target 需要确认状态;另外一种是 target 端不需要确认状 态。 一、需要确认状态的情况 z Initiator->Target: 读写前的设备状态查询和设置 z Initiator->Target: SCSI Write(10) ‹ ExpectedDataLength ‹ Immediate Data z Target->Initiator: R2T z Initiator->Target: SCSI Data Out ‹ Solicited Data z Target->Initiator: SCSI Response iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 12 页, 共 14 页 二、不需要确认状态的情况 z Initiator->Target: 读写前的设备状态查询和设置 z Initiator->Target: SCSI Write(10) ‹ ExpectedDataLength ‹ Unsolicited Data z Target->Initiator: SCSI Response iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 13 页, 共 14 页 3.4 iSCSI 错误恢复机制 3.4.1 可能的错误 iSCSI 协议中,将可能发生的错误归为 3 类: z 协议错误;可能由程序引起,需要 SCSI 层重启会话来恢复 z CRC 校验出错;这一错误可能发生在头校验位或数据校验位;重新发送 PDU 可能修复该错误; z TCP/IP 或链路连接错误;这一错误可以通过重启连接或将会话从失败的连 接上移开来恢复 3.4.2 三种错误恢复级别 根据 3 种可能发生的错误,有 3 种错误恢复级别 z ErrorRecoveryLevel=0 (又称会话恢复级)不论出现什么样的连接错误, 都会重启会话;CRC 校验出错时,Initiator 会中止会话并向 SCSI 层返回 错误码;SCSI 层将负责恢复错误 z ErrorRecoveryLevel=1(又称校验恢复级),如果需要,可以转向 Level0; 当 initiator 或 target 收到一个头部校验出错的 PDU,它们通常可以恢复该 错误的 PDU;Initiator 可以发送 SNACK PDU 来获得丢失的 PDUs; Initiator/Target 可以发现丢失的命令并重新发送 z ErrorRecoveryLevel=2(又称连接恢复级),连接错误时可以将连接忠贞 从失败的连接上转移到完好的连接上;TCP/IP 的连接错误可以通过重新建 立新的 TCP/IP 连接并将连接忠贞转移到新的连接上来恢复;如果需要, 可以转向 Level0 3.4.3 各种恢复级别的关系 z 错误恢复级别由高到低的顺序为 2、1、0 z 如果一些错误无法由高级别的错误方法恢复,则转向低级别的恢复方法 z 在一些简单的实现中,大多仅支持到错误恢复级别 0 3.4.4 ErrorRecoveryLevel=0 z 必须实现的错误恢复级别 iSCSI 技术白皮书 内部公开 2010-03-23 H3C 机密,未经许可不得扩散 第 14 页, 共 14 页 z 可以通过较简单的软件设计来实现 z 当错误发生时,Initiator 和 Target 会放弃正在执行或在队列中的任务,关 闭 TCP 连接;当所有的状态清除后重新建立会话;该会话的所有连接会重 新建立。 3.4.5 ErrorRecoveryLevel=1 z 除了 0 级所支持的会话恢复方式外,错误恢复级别 1 还能恢复大多数由 CRC 校验监测出的错误 z 如果头部校验值出错了,则 PDU 会悄悄丢弃掉,Initiator 或 Target 通过序 列号中的“Hole”来发现丢失了某个 PDU z 如果数据校验值出错了,则可以这样处理 z Initiator 发起一个 SNACK PDU z Target 在 R2T 报文后发送一个 Reject PDU z Initiator 或 Target 均悄悄丢弃它,同头部校验值出错的处理方式 3.4.6 ErrorRecoveryLevel=2 z 错误恢复级别 2 主要关注对连接和任务的恢复 z 假设 Initiator 发现一个 TCP 连接失败了,或它收到了一个异步消息来终止 某个连接,它会将失败的连接上的任务重新分配连接忠贞,转移到完好的 连接上,一切任务重新分配的工作完成后,再重启该失败的连接 z 为了实现它,Initiator 会发送多个 Task Management Request PDU,每一 个都包含了其原先的连接忠贞,以及需要迁移往的连接号 z 连接忠贞的概念(Command Allegiance),指某个连接上的请求(由 Initiator Task Tag 来标识),它的回复也必须在该连接上回复 z 如果以上方式失败,最终会转向重启会话的方式来恢复
还剩13页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

hhko12321

贡献于2017-05-04

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf