|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] iSCSI Change - Login phase
After 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 |