> On 03 Aug 2015, at 10:18, Juergen Schoenwaelder 
> <j.schoenwael...@jacobs-university.de> wrote:
> 
> On Mon, Aug 03, 2015 at 09:22:48AM +0200, Ladislav Lhotka wrote:
>> Andy Bierman <a...@yumaworks.com> writes:
>> 
>>> On Fri, Jul 31, 2015 at 8:37 AM, Ladislav Lhotka <lho...@nic.cz> wrote:
>>> 
>>>> 
>>>>> On 31 Jul 2015, at 16:54, Andy Bierman <a...@yumaworks.com> wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>> On Fri, Jul 31, 2015 at 5:45 AM, Ladislav Lhotka <lho...@nic.cz> wrote:
>>>>> 
>>>>>> On 31 Jul 2015, at 14:40, Andy Bierman <a...@yumaworks.com> wrote:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Fri, Jul 31, 2015 at 1:12 AM, Ladislav Lhotka <lho...@nic.cz>
>>>> wrote:
>>>>>> Martin Bjorklund <m...@tail-f.com> writes:
>>>>>> 
>>>>>>> Andy Bierman <a...@yumaworks.com> wrote:
>>>>>>>> On Thu, Jul 30, 2015 at 10:41 AM, Martin Bjorklund <m...@tail-f.com>
>>>> wrote:
>>>>>>>> 
>>>>>>>>> Andy Bierman <a...@yumaworks.com> wrote:
>>>>>>>>>> On Wed, Jul 29, 2015 at 10:51 AM, Martin Bjorklund <
>>>> m...@tail-f.com>
>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Andy Bierman <a...@yumaworks.com> wrote:
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> 
>>>>>>>>>>>> I understand the intent is that an implementation of NACM
>>>>>>>>>>>> has to understand these NACM extensions.  I agree with Lada
>>>>>>>>>>>> that the YANG text about MAY ignore extensions casts doubt
>>>> whether
>>>>>>>>>>>> this sort of NACM rule is enforceable or specified
>>>> correctly.
>>>>>>>>>>> 
>>>>>>>>>>> So do you agree that it would be a good idea to clarify this
>>>>>>>>>>> according to Juergen's suggestion?
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> Not really.
>>>>>>>>>> Pretending the extension is just another description-stmt
>>>>>>>>>> does not really fix anything.
>>>>>>>>>> 
>>>>>>>>>> A real YANG statement like config-stmt or a new statement
>>>>>>>>>> called ephemeral-stmt can be modified with refine-stmt
>>>>>>>>>> or deviate-stmt.   This can never happen for
>>>>>>>>>> an external statement.
>>>>>>>>> 
>>>>>>>>> There are two separate issues here:
>>>>>>>>> 
>>>>>>>>> 1) It seems we are in agreement that if a model uses an extension
>>>>>>>>>   statement, it is normative (like ietf-system's usage of
>>>> nacm:*).
>>>>>>>>> 
>>>>>>>>>   Should we somehow clarify this in 6020bis?
>>>>>>>>> 
>>>>>>>>> 2) Extensions cannot be refined or deviated.
>>>>>>>>> 
>>>>>>>>>   Actually, the *syntax* rules allows things like:
>>>>>>>>> 
>>>>>>>>>     deviation /x:foo {
>>>>>>>>>       deviate replace {
>>>>>>>>>         i2rs:ephemeral true;
>>>>>>>>>       }
>>>>>>>>>     }
>>>>>>>>> 
>>>>>>>>>   I agree that it not clear what this means, but we could also
>>>>>>>>>   clarify this in 6020bis.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> But this will take even longer than just defining the statements
>>>> that
>>>>>>>> are needed for ephemeral state, so no point in doing that.
>>>>>>>> 
>>>>>>>> The text in  7.18.3.2 clearly does not support the example above at
>>>> all.
>>>>>>> 
>>>>>>> The grammar allows extensions everywhere, so the example is (as I
>>>>>>> wrote) syntactically valid.
>>>>>>> 
>>>>>>>> Only one of the keywords listed in the table are supported.
>>>>>>> 
>>>>>>> The text doesn't say so, and anyway my point was that - regardless of
>>>>>>> the outcome of the ephemeral dicussion - it might be a good a idea to
>>>>>>> clarify that extensions can be deviated as well.
>>>>>> 
>>>>>> +1
>>>>>> 
>>>>>> 
>>>>>> So you are saying that a tool MAY ignore any extension, except
>>>>>> inside a deviation-stmt?  Then it becomes mandatory to support?
>>>>>> 
>>>>>> Or do you mean:
>>>>>> 
>>>>>> Yes you can put extension-stmts anywhere, but also, yes the tool
>>>>>> MAY ignore every single extension (everywhere, including inside a
>>>>>> deviation-stmt)
>>>>> 
>>>>> I understood Martin’s proposal so that a device that doesn’t support an
>>>> extension used in modules it advertises will have to put it in a
>>>> “not-supported” deviation.
>>>>> 
>>>>> 
>>>>> So features are all "not-supported" by default. but extensions,
>>>>> which a tool MAY ignore, are all supported by default?
>>>> 
>>>> I proposed to remove this “MAY ignore” text.
>>>> 
>>> 
>>> 
>>> I do not support this change
>>> 
>> 
>> The current "MAY ignore" formulation is unclear, and it doesn't matter
>> whether it talks about compilers, parsers or tools.
>> 
>> The problem with extensions is that they can mean virtually anything –
>> in particular, they can change semantics of YANG or the management
>> protocol.
> 
> Any description statement in principle can do this. We trust that sane

6020(bis) is silent about the effects a description or extension can have - I 
think there should be relatively strict limits. I agree with Jernej that 
descriptions or extensions should not be allowed to change YANG semantics.

We had a discussion before about defining new XPath functions via extensions. 
Doing it via descriptions is equally inacceptable for me.

Lada 

> data model writers won't do bad things. And if they do, we hope that
> people will not implement and deploy bad things.
> 
>> I think there are two possible approaches:
>> 
>> 1. Treat all extensions appearing in the server's data model as
>>   mandatory parts of data model or protocol semantics.
>> 
>> 2. Make extensions truly optional and irrelevant from the point of view
>>   of YANG language.
>> 
>> With #1, a client that doesn't understand all extensions the server uses
>> SHOULD terminate the session, because there are no means for negotiating
>> support for extensions one by one.
>> 
>> I am afraid this could have disastrous consequences for
>> interoperability: we would have silos where servers only work with
>> clients of the same provenience.
>> 
>> #2 is what RELAX NG does: elements and attributes from foreign
>> namespaces are allowed in a schema but they cannot affect the notion of
>> RELAX NG validity because the specification of the validation procedure
>> says: "Foreign attributes and elements are removed."
>> 
>> With #2, protocols such as I2RS can still define their extensions
>> provided that
>> 
>> - there is some way for making sure that both the server and client
>>  understands it,
>> 
>> - it doesn't affect servers and clients of other protocols, so they may
>>  safely ignore it.
>> 
>> I would personally vote for #2, but then the NACM stuff or the
>> "annotation" statement really cannot be extensions.
> 
> I continue to see extension statements as reusable and (in principle)
> machine readable fragments of description statements. From this
> perspective, it seems odd to make a difference between extensions and
> description statements. I think the NACM extensions are just fine as
> they are. I do not see anything broken about them.
> 
> /js
> 
> -- 
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C




_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to