Yaron Sheffer writes:
> > > 1.4: "The processing of an INFORMATIONAL exchange is determined by
> > > its component payloads." Adding "The payloads are processed in
> > > strict left-to-right order" would make it deterministic, and is
> > > probably what people do today.
> > 
> > There should be no need to make the processing deterministic, as at
> > least I cannot think of case where the processing order would matter,
> > and I do not want someone to start complaining if someone process them
> > in "wrong" order.
> > 
> > I do not think the addition should be done.
> 
> I'm not convinced. CP payloads can do many things, including side
> effects on other network components. Notifications are even more
> open ended, with every IKE extension adding a new one. We should
> recommend some deterministic processing.

None of the current notifications or configuration payloads have such
deterministic processing requirements, and if some extension adds new
notifications of configuration payloads, then that document should
also add requirement for their deterministic processing.

For example in our implementation it is current impossible to process
payloads in the order they appear in the packet, as we first parse all
payloads from the packet, and during that tome process some of the
payloads (for example configration payloads, and some notify
payloads), but then for example delete payloads are processed later
during INFORMATIONAL exchange processing. Also most of the notify
payloads are processed later the initial pass just goes through those
we need to see early (for example the NAT_DETECTION_* payloads), but
some like INITIAL_CONTACT notifications are processed much later (i.e.
only after the IKE_AUTH AUTH payloads has been verified).

Adding requirement for order of payload processing would make
implementation quite a much harder, and as there is currently no
reason for it, I do not think it is good idea to add such requirement. 

> > > 2.4: this sentence is inconsistent: "The INITIAL_CONTACT
> > > notification, if sent, MUST be in the first IKE_AUTH request or
> > > response, not as a separate exchange afterwards; however,
> > > receiving parties MAY ignore it in other messages." If it MUST be
> > > only at a certain location, then it should be ignored (or even
> > > rejected) in others.
> > 
> > No. The first one says where you MUST send it, the second part says
> > what you do if someone does not follow that MUST, which tells you MAY
> > ignore it.
> > 
> > There is no inconsistancy there.
> > 
> > The text is written like this as this was changed between RFC4306 and
> > draft-ietf-ipsecme-ikev2. The RFC4306 does not specify the location,
> > but IKEv2bis does, and because of this old implementations might send
> > INITIAL_CONTACT notifications in wrong place, and the text says that
> > you are free to ignore it in those places.
> > 
> > Support for INITIAL_CONTACT is MAY anyways (both sending and
> > processing it on receive).
> > 
> > So no need to change anything there.
> > 
> OK, the original sentence would suddenly make sense if the word
> "however" were removed.

That would be ok for me.

> > > 2.8.2: we should add a sentence on what happens if the peer receives
> > > TEMPORARY_FAILURE and does not understand it (because it's new
> > > to this spec).
> > 
> > There is text for that alread which says (section 3.10.1):
> > 
> >    Types in the range 0 - 16383 are intended for reporting errors. An
> >    implementation receiving a Notify payload with one of these types
> >    that it does not recognize in a response MUST assume that the
> >    corresponding request has failed entirely.
> > 
> > So I do not see need to change the the 2.8.2. If change is needed
> > perhaps adding pointer to the 3.10.1, but I think even that is not
> > needed).
> 
> No, this is a very special case - because such implementations are
> still "RFC-compliant". So we should explain how the behavior would
> still be reasonable with such peers. 

But if someone makes special code for their implementation to
do something when it receives unknown error notify
(TEMPORARY_FAILURE), wouldn't it be better to instead make code that
understands the notify...

I mean the current code out there following the RFC4306 should be ok,
with new error codes. If it is changed in any way it should be changed
to send and understand TEMPORARY_FAILURE, not to add some special case
for unknown notifications.

Or are you thinking we should explicitly say that "if implementations
follow that 3.10.1 MUST then they work fine when they receive
TEMPORARY_FAILURE notifications even when they do not understand it"?
-- 
kivi...@iki.fi
_______________________________________________
IPsec mailing list
IPsec@ietf.org
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to