Comments on three points in line:
On 01/06/2018 18:23, Toerless Eckert wrote:
> Ok, lets separate out the threads here.
>
> On Thu, May 31, 2018 at 03:35:31PM -0400, Michael Richardson wrote:
>>
>> Toerless Eckert <[email protected]> wrote:
>> > 1. The GRASP specification of 4.1.1 should only describe what is
>> required
>> > and valid for the standard of GRASP objective, which is the TCP proxy.
>>
>> > Appendix C proxy option is not full/formally worked out, thats why
>> > its in an appendix. If the authors want to propose a formal GRASP
>>
>> It's not mandatory to implement, which is why it got pushed to the appendix.
>> If it wasn't worked out, then it would be removed.
>
> Ok. *sigh*. I guess i didn't quite get that. So, if we want to make GRASP in
> BRSKI
> fwork correctly for IPinIP instead of just making it sugestive, there are a
> bunch
> of fixes necessary. Some of them where part of the shepherd review suggestion
> you dismissed as bikeshed. You didn't like the idea of using objective-value
> strings
> to identify the proxy method. But the fix i suggested also fixed other GRASP
> details.
>
> Anyhow. let me just list what i think is necessary to fi up the GRASP so it
> works
> for both TLS and IPinIP.
>
> let me know if/how i can best help to get this done,I'd be happy to write up a
> diff if we can finally get through this.
>
> Proposed changes to 4.1.1:
>
> Note: This 4.1.1 text fixes are not complete wrt. to the IPinIP port
> constraints you seem to want to have according to the 4.2 text. See below
> for the 4.2 text discus, and if thats fine with you, then of course, we
> would
> also need to incude the locator-options for permitted TCP/UDP ports of the
> IPinIP
> proxy into the 4.1.1 AN_Proxy objective, because otherwise the Pledge
> wouldn't
> know which TCP or UDP (address)/port numbers to use across the IPinIP
> proxy (i think).
>
> a) Insert after:
> | A proxy uses the DULL GRASP M_FLOOD mechanism to announce itself.
> | This announcement can be within the same message as the ACP
> | announcement detailed in [I-D.ietf-anima-autonomic-control-plane].
>
> The optional IPinIP proxy as described in Appendix C requires
> the following extension to the syntax of [GRASP]:
>
> transport-proto /= IPPROTO_IPINIP
> IPPROTO_IPV6 = 41 ; [RFC2473]
>
> Figure xx: GRASP syntax extensions for BRSKI
>
> Note: Process wise we might need to declare BRSKI RFC to be an update to
> GRASP RFC because of these two lines, but i would just wait until this
> gets
> discussed with IANA and then suggest that we change instead GRASP before
> it becomes RFC to:
>
> transport-proto = 0..255
I'm really reluctant to do that for the reason I gave yesterday (it
allows rubbish values). I don't see why BRSKI can't just define the extra
value that it needs. That doesn't really require an "Updates:" IMHO.
I do want to revisit this later, very likely by adding an IANA registry,
but I don't see the rush.
>
> Aka: that way we can define IPPROTO_IPV6 perfectly in BRSKI without
> extending GRASP (IMHO). We can still later on expend it beyond 255 when
> we need to,
> but thats not a BRSKI RFC problem then anymore.
Yes, I think that's true in any case.
Brian
>
> b) Change:
> | The M_FLOOD is formatted as follows:
>
> To:
> An example of M_FLOOD (without ACP) is as follows:
>
> (aka: "is formatted as" is not the correct lead in for an example).
>
> c) Fix up example picture:
>
> [M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000,
> [ ["AN_Proxy", 4, 1 ],
> [O_IPv6_LOCATOR,
> h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]],
> [ ["AN_Proxy", 4, 1 ],
> [O_IPv6_LOCATOR,
> h'fe800000000000000000000000000001', IPPROTO_IPV6, 0]] ]
>
> Figure 6b: AN_Proxy Example
>
> This is actually multiple fixes
> - Better title for picture (match AN_Proxy with following
> CDDL picture title and 'example')
> - the objective-value is not used, so "" for objective-value
> is not really correct IMHO, the field is just not encoded:
> ["AN_Proxy", 4, 1, "" ] -> ["AN_Proxy", 4, 1 ]
> - I think it helps a lot to understand how to announce
> multiple proxy options, so i highly suggest to have the
> above example include the TCP circuit proxy and IPinIP options.
> - Whether or not you use one or two objective announcements,
> you always need one more structure level around objective
> and locator-option according to GRASP syntax,
> aka:
> changed: ["AN_Proxy", 4, 1 ], ... 4443]
> to: [ ["AN_Proxy", 4, 1 ], ... 4443] ]
Yes. I thought that had already been caught.
> c) Fix syntax:
> from: flood-message = [M_FLOOD, session-id, initiator, ttl,
> +[objective, (locator-option / [])]]
>
> to: flood-message = [M_FLOOD, session-id, initiator, ttl,
> +[objective, locator-option ]]
>
> Aka: for this objective, locator-option is not optional,
> but mandatory, because it indicates the proxy-type via the
> transport-type which is part of the locator-option.
That isn't a fix to the GRASP syntax, it's a *restriction* of the
syntax for this particular case. Which is fine, but just note it
as a restriction.
>
> d) from: locator = [ O_IPv6_LOCATOR, ipv6-address,
> to: locator-option = [ O_IPv6_LOCATOR, ipv6-address,
>
> textual consistency with prior use of locator-option and GRASP RFC.
>
> e) Add at end of 4.1.1 suggested text:
>
> The transport-proto of the locator-option indicates the mechanism(s)
> supported by the proxy to the pledge. IPPROTO_TCP indicates the
> mandatory ANI TLS circuit proxy. IPPROTO_IPV6 indicates the optional
> IPinIP proxy, see Appendix C. IPPROTO_UDP would indicate a future
> CoAP mechanism, see Section 4.2. For IPPROTO_IPV6, proto-number
> MUST be 0.
>
> The above example shows a proxy supporting both ANI TLS circuit proxy
> and IP in IP proxy.
>
> Notes:
>
> I hope i understand the IP in IP proxy correctly, but given that
> there is no port number in IPinIP, and given that port-number is
> mandatory in GRASP syntax in this case, 0 seems to be the logical
> number to use for port-number in this case.
>
> I am just guessing you want IPPROTO_UDP to indicate CoAP in the
> future. If so, then it would be prudent to notice this here,
> otherwise describe what IPPROTO_UDP should mean, and if there is
> no predefined meaning, just remove it from the CDDL syntax.
>
> f) If you do not fancy to include the IP in IP example and text in
> 4.1.1, then i would strongly suggest to remove ALL indications of
> IP in IP, including the mentioning of IPPROTO_IPv6 from 4.1.1
> (also the extension to the GRASP syntax) - and instead put that
> all into appendix C. Your choice. I think the text is more succinct
> if all the grasp stuff is clearly in 4.1.1.
>
> 2) Changes for 4.3
>
> a) The objective-value "EST-TLS" serves no purpose and is wrong.
> Please remove it from the syntax, ak: no objective-value, like
> also no objective-value in 4.1.1
> - Its unnecessary, because if its used for all possible methods
> (TLS, IPinIP, ..) then it doesn't provide additional information
> and is redundant.
> - It is wrong, because the protocol would not just be EST, but BRSKI.
> - It is wrong, because for CoAP there would be no TLS.
>
> b) Please consider improving the example as above for 4.1.1:
> - lead in text for example
> - example title
> - [ [ objective, locator-option ] ] structure fix
> - Ideally also include both TLS and IPinIP options in example
>
> Also:
> - I find the use of port 80 in the example highly confusing given how
> the TCP connection MUST use TLS. Please change to AB80 (anything but
> 80).
>
> c) The CDDL syntax should be more consistent with 4.1.1:
> - locator-option not optional
> - locator, ipv6-address, transport-proto, port-number could
> be included in syntax.
>
> d) "network administrator policy (EST server configuration)"
>
> You where making during ACP review the point that BRSKI Registrar (for
> enrollment)
> would not necessarily be the same as the EST server for cert renewal,
> therefore the mentioning of "EST server" is confusing. would be
> less confusing if the term (BRSKI) Registrar was used everywhere,
> and "EST server" only when there is a real reason.
>
> e) "A protocol of 41 indicates that packets may be IPIP proxy'ed"
>
> So, unless we get back to my shepherd review "bikeshed" of introducing
> different objective value strings for different proxy methods,
> the "transport-proto" is the only way for the proxy to identify the
> method, so this sentence needs to say "will be" instead of "may be".
>
> Also: Delete following "In the case of that IPIP proxying is used,
> then".
>
> Also: "MUST be advertised on the" -> "MUST be advertised by the Proxy
> on the".
>
> f) the mechanism you are describing with locator1, locator2 and locator3
> would be highly obfuscated:
>
> In GRASP, every objective can have only one locator as seen from the
> syntax.
> What you are proposing would mean that you are announcing three separate
> AN_join_registrar objectives (of course, they can all be together in a
> single
> M_Flood), but then effectively you're saying that those three objectives
> do really describe a single IPinIP mechanism.
>
> So, your full example locators with objectives would be:
>
> [["AN_join_registrar", 4, 255], [O_IPv6_LOCATOR, fd45:1345::6789, 6,
> 443]] ]
> [["AN_join_registrar", 4, 255], [O_IPv6_LOCATOR, fd45:1345::6789, 17,
> 5683] ]
> [["AN_join_registrar", 4, 255], [O_IPv6_LOCATOR, fe80::1234, 41, 0] ]
>
> Is this join registrar supporting ANI TLS proxy ?
> Aka: i can't distinguish for the TCP locator whether it just indicates
> a permitted TCP port for the IPinIP proxy or whether it indicates
> the TCP port supported for IPinIP. And even if the proxy supports both,
> its not clear to me that the TCP ports for "native" would be the same as
> for IPinIP. Maybe its different code-paths == different ports.
>
> Likewise UDP port could be CoAP proxy or again a parameter for IPinIP.
>
> I would suggest to only use a single objective for IPinIP, aka: the
> line with
> 41, 0, and encode the TCP/UDP locators to use inside of the IPinIP proxy
> mechanisms as the objective-value when using the IPinIPi method:
>
> objective-value = *( [ ipv6-locator-option ] ) ; only for IPinIP proxy
>
> Then we could show an example like this:
>
> [M_FLOOD, 12340815, h'fda379a6f6ee00000200000064000001', 180000,
> [ ["AN_join_registrar", 4, 255 ],
> [O_IPv6_LOCATOR, h'fda379a6f6ee0::200000064000001', 6, 443]
> ],
> [ ["AN_join_registrar", 4, 255,
> [[O_IPv6_LOCATOR, h'fda379a6f6ee0::200000064000001', 6, 4443],
> [O_IPv6_LOCATOR, h'fda379a6f6ee0::200000064000001',17, 5683]]
> ],
> [O_IPv6_LOCATOR, fe80::1234, 41, 0]
> ]
> ]
>
> That would include your two constraining locators for the IPinIP proxy
> and separately the "native" circuit proxy. And as mentioned in the
> intro for 4.1.1, the same structure of information for the IPinIP proxy
> would be necessary for AN_Proxy.
>
>
> I'll stop here. Let me know what you think. I'll be happy to help apply the
> fixes / send diff if this is ok. with you.
>
> Cheers
> Toerless
>
>> --
>> ] Never tell me the odds! | ipv6 mesh networks
>> [
>> ] Michael Richardson, Sandelman Software Works | network architect
>> [
>> ] [email protected] http://www.sandelman.ca/ | ruby on rails
>> [
>>
>
>
>
>> _______________________________________________
>> Anima mailing list
>> [email protected]
>> https://www.ietf.org/mailman/listinfo/anima
>
> _______________________________________________
> Anima mailing list
> [email protected]
> https://www.ietf.org/mailman/listinfo/anima
>
_______________________________________________
Anima mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/anima