Comments in line..
On 25/11/2016 09:37, Michael Richardson wrote:
>
> Brian E Carpenter <[email protected]> wrote:
> > Thanks Michael, we will wait a few more days before rolling up all
> > comments received. I am fine with most of your suggestions. A few
> > things caught my eye:
>
> Cool.
>
> >> 3.5.4.4: QUERY re: The relayed discovery message MUST have the same
> >> Session ID as the incoming discovery message and MUST be tagged with
> >> the IP address of its original initiator (see Section 3.8.4).
> >>
> >> I thought we were adding something about Link Local addresses here?
>
> > What was the point there? (Clearly, discovered link-local addresses
> > MUST NOT be sent on to another interface, is that it? But that affects
> > the Discovery Response process, not the relay process. Must check my
> > code, too...)
>
> I think that's the point. Should we even relay discovery messages from LL
> origins?
No. I definitely need to check this and add some words.
>
> >> 3.5.5: re: The details, including the distinction between dry run and
> >> an actual configuration change, will be defined separately for each
> >> type of negotiation objective.
> >>
> >> I would very much like it if dry-run/real-run request was
> >> standardized. This would make external auditing/debugging (such as
> >> via network sniffer) much easier to see.
>
> > Hmm. That needs some thought. I thought that the semantics of this was
> > very hard to capture in a generic way.
>
> > (One way would be to add a new flag value, so that an objective could
> > be labelled F_NEG for negotiation and F_NEG_DRY for dry-run
> > negotiation. That has a great advantage - it could be retrofitted any
> > time, and can be rejected with an M_INVALID by a node without dry-run
> > capability.)
>
> I very much like this.
It's low cost to add to the spec, and harmless if not used. I also think I like
it,
but what do other people think?
>
> >> 3.8.6, about:
> >>
> >>> If a node receives a Request message for an objective for which no
> >>> ASA is currently listening, it MUST immediately close the relevant
> >>> socket to indicate this to the initiator.
> >>
> >> if the time sequence is: initiator ----M_DISCOVERY---> responder
> >> (GRASP core) (UDP)
> ...> pass details to ASA
> >> initiator<----M_RESPONSE----- ASA (TCP)
> initiator-----M_REQ_NEG-----> ASA (same socket)
> >>
> >> then, according to above, why would an ASA have responded in the first
> >> place if not be the right ASA?
>
> > This covers the case where the ASA crashes at the critical moment -
> > without this provision (depending on implementation details) the socket
> > would be left hanging. Also consider that discovery results can be
> > cached, so there might be a real time gap between the M_RESPONSE and
> > the M_REQ_NEG, giving more chance that the ASA crashes or even exits
> > cleanly.
>
> So, are you saying that on some systems that the ASA could crash without
> closing the socket that is opened for the M_RESPONSE?
Yes - if the the actual listen() and accept() are in a separate thread
started by the GRASP engine, whereas the listen_negotiate() call is
in a thread started by the ASA. (I have a lot of threads and queues in
my prototype, because Python makes this extremely easy...)
> >> Can we please have an example for M_FLOOD?
> >>
> >> Is this valid:
> >>
> >> [M_FLOOD, 124567, fe80::1234, 27, [[O_IPv6_LOCATOR, fe80::1234,
> >> IPPROTO_UDP, 500]], ["ACP", flags, 1, ["bootstrap-okay"]]
>
> > I think so, but I'll need to run it through my primitive validation
> > chain...
>
> okay, I want to make sure that I understand it.
>
> >> Could an O_DIVERT occur in an M_FLOOD?
>
> > Not in the current syntax, and I'm not sure why we'd need it.
>
> I don't think we do, but I'm just asking random questions as to why not...
>
> >> Can we have more than one locator option?
>
> > No. That is a feature - if you embed multiple objectives in a single
> > M_FLOOD, they are all associated with the same locator option. If
> > that's a problem, now would be a good time to say so ;-).
>
> I think that we physically can, it's an object inside an array.
> Could we have an IPv4 and an IPv6 address? Or a UDP and a TCP locator, or...?
>
> I'm thinking about how to construct the ACP neighbour awareness M_FLOOD such
> that it can also carry the Proxy locator. I think it's probably not a
> problem, as the locator can be the Proxy locator, and the ACP is implicitely
> port-500 IKEv2, except that I'm reading the ACP document, and see that
> actually there are many options for ACP security, but I haven't gotten that
> far yet.
Right. But to be very clear, at the moment the M_FLOOD syntax is
flood-message = [M_FLOOD, session-id, initiator, ttl, (locator-option / []),
+objective]
but to associate a locator with each objective it would need to be
flood-message = [M_FLOOD, session-id, initiator, ttl, +[(locator-option / []),
objective]]
That would be more powerful for the case you describe. Since the locator
option could be a URI, it would suit EST quite well, wouldn't it?
Rgds
Brian
_______________________________________________
Anima mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/anima