Subject: RE: ips : Is FirstBurstSize valid when InitialR2T=yes ?

From: "THALER,PAT (A-Roseville,ex1)" <[email-masked]>
Date: Fri, 14 Jun 2002 10:46:14 -0600

Michael, 

It doesn't matter that FirstBurstSize was negotiated but is now not used. It doesn't hurt anything for it to be sitting around with a value in it. Also, the initiator declaring that it is ready to go to Full phase does not mean that the target has to go to full feature phase. The target can still continue to negotiate and, if the target does continue (by sending T=0), the initiator can change back to T=0 in its Login Request. What would happen is:

I->T	FirstBurstSize=512; T=0; NSG=CSG;
T->I	FirstBurstSize=512; T=0; NSG=CSG;
I->T	InitialR2T=no, ImmediateData=no; T=1; NSG=FULL
T->I  InitialR2T=yes, ImmediateData=no; <declarative keys>; T=1; NSG=FULL
 or if the target still has other keys it wants to send in further PDUs or the target also originates a key this line would be
T->I InitialR2T=yes, ImmediateData=no; <declarative and originated keys>; T=0; NSG=FULL

In this latter case, the initiator might respond with T=1 if it is still ready to go to full feature phase or it might respond with T=0 if to continue the negotiation in response to the new keys it received.

When the Initiator originates keys while setting T=1; it is allowing the target to respond and is willing to go to the next phase regardless of the response.

Regards,
Pat

-----Original Message-----
From: Fischer, Michael [mailto:[email-masked]]
Sent: Wednesday, February 06, 2002 11:39 AM
To: 'Eddy Quicksall'; Santosh Rao; IPS Reflector
Subject: RE: ips : Is FirstBurstSize valid when InitialR2T=yes ?

What if the sequence is as follows:

I->T	FirstBurstSize=512; T=0; NSG=CSG;
T->I	FirstBurstSize=512; T=0; NSG=CSG;
I->T	InitialR2T=no, ImmediateData=no; T=1; NSG=FULL

If the target does not support InitialR2T=no..  Does login now fail?  There
does not seem to be a way for the target to say that it requires R2T.  Why
did the Initiator send FirstBurstSize if it was setting InitialR2T to no?
There is no negotiation with an AND function.   

Michael Fischer

-----Original Message-----
From: Eddy Quicksall [mailto:[email-masked]]
Sent: Wednesday, February 06, 2002 9:47 AM
To: Santosh Rao; IPS Reflector
Subject: RE: ips : Is FirstBurstSize valid when InitialR2T=yes ?

That is how I am interpreting it.

BTW: How about this one ...

I->T FirstBurstSize=512, InitialR2T=no, ImmediateData=no

If the target does not support InitialR2T=no, how should it respond to
FirstBurstSize?

Should the target do this (for draft >= 9)?

T->I FirstBurstSize=irrelevant, InitialR2T=yes, ImmediateData=no

Eddy

-----Original Message-----
From: Santosh Rao [mailto:[email-masked]]
Sent: Tuesday, February 05, 2002 2:56 PM
To: IPS Reflector
Subject: ips : Is FirstBurstSize valid when InitialR2T=yes ?

Hello,

Can someone clarify if the login key FirstBurstSize is valid when :
InitialR2T=yes  and ImmediateData=yes ?

i.e. if immediate data is enabled and un-solicited data is disabled
during login negotiation, is the value of FirstBurstSize received in the
login response to be interpreted ?

My current understanding is that FirstBurstSize is inclusive of the
immediate data portion, and so, if immediate data is enabled, but
un-solicited data is disabled, then, FirstBurstSize *must* be valid and
must be <= DataPDULength. (after rev 09, it would be <=
(MaxRecvPDULength - the header components size)).

For example, a target implementation may offer a FirstBurstSize <
DataPDULength, in which case, the immediate data size is the
MIN(DataPDULength, FirstBurstSize, bytes_to_send).

Can someone clarify if this is a correct interpretation or set me right
on this ?

Thanks,
Santosh

--
##################################
Santosh Rao
Software Design Engineer,
HP-UX iSCSI Driver Team,
Hewlett Packard, Cupertino.
email : [email-masked]
Phone : 408-447-3751
##################################

---

From: "THALER,PAT (A-Roseville,ex1)" <[email-masked]>
Date: Fri, 14 Jun 2002 10:52:42 -0600

Santosh,

I don't see any requirement for FirstBurstSize <= MaxRecvPDUDataSize even when InitialR2T=yes  and ImmediateData=yes. When only Immediate unsolicited data can be sent, the amount of that data is limited to the lesser of  FirstBurstSize and MaxRecvPDUDataSize. FirstBurstSize is negotiated session wide and MaxRecvPDUDataSize is connection per direction so it would be entirely reasonable to have FirstBurstSize large (or smaller) than MaxRecvPDUDataSize on some connections.

Regards,
Pat

-----Original Message-----
From: Santosh Rao [mailto:[email-masked]]
Sent: Tuesday, February 05, 2002 11:56 AM
To: IPS Reflector
Subject: ips : Is FirstBurstSize valid when InitialR2T=yes ?

Hello,

Thanks,
Santosh

---

From: "THALER,PAT (A-Roseville,ex1)" <[email-masked]>
Date: Fri, 14 Jun 2002 11:44:29 -0600

Santosh,

"Reject" is not an acceptable response in this situation. "Reject" for a numerical negotiation indicates that there was a problem with the value offered - it was out of the specified bounds.

See 4.2 "The constants "None", "Reject", "Irrelevant", and "NotUnderstood" are
reserved and must only be used as described here." and  4.2.2: "An offer of a value not admissible (e.g., not within the specified bounds) MAY be answered
with the constant "Reject" or the responder MAY select an admissible
value." (The other uses of Reject are specific to list and range negotiations.)

The offered value was within the specified bounds so it should not be rejected.

Regards,
Pat

-----Original Message-----
From: Martin, Nick [mailto:[email-masked]]
Sent: Thursday, February 07, 2002 5:38 PM
To: Eddy Quicksall
Cc: Santosh Rao; IPS Reflector
Subject: RE: ips : Is FirstBurstSize valid when InitialR2T=yes ?

<snip>
I think the value Irrelevant should be used sparingly.  In this case,
the values 512, Irrelevant, and Reject will have the same effect on
subsequent packets on the wire unless and until ImmediateData or
InitialR2T are negotiated again.  At that time the current value of
FirstBurstSize again becomes useful.  There is some rule about least
surprise which I can not quote at the moment, but given that these three
possible return values produce the same result, I would send the 512
since that will be least surprising to the initiator.

Remember that Irrelevant does not mean forgotten.  There is still a
current value in effect, even if the target chooses not to re-negotiate
it at this time.  I would not choose to refuse to accept the new value
for FirstBurstSize.  However if I wanted to so choose, I think I would
use Reject.

If the target does not support unsolicited nor immediate data and will
never use the value FirstBurstSize, it could still keep a current value
for the field.  In doing so it will be less likely to force an initiator
down a seldom trodden path.  

Thanks,
Nick

---

From: [email-masked]
Date: Fri, 14 Jun 2002 11:29:34 -0600

Nick,

It is currently (12-98) MacRecvDataSegmentLength rather than
MaxRecvPDULength.

Pat

-----Original Message-----
From: Martin, Nick [mailto:[email-masked]]
Sent: Wednesday, February 06, 2002 2:06 PM
To: Santosh Rao; IPS Reflector
Subject: RE: ips : Is FirstBurstSize valid when InitialR2T=yes ?

Santosh,

One clarification is that MaxRecvPDULength (formerly DataPDULength),
FirstBurstSize, and MaxBurstSize limit the size of the data segment or
payload portion of the PDU.  The header and digests are not counted
within these lengths.  (Also note that these are now in bytes now all
512 byte chunks.)  Their ranges are 512 to (2**24)-1.  The upper bound
corresponding to the max value which can be expressed in the 24-bit
field DataSegmentLength.  If the value is 1024, it means 1024 bytes of
data, not 1024 minus 48-byte header, minus up to two 4-byte digests.  

Compute your own overhead before negotiating the value.  One may want to
make sure all iSCSI PDUs fit within MTU.  If the MTU, the overhead of
the protocols below iSCSI, and the overhead of iSCSI are known, the
number of iSCSI data bytes that will fit in a MTU size packet can be
computed and negotiated.  It does not need to be a power of 2 nor a
multiple of 512.  A multiple of 4 is expected.

As has been pointed out some values may become unused or meaningless due
to the setting of other values.  The responder may reply with
key=irrelevant.  However I see no harm in accepting a numeric value,
although it may not be used.  The intention of the initiator may be to
replace the default value in case part or all of the negotiation for
no-unsolicited data is rejected.

It is not invalid to have FirstBurstSize less than MaxRecvPDULength and
ImmediateData=yes and InitialR2T=no.  In this case InitialR2T=no cause
no different behavior from InitialR2T=yes, since the FirstBurstSize will
always be satisfied with immediate data.  I do not think it would be
appropriate to reply InitialR2T=Irrelevant.

I think key=Irrelevant should be used when the responder is required to
reply, but can not construct a reply that makes sense.  This could be
due to something else making the key meaningless.  Examples might be a
prior FMarker=no making RFMarkInt=Irrelevant, or a prior AuthMethod=SRP
causing CHAP_A=Irrelevant.  Key=Reject may fit such cases as well or
better, if the other end should already know the prior result.

Thanks,
Nick

> Sent: Tuesday, February 05, 2002 1:56 PM
> To: IPS Reflector

---

From: "THALER,PAT (A-Roseville,ex1)" <[email-masked]>
Date: Fri, 14 Jun 2002 11:23:39 -0600

Santosh,

I strongly disagree. There is no reason that FirstBurstSize should be 0 or any other particular value if InitalR2T = yes and ImmediateData=No. It won't be used in that case so it is fine for it to remain at the default of 64k or any other allowed value. The only requirment is that the target should respond with a valid value (one that is less than the offerred value and less than MaxBurstSize) because simple-minded login code on the Initiator may check that the value follows the rules even though other keys make the value unused. The target could also respond with Irrelevant.

Pat

-----Original Message-----
From: Santosh Rao [mailto:[email-masked]]
Sent: Wednesday, February 06, 2002 1:33 PM
To: Eddy Quicksall
Cc: IPS Reflector
Subject: Re: ips : Is FirstBurstSize valid when InitialR2T=yes ?

I think this needs changing then. There's no reason the following
should'nt be allowed :

I -> T :
	InitialR2T=no
	ImmediateData=yes
	FirstBurstSize=65536

T -> I :
	InitialR2T=yes
	ImmediateData=no
	FirstBurstSize=0

Julian :
Can we change the allowed valid range for FirstBurstSize from :

FirstBurstSize=<number-512-to-(2**24-1)>

to :

FirstBurstSize=<number-0-to-(2**24-1)>

- Santosh

Eddy Quicksall wrote:
> 
> Draft 10 says:
> 
> FirstBurstSize=<number-512-to-(2**24-1)>
> 
> So that means you can't send a 0, doesn't it?
> 
> Eddy
> 
> Sent: Wednesday, February 06, 2002 3:01 PM
> To: Fischer, Michael
> Cc: 'Eddy Quicksall'; IPS Reflector
> Subject: Re: ips : Is FirstBurstSize valid when InitialR2T=yes ?
> 
> IMO, the FirstBurstSize key value negotiated during login is a don't
> care if *BOTH* immediate data and un-solicited data have been disabled.
> 
> However, if the target knows up-front that it does not support either
> immediate or un-solcited and it receives the key FirstBurstSize during
> login negotiation, it should return a 0 value as the result of the
> negotiation for FirstBurstSize.
> 
> (Note that the special semantics of 0 implying no limit is no longer
> true for FirstBurstSize and hence, the target can just return 0 iff both
> immediata data and un-solicited data are disabled in login negotiation.)
> 
> - Santosh
> 
> "Fischer, Michael" wrote:
> >

---

From: "Julian Satran" <[email-masked]>
Date: Fri, 14 Jun 2002 20:41:33 +0300

Pat,

You are fighting a very old war!
The mail you are answering is dated February 2002!

Julo

"THALER,PAT (A-Roseville,ex1)" <[email-masked]>
Sent by: [email-masked]
06/14/2002 08:23 PM
Please respond to "THALER,PAT (A-Roseville,ex1)"

        To:     Santosh Rao <[email-masked]>, Eddy Quicksall 
<[email-masked]>
        cc:     IPS Reflector <[email-masked]>
        Subject:        RE: ips : Is FirstBurstSize valid when InitialR2T=yes ?

Santosh,

I strongly disagree. There is no reason that FirstBurstSize should be 0 or 
any other particular value if InitalR2T = yes and ImmediateData=No. It 
won't be used in that case so it is fine for it to remain at the default 
of 64k or any other allowed value. The only requirment is that the target 
should respond with a valid value (one that is less than the offerred 
value and less than MaxBurstSize) because simple-minded login code on the 
Initiator may check that the value follows the rules even though other 
keys make the value unused. The target could also respond with Irrelevant.

Pat

-----Original Message-----
From: Santosh Rao [mailto:[email-masked]]
Sent: Wednesday, February 06, 2002 1:33 PM
To: Eddy Quicksall
Cc: IPS Reflector
Subject: Re: ips : Is FirstBurstSize valid when InitialR2T=yes ?

I -> T :
                 InitialR2T=no
                 ImmediateData=yes
                 FirstBurstSize=65536

T -> I :
                 InitialR2T=yes
                 ImmediateData=no
                 FirstBurstSize=0

Julian :

to :

- Santosh

---

From: [email-masked]
Date: Fri, 14 Jun 2002 11:32:44 -0600

Eddy,

It would be valid to give Irrelevant as an answer, but there is no need for
"should" or "SHOULD". It is equally valid for it to respond with a valid
number even though the number will not be used.

Pat

-----Original Message-----
From: Eddy Quicksall [mailto:[email-masked]]
Sent: Thursday, February 07, 2002 3:56 AM
To: Julian Satran; [email-masked]
Subject: RE: ips : Is FirstBurstSize valid when InitialR2T=yes ?

Given that the target can't do immediate or unsolicited, should it give
"Irrelevant" as the answer? I.e.:

T->I FirstBurstSize=Irrelevant, InitialR2T=yes, ImmediateData=no

Eddy

-----Original Message-----
From: Julian Satran [mailto:[email-masked]]
Sent: Wednesday, February 06, 2002 11:39 PM
To: [email-masked]
Subject: Re: ips : Is FirstBurstSize valid when InitialR2T=yes ?

Why should we?  The way it is the parameters can be checked without
relation one to another.
The is no logical flaw in having FirstBurstSize <> 0 and no use for it.

Julo

                    Santosh Rao

                    <santoshr@cup.       To:     Eddy Quicksall
<[email-masked]>
                    hp.com>              cc:     IPS Reflector
<[email-masked]>            
                    Sent by:             Subject:     Re: ips : Is
FirstBurstSize valid when
                    owner-ips@ece.        InitialR2T=yes ?

                    cmu.edu

                    06-02-02 23:32

I -> T :
           InitialR2T=no
           ImmediateData=yes
           FirstBurstSize=65536

T -> I :
           InitialR2T=yes
           ImmediateData=no
           FirstBurstSize=0

Julian :

to :

- Santosh