|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: iSCSI: Questions For You
Howard,
Here are some answers--
On unsolicited data:
(a) Since the iSCSI specification states that the use of R2T is
required by default, to clarify R2T message usage we'd like to see the
wording in the last sentence for the description of the UseR2T key in
Appendix C changed to specifically state the following:
Before negotiating UseR2T:no, outgoing SCSI data (either immediate
data or data in a SCSI Data PDU) MUST NOT be sent unless solicited by
an R2T message. After negotiating UseR2T:no, the data starting at
offset 0 continuing for the number of bytes specified by the initial
burst size in Mode Page 2 MUST be sent, as either immediate data, data
in a SCSI Data PDU, or some combination thereof, without waiting for
an R2T. All subsequent outgoing SCSI data for the same SCSI command
MUST be solicited by an R2T message.
It might further clarify things to define up front that ?SCSI data?
means ?data for SCSI commands?, vs. login parameters and other iSCSI
data.
<JS> Will try to make the text more clear. You are right in your
assumptions.</js>
Assuming the above is correct, this is equivalent to an implicit R2T
being sent and received at Offset 0 for ?first burst size? bytes;
adding this analogy might clarify the text. Taken with the text from
Section 2.15 (2.16 in the 12/30 draft), this implies that ?a target
SHOULD NOT issue an R2T which overlaps with (the implied R2T
corresponding to) any negotiated unsolicited data.? If the analogy is
incorrect, are there any requirements around overlapping R2Ts with
unsolicited data
<JS> this is not correct - targets are allowed to send R2T for
whenever and whatever they find appropriate and that includes
re-requesting data for failed digests (data blocks).</js>
To aid understanding, we think it would be useful to have a single
place to go for a clearly worded description of SCSI data transfers.
Rather than keeping the above text in Appendix C, we suggest combining
it with the appropriate text from the descriptions of the ?Ready To
Transfer? PDU and the ?iSCSI Full Feature Phase? into a new subsection
under Section 1.2.
<js> Will try - good idea </js>
Since R2Ts are always used for SCSI data beyond the initial burst
size, could we change ?R2T:no? to ?UnsolicitedData:yes??
(e) Typo in Section 1.2.5: ?no more unsolicited data will not be on this
connection? should probably be ?no more unsolicited data will be sent on
this connection
<js> will fix. R2T will stay </js>
Section 2.2.7 Command data. Since it is being defined specifically for the
SCSI command opcode ( 0x01 ), shouldn?t the statement concerning immediate
data be qualified with respect to the setting of the ?UseR2T? key ?
<js> will fix </js>
Potential Login deadlock ?
The iSCSI spec 02b has an example of user-password authentication in
appendix A, 05, 1st example. It shows that following successful
authentication, when the iSCSI initiator receives the StartSecure: key,
there are a series of ... prior to login accept returned from the iSCSI
target.
Section 1.2.3 iSCSI Login, paragraph 7 states:
It is expected that iSCSI parameters will be negotiated after the
security association protocol is established if there is a security
association.
The ... in the example represent the Text message negotiation of these
iSCSI parameters ( as defined by the receipt of the StartSecure: key ).
Questions:
( a ) If the iSCSI initiator doesn't have any parameters to send
after authentication, how long will the target wait for them before
giving up and retuning the "accept" Login Response ?
( b ) If the iSCSI target responds with an "accept" Login Response
quickly after sending the StartSecure: key, ending the
authentication/security exchange, a race condition may occur where the
iSCSI initiator is sending Text message(s) that have the Initiator
Task Tag = the Initiator Task Tag used during the Login message which
indicates that these Text messages are considered part of the Login
phase.
What happens then, the target believes Login is done but it receives a
Text message with the same Initiator Task Tag that was used during the
Login message, would this cause an error ? How would the iSCSI target
report the error, no iSCSI error bytes defined in the Text Response
message.
( c ) The spec allows for iSCSI parameter keys to be sent in multiple
Text messages. If these are sent within the Login phase, how does an
iSCSI target know when the last Text message has been sent from the
iSCSI initiator so that it can send the Login "accept" ?
Its not a problem if they are sent outside of the Login phase since
the target must wait for iSCSI commands anyway.
To prevent these issues, I think the "EndLogin:HERE" iSCSI key should be
created / defined. It is shown in the example in Apendix A ( iSCSI Security
). I think it should be specifically defined in Apendix C ( Login / Text
keys ).
It could be sent with the last authentication Text message if
authentication parameters are the only parameters the iSCSI initiator will
be sending which would allow an immediate Login Response by the target
after it returns the StartSecure: key.
or
If it is not included in the authentication text message, the target knows
that additional Text messages are coming so it will delay its Login
response until after the key is seen in a Text message payload.
If adopted, the specification should be clear that the EndLogin:HERE key
MUST be included in either the Login payload ( no authentication case ) or
in the last Text message sent by the iSCSI initiator to prevent a deadlock
that could occur should the iSCSI initiator not include this key in any of
its Text messages.
<js> The whole sections undergoes some cleaning including a "partial"
response and a behavior specification (command chaining) </js>
( 5 ) When can an initiator task tag value repeat, after the task
completes, or after the entire session completes ?
Section 1.2.2.1 paragraph 2 Indicates that it is for the life of the task,
but section 2.1.5 paragraph 1 indicates it is for the life of the session.
I believe the intent is for the life of the task. If it was for the life of
the session, the iSCSI initiator would have to Logout and then Login to
create a new session every time its max initiator task tag threshold was
hit. With ItagLength negotiation set to 16 bits, this would be quite often.
<js>Task tags can be reused when (after) a task is completed and the status
is acked</js>
Section 2.13 Logout Command. Shouldn?t the Logout command include the ISID
and the TSID ? The same CID may exist in an iSCSI initiator capable of
creating multiple iSCSI sessions where the only unique session parameter
may be the TSID. Although the distinction can be made at the IP layer,
shouldn?t it be discernible at the iSCSI layer ?
<js> logout can arrive only within a session so why mention it? <js>
( 7 ) Section 2.2.2 AddCDB Additional CDB length is to be added in units of
4 bytes. Does this mean to add 4 CDB bytes that you set the AddCDB field =
1, or 4 ?
<js> 4</js>
Section 2.12 NOP-In. Should bit 6 of byte 1 = ?P? ( Ping bit ) so that
paragraph 2 will work ? The specification has it set = ?0?.
<js> fixed (typo) </js>
Regards,
Julo
"Hall, Howard" <howard@pirus.com> on 03/01/2001 22:27:09
Please respond to "Hall, Howard" <howard@pirus.com>
To: Julian Satran/Haifa/IBM@IBMIL
cc:
Subject: iSCSI: Questions For You
Julian, How are you doing? I hope to see you in Orlando! Here are a few question we had for you. They are based on version 02b, but I think most of them are still relevant. Thanks!! -Howard Howard Hall Pirus Networks www.pirus.com <<Question_for_ietf_2.doc>>
Home Last updated: Tue Sep 04 01:05:59 2001 6315 messages in chronological order |