Re: [yang-doctors] Review of draft-wu-l3sm-rfc8049bis?

Benoit Claise <bclaise@cisco.com> Fri, 06 October 2017 12:40 UTC

Return-Path: <bclaise@cisco.com>
X-Original-To: yang-doctors@ietfa.amsl.com
Delivered-To: yang-doctors@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3C8FD134563; Fri, 6 Oct 2017 05:40:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.5
X-Spam-Level:
X-Spam-Status: No, score=-14.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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, 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 by8R1F50FpCy; Fri, 6 Oct 2017 05:40:15 -0700 (PDT)
Received: from aer-iport-1.cisco.com (aer-iport-1.cisco.com [173.38.203.51]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EE67C1342E0; Fri, 6 Oct 2017 05:40:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=23417; q=dns/txt; s=iport; t=1507293615; x=1508503215; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to; bh=ghWtw7KsqgPzz7K7dExEZq+WbhrkS8K9DbUy2btOWH8=; b=htp7EjH0nZNnlDnueuE77f2RfM1kBeyUZ1M8h8Op0vCxm3JSY+0W4ho9 qOi3SO9ZffTMvpJLCzphBhTK1zOvjjv6OlJCfgoJJk7FEo8zhlerLbH60 YnapTd+sT1ZHOFKPTfxsMacbc7nz2qGOs364UREm0sWNzRVCmrJMZj56v Y=;
X-IronPort-AV: E=Sophos;i="5.42,483,1500940800"; d="scan'208,217";a="697845909"
Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-1.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Oct 2017 12:40:13 +0000
Received: from [10.55.221.36] (ams-bclaise-nitro3.cisco.com [10.55.221.36]) by aer-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id v96CeC8u030238; Fri, 6 Oct 2017 12:40:13 GMT
To: Jan Lindblad <janl@tail-f.com>, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
Cc: Adrian Farrel <adrian@olddog.co.uk>, Lou Berger <lberger@labn.net>, YANG Doctors <yang-doctors@ietf.org>, draft-wu-l3sm-rfc8049bis.all@ietf.org, "Joe Clarke (jclarke)" <jclarke@cisco.com>
References: <262fdd36-5213-f716-016a-02442c427a0a@labn.net> <EA5D631C-818D-4F84-83C9-26B8A2D73A70@tail-f.com> <196ce82f-2bc3-18c5-4232-2a874efb5062@labn.net> <50B59D11-E865-4025-AAFA-7E2505B540B9@tail-f.com> <20171005140709.xdzqbhyanhpzkyzi@elstar.local> <015901d33de8$083822c0$18a86840$@olddog.co.uk> <20171005161039.rgxdyqlzkg7a4pqn@elstar.local> <5CA105C4-E0DA-4DF0-9001-E47D3C7514BA@tail-f.com>
From: Benoit Claise <bclaise@cisco.com>
Message-ID: <6887e486-5a02-ddd2-925a-a821872b6a31@cisco.com>
Date: Fri, 06 Oct 2017 14:40:12 +0200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0
MIME-Version: 1.0
In-Reply-To: <5CA105C4-E0DA-4DF0-9001-E47D3C7514BA@tail-f.com>
Content-Type: multipart/alternative; boundary="------------1E6212700C5EB175E9F81AEC"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/x6pteSRnV-5_m49lHhW86NDMM10>
Subject: Re: [yang-doctors] Review of draft-wu-l3sm-rfc8049bis?
X-BeenThere: yang-doctors@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Email list of the yang-doctors directorate <yang-doctors.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/yang-doctors/>
List-Post: <mailto:yang-doctors@ietf.org>
List-Help: <mailto:yang-doctors-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 06 Oct 2017 12:40:18 -0000

Dear all,

The big problem: RFC8049 is broken
The small problem: trying to maintain backward compatibility.

draft-wu-l3sm-rfc8049bis has rightly focused on the big problem.

As I mentioned in the past (see "semver.org comparison of two YANG 
modules" email in NETMOD), I believe the IETF will have to change its 
way of working in terms of backward compatibility. See also the email 
"ietf-routing or ietf-routing-2? module naming convention for NMDA 
transition. Re: [netmod] upcoming adoptions" in NETMOD. The lack of 
responses might be perceived as the IETF community not being ready for 
this discussion.

The point is that we need, in an automatic way, to make the link between 
the YANG module in RFC8049 and the YANG module in
draft-wu-l3sm-rfc8049bis, or any non backward compatible YANG module.

Two solutions:
1. We keep the same module name and express that the YANG module in 
draft-wu-l3sm-rfc8049bis is not backward compatible with the RFC8049 
one. This is the openconfig way. See draft-clacla-netmod-model-catalog

       // extension statements
          extension openconfig-version {
            argument "semver" {
              yin-element false;
            }
            description
              "The OpenConfig version number for the module. This is
              expressed as a semantic version number of the form:
                x.y.z
               where:
                * x corresponds to the major version,
                * y corresponds to a minor version,
                * z corresponds to a patch version.
              This version corresponds to the model file within which it is
              defined, and does not cover the whole set of OpenConfig models.
              Where several modules are used to build up a single block of
              functionality, the same module version is specified across each
              file that makes up the module.

              A major version number of 0 indicates that this model is still
              in development (whether within OpenConfig or with industry
              partners), and is potentially subject to change.

              Following a release of major version 1, all modules will
              increment major revision number where backwards incompatible
              changes to the model are made.

              The minor version is changed when features are added to the
              model that do not impact current clients use of the model.

              The patch-level version is incremented when non-feature changes
              (such as bugfixes or clarifications to human-readable
              descriptions that do not impact model functionality) are made
              that maintain backwards compatibility.

              The version number is stored in the module meta-data.";
          }

2. Or we have a different module name, let's say ietf-l3vpn-svc-2.
Then ...  What? We create extension that will link the 
draft-wu-l3sm-rfc8049bis YANG module to the RFC8049 YANG module? Same 
principle as #1, but just more complex. Or we have a new YANG keyword?

    <CODE BEGINS>file "ietf-l3vpn-svc@2017-09-14.yang"
    module ietf-l3vpn-svc-2 {
      yang-version 1.1;
      namespace "urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc";
      prefix l3vpn-svc;
      obsolete ietf-l3vpn-svc@2017-01-2

Going from the draft-wu-l3sm-rfc8049bis YANG _module _to the 
draft-wu-l3sm-rfc8049bis _document _to lookup the IETF "obsolete" flag 
in order to understand that the RFC8049 YANG module is obsolete is not 
an automatic solution.
Using the yangcatalog.org might be a solution, but this is just an 
offline trick.
Using the YANG module description field might be interesting, but again 
this is not an automatic way:

      description
       "This YANG module defines a generic service configuration
        model for Layer 3 VPNs. This model is common across all
        vendor implementations. This obsoletes the RFC8049 YANG
        module, ietf-l3vpn-svc@2017-01-2";
      revision 2017-09-14 {
       description
        "First revision ofRFC8049 <https://tools.ietf.org/html/rfc8049>.";
       reference
        "RFC xxxx: YANG Data Model for L3VPN Service Delivery";


Maybe we should discuss this on the NETMOD mailing list in the end, for 
a longer term solution. Thoughts?
However, let's not block the RFC8049bis and RFC8022bis publications at 
this point in time.

Regards, Benoit


> Jürgen,
>
>> I do not understand the details why RFC 8049 is fundamentally
>> broken.
> The 8049 YANG model had broken XPATH expressions, so a compliant implementation was impossible. The qos rules architecture was at odds with other IETF models, e.g. the ACL model. I would actually call this out as a bigger problem than the former. Then, there were some minor description enhancements, added defaults and adjustments of types.
>
>> The abstract of the ID says:
>>
>>    If approved, this document obsoletes RFC 8049.  The changes are a
>>    series of small fixes to the YANG module, and some clarifications to
>>    the text.
>>
>> This does not read like fundamentally flawed and not implementable.
> 8049 does not compile if you have a compiler that understands XPATH.
>
>> That said, I did react to Jan's statement that kind of indicated that
>> these changes are generally OK - which I think they are not.
>>
>> If this document chooses to not follow the YANG update rules, I think
>> this should be supported by a clear documentation why this is
>> considered to be OK, somewhere in the document.
> I never pretended the new module would be backwards compatible with 8049. The specific element I mentioned as being individually backwards compatible, is not according to section 11 in 7950. Thanks for clarifying that.
>
> Maybe what we should do to respect section 11 rules, and give a clear message to implementors, is to give the module a new namespace and name.
>
> /jan
>
>
>> On Thu, Oct 05, 2017 at 03:41:28PM +0100, Adrian Farrel wrote:
>>> Pardon me for asking for some help getting this straight in my head.
>>>
>>> When we move from one version of an I-D to another, we don't pay any attention
>>> to backward compatibility.
>>>
>>> When we revise an established module we must be backward compatible to allow the
>>> new version to be inserted without damaging existing implementations, or we must
>>> call the module something new to avoid confusion.
>>>
>>> When we have a module that cannot be implemented (because it is broken) and that
>>> is being fixed through the obsoleting of an RFC, do we *really* care about
>>> backward compatibility? If we do care, then the answer is simple: we revise the
>>> module name, etc. If the issue isn't a big deal, we go ahead as written.
>>>
>>> Thanks,
>>> Adrian
>>>
>>>> -----Original Message-----
>>>> From: Juergen Schoenwaelder [mailto:j.schoenwaelder@jacobs-university.de]
>>>> Sent: 05 October 2017 15:07
>>>> To: Jan Lindblad
>>>> Cc: Lou Berger; YANG Doctors; draft-wu-l3sm-rfc8049bis.all@ietf.org
>>>> Subject: Re: [yang-doctors] Review of draft-wu-l3sm-rfc8049bis?
>>>>
>>>> On Thu, Oct 05, 2017 at 03:44:24PM +0200, Jan Lindblad wrote:
>>>>> Lou,
>>>>>
>>>>>> What about the type changes (int32->int64,
>>>>> This is a backwards compatible change according to both 6020 and 7950.
>>>>>
>>>>>> int->string)?
>>>>> Even if a type change int->str might qualify as "backwards compatible"
>>>> according to 6020 and 7950, the particular change at hand is not because of
>>>> considerable changes in semantics.
>>>>
>>>> I think both type changes are problematic. RFC 7950 says:
>>>>
>>>>    o  A "type" statement may be replaced with another "type" statement
>>>>       that does not change the syntax or semantics of the type.  For
>>>>       example, an inline type definition may be replaced with a typedef,
>>>>       but an int8 type cannot be replaced by an int16, since the syntax
>>>>       would change.
>>>>
>>>> /js
>>>>
>>>>> /jan
>>>>>
>>>>>
>>>>>> On 10/5/2017 9:27 AM, Jan Lindblad wrote:
>>>>>>> Lou,
>>>>>>>
>>>>>>> I have reviewed the updated model from a YANG perspective. The old
>>>> model contained syntax errors(!), so there was no way to (correctly) implement
>>>> it. Hence I believe requirements on backwards compatibility should be treated
>>>> lightly.
>>>>>>> /jan
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>>    Has there been a review conducted or is there one planned for
>>>>>>>> draft-wu-l3sm-rfc8049bis?  If not, I think one is needed.  I'm looking
>>>>>>>> at it now as part of RtgDir review and I believe some non-backwards
>>>>>>>> compatible changes in the defined yang module.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Lou
>>>>>>>>
>>>>>>>> PS for module diffs see:
>>>>>>>>
>>>>>>>> https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-wu-l3sm-
>>>> rfc8049bis-05.txt&url1=rfc8049
>>>>>>>> _______________________________________________
>>>>>>>> yang-doctors mailing list
>>>>>>>> yang-doctors@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/yang-doctors
>>>>> _______________________________________________
>>>>> yang-doctors mailing list
>>>>> yang-doctors@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/yang-doctors
>>>> --
>>>> 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/>
>> -- 
>> 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/>
>>
> .
>