Internet Engineering Task Force (IETF) M. Chadalapaka Request for Comments: 7143 Microsoft Obsoletes: 3720, 3980, 4850, 5048 J. Satran Updates: 3721 Infinidat Ltd. Category: Standards Track K. Meth ISSN: 2070-1721 IBM D. Black EMC April 2014 Internet Small Computer System Interface (iSCSI) Protocol (Consolidated)Abstract
This document describes a transport protocol for SCSI that works on top of TCP. The iSCSI protocol aims to be fully compliant with the standardized SCSI Architecture Model (SAM-2). RFC 3720 defined the original iSCSI protocol. RFC 3721 discusses iSCSI naming examples and discovery techniques. Subsequently, RFC 3980 added an additional naming format to the iSCSI protocol. RFC 4850 followed up by adding a new public extension key to iSCSI. RFC 5048 offered a number of clarifications as well as a few improvements and corrections to the original iSCSI protocol. This document obsoletes RFCs 3720, 3980, 4850, and 5048 by consolidating them into a single document and making additional updates to the consolidated specification. This document also updates RFC 3721. The text in this document thus supersedes the text in all the noted RFCs wherever there is a difference in semantics. Status of This Memo This is an Internet Standards Track document. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7143.
Copyright Notice Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.Table of Contents
1. Introduction ...................................................11 2. Acronyms, Definitions, and Document Summary ....................11 2.1. Acronyms ..................................................11 2.2. Definitions ...............................................13 2.3. Summary of Changes ........................................19 2.4. Conventions ...............................................20 3. UML Conventions ................................................20 3.1. UML Conventions Overview ..................................20 3.2. Multiplicity Notion .......................................21 3.3. Class Diagram Conventions .................................22 3.4. Class Diagram Notation for Associations ...................23 3.5. Class Diagram Notation for Aggregations ...................24 3.6. Class Diagram Notation for Generalizations ................25 4. Overview .......................................................25 4.1. SCSI Concepts .............................................25 4.2. iSCSI Concepts and Functional Overview ....................26 4.2.1. Layers and Sessions ................................27 4.2.2. Ordering and iSCSI Numbering .......................28 4.2.2.1. Command Numbering and Acknowledging .......28 4.2.2.2. Response/Status Numbering and Acknowledging .............................32 4.2.2.3. Response Ordering .........................32 4.2.2.3.1. Need for Response Ordering .....32 4.2.2.3.2. Response Ordering Model Description ....................33 4.2.2.3.3. iSCSI Semantics with the Interface Model ............33 4.2.2.3.4. Current List of Fenced Response Use Cases .............34 4.2.2.4. Data Sequencing ...........................35
4.2.3. iSCSI Task Management ..............................36 4.2.3.1. Task Management Overview ..................36 4.2.3.2. Notion of Affected Tasks ..................36 4.2.3.3. Standard Multi-Task Abort Semantics .......37 4.2.3.4. FastAbort Multi-Task Abort Semantics ......38 4.2.3.5. Affected Tasks Shared across Standard and FastAbort Sessions ...........40 4.2.3.6. Rationale behind the FastAbort Semantics ..41 4.2.4. iSCSI Login ........................................42 4.2.5. iSCSI Full Feature Phase ...........................44 4.2.5.1. Command Connection Allegiance .............44 4.2.5.2. Data Transfer Overview ....................45 4.2.5.3. Tags and Integrity Checks .................46 4.2.5.4. SCSI Task Management during iSCSI Full Feature Phase ........................47 4.2.6. iSCSI Connection Termination .......................47 4.2.7. iSCSI Names ........................................47 4.2.7.1. iSCSI Name Properties .....................48 4.2.7.2. iSCSI Name Encoding .......................50 4.2.7.3. iSCSI Name Structure ......................51 4.2.7.4. Type "iqn." (iSCSI Qualified Name) ........52 4.2.7.5. Type "eui." (IEEE EUI-64 Format) ..........53 4.2.7.6. Type "naa." (Network Address Authority) ...54 4.2.8. Persistent State ...................................55 4.2.9. Message Synchronization and Steering ...............55 4.2.9.1. Sync/Steering and iSCSI PDU Length ........56 4.3. iSCSI Session Types .......................................56 4.4. SCSI-to-iSCSI Concepts Mapping Model ......................57 4.4.1. iSCSI Architecture Model ...........................58 4.4.2. SCSI Architecture Model ............................59 4.4.3. Consequences of the Model ..........................61 4.4.3.1. I_T Nexus State ...........................62 4.4.3.2. Reservations ..............................63 4.5. iSCSI UML Model ...........................................64 4.6. Request/Response Summary ..................................66 4.6.1. Request/Response Types Carrying SCSI Payload .......66 4.6.1.1. SCSI Command ..............................66 4.6.1.2. SCSI Response .............................66 4.6.1.3. Task Management Function Request ..........67 4.6.1.4. Task Management Function Response .........68 4.6.1.5. SCSI Data-Out and SCSI Data-In ............68 4.6.1.6. Ready To Transfer (R2T) ...................69 4.6.2. Requests/Responses Carrying SCSI and iSCSI Payload ............................................69 4.6.2.1. Asynchronous Message ......................69
4.6.3. Requests/Responses Carrying iSCSI-Only Payload .....69 4.6.3.1. Text Requests and Text Responses ..........69 4.6.3.2. Login Requests and Login Responses ........70 4.6.3.3. Logout Requests and Logout Responses ......71 4.6.3.4. SNACK Request .............................71 4.6.3.5. Reject ....................................71 4.6.3.6. NOP-Out Request and NOP-In Response .......71 5. SCSI Mode Parameters for iSCSI .................................72 6. Login and Full Feature Phase Negotiation .......................72 6.1. Text Format ...............................................73 6.2. Text Mode Negotiation .....................................76 6.2.1. List Negotiations ..................................80 6.2.2. Simple-Value Negotiations ..........................80 6.3. Login Phase ...............................................81 6.3.1. Login Phase Start ..................................84 6.3.2. iSCSI Security Negotiation .........................87 6.3.3. Operational Parameter Negotiation during the Login Phase ....................................87 6.3.4. Connection Reinstatement ...........................88 6.3.5. Session Reinstatement, Closure, and Timeout ........89 6.3.5.1. Loss of Nexus Notification ................90 6.3.6. Session Continuation and Failure ...................90 6.4. Operational Parameter Negotiation outside the Login Phase ...............................................90 7. iSCSI Error Handling and Recovery ..............................92 7.1. Overview ..................................................92 7.1.1. Background .........................................92 7.1.2. Goals ..............................................92 7.1.3. Protocol Features and State Expectations ...........93 7.1.4. Recovery Classes ...................................94 7.1.4.1. Recovery Within-command ...................95 7.1.4.2. Recovery Within-connection ................96 7.1.4.3. Connection Recovery .......................96 7.1.4.4. Session Recovery ..........................97 7.1.5. Error Recovery Hierarchy ...........................97 7.2. Retry and Reassign in Recovery ............................99 7.2.1. Usage of Retry .....................................99 7.2.2. Allegiance Reassignment ...........................100 7.3. Usage of Reject PDU in Recovery ..........................101 7.4. Error Recovery Considerations for Discovery Sessions .....102 7.4.1. ErrorRecoveryLevel for Discovery Sessions .........102 7.4.2. Reinstatement Semantics for Discovery Sessions ....102 7.4.2.1. Unnamed Discovery Sessions ...............103 7.4.2.2. Named Discovery Sessions .................103 7.4.3. Target PDUs during Discovery ......................103
7.5. Connection Timeout Management ............................104 7.5.1. Timeouts on Transport Exception Events ............104 7.5.2. Timeouts on Planned Decommissioning ...............104 7.6. Implicit Termination of Tasks ............................104 7.7. Format Errors ............................................105 7.8. Digest Errors ............................................106 7.9. Sequence Errors ..........................................107 7.10. Message Error Checking ..................................108 7.11. SCSI Timeouts ...........................................108 7.12. Negotiation Failures ....................................109 7.13. Protocol Errors .........................................110 7.14. Connection Failures .....................................110 7.15. Session Errors ..........................................111 8. State Transitions .............................................112 8.1. Standard Connection State Diagrams .......................112 8.1.1. State Descriptions for Initiators and Targets .....112 8.1.2. State Transition Descriptions for Initiators and Targets ............................114 8.1.3. Standard Connection State Diagram for an Initiator .........................................118 8.1.4. Standard Connection State Diagram for a Target ....120 8.2. Connection Cleanup State Diagram for Initiators and Targets ..............................................122 8.2.1. State Descriptions for Initiators and Targets .....124 8.2.2. State Transition Descriptions for Initiators and Targets ............................124 8.3. Session State Diagrams ...................................126 8.3.1. Session State Diagram for an Initiator ............126 8.3.2. Session State Diagram for a Target ................127 8.3.3. State Descriptions for Initiators and Targets .....129 8.3.4. State Transition Descriptions for Initiators and Targets ............................129 9. Security Considerations .......................................131 9.1. iSCSI Security Mechanisms ................................132 9.2. In-Band Initiator-Target Authentication ..................132 9.2.1. CHAP Considerations ...............................134 9.2.2. SRP Considerations ................................136 9.2.3. Kerberos Considerations ...........................136 9.3. IPsec ....................................................137 9.3.1. Data Authentication and Integrity .................137 9.3.2. Confidentiality ...................................138 9.3.3. Policy, Security Associations, and Cryptographic Key Management ......................139 9.4. Security Considerations for the X#NodeArchitecture Key ...141 9.5. SCSI Access Control Considerations .......................143
10. Notes to Implementers ........................................143 10.1. Multiple Network Adapters ...............................143 10.1.1. Conservative Reuse of ISIDs ......................143 10.1.2. iSCSI Name, ISID, and TPGT Use ...................144 10.2. Autosense and Auto Contingent Allegiance (ACA) ..........146 10.3. iSCSI Timeouts ..........................................146 10.4. Command Retry and Cleaning Old Command Instances ........147 10.5. Sync and Steering Layer, and Performance ................147 10.6. Considerations for State-Dependent Devices and Long-Lasting SCSI Operations ............................147 10.6.1. Determining the Proper ErrorRecoveryLevel ........148 10.7. Multi-Task Abort Implementation Considerations ..........149 11. iSCSI PDU Formats ............................................150 11.1. iSCSI PDU Length and Padding ............................150 11.2. PDU Template, Header, and Opcodes .......................150 11.2.1. Basic Header Segment (BHS) .......................152 11.2.1.1. I (Immediate) Bit .......................152 11.2.1.2. Opcode ..................................152 11.2.1.3. F (Final) Bit ...........................154 11.2.1.4. Opcode-Specific Fields ..................154 11.2.1.5. TotalAHSLength ..........................154 11.2.1.6. DataSegmentLength .......................154 11.2.1.7. LUN .....................................154 11.2.1.8. Initiator Task Tag ......................154 11.2.2. Additional Header Segment (AHS) ..................155 11.2.2.1. AHSType .................................155 11.2.2.2. AHSLength ...............................155 11.2.2.3. Extended CDB AHS ........................156 11.2.2.4. Bidirectional Read Expected Data Transfer Length AHS .....................156 11.2.3. Header Digest and Data Digest ....................156 11.2.4. Data Segment .....................................157 11.3. SCSI Command ............................................158 11.3.1. Flags and Task Attributes (Byte 1) ...............159 11.3.2. CmdSN - Command Sequence Number ..................159 11.3.3. ExpStatSN ........................................160 11.3.4. Expected Data Transfer Length ....................160 11.3.5. CDB - SCSI Command Descriptor Block ..............160 11.3.6. Data Segment - Command Data ......................161 11.4. SCSI Response ...........................................161 11.4.1. Flags (Byte 1) ...................................162 11.4.2. Status ...........................................163 11.4.3. Response .........................................163 11.4.4. SNACK Tag ........................................164
11.4.5. Residual Count ...................................164 11.4.5.1. Field Semantics .........................164 11.4.5.2. Residuals Concepts Overview .............164 11.4.5.3. SCSI REPORT LUNS Command and Residual Overflow .......................165 11.4.6. Bidirectional Read Residual Count ................166 11.4.7. Data Segment - Sense and Response Data Segment ...167 11.4.7.1. SenseLength .............................167 11.4.7.2. Sense Data ..............................168 11.4.8. ExpDataSN ........................................168 11.4.9. StatSN - Status Sequence Number ..................168 11.4.10. ExpCmdSN - Next Expected CmdSN from This Initiator .......................................169 11.4.11. MaxCmdSN - Maximum CmdSN from This Initiator ....169 11.5. Task Management Function Request ........................170 11.5.1. Function .........................................170 11.5.2. TotalAHSLength and DataSegmentLength .............173 11.5.3. LUN ..............................................173 11.5.4. Referenced Task Tag ..............................173 11.5.5. RefCmdSN .........................................174 11.5.6. ExpDataSN ........................................174 11.6. Task Management Function Response .......................175 11.6.1. Response .........................................176 11.6.2. TotalAHSLength and DataSegmentLength .............177 11.7. SCSI Data-Out and SCSI Data-In ..........................178 11.7.1. F (Final) Bit ....................................180 11.7.2. A (Acknowledge) Bit ..............................180 11.7.3. Flags (Byte 1) ...................................181 11.7.4. Target Transfer Tag and LUN ......................181 11.7.5. DataSN ...........................................182 11.7.6. Buffer Offset ....................................182 11.7.7. DataSegmentLength ................................182 11.8. Ready To Transfer (R2T) .................................183 11.8.1. TotalAHSLength and DataSegmentLength .............184 11.8.2. R2TSN ............................................184 11.8.3. StatSN ...........................................185 11.8.4. Desired Data Transfer Length and Buffer Offset ...185 11.8.5. Target Transfer Tag ..............................185 11.9. Asynchronous Message ....................................186 11.9.1. AsyncEvent .......................................187 11.9.2. AsyncVCode .......................................189 11.9.3. LUN ..............................................189 11.9.4. Sense Data and iSCSI Event Data ..................190 11.9.4.1. SenseLength .............................190
11.10. Text Request ...........................................191 11.10.1. F (Final) Bit ...................................192 11.10.2. C (Continue) Bit ................................192 11.10.3. Initiator Task Tag ..............................192 11.10.4. Target Transfer Tag .............................192 11.10.5. Text ............................................193 11.11. Text Response ..........................................194 11.11.1. F (Final) Bit ...................................194 11.11.2. C (Continue) Bit ................................195 11.11.3. Initiator Task Tag ..............................195 11.11.4. Target Transfer Tag .............................195 11.11.5. StatSN ..........................................196 11.11.6. Text Response Data ..............................196 11.12. Login Request ..........................................196 11.12.1. T (Transit) Bit .................................197 11.12.2. C (Continue) Bit ................................197 11.12.3. CSG and NSG .....................................198 11.12.4. Version .........................................198 11.12.4.1. Version-max ............................198 11.12.4.2. Version-min ............................198 11.12.5. ISID ............................................199 11.12.6. TSIH ............................................200 11.12.7. Connection ID (CID) .............................200 11.12.8. CmdSN ...........................................201 11.12.9. ExpStatSN .......................................201 11.12.10. Login Parameters ...............................201 11.13. Login Response .........................................202 11.13.1. Version-max .....................................202 11.13.2. Version-active ..................................203 11.13.3. TSIH ............................................203 11.13.4. StatSN ..........................................203 11.13.5. Status-Class and Status-Detail ..................203 11.13.6. T (Transit) Bit .................................206 11.13.7. C (Continue) Bit ................................206 11.13.8. Login Parameters ................................207 11.14. Logout Request .........................................207 11.14.1. Reason Code .....................................209 11.14.2. TotalAHSLength and DataSegmentLength ............209 11.14.3. CID .............................................210 11.14.4. ExpStatSN .......................................210 11.14.5. Implicit Termination of Tasks ...................210 11.15. Logout Response ........................................211 11.15.1. Response ........................................212 11.15.2. TotalAHSLength and DataSegmentLength ............212 11.15.3. Time2Wait .......................................212 11.15.4. Time2Retain .....................................212
11.16. SNACK Request ..........................................213 11.16.1. Type ............................................214 11.16.2. Data Acknowledgment .............................215 11.16.3. Resegmentation ..................................215 11.16.4. Initiator Task Tag ..............................216 11.16.5. Target Transfer Tag or SNACK Tag ................216 11.16.6. BegRun ..........................................216 11.16.7. RunLength .......................................216 11.17. Reject .................................................217 11.17.1. Reason ..........................................218 11.17.2. DataSN/R2TSN ....................................219 11.17.3. StatSN, ExpCmdSN, and MaxCmdSN ..................219 11.17.4. Complete Header of Bad PDU ......................219 11.18. NOP-Out ................................................220 11.18.1. Initiator Task Tag ..............................221 11.18.2. Target Transfer Tag .............................221 11.18.3. Ping Data .......................................221 11.19. NOP-In .................................................222 11.19.1. Target Transfer Tag .............................223 11.19.2. StatSN ..........................................223 11.19.3. LUN .............................................223 12. iSCSI Security Text Keys and Authentication Methods ..........223 12.1. AuthMethod ..............................................224 12.1.1. Kerberos .........................................226 12.1.2. Secure Remote Password (SRP) .....................226 12.1.3. Challenge Handshake Authentication Protocol (CHAP) ..................................228 13. Login/Text Operational Text Keys .............................229 13.1. HeaderDigest and DataDigest .............................230 13.2. MaxConnections ..........................................232 13.3. SendTargets .............................................232 13.4. TargetName ..............................................232 13.5. InitiatorName ...........................................233 13.6. TargetAlias .............................................233 13.7. InitiatorAlias ..........................................234 13.8. TargetAddress ...........................................234 13.9. TargetPortalGroupTag ....................................235 13.10. InitialR2T .............................................236 13.11. ImmediateData ..........................................236 13.12. MaxRecvDataSegmentLength ...............................237 13.13. MaxBurstLength .........................................238 13.14. FirstBurstLength .......................................238 13.15. DefaultTime2Wait .......................................239 13.16. DefaultTime2Retain .....................................239 13.17. MaxOutstandingR2T ......................................239 13.18. DataPDUInOrder .........................................240 13.19. DataSequenceInOrder ....................................240 13.20. ErrorRecoveryLevel .....................................241
13.21. SessionType ............................................241 13.22. The Private Extension Key Format .......................242 13.23. TaskReporting ..........................................242 13.24. iSCSIProtocolLevel Negotiation .........................243 13.25. Obsoleted Keys .........................................243 13.26. X#NodeArchitecture .....................................244 13.26.1. Definition ......................................244 13.26.2. Implementation Requirements .....................244 14. Rationale for Revised IANA Considerations ....................245 15. IANA Considerations ..........................................246 16. References ...................................................248 16.1. Normative References ....................................248 16.2. Informative References ..................................251 Appendix A. Examples .............................................254 A.1. Read Operation Example ....................................254 A.2. Write Operation Example ...................................255 A.3. R2TSN/DataSN Use Examples .................................256 A.3.1. Output (Write) Data DataSN/R2TSN Example ...........256 A.3.2. Input (Read) Data DataSN Example ...................257 A.3.3. Bidirectional DataSN Example .......................258 A.3.4. Unsolicited and Immediate Output (Write) Data with DataSN Example ................................259 A.4. CRC Examples ..............................................259 Appendix B. Login Phase Examples .................................261 Appendix C. SendTargets Operation ................................268 Appendix D. Algorithmic Presentation of Error Recovery Classes ..............................................272 D.1. General Data Structure and Procedure Description ..........273 D.2. Within-command Error Recovery Algorithms ..................274 D.2.1. Procedure Descriptions .............................274 D.2.2. Initiator Algorithms ...............................275 D.2.3. Target Algorithms ..................................277 D.3. Within-connection Recovery Algorithms .....................279 D.3.1. Procedure Descriptions .............................279 D.3.2. Initiator Algorithms ...............................280 D.3.3. Target Algorithms ..................................283 D.4. Connection Recovery Algorithms ............................283 D.4.1. Procedure Descriptions .............................283 D.4.2. Initiator Algorithms ...............................284 D.4.3. Target Algorithms ..................................286 Appendix E. Clearing Effects of Various Events on Targets ........288 E.1. Clearing Effects on iSCSI Objects .........................288 E.2. Clearing Effects on SCSI Objects ..........................293 Acknowledgments ..................................................294