On Mon, Jun 05, 2017 at 10:56:07AM +1200, Brian E Carpenter wrote:
> > IMHO, the discover multicast message needs to have another message element
> > which is the
> > port number to reply to. Thats assuming the reply is always TCP. If you
> > feel UDP
> > should also be an option then the discovery message should indicate the
> > desired
> > reply mode UDP/TCP and port number.
>
> We could have designed it that way but we didn't, and I don't want to make
> such
> a change in the middle of IESG discussion (unless of course we find a bug).
I have not seen yet a protocol requirement that an instance needs to find
a dynamic port that it can bind to both via UDP and via TCP. Especially
given how this requirement can be avoided by adding a simple signaling element
to the GRASP header of multicast discovery messages.
The main issue is also that unlike a lot of other features in GRASP,
this would be hard to introduce in a backward compatible fashion later:
Just for curiosity: Lets assume the messaging was changed later to:
discovery-message = [M_DISCOVERY, session-id, initiator, ?tcp-reply-port,
objective]
tcp-reply-port = port-number
a) I hope/guess that "old" GRASP implementations would skip/ignore this element
because CBOR is self-identifying and the implementation wouldn't know
this signaling element. Right ?
b) Even if a) is true, an old receiver of M_FLOOD would not be able to
respond.
Wrt to IESG: You have more experience with IESG review. If they have no concern
with
this, i leave it up to you authors how to handle this.
> > In the context of standard socket APIs, a responder can not know for
> > certain that
> > the initiator TCP port is owned by the process that initiated the discovery
> > request. The only mitigation is to
> > a) trust the GRASP daemon on the remote side.
>
> In the ACP, we can do that.
>
> > b) The remote GRASP daemon has bound to the GRASP UDP port, so discovery
> > multicast packets whose source UDP port is also the gRASP port (the
> > destination port must be the GRASP port) are trusted to have come from
> > the
> > remote GRASP daemon. And then the TCP port number in the discover message
> > is trusted.
>
> Yes, in the single-instance case. But that isn't the general case.
I am always talking about multi-instance. The difference is just
which process (ASA or GRASP) is sending the M_DISCOVERY. The TCP GRASP
connection would always be handled only by ASA processes.
> > c) GRASP daemons can use local mechanisms to ensure that the TCP port
> > indicated
> > by an ASA is also owned by the ASA (aka: the interface between an ASA
> > daemon
> > and a GRASP daemon can use a POSIX standard UNIX socket and the gRASP
> > daemon
> > creates that socket and passes it back to the ASA). That way the GRASP
> > daemon
> > knows the TCP socket port number reliably.
>
> If the discovery is executed entirely by the GRASP core, the ASA never knows
> anything about the socket. That's my preferred implementation but it
> isn't required by the protocol spec, obviously.
>
> >
> > This is all convoluted. If you are not a big fan of concoluted explanatory
> > text
> > like what i wrote up above, i can understand it. But i am not a big fan of
> > suggestive incomplete text that you have on the draft right now...
>
> Sure. And changing to to be specific that this is needed for mutiple instances
> in one node is a good idea (and is IMHO a complete explanation of why it's
> needed).
If we try to find a good place outside the main GRASP spec for this type of
explanatory text, which draft could that be ? the ASA guideline draft looked
a bit more higher layer. grasp-api draft ?
> >> No. When you discover an objective, the discovered locator is [address,
> >> protocol, port].
> >> Then there's an option on a flood to tag the flooded objective with
> >> [address, protocol, port].
> >> I just don't see the problem.
> >
> > I am talking about the protocol inside of the UDP/TCP locator.
>
> Yes, that's really the same point that Adam Roach caught. I think
> the next text will be clearer (in the description of "Locator IPv6
> address option", although it also applies to IPv4).
Thanks. I am really looking for textual clarity on two points:
a) when i look at a locator, what context will it be in ?
IMHO: its in the context of GRASP (aka "ACP" for ANI deployments), unless
it is in the objective-value, in which case its an objective local
definition.
b) How do i figure out what protocol is being run on top of of a locator ?
...It's convoluted. semantic of the objective determines it, so if the
objective
has multiple protocol options, then the objective-value has to have some
element to define
it. But there is no standard attribute for this in CDDL defined so far;-(
Aka: if we would define a standard CDDL elemnt "locator-method" that we
would
also use in BRSKI (string) that defines the different possible options for
the
protocol of the locator... that would help.
> > See your own example for BRSKI with GRASP in the ani recommendation draft.
> > What you call method = BRSKI-TLS is what i call the protocol
>
> Sure, but that's relative to a very specialised infrastructure objective.
> I regard that as an almost pathological case that needs a separate spec
> (inside BRSKI, but I havn't had time to look at the latest BRSKI).
I don't think it's pathological. Whenever an autonomic function is (also) using
some non-GRASP
protocol between its ASA, and uses GRASP to negotiate such a protocol, then we
have this
case.
> > Without that line we do not have a normative word for the parameters of
> > GRASP
> > objectives.
>
> Well, OK, but for overall consistency I think it has to be objective-value.
Ok.
> > All locators used outside of grasp-parameters MUST be from the namespace
> > GRASP is
> > running in.
>
> That's more or less what the note in "Locator Options" says. I can make it
> more
> explicit. I'm not convinced it needs a MUST though. Who can guess what people
> will invent in future?
Anything outside the objective-value is part of the GRASP spec, right ?
SO if someone invents a case for such a locator to be in a different namespace,
then
that would have to be defined in an extension/revision to GRASP, right ?
== should be correct and safe to make the statement in the GRASP spec now.
> Hmm. I have a lot of changes stacked up in the XML. I'm quite keen to
> post the draft.
Great.
Cheers
Toerless
>
> Brian
--
---
[email protected]
_______________________________________________
Anima mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/anima