|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [iSCSI]: Key negotiation procedure proposal
--- Luben Tuikov <luben@splentec.com> wrote:
> > > If a Responder replies with Reject, then the
> Originator
> > > SHOULD NOT renegotiate the rejected key.
> >
> > Does it mean it should not send or does it mean
> "should not send
> > with a non-reserved value"?
>
> It means that the Originator SHOULD NOT send any
> more offers. (key=another-value(s))
I knew. I should stop putting requests for more
precision in the form of questions to which I know
the answers. My fault.
> > There is the problem that it may not fit.
>
> Yes, Randy mentioned this already and gave an
> excellent
> example.
>
> Well, this is an open question. Anyone?
We can mandate that if the DataSegment does not
end with a \0 (which would mean that all included
key=value pairs are complete and terminated),
then it should not be processed yet, but the
next piece waited for to be concatenated with.
And we'd drop the need to send PDUs in the other
direction. This would be even better achieved
with a flag in the header.
I.e., if a (new) flag is set in the header of a
Text/Login Request/Response PDU, then it means
that more such PDUs are coming and their data
is to be concatenated together (once the flag
is unset in the last one) before processing.
This would in fact allow a nice separation of
the negotiation logic from the en/de-capsulator.
(For example, if willing to send lots of values,
the sender just dumps them to the encapsulator
instead of worrying how many will fit and how
many will need their state adjusted to be sent
next (can't just mark them sent yet, because
there may be surprises if they arrive)).
In general the possibility of split data is a
pain and any way to alleviate this pain would
be very welcome by many, I suspect.
> > > If an Originator finds the response to an
> offered key=value
> > > pair to be unacceptable, it SHOULD send Reject
> and close the
> > > connection.
> >
> > But then the Responder (who both Reject-ed and
> responded to the key)
> > must remember that it not only sent the key but
> also rejected the
> > key, i.e., sent a value that does not necessarily
> fit in the selection
>
> NO! it must only remember the value of the key it
> sent!
You don't have to object yet, it gets clearer at
the end of my paragraph.
> The Originator will 1) close the connection with
> Reject,
> 2) accept the value quetly. (I can know, implied
> rule 1,
> but we have to STOP somewhere or we'll never get to
> FF phase :-))
Stopping is not a problem. There is no renegotiation.
Anyway, I've lost track here a little of what you're
saying.
> > rules and which is not guaranteed to be liked by
> the Originator,
> > because if it is not liked, this Originator most
> likely will
> > send a Reject, which is not to be treated as a
> no-renegotionation
> > violation but just as a harmless little Reject.
>
> key=Reject is never considered renegotiation, since
> there is no
> valid value being offered!
For me seeing a key twice raises big red alarms.
I look at the key first, IMHO, naturally.
key=Reject is also wrong as an offer, so in order
to allow for receiving it (w/o big red alarms either
due to renegotion or due to "Reject in offer"), we
have to prepare first. So we need more state than
currently (for the ultra-fine implementations
at least). And yes, connection will have to be
closed, yet I'd like to know precisely the reason
why.
> Oh, well, there is the ``simple implementation''
> rule.
>
> Please remember that there is always the ``simple
> implementation''
> rule (compatible with ``regular implementation'').
And it is compatible with the current state of
affairs as well. In fact, it is subsumed by the
current protocol. It already allows Reject-ing a
key and then closing the connection. Wait, there
might be nuances for text vs. login. Anyway, very
minor differences if any between your "simple
implemention" and what would be currently already
allowed.
> If the people feel comfortable with the logic then,
> some
> may implement ``simple'' others may implement
> ``regular'',
> both will interoperate and will get the job done.
Yes, but "regular" could, IMO, stay as it is.
I now hold the view that there are no renegotiations
possible. If other people don't, we have to keep
asking Julian to clarify yet again and put it in a
very visible place in the draft.
> > O: k=u,v,w (I want (in order of
> preference) u, v or w)
> > R: k=Reject (But I hate all of
> those)
> > O: k=? (What do you like
> then?)
> > R: k=x,y,z (I like (in order of
> preference) x, y and z)
>
> This will never work since ``k(R) Intersection k(O)
> = Empty''.
> If it did, then O: cheated in its offer! (and should
> be banned
> from operating ;-))
I didn't say it would work. I know the intersection
is empty. I tried to show that learning what values
the other side may like is more naturally done with
inquiries than with forced depositions. The only
improvement that I see from your proposal is that in
case a value gets Reject-ed, the sender knows what
values the other side would have liked. (Because
most other things have been taken care of, I think.)
But that effect can be achieved by an inquiry, not
by protocol changes that require more state.
Martins Krikis, Intel Corp.
Disclaimer: these opinions are mine and may not
be those of my employer
__________________________________________________
Do You Yahoo!?
LAUNCH - Your Yahoo! Music Experience
http://launch.yahoo.com
Home Last updated: Thu May 23 20:18:32 2002 10278 messages in chronological order |