draft-ietf-ips-iwarp-da-01.txt   draft-ietf-ips-iwarp-da-02.txt 
INTERNET DRAFT Mallikarjun Chadalapaka INTERNET DRAFT Mallikarjun Chadalapaka
draft-ietf-ips-iwarp-da-01.txt HP draft-ietf-ips-iwarp-da-02.txt HP
John Hufferd John Hufferd
IBM IBM
Julian Satran Julian Satran
IBM IBM
Hemal Shah Hemal Shah
Intel Intel
Expires September 2005 Expires September 2005
Datamover Architecture for iSCSI (DA) Datamover Architecture for iSCSI (DA)
skipping to change at page 3, line 22 skipping to change at page 3, line 22
4 Motivation .............................................8 4 Motivation .............................................8
5 Architectural layering of iSCSI and Datamover layers ..10 5 Architectural layering of iSCSI and Datamover layers ..10
6 Design Overview .......................................12 6 Design Overview .......................................12
7 Architectural Concepts ................................14 7 Architectural Concepts ................................14
7.1 iSCSI PDU types .......................................14 7.1 iSCSI PDU types .......................................14
7.1.1 iSCSI data-type PDUs.................................14 7.1.1 iSCSI data-type PDUs.................................14
7.1.2 iSCSI control-type PDUs..............................15 7.1.2 iSCSI control-type PDUs..............................15
7.2 Data_Descriptor .......................................15 7.2 Data_Descriptor .......................................15
7.3 Connection_Handle .....................................15 7.3 Connection_Handle .....................................15
7.4 Operational Primitive .................................16 7.4 Operational Primitive .................................16
7.5 Transport Connection ..................................16 7.5 Transport Connection ..................................17
8 Datamover layer and Datamover protocol ................17 8 Datamover layer and Datamover protocol ................18
9 Operational Primitives provided by the Datamover layer 19 9 Operational Primitives provided by the Datamover layer 20
9.1 Send_Control ..........................................19 9.1 Send_Control ..........................................20
9.2 Put_Data ..............................................20 9.2 Put_Data ..............................................21
9.3 Get_Data ..............................................20 9.3 Get_Data ..............................................22
9.4 Allocate_Connection_Resources .........................21 9.4 Allocate_Connection_Resources .........................22
9.5 Deallocate_Connection_Resources .......................22 9.5 Deallocate_Connection_Resources .......................23
9.6 Enable_Datamover ......................................23 9.6 Enable_Datamover ......................................24
9.7 Connection_Terminate ..................................23 9.7 Connection_Terminate ..................................24
9.8 Notice_Key_Values .....................................24 9.8 Notice_Key_Values .....................................25
9.9 Deallocate_Task_Resources .............................24 9.9 Deallocate_Task_Resources .............................25
10 Operational Primitives provided by the iSCSI layer ....25 10 Operational Primitives provided by the iSCSI layer ....27
10.1 Control_Notify.......................................25 10.1 Control_Notify.......................................27
10.2 Connection_Terminate_Notify..........................26 10.2 Connection_Terminate_Notify..........................28
10.3 Data_Completion_Notify...............................26 10.3 Data_Completion_Notify...............................28
10.4 Data_ACK_Notify......................................27 10.4 Data_ACK_Notify......................................29
11 Datamover Interface (DI) ..............................29 11 Datamover Interface (DI) ..............................31
11.1 Overview.............................................29 11.1 Overview.............................................31
11.2 Interactions for handling asynchronous notifications.29 11.2 Interactions for handling asynchronous notifications.31
11.2.1 Connection termination .............................29 11.2.1 Connection termination .............................31
11.2.2 Data transfer completion ...........................29 11.2.2 Data transfer completion ...........................31
11.2.3 Data acknowledgement ...............................30 11.2.3 Data acknowledgement ...............................32
11.3 Interactions for sending an iSCSI PDU................31 11.3 Interactions for sending an iSCSI PDU................33
11.3.1 SCSI Command .......................................31 11.3.1 SCSI Command .......................................33
11.3.2 SCSI Response ......................................32 11.3.2 SCSI Response ......................................34
11.3.3 Task Management Function Request ...................32 11.3.3 Task Management Function Request ...................34
11.3.4 Task Management Function Response ..................33 11.3.4 Task Management Function Response ..................35
11.3.5 SCSI Data-out & SCSI Data-in .......................33 11.3.5 SCSI Data-out & SCSI Data-in .......................35
11.3.6 Ready To Transfer (R2T) ............................33 11.3.6 Ready To Transfer (R2T) ............................35
11.3.7 Asynchronous Message ...............................34 11.3.7 Asynchronous Message ...............................36
11.3.8 Text Request .......................................34 11.3.8 Text Request .......................................36
11.3.9 Text Response ......................................34 11.3.9 Text Response ......................................36
11.3.10 Login Request ....................................35 11.3.10 Login Request ....................................37
11.3.11 Login Response ...................................35 11.3.11 Login Response ...................................37
11.3.12 Logout Command ...................................36 11.3.12 Logout Command ...................................38
11.3.13 Logout Response ..................................36 11.3.13 Logout Response ..................................38
11.3.14 SNACK Request ....................................36 11.3.14 SNACK Request ....................................38
11.3.15 Reject ...........................................37 11.3.15 Reject ...........................................39
11.3.16 NOP-Out ..........................................37 11.3.16 NOP-Out ..........................................39
11.3.17 NOP-In ...........................................37 11.3.17 NOP-In ...........................................39
11.4 Interactions for receiving an iSCSI PDU..............37 11.4 Interactions for receiving an iSCSI PDU..............39
11.4.1 SCSI Command .......................................38 11.4.1 SCSI Command .......................................40
11.4.2 SCSI Response ......................................38 11.4.2 SCSI Response ......................................40
11.4.3 Task Management Function Request ...................38 11.4.3 Task Management Function Request ...................40
11.4.4 Task Management Function Response ..................38 11.4.4 Task Management Function Response ..................40
11.4.5 SCSI Data-out & SCSI Data-in .......................38 11.4.5 SCSI Data-out & SCSI Data-in .......................40
11.4.6 Ready To Transfer (R2T) ............................39 11.4.6 Ready To Transfer (R2T) ............................41
11.4.7 Asynchronous Message ...............................40 11.4.7 Asynchronous Message ...............................42
11.4.8 Text Request .......................................40 11.4.8 Text Request .......................................42
11.4.9 Text Response ......................................40 11.4.9 Text Response ......................................42
11.4.10 Login Request ....................................40 11.4.10 Login Request ....................................42
11.4.11 Login Response ...................................40 11.4.11 Login Response ...................................42
11.4.12 Logout Command ...................................41 11.4.12 Logout Command ...................................43
11.4.13 Logout Response ..................................41 11.4.13 Logout Response ..................................43
11.4.14 SNACK Request ....................................41 11.4.14 SNACK Request ....................................43
11.4.15 Reject ...........................................41 11.4.15 Reject ...........................................43
11.4.16 NOP-Out ..........................................41 11.4.16 NOP-Out ..........................................43
11.4.17 NOP-In ...........................................41 11.4.17 NOP-In ...........................................43
12 Security Considerations ...............................42 12 Security Considerations ...............................44
13 IANA Considerations ...................................43 13 IANA Considerations ...................................45
14 References and Bibliography ...........................44 14 References and Bibliography ...........................46
14.1 Normative References.................................44 14.1 Normative References.................................46
14.2 Informative References...............................44 14.2 Informative References...............................46
15 Authors' Addresses ....................................45 15 Authors' Addresses ....................................47
16 Acknowledgements ......................................46 16 Acknowledgements ......................................48
17 Appendix ..............................................50 17 Appendix ..............................................52
17.1 Design considerations for a Datamover protocol.......50 17.1 Design considerations for a Datamover protocol.......52
17.2 Examples of Datamover interactions...................51 17.2 Examples of Datamover interactions...................53
18 Full Copyright Statement ..............................60 18 Full Copyright Statement ..............................62
19 Intellectual Property Statement .......................61 19 Intellectual Property Statement .......................63
Table of Figures Table of Figures
Figure 1 Datamover Architecture diagram, with the RDMAP Figure 1 Datamover Architecture diagram, with the RDMAP
example.....................................................10 example.....................................................10
Figure 2 A successful iSCSI login on initiator..............52 Figure 2 A successful iSCSI login on initiator..............54
Figure 3 A successful iSCSI login on target.................52 Figure 3 A successful iSCSI login on target.................54
Figure 4 A failed iSCSI login on initiator..................53 Figure 4 A failed iSCSI login on initiator..................55
Figure 5 A failed iSCSI login on target.....................53 Figure 5 A failed iSCSI login on target.....................55
Figure 6 iSCSI does not enable the Datamover................54 Figure 6 iSCSI does not enable the Datamover................56
Figure 7 A normal iSCSI connection termination..............55 Figure 7 A normal iSCSI connection termination..............57
Figure 8 An abnormal iSCSI connection termination...........55 Figure 8 An abnormal iSCSI connection termination...........57
Figure 9 A SCSI Write data transfer.........................56 Figure 9 A SCSI Write data transfer.........................58
Figure 10 A SCSI Read data transfer.........................57 Figure 10 A SCSI Read data transfer.........................59
Figure 11 A SCSI Read data acknowledgement..................58 Figure 11 A SCSI Read data acknowledgement..................60
Figure 12 Task resource cleanup on abort...................59 Figure 12 Task resource cleanup on abort...................61
3 Definitions and acronyms 3 Definitions and acronyms
3.1 Definitions 3.1 Definitions
I/O Buffer A buffer that is used in a SCSI Read or Write I/O Buffer A buffer that is used in a SCSI Read or Write
operation so SCSI data may be sent from or received into operation so SCSI data may be sent from or received into
that buffer. that buffer.
Datamover protocol A Datamover protocol is a data transfer Datamover protocol A Datamover protocol is a data transfer
skipping to change at page 16, line 37 skipping to change at page 16, line 37
and the semantics of these Primitives. and the semantics of these Primitives.
Note that ownership of buffers and data structures is likely Note that ownership of buffers and data structures is likely
to be exchanged between the iSCSI layer and its local to be exchanged between the iSCSI layer and its local
Datamover layer in invoking the Operational Primitives Datamover layer in invoking the Operational Primitives
defined in this architecture. The buffer management details, defined in this architecture. The buffer management details,
including how buffers are allocated and released, are including how buffers are allocated and released, are
implementation-specific and thus are outside the scope of implementation-specific and thus are outside the scope of
this document. this document.
Each Operational Primitive invocation needs a certain
"information context" (e.g., Connection_Handle) for
performing the specific action being requested of it. The
required information context is described in this document by
a listing of "qualifiers" on each invocation - in the style
of function call arguments. No implementation specific is
however 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 upto the implementations.
When an Operational Primitive implementation is described as
mandatory ("MUST") or recommended ("SHOULD") of a layer
(iSCSI or Datamover) in this document, the intent is that an
implementation respectively MUST or SHOULD produce the same
protocol action as what the model describes.
7.5 Transport Connection 7.5 Transport Connection
The term "Transport Connection" is used in this document as a The term "Transport Connection" is used in this document as a
generic term to represent the end-to-end logical connection generic term to represent the end-to-end logical connection
as defined by the underlying reliable transport protocol. as defined by the underlying reliable transport protocol.
For this revision of this document, a Transport Connection For this revision of this document, a Transport Connection
means only a TCP connection. means only a TCP connection.
8 Datamover layer and Datamover protocol 8 Datamover layer and Datamover protocol
skipping to change at page 19, line 10 skipping to change at page 20, line 10
implementations, the absence of such buffers may result in a implementations, the absence of such buffers may result in a
connection failure. Datamover protocols may also realize connection failure. Datamover protocols may also realize
these functional requirements via methods not explicitly these functional requirements via methods not explicitly
listed in this document. listed in this document.
9 Operational Primitives provided by the Datamover layer 9 Operational Primitives provided by the Datamover layer
While the iSCSI specification itself does not have a notion While the iSCSI specification itself does not have a notion
of Operational Primitives, any iSCSI layer implementing the of Operational Primitives, any iSCSI layer implementing the
iSCSI specification functionally requires the following iSCSI specification functionally requires the following
Operational Primitives from its Datamover layer. These Operational Primitives from its Datamover layer. Thus, any
Operational Primitives are invoked by the iSCSI layer as Datamover protocol compliant with this architecture MUST
appropriate. Unless otherwise stated, all the following implement the Operational Primitives described in this
Operational Primitives may be used both on the initiator side section. These Operational Primitives are invoked by the
and the target side. In general programming terminology, iSCSI layer as appropriate. Unless otherwise stated, all the
this set of Operational Primitives may be construed as "down following Operational Primitives may be used both on the
calls". initiator side and the target side. In general programming
terminology, this set of Operational Primitives may be
construed as "down calls".
1) Send_Control 1) Send_Control
2) Put_Data 2) Put_Data
3) Get_Data 3) Get_Data
4) Allocate_Connection_Resources 4) Allocate_Connection_Resources
5) Deallocate_Connection_Resources 5) Deallocate_Connection_Resources
skipping to change at page 25, line 10 skipping to change at page 27, line 10
task. When a SCSI Response PDU normally concludes a task task. When a SCSI Response PDU normally concludes a task
(even if the SCSI Status was not a success), the Datamover (even if the SCSI Status was not a success), the Datamover
layer is assumed to have automatically deallocated all layer is assumed to have automatically deallocated all
Datamover-specific task resources for that task. Datamover-specific task resources for that task.
10 Operational Primitives provided by the iSCSI layer 10 Operational Primitives provided by the iSCSI layer
While the iSCSI specification itself does not have a notion While the iSCSI specification itself does not have a notion
of Operational Primitives, any iSCSI layer implementing the of Operational Primitives, any iSCSI layer implementing the
iSCSI specification would have to provide the following iSCSI specification would have to provide the following
Operational Primitives to its local Datamover layer. These Operational Primitives to its local Datamover layer. Thus,
Operational Primitives are invoked by the Datamover layer as any iSCSI protocol implementation compliant with this
appropriate and when the iSCSI connection is Datamover- architecture MUST implement the Operational Primitives
assisted. Unless otherwise stated, all the following described in this section. These Operational Primitives are
Operational Primitives may be used both on the initiator side invoked by the Datamover layer as appropriate and when the
and the target side. In general programming terminology, iSCSI connection is Datamover-assisted. Unless otherwise
this set of Operational Primitives may be construed as "up stated, all the following Operational Primitives may be used
calls". 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 1) Control_Notify
2) Connection_Terminate_Notify 2) Connection_Terminate_Notify
3) Data_Completion_Notify 3) Data_Completion_Notify
4) Data_ACK_Notify 4) Data_ACK_Notify
10.1 Control_Notify 10.1 Control_Notify
skipping to change at page 31, line 18 skipping to change at page 33, line 18
each of the iSCSI PDUs defined in [RFC3720]. A each of the iSCSI PDUs defined in [RFC3720]. A
Connection_Handle (see section 7.3) is assumed to qualify Connection_Handle (see section 7.3) is assumed to qualify
each of these interactions so that the Datamover layer can each of these interactions so that the Datamover layer can
route it to the appropriate Transport Connection. The route it to the appropriate Transport Connection. The
qualifying Connection_Handle is not explicitly listed in the qualifying Connection_Handle is not explicitly listed in the
subsequent sections. subsequent sections.
Note that the defined list of input qualifiers represents the Note that the defined list of input qualifiers represents the
semantically required set for the Datamover layer to consider semantically required set for the Datamover layer to consider
in implementing the Primitive in each interaction described in implementing the Primitive in each interaction described
in this section. Some implementations may choose to deduce in this section (see section 7.4 for an elaboration).
the qualifiers in other ways that are optimized for the Implementations may choose to deduce the qualifiers in ways
implementation specifics. Two examples of this are: that are optimized for the implementation specifics. Two
examples of this are:
1. For SCSI Command (section 11.3.1), deducing the 1. For SCSI Command (section 11.3.1), deducing the
ImmediateDataSize input qualifier from the ImmediateDataSize input qualifier from the
DataSegmentLength field of the SCSI Command PDU. DataSegmentLength field of the SCSI Command PDU.
2. For SCSI Data-Out (section 11.3.5.1), deducing the 2. For SCSI Data-Out (section 11.3.5.1), deducing the
DataDescriptorOut input qualifier from the associated DataDescriptorOut input qualifier from the associated
SCSI Command invocation qualifiers (assuming such state SCSI Command invocation qualifiers (assuming such state
is maintained) in conjunction with BHS fields of the is maintained) in conjunction with BHS fields of the
SCSI Data-out PDU. SCSI Data-out PDU.
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/