diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc5047.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc5047.txt')
-rw-r--r-- | doc/rfc/rfc5047.txt | 2747 |
1 files changed, 2747 insertions, 0 deletions
diff --git a/doc/rfc/rfc5047.txt b/doc/rfc/rfc5047.txt new file mode 100644 index 0000000..32b97a3 --- /dev/null +++ b/doc/rfc/rfc5047.txt @@ -0,0 +1,2747 @@ + + + + + + +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) + +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. + + + + + + + + +Chadalapaka, et al. Informational [Page 1] + +RFC 5047 DA October 2007 + + +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 + + + +Chadalapaka, et al. Informational [Page 2] + +RFC 5047 DA October 2007 + + + 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 + + + + + + + +Chadalapaka, et al. Informational [Page 3] + +RFC 5047 DA October 2007 + + +1. Motivation + +1.1. Intent + + 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. + + 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. + + 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. + + + + +Chadalapaka, et al. Informational [Page 4] + +RFC 5047 DA October 2007 + + +1.2. Interpretation of Requirements + + 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: + + 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. + + 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. + + 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. + +2. Definitions and Acronyms + +2.1. Definitions + + 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. + + Datamover protocol - A Datamover protocol is a data transfer wire + protocol for iSCSI that meets the requirements stated in Section + 6. + + Datamover layer - A Datamover layer is a protocol layer within an end + node that implements the Datamover protocol. + + 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. + + + + + +Chadalapaka, et al. Informational [Page 5] + +RFC 5047 DA October 2007 + + + 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]. + +2.2. Acronyms + + Acronym Definition + ------------------------------------------------------------- + + DA Datamover Architecture for iSCSI + + DDP Direct Data Placement Protocol + + DI Datamover Interface + + IANA Internet Assigned Numbers Authority + + IETF Internet Engineering Task Force + + I/O Input - Output + + IP Internet Protocol + + iSCSI Internet SCSI + + iSER iSCSI Extensions for RDMA + + ITT Initiator Task Tag + + LO Leading Only + + MPA Marker PDU Aligned Framing for TCP + + PDU Protocol Data Unit + + RDDP Remote Direct Data Placement + + RDMA Remote Direct Memory Access + + R2T Ready To Transfer + + R2TSN Ready To Transfer Sequence Number + + RDMA Remote Direct Memory Access + + RDMAP Remote Direct Memory Access Protocol + + RFC Request For Comments + + + +Chadalapaka, et al. Informational [Page 6] + +RFC 5047 DA October 2007 + + + SAM SCSI Architecture Model + + SCSI Small Computer Systems Interface + + SN Sequence Number + + SNACK Selective Negative Acknowledgment - also + Sequence Number Acknowledgement for Data + + TCP Transmission Control Protocol + + TTT Target Transfer Tag + +3. Architectural Layering of iSCSI and Datamover Layers + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 7] + +RFC 5047 DA October 2007 + + + 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 | | + |+---------------+ | | +----------------+ | + | ^ | | ^ | + +-------+----------+ +---------+-----------+ + +------------------------------------------+ + + Figure 1. Datamover Architecture Diagram, + with the RDMAP Example + + The scope of this document is limited to: + + 1. Defining the notion of a Datamover layer and a Datamover + protocol (Section 6). + + 2. Defining the functionality distribution between the iSCSI layer + and the Datamover layer, along with the communication model + between the two (Operational Primitives). + + + + + +Chadalapaka, et al. Informational [Page 8] + +RFC 5047 DA October 2007 + + + 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. + +4. Design Overview + + 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. + + The design ideas behind DA can be summarized as follows: + + 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. + + 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). + + 3) DA is designed to allow implementation of the Datamover layer + either in hardware or in software. + + 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. + + 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. + + + + + +Chadalapaka, et al. Informational [Page 9] + +RFC 5047 DA October 2007 + + + 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. + + 7) DA is intended to allow Datamover protocol definitions with + minimal changes to existing iSCSI implementations. + + 8) DA is designed to allow the iSCSI layer to completely rely on + the Datamover layer for all data transport needs. + + 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. + + 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]. + +5. Architectural Concepts + +5.1. iSCSI PDU Types + + 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: + + 1) iSCSI data-type PDUs + + 2) iSCSI control-type PDUs + +5.1.1. iSCSI Data-Type PDUs + + 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 + + + +Chadalapaka, et al. Informational [Page 10] + +RFC 5047 DA October 2007 + + + 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: + + 1) SCSI Data-In 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. + +5.1.2. iSCSI Control-Type PDUs + + 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. + +5.2. Data_Descriptor + + 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. + + 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. + +5.3. Connection_Handle + + 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. + + + + + +Chadalapaka, et al. Informational [Page 11] + +RFC 5047 DA October 2007 + + + 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. + + 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. + +5.4. Operational Primitive + + 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. + + 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. + + 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. + + + +Chadalapaka, et al. Informational [Page 12] + +RFC 5047 DA October 2007 + + + 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. + +5.5. Transport Connection + + 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. + +6. Datamover Layer and Datamover Protocol + + 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: + + 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). + + 2) transport an iSCSI control-type PDU as-is to the peer Datamover + layer when requested to do so by the local iSCSI layer. + + 3) provide notification and delivery to the iSCSI layer upon + arrival of an iSCSI control-type PDU. + + 4) provide an initiator-to-target data acknowledgement of SCSI + read data back to the target iSCSI layer, when requested. + + 5) provide an asynchronous notification upon completion of a + requested data transfer operation that moved data without + involving the iSCSI layer. + + 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. + + + +Chadalapaka, et al. Informational [Page 13] + +RFC 5047 DA October 2007 + + + 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. + + Note that this architecture expects that each compliant Datamover + protocol will define the precise means of satisfying the requirements + specified in this section. + + 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. + +7. Functional Overview + + This section presents an overview of the functional interactions + between the iSCSI layer and the Datamover layer as intended by this + Architecture. + +7.1. Startup + + 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. + + 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 + + + +Chadalapaka, et al. Informational [Page 14] + +RFC 5047 DA October 2007 + + + 4, 5, and 6 illustrate how the Primitives may be employed to deal + with various legal login outcomes. + +7.2. Full Feature Phase + + 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. + + 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. + +7.3. Wrap-up + + 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 + + + + +Chadalapaka, et al. Informational [Page 15] + +RFC 5047 DA October 2007 + + + Connection_Terminate_Notify Operational Primitive (Section 9.2) to + model this interaction. + + Figures 7 and 8 in Section 13.2 illustrate the interactions between + the iSCSI and Datamover layers in normal and unexpected connection + termination scenarios. + +8. Operational Primitives Provided by the Datamover Layer + + 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". + + 1) Send_Control + + 2) Put_Data + + 3) Get_Data + + 4) Allocate_Connection_Resources + + 5) Deallocate_Connection_Resources + + 6) Enable_Datamover + + 7) Connection_Terminate + + 8) Notice_Key_Values + + 9) Deallocate_Task_Resources + +8.1. Send_Control + + Input qualifiers: Connection_Handle, iSCSI PDU-specific qualifiers + + 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 + + + +Chadalapaka, et al. Informational [Page 16] + +RFC 5047 DA October 2007 + + + 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. + + 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. + +8.2. Put_Data + + Input qualifiers: Connection_Handle, contents of a SCSI Data-In PDU + header, Data_Descriptor, Notify_Enable + + 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. + + 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. + + A Put_Data Primitive may only be invoked by an iSCSI layer on the + target to its local Datamover layer. + + 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. + +8.3. Get_Data + + Input qualifiers: Connection_Handle, contents of an R2T PDU, + Data_Descriptor, Notify_Enable + + Return Results: Not specified. + + + + + +Chadalapaka, et al. Informational [Page 17] + +RFC 5047 DA October 2007 + + + 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. + + 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. + + A Get_Data Primitive may only be invoked by an iSCSI layer on the + target to its local Datamover layer. + + 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. + +8.4. Allocate_Connection_Resources + + 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. + + 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. + + A return result of Status=success means that the + Allocate_Connection_Resources invocation corresponding to that + + + +Chadalapaka, et al. Informational [Page 18] + +RFC 5047 DA October 2007 + + + 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. + + The iSCSI layer must invoke the Allocate_Connection_Resources + Primitive before the invocation of the Enable_Datamover Primitive. + +8.5. Deallocate_Connection_Resources + + Input qualifiers: Connection_Handle + + 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). + +8.6. Enable_Datamover + + Input qualifiers: Connection_Handle, Transport_Connection_Descriptor + [, Final_Login_Response_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. + + 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. + + + +Chadalapaka, et al. Informational [Page 19] + +RFC 5047 DA October 2007 + + + 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. + +8.7. Connection_Terminate + + Input qualifiers: Connection_Handle + + 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. + +8.8. Notice_Key_Values + + 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. + +8.9. Deallocate_Task_Resources + + Input qualifiers: Connection_Handle, ITT + + Return Results: Not specified. + + By invoking this Operational Primitive, an iSCSI layer requests that + its local Datamover layer deallocate all Datamover-specific resources + + + +Chadalapaka, et al. Informational [Page 20] + +RFC 5047 DA October 2007 + + + 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. + +9. Operational Primitives Provided by the iSCSI Layer + + 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". + + 1) Control_Notify + + 2) Connection_Terminate_Notify + + 3) Data_Completion_Notify + + 4) Data_ACK_Notify + +9.1. Control_Notify + + Input qualifiers: Connection_Handle, an iSCSI control-type 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]. + + + +Chadalapaka, et al. Informational [Page 21] + +RFC 5047 DA October 2007 + + + A target iSCSI layer being notified of the arrival of a SCSI command + is an example of invoking the Control_Notify Operational Primitive. + + 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. + +9.2. Connection_Terminate_Notify + + Input qualifiers: Connection_Handle + + 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. + + 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. + +9.3. Data_Completion_Notify + + Input qualifiers: Connection_Handle, 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]. + + 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 + + + +Chadalapaka, et al. Informational [Page 22] + +RFC 5047 DA October 2007 + + + 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. + + 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. + + 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. + + 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. + +9.4. Data_ACK_Notify + + Input qualifiers: Connection_Handle, 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]. + + 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. + +10. Datamover Interface (DI) + +10.1. Overview + + 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: + + + +Chadalapaka, et al. Informational [Page 23] + +RFC 5047 DA October 2007 + + + - send iSCSI data-type PDUs and exchange iSCSI control-type PDUs, + and + + - 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. + +10.2. Interactions for Handling Asynchronous Notifications + +10.2.1. Connection Termination + + 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]. + +10.2.2. Data Transfer Completion + + 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]. + +10.2.2.1. Completion of a Requested SCSI Data Transfer + + 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. + + a) Connection_Handle. + + b) ITT: Initiator Task Tag semantics as defined in [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]. + + The rationale for choosing SN is explained in Section 9.3. + + 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. + + + +Chadalapaka, et al. Informational [Page 24] + +RFC 5047 DA October 2007 + + +10.2.3. Data Acknowledgement + + [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. + + a) Connection_Handle. + + b) ITT: Initiator Task Tag semantics as defined in [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]. + + 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. + +10.3. Interactions for Sending an iSCSI PDU + + 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. + + 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: + + 1. For SCSI command (Section 10.3.1), deducing the + ImmediateDataSize input qualifier from the DataSegmentLength + field of the SCSI Command PDU. + + 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 + + + +Chadalapaka, et al. Informational [Page 25] + +RFC 5047 DA October 2007 + + + maintained) in conjunction with BHS fields of the SCSI Data-Out + PDU. + +10.3.1. SCSI Command + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a SCSI Command + PDU. + + a) BHS and AHS, if any, of the SCSI Command PDU as defined in + [RFC3720]. + + 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. + + 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. + + d) ImmediateDataSize: that defines the number of octets of + immediate unsolicited data for a write/bidirectional command. + + e) UnsolicitedDataSize: that defines the number of octets of + immediate and non-immediate unsolicited data for a + write/bidirectional command. + +10.3.2. SCSI Response + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a SCSI Response + PDU. + + a) BHS of the SCSI Response PDU as defined in [RFC3720]. + + b) DataDescriptorStatus: that defines the iSCSI buffer that + contains the sense and response information for the command. + +10.3.3. Task Management Function Request + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a Task + Management Function Request PDU. + + a) BHS of the Task Management Function Request PDU as defined in + [RFC3720]. + + + + + +Chadalapaka, et al. Informational [Page 26] + +RFC 5047 DA October 2007 + + + 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].) + + 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].) + +10.3.4. Task Management Function Response + + The Send_Control Operational Primitive with the following input + qualifier is used for requesting the transmission of a Task + Management Function Response PDU. + + a) BHS of the Task Management Function Response PDU as defined in + [RFC3720]. + +10.3.5. SCSI Data-Out and SCSI Data-In + +10.3.5.1. SCSI Data-Out + + 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. + + a) BHS of the SCSI Data-Out PDU as defined in [RFC3720]. + + b) DataDescriptorOut: that defines the I/O Buffer with the Data- + Out to be carried in the iSCSI data segment of the PDU. + +10.3.5.2. SCSI Data-In + + 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. + + a) BHS of the SCSI Data-In PDU as defined in [RFC3720]. + + b) DataDescriptorIn: that defines the I/O Buffer with the Data-In + being requested for transmission. + + + + + + + + + +Chadalapaka, et al. Informational [Page 27] + +RFC 5047 DA October 2007 + + +10.3.6. Ready To Transfer (R2T) + + 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. + + a) BHS of the Ready To Transfer PDU as defined in [RFC3720]. + + b) DataDescriptorOut: that defines the I/O Buffer for the Data-Out + being requested for retrieval. + +10.3.7. Asynchronous Message + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of an Asynchronous + Message PDU. + + a) BHS of the Asynchronous Message PDU as defined in [RFC3720]. + + b) DataDescriptorSense: that defines an iSCSI buffer that contains + the sense and iSCSI Event information. + +10.3.8. Text Request + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a Text Request + PDU. + + a) BHS of the Text Request PDU as defined in [RFC3720]. + + b) DataDescriptorTextOut: that defines the iSCSI Text Request + buffer. + +10.3.9. Text Response + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a Text Response + PDU. + + a) BHS of the Text Response PDU as defined in [RFC3720]. + + b) DataDescriptorTextIn: that defines the iSCSI Text Response + buffer. + + + + + + + +Chadalapaka, et al. Informational [Page 28] + +RFC 5047 DA October 2007 + + +10.3.10. Login Request + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a Login Request + PDU. + + a) BHS of the Login Request PDU as defined in [RFC3720]. + + b) DataDescriptorLoginRequest: that defines the iSCSI Login + Request buffer. + + 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. + +10.3.11. Login Response + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a Login + Response PDU. + + a) BHS of the Login Response PDU as defined in [RFC3720]. + + b) DataDescriptorLoginResponse: that defines the iSCSI Login + Response buffer. + + 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. + +10.3.12. Logout Command + + The Send_Control Operational Primitive with the following input + qualifier is used for requesting the transmission of a Logout Command + PDU. + + + + +Chadalapaka, et al. Informational [Page 29] + +RFC 5047 DA October 2007 + + + a) BHS of the Logout Command PDU as defined in [RFC3720]. + +10.3.13. Logout Response + + The Send_Control Operational Primitive with the following input + qualifier is used for requesting the transmission of a Logout + Response PDU. + + a) BHS of the Logout Response PDU as defined in [RFC3720]. + +10.3.14. SNACK Request + + The Send_Control Operational Primitive with the following input + qualifier is used for requesting the transmission of a SNACK Request + PDU. + + a) BHS of the SNACK Request PDU as defined in [RFC3720]. + +10.3.15. Reject + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a Reject PDU. + + a) BHS of the Reject PDU as defined in [RFC3720]. + + b) DataDescriptorReject: that defines the iSCSI Reject buffer. + +10.3.16. NOP-Out + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a NOP-Out PDU. + + a) BHS of the NOP-Out PDU as defined in [RFC3720]. + + b) DataDescriptorNOPOut: that defines the iSCSI Ping data buffer. + +10.3.17. NOP-In + + The Send_Control Operational Primitive with the following input + qualifiers is used for requesting the transmission of a NOP-In PDU. + + a) BHS of the NOP-In PDU as defined in [RFC3720]. + + b) DataDescriptorNOPIn: that defines the iSCSI Return Ping data + buffer. + + + + + + +Chadalapaka, et al. Informational [Page 30] + +RFC 5047 DA October 2007 + + +10.4. Interactions for Receiving an iSCSI PDU + + 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]. + +10.4.1. General Control-Type PDU Notification + + 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. + + 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. + +10.4.2. SCSI Data Transfer PDUs + +10.4.2.1. SCSI Data-Out + + 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. + +10.4.2.2. SCSI Data-In + + 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. + + 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 + + + +Chadalapaka, et al. Informational [Page 31] + +RFC 5047 DA October 2007 + + + 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. + +10.4.2.3. Ready To Transfer (R2T) + + 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. + + 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. + +10.4.3. Login Request + + 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. + +10.4.4. Login Response + + 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 + + + +Chadalapaka, et al. Informational [Page 32] + +RFC 5047 DA October 2007 + + + this case -- [RFC3720] already defines the error handling in this + error scenario. + +11. Security Considerations + +11.1. Architectural Considerations + + 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. + + 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. + +11.2. Wire Protocol Considerations + + 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 + + + +Chadalapaka, et al. Informational [Page 33] + +RFC 5047 DA October 2007 + + + 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. + + 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. + +12. References + +12.1. Normative References + + [RFC3720] Satran, J., Meth, K., Sapuntzakis, C., Chadalapaka, M., and + E. Zeidner, "Internet Small Computer Systems Interface + (iSCSI)", RFC 3720, April 2004. + + [RFC3723] Aboba, B., Tseng, J., Walker, J., Rangan, V., and F. + Travostino, "Securing Block Storage Protocols over IP", RFC + 3723, April 2004. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + +12.2. Informative References + + [DDP] Shah, H., Pinkerton, J., Recio, R., and P. Culley, "Direct + Data Placement over Reliable Transports", RFC 5041, October + 2007. + + [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. + + [RDDPSEC] Pinkerton, J. and E. Deleganes, "Direct Data Placement + Protocol (DDP) / Remote Direct Memory Access Protocol + (RDMAP) Security", RFC 5042, October 2007. + + + + + + + + + + +Chadalapaka, et al. Informational [Page 34] + +RFC 5047 DA October 2007 + + +Appendix A. Design Considerations and Examples + +A.1. Design Considerations for a Datamover Protocol + + This section discusses the specific considerations for RDMA-based and + RDDP-based Datamover protocols. + + a) Note that the modeling of interactions for SCSI Data-Out + (Section 10.3.5.1) is only used for unsolicited data transfer. + + 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. + + 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. + + 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. + +A.2. Examples of Datamover Interactions + + 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. + + Avail - Available + + Abted - Aborted + + + + +Chadalapaka, et al. Informational [Page 35] + +RFC 5047 DA October 2007 + + + Buf - I/O Buffer + + Cmd - Command + + Compl - Complete + + Conn - Connection + + Ctrl_Ntfy - Control_Notify + + Dal_Tk_Res - Deallocate_Task_Resources + + Data_Cmp_Nfy - Data_Completion_Notify + + Data_ACK_Nfy - Data_ACK_Notify + + DM - Datamover + + Imm - Immediate + + Snd_Ctrl - Send_Control + + Msg - Message + + Resp - Response + + Sol - Solicited + + TMF Req - Task Management Function Request + + TMF Res - Task Management Function Response + + Trans - Transfer + + Unsol - Unsolicited + + + + + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 36] + +RFC 5047 DA October 2007 + + + | | 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 + + + | | 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 + + + + +Chadalapaka, et al. Informational [Page 37] + +RFC 5047 DA October 2007 + + + | | 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 + + + | | 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 + + + +Chadalapaka, et al. Informational [Page 38] + +RFC 5047 DA October 2007 + + + + | | 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 + + + + + + + + + + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 39] + +RFC 5047 DA October 2007 + + + | | | | ^ + | | 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 + + + | | | | ^ + | | 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 + + + + + + + + + +Chadalapaka, et al. Informational [Page 40] + +RFC 5047 DA October 2007 + + + <-----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 + <----| |<---------| |<---------------| |<-----------| |<---- + | | | | | | | | + + Figure 9. A SCSI Write Data Transfer + + + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 41] + +RFC 5047 DA October 2007 + + + <-----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 + <----| |<---------| |<---------------| |<-----------| |<---- + | | | | | | | | + + Figure 10. A SCSI Read Data Transfer + + + + + + + + + + + + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 42] + +RFC 5047 DA October 2007 + + + <-----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 + <----| |<---------| |<---------------| |<-----------| |<---- + | | | | | | | | + + Figure 11. A SCSI Read Data Acknowledgement + + + + + + + + + + + + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 43] + +RFC 5047 DA October 2007 + + + <-----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 | | + | |--------->| | | |<-----------| | + | | | | | | | | + + Figure 12. Task Resource Cleanup on Abort + +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. + + 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 + + + + +Chadalapaka, et al. Informational [Page 44] + +RFC 5047 DA October 2007 + + + Hari Ghadia + Adaptec, Inc. + 691 S. Milpitas Blvd., Milpitas, CA 95035, USA + Phone: +1 (408) 957-5608 + EMail: 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 + + 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 + + Uri Elzur + Broadcom Corporation + 16215 Alton Parkway, Irvine, CA 92619-7013, USA + Phone: +1 (949) 585-6432 + EMail: Uri@Broadcom.com + + Mike Penna + Broadcom Corporation + 16215 Alton Parkway,Irvine, CA 92619-7013, USA + Phone: +1 (949) 926-7149 + EMail: MPenna@Broadcom.com + + David Black + EMC Corporation + 176 South St., Hopkinton, MA 01748, USA + Phone: +1 (508) 293-7953 + EMail: black_david@emc.com + + Ted Compton + EMC Corporation + Research Triangle Park, NC 27709, USA + Phone: +1-919-248-6075 + EMail: compton_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 + + + +Chadalapaka, et al. Informational [Page 45] + +RFC 5047 DA October 2007 + + + Paul R. Culley + Hewlett-Packard Company + 20555 SH 249, Houston, TX 77070-2698, USA + Phone: +1 (281) 514-5543 + EMail: 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 + + Randy Haagens + Hewlett-Packard Company + 8000 Foothills Blvd, MS 5668, Roseville CA, USA + Phone: +1-916-785-4578 + EMail: 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 + + Mike Krause + Hewlett-Packard Company, 43LN + 19410 Homestead Road, Cupertino, CA 95014, USA + Phone: +1 (408) 447-3191 + EMail: 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 + + Mike Ko + IBM + 650 Harry Rd, San Jose, CA 95120, USA + Phone: +1 (408) 927-2085 + EMail: 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 + + + + +Chadalapaka, et al. Informational [Page 46] + +RFC 5047 DA October 2007 + + + 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 + + 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 + + James Pinkerton + Microsoft Corporation + One Microsoft Way, Redmond, WA 98052, USA + Phone: +1 (425) 705-5442 + EMail: 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 47] + +RFC 5047 DA October 2007 + + +Authors' Addresses + + Mallikarjun Chadalapaka + Hewlett-Packard Company + 8000 Foothills Blvd. + Roseville, CA 95747-5668, USA + + Phone: +1-916-785-5621 + EMail: cbm@rose.hp.com + + + John L. Hufferd + Brocade, Inc. + 1745 Technology Drive + San Jose, CA 95110, USA + + Phone: +1-408-333-5244 + EMail: jhufferd@brocade.com + + + Julian Satran + IBM, Haifa Research Lab + Haifa University Campus - Mount Carmel + Haifa 31905, Israel + + Phone +972-4-829-6264 + EMail: Julian_Satran@il.ibm.com + + + Hemal Shah + Broadcom Corporation + 5300 California Avenue + Irvine, California 92617, USA + + Phone: +1-949-926-6941 + EMail: hemal@broadcom.com + + Comments may be sent to Mallikarjun Chadalapaka. + + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 48] + +RFC 5047 DA October 2007 + + +Full Copyright Statement + + Copyright (C) The IETF Trust (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. + + 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. + +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. + + 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. + + 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. + + + + + + + + + + + + +Chadalapaka, et al. Informational [Page 49] + |