Re: [yang-doctors] Yangdoctors last call review of draft-ietf-nvo3-yang-cfg-05

Mehmet Ersue <mersue@gmail.com> Thu, 16 September 2021 11:05 UTC

Return-Path: <mersue@gmail.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 C801E3A24AF for <yang-doctors@ietfa.amsl.com>; Thu, 16 Sep 2021 04:05:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 3F1sSqg40iHi for <yang-doctors@ietfa.amsl.com>; Thu, 16 Sep 2021 04:04:55 -0700 (PDT)
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4E39E3A24AD for <yang-doctors@ietf.org>; Thu, 16 Sep 2021 04:04:55 -0700 (PDT)
Received: by mail-wm1-x32a.google.com with SMTP id n7-20020a05600c3b8700b002f8ca941d89so4201172wms.2 for <yang-doctors@ietf.org>; Thu, 16 Sep 2021 04:04:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:references:in-reply-to:subject:date:message-id:mime-version :content-transfer-encoding:thread-index:content-language; bh=1otvaxn27Bjnf4u4gg8foLQCs3eM9oHm4RZUgHDMxWA=; b=m0qngtoyy7SUQMt/DgmlWRJgfFI4rqgAx+ksEupl9WUOWPHHX0yzEi5s7OFC8863Jn 2g9pg2aWlkWhDr7pW+SvMVSMVyIq5UEbKjzAK4Ywr0cRYlQ8WVJ31d9qzdMNH7gVOFFB oMpybAJfg3ghNbZdRNNsl0GRjsaIMoJifMx6t8d5qCjc6gM9aVFljJ8h0Ef2j4dr2v/r 8BYlWB9emcdr/JhEszQIjzE2vJQdoNf4NkYXWdv3Qde5jQWjvSez/O2JfiPi3dYnWeZS ABTRrcMcmwewIBJ8aVUuJaP/Q8Usa1kf4kLU8e7IUGwuU1Q6E+IUEN+Qvt1BN0SRmPOX SCiw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:references:in-reply-to:subject:date :message-id:mime-version:content-transfer-encoding:thread-index :content-language; bh=1otvaxn27Bjnf4u4gg8foLQCs3eM9oHm4RZUgHDMxWA=; b=JZWFk1sUKW2Kzg1/5v0wdeeAcyUtTnSel05Sln9SLxUqBDaeAvMfRQBT00ilz+APC0 6XiUBMZ2pQAlEW4fP66rwniFhMAeGpNVHJVrkWERbhcGtLI/+W85BoHFy01HzOYLsHqW 2bZEGf0N+pY/V3sIj/NgCMlwJpDXWuIEcEFfMdRqFnbw7eybdt8IzHEgKPF3YjyjzR5V zKsoLuoroyhRfcJHWFDACdVcALwNbpoYSDa+Dcdvznz2hOgS4US1VhhakOwZ9G4KKe73 JNodrG0mxha5q1/eVbRXOujAGxNglOyaavVVZPGr1/69S2Xt2C91Q5uRb0s8yUwssu+i FCcg==
X-Gm-Message-State: AOAM5320mie3+PLMGrvLes9NdOY38Wcaci7olWtR1vv9HVBixYV0GasA UdBLJS5dgUjXeMvGXvpzXN7LAccp0rg=
X-Google-Smtp-Source: ABdhPJwZzzT0eMra1MUjMoFqF2b6OqsJ4KlsRIKnfQ6Pvn0TyT4ESPpbscWevZYDzUiuf70G8kjzzQ==
X-Received: by 2002:a05:600c:3b83:: with SMTP id n3mr4624891wms.50.1631790293350; Thu, 16 Sep 2021 04:04:53 -0700 (PDT)
Received: from DESKTOPFLHJVQJ ([188.119.61.189]) by smtp.gmail.com with ESMTPSA id u29sm238718wru.34.2021.09.16.04.04.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 16 Sep 2021 04:04:52 -0700 (PDT)
From: Mehmet Ersue <mersue@gmail.com>
To: 'Jan Lindblad' <janl@tail-f.com>, yang-doctors@ietf.org
References: <163177624716.21367.10437954922414983100@ietfa.amsl.com>
In-Reply-To: <163177624716.21367.10437954922414983100@ietfa.amsl.com>
Date: Thu, 16 Sep 2021 14:04:50 +0300
Message-ID: <00d201d7aaea$ac0e0c70$042a2550$@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AQFyp63HCT8vykxLHHnYIUX52g+qU6xwhbPA
Content-Language: de
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/RwWWbdsFQ7miNjjX-RPbPQqvuC0>
Subject: Re: [yang-doctors] Yangdoctors last call review of draft-ietf-nvo3-yang-cfg-05
X-BeenThere: yang-doctors@ietf.org
X-Mailman-Version: 2.1.29
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: Thu, 16 Sep 2021 11:05:01 -0000

Many Thanks Jan!

Cheers,
Mehmet

> -----Original Message-----
> From: yang-doctors <yang-doctors-bounces@ietf.org> On Behalf Of Jan
> Lindblad via Datatracker
> Sent: Thursday, September 16, 2021 10:11 AM
> To: yang-doctors@ietf.org
> Cc: last-call@ietf.org; nvo3@ietf.org;
draft-ietf-nvo3-yang-cfg.all@ietf.org
> Subject: [yang-doctors] Yangdoctors last call review of
draft-ietf-nvo3-yang-
> cfg-05
> 
> Reviewer: Jan Lindblad
> Review result: Not Ready
> 
> This is the YANG Doctor review of draft-ietf-nvo3-yang-cfg. In my
judgement
> the draft is not ready for last call. This is not to say that there isn't
plenty of
> good work that has gone into this draft and YANG module, but since I have
> been unable to compile it, due to unclear dependencies, the fundamental
> requirements for performing a review aren't met.
> 
> As soon as you import another module, you become dependent on that
> module and inherit any problems it may have. If the modules you depend
> upon are not stable enough, it may not be viable to perform a last call
review.
> As long as the modules you depend upon are not published, I would think
> you cannot go through with publication of your own module either.
> 
> There's always a bit of guesswork involved when a YANG module imports
> unpublished modules. By looking in the IETF Git repository, under
> "standards/ietf/RFC" as well as under "experimental/ietf-extracted-YANG-
> modules", i.e. the section for automatically extracted YANG modules from
> drafts, I was able to guess at which modules that are transitively
referenced.
> Based on this, I believe we will need to have stable versions of the
following
> modules before the draft-ietf-nvo3-yang-cfg can proceed. Experimental
> modules are marked (*).
> 
> iana-bfd-types.yang (*)
> iana-if-type.yang
> ietf-bfd-types.yang (*)
> ietf-bgp-common-multiprotocol.yang (*)
> ietf-bgp-common-structure.yang (*)
> ietf-bgp-common.yang (*)
> ietf-bgp-l3vpn.yang (*)
> ietf-bgp-neighbor.yang (*)
> ietf-bgp-peer-group.yang (*)
> ietf-bgp-policy.yang (*)
> ietf-bgp-rib-attributes.yang (*)
> ietf-bgp-rib-tables.yang (*)
> ietf-bgp-rib-types.yang (*)
> ietf-bgp-rib.yang (*)
> ietf-bgp-types.yang (*)
> ietf-bgp.yang (*)
> ietf-inet-types.yang
> ietf-interfaces.yang
> ietf-ip.yang
> ietf-key-chain.yang
> ietf-l2vpn.yang (*)
> ietf-netconf-acm.yang
> ietf-network-instance.yang
> ietf-pseudowires.yang (*)
> ietf-routing-policy.yang (*)
> ietf-routing-types.yang
> ietf-routing.yang
> ietf-tcp-common.yang (*)
> ietf-tcp.yang (*)
> ietf-yang-schema-mount.yang
> ietf-yang-types.yang
> 
> Since I already did a first reading and found a few things, I'll list them
here for
> the WG's benefit rather than me holding them to myself.
> 
> 1. YANG 1.1
> 
> The draft says "YANG [RFC6020] is a data definition language that was
> introduced to". Since you are using yang-version 1.1, it would be more
> appropriate with a reference to RFC 7950.
> 
> 2. Identity equality tests
> 
> There are a couple of places in the YANG that check that an interface is
of
> Nve type. Currently this is done using an equality test. While that can
work, a
> better and more future proof way is to use derived-from-or-self(). So
change
> 
>  must "(/if:interfaces/if:interface[if:name=current()]/if:type='Nve')";
> 
> to
> 
>  must
>
"derived-from-or-self(/if:interfaces/if:interface[if:name=current()]/if:type
,
>  'Nve')";
> 
> 3. Behavioral constraints defined in English text
> 
>           list static-peer {
>             key "peer-ip";
> ...
>             leaf out-vni-id {
>               type uint32 {
>                 range "1..16777215";
>               }
>               description
>                 "The ID of VNI for outbound. Do not support separate
deletion.";
>             }
> 
> I'm not completely clear as to the "Do not support separate deletion" is
> supposed to mean. If every static-peer must have an out-vni-id, it should
be
> marked mandatory. If this is supposed to mean that an out-vni-id may be
> added, but not deleted, that violates one of the basic principles in YANG.
The
> validity of a configuration should not depend on anything else than the
> configuration itself. In particular, the validity of an upcoming
configuration
> should not depend on the prior configuration.
> 
> If you don't want out-vni-id to be mandatory, but also don't want people
to
> be able to delete it without deleting the static-peer, I would recommend
> making out-vni-id part of the key for static-peer, and ensure it can take
a
> value that essentially means none. For example like this:
> 
>           list static-peer {
>             key "peer-ip out-vni-id";
> ...
>             leaf out-vni-id {
>               type union {
>                 type enumeration {
>                   enum none;
>                 }
>                 type uint32 {
>                   range "1..16777215";
>                 }
>               }
>               description
>                 "The ID of VNI for outbound. Do not support separate
deletion.";
>             }
> 
> 4. Repetition of config false
> 
> In many places within the module, there are config false statements inside
> elements that are already config false. While this is perfectly legal, it
is
> superfluous. Once a container or other element is marked config false,
> everything below that point will always be config false. The IETF
convention is
> to not write config false in more places than necessary.
> 
>       container peers {
>         config false;     <--- Everything within/below container peers is
now
>         config false description
>           "Operational data of remote NVE address in a VNI.";
>         list peer {
>           key "vni-id source-ip peer-ip";
>           config false;     <--- Superfluous
> 
> 5. Weak data format
> 
>       leaf up-time {
>         type string {
>           length "1..10";
>         }
>         config false;
>         description
>           "The continuous time as NVO3 tunnel is reachable.";
>       }
> 
> YANG strings are great when used for names that the client can choose
> arbitrarily. They are not so great when they encode information that is
not a
> name, unless there is a detailed description of the encoding. Since the
> encoding of the up-time leaf is not specified, the contents will not be
> interoperable. Either remove this leaf, or better, describe the format of
the
> contents so that it can be decoded. Changing the type from string to some
> time type might be a good option.
> 
> 6. Identities conventionally start with lowercase letters
> 
> By convention, all identities defined by IETF start with a lower case
letter.
> Citing the principle of least surprise, I would recommend changing
> 
>   identity Nve {
> 
> to
> 
>   identity nve {
> 
> 7. RPC or Action
> 
> In YANG 1.1, rpc:s that pertain to a certain element in the data tree can
be
> modeled as actions instead. This often leads to a more coherent model with
> less text. In this module, that seems to be the case for the two rpc:s
defined.
> Therefore I would suggest changing
> 
>   rpc reset-vni-peer-statistic {
>     description
>       "Clear traffic statistics about the VXLAN tunnel.";
>     input {
>       leaf vni-id {
>         type uint32 {
>           range "1..16777215";
>         }
>         mandatory true;
>         description
>           "The ID of the VNI.";
>       }
>       leaf peer-ip {
>         type inet:ip-address-no-zone;
>         mandatory true;
>         description
>           "The address of the remote NVE.";
>       }
>       leaf direction{
>         type direction-type;
>         mandatory true;
>         description
>           "Traffic statistics direction for the tunnel.";
>       }
>     }
>   }
> 
> to
> 
>         list statistic {
>           key "vni-id peer-ip direction"; ...
>           action reset-vni-peer-statistic {
>             description
>               "Clear traffic statistics about the VXLAN tunnel.";
>           }
> 
> Best Regards,
> /jan
> 
> 
> 
> _______________________________________________
> yang-doctors mailing list
> yang-doctors@ietf.org
> https://www.ietf.org/mailman/listinfo/yang-doctors