Subject: Re: [Fwd: iSCSI - revised 2.2.4]

From: "Julian Satran" <[email-masked]>
Date: Tue, 16 Oct 2001 09:02:17 +0300

Santosh,

I suggest you read the message completely and carefully and answer 
afterwards.

Julo

Santosh Rao <[email-masked]>
Sent by: [email-masked]
15-10-01 19:13
Please respond to Santosh Rao

        To:     Julian Satran/Haifa/IBM@IBMIL
        cc:     [email-masked]
        Subject:        Re: [Fwd: iSCSI - revised 2.2.4]

Julian Satran wrote:
> 
> Santosh,
> 
> The reason I am hesitant on accepting this change proposal as is that it
> might makes the negotiation very much state dependent and different for
> keys that have a default and keys that don't have one. 

I don't see why. An initiator that receives a login response needs to
know whether to respond to a received key anyway. It does this by some
mechanism like maintaining a list of keys that it sent in its login
command. All that is required is that the initiator include those
operational keys that it sent as defaults in this list. (it needs to do
this anyway, since usage of defaults implies the initiator is offering
those key values.)

Also, when the target responds to a default offering, it is actually
sending back the result of the negotiation. What benefit exists in
having the initiator again echo this value back to the target in a
redundant round-trip ?

> In addition it may
> change login behavior for different versions of the protocol that may 
have
> different defaults. 

Again, I don't see why. The default values accepted by both sides are
the defaults of the "version active" returned in the login response.

>  I admit that it has appeal for the login (where the
> defaults are relevant) by shortening some negotiations.
> 
> However the issues it raises are multiple. Assume that you have the
> following sequence:
> 
> I->T key1=x
> T->I key1=z,key2=a
> I->T key2=b
> ....
> 
> Observe that the initiator designer was very conservative and probably
> intended to negotiate the keys one at a time
> while the target is aggressive and wants to set everything as soon as
> possible.

I don't understand how the above scenario is correct. If key2 was an
operational parameter, it already has a default defined for it, and the
initiator cannot negotiate it one at a time, since it has already made
the offer (of the default) by not sending the key explicitly.

In any case, the initiator can always re-negotiate a key by re-sending
the key again. I don't understand how the above example justifies the
need for your current model.

> 
> With the defaults rule the results are harder to define.
> 
> With the rules we have now the results are hardly dependent on sequence.
> 
> Add to this that with the new rules about PDULength exchanges are hardly
> "self contained" - i.e. key=value pairs can span sequences (that was
> another reasons I did not like this but framing at high speeds has
> precedence!).
> 
> However we might perhaps want to consider the following loose rule for
> defaults in the context of operational parameter negotiation at login 
only
> (leaving the negotiation rules as they are):
> 
> If the initiator issues a login request with the F bit set to 1 is 
assumed
> to have an imaginary content including all the operational keys that 
have a
> default value and where not sent yet by the initiator during login and
> their values set to the default value.

Julian, the login rules are already complex enough. Why do we need to
special case them further and increase the complexity ? I think login
behaviour is quite simple to understand/follow when the initiator is
considered as the originator of a key if it uses default values for that
key. 

Thanks,
Santosh

> 
> Comments?
> 
> Julo
> 
> PS - and a procedural thing - nagging me repeatedly on a subject is
> annoying and quoting the number of agreements before attempting 
different
> scenarios is even more so

It is unfortunate that you consider my polite requests to attempt to
resolve an open issue as nagging. I don't know how much more polite I
could possibly get. [and I am trying to discuss specific scenarios to
understand the issues you have with this].

> 
> 
>                     Santosh Rao
>                     <santoshr@cup.       To:     IPS Reflector 
<[email-masked]>
>                     hp.com>              cc:
>                     Sent by:             Subject:     [Fwd: iSCSI - 
revised 2.2.4]
>                     owner-ips@ece.
>                     cmu.edu
> 
> 
>                     11-10-01 01:36
>                     Please respond
>                     to Santosh Rao
> 
> 
> 
> Julian,
> 
> What is the resolution on this issue ?
> 
> - Santosh
> 
> Santosh Rao wrote:
> >
> > Julian,
> >
> > I apologize upfront for being so persistent on this.
> >
> > However, it would really help if you could give some clear example of 
a
> > scenario as to why the initiator cannot be considered the originator 
of
> > a negotiation, when it offers a key value implicitly, through the use 
of
> > a default.
> >
> > Several people on this list (Paul Konning, Sanjeev, Deva, myself, and
> > perhaps others, that I cannot recall at the moment) have asked that 
the
> > spec must not differentiate login behaviour when the initiator offers 
a
> > key explicitly vs. when it offers a key implicitly thru the use of the
> > default.
> >
> > Please help us understand the need for iscsi to distingush the login
> > behaviour in the above case. [through some tangible scenarios and
> > examples].
> >
> > Thanks,
> > Santosh
> >
> > > "Sanjeev Bhagat (TRIPACE/Zoetermeer)" wrote:
> > >
> > > Julian,
> > >
> > > I would also request an explicit definition of offering party and
> > > responding party. The current text still leaves ambiguity when 
target
> > > sends a key in response to implicit default key of the Intiator. In
> > > this case who is the offering party and who is the responding party
> > >
> > > Sanjeev
> > >
> > >      -----Original Message-----
> > >      From: Julian Satran [mailto:[email-masked]]
> > >      Sent: Friday, October 05, 2001 2:06 PM
> > >      To: [email-masked]
> > >      Subject: iSCSI - revised 2.2.4
> > >
> > >      Here is a revised (complete) part 2.2.4 based on recent
> > >      agreed changes:
> > >
> > >      1.1.1        Text Mode Negotiation
> > >
> > >      During login and thereafter some session or connection
> > >      parameters are negotiated through an exchange of textual
> > >      information.
> > >
> > >      All negotiations are stateless - i.e. the result MUST be
> > >      based only on newly exchanged values.
> > >
> > >      The general format of text negotiation is:
> > >
> > >      Originator-> <key>=<valuex>
> > >      Responder-> <key>=<valuey>|reject|NotUnderstood
> > >
> > >      The value can be a number, a single literal constant a
> > >      Boolean value (yes or no) or a list of comma separated
> > >      literal constant values.
> > >
> > >      In literal list negotiation, the originator sends for each
> > >      key a list of options (literal constants which may include
> > >      "none") in its order of preference.
> > >
> > >      The responding party answers with the first value from the
> > >      list it supports and is allowed to use for the specific
> > >      originator.
> > >
> > >      The constant "none" MUST always be used to indicate a
> > >      missing function. However, none is a valid selection only if
> > >      it is explicitly offered.
> > >
> > >      If a target is not supporting, or not allowed to use with a
> > >      specific originator, any of the offered options, it may use
> > >      the constant "reject".  The constants "none" and "reject"
> > >      are reserved and must be used only as described here.  Any
> > >      key not understood is answered with "NotUnderstood".
> > >
> > >      For numerical and single literal negotiations, the
> > >      responding party MUST respond with the required key and the
> > >      value it selects, based on the selection rule specific to
> > >      the key, becomes the negotiation result.  Selection of a
> > >      value not admissible under the selection rules is considered
> > >      a protocol error and handled accordingly.
> > >
> > >      For Boolean negotiations (keys taking the values yes or no),
> > >      the responding party MUST respond with the required key and
> > >      the result of the negotiation when the received value does
> > >      not determine that result by itself.  The last value
> > >      transmitted becomes the negotiation result.  The rules for
> > >      selecting the value to respond with are expressed as Boolean
> > >      functions of the value received and the value that the
> > >      responding party would select in the absence of knowledge of
> > >      the received value.
> > >
> > >      Specifically, the two cases in which responses are OPTIONAL
> > >      are:
> > >
> > >      - The Boolean function is "AND" and the value "no" is
> > >      received. The outcome of the negotiation is "no".
> > >      - The Boolean function is "OR" and the value "yes" is
> > >      received. The outcome of the negotiation is "yes".
> > >
> > >      Responses are REQUIRED in all other cases, and the value
> > >      chosen and sent by the responder becomes the outcome of the
> > >      negotiation.
> > >
> > >      The value "?" with any key has the meaning of enquiry and
> > >      should be answered with the current value or
> > >      "NotUnderstood".
> > >
> > >      The target may offer key=value pairs of its own. Target
> > >      requests are not limited to matching key=value pairs as
> > >      offered by the initiator.  However, only the initiator can
> > >      initiate the negotiation start (through the first Text
> > >      request) and completion (by setting to 1 and keeping to 1
> > >      the F bit in a Text request).
> > >
> > >      Comments ?
> > >
> > >      Julo
> >

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