Internet Small Computer System Interface (iSCSI) Corrections and Clarifications
obsoleted by
- rfc-7143 — Internet Small Computer System Interface (iSCSI) Protocol (Consolidated)
updated by
- rfc-7146 — Securing Block Storage Protocols over IP: RFC 3723 Requirements Update for IPsec v3
updates
- rfc-3720 — Internet Small Computer Systems Interface (iSCSI)
Extracted elements (30)
FastAbort semantics are designed around three objectives: (1) maintaining an ordered command flow I_T nexus abstraction to the target SCSI layer; (2) ensuring the initiator never sees 'old' task responses after a TMF response; (3) draining all active TTTs corresponding to affected tasks deterministically to avoid buffer management problems, especially fatal for iSCSI/iSER implementations.
For target-scoped TMF requests (TARGET WARM/COLD RESET), the target can 'plug' the entire CmdSN space up to the TMF's CmdSN without waiting to receive outstanding commands, since all tasks will be aborted anyway — this optimization still satisfies the ordered command flow requirement.
The RFC 3720 Reject reason code 0x0b ('Negotiation Reset') is deprecated because no legitimate iSCSI protocol use case was identified for it; its removal also eliminates the 'intervening operational parameter negotiation reset' clause in RFC 3720 Section 5.4, which now refers to an impossible event.
Initiators SHOULD NOT use ACA on multi-connection iSCSI sessions to targets complying only with RFC 3720 due to the absence of ACA-related fencing requirements there. Initiators wanting ACA on multi-connection sessions SHOULD first negotiate ResponseFence or FastAbort for the TaskReporting key.
TPGT value of zero is expressly allowed as a legal value, clarifying a discrepancy in SAM-2 and SAM-3 informative text that incorrectly suggested TPGT should be non-zero; this discrepancy was corrected in SAM-4.
When a FastAbort-capable target has mixed sessions (some RFC 3720, some FastAbort) sharing affected tasks, different rules apply: for RFC 3720 issuing sessions with FastAbort third-party sessions, the target SHOULD send AsyncEvent=5 on the third-party connections; the reverse case forbids sending AsyncEvent=5.
A proposer of an iSCSI key (negotiated or declarative) in a text key exchange MUST be able to properly handle a NotUnderstood response. A NotUnderstood answer on any RFC 3720 key MUST be considered a protocol error.
A receiving initiator MUST respond to AsyncEvent=5 by: (i) stopping Data-Out transfers on that connection for all active TTTs for the affected LUN, and (ii) acknowledging the StatSN of the Async Message via a NOP-Out PDU with ITT=0xffffffff, copying the LUN field from the Async Message.
All iSCSI implementations MUST support the clarified multi-task abort semantics: the target MUST wait for responses on valid TTTs of affected tasks, MUST wait for all affected commands per CmdSN ordering, and MUST provide Response Fence behavior for the TMF Response on issuing and third-party sessions.
An ITT value of 0xffffffff is reserved and MUST NOT be assigned for a task by the initiator; it may only appear in target-initiated NOP-In PDUs and initiator responses to those PDUs.
For Named Discovery sessions, the ISID RULE MUST be enforced by targets with no changes from RFC 3720 semantics; any new iSCSI session (Discovery or Normal) with a matching 4-tuple may reinstate an existing Named Discovery session.
If a FastAbort-capable target has a third-party affected session with TaskReporting=RFC3720 and the issuing session is a FastAbort session, Asynchronous Message PDUs MUST NOT be sent on the third-party session to prompt FastAbort behavior.
If SPDTL > EDTL for a task, iSCSI Overflow MUST be signaled in the SCSI Response PDU and the Residual Count MUST be set to (SPDTL - EDTL). If SPDTL < EDTL, iSCSI Underflow MUST be signaled and Residual Count MUST be set to (EDTL - SPDTL).
Outstanding R2Ts within a task MUST be fulfilled by the initiator in the order in which they were received on a connection. No R2T ordering relationship across tasks is implied.
Reject reason code 0x0b (Negotiation Reset) MUST be considered deprecated and MUST NOT be sent; an implementation receiving it MUST treat it as a negotiation failure terminating the Login Phase and TCP connection.
Targets MUST enforce the UNNAMED ISID RULE: uniqueness of the 4-tuple <InitiatorName, ISID, NULL, TargetAddress> for Unnamed Discovery sessions. A new session with a matching tuple MUST reinstate the existing Unnamed Discovery session.
The operational ErrorRecoveryLevel for Discovery sessions MUST be 0; when a negotiation attempt is made by a legacy implementation, a compliant implementation MUST propose a value of 0 in response.
There MUST NOT be more than one outstanding Login Request, Login Response, Text Request, or Text Response PDU on an iSCSI connection at any time.
Under FastAbort semantics, the target MUST free up affected TTTs and corresponding buffers once each associated NOP-Out acknowledgement is received from the initiator in response to each Async Message PDU with AsyncEvent=5.
Under FastAbort semantics, the target MUST send an Asynchronous Message PDU with AsyncEvent=5 on each connection of each third-party session with allegiant affected tasks (where TaskReporting=FastAbort is operational) and on each non-issuing connection of the issuing session with allegiant affected tasks.
When an initiator discards an Asynchronous Message or Reject PDU due to a payload digest error, the entire PDU including the header MUST be discarded and the initiator MUST treat the exception like a loss of any other solicited response PDU, using SNACK, connection logout for recovery, or connection close.
When TaskReporting=FastAbort is operational, the initiator MUST NOT send any more Data-Out PDUs for affected tasks once the TMF is sent, MUST respond to each Async Message PDU with AsyncEvent=5, and MUST treat the TMF response as terminating all affected tasks for which responses have not been received.
Whenever Response Fence behavior is required on a multi-connection session, the target MUST wait for acknowledgement of all unacknowledged StatSNs on each connection before sending the fenced response, and MUST hold all new responses for the I_T_L nexus until the fence is cleared.
AsyncEvent=5 is a new Asynchronous Message event code meaning all active tasks for the LU identified by the LUN field in the Async Message PDU are being terminated. It MUST NOT be used unless TaskReporting=FastAbort is negotiated on the session.
TaskReporting is a new Login/Text negotiation key (scope: SW, Leading Only, irrelevant for Discovery sessions) with three values: RFC3720 (default), ResponseFence, and FastAbort. The result function is AND, and the negotiation originator MUST offer at least RFC3720 and ResponseFence.
The iSCSI Asynchronous Events registry adds AsyncEvent=5 (Task termination, this document) and reserves values 6–247 for IANA assignment; values 248–254 are vendor-unique (this document) and 255 is vendor-unique (RFC 3720).
The iSCSI Opcodes registry defines initiator opcodes (0x00–0x06, 0x10, 0x1c–0x1e) and target opcodes (0x20–0x26, 0x31–0x32, 0x3c–0x3e, 0x3f), with ranges 0x07–0x1b and 0x27–0x3b reserved to IANA, and opcode bit 2 designating initiator (0) vs. target (1) origin.
This document creates seven IANA registries: iSCSI Opcodes (1-octet values, Standards Action + Expert Review), iSCSI Login/Text Keys (UTF-8 key names, Standards Action), iSCSI Asynchronous Events (1-octet, Standards Action), iSCSI TMF Codes (7-bit, Standards Action), iSCSI Login Response Status Codes (Status-Class + Status-Detail, Standards Action), iSCSI Reject Reason Codes (1-octet, Standards Action), and iSER Opcodes (4-bit, Standards Action).
This document introduces no new security considerations beyond those in RFC 3720; all iSCSI-related security text in RFC 3723 ('Securing Block Storage Protocols over IP') applies directly to this document as well.
Response Fence state: the fence is set when a fenced SCSI response message is handed off from the SCSI layer; it is cleared only after acknowledgement of the SCSI Response PDU carrying that fenced response is received from the initiator. All subsequent I_T_L nexus responses are held until the fence clears.