|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] iSCSI Change - Login phaseAfter investigating possible simplifications in the Login request/response Matthew Burbridge and I found that as we the new Login is assumed to be composed exclusively out of Login requests/responses we might want to reuse the status detail field for the T & C bits and the CNxSG fields and save the flag field for future changes. The Login request/response text attached. No other parts are affected. Comments? Julo ----------------------------------- 1.1 Login Request After establishing a TCP connection between an initiator and a target, the initiator MUST start a Login phase to gain further access to the target's resources. The Login Phase (see chapter 4) consists of a sequence of Login requests and responses) that carry the same Initiator Task Tag. Byte / 0 | 1 | 2 | 3 | / | | | | |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0| +---------------+---------------+---------------+---------------+ 0|X|I| 0x03 | Reserved | Version-max | Version-min | +---------------+---------------+---------------+---------------+ 4| Reserved | DataSegmentLength | +---------------+---------------+---------------+---------------+ 8| CID | Reserved | +---------------+---------------+---------------+---------------+ 12| ISID |TSID | +---------------+---------------+---------------+---------------+ 16| Initiator Task Tag | +---------------+---------------+---------------+---------------+ 20| Reserved | +---------------+---------------+---------------+---------------+ 24| CmdSN | +---------------+---------------+---------------+---------------+ 28| ExpStatSN or Reserved | +---------------+---------------+---------------+---------------+ 32| Reserved | +---------------+---------------+---------------+---------------+ 36| Reserved |T|C|0 0| CNxSG | Reserved | +---------------+---------------+---------------+---------------+ 40/ / +/ / +---------------+---------------+---------------+---------------+ 48/ DataSegment - Login Parameters in Text Command Format / +/ / +---------------+---------------+---------------+---------------+ 1.1.1 X - Restart Connection If this bit is set to 1 then this command is an attempt to reinstate a failed connection or a failed session. If TSID is not 0 then this is a connection restart. CID does not change and this command performs first the logout function of the old connection if an explicit logout was not performed earlier. In sessions with a single connection, this may imply the opening of a second connection with the sole purpose of cleaning-up the first. Targets should support opening a second connection even when not supporting multiple connections in full feature phase. A restart login indicates to the target that commands may be missing and therefore it MUST be issued as an immediate command. If TSID is 0 then the X bit MUST be 0. The X bit MAY be set one ONLY on the first request of the Login phase. 1.1.2 I - Immediate Login SHOULD be issued as an immediate request (I=1) except for the leading login phase in which all requests that MUST have I=0. 1.1.3 Version-max Maximum Version number supported. All Login requests within the Login phase MUST carry the same Version-max. The target MUST use the value presented with the login request with C=0 and MAY check the value when C=1. 1.1.4 Version-min Minimum Version supported The version number of the current draft is 0x2. All Login requests within the Login phase MUST carry the same Version-min. The target MUST use the value presented with the login request with C=0 and MAY check the value when C=1. 1.1.5 Connection ID - CID This is a unique ID for this connection within the session. All Login requests within the Login phase MUST carry the same CID. The target MUST use the value presented with the login request with C=0 and MAY check the value when C=1. 1.1.6 ISID This is an initiator-defined session-identifier. It MUST be the same for all connections within a session. A SCSI initiator port is uniquely identified by the value pair (InitiatorName, ISID). When a target detects an attempt to open a new session by the same SCSI initiator port (same InitiatorName and ISID) to the same target portal group it MUST close the old session and a establish a new session. All Login requests within the Login phase MUST carry the same ISID. The target MUST use the value presented with the login request with C=0 and MAY check the value when C=1. 1.1.7 TSID The TSID is a tag (set by the target) that together with the ISID identifies a unique session with the initiator. On a Login request a TSID value of 0 indicates a request to open a new session. A non zero TSID indicates a request to add a connection to an existing session. 1.1.8 CmdSN CmdSN is either the initial command sequence number of a session (for the first Login of a session - the "leading" login) or the command sequence number in the command stream (e.g., if the leading login carries the CmdSN 123 the next non-immediate command carries the number 124 etc.). 1.1.9 ExpStatSN This is ExpStatSN for the old connection. This field is valid only if the Login request restarts a connection (i.e., X bit is 1 and TSID is not zero). 1.1.10 T (Transit) Bit If set to 1 indicates that the initiator is ready to transit to next stage If the next stage part in CNxSG is FullFeaturePhase and the T bit is set to 1 then this is also indicating that the initiator is ready for the Final Login Response (see chapter 4). 1.1.11 C (Continuation) Bit If set to 1 indicates that this is not the first Login request in the Login Phase 1.1.12 CNxSG Through this field, called Current-Next Stage (CNxSG), the Login negotiation commands and responses are associated with a specific stage in the session (SecurityNegotiation, LoginOperationalNegotiation, FullPhaseOperationalNegotiations) and may indicate the next stage they want to move to (see chapter 4). The current stage is coded in bits 0-1 and the next stage in bits 2-3. The next stage value is valid only when the T bit is 1 and can be ignored otherwise. The stage codes are: - 0 - SecurityNegotiation - 1 - LoginOperationalNegotiation - 3 - FullFeaturePhase 1.1.13 Login Parameters The initiator MAY provide some basic parameters in order to enable the target to determine if the initiator may use the target's resources and the initial text parameters for the security exchange. The format of the parameters is as specified for the Text Command. Keys and their explanations are listed in the Appendixes. 1.2 Login Response The Login Response indicates the progress and/or end of the login phase. Note that after security is established, the login response is authenticated. Byte / 0 | 1 | 2 | 3 | / | | | | |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0| +---------------+---------------+---------------+---------------+ 0|1|1| 0x23 | Reserved | Version-max | Version-active| +---------------+---------------+---------------+---------------+ 4| Reserved | DataSegmentLength | +---------------+---------------+---------------+---------------+ 8| Reserved | +---------------+---------------+---------------+---------------+ 12| ISID |TSID | +---------------+---------------+---------------+---------------+ 16| Initiator Task Tag | +---------------+---------------+---------------+---------------+ 20| Reserved | +---------------+---------------+---------------+---------------+ 24| StatSN | +---------------+---------------+---------------+---------------+ 28| ExpCmdSN | +---------------+---------------+---------------+---------------+ 32| MaxCmdSN | +---------------+---------------+---------------+---------------+ 36| Status-Class | Status-Detail | Reserved | | | or | | | |T|0 0 0| CNxSG | | +---------------+---------------+---------------+---------------+ 40/ Reserved / +/ / +---------------+---------------+---------------+---------------+ 48| Digests if any... | +---------------+---------------+---------------+---------------+ / DataSegment - Login Parameters in Text Command Format / +/ / +---------------+---------------+---------------+---------------+ 1.2.1 Version-max This is the highest version number supported by the target. All Login responses within the Login phase MUST carry the same Version-max. The initiator MUST use the value presented as response to the login request with C=0 and MAY check the value otherwise. 1.2.2 Version-active Indicates the version supported (the highest version supported by the target and initiator). If the target does not support a version within the range specified by the initiator, the target rejects the login and this field indicates the lowest version supported by the target. All Login responses within the Login phase MUST carry the same Version-active. The initiator MUST use the value presented as response to the login request with C=0 and MAY check the value otherwise. 1.2.3 TSID The TSID is a tag set by the target that together with the ISID identifies a unique session with the initiator. It MUST be valid only in the final response. 1.2.4 StatSN For the first Login Response (the response to a Login Request with C=0) this is the starting status Sequence Number for the connection (the next response of any kind will carry this number + 1). This field is valid only if the Status Class is 0. 1.2.5 Status-Class and Status-Detail The Status returned in a Login Response indicates the execution status of the login phase. The status includes: Status-Class Status-Detail A 0 Status-Class indicates success. In this case, the status detail field is replaced by the T and CNxSG fields. A non-zero Status-Class indicates exception. In this case, Status-Class is sufficient for a simple initiator to use when handling errors, without having to look at the Status-Detail. The Status-Detail allows finer-grained error recovery for more sophisticated initiators, as well as better information for error logging. The status classes are as follows: 0 - Success - indicates that the iSCSI target successfully received, understood, and accepted the request. The numbering fields (StatSN, ExpCmdSN, MaxCmdSN are valid only if Status-Class is 0) and the Status-Detail is replaced by the T and CNxSG fields. 1 - Redirection - indicates that further action must be taken by the initiator to complete the request. This is usually due to the target moving to a different address. All of the redirection status class responses MUST return one or more text key parameters of the type "TargetAddress", which indicates the target's new address. 2 - Initiator Error - indicates that the initiator likely caused the error. This MAY be due to a request for a resource for which the initiator does not have permission. The request should not be tried again. 3 - Target Error - indicates that the target sees no errors in the initiator's login request, but is currently incapable of fulfilling the request. The client may re-try the same login request later. The table below shows all of the currently allocated status codes. The codes are in hexadecimal; the first byte is the status class and the second byte is the status detail. The allowable state of the Transit (T) bit in responses with each of the codes is also displayed. ----------------------------------------------------------------- Status | Code | Description |(hex) | ----------------------------------------------------------------- Success | 00xx | Login is proceeding OK (*1) ----------------------------------------------------------------- Target Moved | 0101 | The requested ITN has moved Temporarily | | temporarily to the address provided. ----------------------------------------------------------------- Target Moved | 0102 | The requested ITN has moved Permanently | | permanently to the address provided. ----------------------------------------------------------------- Initiator | 0200 | Miscellaneous iSCSI initiator Error | | errors ---------------------------------------------------------------- Authentication| 0201 | The initiator could not be Failure | | successfully authenticated. ----------------------------------------------------------------- Authorization | 0202 | The initiator is not allowed access Failure | | to the given target. ----------------------------------------------------------------- Not Found | 0203 | The requested ITN does not | | exist at this address. ----------------------------------------------------------------- Target Removed| 0204 | The requested ITN has been removed | | No forwarding address is provided. ----------------------------------------------------------------- Unsupported | 0205 | The requested iSCSI version range is Version | | not supported by the target. ----------------------------------------------------------------- Initiator | 0206 | Invalid SID - no more connections SID error | | accepted ----------------------------------------------------------------- Missing | 0207 | Missing parameters (e.g., iSCSI parameter | | Initiator and/or Target Name) ----------------------------------------------------------------- Can't include | 0208 | Target does not support session in session | | spanning to this connection (address) ----------------------------------------------------------------- Session type | 0209 | Target does not support this type of Not supported | | of session (not from this Initiator) ----------------------------------------------------------------- Target Error | 0300 | Target hardware or software error. ----------------------------------------------------------------- Service | 0301 | The iSCSI service or target is not Unavailable | | currently operational. ----------------------------------------------------------------- Out of | 0302 | The target has insufficient session, Resources | | connection, or other resources. ----------------------------------------------------------------- (*1)If the response T bit is 1 and the next stage part is FullFeaturePhase in both the request and the response) the login phase is finished and the initiator may proceed to issue SCSI commands. If the Status Class is not 0, the initiator and target MUST close the TCP connection. If the target wishes to reject the login request for more than one reason, it should return the primary reason for the rejection. 1.2.6 T (Transit) bit T bit is set to 1 as an indicator of end of stage. If the next stage part in CNxSG is FullFeaturePhase and the T bit is set to 1 then this is also the Final Login Response (see chapter 4). A T bit of 0 indicates a "partial" response, which means "more negotiation needed". A login response with a T bit set to 1 MUST NOT contain key=value pairs that may require additional answers from the initiator within the same stage.
Home Last updated: Wed Sep 05 11:17:07 2001 6349 messages in chronological order |