Network Working Group M. Chadalapaka Request for Comments: 5047 HP Category: Informational J. Hufferd Brocade Inc. J. Satran IBM H. Shah Broadcom Corporation October 2007
Network Working Group M. Chadalapaka Request for Comments: 5047 HP Category: Informational J. Hufferd Brocade Inc. J. Satran IBM H. Shah Broadcom Corporation October 2007
DA: Datamover Architecture for the Internet Small Computer System Interface (iSCSI)
DA:用于Internet小型计算机系统接口(iSCSI)的数据移动器体系结构
Status of This Memo
关于下段备忘
This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.
本备忘录为互联网社区提供信息。它没有规定任何类型的互联网标准。本备忘录的分发不受限制。
Abstract
摘要
The Internet Small Computer System Interface (iSCSI) is a SCSI transport protocol that maps the SCSI family of application protocols onto TCP/IP. Datamover Architecture for iSCSI (DA) defines an abstract model in which the movement of data between iSCSI end nodes is logically separated from the rest of the iSCSI protocol in order to allow iSCSI to adapt to innovations available in new IP transports. While DA defines the architectural functions required of the class of Datamover protocols, it does not define any specific Datamover protocols. Each such Datamover protocol, defined in a separate document, provides a reliable transport for all iSCSI PDUs, but actually moves the data required for certain iSCSI PDUs without involving the remote iSCSI layer itself. This document begins with an introduction of a few new abstractions, defines a layered architecture for iSCSI and Datamover protocols, and then models the interactions within an iSCSI end node between the iSCSI layer and the Datamover layer that happen in order to transparently perform remote data movement within an IP fabric. It is intended that this definition will help map iSCSI to generic Remote Direct Memory Access (RDMA)-capable IP fabrics in the future comprising TCP, the Stream Control Transmission Protocol (SCTP), and possibly other underlying network transport layers, such as InfiniBand.
Internet小型计算机系统接口(iSCSI)是一种SCSI传输协议,它将SCSI系列应用程序协议映射到TCP/IP。Datamover Architecture for iSCSI(DA)定义了一个抽象模型,在该模型中,iSCSI终端节点之间的数据移动在逻辑上与iSCSI协议的其余部分分离,以便使iSCSI能够适应新IP传输中的创新。虽然DA定义了Datamover协议类所需的体系结构功能,但它没有定义任何特定的Datamover协议。在单独的文档中定义的每个这样的Datamover协议都为所有iSCSI PDU提供了可靠的传输,但实际上移动了某些iSCSI PDU所需的数据,而不涉及远程iSCSI层本身。本文档首先介绍了一些新的抽象,定义了iSCSI和Datamover协议的分层体系结构,然后对iSCSI端节点内iSCSI层和Datamover层之间的交互进行建模,以便在IP结构内透明地执行远程数据移动。该定义旨在帮助将来将iSCSI映射到支持远程直接内存访问(RDMA)的通用IP结构,包括TCP、流控制传输协议(SCTP)以及可能的其他底层网络传输层,如InfiniBand。
Table of Contents
目录
1. Motivation ......................................................4 1.1. Intent .....................................................4 1.2. Interpretation of Requirements .............................5 2. Definitions and Acronyms ........................................5 2.1. Definitions ................................................5 2.2. Acronyms ...................................................6 3. Architectural Layering of iSCSI and Datamover Layers ............7 4. Design Overview .................................................9 5. Architectural Concepts .........................................10 5.1. iSCSI PDU Types ...........................................10 5.1.1. iSCSI Data-Type PDUs ...............................10 5.1.2. iSCSI Control-Type PDUs ............................11 5.2. Data_Descriptor ...........................................11 5.3. Connection_Handle .........................................11 5.4. Operational Primitive .....................................12 5.5. Transport Connection ......................................13 6. Datamover Layer and Datamover Protocol .........................13 7. Functional Overview ............................................14 7.1. Startup ...................................................14 7.2. Full Feature Phase ........................................15 7.3. Wrap-up ...................................................15 8. Operational Primitives Provided by the Datamover Layer .........16 8.1. Send_Control ..............................................16 8.2. Put_Data ..................................................17 8.3. Get_Data ..................................................17 8.4. Allocate_Connection_Resources .............................18 8.5. Deallocate_Connection_Resources ...........................19 8.6. Enable_Datamover ..........................................19 8.7. Connection_Terminate ......................................20 8.8. Notice_Key_Values .........................................20 8.9. Deallocate_Task_Resources .................................20 9. Operational Primitives Provided by the iSCSI Layer .............21 9.1. Control_Notify ............................................21 9.2. Connection_Terminate_Notify ...............................22 9.3. Data_Completion_Notify ....................................22 9.4. Data_ACK_Notify ...........................................23 10. Datamover Interface (DI) ......................................23 10.1. Overview .................................................23 10.2. Interactions for Handling Asynchronous Notifications .....24 10.2.1. Connection Termination ............................24 10.2.2. Data Transfer Completion ..........................24 10.2.3. Data Acknowledgement ..............................25 10.3. Interactions for Sending an iSCSI PDU ....................25 10.3.1. SCSI Command ......................................26 10.3.2. SCSI Response .....................................26 10.3.3. Task Management Function Request ..................26
1. Motivation ......................................................4 1.1. Intent .....................................................4 1.2. Interpretation of Requirements .............................5 2. Definitions and Acronyms ........................................5 2.1. Definitions ................................................5 2.2. Acronyms ...................................................6 3. Architectural Layering of iSCSI and Datamover Layers ............7 4. Design Overview .................................................9 5. Architectural Concepts .........................................10 5.1. iSCSI PDU Types ...........................................10 5.1.1. iSCSI Data-Type PDUs ...............................10 5.1.2. iSCSI Control-Type PDUs ............................11 5.2. Data_Descriptor ...........................................11 5.3. Connection_Handle .........................................11 5.4. Operational Primitive .....................................12 5.5. Transport Connection ......................................13 6. Datamover Layer and Datamover Protocol .........................13 7. Functional Overview ............................................14 7.1. Startup ...................................................14 7.2. Full Feature Phase ........................................15 7.3. Wrap-up ...................................................15 8. Operational Primitives Provided by the Datamover Layer .........16 8.1. Send_Control ..............................................16 8.2. Put_Data ..................................................17 8.3. Get_Data ..................................................17 8.4. Allocate_Connection_Resources .............................18 8.5. Deallocate_Connection_Resources ...........................19 8.6. Enable_Datamover ..........................................19 8.7. Connection_Terminate ......................................20 8.8. Notice_Key_Values .........................................20 8.9. Deallocate_Task_Resources .................................20 9. Operational Primitives Provided by the iSCSI Layer .............21 9.1. Control_Notify ............................................21 9.2. Connection_Terminate_Notify ...............................22 9.3. Data_Completion_Notify ....................................22 9.4. Data_ACK_Notify ...........................................23 10. Datamover Interface (DI) ......................................23 10.1. Overview .................................................23 10.2. Interactions for Handling Asynchronous Notifications .....24 10.2.1. Connection Termination ............................24 10.2.2. Data Transfer Completion ..........................24 10.2.3. Data Acknowledgement ..............................25 10.3. Interactions for Sending an iSCSI PDU ....................25 10.3.1. SCSI Command ......................................26 10.3.2. SCSI Response .....................................26 10.3.3. Task Management Function Request ..................26
10.3.4. Task Management Function Response .................27 10.3.5. SCSI Data-Out and SCSI Data-In ....................27 10.3.6. Ready To Transfer (R2T) ...........................28 10.3.7. Asynchronous Message ..............................28 10.3.8. Text Request ......................................28 10.3.9. Text Response .....................................28 10.3.10. Login Request ....................................29 10.3.11. Login Response ...................................29 10.3.12. Logout Command ...................................29 10.3.13. Logout Response ..................................30 10.3.14. SNACK Request ....................................30 10.3.15. Reject ...........................................30 10.3.16. NOP-Out ..........................................30 10.3.17. NOP-In ...........................................30 10.4. Interactions for Receiving an iSCSI PDU ..................31 10.4.1. General Control-Type PDU Notification .............31 10.4.2. SCSI Data Transfer PDUs ...........................31 10.4.3. Login Request .....................................32 10.4.4. Login Response ....................................32 11. Security Considerations .......................................33 11.1. Architectural Considerations .............................33 11.2. Wire Protocol Considerations .............................33 12. References ....................................................34 12.1. Normative References .....................................34 12.2. Informative References ...................................34 Appendix A. Design Considerations and Examples ....................35 A.1. Design Considerations for a Datamover Protocol ............35 A.2. Examples of Datamover Interactions ........................35 Acknowledgements ..................................................44
10.3.4. Task Management Function Response .................27 10.3.5. SCSI Data-Out and SCSI Data-In ....................27 10.3.6. Ready To Transfer (R2T) ...........................28 10.3.7. Asynchronous Message ..............................28 10.3.8. Text Request ......................................28 10.3.9. Text Response .....................................28 10.3.10. Login Request ....................................29 10.3.11. Login Response ...................................29 10.3.12. Logout Command ...................................29 10.3.13. Logout Response ..................................30 10.3.14. SNACK Request ....................................30 10.3.15. Reject ...........................................30 10.3.16. NOP-Out ..........................................30 10.3.17. NOP-In ...........................................30 10.4. Interactions for Receiving an iSCSI PDU ..................31 10.4.1. General Control-Type PDU Notification .............31 10.4.2. SCSI Data Transfer PDUs ...........................31 10.4.3. Login Request .....................................32 10.4.4. Login Response ....................................32 11. Security Considerations .......................................33 11.1. Architectural Considerations .............................33 11.2. Wire Protocol Considerations .............................33 12. References ....................................................34 12.1. Normative References .....................................34 12.2. Informative References ...................................34 Appendix A. Design Considerations and Examples ....................35 A.1. Design Considerations for a Datamover Protocol ............35 A.2. Examples of Datamover Interactions ........................35 Acknowledgements ..................................................44
Table of Figures
图表
Figure 1. Datamover Architecture Diagram, with the RDMAP Example ...8 Figure 2. A Successful iSCSI Login on Initiator ...................37 Figure 3. A Successful iSCSI Login on Target ......................37 Figure 4. A Failed iSCSI Login on Initiator .......................38 Figure 5. A Failed iSCSI Login on Target ..........................38 Figure 6. iSCSI Does Not Enable the Datamover .....................39 Figure 7. A Normal iSCSI Connection Termination ...................40 Figure 8. An Abnormal iSCSI Connection Termination ................40 Figure 9. A SCSI Write Data Transfer ..............................41 Figure 10. A SCSI Read Data Transfer ..............................42 Figure 11. A SCSI Read Data Acknowledgement .......................43 Figure 12. Task Resource Cleanup on Abort .........................44
Figure 1. Datamover Architecture Diagram, with the RDMAP Example ...8 Figure 2. A Successful iSCSI Login on Initiator ...................37 Figure 3. A Successful iSCSI Login on Target ......................37 Figure 4. A Failed iSCSI Login on Initiator .......................38 Figure 5. A Failed iSCSI Login on Target ..........................38 Figure 6. iSCSI Does Not Enable the Datamover .....................39 Figure 7. A Normal iSCSI Connection Termination ...................40 Figure 8. An Abnormal iSCSI Connection Termination ................40 Figure 9. A SCSI Write Data Transfer ..............................41 Figure 10. A SCSI Read Data Transfer ..............................42 Figure 11. A SCSI Read Data Acknowledgement .......................43 Figure 12. Task Resource Cleanup on Abort .........................44
There are relatively new standard protocols that enable Remote Direct Memory Access (RDMA) and Remote Direct Data Placement (RDDP) technologies to work over IP fabrics. The principal value proposition of these technologies is that they enable one end node to place data in the final intended buffer on the remote end node, thus eliminating the need for a receive path data copy that moves the data to its final location. The data copy avoidance in turn eliminates unnecessary memory bandwidth consumption, substantially decreases the reassembly buffer size requirements, and preserves CPU cycles that would otherwise be spent in copying.
有相对较新的标准协议支持远程直接内存访问(RDMA)和远程直接数据放置(RDDP)技术在IP结构上工作。这些技术的主要价值主张是,它们使一个终端节点能够将数据放置在远程终端节点上的最终预期缓冲区中,从而消除了将数据移动到其最终位置的接收路径数据拷贝的需要。数据复制避免反过来消除了不必要的内存带宽消耗,大大降低了重新组装缓冲区大小要求,并保留了复制过程中可能花费的CPU周期。
The iSCSI specification [RFC3720] defines a very detailed data transfer model that employs SCSI Data-In PDUs, SCSI Data-Out PDUs, and R2T PDUs, in addition to the SCSI Command and SCSI Response PDUs that respectively create and conclude the task context for the data transfer. In the traditional iSCSI model, the iSCSI protocol layer plays the central role in pacing the data transfer and carrying out the ensuing data transfer itself. An alternative architecture would be for iSCSI to delegate a large part of this data transfer role to a separate protocol layer exclusively designed to move data, which in turn is possibly aided by a data movement and placement technology such as RDMA.
iSCSI规范[RFC3720]定义了一个非常详细的数据传输模型,除了分别创建和结束数据传输任务上下文的SCSI命令和SCSI响应PDU外,该模型还使用SCSI数据输入PDU、SCSI数据输出PDU和R2T PDU。在传统的iSCSI模型中,iSCSI协议层在调整数据传输速度和执行随后的数据传输方面起着核心作用。另一种体系结构是,iSCSI将此数据传输角色的很大一部分委托给专门设计用于移动数据的单独协议层,而该协议层又可能由数据移动和放置技术(如RDMA)提供帮助。
If iSCSI were operating in such RDMA environments, iSCSI would be shielded from the low-level data transfer mechanics but would only be privy to the conclusion of the requested data transfer. Thus, there would be an effective "off-loading" of the work that an iSCSI protocol layer is expected to perform, compared to today's iSCSI end nodes. For such RDMA environments, it is highly desirable that there be a standard architecture to separate the data movement part of the iSCSI protocol definition from the rest of the iSCSI functionality. This architecture precisely defines what a Datamover layer is and also describes the model of interactions between the iSCSI layer and the Datamover layer (Section 6). In order to satisfy this need, this document presents a Datamover Architecture for iSCSI (DA) and summarizes a reasonable model for interactions between the iSCSI layer and the Datamover layer for each of the iSCSI PDUs that are defined in [RFC3720]. Note that while DA is motivated by the advent of RDMA over TCP/IP technology, the architecture is not dependent on RDMA in its design. DA is intended to be a generic architectural framework for allowing different types of Datamovers based on different types of RDMA and transport protocols. Adoption of this model will help iSCSI proliferate into more environments.
如果iSCSI在这样的RDMA环境中运行,iSCSI将被屏蔽,不受低级数据传输机制的影响,但只知道请求的数据传输的结论。因此,与今天的iSCSI终端节点相比,iSCSI协议层将有效地“卸载”预期要执行的工作。对于此类RDMA环境,非常希望有一个标准体系结构,将iSCSI协议定义的数据移动部分与iSCSI功能的其余部分分开。此体系结构精确定义了什么是数据移动器层,还描述了iSCSI层和数据移动器层之间的交互模型(第6节)。为了满足这一需求,本文档介绍了iSCSI(DA)的数据移动器体系结构,并总结了[RFC3720]中定义的每个iSCSI PDU的iSCSI层和数据移动器层之间交互的合理模型。请注意,虽然DA的动机是RDMA over TCP/IP技术的出现,但该体系结构的设计并不依赖于RDMA。DA是一个通用的体系结构框架,允许基于不同类型的RDMA和传输协议的不同类型的数据移动器。采用此模型将有助于iSCSI扩展到更多环境中。
This document introduces certain architectural abstractions and builds an abstract functional interface model between iSCSI and Datamover protocol layers based on those abstractions. This architectural style is motivated by the following desires:
本文档介绍某些体系结构抽象,并基于这些抽象在iSCSI和Datamover协议层之间构建抽象的功能接口模型。这种建筑风格是由以下愿望驱动的:
a) Provide guidance to Datamover protocol designers with respect to the functional boundary between iSCSI and the Datamover protocols. This guidance is critical since a significant part of the [RFC3720] protocol definition is left unchanged by DA architecture and the iSCSI notions from [RFC3720] (e.g., tasks, ITTs) are leveraged by the Datamover protocol.
a) 就iSCSI和Datamover协议之间的功能边界向Datamover协议设计人员提供指导。此指南至关重要,因为DA体系结构保留了[RFC3720]协议定义的重要部分不变,并且数据移动器协议利用了[RFC3720]中的iSCSI概念(例如任务、ITT)。
b) Aid existing iSCSI implementations to rapidly adapt to DA architecture, largely by leveraging the architectural abstractions into implementation constructs -- e.g., functions, APIs, modules.
b) 帮助现有iSCSI实施快速适应DA体系结构,主要是通过将体系结构抽象转化为实施结构(例如功能、API、模块)。
However, note that DA architecture does not intend to impose any implementation specifics per se. When a DA architectural concept (e.g., Operational Primitive) is described as mandatory ("MUST") or recommended ("SHOULD") of a layer (iSCSI or Datamover) in this document, the intent is that an implementation respectively MUST or SHOULD produce the same protocol action as what the model describes. Specifically, no implementation compliance in terms of names, modules or API arguments etc. is implied by this Architecture by such use of [RFC2119] terms, only a functional compliance is sought.
然而,请注意,DA体系结构本身并不打算强加任何实现细节。当DA体系结构概念(如操作原语)在本文档中被描述为层(iSCSI或Datamover)的强制性(“必须”)或建议性(“应该”)时,其目的是实现必须或应该分别产生与模型描述的相同的协议动作。具体而言,该体系结构使用[RFC2119]术语并不意味着在名称、模块或API参数等方面的实现符合性,只寻求功能符合性。
I/O Buffer - A buffer that is used in a SCSI Read or Write operation so that SCSI data may be sent from or received by the buffer.
I/O缓冲区—在SCSI读写操作中使用的缓冲区,以便从缓冲区发送或接收SCSI数据。
Datamover protocol - A Datamover protocol is a data transfer wire protocol for iSCSI that meets the requirements stated in Section 6.
Datamover协议—Datamover协议是一种用于iSCSI的数据传输线协议,满足第6节中所述的要求。
Datamover layer - A Datamover layer is a protocol layer within an end node that implements the Datamover protocol.
Datamover层—Datamover层是实现Datamover协议的终端节点内的协议层。
Datamover-assisted - An iSCSI connection is said to be "Datamover-assisted" when a Datamover layer is enabled for moving control and data information on that iSCSI connection.
Datamover-assisted(数据移动器辅助)-当数据移动器层启用以移动iSCSI连接上的控制和数据信息时,iSCSI连接称为“Datamover-assisted”。
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。
Acronym Definition -------------------------------------------------------------
Acronym Definition -------------------------------------------------------------
DA Datamover Architecture for iSCSI
用于iSCSI的DA数据移动器体系结构
DDP Direct Data Placement Protocol
直接数据放置协议
DI Datamover Interface
DI数据移动器接口
IANA Internet Assigned Numbers Authority
IANA互联网分配号码管理局
IETF Internet Engineering Task Force
因特网工程任务组
I/O Input - Output
I/O输入-输出
IP Internet Protocol
网际协议
iSCSI Internet SCSI
iSCSI Internet SCSI
iSER iSCSI Extensions for RDMA
用于RDMA的iSER iSCSI扩展
ITT Initiator Task Tag
ITT启动器任务标记
LO Leading Only
LO仅领先
MPA Marker PDU Aligned Framing for TCP
TCP的MPA标记PDU对齐帧
PDU Protocol Data Unit
协议数据单元
RDDP Remote Direct Data Placement
远程直接数据放置
RDMA Remote Direct Memory Access
远程直接内存访问
R2T Ready To Transfer
R2T准备转移
R2TSN Ready To Transfer Sequence Number
R2TSN准备传输序列号
RDMA Remote Direct Memory Access
远程直接内存访问
RDMAP Remote Direct Memory Access Protocol
RDMAP远程直接内存访问协议
RFC Request For Comments
征求意见
SAM SCSI Architecture Model
SAM SCSI体系结构模型
SCSI Small Computer Systems Interface
小型计算机系统接口
SN Sequence Number
序列号
SNACK Selective Negative Acknowledgment - also Sequence Number Acknowledgement for Data
SNACK选择性否定确认-也是数据的序列号确认
TCP Transmission Control Protocol
TCP传输控制协议
TTT Target Transfer Tag
目标转移标签
Figure 1 illustrates an example of the architectural layering of iSCSI and Datamover layers, in conjunction with a TCP/IP implementation of RDMAP/DDP ([DDP]) layers in an iSCSI end node. Note that RDMAP/DDP/MPA and TCP protocol layers are shown here only as an example, and in reality, DA is completely oblivious to protocol layers below the Datamover layer. The RDMAP/DDP/MPA protocol stack provides a generic transport service with direct data placement. There is no need to tailor the implementation of this protocol stack to the specific ULP to benefit from these services.
图1展示了iSCSI和Datamover层的体系结构分层示例,以及iSCSI终端节点中RDMAP/DDP([DDP])层的TCP/IP实现。请注意,RDMAP/DDP/MPA和TCP协议层在这里仅作为示例显示,实际上,DA完全不考虑Datamover层下面的协议层。RDMAP/DDP/MPA协议栈提供了具有直接数据放置的通用传输服务。无需根据特定的ULP定制此协议栈的实现,以从这些服务中获益。
Initiator stack Target stack
启动器堆栈目标堆栈
+----------------+ SCSI application +----------------+ | SCSI Layer | protocols | SCSI Layer | +----------------+ +----------------+ ^ ^ | | v v +----------------+ iSCSI protocol +----------------+ | iSCSI Layer | (excluding data | iSCSI Layer | +----------------+ movement) +----------------+ ^ ^ -- ---+-- ---- DI (Datamover Interface)--- ----+--- ---- v v +----------------+ a Datamover +----------------+ | Datamover Layer| protocol | Datamover Layer| +----------------+ +----------------+ ^ ^ +-------+----------+ +---------+-----------+ | v | | v | |+---------------+ | | +-----------------+ | || RDMAP/DDP/MPA | | RDMAP/DDP/MPA | | RDMAP/DDP/MPA | | || Layers | | protocols | | Layers | | |+---------------+ | | +-----------------+ | | ^ | | ^ | | | network | | | network | | | transport| | | transport | | v | | v | |+---------------+ | | +----------------+ | || TCP Layer | | TCP protocol | | TCP Layer | | |+---------------+ | | +----------------+ | | ^ | | ^ | +-------+----------+ +---------+-----------+ +------------------------------------------+
+----------------+ SCSI application +----------------+ | SCSI Layer | protocols | SCSI Layer | +----------------+ +----------------+ ^ ^ | | v v +----------------+ iSCSI protocol +----------------+ | iSCSI Layer | (excluding data | iSCSI Layer | +----------------+ movement) +----------------+ ^ ^ -- ---+-- ---- DI (Datamover Interface)--- ----+--- ---- v v +----------------+ a Datamover +----------------+ | Datamover Layer| protocol | Datamover Layer| +----------------+ +----------------+ ^ ^ +-------+----------+ +---------+-----------+ | v | | v | |+---------------+ | | +-----------------+ | || RDMAP/DDP/MPA | | RDMAP/DDP/MPA | | RDMAP/DDP/MPA | | || Layers | | protocols | | Layers | | |+---------------+ | | +-----------------+ | | ^ | | ^ | | | network | | | network | | | transport| | | transport | | v | | v | |+---------------+ | | +----------------+ | || TCP Layer | | TCP protocol | | TCP Layer | | |+---------------+ | | +----------------+ | | ^ | | ^ | +-------+----------+ +---------+-----------+ +------------------------------------------+
Figure 1. Datamover Architecture Diagram, with the RDMAP Example
图1。Datamover架构图,带有RDMAP示例
The scope of this document is limited to:
本文件的范围限于:
1. Defining the notion of a Datamover layer and a Datamover protocol (Section 6).
1. 定义Datamover层和Datamover协议的概念(第6节)。
2. Defining the functionality distribution between the iSCSI layer and the Datamover layer, along with the communication model between the two (Operational Primitives).
2. 定义iSCSI层和Datamover层之间的功能分布,以及两者之间的通信模型(操作原语)。
3. Modeling the interactions between the blocks labeled as "iSCSI Layer" and "Datamover Layer" in Figure 1 -- i.e., defining the interface labeled "DI" in the figure -- for each defined iSCSI PDU, based on the Operational Primitives.
3. 根据操作原语,对图1中标记为“iSCSI层”和“Datamover层”的块之间的交互进行建模(即,在图中定义标记为“DI”的接口)。
This document discusses and defines a model for interactions between the iSCSI layer and a "Datamover layer" (see Section 6) operating within an iSCSI end node, presumably communicating with one or more iSCSI end nodes with similar layering. The model for interactions for handling different iSCSI operations is called the "Datamover Interface" (DI, Section 10), while the architecture itself is called the "Datamover Architecture for iSCSI" (DA). It is likely that the architecture will have implications on the Datamover wire protocols as DA places certain requirements and functionality expectations on the Datamover layer. However, this document itself neither defines any new wire protocol for the Datamover layer, nor any potential modifications to the iSCSI wire protocol to employ the Datamover layer. The scope of this document is strictly limited to specifying the architectural framework and the minimally required interactions that happen within an iSCSI end node to leverage the Datamover layer.
本文档讨论并定义了iSCSI层与在iSCSI终端节点内运行的“数据移动器层”(参见第6节)之间的交互模型,可能与具有类似分层的一个或多个iSCSI终端节点通信。处理不同iSCSI操作的交互模型称为“Datamover接口”(DI,第10节),而体系结构本身称为“用于iSCSI的Datamover体系结构”(DA)。该体系结构可能会对数据移动器有线协议产生影响,因为DA对数据移动器层提出了某些要求和功能期望。但是,本文档本身既没有为数据移动器层定义任何新的有线协议,也没有对iSCSI有线协议进行任何可能的修改以使用数据移动器层。本文档的范围严格限于指定体系结构框架和iSCSI终端节点内发生的最低限度的交互,以利用Datamover层。
The design ideas behind DA can be summarized as follows:
DA背后的设计思想可以总结如下:
1) DA defines an abstract functional interface model of the iSCSI layer's interactions with a Datamover layer below -- i.e., DA models the interactions between the logical "bottom" interface of iSCSI and the logical "top" interface of a Datamover.
1) DA定义了iSCSI层与下面的数据移动器层交互的抽象功能接口模型,即DA对iSCSI的逻辑“底部”接口和数据移动器的逻辑“顶部”接口之间的交互进行建模。
2) DA guides the wire protocol for a Datamover layer by defining the iSCSI knowledge that the Datamover layer may utilize in its protocol definition (as an example, this document completely limits the notion of "iSCSI session" to the iSCSI layer).
2) DA通过定义数据移动器层可在其协议定义中使用的iSCSI知识来指导数据移动器层的有线协议(例如,本文档将“iSCSI会话”的概念完全限制在iSCSI层)。
3) DA is designed to allow implementation of the Datamover layer either in hardware or in software.
3) DA设计用于在硬件或软件中实现数据移动器层。
4) DA is not a wire protocol spec, but an architecture that also models the interactions between iSCSI and Datamover layers operating within an iSCSI end node.
4) DA不是一种有线协议规范,而是一种体系结构,它还可以对在iSCSI终端节点内运行的iSCSI和Datamover层之间的交互进行建模。
5) DA by design seeks to model the iSCSI-Datamover interactions in a way that the modeling is independent of the specifics of either a particular iSCSI revision or an instantiation of a Datamover layer.
5) DA by design旨在以一种建模方式对iSCSI数据移动器交互进行建模,该建模方式独立于特定iSCSI版本或数据移动器层实例化的具体情况。
6) DA introduces and relies on the notion of a defined set of Operational Primitives (could be seen as entry point definitions in implementation terms) provided by each layer to the other to carry out the request-response interactions.
6) DA引入并依赖于由每一层向另一层提供的一组已定义的操作原语(在实现术语中可以被视为入口点定义)的概念来执行请求-响应交互。
7) DA is intended to allow Datamover protocol definitions with minimal changes to existing iSCSI implementations.
7) DA旨在允许Datamover协议定义,对现有iSCSI实施的更改最少。
8) DA is designed to allow the iSCSI layer to completely rely on the Datamover layer for all data transport needs.
8) DA的设计允许iSCSI层完全依赖Datamover层满足所有数据传输需求。
9) DA models the architecturally required minimal interactions between an operational iSCSI layer and a Datamover layer to realize the iSCSI-transparent data movement. There may be several other interactions in a typical implementation in order to bootstrap a Datamover layer (or an iSCSI layer) into operation, but they are outside the scope of this document.
9) DA对可操作的iSCSI层和数据移动器层之间的体系结构所需的最少交互进行建模,以实现iSCSI透明数据移动。为了引导Datamover层(或iSCSI层)投入运行,典型实现中可能会有其他几个交互,但它们不在本文档的范围内。
Note that in summary, DA is architected to support many different Datamover protocols operating under the iSCSI layer. One such example of a Datamover protocol is iSER [iSER].
请注意,总之,DA的体系结构支持在iSCSI层下运行的许多不同的Datamover协议。数据移动器协议的一个这样的例子是iSER[iSER]。
This section defines the iSCSI PDU classification terminology, as defined and used in this document. Out of the set of legal iSCSI PDUs defined in [RFC3720], as we will see in Section 5.1.1, the iSCSI layer does not request a SCSI Data-Out PDU carrying solicited data for transmission across the Datamover Interface per this architecture. For this reason, the SCSI Data-Out PDU carrying solicited data is excluded in the iSCSI PDU classification we introduce in this section (for SCSI Data-Out PDUs for unsolicited Data, see Section 5.1.2). The rest of the legal iSCSI PDUs that may be exchanged across the Datamover Interface are defined to consist of two classes:
本节定义了本文档中定义和使用的iSCSI PDU分类术语。在[RFC3720]中定义的一组合法iSCSI PDU中,正如我们将在第5.1.1节中看到的,iSCSI层不请求SCSI Data Out PDU,该PDU携带请求的数据,以便按照此体系结构通过Datamover接口进行传输。因此,我们在本节介绍的iSCSI PDU分类中不包括承载请求数据的SCSI数据输出PDU(有关非请求数据的SCSI数据输出PDU,请参阅第5.1.2节)。可通过Datamover接口交换的其余合法iSCSI PDU定义为由两类组成:
1) iSCSI data-type PDUs
1) iSCSI数据类型PDU
2) iSCSI control-type PDUs
2) iSCSI控制型PDU
An iSCSI data-type PDU is defined as an iSCSI PDU that causes data transfer, transparent to the remote iSCSI layer, to take place between the peer iSCSI nodes on a Full Feature Phase iSCSI connection. A data-type PDU, when requested for transmission by the
iSCSI数据类型PDU定义为iSCSI PDU,它使数据传输在全功能阶段iSCSI连接上的对等iSCSI节点之间进行,对远程iSCSI层是透明的。一种数据类型PDU,当
sender iSCSI layer, results in the associated data transfer without the participation of the remote iSCSI layer, i.e., the PDU itself is not delivered as-is to the remote iSCSI layer. The following iSCSI PDUs constitute the set of iSCSI data-type PDUs:
发送方iSCSI层会导致相关的数据传输,而无需远程iSCSI层的参与,即PDU本身不会按原样传送到远程iSCSI层。以下iSCSI PDU构成iSCSI数据类型PDU的集合:
1) SCSI Data-In PDU
1) PDU中的SCSI数据
2) R2T PDU
2) R2T PDU
In an iSCSI end node structured as an iSCSI layer and a Datamover layer as defined in this document, the solicitation for Data-Out (i.e., R2T PDU) is not delivered to the initiator iSCSI layer, per the definition of an iSCSI data-type PDU. The data transfer is instead performed via the mechanisms known to the Datamover layer (e.g., RDMA Read). This in turn implies that a SCSI Data-Out PDU for solicited data is never requested for transmission across the Datamover Interface at the initiator.
在本文档中定义为iSCSI层和Datamover层的iSCSI终端节点中,根据iSCSI数据类型PDU的定义,数据输出请求(即R2T PDU)不会传递到启动器iSCSI层。而是通过Datamover层已知的机制(例如RDMA读取)执行数据传输。这反过来又意味着请求数据的SCSI数据输出PDU从未被请求在启动器处通过Datamover接口进行传输。
Any iSCSI PDU that is not an iSCSI data-type PDU and also not a solicited SCSI Data-Out PDU is defined as an iSCSI control-type PDU. Specifically, note that SCSI Data-Out PDUs for unsolicited Data are defined as iSCSI control-type PDUs.
任何不是iSCSI数据类型PDU且也不是请求的SCSI数据输出PDU的iSCSI PDU都定义为iSCSI控制类型PDU。具体地说,请注意,非请求数据的SCSI数据输出PDU定义为iSCSI控制类型PDU。
A Data_Descriptor is an information element that describes an iSCSI/SCSI data buffer, provided by the iSCSI layer to its local Datamover layer or provided by the Datamover layer to its local iSCSI layer for identifying the data associated respectively with the requested or completed operation.
数据描述符是描述iSCSI/SCSI数据缓冲区的信息元素,由iSCSI层提供给其本地Datamover层,或由Datamover层提供给其本地iSCSI层,用于标识分别与请求的或完成的操作相关联的数据。
In implementation terms, a Data_Descriptor may be a scatter-gather list describing a local buffer, the exact structure of which is subject to the constraints imposed by the operating environment on the local iSCSI node.
在实现术语中,数据描述符可以是描述本地缓冲区的分散-聚集列表,其确切结构受制于操作环境对本地iSCSI节点施加的约束。
A Connection_Handle is an information element that identifies the particular iSCSI connection for which an inbound or outbound iSCSI PDU is intended. A connection handle is unique for a given pair of an iSCSI layer instance and a Datamover layer instance. The Connection_Handle qualifier is used in all invocations of any Operational Primitive for connection identification.
连接句柄是一个信息元素,用于标识入站或出站iSCSI PDU要用于的特定iSCSI连接。对于给定的iSCSI层实例和Datamover层实例对,连接句柄是唯一的。连接句柄限定符用于连接标识的任何操作原语的所有调用。
Note that the Connection_Handle is conceptually different from the Connection Identifier (CID) defined by the iSCSI specification. While the CID is a unique identifier of an iSCSI connection within an iSCSI session, the uniqueness of the Connection_Handle extends to the entire iSCSI layer instance coupled with the Datamover layer instance, across possibly multiple iSCSI sessions.
请注意,连接句柄在概念上不同于iSCSI规范定义的连接标识符(CID)。虽然CID是iSCSI会话中iSCSI连接的唯一标识符,但连接句柄的唯一性扩展到与Datamover层实例耦合的整个iSCSI层实例,可能跨越多个iSCSI会话。
In implementation terms, a Connection_Handle could be an opaque identifier exchanged between the iSCSI layer and the Datamover layer at the connection login time. One may also consider it to be similar in scope of uniqueness to a socket identifier. The exact structure and modalities of exchange of a Connection_Handle between the two layers is implementation-specific.
在实现方面,连接句柄可以是在连接登录时在iSCSI层和Datamover层之间交换的不透明标识符。还可以认为它在唯一性方面与套接字标识符相似。两层之间连接句柄交换的确切结构和方式是特定于实现的。
An Operational Primitive, in this document, is an abstract functional interface procedure that requests another layer perform a specific action on the requestor's behalf or notifies the other layer of some event. The Datamover Interface between an iSCSI layer instance and a Datamover layer instance within an iSCSI end node uses a set of Operational Primitives to define the functional interface between the two layers. Note that not every invocation of an Operational Primitive may elicit a response from the requested layer. This document describes the types of Operational Primitives that are implicitly required and provided by the iSCSI protocol layer as defined in [RFC3720], and the semantics of these Primitives.
在本文档中,操作原语是一个抽象的功能接口过程,它请求另一层代表请求者执行特定操作,或通知另一层某个事件。iSCSI层实例和iSCSI终端节点内的Datamover层实例之间的Datamover接口使用一组操作原语来定义两层之间的功能接口。请注意,并不是每次调用操作原语都会从请求的层引发响应。本文档描述了[RFC3720]中定义的iSCSI协议层隐含要求和提供的操作原语类型,以及这些原语的语义。
Note that ownership of buffers and data structures is likely to be exchanged between the iSCSI layer and its local Datamover layer in invoking the Operational Primitives defined in this architecture. The buffer management details, including how buffers are allocated and released, are implementation-specific and thus are outside the scope of this document.
请注意,在调用此体系结构中定义的操作原语时,iSCSI层及其本地Datamover层之间可能会交换缓冲区和数据结构的所有权。缓冲区管理详细信息(包括缓冲区的分配和释放方式)是特定于实现的,因此不在本文档的范围内。
Each Operational Primitive invocation needs a certain "information context" (e.g., Connection_Handle) for performing the specific action being requested. The required information context is described in this document by a listing of "qualifiers" on each invocation, in the style of function call arguments. There is no specific implementation implied in this notation. The "qualifiers" of any Operational Primitive invocation specified in this document thus represent the mandatory information context that the Operational Primitive invocation MUST consider in performing the action. While the qualifiers are required, the method of realizing the qualifiers (passed synchronously with invocation, or retrieved from task context, or retrieved from shared memory etc.) is really up to the implementations.
每个操作原语调用都需要特定的“信息上下文”(例如,连接句柄)来执行所请求的特定操作。所需的信息上下文在本文档中以函数调用参数的形式通过每次调用的“限定符”列表进行描述。这个符号中没有具体的实现。因此,在本文档中指定的任何操作原始调用的“限定符”表示操作原始调用在执行操作时必须考虑的强制信息上下文。虽然需要限定符,但实现限定符的方法(与调用同步传递,或从任务上下文检索,或从共享内存检索等)实际上取决于实现。
When an Operational Primitive implementation is described as mandatory ("MUST") or recommended ("SHOULD") of a layer (iSCSI or Datamover) in this document, the intent is that an implementation respectively MUST or SHOULD produce the same protocol action as what the model describes.
当操作原语实现在本文档中被描述为层(iSCSI或Datamover)的强制(“必须”)或建议(“应该”)时,其目的是实现必须或应该分别产生与模型描述的相同的协议操作。
The term "Transport Connection" is used in this document as a generic term to represent the end-to-end logical connection as defined by the underlying reliable transport protocol. For this document, all instances of Transport Connection refer to a TCP connection.
术语“传输连接”在本文档中用作通用术语,表示基础可靠传输协议定义的端到端逻辑连接。对于本文档,传输连接的所有实例都指TCP连接。
This section introduces the notion of a "Datamover layer" and "Datamover protocol" as meant in this document, and defines the requirements on a Datamover protocol.
本节介绍了本文档中所指的“数据移动器层”和“数据移动器协议”的概念,并定义了对数据移动器协议的要求。
A Datamover layer is the implementation component that realizes a Datamover protocol functionality in an iSCSI-capable end node in communicating with other iSCSI end nodes with similar capabilities. More specifically, a "Datamover layer" MUST provide the following functionality and the "Datamover protocol" MUST consist of the wire protocol required to realize the following functionality:
Datamover层是实现组件,用于在支持iSCSI的终端节点中实现Datamover协议功能,以便与具有类似功能的其他iSCSI终端节点通信。更具体地说,“数据移动器层”必须提供以下功能,“数据移动器协议”必须包含实现以下功能所需的有线协议:
1) guarantee that all the necessary data transfers take place when the local iSCSI layer requests transmitting a command (in order to complete a SCSI command, for an initiator), or sending/receiving an iSCSI data sequence (in order to complete part of a SCSI command for a target).
1) 确保当本地iSCSI层请求发送命令(以完成启动器的SCSI命令)或发送/接收iSCSI数据序列(以完成目标的部分SCSI命令)时,所有必要的数据传输都会发生。
2) transport an iSCSI control-type PDU as-is to the peer Datamover layer when requested to do so by the local iSCSI layer.
2) 当本地iSCSI层请求时,按原样将iSCSI控制类型PDU传输到对等数据移动器层。
3) provide notification and delivery to the iSCSI layer upon arrival of an iSCSI control-type PDU.
3) 在iSCSI控制类型PDU到达时向iSCSI层提供通知和传递。
4) provide an initiator-to-target data acknowledgement of SCSI read data back to the target iSCSI layer, when requested.
4) 在收到请求时,为SCSI读回目标iSCSI层的数据提供启动器到目标的数据确认。
5) provide an asynchronous notification upon completion of a requested data transfer operation that moved data without involving the iSCSI layer.
5) 完成请求的数据传输操作后提供异步通知,该操作在不涉及iSCSI层的情况下移动数据。
6) place the SCSI data into the I/O buffers or pick up the SCSI data for transmission out of the data buffers that the iSCSI layer had requested to be used for a SCSI I/O.
6) 将SCSI数据放入I/O缓冲区,或从iSCSI层请求用于SCSI I/O的数据缓冲区中提取SCSI数据进行传输。
7) provide an error-free (i.e., must have at least the same level of assurance of data integrity as the CRC32C iSCSI data digest), reliable, in-order delivery transport mechanism over IP networks in performing the data transfer, and asynchronously notify the iSCSI layer upon iSCSI connection termination.
7) 在执行数据传输时,通过IP网络提供无错误(即,必须至少具有与CRC32C iSCSI数据摘要相同的数据完整性保证级别)、可靠、有序的传输机制,并在iSCSI连接终止时异步通知iSCSI层。
Note that this architecture expects that each compliant Datamover protocol will define the precise means of satisfying the requirements specified in this section.
请注意,此体系结构期望每个符合要求的Datamover协议将定义满足本节中指定要求的精确方法。
In order to meet the functional requirements listed in this section, certain Datamover protocols may require pre-posted buffers from the local iSCSI protocol layer via mechanisms outside the scope of this document. In some implementations, the absence of such buffers may result in a connection failure. Datamover protocols may also realize these functional requirements via methods not explicitly listed in this document.
为了满足本节中列出的功能要求,某些Datamover协议可能需要通过本文档范围之外的机制从本地iSCSI协议层预发布缓冲区。在某些实现中,缺少此类缓冲区可能会导致连接失败。Datamover协议也可以通过本文档中未明确列出的方法实现这些功能需求。
This section presents an overview of the functional interactions between the iSCSI layer and the Datamover layer as intended by this Architecture.
本节概述了iSCSI层和Datamover层之间的功能性交互,这是该体系结构所希望的。
The iSCSI Login Phase on an iSCSI connection occurs as defined in [RFC3720]. The Architecture assumes that at the end of the Login Phase, both the initiator and target, if they had so decided, transition the connection to being Datamover-assisted. The precise means of how an iSCSI initiator and an iSCSI target agree on having the connection Datamover-assisted is defined by the Datamover protocol. The only architectural requirement is that all iSCSI interactions in the iSCSI Full Feature Phase MUST be Datamover-assisted subject to the prior agreement, meaning that the Datamover protocol is in the iSCSI-to-iSCSI communication path below the iSCSI layer on either side as shown in Figure 1. DA defines the Enable_Datamover Operational Primitive (Section 8.6) to bring about this transition to a Datamover-assisted connection.
iSCSI连接上的iSCSI登录阶段按照[RFC3720]中的定义进行。该体系结构假设在登录阶段结束时,发起方和目标方(如果他们决定的话)都会将连接转换为Datamover辅助连接。数据移动器协议定义了iSCSI启动器和iSCSI目标如何在连接数据移动器辅助方面达成一致的确切方法。唯一的体系结构要求是,iSCSI全功能阶段中的所有iSCSI交互都必须是Datamover辅助的,但必须遵守事先的协议,这意味着Datamover协议位于iSCSI层下方的iSCSI到iSCSI通信路径中,位于任一侧,如图1所示。DA定义了Enable_Datamover操作原语(第8.6节),以实现向Datamover辅助连接的转换。
The Architecture also assumes that the Datamover layer may require a certain number of opaque local resources for making a connection Datamover-assisted. DA thus defines the Allocate_Connection_Resources Operational Primitive (Section 8.4) to model this interaction. This Primitive is intended to be invoked on each side once the two sides decide (as previously noted) to have the connection be Datamover-assisted. The expected sequence of Primitive invocations is depicted in Figures 2 and 3 in Section 13.2. Figures
该体系结构还假设Datamover层可能需要一定数量的不透明本地资源来建立连接Datamover。DA因此定义了分配连接资源操作原语(第8.4节)来模拟这种交互。一旦双方决定(如前所述)使用Datamover辅助连接,就可以在每一方调用此原语。第13.2节的图2和图3描述了原语调用的预期顺序。数字
4, 5, and 6 illustrate how the Primitives may be employed to deal with various legal login outcomes.
4、5和6说明了如何使用原语处理各种合法登录结果。
All iSCSI peer communication in the Full Feature Phase happens through the Datamover layers if the iSCSI connection is Datamover-assisted. The Architecture assumes that a Datamover layer may require a certain number of opaque local resources for each new iSCSI task. In the normal course of execution, these task-level resources in the Datamover layer are assumed to be transparently allocated on each task initiation and deallocated on the conclusion of each task as appropriate. In exception scenarios however -- scenarios that do not yield a SCSI Response for each task such as ABORT TASK operation -- the Architecture assumes that the Datamover layer needs to be notified of the individual task terminations to aid its task-level resource management. DA thus defines the Deallocate_Task_Resources Operational Primitive (Section 8.9) to model this task-resource management. In specifying the ITT qualifier for the Deallocate_Task_Resources Primitive, the Architecture further assumes that the Datamover layer tracks its opaque task-level local resources by the iSCSI ITT. DA also defines Send_Control (Section 8.1), Put_Data (Section 8.2), Get_Data (Section 8.3), Data_Completion_Notify (Section 9.3), Data_ACK_Notify (Section 9.4), and Control_Notify (Section 9.1) Operational Primitives to model the various Full Feature Phase interactions.
如果iSCSI连接由Datamover辅助,则全功能阶段的所有iSCSI对等通信都通过Datamover层进行。该体系结构假定,对于每个新的iSCSI任务,Datamover层可能需要一定数量的不透明本地资源。在正常执行过程中,假定Datamover层中的这些任务级资源在每个任务启动时透明分配,并在每个任务结束时酌情取消分配。但是,在异常情况下(对于每个任务(如中止任务操作)都不会产生SCSI响应的情况下),体系结构假定需要通知Datamover层各个任务的终止,以帮助其任务级资源管理。DA因此定义了解除分配任务资源操作原语(第8.9节),以对该任务资源管理进行建模。在为Deallocate_Task_Resources原语指定ITT限定符时,体系结构进一步假设Datamover层通过iSCSI ITT跟踪其不透明的任务级本地资源。DA还定义了发送控制(第8.1节)、输入数据(第8.2节)、获取数据(第8.3节)、数据完成通知(第9.3节)、数据确认通知(第9.4节)和控制通知(第9.1节)操作原语,以模拟各种全功能阶段交互。
Figures 9, 10, and 11 in Section 13.2 show some Full Feature Phase interactions -- SCSI Write task, SCSI Read task, and a SCSI Read Data acknowledgement, respectively. Figure 12 in Section 13.2 illustrates how an ABORT TASK operation can be modeled leading to deterministic resource cleanup on the Datamover layer.
第13.2节中的图9、图10和图11显示了一些完整的功能阶段交互——SCSI写入任务、SCSI读取任务和SCSI读取数据确认。第13.2节中的图12说明了如何对中止任务操作进行建模,从而在Datamover层上实现确定性资源清理。
Once an iSCSI connection becomes Datamover-assisted, the connection continues in that state until the end of the Full Feature Phase, i.e., the termination of the connection. The Architecture assumes that when a connection is normally logged out, the Datamover layer needs to be notified so that its connection-level opaque resources (see Section 7.1) may be freed up. DA thus defines a Connection_Terminate Operational Primitive (Section 8.7) to model this interaction. The Architecture further assumes that when a connection termination happens without iSCSI layer's involvement (e.g., TCP RST), the Datamover layer is capable of locally cleaning up its task-level and connection-level resources before notifying the iSCSI layer of the fact. DA thus defines the
一旦iSCSI连接成为Datamover辅助连接,该连接将继续处于该状态,直到完整功能阶段结束,即连接终止。该体系结构假定,当连接正常注销时,需要通知Datamover层,以便释放其连接级别的不透明资源(参见第7.1节)。DA因此定义了一个连接终止操作原语(第8.7节)来模拟这种交互。该体系结构进一步假设,当连接终止发生时,没有iSCSI层的参与(例如TCP RST),Datamover层能够在通知iSCSI层之前本地清理其任务级和连接级资源。DA因此定义了
Connection_Terminate_Notify Operational Primitive (Section 9.2) to model this interaction.
连接_终止_通知操作原语(第9.2节)对该交互进行建模。
Figures 7 and 8 in Section 13.2 illustrate the interactions between the iSCSI and Datamover layers in normal and unexpected connection termination scenarios.
第13.2节中的图7和图8说明了在正常和意外连接终止场景中iSCSI和Datamover层之间的交互。
While the iSCSI specification itself does not have a notion of Operational Primitives, any iSCSI layer implementing the iSCSI specification functionally requires the following Operational Primitives from its Datamover layer. Thus, any Datamover protocol compliant with this architecture MUST implement the Operational Primitives described in this section. These Operational Primitives are invoked by the iSCSI layer as appropriate. Unless otherwise stated, all the following Operational Primitives may be used both on the initiator side and the target side. In general programming terminology, this set of Operational Primitives may be construed as "down calls".
虽然iSCSI规范本身没有操作原语的概念,但任何实现iSCSI规范的iSCSI层在功能上都需要来自其Datamover层的以下操作原语。因此,任何符合此体系结构的Datamover协议都必须实现本节中描述的操作原语。iSCSI层会根据需要调用这些操作原语。除非另有说明,否则以下所有操作原语均可在启动器侧和目标侧使用。在一般编程术语中,这组操作原语可以解释为“停机调用”。
1) Send_Control
1) 发送控制
2) Put_Data
2) 输入数据
3) Get_Data
3) 获取数据
4) Allocate_Connection_Resources
4) 分配连接资源
5) Deallocate_Connection_Resources
5) 取消分配\u连接\u资源
6) Enable_Datamover
6) 启用数据移动器
7) Connection_Terminate
7) 连接终止
8) Notice_Key_Values
8) 注意\u键\u值
9) Deallocate_Task_Resources
9) 解除分配任务资源
Input qualifiers: Connection_Handle, iSCSI PDU-specific qualifiers
输入限定符:连接句柄、iSCSI PDU特定限定符
Return Results: Not specified.
返回结果:未指定。
An iSCSI layer requests that its local Datamover layer transmit an iSCSI control-type PDU to the peer iSCSI layer operating in the remote iSCSI node by this Operational Primitive. The Datamover layer
iSCSI层请求其本地Datamover层通过此操作原语将iSCSI控制类型PDU传输到远程iSCSI节点中操作的对等iSCSI层。数据移动器层
performs the requested operation, and may add its own protocol headers in doing so. The iSCSI layer MUST NOT invoke the Send_Control Operational Primitive on an iSCSI connection that is not yet Datamover-assisted.
执行请求的操作,并可以在执行过程中添加自己的协议头。iSCSI层不得在尚未由Datamover辅助的iSCSI连接上调用Send_Control操作原语。
An initiator iSCSI layer requesting the transfer of a SCSI Command PDU or a target iSCSI layer requesting the transfer of a SCSI response PDU are examples of invoking the Send_Control Operational Primitive. As Section 10.3.1 illustrates later on, the iSCSI PDU-specific qualifiers in this example are: BHS and AHS, DataDescriptorOut, DataDescriptorIn, ImmediateDataSize, and UnsolicitedDataSize.
请求传输SCSI命令PDU的启动器iSCSI层或请求传输SCSI响应PDU的目标iSCSI层是调用发送控制操作原语的示例。如后面第10.3.1节所示,本例中特定于iSCSI PDU的限定符为:BHS和AHS、DataDescriptorRout、DataDescriptorIn、ImmediateDasize和UnsolicitedDataSize。
Input qualifiers: Connection_Handle, contents of a SCSI Data-In PDU header, Data_Descriptor, Notify_Enable
输入限定符:连接句柄、PDU头中SCSI数据的内容、数据描述符、通知启用
Return Results: Not specified.
返回结果:未指定。
An iSCSI layer requests that its local Datamover layer transmit the data identified by the Data_Descriptor for the SCSI Data-In PDU to the peer iSCSI layer on the remote iSCSI node by this Operational Primitive. The Datamover layer performs the operation by using its own protocol means, completely transparent to the remote iSCSI layer. The iSCSI layer MUST NOT invoke the Put_Data Operational Primitive on an iSCSI connection that is not yet Datamover-assisted.
iSCSI层请求其本地Datamover层通过此操作原语将PDU中SCSI数据的数据描述符标识的数据传输到远程iSCSI节点上的对等iSCSI层。Datamover层使用自己的协议方式执行操作,对远程iSCSI层完全透明。iSCSI层不得在尚未由Datamover辅助的iSCSI连接上调用Put_数据操作原语。
The Notify_Enable qualifier is used to request the local Datamover layer to generate or not generate the eventual local completion notification to the iSCSI layer for this Put_Data invocation. For detailed semantics of this qualifier, see Section 9.3.
Notify_Enable限定符用于请求本地Datamover层为该Put_数据调用生成或不生成到iSCSI层的最终本地完成通知。有关此限定符的详细语义,请参见第9.3节。
A Put_Data Primitive may only be invoked by an iSCSI layer on the target to its local Datamover layer.
Put_数据原语只能由目标上的iSCSI层调用到其本地Datamover层。
A target iSCSI layer requesting the transfer of an iSCSI read data sequence (also known as a read burst) is an example of invoking the Put_Data Operational Primitive.
请求传输iSCSI读取数据序列(也称为读取突发)的目标iSCSI层是调用Put_数据操作原语的一个示例。
Input qualifiers: Connection_Handle, contents of an R2T PDU, Data_Descriptor, Notify_Enable
输入限定符:连接句柄、R2T PDU的内容、数据描述符、通知启用
Return Results: Not specified.
返回结果:未指定。
An iSCSI layer requests that its local Datamover layer retrieve certain data identified by the R2T PDU from the peer iSCSI layer on the remote iSCSI node and place it into the buffer identified by the Data_Descriptor by invoking this Operational Primitive. The Datamover layer performs the operation by using its own protocol means, completely transparent to the remote iSCSI layer. The iSCSI layer MUST NOT invoke the Get_Data Operational Primitive on an iSCSI connection that is not yet Datamover-assisted.
iSCSI层请求其本地Datamover层从远程iSCSI节点上的对等iSCSI层检索R2T PDU标识的某些数据,并通过调用此操作原语将其放入数据描述符标识的缓冲区。Datamover层使用自己的协议方式执行操作,对远程iSCSI层完全透明。iSCSI层不得在尚未由Datamover辅助的iSCSI连接上调用Get_数据操作原语。
The Notify_Enable qualifier is used to request that the local Datamover layer generate or not generate the eventual local completion notification to the iSCSI layer for this Get_Data invocation. For detailed semantics of this qualifier, see Section 9.3.
Notify_Enable限定符用于请求本地Datamover层生成或不生成最终本地完成通知,以发送给iSCSI层进行此Get_数据调用。有关此限定符的详细语义,请参见第9.3节。
A Get_Data Primitive may only be invoked by an iSCSI layer on the target to its local Datamover layer.
Get_数据原语只能由目标上的iSCSI层调用到其本地Datamover层。
A target iSCSI layer requesting the transfer of an iSCSI write data sequence (also known as a write burst) is an example of invoking the Get_Data Operational Primitive.
请求传输iSCSI写入数据序列(也称为写入突发)的目标iSCSI层是调用Get_数据操作原语的一个示例。
Input qualifiers: Connection_Handle[, Resource_Descriptor ]
输入限定符:连接\句柄[,资源\描述符]
Return Results: Status.
返回结果:状态。
By invoking this Operational Primitive, an iSCSI layer requests that its local Datamover layer perform all the Datamover-specific resource allocations required for the Full Feature Phase of an iSCSI connection. The Connection_Handle identifies the connection for which the iSCSI layer is requesting resources to be allocated. Allocation of these resources is a step towards eventually transitioning the connection to become a Datamover-assisted iSCSI connection. Note that the Datamover layer however does not allocate any Datamover-specific task-level resources upon invocation of this Primitive.
通过调用此操作原语,iSCSI层请求其本地Datamover层执行iSCSI连接的完整功能阶段所需的所有Datamover特定资源分配。连接句柄标识iSCSI层请求为其分配资源的连接。分配这些资源是最终将连接转换为Datamover辅助iSCSI连接的一个步骤。请注意,Datamover层在调用此原语时不会分配任何Datamover特定的任务级别资源。
An iSCSI layer, in addition, optionally specifies the implementation-specific resource requirements for the iSCSI connection to the Datamover layer by passing an input qualifier called Resource_Descriptor. The exact structure of a Resource_Descriptor is implementation-dependent, and hence structurally opaque to DA.
此外,iSCSI层还可以通过传递名为resource_Descriptor的输入限定符,选择性地指定与Datamover层的iSCSI连接的特定于实现的资源需求。资源描述符的确切结构取决于实现,因此在结构上对DA是不透明的。
A return result of Status=success means that the Allocate_Connection_Resources invocation corresponding to that
Status=success的返回结果意味着与之对应的Allocate\u Connection\u Resources调用
Connection_Handle succeeded. If an Allocate_Connection_Resources invocation is made for a Connection_Handle for which an earlier invocation succeeded, the return Status must be success and the request will be ignored by the Datamover layer. A return result of Status=failure means that the Allocate_Connection_Resources invocation corresponding to that Connection_Handle failed. There MUST NOT be more than one Allocate_Connection_Resources Primitive invocation outstanding for a given Connection_Handle at any time.
连接句柄成功。如果对先前调用成功的连接句柄进行分配连接资源调用,则返回状态必须为成功,并且Datamover层将忽略该请求。返回Status=failure的结果意味着与该连接句柄对应的Allocate\u Connection\u Resources调用失败。对于给定的连接句柄,任何时候都不得有多个Allocate_Connection_Resources原语调用未完成。
The iSCSI layer must invoke the Allocate_Connection_Resources Primitive before the invocation of the Enable_Datamover Primitive.
iSCSI层必须在调用Enable_Datamover原语之前调用Allocate_Connection_Resources原语。
Input qualifiers: Connection_Handle
输入限定符:连接\u句柄
Return Results: Not specified.
返回结果:未指定。
By invoking this Operational Primitive, an iSCSI layer requests that its local Datamover layer deallocate all the Datamover-specific resources that may have been allocated earlier for the Transport Connection identified by the Connection_Handle. The iSCSI layer may invoke this Operational Primitive when the Datamover-specific resources associated with the Connection_Handle are no longer necessary (such as the Login failure of the corresponding iSCSI connection).
通过调用此操作原语,iSCSI层请求其本地Datamover层取消分配所有Datamover特定资源,这些资源可能已在之前分配给连接句柄标识的传输连接。当不再需要与连接句柄关联的Datamover特定资源时(例如相应iSCSI连接的登录失败),iSCSI层可以调用此操作原语。
Input qualifiers: Connection_Handle, Transport_Connection_Descriptor [, Final_Login_Response_PDU]
输入限定符:连接\句柄、传输\连接\描述符[、最终\登录\响应\ PDU]
Return Results: Not specified.
返回结果:未指定。
By invoking this Operational Primitive, an iSCSI layer requests that its local Datamover layer assist all further iSCSI exchanges on the iSCSI connection (i.e., to make the connection Datamover-assisted) identified by the Connection_Handle, for which the Datamover-specific resource allocation was earlier made. The iSCSI layer MUST NOT invoke the Enable_Datamover Operational Primitive for an iSCSI connection unless there is a corresponding prior resource allocation.
通过调用此操作原语,iSCSI层请求其本地Datamover层协助iSCSI连接上的所有其他iSCSI交换(即,使连接Datamover得到协助),该连接由连接句柄标识,而Datamover特定的资源分配是先前为其分配的。iSCSI层不得为iSCSI连接调用Enable_Datamover操作原语,除非有相应的先前资源分配。
The Final_Login_Response_PDU input qualifier is applicable only for a target, and contains the final Login Response that concludes the iSCSI Login Phase and which must be sent as a byte stream as expected by the initiator iSCSI layer. When this qualifier is used, the target-Datamover layer MUST transmit this final Login Response before Datamover assistance is enabled for the Transport Connection.
Final_Login_Response_PDU输入限定符仅适用于目标,它包含结束iSCSI登录阶段的最终登录响应,并且必须按照启动器iSCSI层的预期作为字节流发送。使用此限定符时,在为传输连接启用Datamover协助之前,目标Datamover层必须传输此最终登录响应。
The iSCSI layer identifies the specific Transport Connection associated with the Connection_Handle to the Datamover layer by specifying the Transport_Connection_Descriptor. The exact structure of this Descriptor is implementation-dependent.
iSCSI层通过指定传输连接描述符来标识与Datamover层的连接句柄关联的特定传输连接。此描述符的确切结构取决于实现。
Input qualifiers: Connection_Handle
输入限定符:连接\u句柄
Return Results: Not specified.
返回结果:未指定。
By invoking this Operational Primitive, an iSCSI layer requests that its local Datamover layer terminate the Transport Connection and deallocate all the connection and task resources associated with the Connection_Handle. When this Operational Primitive invocation returns to the iSCSI layer, the iSCSI layer may assume the full ownership of all the iSCSI-level resources, e.g., I/O Buffers, associated with the connection. This Operational Primitive may be invoked only with a valid Connection_Handle, and the Transport Connection associated with the Connection_Handle must already be Datamover-assisted.
通过调用此操作原语,iSCSI层请求其本地Datamover层终止传输连接,并解除分配与连接句柄关联的所有连接和任务资源。当此操作原语调用返回到iSCSI层时,iSCSI层可能会承担与连接相关联的所有iSCSI级别资源(例如I/O缓冲区)的完全所有权。只能使用有效的连接句柄调用此操作原语,并且与连接句柄关联的传输连接必须已经由Datamover辅助。
Input qualifiers: Connection_Handle, Number of keys, a list of Key-Value pairs.
输入限定符:连接句柄、键数、键值对列表。
Return Results: Not specified.
返回结果:未指定。
By invoking this Operational Primitive, an iSCSI layer requests that its local Datamover layer take note of the negotiated values of the listed keys for the Transport Connection. This Operational Primitive may be invoked only with a valid Connection_Handle, and the Key-Value pairs MUST be the current values that were successfully agreed upon by the iSCSI peers for the connection. The Datamover layer may use the values of the keys to aid the Datamover operation as it deems appropriate. The specific keys to be passed as input qualifiers and the point(s) in time this Operational Primitive is invoked are implementation-dependent.
通过调用此操作原语,iSCSI层请求其本地Datamover层记录传输连接所列密钥的协商值。只能使用有效的连接句柄调用此操作原语,并且键值对必须是iSCSI对等方为连接成功商定的当前值。Datamover层可以在其认为合适的情况下使用密钥的值来帮助Datamover操作。要作为输入限定符传递的特定键以及调用此操作原语的时间点取决于实现。
Input qualifiers: Connection_Handle, ITT
输入限定符:连接句柄,ITT
Return Results: Not specified.
返回结果:未指定。
By invoking this Operational Primitive, an iSCSI layer requests that its local Datamover layer deallocate all Datamover-specific resources
通过调用此操作原语,iSCSI层请求其本地Datamover层取消分配所有特定于Datamover的资源
that earlier may have been allocated for the task identified by the ITT qualifier. The iSCSI layer uses this Operational Primitive during exception processing when one or more active tasks are to be terminated without corresponding SCSI Response PDUs. This Primitive MUST be invoked for each active task terminated without a SCSI Response PDU. This Primitive MUST NOT be invoked by the iSCSI layer when a SCSI Response PDU normally concludes a task. When a SCSI Response PDU normally concludes a task (even if the SCSI Status was not a success), the Datamover layer is assumed to have automatically deallocated all Datamover-specific task resources for that task. Refer to Section 7.2 for a related discussion on the Architectural assumptions on the task-level Datamover resource management, especially with respect to when the resources are assumed to be allocated.
之前可能已分配给ITT鉴定人确定的任务。当一个或多个活动任务在没有相应SCSI响应PDU的情况下终止时,iSCSI层在异常处理期间使用此操作原语。必须为每个在没有SCSI响应PDU的情况下终止的活动任务调用此原语。当SCSI响应PDU通常结束任务时,iSCSI层不得调用此原语。当SCSI响应PDU正常结束任务时(即使SCSI状态不是成功),假定Datamover层已自动解除分配该任务的所有Datamover特定任务资源。有关任务级Datamover资源管理的体系结构假设的相关讨论,请参阅第7.2节,特别是关于假设何时分配资源的相关讨论。
While the iSCSI specification itself does not have a notion of Operational Primitives, any iSCSI layer implementing the iSCSI specification would have to provide the following Operational Primitives to its local Datamover layer. Thus, any iSCSI protocol implementation compliant with this architecture MUST implement the Operational Primitives described in this section. These Operational Primitives are invoked by the Datamover layer as appropriate and when the iSCSI connection is Datamover-assisted. Unless otherwise stated, all the following Operational Primitives may be used both on the initiator side and the target side. In general programming terminology, this set of Operational Primitives may be construed as "up calls".
虽然iSCSI规范本身没有操作原语的概念,但任何实现iSCSI规范的iSCSI层都必须向其本地Datamover层提供以下操作原语。因此,任何符合此体系结构的iSCSI协议实现都必须实现本节中描述的操作原语。当iSCSI连接由Datamover辅助时,Datamover层会根据需要调用这些操作原语。除非另有说明,否则以下所有操作原语均可在启动器侧和目标侧使用。在一般编程术语中,这组操作原语可以解释为“向上调用”。
1) Control_Notify
1) 控制通知
2) Connection_Terminate_Notify
2) 连接\u终止\u通知
3) Data_Completion_Notify
3) 数据完成通知
4) Data_ACK_Notify
4) 数据确认通知
Input qualifiers: Connection_Handle, an iSCSI control-type PDU.
输入限定符:连接句柄,iSCSI控制类型PDU。
Return Results: Not specified.
返回结果:未指定。
A Datamover layer notifies its local iSCSI layer, via this Operational Primitive, of the arrival of an iSCSI control-type PDU from the peer Datamover layer on the remote iSCSI node. The iSCSI layer processes the control-type PDU as defined in [RFC3720].
数据移动器层通过此操作原语通知其本地iSCSI层来自远程iSCSI节点上对等数据移动器层的iSCSI控制类型PDU的到达。iSCSI层处理[RFC3720]中定义的控制类型PDU。
A target iSCSI layer being notified of the arrival of a SCSI command is an example of invoking the Control_Notify Operational Primitive.
SCSI命令到达时通知目标iSCSI层是调用Control_Notify操作原语的一个示例。
Note that implementations may choose to describe the "iSCSI control-type PDU" qualifier in this notification using a Data_Descriptor (Section 5.2) and not necessarily one contiguous buffer.
请注意,实施可能会选择使用数据描述符(第5.2节)而不一定是一个连续缓冲区来描述此通知中的“iSCSI控制类型PDU”限定符。
Input qualifiers: Connection_Handle
输入限定符:连接\u句柄
Return Results: Not specified.
返回结果:未指定。
A Datamover layer notifies its local iSCSI layer on an unsolicited termination or failure of an iSCSI connection providing the Connection_Handle associated with the iSCSI Connection. The iSCSI layer MUST consider the Connection_Handle to be invalid upon being so notified. The iSCSI layer processes the connection termination as defined in [RFC3720]. The Datamover layer MUST deallocate the connection and task resources associated with the terminated connection before notifying the iSCSI layer of the termination via this Operational Primitive.
Datamover层在iSCSI连接未经请求终止或失败时通知其本地iSCSI层,提供与iSCSI连接关联的连接句柄。ISCSI层必须在通知时考虑连接句柄无效。iSCSI层处理[RFC3720]中定义的连接终止。在通过此操作原语通知iSCSI层终止之前,Datamover层必须先解除分配与已终止连接关联的连接和任务资源。
A target iSCSI layer is notified of an ungraceful connection termination by the Datamover layer when the underlying Transport Connection is torn down. Such a Connection_Terminate_Notify Operational Primitive may be triggered, for example, by a TCP RESET in cases where the underlying Transport Connection uses TCP.
当底层传输连接断开时,Datamover层会通知目标iSCSI层连接终止不正常。例如,在底层传输连接使用TCP的情况下,可以通过TCP重置触发这种连接\u终止\u通知操作原语。
Input qualifiers: Connection_Handle, ITT, SN
输入限定符:连接句柄、ITT、SN
Return Results: Not specified.
返回结果:未指定。
A Datamover layer notifies its local iSCSI layer on completing the retrieval of the data or upon sending the data, as requested in a prior iSCSI data-type PDU, from/to the peer Datamover layer on the remote iSCSI node via this Operational Primitive. The iSCSI layer processes the operation as defined in [RFC3720].
数据移动器层在完成数据检索或按照先前iSCSI数据类型PDU中的请求,通过此操作原语将数据从远程iSCSI节点上的对等数据移动器层发送到远程iSCSI节点上的对等数据移动器层时,通知其本地iSCSI层。iSCSI层处理[RFC3720]中定义的操作。
SN may be either the DataSN associated with the SCSI Data-In PDU or R2TSN associated with the R2T PDU depending on the SCSI operation. Note that, for targets, a TTT (see [RFC3720]) could have been specified instead of an SN. However, the considered choice was to leave the SN to be the qualifier for two reasons -- a) it is generic and applicable to initiators and targets as well as Data-In and Data-Out, and b) having both SN and TTT qualifiers for the
SN可以是与PDU中的SCSI数据关联的DataSN,也可以是与R2T PDU关联的R2TSN,具体取决于SCSI操作。注意,对于目标,可以指定TTT(参见[RFC3720]),而不是SN。然而,考虑过的选择是将SN保留为限定符,原因有两个——a)它是通用的,适用于启动器和目标以及数据输入和数据输出,以及b)对于
notification is considered onerous on the Datamover layer, in terms of state maintenance for each completion notification. The implication of this choice is that iSCSI target implementations will have to adapt to using the ITT-SN tuple in associating the solicited data to the appropriate task, rather than the ITT-TTT tuple for doing the same.
就每个完成通知的状态维护而言,Datamover层上的通知被认为是繁重的。这一选择的含义是,iSCSI目标实现必须适应使用ITT-SN元组将请求的数据关联到适当的任务,而不是使用ITT-TTT元组来执行相同的操作。
If Notify_Enable is set in either a Put_Data or a Get_Data invocation, the Datamover layer MUST invoke the Data_Completion_Notify Operational Primitive upon completing that requested data transfer. If the Notify_Enable was cleared in either a Put_Data or a Get_Data invocation, the Datamover layer MUST NOT invoke the Data_Completion_Notify Operational Primitive upon completing that requested data transfer.
如果在Put_数据调用或Get_数据调用中设置了Notify_Enable,则Datamover层必须在完成请求的数据传输后调用Data_Completion_Notify Operational原语。如果在Put_数据或Get_数据调用中清除了Notify_Enable,则Datamover层在完成请求的数据传输时不得调用Data_COMPLICATION_Notify操作原语。
A Data_Completion_Notify invocation serves to notify the iSCSI layer of the Put_Data or Get_Data completion, respectively. As earlier noted in Sections 8.2 and 8.3, specific Datamover protocol definitions may restrict the usage scope of Put_Data and Get_Data, and thus implicitly the usage scope of Data_Completion_Notify.
Data_Completion_Notify调用用于分别向iSCSI层通知Put_数据或Get_数据的完成。如前所述,在第8.2节和第8.3节中,特定的Datamover协议定义可能会限制Put_数据和Get_数据的使用范围,从而隐含数据_完成_Notify的使用范围。
A target iSCSI layer being notified of the retrieval of a write data sequence is an example of invoking the Data_Completion_Notify Operational Primitive.
被通知检索写入数据序列的目标iSCSI层是调用data_Completion_Notify操作原语的一个示例。
Input qualifiers: Connection_Handle, ITT, DataSN
输入限定符:连接句柄、ITT、DataSN
Return Results: Not specified.
返回结果:未指定。
A target Datamover layer notifies its local iSCSI layer of the arrival of a previously requested data acknowledgement from the peer Datamover layer on the remote (initiator) iSCSI node via this Operational Primitive. The iSCSI layer processes the data acknowledgement notification as defined in [RFC3720].
目标数据移动器层通过此操作原语通知其本地iSCSI层以前从远程(启动器)iSCSI节点上的对等数据移动器层请求的数据确认的到达。iSCSI层处理[RFC3720]中定义的数据确认通知。
A target iSCSI layer being notified of the arrival of a data acknowledgement for a certain SCSI Read data PDU is the only example of invoking the Data_ACK_Notify Operational Primitive.
向目标iSCSI层通知特定SCSI读取数据PDU的数据确认到达,这是调用数据确认通知操作原语的唯一示例。
This section describes the model of interactions between iSCSI and Datamover layers when the iSCSI connection is Datamover-assisted so the iSCSI layer may carry out the following:
本节介绍了当iSCSI连接由Datamover辅助时,iSCSI和Datamover层之间的交互模型,以便iSCSI层可以执行以下操作:
- send iSCSI data-type PDUs and exchange iSCSI control-type PDUs, and
- 发送iSCSI数据类型PDU和exchange iSCSI控制类型PDU,以及
- handle asynchronous notifications such as completion of data sequence transfer and connection failure.
- 处理异步通知,如数据序列传输完成和连接失败。
This chapter relies on the notion of Operational Primitives (Section 5.4) to define DI.
本章依赖于操作原语的概念(第5.4节)来定义DI。
As stated in Section 9.2, the Datamover layer notifies the iSCSI layer of a failed or terminated connection via the Connection_Terminate_Notify Operational Primitive. The iSCSI layer MUST consider the connection unusable upon the invocation of this Primitive and handle the connection termination as specified in [RFC3720].
如第9.2节所述,Datamover层通过connection_Terminate_Notify操作原语通知iSCSI层连接失败或终止。iSCSI层必须考虑调用此基元时的连接不可用,并处理在[RCF320]中指定的连接终止。
As stated in Section 9.3, the Datamover layer notifies the iSCSI layer of a completed data transfer operation via the Data_Completion_Notify Operational Primitive. The iSCSI layer processes the transfer completion as specified in [RFC3720].
如第9.3节所述,Datamover层通过data_Completion_Notify Operational原语通知iSCSI层已完成的数据传输操作。iSCSI层按照[RFC3720]中的规定处理传输完成。
To notify the iSCSI layer of the completion of a requested iSCSI data-type PDU transfer, the Datamover layer uses the Data_Completion_Notify Operational Primitive with the following input qualifiers.
要通知iSCSI层请求的iSCSI数据类型PDU传输已完成,Datamover层使用带有以下输入限定符的data_completion_notify操作原语。
a) Connection_Handle.
a) 连接手柄。
b) ITT: Initiator Task Tag semantics as defined in [RFC3720].
b) ITT:[RFC3720]中定义的启动器任务标记语义。
c) SN: DataSN for a SCSI Data-in/Data-out PDU, and R2TSN for an iSCSI R2T PDU. The semantics for both types of sequence numbers are as defined in [RFC3720].
c) SN:DataSN用于SCSI数据输入/数据输出PDU,R2TSN用于iSCSI R2T PDU。这两种序列号的语义如[RFC3720]中所定义。
The rationale for choosing SN is explained in Section 9.3.
第9.3节解释了选择SN的基本原理。
Every invocation of the Data_Completion_Notify Operational Primitive MUST be preceded by an invocation of the Put_Data or Get_Data Operational Primitive with the Notify_Enable qualifier set by the iSCSI layer at an earlier point in time.
每次调用Data_Completion_Notify操作原语之前,必须先调用Put_Data或Get_Data操作原语,并在较早的时间点使用iSCSI层设置的Notify_Enable限定符。
[RFC3720] allows the iSCSI targets to optionally solicit data acknowledgement from the initiator for one or more Data-In PDUs, via setting of the A-bit on a Data-In PDU. The Data_ACK_Notify Operational Primitive with the following input qualifiers is used by the target Datamover layer to notify the local iSCSI layer of the arrival of data acknowledgement of a previously solicited iSCSI read data acknowledgement. This Operational Primitive thus is applicable only to iSCSI targets.
[RFC3720]允许iSCSI目标通过在PDU中的数据上设置A位,选择性地请求启动器确认PDU中的一个或多个数据。目标Datamover层使用带有以下输入限定符的Data_ACK_Notify操作原语通知本地iSCSI层之前请求的iSCSI读取数据确认的数据确认到达。因此,此操作原语仅适用于iSCSI目标。
a) Connection_Handle.
a) 连接手柄。
b) ITT: Initiator Task Tag semantics as defined in [RFC3720].
b) ITT:[RFC3720]中定义的启动器任务标记语义。
c) DataSN: of the next SCSI Data-In PDU, which immediately follows the SCSI Data-In PDU with the A-bit set to which this notification corresponds, with semantics as defined in [RFC3720].
c) DataSN:PDU中的下一个SCSI数据,紧跟在PDU中的SCSI数据之后,并带有此通知对应的A位集,语义如[RFC3720]中所定义。
Every invocation of the Data_ACK_Notify Operational Primitive MUST be preceded by an invocation of the Put_Data Operational Primitive by the iSCSI target layer with the A-bit set to 1 at an earlier point in time.
每次调用Data_ACK_Notify操作原语之前,iSCSI目标层必须先调用Put_Data操作原语,并在较早的时间点将A位设置为1。
This section discusses the model of interactions for sending each of the iSCSI PDUs defined in [RFC3720]. A Connection_Handle (see Section 5.3) is assumed to qualify each of these interactions so that the Datamover layer can route it to the appropriate Transport Connection. The qualifying Connection_Handle is not explicitly listed in the subsequent sections.
本节讨论用于发送[RFC3720]中定义的每个iSCSI PDU的交互模型。假设一个连接句柄(见第5.3节)用于限定这些交互中的每一个,以便Datamover层可以将其路由到适当的传输连接。在后面的部分中没有明确列出符合条件的连接句柄。
Note that the defined list of input qualifiers represents the semantically required set for the Datamover layer to consider in implementing the Primitive in each interaction described in this section (see Section 5.4 for an elaboration). Implementations may choose to deduce the qualifiers in ways that are optimized for the implementation specifics. Two examples of this are:
请注意,定义的输入限定符列表表示在本节中描述的每个交互中实现原语时要考虑的DATAMORM层的语义所需的集合(详见第5.4节)。实现可以选择以针对实现细节进行优化的方式推断限定符。这方面的两个例子是:
1. For SCSI command (Section 10.3.1), deducing the ImmediateDataSize input qualifier from the DataSegmentLength field of the SCSI Command PDU.
1. 对于SCSI命令(第10.3.1节),从SCSI命令PDU的DataSegmentLength字段中推断ImmediatedTaskize输入限定符。
2. For SCSI Data-Out (Section 10.3.5.1), deducing the DataDescriptorOut input qualifier from the associated SCSI command invocation qualifiers (assuming such state is
2. 对于SCSI数据输出(第10.3.5.1节),从相关的SCSI命令调用限定符(假设该状态为
maintained) in conjunction with BHS fields of the SCSI Data-Out PDU.
与SCSI数据输出PDU的BHS字段一起维护。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a SCSI Command PDU.
带有以下输入限定符的Send_Control operation原语用于请求传输SCSI命令PDU。
a) BHS and AHS, if any, of the SCSI Command PDU as defined in [RFC3720].
a) [RFC3720]中定义的SCSI命令PDU的BHS和AHS(如有)。
b) DataDescriptorOut: that defines the I/O Buffer meant for Data-Out for the entire command, in the case of a write or bidirectional command.
b) DataDescriptorRout:在写命令或双向命令的情况下,定义用于整个命令的数据输出的I/O缓冲区。
c) DataDescriptorIn: that defines the I/O Buffer meant for Data-In for the entire command, in the case of a read or bidirectional command.
c) DataDescriptorIn:在读取或双向命令的情况下,定义整个命令中用于数据的I/O缓冲区。
d) ImmediateDataSize: that defines the number of octets of immediate unsolicited data for a write/bidirectional command.
d) ImmediateDasize:定义写入/双向命令的即时未请求数据的八位字节数。
e) UnsolicitedDataSize: that defines the number of octets of immediate and non-immediate unsolicited data for a write/bidirectional command.
e) UnsolicitedDataSize:定义写入/双向命令的立即和非立即非请求数据的八位字节数。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a SCSI Response PDU.
带有以下输入限定符的Send_Control operation原语用于请求传输SCSI响应PDU。
a) BHS of the SCSI Response PDU as defined in [RFC3720].
a) [RFC3720]中定义的SCSI响应PDU的行李处理系统。
b) DataDescriptorStatus: that defines the iSCSI buffer that contains the sense and response information for the command.
b) DataDescriptorStatus:定义包含命令的检测和响应信息的iSCSI缓冲区。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a Task Management Function Request PDU.
带有以下输入限定符的发送控制操作原语用于请求传输任务管理功能请求PDU。
a) BHS of the Task Management Function Request PDU as defined in [RFC3720].
a) 任务管理功能的行李处理系统请求[RFC3720]中定义的PDU。
b) DataDescriptorOut: that defines the I/O Buffer meant for Data-Out for the entire command, in the case of a write or bidirectional command. (Only valid if Function="TASK REASSIGN" - [RFC3720].)
b) DataDescriptorRout:在写命令或双向命令的情况下,定义用于整个命令的数据输出的I/O缓冲区。(仅当Function=“任务重新分配”-[RFC3720]时有效)
c) DataDescriptorIn: that defines the I/O Buffer meant for Data-In for the entire command, in the case of a read or bidirectional command. (Only valid if Function="TASK REASSIGN" - [RFC3720].)
c) DataDescriptorIn:在读取或双向命令的情况下,定义整个命令中用于数据的I/O缓冲区。(仅当Function=“任务重新分配”-[RFC3720]时有效)
The Send_Control Operational Primitive with the following input qualifier is used for requesting the transmission of a Task Management Function Response PDU.
带有以下输入限定符的Send_Control operation原语用于请求传输任务管理功能响应PDU。
a) BHS of the Task Management Function Response PDU as defined in [RFC3720].
a) [RFC3720]中定义的任务管理功能响应PDU的行李处理系统。
The Send_Control Operational Primitive with the following input qualifiers is used by the initiator iSCSI layer for requesting the transmission of a SCSI Data-Out PDU carrying the non-immediate unsolicited data.
启动器iSCSI层使用带有以下输入限定符的Send_Control Operation原语请求将SCSI数据传输到PDU,PDU携带非即时未经请求的数据。
a) BHS of the SCSI Data-Out PDU as defined in [RFC3720].
a) SCSI数据输出PDU的行李处理系统,如[RFC3720]中所定义。
b) DataDescriptorOut: that defines the I/O Buffer with the Data-Out to be carried in the iSCSI data segment of the PDU.
b) DataDescriptorRout:用于定义I/O缓冲区,其中包含要在PDU的iSCSI数据段中携带的数据。
The Put_Data Operational Primitive with the following input qualifiers is used by the target iSCSI layer for requesting the transmission of the data carried by a SCSI Data-In PDU.
目标iSCSI层使用带有以下输入限定符的Put_数据操作原语请求传输PDU中SCSI数据所携带的数据。
a) BHS of the SCSI Data-In PDU as defined in [RFC3720].
a) [RFC3720]中定义的PDU中SCSI数据的BHS。
b) DataDescriptorIn: that defines the I/O Buffer with the Data-In being requested for transmission.
b) DataDescriptorIn:定义I/O缓冲区,其中包含被请求传输的数据。
The Get_Data Operational Primitive with the following input qualifiers is used by the target iSCSI layer for requesting the retrieval of the data as specified by the semantic content of an R2T PDU.
目标iSCSI层使用带有以下输入限定符的Get_Data operation原语请求检索R2T PDU语义内容指定的数据。
a) BHS of the Ready To Transfer PDU as defined in [RFC3720].
a) [RFC3720]中定义的准备转移PDU的行李处理系统。
b) DataDescriptorOut: that defines the I/O Buffer for the Data-Out being requested for retrieval.
b) DataDescriptorRout:为请求检索的数据输出定义I/O缓冲区。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of an Asynchronous Message PDU.
带有以下输入限定符的Send_Control operation原语用于请求异步消息PDU的传输。
a) BHS of the Asynchronous Message PDU as defined in [RFC3720].
a) [RFC3720]中定义的异步消息PDU的行李处理系统。
b) DataDescriptorSense: that defines an iSCSI buffer that contains the sense and iSCSI Event information.
b) DataDescriptorSense:定义包含检测和iSCSI事件信息的iSCSI缓冲区。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a Text Request PDU.
带有以下输入限定符的Send_Control operation原语用于请求发送文本请求PDU。
a) BHS of the Text Request PDU as defined in [RFC3720].
a) [RFC3720]中定义的文本请求PDU的行李处理系统。
b) DataDescriptorTextOut: that defines the iSCSI Text Request buffer.
b) DataDescriptorTextOut:定义iSCSI文本请求缓冲区的。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a Text Response PDU.
带有以下输入限定符的发送控制操作原语用于请求传输文本响应PDU。
a) BHS of the Text Response PDU as defined in [RFC3720].
a) [RFC3720]中定义的文本响应PDU的行李处理系统。
b) DataDescriptorTextIn: that defines the iSCSI Text Response buffer.
b) DataDescriptorTextIn:定义iSCSI文本响应缓冲区的。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a Login Request PDU.
带有以下输入限定符的Send_Control operation原语用于请求发送登录请求PDU。
a) BHS of the Login Request PDU as defined in [RFC3720].
a) [RFC3720]中定义的登录请求PDU的行李处理系统。
b) DataDescriptorLoginRequest: that defines the iSCSI Login Request buffer.
b) DataDescriptorLoginRequest:定义iSCSI登录请求缓冲区的。
Note that specific Datamover protocols may choose to disallow the standard DA Primitives from being used for the iSCSI Login Phase. When used in conjunction with such Datamover protocols, an attempt to send a Login Request via the Send_Control Operational Primitive invocation is clearly an error scenario, as the Login Request PDU is being sent while the connection is in the iSCSI Full Feature Phase. It is outside the scope of this document to specify the resulting implementation behavior in this case -- [RFC3720] already defines the error handling for this error scenario.
请注意,特定的Datamover协议可能会选择禁止将标准DA原语用于iSCSI登录阶段。当与此类Datamover协议结合使用时,尝试通过send_Control操作原语调用发送登录请求显然是一种错误情况,因为登录请求PDU是在连接处于iSCSI全功能阶段时发送的。在这种情况下指定结果实现行为超出了本文档的范围--[RFC3720]已经定义了此错误场景的错误处理。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a Login Response PDU.
带有以下输入限定符的Send_Control operation原语用于请求发送登录响应PDU。
a) BHS of the Login Response PDU as defined in [RFC3720].
a) [RFC3720]中定义的登录响应PDU的行李处理系统。
b) DataDescriptorLoginResponse: that defines the iSCSI Login Response buffer.
b) DataDescriptorLoginResponse:定义iSCSI登录响应缓冲区的。
Note that specific Datamover protocols may choose to disallow the standard DA Primitives from being used for the iSCSI Login Phase. When used in conjunction with such Datamover protocols, an attempt to send a Login Response via the Send_Control Operational Primitive invocation is clearly an error scenario, as the Login Response PDU is being sent while in the iSCSI Full Feature Phase. It is outside the scope of this document to specify the resulting implementation behavior in this case -- [RFC3720] already defines the error handling for this error scenario.
请注意,特定的Datamover协议可能会选择禁止将标准DA原语用于iSCSI登录阶段。当与此类Datamover协议结合使用时,尝试通过send_Control操作原语调用发送登录响应显然是一种错误情况,因为登录响应PDU是在iSCSI完整功能阶段发送的。在这种情况下指定结果实现行为超出了本文档的范围--[RFC3720]已经定义了此错误场景的错误处理。
The Send_Control Operational Primitive with the following input qualifier is used for requesting the transmission of a Logout Command PDU.
带有以下输入限定符的Send_Control operation原语用于请求发送注销命令PDU。
a) BHS of the Logout Command PDU as defined in [RFC3720].
a) [RFC3720]中定义的注销命令PDU的行李处理系统。
The Send_Control Operational Primitive with the following input qualifier is used for requesting the transmission of a Logout Response PDU.
带有以下输入限定符的Send_Control operation原语用于请求发送注销响应PDU。
a) BHS of the Logout Response PDU as defined in [RFC3720].
a) [RFC3720]中定义的注销响应PDU的行李处理系统。
The Send_Control Operational Primitive with the following input qualifier is used for requesting the transmission of a SNACK Request PDU.
带有以下输入限定符的发送控制操作原语用于请求发送零食请求PDU。
a) BHS of the SNACK Request PDU as defined in [RFC3720].
a) [RFC3720]中定义的零食请求PDU的行李处理系统。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a Reject PDU.
带有以下输入限定符的发送控制操作原语用于请求发送拒绝PDU。
a) BHS of the Reject PDU as defined in [RFC3720].
a) [RFC3720]中定义的拒收PDU的行李处理系统。
b) DataDescriptorReject: that defines the iSCSI Reject buffer.
b) DataDescriptor对象:定义iSCSI拒绝缓冲区的对象。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a NOP-Out PDU.
带有以下输入限定符的发送控制操作原语用于请求传输NOP Out PDU。
a) BHS of the NOP-Out PDU as defined in [RFC3720].
a) [RFC3720]中定义的NOP输出PDU的行李处理系统。
b) DataDescriptorNOPOut: that defines the iSCSI Ping data buffer.
b) DataDescriptorNoOut:定义iSCSI Ping数据缓冲区的。
The Send_Control Operational Primitive with the following input qualifiers is used for requesting the transmission of a NOP-In PDU.
带有以下输入限定符的发送控制操作原语用于请求在PDU中传输NOP。
a) BHS of the NOP-In PDU as defined in [RFC3720].
a) [RFC3720]中定义的PDU中NOP的行李处理系统。
b) DataDescriptorNOPIn: that defines the iSCSI Return Ping data buffer.
b) DataDescriptorNOPIn:定义iSCSI返回Ping数据缓冲区的。
The only PDUs that are received by an iSCSI layer operating on a Datamover layer are the iSCSI control-type PDUs. The Datamover layer delivers the iSCSI control-type PDUs as they arrive, qualifying each with the Connection_Handle (see Section 5.3) that identifies the iSCSI connection for which the PDU is meant. The subsequent processing of the iSCSI control-type PDUs proceeds as defined in [RFC3720].
在数据移动器层上运行的iSCSI层接收的唯一PDU是iSCSI控制类型PDU。Datamover层在iSCSI控制类型PDU到达时提供PDU,并使用连接句柄(请参见第5.3节)对每个PDU进行验证,该句柄标识PDU用于的iSCSI连接。iSCSI控制类型PDU的后续处理按照[RFC3720]中的定义进行。
This sub-section describes the general mechanics applicable to several control-type PDUs. The following sub-sections note additional considerations for control-type PDUs that are not covered in this sub-section.
本小节描述了适用于几种控制型PDU的一般机制。以下小节说明了本小节未涉及的控制型PDU的其他注意事项。
The Control_Notify Operational Primitive is used to notify the iSCSI layer of the arrival of the following iSCSI control-type PDUs: SCSI Command, SCSI Response, Task Management Function Request, Task Management Function Response, Asynchronous Message, Text Request, Text Response, Logout Command, Logout Response, SNACK, Reject, NOP-Out, NOP-In.
Control_Notify Operational原语用于通知iSCSI层以下iSCSI控制类型PDU的到达:SCSI命令、SCSI响应、任务管理功能请求、任务管理功能响应、异步消息、文本请求、文本响应、注销命令、注销响应、快餐、拒绝、NOP Out、NOP In。
The Control_Notify Operational Primitive is used to notify the iSCSI layer of the arrival of a SCSI Data-Out PDU carrying the non-immediate unsolicited data. Note however that the solicited SCSI Data-Out arriving on the target does not cause a notification to the iSCSI layer using the Control_Notify Primitive because the solicited SCSI Data-Out was not sent by the initiator iSCSI layer as control-type PDUs.
Control_Notify Operational原语用于通知iSCSI层携带非即时非请求数据的SCSI数据输出PDU的到达。但是请注意,到达目标的请求SCSI数据输出不会导致使用Control_Notify原语通知iSCSI层,因为请求的SCSI数据输出不是由启动器iSCSI层作为控制类型PDU发送的。
The Datamover layer does not notify the iSCSI layer of the arrival of the SCSI Data-in at the initiator, because SCSI Data-in is an iSCSI data-type PDU (see section 5.1). The iSCSI layer at the initiator however may infer the arrival of the SCSI Data-In when it receives a subsequent notification of the SCSI Response PDU via a Control_Notify invocation.
Datamover层不会将SCSI数据到达启动器时通知iSCSI层,因为SCSI数据是iSCSI数据类型PDU(请参阅第5.1节)。但是,当启动器的iSCSI层通过Control_Notify调用接收到SCSI响应PDU的后续通知时,可以推断SCSI数据到达。
While this document does not contemplate the possibility of a Data-In PDU being received at the initiator iSCSI layer, specific Datamover protocols may define how to deal with an unexpected inbound SCSI
虽然本文档并未考虑在启动器iSCSI层接收PDU中的数据的可能性,但特定的Datamover协议可能会定义如何处理意外的入站SCSI
Data-In PDU that may result in the initiator iSCSI layer receiving the Data-In PDU. This document leaves the details of handling this error scenario to the specific Datamover protocols, so each may define the appropriate error handling specific to the Datamover environment.
PDU中的数据可能导致启动器iSCSI层接收PDU中的数据。本文档将处理此错误场景的详细信息留给特定的Datamover协议,因此每个协议都可以定义特定于Datamover环境的适当错误处理。
Because an R2T PDU is an iSCSI data-type PDU (see Section 5.1) that is not delivered as-is to the initiator iSCSI layer, the Datamover layer does not notify the iSCSI layer of the arrival of an R2T PDU. When an iSCSI node sends an R2T PDU to its local Datamover layer, the local and remote Datamover layers transparently bring about the data transfer requested by the R2T PDU.
由于R2T PDU是iSCSI数据类型PDU(请参阅第5.1节),未按原样传递到启动器iSCSI层,因此Datamover层不会通知iSCSI层R2T PDU的到达。当iSCSI节点向其本地Datamover层发送R2T PDU时,本地和远程Datamover层将透明地进行R2T PDU请求的数据传输。
While this document does not contemplate the possibility of an R2T PDU being received at the initiator iSCSI layer, specific Datamover protocols may define how to deal with an unexpected inbound R2T PDU that may result in the initiator iSCSI layer receiving the R2T PDU. This document leaves the details of handling this error scenario to the specific Datamover protocols, so each may define the appropriate error handling specific to the Datamover environment.
虽然本文档并未考虑在启动器iSCSI层接收R2T PDU的可能性,但特定的Datamover协议可能会定义如何处理可能导致启动器iSCSI层接收R2T PDU的意外入站R2T PDU。本文档将处理此错误场景的详细信息留给特定的Datamover协议,因此每个协议都可以定义特定于Datamover环境的适当错误处理。
The Control_Notify Operational Primitive is used for notifying the target iSCSI layer of the arrival of a Login Request PDU. Note that specific Datamover protocols may choose to disallow the standard DA Primitives from being used for the iSCSI Login Phase. When used in conjunction with such Datamover protocols, the arrival of a Login Request necessitating the Control_Notify Operational Primitive invocation is clearly an error scenario, as the Login Request PDU is arriving in the iSCSI Full Feature Phase. It is outside the scope of this document to specify the resulting implementation behavior in this case -- [RFC3720] already defines the error handling in this error scenario.
Control_Notify Operational原语用于通知目标iSCSI层登录请求PDU的到达。请注意,特定的Datamover协议可能会选择禁止将标准DA原语用于iSCSI登录阶段。当与此类Datamover协议结合使用时,需要调用Control_Notify Operational原语的登录请求的到达显然是一个错误场景,因为登录请求PDU到达iSCSI全功能阶段。在这种情况下指定结果实现行为超出了本文档的范围--[RFC3720]已经定义了此错误场景中的错误处理。
The Control_Notify Operational Primitive is used to notify the initiator iSCSI layer of the arrival of a Login Response PDU. Note that specific Datamover protocols may choose to disallow the standard DA Primitives from being used for the iSCSI Login Phase. When used in conjunction with such Datamover protocols, the arrival of a Login Response necessitating the Control_Notify Operational Primitive invocation is clearly an error scenario, as the Login Response PDU is arriving in the iSCSI Full Feature Phase. It is outside the scope of this document to specify the resulting implementation behavior in
Control_Notify Operational原语用于通知启动器iSCSI层登录响应PDU的到达。请注意,特定的Datamover协议可能会选择禁止将标准DA原语用于iSCSI登录阶段。当与此类Datamover协议结合使用时,登录响应的到达需要调用Control_Notify Operational原语,这显然是一个错误场景,因为登录响应PDU到达iSCSI全功能阶段。在中指定结果实现行为超出了本文档的范围
this case -- [RFC3720] already defines the error handling in this error scenario.
本例--[RFC3720]已经定义了此错误场景中的错误处理。
DA enables compliant iSCSI implementations to realize a control and data separation in the way they interact with their Datamover protocols. Note however that this separation does not imply a separation in transport mediums between control traffic and data traffic -- the basic iSCSI architecture with respect to tasks and PDU relationships to tasks remains unchanged. [RFC3720] defines several MUST requirements on ordering relationships across control and data for a given task besides a mandatory deterministic task allegiance model -- DA does not change this basic architecture (DA has a normative reference to [RFC3720]) for allow any additional flexibility in compliance in this area. To summarize, sending bulk data transfers (prompted by Put_Data and Get_Data Primitive invocations) on a different transport medium would be as ill-advised as sending just the Data-Out/Data-In PDUs on a different TCP connection in RFC 3720-based iSCSI implementations. Consequently, all the iSCSI-related security text in [RFC3723] is directly applicable to a DA-enabled iSCSI implementation.
DA使兼容的iSCSI实施能够以与Datamover协议交互的方式实现控制和数据分离。但是,请注意,这种分离并不意味着在传输介质中控制流量和数据流量之间的分离——与任务相关的基本iSCSI体系结构以及与任务的PDU关系保持不变。[RFC3720]定义了除了强制性的确定性任务忠诚模型之外,在给定任务的控制和数据之间的排序关系方面的若干必备要求——DA不更改此基本架构(DA有[RFC3720]的规范性参考),以允许在该领域的合规性方面具有任何额外的灵活性。总之,在基于RFC 3720的iSCSI实现中,在不同的传输介质上发送大容量数据传输(由Put_data和Get_data原语调用提示)与在不同的TCP连接上仅发送PDU中的数据输出/数据一样不明智。因此,[RFC3723]中所有与iSCSI相关的安全文本直接适用于启用DA的iSCSI实现。
Another area with security implications is the Datamover connection resource management model, which DA defines -- particularly the Allocate_Connection_Resources Primitive. An inadvertent realization of this model could leave an iSCSI implementation exposed to denial-of-service attacks. As Figures 2 and 3 in Section 13.2 illustrate, the most effective countermeasure to this potential attack consists of performing the Datamover resource allocation when the iSCSI layer is sufficiently far along in the iSCSI Login Phase that it is reasonably certain that the peer side is not an attacker. In particular, if the Login Phase includes a SecurityNegotiation stage, an iSCSI end node MUST defer the Datamover connection resource allocation (i.e., invoking the Allocate_Connection_Resources Primitive) to the LoginOperationalNegotiation stage [RFC3720] so that the resource allocation happens post-authentication. This considerably minimizes the potential for a denial-of service attack.
另一个涉及安全问题的领域是Datamover连接资源管理模型,DA定义了该模型——特别是Allocate_connection_Resources原语。无意中实现此模型可能会使iSCSI实现面临拒绝服务攻击。如第13.2节中的图2和图3所示,针对这一潜在攻击的最有效对策包括在iSCSI层在iSCSI登录阶段距离足够远时执行Datamover资源分配,以合理确定对等方不是攻击者。特别是,如果登录阶段包括SecurityNegotiation阶段,iSCSI终端节点必须将Datamover连接资源分配(即,调用Allocate_connection_Resources原语)推迟到LoginOperationalNegotiation阶段[RFC3720],以便在身份验证后进行资源分配。这大大降低了拒绝服务攻击的可能性。
In view of the fact that the DA architecture itself does not define any new wire protocol or propose modifications to the existing protocols, there are no additional wire protocol security considerations in employing DA itself. However, a DA-compliant iSCSI implementation MUST comply with all the iSCSI-related requirements
鉴于DA体系结构本身没有定义任何新的有线协议或对现有协议提出修改,因此在使用DA本身时没有额外的有线协议安全考虑。但是,符合DA的iSCSI实施必须符合所有与iSCSI相关的要求
stipulated in [RFC3723] and [RFC3720]. Note further that in realizing DA, each Datamover protocol must define and elaborate as appropriate on any additional security considerations resulting from the use of that Datamover protocol.
[RFC3723]和[RFC3720]中规定。进一步注意,在实现DA时,每个Datamover协议必须定义并详细说明因使用该Datamover协议而产生的任何其他安全注意事项。
All Datamover protocol designers are strongly recommended to refer to [RDDPSEC] for the types of security issues to consider. While [RDDPSEC] elaborates on the security considerations applicable to an RDDP-based Datamover [iSER], the document is representative of the type of analysis of resource exhaustion and the application of countermeasures that need to be done for any Datamover protocol.
所有DATAMOFF协议设计人员都强烈推荐参考[RDDPSSE]来考虑要考虑的安全问题。虽然[RDDPSEC]详细阐述了适用于基于RDDP的数据移动器[iSER]的安全注意事项,但本文档代表了资源消耗分析的类型以及任何数据移动器协议需要执行的对策的应用。
[RFC3720] Satran, J., Meth, K., Sapuntzakis, C., Chadalapaka, M., and E. Zeidner, "Internet Small Computer Systems Interface (iSCSI)", RFC 3720, April 2004.
[RFC3720]Satran,J.,Meth,K.,Sapuntzakis,C.,Chadalapaka,M.,和E.Zeidner,“互联网小型计算机系统接口(iSCSI)”,RFC 3720,2004年4月。
[RFC3723] Aboba, B., Tseng, J., Walker, J., Rangan, V., and F. Travostino, "Securing Block Storage Protocols over IP", RFC 3723, April 2004.
[RFC3723]Aboba,B.,Tseng,J.,Walker,J.,Rangan,V.,和F.Travostino,“通过IP保护块存储协议”,RFC 37232004年4月。
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。
[DDP] Shah, H., Pinkerton, J., Recio, R., and P. Culley, "Direct Data Placement over Reliable Transports", RFC 5041, October 2007.
[DDP]Shah,H.,Pinkerton,J.,Recio,R.,和P.Culley,“可靠传输上的直接数据放置”,RFC 50412007年10月。
[iSER] Ko, M., Chadalapaka, M., Hufferd, J., Elzur, U., Shah, H., and P. Thaler, "Internet Small Computer System Interface (iSCSI) Extensions for Remote Direct Memory Access (RDMA)", RFC 5046, October 2007.
[iSER]Ko,M.,Chadalapaka,M.,Hufferd,J.,Elzur,U.,Shah,H.,和P.Thaler,“用于远程直接内存访问(RDMA)的互联网小型计算机系统接口(iSCSI)扩展”,RFC 50462007年10月。
[RDDPSEC] Pinkerton, J. and E. Deleganes, "Direct Data Placement Protocol (DDP) / Remote Direct Memory Access Protocol (RDMAP) Security", RFC 5042, October 2007.
[RDDPSEC]Pinkerton,J.和E.Deleganes,“直接数据放置协议(DDP)/远程直接内存访问协议(RDMAP)安全”,RFC 50422007年10月。
This section discusses the specific considerations for RDMA-based and RDDP-based Datamover protocols.
本节讨论基于RDMA和基于RDDP的数据移动器协议的具体注意事项。
a) Note that the modeling of interactions for SCSI Data-Out (Section 10.3.5.1) is only used for unsolicited data transfer.
a) 请注意,SCSI数据输出交互建模(第10.3.5.1节)仅用于未经请求的数据传输。
b) The modeling of interactions for SNACK (Sections 10.3.14 and 10.4.1) is not expected to be used given that one of the design requirements on the Datamover is that it "guarantees an error-free, reliable, in-order transport mechanism" (Section 6). The interactions for sending and receiving a SNACK are nevertheless modeled in this document because the receiving iSCSI layer can deterministically deal with an inadvertent SNACK. This also shows the DA designers' intent that DI is not meant to filter certain types of PDUs.
b) 鉴于数据移动器的设计要求之一是“保证无错误、可靠、有序的传输机制”(第6节),因此预计不会使用零食交互建模(第10.3.14节和第10.4.1节)。不过,本文档中对发送和接收零食的交互进行了建模,因为接收iSCSI层可以确定地处理无意中的零食。这也表明了DA设计者的意图,即DI并不打算过滤某些类型的PDU。
c) The onus is on a reliable Datamover (per requirements stated in Section 6) to realize end-to-end data acknowledgements via Datamover-specific means. In view of this, even use of data-ACK-type SNACKs are unnecessary. Consequently, an initiator may never request sending a SNACK Request in this model assuming that the proactive (timeout-driven) SNACK functionality is turned off in the legacy iSCSI code.
c) ONU由可靠的Datamover(根据第6节中规定的要求)通过Datamover特定方式实现端到端数据确认。有鉴于此,甚至不需要使用数据确认类型。因此,在此模型中,如果在旧式iSCSI代码中禁用了主动(超时驱动)快餐功能,则启动器可能永远不会请求发送快餐请求。
d) Note that the current DA model for bootstrapping a Connection_Handle into service -- i.e., associating a new iSCSI connection with a Connection_Handle -- clearly implies that the iSCSI connection must already be in Full Feature Phase when the Datamover layer comes into the stack. This further implies that the iSCSI Login Phase must be carried out in the traditional "Byte streaming mode" with no assistance or involvement from the Datamover layer.
d) 请注意,当前用于将连接句柄引导到服务中的DA模型(即,将新iSCSI连接与连接句柄关联)明确表示,当Datamover层进入堆栈时,iSCSI连接必须已经处于完整功能阶段。这进一步意味着iSCSI登录阶段必须在传统的“字节流模式”下执行,而无需Datamover层的协助或参与。
The figures described in this section provide some examples of the usage of Operational Primitives in interactions between the iSCSI layer and the Datamover layer. The following abbreviations are used in this section.
本节中描述的图提供了在iSCSI层和Datamover层之间交互中使用操作原语的一些示例。本节中使用了以下缩写。
Avail - Available
可用-可用
Abted - Aborted
Abted-中止
Buf - I/O Buffer
Buf-I/O缓冲区
Cmd - Command
命令
Compl - Complete
完成
Conn - Connection
连接
Ctrl_Ntfy - Control_Notify
Ctrl\u Ntfy-控制\u通知
Dal_Tk_Res - Deallocate_Task_Resources
Dal_Tk_Res-释放任务资源
Data_Cmp_Nfy - Data_Completion_Notify
数据\u Cmp\u Nfy-数据\u完成\u通知
Data_ACK_Nfy - Data_ACK_Notify
数据确认-数据确认通知
DM - Datamover
数据移动器
Imm - Immediate
Imm-即时
Snd_Ctrl - Send_Control
Snd_Ctrl-Send_控件
Msg - Message
消息
Resp - Response
响应
Sol - Solicited
索求
TMF Req - Task Management Function Request
TMF请求-任务管理功能请求
TMF Res - Task Management Function Response
TMF Res-任务管理功能响应
Trans - Transfer
转移
Unsol - Unsolicited
未经请求的
| | Allocate_Connection_Resources | D | ^ | |------------------------------->| a | | | | Connection resources are | t | | | i | successfully allocated | a | | iSCSI | S | | m | | Login | C | | o | | Phase | S | | v | | | I | | e | | | | | r | | Login Phase | L | Final Login Response (success) v succeeds | a |<----------------------------------------^ | y | | L | | iSCSI | e | Enable_Datamover | a | | Full | r |------------------------------->| y | | Feature | | Datamover is enabled | e | | Phase | | | r | | | | Full Feature Phase | | | | | control and data Transfer | | v
| | Allocate_Connection_Resources | D | ^ | |------------------------------->| a | | | | Connection resources are | t | | | i | successfully allocated | a | | iSCSI | S | | m | | Login | C | | o | | Phase | S | | v | | | I | | e | | | | | r | | Login Phase | L | Final Login Response (success) v succeeds | a |<----------------------------------------^ | y | | L | | iSCSI | e | Enable_Datamover | a | | Full | r |------------------------------->| y | | Feature | | Datamover is enabled | e | | Phase | | | r | | | | Full Feature Phase | | | | | control and data Transfer | | v
Figure 2. A Successful iSCSI Login on Initiator
图2。在启动器上成功登录iSCSI
| | Notice_Key_Values | | | | |------------------------------->| | | | | Datamover layer is notified | | | | | of the negotiated key values | | | | | | | | | | Allocate_Connection_Resources | | | | |------------------------------->| D | | | | Connection resources are | a | | | i | successfully allocated | t | | iSCSI | S | | a | | Login | C | | m |Final | Phase | S | | o |Login | | I |Enable_Datamover(Login Response)| v |Resp | | |------------------------------->| e |---->vLogin Phase | L | Datamover is enabled | r | ^ succeeds | a | | | | | y | | L | | iSCSI | e | | a | | Full | r | | y | | Feature | | | e | | Phase | | Full Feature Phase | r | | | | control and data Transfer | | | | | | | v
| | Notice_Key_Values | | | | |------------------------------->| | | | | Datamover layer is notified | | | | | of the negotiated key values | | | | | | | | | | Allocate_Connection_Resources | | | | |------------------------------->| D | | | | Connection resources are | a | | | i | successfully allocated | t | | iSCSI | S | | a | | Login | C | | m |Final | Phase | S | | o |Login | | I |Enable_Datamover(Login Response)| v |Resp | | |------------------------------->| e |---->vLogin Phase | L | Datamover is enabled | r | ^ succeeds | a | | | | | y | | L | | iSCSI | e | | a | | Full | r | | y | | Feature | | | e | | Phase | | Full Feature Phase | r | | | | control and data Transfer | | | | | | | v
Figure 3. A Successful iSCSI Login on Target
图3。在目标上成功登录iSCSI
| | Allocate_Connection_Resources | D | ^ | |------------------------------->| a | | | | Connection resources are | t | | | i | successfully allocated | a | | iSCSI | S | | m | | Login | C | | o | | Phase | S | | v | | | I | | e | | | | | r | | Login | | | | | Phase | L | Final Login Response (failure) v fails | a |<------------------------------------------ | y | | L | | e | Deallocate_Connection_Resources| a | | r |------------------------------->| y | | | Datamover-specific | e | | | connection resources freed | r | | | | | | | | | Connection terminated by standard means | |--------------------------------------------->
| | Allocate_Connection_Resources | D | ^ | |------------------------------->| a | | | | Connection resources are | t | | | i | successfully allocated | a | | iSCSI | S | | m | | Login | C | | o | | Phase | S | | v | | | I | | e | | | | | r | | Login | | | | | Phase | L | Final Login Response (failure) v fails | a |<------------------------------------------ | y | | L | | e | Deallocate_Connection_Resources| a | | r |------------------------------->| y | | | Datamover-specific | e | | | connection resources freed | r | | | | | | | | | Connection terminated by standard means | |--------------------------------------------->
Figure 4. A Failed iSCSI Login on Initiator
图4。启动器上的iSCSI登录失败
| | Allocate_Connection_Resources | D | ^ | |------------------------------->| a | | | | Connection resources are | t | | | i | successfully allocated | a | | iSCSI | S | | m | | Login | C | | o | | Phase | S | | v | | | I | | e | | | | | r | | Login | | | | | Phase | L | Final Login Response (failure) v fails | a |----------------------------------------------> | y | | L | | e | Deallocate_Connection_Resources| a | | r |------------------------------->| y | | | Datamover-specific | e | | | connection resources freed | r | | | | | | | | | Connection terminated by standard means | |-------------------------------------------->
| | Allocate_Connection_Resources | D | ^ | |------------------------------->| a | | | | Connection resources are | t | | | i | successfully allocated | a | | iSCSI | S | | m | | Login | C | | o | | Phase | S | | v | | | I | | e | | | | | r | | Login | | | | | Phase | L | Final Login Response (failure) v fails | a |----------------------------------------------> | y | | L | | e | Deallocate_Connection_Resources| a | | r |------------------------------->| y | | | Datamover-specific | e | | | connection resources freed | r | | | | | | | | | Connection terminated by standard means | |-------------------------------------------->
Figure 5. A Failed iSCSI Login on Target
图5。目标服务器上的iSCSI登录失败
| | Allocate_Connection_Resources | D | ^ | |------------------------------->| a | | | | Connection resources are | t | | | i | successfully allocated | a | | iSCSI | S | | m | | Login | C | | o | | Phase | S | | v | | | I | | e | | | | | r | | | L | Login non-Final Request/Response | | a |<-----------------------------------------| | y | iSCSI layer decides not to | L | | | e | enable Datamover for this | a | | | r | connection | y | | | | | e | | | | Deallocate_Connection_Resources| r | | | |------------------------------->| | | | | All Datamover-specific | | | | | resources deallocated | | | | | | | | Login | | | | | Phase | | | continues | | Regular Login negotiation continues | | |<---------------------------------------->| | | . | | . | | .
| | Allocate_Connection_Resources | D | ^ | |------------------------------->| a | | | | Connection resources are | t | | | i | successfully allocated | a | | iSCSI | S | | m | | Login | C | | o | | Phase | S | | v | | | I | | e | | | | | r | | | L | Login non-Final Request/Response | | a |<-----------------------------------------| | y | iSCSI layer decides not to | L | | | e | enable Datamover for this | a | | | r | connection | y | | | | | e | | | | Deallocate_Connection_Resources| r | | | |------------------------------->| | | | | All Datamover-specific | | | | | resources deallocated | | | | | | | | Login | | | | | Phase | | | continues | | Regular Login negotiation continues | | |<---------------------------------------->| | | . | | . | | .
Figure 6. iSCSI Does Not Enable the Datamover
图6。iSCSI不启用数据移动器
| | | | ^ | | Full Feature Phase Control & | | | | | Data Transfer Using DM | D | | iSCSI | | | a | | Full Feature | i | | t | | Phase | S | | a | | (DM Enabled) | C | | m | | | S | Successful iSCSI Logout | o | | | I | | v | v | | Connection_Terminate | e | | L |------------------------------->| r | | a | Connection is terminated | | | y | Datamover-specific resources | L | Transport | e | deallocated, both connection | a | Connection | r | level & task level | y | is terminated | | | e | | | | r | | | | | | | | |
| | | | ^ | | Full Feature Phase Control & | | | | | Data Transfer Using DM | D | | iSCSI | | | a | | Full Feature | i | | t | | Phase | S | | a | | (DM Enabled) | C | | m | | | S | Successful iSCSI Logout | o | | | I | | v | v | | Connection_Terminate | e | | L |------------------------------->| r | | a | Connection is terminated | | | y | Datamover-specific resources | L | Transport | e | deallocated, both connection | a | Connection | r | level & task level | y | is terminated | | | e | | | | r | | | | | | | | |
Figure 7. A Normal iSCSI Connection Termination
图7。正常iSCSI连接终止
| | | | ^ | | Full Feature Phase Control & | D | | iSCSI | | Data Transfer Using DM | a | | Full Feature | i | | t | | Phase | S | | a | | (DM Enabled) | C | | m | v | S | | o |<--Transport | I | Datamover-specific resources | v | Connection | | deallocated, both connection | e | Terminated (e.g. | L | level & task level | r | unexpected | a | | | FIN/RESET) | y | | L | | e | Connection_Terminate_Notify | a | | r |<-------------------------------| y | | | | e | | | | r | | | | |
| | | | ^ | | Full Feature Phase Control & | D | | iSCSI | | Data Transfer Using DM | a | | Full Feature | i | | t | | Phase | S | | a | | (DM Enabled) | C | | m | v | S | | o |<--Transport | I | Datamover-specific resources | v | Connection | | deallocated, both connection | e | Terminated (e.g. | L | level & task level | r | unexpected | a | | | FIN/RESET) | y | | L | | e | Connection_Terminate_Notify | a | | r |<-------------------------------| y | | | | e | | | | r | | | | |
Figure 8. An Abnormal iSCSI Connection Termination
图8。异常iSCSI连接终止
<-----Initiator-----> <-------Target------->
<-----Initiator-----> <-------Target------->
| | | | DM Msg holding | | | | SCSI | | | | SCSI Cmd PDU & | | | |SCSI Cmd | | Snd_Ctrl | |Unsol Imm Data | |Ctrl_Notify | |Cmd ---->| |--------->| |--------------->| |----------->| |---> | | | | | | | | | | | | DM Msg holding | | | | | | Snd_Ctrl | |SCSI Dataout PDU| |Ctrl_Notify | | | |--------->| |--------------->| |----------->| | | | . | | . | | . | |Unsol | | . | D| . | D| . | |Data | | . | a| DM Msg holding | a| . | |Trans | i| Snd_Ctrl | t|SCSI Dataout PDU| t|Ctrl_Notify | i| | S|--------->| a|--------------->| a|----------->| S| | C| | m| | m| | C|Buf | S| | o| | o| | S|Avail | I| | v| | v| Get_Data | I|(R2T) | | | e|----------------| e|<-----------| |<---- | L| | r||Solicited Data | r| | L| . | a| | || Transfer | | | a| . | y| | L|--------------->| L| . | y|Buf | e| | a| . | a| . | e|Avail | r| | y| . | y| Get_Data | r|(R2T) | | | e|----------------| e|<-----------| |<---- | | | r||Solicited Data | r| | | | | | || Transfer | | | | | | | |--------------->| |Data_Cmp_Nfy| |Data | | | | | |----------->| |Trans | | | | | | | |Compl | | | | DM Msg holding | | | | SCSI | | | |SCSI Resp PDU & | | | |SCSI Resp | |Ctrl_Ntfy | | Sense Data | | Snd_Ctrl | |Resp <----| |<---------| |<---------------| |<-----------| |<---- | | | | | | | |
| | | | DM Msg holding | | | | SCSI | | | | SCSI Cmd PDU & | | | |SCSI Cmd | | Snd_Ctrl | |Unsol Imm Data | |Ctrl_Notify | |Cmd ---->| |--------->| |--------------->| |----------->| |---> | | | | | | | | | | | | DM Msg holding | | | | | | Snd_Ctrl | |SCSI Dataout PDU| |Ctrl_Notify | | | |--------->| |--------------->| |----------->| | | | . | | . | | . | |Unsol | | . | D| . | D| . | |Data | | . | a| DM Msg holding | a| . | |Trans | i| Snd_Ctrl | t|SCSI Dataout PDU| t|Ctrl_Notify | i| | S|--------->| a|--------------->| a|----------->| S| | C| | m| | m| | C|Buf | S| | o| | o| | S|Avail | I| | v| | v| Get_Data | I|(R2T) | | | e|----------------| e|<-----------| |<---- | L| | r||Solicited Data | r| | L| . | a| | || Transfer | | | a| . | y| | L|--------------->| L| . | y|Buf | e| | a| . | a| . | e|Avail | r| | y| . | y| Get_Data | r|(R2T) | | | e|----------------| e|<-----------| |<---- | | | r||Solicited Data | r| | | | | | || Transfer | | | | | | | |--------------->| |Data_Cmp_Nfy| |Data | | | | | |----------->| |Trans | | | | | | | |Compl | | | | DM Msg holding | | | | SCSI | | | |SCSI Resp PDU & | | | |SCSI Resp | |Ctrl_Ntfy | | Sense Data | | Snd_Ctrl | |Resp <----| |<---------| |<---------------| |<-----------| |<---- | | | | | | | |
Figure 9. A SCSI Write Data Transfer
图9。SCSI写数据传输
<-----Initiator-----> <-------Target------->
<-----Initiator-----> <-------Target------->
| | | | | | | | SCSI | | | | DM Msg holding | | | |SCSI Cmd | | Snd_Ctrl | | SCSI Cmd PDU | |Ctrl_Notify | |Cmd ---->| |--------->| |--------------->| |----------->| |---> | | | | | | | | | | | D| SCSI Read | D| | |Buf | | | a| Data Transfer | a| Put_Data | |Avail | i| | t|<---------------| t|<-----------| i|<---- | S| | a| . | a| . | S| . | C| | m| . | m| . | C| . | S| | o| . | o| . | S| . | I| | v| SCSI Read | v| . | I|Buf | | | e| Data Transfer | e| Put_Data | |Avail | L| | r|<---------------| r|<-----------| L|<---- | a| | | | | | a| | y| | L| | L| | y| | e| | a| | a|Data_Cmp_Nfy| e|Data | r| | y| | y|----------->| r|Trans | | | e| | e| | |Compl | | | r| DM Msg holding | r| | | SCSI | | | |SCSI Resp PDU & | | | |SCSI Resp | |Ctrl_Ntfy | | Sense Data | | Snd_Ctrl | |Resp <----| |<---------| |<---------------| |<-----------| |<---- | | | | | | | |
| | | | | | | | SCSI | | | | DM Msg holding | | | |SCSI Cmd | | Snd_Ctrl | | SCSI Cmd PDU | |Ctrl_Notify | |Cmd ---->| |--------->| |--------------->| |----------->| |---> | | | | | | | | | | | D| SCSI Read | D| | |Buf | | | a| Data Transfer | a| Put_Data | |Avail | i| | t|<---------------| t|<-----------| i|<---- | S| | a| . | a| . | S| . | C| | m| . | m| . | C| . | S| | o| . | o| . | S| . | I| | v| SCSI Read | v| . | I|Buf | | | e| Data Transfer | e| Put_Data | |Avail | L| | r|<---------------| r|<-----------| L|<---- | a| | | | | | a| | y| | L| | L| | y| | e| | a| | a|Data_Cmp_Nfy| e|Data | r| | y| | y|----------->| r|Trans | | | e| | e| | |Compl | | | r| DM Msg holding | r| | | SCSI | | | |SCSI Resp PDU & | | | |SCSI Resp | |Ctrl_Ntfy | | Sense Data | | Snd_Ctrl | |Resp <----| |<---------| |<---------------| |<-----------| |<---- | | | | | | | |
Figure 10. A SCSI Read Data Transfer
图10。SCSI读数据传输
<-----Initiator-----> <-------Target------->
<-----Initiator-----> <-------Target------->
| | | | | | | | SCSI | | | | DM Msg holding | | | |SCSI Cmd | | Snd_Ctrl | | SCSI Cmd PDU | |Ctrl_Notify | |Cmd ---->| |--------->| |--------------->| |----------->| |----> | | | | | | | | | | | D| SCSI Read | D| Put_Data | |Buf | | | a| Data Transfer | a|Data_in.A=1 | |Avail | i| | t|<---------------| t|<-----------| i|<---- | S| | a| . | a| . | S| . | C| | m| . | m|Data_ACK_Nfy| C| . | S| | o| | o|----------->| S| . | I| | v| | v| . | I| | | | e| | e| . | | | L| | r| | r| | L| | a| | | | | | a| | y| | L| | L| | y| | e| | a| | a| | e|Data | r| | y| | y| | r|Trans | | | e| | e| | |Compl | | | r| DM Msg holding | r| | | SCSI | | | |SCSI Resp PDU & | | | |SCSI Resp | |Ctrl_Ntfy | | Sense Data | | Snd_Ctrl | |Resp <----| |<---------| |<---------------| |<-----------| |<---- | | | | | | | |
| | | | | | | | SCSI | | | | DM Msg holding | | | |SCSI Cmd | | Snd_Ctrl | | SCSI Cmd PDU | |Ctrl_Notify | |Cmd ---->| |--------->| |--------------->| |----------->| |----> | | | | | | | | | | | D| SCSI Read | D| Put_Data | |Buf | | | a| Data Transfer | a|Data_in.A=1 | |Avail | i| | t|<---------------| t|<-----------| i|<---- | S| | a| . | a| . | S| . | C| | m| . | m|Data_ACK_Nfy| C| . | S| | o| | o|----------->| S| . | I| | v| | v| . | I| | | | e| | e| . | | | L| | r| | r| | L| | a| | | | | | a| | y| | L| | L| | y| | e| | a| | a| | e|Data | r| | y| | y| | r|Trans | | | e| | e| | |Compl | | | r| DM Msg holding | r| | | SCSI | | | |SCSI Resp PDU & | | | |SCSI Resp | |Ctrl_Ntfy | | Sense Data | | Snd_Ctrl | |Resp <----| |<---------| |<---------------| |<-----------| |<---- | | | | | | | |
Figure 11. A SCSI Read Data Acknowledgement
图11。SCSI读取数据确认
<-----Initiator-----> <-------Target------->
<-----Initiator-----> <-------Target------->
| | | | | | | | SCSI | | | | DM Msg holding | | | |SCSI Cmd | | Snd_Ctrl | | SCSI Cmd PDU | |Ctrl_Notify | |Cmd ---->| |--------->| |--------------->| |----------->| |----> | | | | | | | | | | | D| SCSI Read | D| | |Buf | | | a| Data Transfer | a| Put_Data | |Avail | i| | t|<---------------| t|<-----------| i|<---- | S| | a| . | a| . | S| . Abort| C| | m| DM Msg holding | m| . | C|Abort Task | S| Snd_Ctrl | o| Abort TMF Req | o|Ctrl_Notify | S|Task ---->| I|--------->| v|--------------->| v|----------->| I|----> | | | e| . | e| . | | Abort| L| | r| DM Msg holding| r| | L| . Done | a|Ctrl_Ntfy | | Abort TMF Res| | Snd_Ctrl | |Abted <----| y|<---------| L|<---------------| L|<-----------| y|<---- | e| | a| | a| | e| | r| | y| | y| | r| | | | e| | e| | | | | | r| | r| | | | | | | | | | | | |Dal_Tk_Res| | | |Dal_Tk_Res | | | |--------->| | | |<-----------| | | | | | | | | |
| | | | | | | | SCSI | | | | DM Msg holding | | | |SCSI Cmd | | Snd_Ctrl | | SCSI Cmd PDU | |Ctrl_Notify | |Cmd ---->| |--------->| |--------------->| |----------->| |----> | | | | | | | | | | | D| SCSI Read | D| | |Buf | | | a| Data Transfer | a| Put_Data | |Avail | i| | t|<---------------| t|<-----------| i|<---- | S| | a| . | a| . | S| . Abort| C| | m| DM Msg holding | m| . | C|Abort Task | S| Snd_Ctrl | o| Abort TMF Req | o|Ctrl_Notify | S|Task ---->| I|--------->| v|--------------->| v|----------->| I|----> | | | e| . | e| . | | Abort| L| | r| DM Msg holding| r| | L| . Done | a|Ctrl_Ntfy | | Abort TMF Res| | Snd_Ctrl | |Abted <----| y|<---------| L|<---------------| L|<-----------| y|<---- | e| | a| | a| | e| | r| | y| | y| | r| | | | e| | e| | | | | | r| | r| | | | | | | | | | | | |Dal_Tk_Res| | | |Dal_Tk_Res | | | |--------->| | | |<-----------| | | | | | | | | |
Figure 12. Task Resource Cleanup on Abort
图12。中止时的任务资源清理
Acknowledgements
致谢
The IP Storage (IPS) Working Group in the Transport Area of IETF has been responsible for defining the iSCSI protocol (apart from a host of other relevant IP Storage protocols). The authors are grateful to the entire working group, whose work allowed this document to build on the concepts and details of the iSCSI protocol.
IETF传输领域的IP存储(IPS)工作组负责定义iSCSI协议(除一系列其他相关IP存储协议外)。作者感谢整个工作组,他们的工作使本文档建立在iSCSI协议的概念和细节之上。
In addition, the following individuals reviewed and contributed to the improvement of this document. The authors are grateful for their contribution.
此外,以下人员对本文件的改进进行了审查并做出了贡献。作者感谢他们的贡献。
John Carrier Adaptec, Inc. 691 S. Milpitas Blvd., Milpitas, CA 95035, USA Phone: +1 (360) 378-8526 EMail: john_carrier@adaptec.com
John Carrier Adaptec,Inc.美国加利福尼亚州米尔皮塔斯南米尔皮塔斯大道691号电话:+1(360)378-8526电子邮件:John_carrier@adaptec.com
Hari Ghadia Adaptec, Inc. 691 S. Milpitas Blvd., Milpitas, CA 95035, USA Phone: +1 (408) 957-5608 EMail: hari_ghadia@adaptec.com
Hari Ghadia Adaptec,Inc.美国加利福尼亚州米尔皮塔斯南米尔皮塔斯大道691号电话:+1(408)957-5608电子邮件:Hari_ghadia@adaptec.com
Hari Mudaliar Adaptec, Inc. 691 S. Milpitas Blvd., Milpitas, CA 95035, USA Phone: +1 (408) 957-6012 EMail: hari_mudaliar@adaptec.com
Hari Mudaliar Adaptec,Inc.美国加利福尼亚州米尔皮塔斯南米尔皮塔斯大道691号电话:+1(408)957-6012电子邮件:Hari_mudaliar@adaptec.com
Patricia Thaler Agilent Technologies, Inc. 1101 Creekside Ridge Drive, #100, M/S-RG10, Roseville, CA 95678, USA Phone: +1-916-788-5662 EMail: pat_thaler@agilent.com
Patricia Thaler安捷伦科技有限公司,地址:美国加利福尼亚州罗斯维尔M/S-RG10号#100克里克赛德山脊大道1101号,邮编:95678电话:+1-916-788-5662电子邮件:pat_thaler@agilent.com
Uri Elzur Broadcom Corporation 16215 Alton Parkway, Irvine, CA 92619-7013, USA Phone: +1 (949) 585-6432 EMail: Uri@Broadcom.com
Uri Elzur Broadcom Corporation 16215 Alton Parkway,Irvine,CA 92619-7013,美国电话:+1(949)585-6432电子邮件:Uri@Broadcom.com
Mike Penna Broadcom Corporation 16215 Alton Parkway,Irvine, CA 92619-7013, USA Phone: +1 (949) 926-7149 EMail: MPenna@Broadcom.com
Mike Penna Broadcom Corporation 16215 Alton Parkway,Irvine,CA 92619-7013,美国电话:+1(949)926-7149电子邮件:MPenna@Broadcom.com
David Black EMC Corporation 176 South St., Hopkinton, MA 01748, USA Phone: +1 (508) 293-7953 EMail: black_david@emc.com
David Black美国马萨诸塞州霍普金顿南大街176号EMC公司电话:+1(508)293-7953电子邮件:Black_david@emc.com
Ted Compton EMC Corporation Research Triangle Park, NC 27709, USA Phone: +1-919-248-6075 EMail: compton_ted@emc.com
泰德·康普顿EMC公司美国北卡罗来纳州三角研究园27709电话:+1-919-248-6075电子邮件:康普顿_ted@emc.com
Dwight Barron Hewlett-Packard Company 20555 SH 249, Houston, TX 77070-2698, USA Phone: +1 (281) 514-2769 EMail: Dwight.Barron@Hp.com
德怀特·巴伦·惠普公司20555 SH 249,德克萨斯州休斯顿77070-2698,美国电话:+1(281)514-2769电子邮件:德怀特。Barron@Hp.com
Paul R. Culley Hewlett-Packard Company 20555 SH 249, Houston, TX 77070-2698, USA Phone: +1 (281) 514-5543 EMail: paul.culley@hp.com
Paul R.Culley Hewlett-Packard Company 20555 SH 249,德克萨斯州休斯顿77070-2698,美国电话:+1(281)514-5543电子邮件:Paul。culley@hp.com
Dave Garcia Hewlett-Packard Company 19333 Vallco Parkway, Cupertino, CA 95014, USA Phone: +1 (408) 285-6116 EMail: dave.garcia@hp.com
Dave Garcia Hewlett-Packard Company 19333 Vallco Parkway,Cupertino,CA 95014,美国电话:+1(408)285-6116电子邮件:Dave。garcia@hp.com
Randy Haagens Hewlett-Packard Company 8000 Foothills Blvd, MS 5668, Roseville CA, USA Phone: +1-916-785-4578 EMail: randy_haagens@hp.com
Randy Haagens Hewlett-Packard Company 8000 Foothills Blvd,MS 5668,美国加利福尼亚州罗斯维尔电话:+1-916-785-4578电子邮件:Randy_haagens@hp.com
Jeff Hilland Hewlett-Packard Company 20555 SH 249, Houston, TX 77070-2698, USA Phone: +1 (281) 514-9489 EMail: jeff.hilland@hp.com
杰夫·希尔兰·惠普公司20555 SH 249,德克萨斯州休斯顿77070-2698,美国电话:+1(281)514-9489电子邮件:杰夫。hilland@hp.com
Mike Krause Hewlett-Packard Company, 43LN 19410 Homestead Road, Cupertino, CA 95014, USA Phone: +1 (408) 447-3191 EMail: krause@cup.hp.com
Mike Krause Hewlett-Packard Company,地址:美国加利福尼亚州库珀蒂诺市家园路43号,邮编:19410电话:+1(408)447-3191电子邮件:krause@cup.hp.com
Jim Wendt Hewlett-Packard Company 8000 Foothills Blvd, MS 5668, Roseville CA, USA Phone: +1-916-785-5198 EMail: jim_wendt@hp.com
Jim Wendt Hewlett-Packard Company 8000 Foothills Blvd,MS 5668,美国加利福尼亚州罗斯维尔电话:+1-916-785-5198电子邮件:Jim_wendt@hp.com
Mike Ko IBM 650 Harry Rd, San Jose, CA 95120, USA Phone: +1 (408) 927-2085 EMail: mako@us.ibm.com
Mike Ko IBM 650美国加利福尼亚州圣何塞哈里路95120电话:+1(408)927-2085电子邮件:mako@us.ibm.com
Renato Recio IBM Corporation 11501 Burnett Road, Austin, TX 78758, USA Phone: +1 (512) 838-1365 EMail: recio@us.ibm.com
Renato Recio IBM Corporation美国德克萨斯州奥斯汀伯内特路11501号78758电话:+1(512)838-1365电子邮件:recio@us.ibm.com
Howard C. Herbert Intel Corporation MS CH7-404,5000 West Chandler Blvd., Chandler, AZ 85226, USA Phone: +1 (480) 554-3116 EMail: howard.c.herbert@intel.com
Howard C.Herbert Intel Corporation MS CH7-4045000美国亚利桑那州钱德勒西钱德勒大道85226号电话:+1(480)554-3116电子邮件:Howard.C。herbert@intel.com
Dave Minturn Intel Corporation MS JF1-210, 5200 North East Elam Young Parkway Hillsboro, OR 97124, USA Phone: +1 (503) 712-4106 EMail: dave.b.minturn@intel.com
Dave Minturn Intel Corporation MS JF1-210,5200东北Elam Young Parkway Hillsboro,或97124,美国电话:+1(503)712-4106电子邮件:Dave.b。minturn@intel.com
James Pinkerton Microsoft Corporation One Microsoft Way, Redmond, WA 98052, USA Phone: +1 (425) 705-5442 EMail: jpink@microsoft.com
James Pinkerton Microsoft Corporation One Microsoft Way,华盛顿州雷德蒙德,邮编98052,美国电话:+1(425)705-5442电子邮件:jpink@microsoft.com
Tom Talpey Network Appliance 375 Totten Pond Road, Waltham, MA 02451, USA Phone: +1 (781) 768-5329 EMail: thomas.talpey@netapp.com
Tom Talpey Network Appliance 375 Totten Pond Road,Waltham,MA 02451,美国电话:+1(781)768-5329电子邮件:thomas。talpey@netapp.com
Authors' Addresses
作者地址
Mallikarjun Chadalapaka Hewlett-Packard Company 8000 Foothills Blvd. Roseville, CA 95747-5668, USA
Mallikarjun Chadalapaka Hewlett-Packard Company 8000 Foothills Blvd。美国加利福尼亚州罗斯维尔95747-5668
Phone: +1-916-785-5621 EMail: cbm@rose.hp.com
Phone: +1-916-785-5621 EMail: cbm@rose.hp.com
John L. Hufferd Brocade, Inc. 1745 Technology Drive San Jose, CA 95110, USA
美国加利福尼亚州圣何塞市科技大道1745号约翰·L·赫福德博科公司,邮编95110
Phone: +1-408-333-5244 EMail: jhufferd@brocade.com
Phone: +1-408-333-5244 EMail: jhufferd@brocade.com
Julian Satran IBM, Haifa Research Lab Haifa University Campus - Mount Carmel Haifa 31905, Israel
Julian Satran IBM,海法研究实验室海法大学校园-卡梅尔山海法31905,以色列
Phone +972-4-829-6264 EMail: Julian_Satran@il.ibm.com
电话+972-4-829-6264电子邮件:朱利安_Satran@il.ibm.com
Hemal Shah Broadcom Corporation 5300 California Avenue Irvine, California 92617, USA
Hemal Shah Broadcom Corporation美国加利福尼亚州欧文市加利福尼亚大道5300号,邮编92617
Phone: +1-949-926-6941 EMail: hemal@broadcom.com
Phone: +1-949-926-6941 EMail: hemal@broadcom.com
Comments may be sent to Mallikarjun Chadalapaka.
意见可发送至Mallikarjun Chadalapaka。
Full Copyright Statement
完整版权声明
Copyright (C) The IETF Trust (2007).
版权所有(C)IETF信托基金(2007年)。
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
本文件受BCP 78中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
本文件及其包含的信息以“原样”为基础提供,贡献者、他/她所代表或赞助的组织(如有)、互联网协会、IETF信托基金和互联网工程任务组不承担任何明示或暗示的担保,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。
Intellectual Property
知识产权
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何独立努力来确定任何此类权利。有关RFC文件中权利的程序信息,请参见BCP 78和BCP 79。
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
向IETF秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涵盖实施本标准所需技术的专有权利。请将信息发送至IETF的IETF-ipr@ietf.org.