Re: [netmod] missing YANG versioning requirements

Robert Wilton <rwilton@cisco.com> Mon, 12 November 2018 17:20 UTC

Return-Path: <rwilton@cisco.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BA1D2129AB8 for <netmod@ietfa.amsl.com>; Mon, 12 Nov 2018 09:20:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.969
X-Spam-Level:
X-Spam-Status: No, score=-14.969 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.47, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jYEIFD5iVGg7 for <netmod@ietfa.amsl.com>; Mon, 12 Nov 2018 09:20:07 -0800 (PST)
Received: from aer-iport-3.cisco.com (aer-iport-3.cisco.com [173.38.203.53]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7484B12896A for <netmod@ietf.org>; Mon, 12 Nov 2018 09:20:06 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=18926; q=dns/txt; s=iport; t=1542043206; x=1543252806; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to; bh=TYPP/6xnpMkUkvXXM4DalZnqD4E/5Mf5u0+E+xF/f1Q=; b=ll81/JhGDiH0jSkupC24zmNiEoBInc2q/ulML9OVxDXVo6lf5BNcsp0r cU+jagNxZzcBEkjQ1/hIaU64g6TNAjzgwK/GVHYWCz7fawK1lZquc9fKC 8//G61+EIU7aZQPSidIFc/8fg1Vl8JZ+izoqmOexshC4X4Xu0gv+6CMVk E=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AUAABatelb/xbLJq1jGgEBAQEBAgEBAQEHAgEBAQGBVAIBAQEBCwGBWoEPTyESJ4N4iHeNKJdJgWYNGAEKhANGAoNPNwoNAQMBAQIBAQJtHAyFOgEBAQMBAQEMFUIJCwULCxgVEgMCAicfEQYNBgIBAReDBgGBeQgPqS+BLx+FH4RkBYwXgUA/gREngW1+gxsBAYEcL1WCRYJXApUbijQJkRcGGIFYhQKCfIcaiVqHRoZYgVkiJ4EuMxoIGxU7gmyBd4FGAQmHVYU+PwMwjhQBAQ
X-IronPort-AV: E=Sophos;i="5.54,496,1534809600"; d="scan'208,217";a="7938812"
Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-3.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Nov 2018 17:20:04 +0000
Received: from [10.63.23.62] (dhcp-ensft1-uk-vla370-10-63-23-62.cisco.com [10.63.23.62]) by aer-core-2.cisco.com (8.15.2/8.15.2) with ESMTP id wACHK3YO021569; Mon, 12 Nov 2018 17:20:04 GMT
To: Andy Bierman <andy@yumaworks.com>
Cc: NetMod WG <netmod@ietf.org>
References: <CABCOCHQG0kCXUVqD9OBfmsAvFTgwzDzV8MP0=PRYHgiJR_Uvqg@mail.gmail.com> <5d8a14f4-94a9-c6eb-4a7c-6d6a155e0c84@cisco.com> <CABCOCHT9DJDvep5qXh5sQpZ9aHuBYhb4AcLLx+Oo1QGhqy4puw@mail.gmail.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <0ffe7036-58ff-abbc-c0fd-efd6e251f815@cisco.com>
Date: Mon, 12 Nov 2018 17:20:03 +0000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
MIME-Version: 1.0
In-Reply-To: <CABCOCHT9DJDvep5qXh5sQpZ9aHuBYhb4AcLLx+Oo1QGhqy4puw@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------6365FB9A78B0B54ADDECFB72"
Content-Language: en-US
X-Outbound-SMTP-Client: 10.63.23.62, dhcp-ensft1-uk-vla370-10-63-23-62.cisco.com
X-Outbound-Node: aer-core-2.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/qICitGSkr6infpAafnTHPV4Ug9Q>
Subject: Re: [netmod] missing YANG versioning requirements
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 12 Nov 2018 17:20:10 -0000


On 12/11/2018 16:15, Andy Bierman wrote:
>
>
> On Mon, Nov 12, 2018 at 7:01 AM, Robert Wilton <rwilton@cisco.com 
> <mailto:rwilton@cisco.com>> wrote:
>
>
>
>     On 09/11/2018 18:35, Andy Bierman wrote:
>>     Hi,
>>
>>     I think the requirements doc should state that
>>
>>     1) there are many more readers, operators, and client developers than
>>     server developers so the solution MUST take into account the numbers
>>     of people affected when finding a balance between client and
>>     server complexity.
>     OK.  So you would like the solution to be weighted towards
>     clients, but yet you do not want servers to have to implement any
>     sort of version selection, instead pushing the problem on to the
>     client? :-)
>
>
>
> I support some aspects of this work:
>   - SEMVER
>   - import-stmt
>   - status-stmt
OK

>
> I strongly oppose the simultaneous implemented revisions requirement 
> because it is actually
> a solution, not a requirement at all, and a bad solution.
>

>
> For any given buggy data node, a replacement sibling can be created so 
> the new node and the deprecated
> buggy node can both be implemented.
So, I regard this as a potential solution to requirement 3.2.

However, I still do not understand a scheme for how this works for 
config items, either covering all of the various corner cases of clients 
at different versions, or at least states under what assumptions that 
solution works.

Please can someone who thinks that this is a solution explain how this 
solution works.  I think that there are quite a lot of potential 
questions/issues:

Are there two version entirely independent of are they connected (i.e. 
updating one, updates the other)?
If they are dependent then does writing one value also update the other one?
If they are independent they can two different values be written 
(perhaps for a pair of leaves this could be enforced with a must 
statement), but with more complex models this is not possible?
Does this solution support 2 clients interacting with the server using 
different versions of the leaf, or is it assumed that all clients will 
interact using the same version?
What happens if both leaves have different default values (perhaps this 
can just be avoided)?
What happens when the new value cannot be represented in the old leaf 
used by client A?  It now has a configuration that it cannot change 
because it doesn't know about the new leaf.
What leaf values are updated in operational?  Is it both of them, or 
just one of them?


>
> YANG represents a customer-facing API, like the CLI. Vendors 
> understand that customers
> don't like it when CLI keywords change meaning from release to 
> release.  Vendors are careful
> to introduce new keywords so the old ones keep working.

For our CLI, we generally accept the old, but always return the config 
using the new CLI.  However, I would expect that approach would probably 
break clients using YANG.  They would be confused that the configuration 
returned via get-config does not match what they programmed via edit-config.

>
>     More seriously, I'm looking for a solution where we it up to the
>     market to decide whether the complexity should be pushed to
>     client, server, or a 3rd party controller.  I think that some sort
>     of version selection should be able to achieve this.
>
>
>
> I do not agree the standards should be changed to support this 
> solution approach.

>>
>>     2) if existing protocol and YANG solutions exist then they MUST
>>     be used
>>     in favor of developing new solutions.
>     If you replace the "MUST" with a "SHOULD" then I sort of think
>     that this one is obvious.  I think that we are only trying to
>     develop next solutions where the existing ones do not appear to be
>     working well.  There are examples in the earlier text in the
>     requirements draft, and also draft-clacla-netmod-yang-model-update
>     to provide the background and justify why we need to do something
>     different than the status quo.
>
>
>
> It would help to have real examples where deprecate-and-replace was an 
> unworkable solution.
I would happy to start with an example where you think it does work, 
taking into consideration the questions that I provided previously.

> IMO it is OK to update a data node because sub-statements are 
> incorrect (e.g. pattern, type).
> In this case, the old definition is not worth preserving.
This can still break some clients.

>
> Note that changes between I-Ds are not interesting. Only changes from 
> RFC to RFC are interesting.
> Vendors need to review their own modules and do a better job 
> identifying stable vs. unstable releases.
I agree to both of these.

But lets not pretend that all code that we ever produce will be perfect 
the first time, contain no bugs, and never need to be changed.  We have 
seen the industry push for us to be more reactive and get changes out 
more quickly.  I would argue that a natural side effect of that is that 
there are likely to be more bugs that will need fixing.

Thanks,
Rob


>
>
>     Thanks,
>     Rob
>
>
>
> Andy
>
>
>>
>>
>>     Andy
>>
>>
>>
>>     _______________________________________________
>>     netmod mailing list
>>     netmod@ietf.org <mailto:netmod@ietf.org>
>>     https://www.ietf.org/mailman/listinfo/netmod
>>     <https://www.ietf.org/mailman/listinfo/netmod>
>
>