rfc-7144

Internet Small Computer System Interface (iSCSI) SCSI Features Update

F. Knight, M. Chadalapaka
date2014-04 streamIETF areatsv wgstorm statusPROPOSED STANDARD pages25 canonicalhttps://www.rfc-editor.org/rfc/rfc7144 doi10.17487/RFC7144
Internet Small Computer System Interface (iSCSI) is a SCSI transport protocol that maps the SCSI family of protocols onto TCP/IP. The iSCSI protocol as specified in RFC 7143 (and as previously specified by the combination of RFC 3720 and RFC 5048) is based on the SAM-2 (SCSI Architecture Model - 2) version of the SCSI family of protocols. This document defines enhancements to the iSCSI protocol to support certain additional features of the SCSI protocol that were defined in SAM-3, SAM-4, and SAM-5.

Extracted elements (28)

design-rationale §9

iSCSIProtocolLevel values are intended to be cumulative: a future RFC assigning value 3 is expected to include all features from RFC 7144 (value 2), and the registry assignment policy requires sequential assignment coordinated with the INCITS T10 committee.

registry

design-rationale §6.4.2

The I_T NEXUS RESET response of "Function complete" may not be reliably delivered to the initiator because the target drops all connections as part of executing the function, creating an inherent delivery uncertainty for the service response.

interoperability-note §4.1

An iSCSI implementation may negotiate iSCSIProtocolLevel=2 but still respond to new task management functions with "Task management function not supported" (a SCSI error), since the key negotiation enables the iSCSI framing but not necessarily the SCSI capabilities; these are governed independently by SAM-5 and SPC-4.

interoperability-note §4.2

INCITS T10 has assigned SCSI version descriptor codes 0961h–097Fh to RFC 7144 for IANA management via iSCSIProtocolLevel values 1–31; the value 0 assignment (0960h = "iSCSI no version claimed") must not be changed in the IANA registry.

registry

normative-requirement §6.3 MUST NOT

A QUERY TASK function MUST NOT be executed on a Task Management request at the target; such a request MUST result in a Task Management response of "Function rejected" (255).

normative-requirement §5.1.1 MUST NOT

A sender MUST NOT set the PRI field to a non-zero value unless iSCSIProtocolLevel=2 has been negotiated; iSCSI targets MUST ignore this field unless iSCSIProtocolLevel=2 was negotiated.

normative-requirement §5.2.1 MUST NOT

Compliant senders MUST NOT set the Status Qualifier field to a non-zero value, and receivers MUST ignore it, unless iSCSIProtocolLevel=2 was negotiated on the session.

normative-requirement §6.3 MUST

For I_T NEXUS RESET, the target MUST drop all connections in the session over which the function is received, and MUST consider each participating connection to have immediately timed out (leading to FREE state), independent of DefaultTime2Wait and DefaultTime2Retain.

normative-requirement §6.3.3 MUST

For QUERY TASK on an immediate command, RefCmdSN MUST equal the CmdSN of the Task Management request itself; for a non-immediate command, RefCmdSN MUST be set to the CmdSN of the task identified by the Referenced Task Tag field.

normative-requirement §6.5 MUST

If an iSCSI implementation supports I_T NEXUS RESET, it MUST also support the protocol behavior defined in Sections 4.1.2 and 4.1.3 of RFC 5048 for multi-task abort operations and follow the sequence of actions described therein.

normative-requirement §4.1 MUST NOT

If iSCSIProtocolLevel=2 is negotiated, an iSCSI implementation MUST NOT reject a Task Management Function Request PDU requesting one of the new task management functions; such a reject would report an iSCSI protocol error rather than a SCSI error.

normative-requirement §7.1.1 MUST NOT

If the negotiation answer for iSCSIProtocolLevel is ignored by the acceptor or the remote endpoint returns key=NotUnderstood, features defined in RFC 7144 and any RFC requiring a value greater than 2 MUST NOT be used.

normative-requirement §4.2 MUST

If the SCSI device server returns an iSCSI version descriptor in standard INQUIRY data, the value MUST be set to the sum of the base value 0960h plus the negotiated iSCSIProtocolLevel (e.g., iSCSIProtocolLevel=2 yields 0962h).

normative-requirement §6.3 MUST

QUERY TASK MUST be issued on the same connection to which the queried task is allegiant, if that connection is still active; if the connection is being logged out, a QUERY TASK may be issued on another connection, establishing new allegiance for the command.

normative-requirement §4.1 MUST

The iSCSIProtocolLevel operational text key MUST be negotiated to a value of "2" to enable use of all features described in RFC 7144, including new PDU fields, task management functions, and extended sense data semantics.

registry

normative-requirement §6.3 MUST NOT

The new task management functions (QUERY TASK, QUERY TASK SET, I_T NEXUS RESET, QUERY ASYNCHRONOUS EVENT) MUST NOT be sent unless iSCSIProtocolLevel=2 has been negotiated; any initiator sending them MUST also support all new task management function responses.

normative-requirement §6.4.2 MUST

The Task Management Function Response of "Function succeeded" (7) MUST be supported by any initiator that sends any of the new task management functions defined in Section 6.3.

normative-requirement §5.2.2 MAY

When iSCSIProtocolLevel=2 is negotiated, the Data Segment of a SCSI Response PDU MAY contain sense data regardless of the Status field value, not only when Status is CHECK CONDITION (0x02).

protocol-element §6.4.2

A new Task Management Function Response code 7 ("Function succeeded") is added, mapping to the SAM-5 SCSI service response FUNCTION SUCCEEDED; it is returned by QUERY TASK when the task is found, by QUERY TASK SET when commands are present, and by QUERY ASYNCHRONOUS EVENT when a unit attention or deferred error is pending.

protocol-element §6.3

Four new task management function codes are added: QUERY TASK (9) — checks if a specific task is in the task set; QUERY TASK SET (10) — checks if any command is present in the task set; I_T NEXUS RESET (11) — performs an I_T nexus loss function; QUERY ASYNCHRONOUS EVENT (12) — checks for pending unit attention or deferred error.

protocol-element §5.1.1

The Command Priority (PRI) field is a four-bit field in byte 2 of the SCSI Command PDU that specifies the relative scheduling importance of a command among tasks with SIMPLE task attributes in the task set.

protocol-element §7.1.1

The iSCSIProtocolLevel operational text key negotiates protocol support levels (0–31) using the Minimum result function; value 0 = no version claimed, value 1 = RFC 7143 compliance, value 2 = RFC 7144 compliance. Default is 1; irrelevant for Discovery sessions.

registry

protocol-element §5.2.1

The Status Qualifier field is a 16-bit field at bytes 8-9 of the SCSI Response PDU that provides additional SCSI status information per SAM-5; it is only meaningful when iSCSIProtocolLevel=2 has been negotiated.

registry §9

A new "iSCSI Protocol Level" registry is created for values 0–31, with values 0 (no version claimed), 1 (RFC 7143), and 2 (RFC 7144) assigned; values 3–31 are unassigned. Allocation policy is Expert Review and Standards Action, with required coordination with the INCITS T10 committee.

registry

registry §9

A new "iSCSI Task Management Function Response Codes" registry is created for 8-bit values, recording existing RFC 7143 response codes 0–6 and 255, and adding code 7 (Function succeeded) from RFC 7144; codes 8–254 are unassigned. Allocation policy is Standards Action.

registry

registry §9

The existing "iSCSI Login/Text Keys" registry is updated to add the entry for iSCSIProtocolLevel (RFC 7144).

registry

registry §9

The existing "iSCSI Task Management Function Codes" registry is updated to add codes 9 (QUERY TASK), 10 (QUERY TASK SET), 11 (I_T NEXUS RESET), and 12 (QUERY ASYNCHRONOUS EVENT); codes 13–127 are marked Unassigned.

registry

security-consideration §8

Command priorities are relative, not absolute, and affect collections of commands rather than individual commands; if command priority is supported, it should be implemented to avoid unwanted reduction or denial of service. All security text from RFC 3723 and RFC 7143 applies to this document.

security