draft-ietf-ips-iscsi-impl-guide-03.txt   draft-ietf-ips-iscsi-impl-guide-04.txt 
INTERNET DRAFT Mallikarjun Chadalapaka INTERNET DRAFT Mallikarjun Chadalapaka
draft-ietf-ips-iscsi-impl-guide-03.txt Hewlett-Packard Co. draft-ietf-ips-iscsi-impl-guide-04.txt Hewlett-Packard Co.
Editor Editor
iSCSI Implementer's Guide
Expires
iSCSI Corrections and Clarifications
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents By submitting this Internet-Draft, each author represents
that any applicable patent or other IPR claims of which he or that any applicable patent or other IPR claims of which he or
she is aware have been or will be disclosed, and any of which she is aware have been or will be disclosed, and any of which
he or she becomes aware will be disclosed, in accordance with he or she becomes aware will be disclosed, in accordance with
Section 6 of BCP 79. Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Internet-Drafts are working documents of the Internet
Engineering Task Force (IETF), its areas, and its working Engineering Task Force (IETF), its areas, and its working
groups. Note that other groups may also distribute working groups. Note that other groups may also distribute working
documents as Internet-Drafts. documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of Internet-Drafts are draft documents valid for a maximum of
six months and may be updated, replaced, or obsoleted by six months and may be updated, replaced, or obsoleted by
other documents at any time. It is inappropriate to use other documents at any time. It is inappropriate to use
Internet-Drafts as reference material or to cite them other Internet-Drafts as reference material or to cite them other
than a "work in progress." than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed The list of Internet-Draft Shadow Directories can be accessed
at http://www.ietf.org/shadow.html. at http://www.ietf.org/shadow.html.
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].
Abstract Abstract
iSCSI is a SCSI transport protocol and maps the SCSI family iSCSI is a SCSI transport protocol and maps the SCSI family
of application protocols onto TCP/IP. RFC 3720 defines the of application protocols onto TCP/IP. RFC 3720 defines the
iSCSI protocol. This document compiles the clarifications to iSCSI protocol. This document compiles the clarifications to
the original protocol definition in RFC 3720 to serve as a the original protocol definition in RFC 3720 to serve as a
companion document for the iSCSI implementers. This document companion document for the iSCSI implementers. This document
updates RFC 3720 and the text in this document supersedes the updates RFC 3720 and the text in this document supersedes the
text in RFC 3720 when the two differ. text in RFC 3720 when the two differ.
Table of Contents Table of Contents
1 Definitions and acronyms ...............................3 1 Definitions and acronyms ...............................5
1.1 Definitions ............................................3 1.1 Definitions ............................................5
1.2 Acronyms ...............................................3 1.2 Acronyms ...............................................5
2 Introduction ...........................................5 2 Introduction ...........................................7
3 iSCSI semantics for SCSI tasks .........................6 3 iSCSI semantics for SCSI tasks .........................8
3.1 Residual handling ......................................6 3.1 Residual handling ......................................8
3.1.1 Overview..............................................6 3.1.1 Overview..............................................8
3.1.2 SCSI REPORT LUNS and Residual Overflow................7 3.1.2 SCSI REPORT LUNS and Residual Overflow................9
3.2 R2T Ordering ...........................................8 3.2 R2T Ordering ..........................................10
3.3 SCSI Protocol Interface Model for Response Ordering ....8 3.3 SCSI Protocol Interface Model for Response Ordering ...11
3.3.1 Model Description.....................................9 3.3.1 Model Description....................................11
3.3.2 iSCSI Semantics with the Interface Model..............9 3.3.2 iSCSI Semantics with the Interface Model.............11
3.3.3 Current List of Fenced Response Use Cases............10 3.3.3 Current List of Fenced Response Use Cases............12
4 Task Management .......................................12 4 Task Management .......................................14
4.1 Requests Affecting Multiple Tasks .....................12 4.1 Requests Affecting Multiple Tasks .....................14
4.1.1 Scope of affected tasks..............................12 4.1.1 Scope of affected tasks..............................14
4.1.2 Clarified multi-task abort semantics.................12 4.1.2 Clarified multi-task abort semantics.................14
4.1.3 Updated multi-task abort semantics...................14 4.1.3 Updated multi-task abort semantics...................16
4.1.4 Rationale behind the new semantics...................16 4.1.4 Implementation considerations........................18
5 Discovery semantics ...................................18 4.1.5 Rationale behind the new semantics...................19
5.1 Error Recovery for Discovery Sessions .................18 5 Discovery semantics ...................................21
5.2 Reinstatement Semantics of Discovery Sessions .........18 5.1 Error Recovery for Discovery Sessions .................21
5.2.1 Unnamed Discovery Sessions...........................19 5.2 Reinstatement Semantics of Discovery Sessions .........21
5.2.2 Named Discovery Sessions.............................19 5.2.1 Unnamed Discovery Sessions...........................22
6 Negotiation and Others ................................20 5.2.2 Named Discovery Sessions.............................22
6.1 TPGT Values ...........................................20 5.3 Target PDUs during Discovery ..........................23
6.2 Session type negotiation ..............................20 6 Negotiation and Others ................................24
6.3 Understanding NotUnderstood ...........................20 6.1 TPGT Values ...........................................24
7 iSCSI Error Handling and Recovery .....................22 6.2 SessionType Negotiation ...............................24
7.1 ITT ...................................................22 6.3 Understanding NotUnderstood ...........................24
7.2 Format Errors .........................................22 6.4 Outstanding Negotiation Exchanges .....................25
7.3 Digest Errors .........................................22 7 iSCSI Error Handling and Recovery .....................26
8 iSCSI PDUs ............................................24 7.1 ITT ...................................................26
8.1 Asynchronous Message ..................................24 7.2 Format Errors .........................................26
9 Login/Text Operational Text Keys ......................25 7.3 Digest Errors .........................................26
9.1 FastMultiTaskAbort ....................................25 7.4 Message Error Checking ................................27
10 Security Considerations ...............................26 8 iSCSI PDUs ............................................28
11 IANA Considerations ...................................27 8.1 Asynchronous Message ..................................28
12 References and Bibliography ...........................28 8.2 Reject ................................................28
12.1 Normative References.................................28 9 Login/Text Operational Text Keys ......................29
12.2 Informative References...............................28 9.1 TaskReporting .........................................29
13 Editor's Address ......................................29 10 Security Considerations ...............................31
14 Acknowledgements ......................................30 11 IANA Considerations ...................................32
15 Full Copyright Statement ..............................31 12 References and Bibliography ...........................33
16 Intellectual Property Statement .......................32 12.1 Normative References.................................33
12.2 Informative References...............................33
13 Editor's Address ......................................34
14 Acknowledgements ......................................35
15 Full Copyright Statement ..............................36
16 Intellectual Property Statement .......................37
1 Definitions and acronyms 1 Definitions and acronyms
1.1 Definitions 1.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. For a read or write data transfer to take that buffer. For a read or write data transfer to take
place for a task, an I/O Buffer is required on the place for a task, an I/O Buffer is required on the
initiator and at least one required on the target. initiator and at least one required on the target.
SCSI-Presented Data Transfer Length (SPDTL): SPDTL is the SCSI-Presented Data Transfer Length (SPDTL): SPDTL is the
aggregate data length of the data that SCSI layer aggregate data length of the data that SCSI layer
logically "presents" to iSCSI layer for a Data-in or logically "presents" to iSCSI layer for a Data-in or
Data-out transfer in the context of a SCSI task. For a Data-out transfer in the context of a SCSI task. For a
bidirectional task, there are two SPDTL values one for bidirectional task, there are two SPDTL values - one for
Data-in and one for Data-out. Note that the notion of Data-in and one for Data-out. Note that the notion of
"presenting" includes immediate data per the data "presenting" includes immediate data per the data
transfer model in [SAM2], and excludes overlapping data transfer model in [SAM2], and excludes overlapping data
transfers, if any, requested by the SCSI layer. transfers, if any, requested by the SCSI layer.
Third-party: A term used in this document to denote nexus Third-party: A term used in this document to denote nexus
objects (I_T or I_T_L) and iSCSI sessions which reap the objects (I_T or I_T_L) and iSCSI sessions which reap the
side-effects of actions took place in the context of a side-effects of actions that take place in the context of
separate iSCSI session, while being third parties to the a separate iSCSI session, while being third parties to
action that caused the side-effects. One example of a the action that caused the side-effects. One example of
Third-party session is an iSCSI session hosting an I_T_L a Third-party session is an iSCSI session hosting an
nexus to an LU that is reset with an LU Reset TMF via a I_T_L nexus to an LU that is reset with an LU Reset TMF
separate I_T nexus. via a separate I_T nexus.
1.2 Acronyms 1.2 Acronyms
Acronym Definition Acronym Definition
------------------------------------------------------------- -------------------------------------------------------------
EDTL Expected Data Transfer Length EDTL Expected Data Transfer Length
IANA Internet Assigned Numbers Authority IANA Internet Assigned Numbers Authority
skipping to change at page 5, line 25 skipping to change at page 7, line 25
adoption. This document, however, does not purport to be an adoption. This document, however, does not purport to be an
all-encompassing iSCSI how-to guide for implementers, nor a all-encompassing iSCSI how-to guide for implementers, nor a
complete revision of [RFC3720]. This document instead is complete revision of [RFC3720]. This document instead is
intended as a companion document to [RFC3720] for the iSCSI intended as a companion document to [RFC3720] for the iSCSI
implementers. implementers.
iSCSI implementers are required to reference [RFC3722] and iSCSI implementers are required to reference [RFC3722] and
[RFC3723] in addition to [RFC3720] for mandatory requirements. [RFC3723] in addition to [RFC3720] for mandatory requirements.
In addition, [RFC3721] also contains useful information for In addition, [RFC3721] also contains useful information for
iSCSI implementers. The text in this document, however, updates iSCSI implementers. The text in this document, however, updates
and supersedes the text in all the noted RFCs whenever there is and supersedes the text in [RFC3720] and [RFC3721] whenever
such a question. there is such a question.
3 iSCSI semantics for SCSI tasks 3 iSCSI semantics for SCSI tasks
3.1 Residual handling 3.1 Residual handling
Section 10.4.1 of [RFC3720] defines the notion of "residuals" Section 10.4.1 of [RFC3720] defines the notion of "residuals"
and specifies how the residual information should be encoded and specifies how the residual information should be encoded
into the SCSI Response PDU in Counts and Flags fields. Section into the SCSI Response PDU in Counts and Flags fields. Section
3.1.1 clarifies the intent of [RFC3720] and explains the general 3.1.1 clarifies the intent of [RFC3720] and explains the general
principles. Section 3.1.2 describes the residual handling in principles. Section 3.1.2 describes the residual handling in
the REPORT LUNS scenario. the REPORT LUNS scenario.
3.1.1 Overview 3.1.1 Overview
SCSI-Presented Data Transfer Length (SPDTL) is the term this SCSI-Presented Data Transfer Length (SPDTL) is the term this
document uses (see section 1.1 for definition) to represent the document uses (see section 1.1 for definition) to represent the
aggregate data length that the target SCSI layer attempts to aggregate data length that the target SCSI layer attempts to
transfer using the local iSCSI layer for a task. Expected Data transfer using the local iSCSI layer for a task. Expected Data
Transfer Length (EDTL) is the iSCSI term that represents the Transfer Length (EDTL) is the iSCSI term that represents the
length of data that iSCSI layer expects to transfer for a task. length of data that the iSCSI layer expects to transfer for a
EDTL is specified in the SCSI Command PDU. task. EDTL is specified in the SCSI Command PDU.
When SPDTL = EDTL for a task, the target iSCSI layer completes When SPDTL = EDTL for a task, the target iSCSI layer completes
the task with no residuals. Whenever SPDTL differs from EDTL the task with no residuals. Whenever SPDTL differs from EDTL
for a task, that task is said to have a residual. for a task, that task is said to have a residual.
If SPDTL > EDTL for a task, iSCSI Overflow MUST be signaled in If SPDTL > EDTL for a task, iSCSI Overflow MUST be signaled in
the SCSI Response PDU as specified in [RFC3720]. Residual Count the SCSI Response PDU as specified in [RFC3720]. Residual Count
MUST be set to the numerical value of (SPDTL EDTL). MUST be set to the numerical value of (SPDTL - EDTL).
If SPDTL < EDTL for a task, iSCSI Underflow MUST be signaled in If SPDTL < EDTL for a task, iSCSI Underflow MUST be signaled in
the SCSI Response PDU as specified in [RFC3720]. Residual Count the SCSI Response PDU as specified in [RFC3720]. Residual Count
MUST be set to the numerical value of (EDTL SPDTL). MUST be set to the numerical value of (EDTL - SPDTL).
Note that the Overflow and Underflow scenarios are independent Note that the Overflow and Underflow scenarios are independent
of Data-in and Data-out. Either scenario is logically possible of Data-in and Data-out. Either scenario is logically possible
in either direction of data transfer. in either direction of data transfer.
3.1.2 SCSI REPORT LUNS and Residual Overflow 3.1.2 SCSI REPORT LUNS and Residual Overflow
This section discusses the residual overflow issues citing the
example of SCSI REPORT LUNS command. Note however that there
are several SCSI commands (e.g. INQUIRY) with ALLOCATION LENGTH
fields following the same underlying rules. The semantics in
the rest of the section apply to all such SCSI commands.
The specification of the SCSI REPORT LUNS command requires that The specification of the SCSI REPORT LUNS command requires that
the SCSI target limit the amount of data transferred to a the SCSI target limit the amount of data transferred to a
maximum size (ALLOCATION LENGTH) provided by the initiator in maximum size (ALLOCATION LENGTH) provided by the initiator in
the REPORT LUNS CDB. If the Expected Data Transfer Length the REPORT LUNS CDB. If the Expected Data Transfer Length
(EDTL) in the iSCSI header of the SCSI Command PDU for a REPORT (EDTL) in the iSCSI header of the SCSI Command PDU for a REPORT
LUNS command is set to at least as large as that ALLOCATION LUNS command is set to at least as large as that ALLOCATION
LENGTH, the SCSI layer truncation prevents an iSCSI Residual LENGTH, the SCSI layer truncation prevents an iSCSI Residual
Overflow from occurring. A SCSI initiator can detect that such Overflow from occurring. A SCSI initiator can detect that such
truncation has occurred via other information at the SCSI layer. truncation has occurred via other information at the SCSI layer.
The rest of the section elaborates this required behavior. The rest of the section elaborates this required behavior.
skipping to change at page 7, line 48 skipping to change at page 10, line 12
Buffer" when the number of bytes specified by the ALLOCATION Buffer" when the number of bytes specified by the ALLOCATION
LENGTH field have been transferred. LENGTH field have been transferred.
Therefore, in response to a REPORT LUNS command, the SCSI layer Therefore, in response to a REPORT LUNS command, the SCSI layer
at the target presents at most ALLOCATION LENGTH bytes of data at the target presents at most ALLOCATION LENGTH bytes of data
(logical unit inventory) to iSCSI for transfer to the initiator. (logical unit inventory) to iSCSI for transfer to the initiator.
For a REPORT LUNS command, if the iSCSI EDTL is at least as For a REPORT LUNS command, if the iSCSI EDTL is at least as
large as the ALLOCATION LENGTH, the SCSI truncation ensures that large as the ALLOCATION LENGTH, the SCSI truncation ensures that
the EDTL will accommodate all of the data to be transferred. If the EDTL will accommodate all of the data to be transferred. If
all of the logical unit inventory data presented to the iSCSI all of the logical unit inventory data presented to the iSCSI
layer i.e. the data remaining after any SCSI truncation - is layer - i.e. the data remaining after any SCSI truncation - is
transferred to the initiator by the iSCSI layer, an iSCSI transferred to the initiator by the iSCSI layer, an iSCSI
Residual Overflow has not occurred and the iSCSI (O) bit MUST Residual Overflow has not occurred and the iSCSI (O) bit MUST
NOT be set in the SCSI Response or final SCSI Data-Out PDU. NOT be set in the SCSI Response or final SCSI Data-Out PDU.
This is not a new requirement but is already required by the This is not a new requirement but is already required by the
combination of [RFC 3720] with the specification of the REPORT combination of [RFC 3720] with the specification of the REPORT
LUNS command in [SPC3]. If the iSCSI EDTL is larger than the LUNS command in [SPC3]. If the iSCSI EDTL is larger than the
ALLOCATION LENGTH however in this scenario, note that the iSCSI ALLOCATION LENGTH however in this scenario, note that the iSCSI
Underflow MUST be signaled in the SCSI Response PDU. An iSCSI Underflow MUST be signaled in the SCSI Response PDU. An iSCSI
Underflow MUST also be signaled when the iSCSI EDTL is equal to Underflow MUST also be signaled when the iSCSI EDTL is equal to
ALLOCATION LENGTH but the logical unit inventory data presented ALLOCATION LENGTH but the logical unit inventory data presented
skipping to change at page 8, line 38 skipping to change at page 10, line 46
Section 10.8 in [RFC3720] says the following: Section 10.8 in [RFC3720] says the following:
The target may send several R2T PDUs. It, therefore, can have The target may send several R2T PDUs. It, therefore, can have
a number of pending data transfers. The number of outstanding a number of pending data transfers. The number of outstanding
R2T PDUs are limited by the value of the negotiated key R2T PDUs are limited by the value of the negotiated key
MaxOutstandingR2T. Within a connection, outstanding R2Ts MUST MaxOutstandingR2T. Within a connection, outstanding R2Ts MUST
be fulfilled by the initiator in the order in which they were be fulfilled by the initiator in the order in which they were
received. received.
The quoted [RFC3720] text was unclear on the scope of The quoted [RFC3720] text was unclear on the scope of
applicability either per task, or across all tasks on a applicability - either per task, or across all tasks on a
connection and may be interpreted as either. This section is connection - and may be interpreted as either. This section is
intended to clarify that the scope of applicability of the intended to clarify that the scope of applicability of the
quoted text is a task. No R2T ordering relationship either in quoted text is a task. No R2T ordering relationship - either in
generation at the target or in fulfilling at the initiator generation at the target or in fulfilling at the initiator -
across tasks is implied. I.e., outstanding R2Ts within a task across tasks is implied. I.e., outstanding R2Ts within a task
MUST be fulfilled by the initiator in the order in which they MUST be fulfilled by the initiator in the order in which they
were received on a connection. were received on a connection.
3.3 SCSI Protocol Interface Model for Response Ordering 3.3 SCSI Protocol Interface Model for Response Ordering
Whenever an iSCSI session is composed of multiple connections, Whenever an iSCSI session is composed of multiple connections,
the Response PDUs (task responses or TMF responses) originating the Response PDUs (task responses or TMF responses) originating
in the target SCSI layer are distributed onto the multiple in the target SCSI layer are distributed onto the multiple
connections by the target iSCSI layer according to iSCSI connections by the target iSCSI layer according to iSCSI
connection allegiance rules. This process generally may not connection allegiance rules. This process generally may not
preserve the ordering of the responses by the time they are preserve the ordering of the responses by the time they are
delivered to the initiator SCSI layer. Since ordering is not delivered to the initiator SCSI layer. Since ordering is not
expected across SCSI responses anyway, this approach works fine expected across SCSI responses anyway, this approach works fine
in the general case. However to address the special cases where in the general case. However to address the special cases where
some ordering is desired by the SCSI layer, the following SCSI some ordering is desired by the SCSI layer, the following SCSI
protocol interface model is assumed. protocol interface model is assumed.
skipping to change at page 9, line 40 skipping to change at page 11, line 47
(2) Response with Response Fence MUST chronologically be (2) Response with Response Fence MUST chronologically be
delivered prior to all the "following" responses on the delivered prior to all the "following" responses on the
I_T_L nexus. I_T_L nexus.
The "preceding" and "following" notions refer to the order of The "preceding" and "following" notions refer to the order of
hand-off of a response message from the target SCSI protocol hand-off of a response message from the target SCSI protocol
layer to the target SCSI transport (e.g. iSCSI) layer. layer to the target SCSI transport (e.g. iSCSI) layer.
3.3.2 iSCSI Semantics with the Interface Model 3.3.2 iSCSI Semantics with the Interface Model
The target iSCSI layer MUST do the following on sensing the Whenever the TaskReporting key (section 9.1) is negotiated to
"Response Fence" flag associated with a response being handed ResponseFence or FastAbort for an iSCSI session, the target
down from the target SCSI layer: iSCSI layer MUST perform the actions described in this section
on all tasks related to that session. A target iSCSI layer MUST
do the following on sensing the "Response Fence" flag associated
with a response being handed down from the target SCSI layer:
a) If it is a single-connection session, no special processing a) If it is a single-connection session, no special processing
is required. Standard SCSI Response PDU build process is required. Standard SCSI Response PDU build process
happens. happens.
b) If it is a multi-connection session, target iSCSI layer b) If it is a multi-connection session, target iSCSI layer
takes note of last-sent and unacknowledged StatSN on each takes note of last-sent and unacknowledged StatSN on each
of the connections in the iSCSI session, and waits for of the connections in the iSCSI session, and waits for
acknowledgement (may solicit for acknowledgement by way of acknowledgement (SHOULD solicit for acknowledgement by way
a Nop-In) of each such StatSN to clear the fence. SCSI of a Nop-In) of each such StatSN to clear the fence. SCSI
response with the Response Fence flag must be sent to the response with the Response Fence flag must be sent to the
initiator only after receiving acknowledgements for each of initiator only after receiving acknowledgements for each of
the unacknowledged StatSNs. the unacknowledged StatSNs.
c) Target iSCSI layer must wait for an acknowledgement of the c) Target iSCSI layer must wait for an acknowledgement of the
SCSI Response PDU that carried the response which the SCSI Response PDU that carried the response which the
target SCSI layer marked with the Response Fence flag. The target SCSI layer marked with the Response Fence flag. The
fence must be considered cleared after receiving the fence must be considered cleared after receiving the
acknowledgement. acknowledgement.
skipping to change at page 10, line 27 skipping to change at page 12, line 38
queued at the iSCSI layer until the fence is cleared. queued at the iSCSI layer until the fence is cleared.
3.3.3 Current List of Fenced Response Use Cases 3.3.3 Current List of Fenced Response Use Cases
This section lists the fenced response use cases that iSCSI This section lists the fenced response use cases that iSCSI
implementations must comply with. However, this is not an implementations must comply with. However, this is not an
exhaustive enumeration. It is expected that as SCSI protocol exhaustive enumeration. It is expected that as SCSI protocol
specifications evolve, the specifications will specify when specifications evolve, the specifications will specify when
response fencing is required on a case-by-case basis. response fencing is required on a case-by-case basis.
Response Fence flag MUST be assumed set by the target SCSI layer Whenever the TaskReporting key (section 9.1) is negotiated to
on the following SCSI completion messages handed down to the ResponseFence or FastAbort for an iSCSI session, target iSCSI
target iSCSI layer: layer MUST assume that Response Fence flag is set by the target
SCSI layer on the following SCSI completion messages handed down
to it:
1. The first completion message carrying the UA after the 1. The first completion message carrying the UA after the
multi-task abort on issuing and third-party sessions. multi-task abort on issuing and third-party sessions.
2. The TMF Response carrying the mult-task TMF Response on the 2. The TMF Response carrying the multi-task TMF Response on
issuing session. the issuing session.
3. The completion message indicating ACA establishment on the 3. The completion message indicating ACA establishment on the
issuing session. issuing session.
4. The first completion message carrying the ACA ACTIVE status 4. The first completion message carrying the ACA ACTIVE status
after ACA establishment on issuing and third-party after ACA establishment on issuing and third-party
sessions. sessions.
5. The TMF Response carrying the Clear ACA response on the 5. The TMF Response carrying the Clear ACA response on the
issuing session. issuing session.
6. The response to a PERSISTENT RESERVE OUT/PREEMPT AND ABORT
command
Note: Due to the absence of ACA-related fencing requirements in Note: Due to the absence of ACA-related fencing requirements in
[RFC3720], initiator implementations SHOULD NOT use ACA on [RFC3720], initiator implementations SHOULD NOT use ACA on
multi-connection iSCSI sessions to targets complying only with multi-connection iSCSI sessions to targets complying only with
[RFC3720], i.e. those not complying with this document. [RFC3720]. Initiators which want to employ ACA on multi-
Initiators may assess target compliance to this document via connection iSCSI sessions SHOULD first assess response fencing
negotiating for FastMultiTaskAbort (section 9.1) key. behavior via negotiating for ResponseFence or FastAbort values
for the TaskReporting (section 9.1) key.
4 Task Management 4 Task Management
4.1 Requests Affecting Multiple Tasks 4.1 Requests Affecting Multiple Tasks
This section clarifies and updates the original text in section This section clarifies and updates the original text in section
10.6.2 of [RFC3720]. The clarified semantics (section 4.1.2) 10.6.2 of [RFC3720]. The clarified semantics (section 4.1.2)
are a superset of the protocol behavior required in the original are a superset of the protocol behavior required in the original
text and all iSCSI implementations MUST support the new text and all iSCSI implementations MUST support the new
behavior. The updated semantics (section 4.1.3) on the other behavior. The updated semantics (section 4.1.3) on the other
hand are mandatory only when the new key FastMultiTaskAbort hand are mandatory only when the new key TaskReporting (section
(section 9.1) is negotiated to "Yes". 9.1) is negotiated to "FastAbort".
4.1.1 Scope of affected tasks 4.1.1 Scope of affected tasks
This section defines the notion of "affected tasks" in multi- This section defines the notion of "affected tasks" in multi-
task abort scenarios. Scope definitions in this section apply task abort scenarios. Scope definitions in this section apply
to both the clarified protocol behavior (section 4.1.2) and the to both the clarified protocol behavior (section 4.1.2) and the
updated protocol behavior (section 4.1.3). updated protocol behavior (section 4.1.3).
ABORT TASK SET: All outstanding tasks for the I_T_L nexus ABORT TASK SET: All outstanding tasks for the I_T_L nexus
identified by the LUN field in the ABORT TASK SET TMF identified by the LUN field in the ABORT TASK SET TMF
skipping to change at page 12, line 38 skipping to change at page 14, line 38
CLEAR TASK SET: All outstanding tasks in the task set for CLEAR TASK SET: All outstanding tasks in the task set for
the LU identified by the LUN field in the CLEAR TASK SET the LU identified by the LUN field in the CLEAR TASK SET
TMF Request PDU. See [SPC3] for the definition of a "task TMF Request PDU. See [SPC3] for the definition of a "task
set". set".
LOGICAL UNIT RESET: All outstanding tasks from all LOGICAL UNIT RESET: All outstanding tasks from all
initiators for the LU identified by the LUN field in the initiators for the LU identified by the LUN field in the
LOGICAL UNIT RESET Request PDU. LOGICAL UNIT RESET Request PDU.
TARGET WARM RESET/TARGET COLD RESET: All outstanding tasks TARGET WARM RESET/TARGET COLD RESET: All outstanding tasks
from all initiators across all LUs that the TMF-issuing from all initiators across all LUs to which the TMF-issuing
session has access to on the SCSI target device hosting the session has access to on the SCSI target device hosting the
iSCSI session. iSCSI session.
Usage: an "ABORT TASK SET TMF Request PDU" in the preceding text Usage: an "ABORT TASK SET TMF Request PDU" in the preceding text
is an iSCSI TMF Request PDU with the "Function" field set to is an iSCSI TMF Request PDU with the "Function" field set to
"ABORT TASK SET" as defined in [RFC3720]. Similar usage is "ABORT TASK SET" as defined in [RFC3720]. Similar usage is
employed for other scope descriptions. employed for other scope descriptions.
4.1.2 Clarified multi-task abort semantics 4.1.2 Clarified multi-task abort semantics
skipping to change at page 13, line 20 skipping to change at page 15, line 20
b. Should receive any responses that the target may provide b. Should receive any responses that the target may provide
for some tasks among the affected tasks (may process them for some tasks among the affected tasks (may process them
as usual because they are guaranteed to have as usual because they are guaranteed to have
chronologically originated prior to the TMF response). chronologically originated prior to the TMF response).
c. Should receive the TMF Response concluding all the tasks in c. Should receive the TMF Response concluding all the tasks in
the set of affected tasks. the set of affected tasks.
The target iSCSI layer: The target iSCSI layer:
a. MUST wait for all currently valid target transfer tags of a. MUST wait for responses on currently valid target transfer
the affected tasks to be responded to. tags of the affected tasks from the issuing initiator. MAY
wait for responses on currently valid target transfer tags
of the affected tasks from third-party initiators.
b. MUST wait (concurrent with the wait in Step.a) for all b. MUST wait (concurrent with the wait in Step.a) for all
commands of the affected tasks to be received based on the commands of the affected tasks to be received based on the
CmdSN ordering. SHOULD NOT wait for new commands on CmdSN ordering. SHOULD NOT wait for new commands on
third-party affected sessions - only the instantiated tasks third-party affected sessions - only the instantiated tasks
have to be considered for the purpose of determining the have to be considered for the purpose of determining the
affected tasks. In the case of target-scoped requests affected tasks. In the case of target-scoped requests
(i.e. TARGET WARM RESET and TARGET COLD RESET), all the (i.e. TARGET WARM RESET and TARGET COLD RESET), all the
commands that are not yet received on the issuing session commands that are not yet received on the issuing session
in the command stream however can be considered to have in the command stream however can be considered to have
skipping to change at page 14, line 5 skipping to change at page 16, line 5
d. MUST address the Response Fence flag on the TMF Response on d. MUST address the Response Fence flag on the TMF Response on
issuing session as defined in 3.3.2. issuing session as defined in 3.3.2.
e. MUST address the Response Fence flag on the first post-TMF e. MUST address the Response Fence flag on the first post-TMF
Response on third-party sessions as defined in 3.3.2. If Response on third-party sessions as defined in 3.3.2. If
some tasks originate from non-iSCSI I_T_L nexuses then the some tasks originate from non-iSCSI I_T_L nexuses then the
means by which the target ensures that all affected tasks means by which the target ensures that all affected tasks
have returned their status to the initiator are defined by have returned their status to the initiator are defined by
the specific non-iSCSI transport protocol(s). the specific non-iSCSI transport protocol(s).
Implementation note: Technically, the TMF servicing is complete
in Step.d. Data transfers corresponding to terminated tasks may
however still be in progress on third-party iSCSI sessions even
at the end of Step.e. TMF Response MUST NOT be sent by the
target iSCSI layer before the end of Step.d, and MAY be sent at
the end of Step.d despite these outstanding data transfers until
after Step.e.
4.1.3 Updated multi-task abort semantics 4.1.3 Updated multi-task abort semantics
Protocol behavior defined in this section MUST be implemented by Protocol behavior defined in this section MUST be implemented by
all iSCSI implementations complying with this document. all iSCSI implementations complying with this document.
Protocol behavior defined in this section MUST be exhibited by Protocol behavior defined in this section MUST be exhibited by
iSCSI implementations on an iSCSI session when they negotiate iSCSI implementations on an iSCSI session when they negotiate
the FastMultiTaskAbort (section 9.1) key to "Yes" on that the TaskReporting (section 9.1) key to "FastAbort" on that
session. The execution of ABORT TASK SET, CLEAR TASK SET, session. The execution of ABORT TASK SET, CLEAR TASK SET,
LOGICAL UNIT RESET, TARGET WARM RESET, and TARGET COLD RESET TMF LOGICAL UNIT RESET, TARGET WARM RESET, and TARGET COLD RESET TMF
Requests consists of the following sequence of actions in the Requests consists of the following sequence of actions in the
specified order on the specified party. specified order on the specified party.
The initiator iSCSI layer: The initiator iSCSI layer:
a. MUST NOT send any more Data-Out PDUs for affected tasks on a. MUST NOT send any more Data-Out PDUs for affected tasks on
the issuing connection of the issuing iSCSI session once the issuing connection of the issuing iSCSI session once
the TMF is sent to the target. the TMF is sent to the target.
b. Should receive any responses that the target may provide b. Should receive any responses that the target may provide
for some tasks among the affected tasks (may process them for some tasks among the affected tasks (may process them
as usual because they are guaranteed to have as usual because they are guaranteed to have
chronologically originated prior to the TMF response). chronologically originated prior to the TMF response).
c. MUST respond to Async Message PDU with AsyncEvent=5 as c. MUST respond to each Async Message PDU with AsyncEvent=5 as
defined in section 8.1. defined in section 8.1.
d. Should receive the TMF Response concluding all the tasks in d. Should receive the TMF Response concluding all the tasks in
the set of affected tasks. the set of affected tasks.
The target iSCSI layer: The target iSCSI layer:
a. MUST wait for all commands of the affected tasks to be a. MUST wait for all commands of the affected tasks to be
received based on the CmdSN ordering on the issuing received based on the CmdSN ordering on the issuing
session. SHOULD NOT wait for new commands on third-party session. SHOULD NOT wait for new commands on third-party
affected sessions - only the instantiated tasks have to be affected sessions - only the instantiated tasks have to be
considered for the purpose of determining the affected considered for the purpose of determining the affected
tasks. In the case of target-scoped requests (i.e. TARGET tasks. In the case of target-scoped requests (i.e. TARGET
WARM RESET and TARGET COLD RESET), all the commands that WARM RESET and TARGET COLD RESET), all the commands that
are not yet received on the issuing session in the command are not yet received on the issuing session in the command
stream however can be considered to have been received with stream can be considered to have been received with no
no command waiting period - i.e. the entire CmdSN space up command waiting period - i.e. the entire CmdSN space up to
to the CmdSN of the task management function can be the CmdSN of the task management function can be "plugged".
"plugged".
b. MUST propagate the TMF request to and receive the response b. MUST propagate the TMF request to and receive the response
from the target SCSI layer. from the target SCSI layer.
c. MUST leave all active "affected TTTs" (i.e. active TTTs c. MUST leave all active "affected TTTs" (i.e. active TTTs
associated with affected tasks) valid along with any buffer associated with affected tasks) valid.
allocations for the TTTs intact.
d. MUST generate an Asynchronous Message PDU with AsyncEvent=5 d. MUST generate an Asynchronous Message PDU with AsyncEvent=5
(section 8.1) on: (section 8.1) on:
i) each connection of each third-party session that at i) each connection of each third-party session to which at
least one affected task is allegiant to, and least one affected task is allegiant, and
ii) each connection except the non-issuing connection of the ii) each connection except the issuing connection of the
issuing session that has at least one allegiant affected issuing session that has at least one allegiant affected
task. task.
If there are multiple affected LUs (say due to a target If there are multiple affected LUs (say due to a target
reset), then one Async Message PDU MUST be sent for each reset), then one Async Message PDU MUST be sent for each
such LU on each connection that has at least one allegiant such LU on each connection that has at least one allegiant
affected task. affected task.
e. MUST address the Response Fence flag on the TMF Response on e. MUST address the Response Fence flag on the TMF Response on
issuing session as defined in 3.3.2. issuing session as defined in 3.3.2.
f. MUST address the Response Fence flag on the first post-TMF f. MUST address the Response Fence flag on the first post-TMF
Response on third-party sessions as defined in 3.3.2. If Response on third-party sessions as defined in 3.3.2. If
some tasks originate from non-iSCSI I_T_L nexuses then the some tasks originate from non-iSCSI I_T_L nexuses then the
means by which the target ensures that all affected tasks means by which the target ensures that all affected tasks
have returned their status to the initiator are defined by have returned their status to the initiator are defined by
the specific non-iSCSI transport protocol(s). the specific non-iSCSI transport protocol(s).
g. MUST free up the affected TTTs (and STags, if applicable) g. MUST free up the affected TTTs (and STags, if applicable)
and the corresponding buffers once it receives the and the corresponding buffers, if any, once it receives
associated Nop-Out acknowledgement that the initiator each associated Nop-Out acknowledgement that the initiator
generated in response to the Async Message. generated in response to each Async Message.
Implementation note: Technically, the TMF servicing is Implementation note: Technically, the TMF servicing is complete
complete in Step.e. Data transfers corresponding to terminated in Step.e. Data transfers corresponding to terminated tasks may
tasks may however still be in progress even at the end of however still be in progress even at the end of Step.f. TMF
Step.f. In the case of iSCSI/iSER, these transfers would be Response MUST NOT be sent by the target iSCSI layer before the
into tagged buffers with STags not owned by any active tasks. end of Step.e, and MAY be sent at the end of Step.e despite
Step.g specifies an event to free up the resources. A target these outstanding Data transfers until Step.g. Step.g specifies
may, on an implementation-defined internal timeout, also an event to free up any such resources that may have been
choose to drop the connections on which it did not receive the reserved to support outstanding data transfers.
expected Nop-Out acknowledgements so as to reclaim the
associated buffer, STag and TTT resources as appropriate.
4.1.3.1 Clearing effects update 4.1.3.1 Clearing effects update
Appendix F.1 of [RFC3720] specifies the clearing effects of Appendix F.1 of [RFC3720] specifies the clearing effects of
target and LU resets on "Incomplete TTTs" as "Y". This meant target and LU resets on "Incomplete TTTs" as "Y". This meant
that a target warm reset or a target cold reset or an LU reset that a target warm reset or a target cold reset or an LU reset
would clear the active TTTs upon completion. The would clear the active TTTs upon completion. The
FastMultiTaskAbort semantics defined by this section however do TaskReporting=FastAbort (section 9.1) semantics defined by this
not guarantee that the active TTTs are cleared by the end of the section however do not guarantee that the active TTTs are
reset operations. In fact, the new semantics are designed to cleared by the end of the reset operations. In fact, the new
allow clearing the TTTs in a "lazy" fashion after the TMF semantics are designed to allow clearing the TTTs in a "lazy"
Response is delivered. Thus, when FastMultiTaskAbort=Yes is fashion after the TMF Response is delivered. Thus, when
operational on a session, the clearing effects of reset TaskReporting=FastAbort is operational on a session, the
operations on "Incomplete TTTs" is "N". clearing effects of reset operations on "Incomplete TTTs" is
"N".
4.1.4 Rationale behind the new semantics 4.1.4 Implementation considerations
Both in clarified semantics (section 4.1.2) and updated
semantics (section 4.1.3), there may be outstanding data
transfers even after the TMF completion is reported on the
issuing session. In the case of iSCSI/iSER [iSER], these would
be tagged data transfers for STags not owned by any active
tasks. Whether or not real buffers support these data transfers
is implementation-dependent. However, the data transfers
logically MUST be silently discarded by the target iSCSI layer
in all cases. A target MAY, on an implementation-defined
internal timeout, also choose to drop the connections on which
it did not receive the expected Data-out sequences (section
4.1.2) or Nop-Out acknowledgements (section 4.1.3) so as to
reclaim the associated buffer, STag and TTT resources as
appropriate.
4.1.5 Rationale behind the new semantics
There are fundamentally three basic objectives behind the There are fundamentally three basic objectives behind the
semantics specified in section 4.1.2 and section 4.1.3. semantics specified in section 4.1.2 and section 4.1.3.
1. Maintaining an ordered command flow I_T nexus abstraction 1. Maintaining an ordered command flow I_T nexus abstraction
to the target SCSI layer even with multi-connection to the target SCSI layer even with multi-connection
sessions. sessions.
o Target iSCSI processing of a TMF request must maintain o Target iSCSI processing of a TMF request must maintain
the single flow illusion. Target behavior in Step.b the single flow illusion. Target behavior in Step.b
skipping to change at page 18, line 10 skipping to change at page 21, line 10
CmdSN slots and move on with TMF processing. The first CmdSN slots and move on with TMF processing. The first
objective (maintaining a single ordered command flow) is still objective (maintaining a single ordered command flow) is still
met with this optimization because target SCSI layer only sees met with this optimization because target SCSI layer only sees
ordered commands. ordered commands.
5 Discovery semantics 5 Discovery semantics
5.1 Error Recovery for Discovery Sessions 5.1 Error Recovery for Discovery Sessions
The negotiation of the key ErrorRecoveryLevel is not required The negotiation of the key ErrorRecoveryLevel is not required
for Discovery sessions i.e. for sessions that negotiated for Discovery sessions - i.e. for sessions that negotiated
"SessionType=Discovery" because the default value of 0 is "SessionType=Discovery" - because the default value of 0 is
necessary and sufficient for Discovery sessions. It is however necessary and sufficient for Discovery sessions. It is however
possible that some legacy iSCSI implementations might attempt to possible that some legacy iSCSI implementations might attempt to
negotiate the ErrorRecoveryLevel key on Discovery sessions. negotiate the ErrorRecoveryLevel key on Discovery sessions.
When such a negotiation attempt is made by the remote side, a When such a negotiation attempt is made by the remote side, a
compliant iSCSI implementation MUST propose a value of 0 (zero) compliant iSCSI implementation MUST propose a value of 0 (zero)
in response. The operational ErrorRecoveryLevel for Discovery in response. The operational ErrorRecoveryLevel for Discovery
sessions thus MUST be 0. This naturally follows from the sessions thus MUST be 0. This naturally follows from the
functionality constraints [RFC3720] imposes on Discovery functionality constraints [RFC3720] imposes on Discovery
sessions. sessions.
skipping to change at page 19, line 5 skipping to change at page 22, line 5
established without specifying a TargetName key in the established without specifying a TargetName key in the
Login Request PDU (let us call such a session an "Unnamed" Login Request PDU (let us call such a session an "Unnamed"
Discovery session), there is no Target Node context to Discovery session), there is no Target Node context to
enforce the ISID RULE. enforce the ISID RULE.
Portal Groups are defined only in the context of a Target Portal Groups are defined only in the context of a Target
Node. When the TargetName key is NULL-valued (i.e. not Node. When the TargetName key is NULL-valued (i.e. not
specified), the TargetPortalGroupTag thus cannot be specified), the TargetPortalGroupTag thus cannot be
ascertained to enforce the ISID RULE. ascertained to enforce the ISID RULE.
The following sections describe the two scenarios Named The following sections describe the two scenarios - Named
Discovery sessions and Unnamed Discovery sessions separately. Discovery sessions and Unnamed Discovery sessions - separately.
5.2.1 Unnamed Discovery Sessions 5.2.1 Unnamed Discovery Sessions
For Unnamed Discovery sessions, neither the TargetName nor the For Unnamed Discovery sessions, neither the TargetName nor the
TargetPortalGroupTag is available to the targets in order to TargetPortalGroupTag is available to the targets in order to
enforce the ISID RULE. So the following rule applies. enforce the ISID RULE. So the following rule applies.
UNNAMED ISID RULE: Targets MUST enforce the uniqueness of the UNNAMED ISID RULE: Targets MUST enforce the uniqueness of the
following 4-tuple for Unnamed Discovery sessions: following 4-tuple for Unnamed Discovery sessions:
<InitiatorName, ISID, NULL, TargetAddress>. The following <InitiatorName, ISID, NULL, TargetAddress>. The following
semantics are implied by this uniqueness requirement. semantics are implied by this uniqueness requirement.
Targets SHOULD allow concurrent establishment of one Discovery Targets SHOULD allow concurrent establishment of one Discovery
session with each of its Network Portals by the same initiator session with each of its Network Portals by the same initiator
port with a given iSCSI Node Name and an ISID. Each of the port with a given iSCSI Node Name and an ISID. Each of the
concurrent Discovery sessions, if established by the same concurrent Discovery sessions, if established by the same
initiator port to other Network Portals, MUST be treated as initiator port to other Network Portals, MUST be treated as
independent sessions i.e. one session MUST NOT reinstate the independent sessions - i.e. one session MUST NOT reinstate the
other. other.
A new Unnamed Discovery session that has a matching A new Unnamed Discovery session that has a matching
<InitiatorName, ISID, NULL, TargetAddress> to an existing <InitiatorName, ISID, NULL, TargetAddress> to an existing
discovery session MUST reinstate the existing Unnamed Discovery discovery session MUST reinstate the existing Unnamed Discovery
session. Note thus that only an Unnamed Discovery session may session. Note thus that only an Unnamed Discovery session may
reinstate an Unnamed Discovery session. reinstate an Unnamed Discovery session.
5.2.2 Named Discovery Sessions 5.2.2 Named Discovery Sessions
skipping to change at page 20, line 5 skipping to change at page 23, line 5
by the initiator and thus the target can unambiguously ascertain by the initiator and thus the target can unambiguously ascertain
the TargetPortalGroupTag as well. Since all the four elements the TargetPortalGroupTag as well. Since all the four elements
of the 4-tuple are known, the ISID RULE MUST be enforced by of the 4-tuple are known, the ISID RULE MUST be enforced by
targets with no changes from [RFC3720] semantics. A new session targets with no changes from [RFC3720] semantics. A new session
with a matching <InitiatorName, ISID, TargetName, with a matching <InitiatorName, ISID, TargetName,
TargetPortalGroupTag> thus will reinstate an existing session. TargetPortalGroupTag> thus will reinstate an existing session.
Note in this case that any new iSCSI session (Discovery or Note in this case that any new iSCSI session (Discovery or
Normal) with the matching 4-tuple may reinstate an existing Normal) with the matching 4-tuple may reinstate an existing
Named Discovery iSCSI session. Named Discovery iSCSI session.
5.3 Target PDUs during Discovery
Targets SHOULD NOT send any responses other than a Text Response
and Logout Response on a Discovery session, once in full feature
phase.
Implementation Note: A target may simply drop the connection in
a Discovery session when it would have requested a Logout via an
Async Message on Normal sessions.
6 Negotiation and Others 6 Negotiation and Others
6.1 TPGT Values 6.1 TPGT Values
SAM-2 and SAM-3 specifications incorrectly note in their [SAM2] and [SAM3] specifications incorrectly note in their
informative text that TPGT value should be non-zero, although informative text that TPGT value should be non-zero, although
[RFC3720} allows the value of zero for TPGT. This section is to [RFC3720] allows the value of zero for TPGT. This section is to
clarify that zero value is expressly allowed as a legal value clarify that zero value is expressly allowed as a legal value
for TPGT. A future revision of SAM will be corrected to address for TPGT. This discrepancy currently stands corrected in
this discrepancy. [SAM4].
6.2 Session type negotiation 6.2 SessionType Negotiation
During the Login phase, the SessionType key is offered by the During the Login phase, the SessionType key is offered by the
initiator to choose the type of session it wants to create with initiator to choose the type of session it wants to create with
the target. The target may accept or reject the offer. the target. The target may accept or reject the offer.
Depending on the type of the session, a target may decide on Depending on the type of the session, a target may decide on
resources to allocate and the security to enforce etc. for the resources to allocate and the security to enforce etc. for the
session. If the SessionType key is thus going to be offered as session. If the SessionType key is thus going to be offered as
"Discovery", it SHOULD be offered in the initial Login request "Discovery", it SHOULD be offered in the initial Login request
by the initiator. by the initiator.
skipping to change at page 22, line 5 skipping to change at page 25, line 9
MUST be considered a protocol error and handled accordingly. MUST be considered a protocol error and handled accordingly.
For all other later keys, a NotUnderstood answer concludes the For all other later keys, a NotUnderstood answer concludes the
negotiation for a negotiated key whereas for a declarative key, negotiation for a negotiated key whereas for a declarative key,
a NotUnderstood answer simply informs the declarer of lack of a NotUnderstood answer simply informs the declarer of lack of
comprehension by the receiver. In either case, a NotUnderstood comprehension by the receiver. In either case, a NotUnderstood
answer always requires that the protocol behavior associated answer always requires that the protocol behavior associated
with that key be not used within the scope of the key with that key be not used within the scope of the key
(connection/session) by either side. (connection/session) by either side.
6.4 Outstanding Negotiation Exchanges
There was some uncertainty around the number of outstanding
Login Response PDUs on a connection. [RFC3720] offers the
analogy of SCSI linked commands to Login and Text negotiations
in sections 5.3 and 10.10.3 respectively, but does not make it
fully explicit. This section is to offer a clarification in
this regard.
There MUST NOT be more than one outstanding Login Request or
Login Response or Text Request or Text Response PDU on an iSCSI
connection. An outstanding PDU in this context is one that has
not been acknowledged by the remote iSCSI side.
7 iSCSI Error Handling and Recovery 7 iSCSI Error Handling and Recovery
7.1 ITT 7.1 ITT
Section 10.19 in [RFC3720] mentions this in passing but noted Section 10.19 in [RFC3720] mentions this in passing but noted
here again for making it obvious since the semantics apply to here again for making it obvious since the semantics apply to
the initiators in general. An ITT value of 0xffffffff is the initiators in general. An ITT value of 0xffffffff is
reserved and MUST NOT be assigned for a task by the initiator. reserved and MUST NOT be assigned for a task by the initiator.
The only instance it may be seen on the wire is in a target- The only instance it may be seen on the wire is in a target-
initiated NOP-In PDU (and in the initiator response to that PDU initiated NOP-In PDU (and in the initiator response to that PDU
skipping to change at page 22, line 37 skipping to change at page 26, line 37
- NOP-In with a valid ITT (i.e. a NOP-In response) and also a - NOP-In with a valid ITT (i.e. a NOP-In response) and also a
valid TTT valid TTT
- SCSI Response PDU with Status=CHECK CONDITION, but - SCSI Response PDU with Status=CHECK CONDITION, but
DataSegmentLength = 0 DataSegmentLength = 0
7.3 Digest Errors 7.3 Digest Errors
Section 6.7 of [RFC3720] discusses digest error handling. It Section 6.7 of [RFC3720] discusses digest error handling. It
states that "No further action is necessary for initiators if the discarded states that "No further action is necessary for initiators if
PDU is an unsolicited PDU (e.g., Async, Reject)" on detecting a the discarded PDU is an unsolicited PDU (e.g., Async, Reject)"
payload digest error. This is incorrect. on detecting a payload digest error. This is incorrect.
An Asynchronous Message PDU or a Reject PDU carries the next An Asynchronous Message PDU or a Reject PDU carries the next
StatSN value on an iSCSI connection, advancing the StatSN. When StatSN value on an iSCSI connection, advancing the StatSN. When
an initiator discards one of these PDUs due to a payload digest an initiator discards one of these PDUs due to a payload digest
error, the entire PDU including the header MUST be discarded. error, the entire PDU including the header MUST be discarded.
Consequently, the initiator MUST treat the exception like a loss Consequently, the initiator MUST treat the exception like a loss
of any other solicited response PDU i.e. it MUST use one of of any other solicited response PDU - i.e. it MUST use one of
the following options noted in [RFC3720]: the following options noted in [RFC3720]:
a) Request PDU retransmission with a status SNACK. a) Request PDU retransmission with a status SNACK.
b) Logout the connection for recovery and continue the b) Logout the connection for recovery and continue the
tasks on a different connection instance. tasks on a different connection instance.
c) Logout to close the connection (abort all the commands c) Logout to close the connection (abort all the commands
associated with the connection). associated with the connection).
7.4 Message Error Checking
There has been some uncertainty on the extent to which incoming
messages have to be checked for protocol errors, beyond what is
strictly required for processing the inbound message. This
section addresses that question.
Unless [RFC3720] or this draft requires it, an iSCSI
implementation is not required to do an exhaustive protocol
conformance checking on an incoming iSCSI PDU. The iSCSI
implementation especially is not required to double-check the
remote iSCSI implementation's conformance to protocol
requirements.
8 iSCSI PDUs 8 iSCSI PDUs
8.1 Asynchronous Message 8.1 Asynchronous Message
This section defines additional semantics for the Asynchronous This section defines additional semantics for the Asynchronous
Message PDU defined in section 10.9 of [RFC3720] using the same Message PDU defined in section 10.9 of [RFC3720] using the same
conventions. conventions.
The following new legal value for AsyncEvent is defined: The following new legal value for AsyncEvent is defined:
5: all active tasks for LU with matching LUN field in the Async 5: all active tasks for LU with matching LUN field in the Async
Message PDU are being terminated. Message PDU are being terminated.
The receiving initiator iSCSI layer MUST respond this Message by The receiving initiator iSCSI layer MUST respond to this Message
taking the following steps in order. by taking the following steps in order.
i) Stop Data-Out transfers on that connection for all active i) Stop Data-Out transfers on that connection for all active
TTTs for the affected LUN quoted in the Async Message TTTs for the affected LUN quoted in the Async Message
PDU. PDU.
ii) Acknowledge the StatSN of the Async Message PDU via a ii) Acknowledge the StatSN of the Async Message PDU via a
Nop-Out PDU with ITT=0xffffffff (i.e. non-ping flavor), Nop-Out PDU with ITT=0xffffffff (i.e. non-ping flavor),
while copying the LUN field from Async Message to Nop- while copying the LUN field from Async Message to Nop-
Out. Out.
8.2 Reject
Section 10.17.1 of [RFC3720] specifies the Reject reason code of
0x0b with an explanation of "Negotiation Reset". At this point,
we do not see any legitimate iSCSI protocol use case for using
this reason code. Thus reason code 0x0b MUST be considered as
deprecated and MUST NOT be used by any new implementations.
9 Login/Text Operational Text Keys 9 Login/Text Operational Text Keys
This section follows the same conventions as section 12 of This section follows the same conventions as section 12 of
[RFC3720]. [RFC3720].
9.1 FastMultiTaskAbort 9.1 TaskReporting
Use: LO Use: LO
Senders: Initiator and Target Senders: Initiator and Target
Scope: SW Scope: SW
Irrelevant when: SessionType=Discovery Irrelevant when: SessionType=Discovery
FastMultiTaskAbort=<boolean-value> TaskReporting=<list-of-values>
Default is No. Default is Legacy.
Result function is AND. Result function is AND.
This key is used to negotiate the updated fast multi-task abort This key is used to negotiate the task completion reporting
semantics defined in section 4.1.3. By negotiating this key to semantics from the SCSI target. Following table describes the
"Yes", an initiator and a target agree that the new semantics semantics an iSCSI target MUST support for respective negotiated
MUST be used in the multi-task TMF handling situations. The key values. Whenever this key is negotiated, at least the
default is to use the [RFC3720] TMF semantics as clarified in Legacy and ResponseFence values MUST be offered as options by
the negotiation originator.
+--------------+------------------------------------------+
| Name | Description |
+--------------+------------------------------------------+
| Legacy | RFC 3720-compliant semantics. Response |
| | fencing is not guaranteed and fast |
| | completion of multi-task aborting is not |
| | supported |
+--------------+------------------------------------------+
| ResponseFence| Response Fence (section 3.3.1) semantics |
| | MUST be supported in reporting task |
| | completions |
+--------------+------------------------------------------+
| FastAbort | Updated fast multi-task abort semantics |
| | defined in section 4.1.3 MUST be |
| | supported. Support for Response Fence is|
| | implied - i.e. section 3.3.1 semantics |
| | MUST be supported as well |
+--------------+------------------------------------------+
When TaskReporting is not negotiated to FastAbort, the default
behavior is to use the [RFC3720] TMF semantics as clarified in
section 4.1.2. section 4.1.2.
10 Security Considerations 10 Security Considerations
This document does not introduce any new security considerations This document does not introduce any new security considerations
other than those already noted in [RFC3720]. Consequently, all other than those already noted in [RFC3720]. Consequently, all
the iSCSI-related security text in [RFC3723] is also directly the iSCSI-related security text in [RFC3723] is also directly
applicable to this document. applicable to this document.
11 IANA Considerations 11 IANA Considerations
This draft does not have any specific IANA considerations other This draft does not have any specific IANA considerations.
than those already noted in [RFC3720].
12 References and Bibliography 12 References and Bibliography
12.1 Normative References 12.1 Normative References
[RFC3720] Satran, J., Meth, K., Sapuntzakis, C., Chadalapaka, [RFC3720] Satran, J., Meth, K., Sapuntzakis, C., Chadalapaka,
M., and E. Zeidner, "Internet Small Computer Systems M., and E. Zeidner, "Internet Small Computer Systems
Interface (iSCSI)", RFC 3720, April 2004. Interface (iSCSI)", RFC 3720, April 2004.
[RFC3722] Bakke, M., "String Profile for Internet Small [RFC3721] Bakke, M., Hafner, J., Hufferd, J., Voruganti, K.,
Computer Systems Interface (iSCSI) Names", RFC 3722, April and M. Krueger, "Internet Small Computer Systems Interface
2004. (iSCSI) Naming and Discovery", RFC 3721, April 2004.
[RFC3723] Aboba, B., Tseng, J., Walker, J., Rangan, V., and
F. Travostino, "Securing Block Storage Protocols over IP",
RFC 3723, April 2004.
[SPC3] T10/1416-D, SCSI Primary Commands-3. [SPC3] T10/1416-D, SCSI Primary Commands-3.
[RFC2119] S. Bradner, "Key words for use in RFCs to Indicate
Requirement Levels", March 1997.
12.2 Informative References 12.2 Informative References
[RFC3721] Bakke, M., Hafner, J., Hufferd, J., Voruganti, K., [RFC3723] Aboba, B., Tseng, J., Walker, J., Rangan, V., and
and M. Krueger, "Internet Small Computer Systems Interface F. Travostino, "Securing Block Storage Protocols over IP",
(iSCSI) Naming and Discovery", RFC 3721, April 2004. RFC 3723, April 2004.
[RFC3722] Bakke, M., "String Profile for Internet Small
Computer Systems Interface (iSCSI) Names", RFC 3722, April
2004.
[iSER] Ko, M., Chadalapaka, M., Elzur, U., Shah, H., Thaler, [iSER] Ko, M., Chadalapaka, M., Elzur, U., Shah, H., Thaler,
P., J. Hufferd, "iSCSI Extensions for RDMA", IETF P., J. Hufferd, "iSCSI Extensions for RDMA", IETF Internet
Internet Draft draft-ietf-ips-iser-04.txt (work in Draft draft-ietf-ips-iser-04.txt (work in progress), June
progress), June 2005. 2005.
[RFC2119] Bradner, S. "Key Words for use in RFCs to Indicate [RFC2119] Bradner, S. "Key Words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[SAM2] ANSI X3.366-2003, SCSI Architecture Model-2 (SAM-2). [SAM2] ANSI INCITS 366-2003, SCSI Architecture Model-2 (SAM-
2).
[SAM3] ANSI INCITS 402-2005, SCSI Architecture Model-3 (SAM-
3).
[SAM4] T10 Project: 1683-D, SCSI Architecture Model-4 (SAM-
4), Work in Progress.
13 Editor's Address 13 Editor's Address
Mallikarjun Chadalapaka Mallikarjun Chadalapaka
Hewlett-Packard Company Hewlett-Packard Company
8000 Foothills Blvd. 8000 Foothills Blvd.
Roseville, CA 95747-5668, USA Roseville, CA 95747-5668, USA
Phone: +1-916-785-5621 Phone: +1-916-785-5621
E-mail: cbm@rose.hp.com E-mail: cbm@rose.hp.com
skipping to change at page 30, line 16 skipping to change at page 35, line 16
The IP Storage (ips) Working Group in the Transport Area of The IP Storage (ips) Working Group in the Transport Area of
IETF has been responsible for defining the iSCSI protocol IETF has been responsible for defining the iSCSI protocol
(apart from a host of other relevant IP Storage protocols). (apart from a host of other relevant IP Storage protocols).
The editor acknowledges the contributions of the entire The editor acknowledges the contributions of the entire
working group. working group.
The following individuals directly contributed to identifying The following individuals directly contributed to identifying
[RFC3720] issues and/or suggesting resolutions to the issues [RFC3720] issues and/or suggesting resolutions to the issues
clarified in this document: David Black (REPORT LUNS/overflow clarified in this document: David Black (REPORT LUNS/overflow
semantics, ACA semantics), Gwendal Grignou (TMF scope), Mike semantics, ACA semantics, TMF semantics), Gwendal Grignou
Ko (digest error handling for Asynchronous Message), Dmitry (TMF scope), Mike Ko (digest error handling for Asynchronous
Fomichev (reserved ITT), Bill Studenmund (residual handling, Message), Dmitry Fomichev (reserved ITT), Bill Studenmund
discovery semantics), Ken Sandars (discovery semantics), Bob (residual handling, discovery semantics), Ken Sandars
Russell (discovery semantics), Julian Satran (discovery (discovery semantics), Bob Russell (discovery semantics),
semantics), Rob Elliott (T10 liaison, R2T ordering), Joseph Julian Satran (discovery semantics), Rob Elliott (T10
Pittman(TMF scope), Somesh Gupta (multi-task abort liaison, R2T ordering), Joseph Pittman(TMF scope), Somesh
semantics). This document benefited from all these Gupta (multi-task abort semantics). This document benefited
contributions. from all these contributions.
15 Full Copyright Statement 15 Full Copyright Statement
Copyright (C) The Internet Society (2006). This document is Copyright (C) The IETF Trust (2007). This document is
subject to the rights, licenses and restrictions contained in subject to the rights, licenses and restrictions contained in
BCP 78, and except as set forth therein, the authors retain BCP 78, and except as set forth therein, the authors retain
all their rights. all their rights.
This document and the information contained herein are This document and the information contained herein are
provided on an "AS IS" basis and THE CONTRIBUTOR, THE provided on an "AS IS" basis and THE CONTRIBUTOR, THE
ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY),
THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET
DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR
OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE.
16 Intellectual Property Statement 16 Intellectual Property Statement
The IETF takes no position regarding the validity or scope of The IETF takes no position regarding the validity or scope of
any Intellectual Property Rights or other rights that might any Intellectual Property Rights or other rights that might
be claimed to pertain to the implementation or use of the be claimed to pertain to the implementation or use of the
technology described in this document or the extent to which technology described in this document or the extent to which
any license under such rights might or might not be any license under such rights might or might not be
available; nor does it represent that it has made any available; nor does it represent that it has made any
independent effort to identify any such rights. Information independent effort to identify any such rights. Information
skipping to change at page 32, line 26 skipping to change at page 37, line 26
Copies of IPR disclosures made to the IETF Secretariat and Copies of IPR disclosures made to the IETF Secretariat and
any assurances of licenses to be made available, or the any assurances of licenses to be made available, or the
result of an attempt made to obtain a general license or result of an attempt made to obtain a general license or
permission for the use of such proprietary rights by permission for the use of such proprietary rights by
implementers or users of this specification can be obtained implementers or users of this specification can be obtained
from the IETF on-line IPR repository at from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its The IETF invites any interested party to bring to its
attention any copyrights, patents or patent applications, attention any copyrights, patents or patent applications, or
or other proprietary rights that may cover technology that other proprietary rights that may cover technology that may
may be required to implement this standard. Please address be required to implement this standard. Please address the
the information to the IETF at ietf-ipr@ietf.org. information to the IETF at ietf-ipr@ietf.org.
 End of changes. 65 change blocks. 
175 lines changed or deleted 303 lines changed or added

This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/