Re: [netmod] YANG doctor review of draft-ietf-netmod-intf-ext-yang-04

Martin Bjorklund <mbj@tail-f.com> Tue, 11 April 2017 10:13 UTC

Return-Path: <mbj@tail-f.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 E470E1275AB for <netmod@ietfa.amsl.com>; Tue, 11 Apr 2017 03:13:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 UhmOZ8IpWqlU for <netmod@ietfa.amsl.com>; Tue, 11 Apr 2017 03:13:05 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 244FC127286 for <netmod@ietf.org>; Tue, 11 Apr 2017 03:13:05 -0700 (PDT)
Received: from localhost (unknown [173.38.220.40]) by mail.tail-f.com (Postfix) with ESMTPSA id 0854B1AE0351; Tue, 11 Apr 2017 12:13:03 +0200 (CEST)
Date: Tue, 11 Apr 2017 12:13:13 +0200
Message-Id: <20170411.121313.282585946337498966.mbj@tail-f.com>
To: rwilton@cisco.com
Cc: vladimir@transpacket.com, netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <773bc744-f147-f854-87c1-cad0d61d1ab8@cisco.com>
References: <CABCOCHTtihJuFauSW4KmaoCHJSFYgNCR200MWsLQ_7456HsO0w@mail.gmail.com> <589a9020-b987-dbe5-d704-cf981de33b51@transpacket.com> <773bc744-f147-f854-87c1-cad0d61d1ab8@cisco.com>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/JEe4lKi-FlZ48Mbtlb-nAgygYrQ>
Subject: Re: [netmod] YANG doctor review of draft-ietf-netmod-intf-ext-yang-04
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
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: Tue, 11 Apr 2017 10:13:07 -0000

Robert Wilton <rwilton@cisco.com> wrote:
> Hi Vladimir, all,
> 
> 
> On 10/04/2017 17:19, Vladimir Vassilev wrote:
> > Hello,
> >
> > On 04/06/2017 07:43 PM, Andy Bierman wrote:
> >>
> >> 3) identity ethSubInterface
> >>
> >> This identity is used in the encapsulation container when-stmt.
> >> It is not clear if this is intended as a base identity (like identity
> >> sub-interface)
> >> An example for the encapsulation container would help clarify the
> >> expected usage
> >>
> >> This also has 2 bases (sub-interface and l2vlan).
> >> Some explanation in the identity-stmt would be helpful
> >> (since this is a new YANG 1.1 construct)
> > It seems the intentended result was identity similar to
> > ianaift:atmSubInterface (thus the naming convention change
> > ethSubInterface instead of eth-sub-interface). I think it is less
> > confusing to name the identity with the same naming convention used
> > for the rest of the identities introduced e.g. sub-interface,
> > loopback-internal etc. and if needed define new atm-sub-interface
> > based on sub-interface. I am not sure even atm users would like a
> > model where atmSubInterface will be the only identity of all future
> > sub interface based identities not being derived from sub-interface
> > because of this precedent:
> >
> >      augment "/if:interfaces/if:interface" {
> >        when "derived-from(if:type,
> >                           'ietf-if-cmn',
> >                           'sub-interface') or
> >              if:type = 'ianaift:atmSubInterface' or
> >              if:type = 'ianaift:frameRelay'"  {
> 
> My idea was that all sub-interfaces could inherit from a common
> identity.  I don't think that this idea just applies to
> sub-interfaces, but other interface properties as well.  E.g.
>  sub-interface (i.e. any interface that is logically a child interface
>  of some parent interface, e.g. Ethernet/VLAN sub-interface, ATM
>  sub-interface, FR sub-interface)
>  ethernet-like (i.e. does the interface use ethernet framing).
>  E.g. this would apply to physical Ethernet, LAG, IRB interfaces.
>  physical (i.e. an interface that is generally instantiated due to some
>  physical hardware)
>  logical? (This is harder to define, but roughly an interface that is a
>  software construct).
>  there must be other generic properties as well.
> 
> My main aim is for future flexibility.  I.e. so that if need interface
> types get defined in the future they can share existing interface
> related configuration and state without having to redefine it.
> Similarly, if there are vendor specific variants of interfaces then
> they could also reuse the existing interface related configuration and
> state without having to define vendor specific MTU leaves, etc for the
> new interface type.
> 
> My refinement of this idea, is still to define these generic
> properties, but then revise iana-if-type.yang to add these common
> interface properties as additional base identities.
> 
> E.g.
> 
>      identity interface-property-type {
>        description
>          "Base identity from which all interface properties are
>           derived.";
>      }
> 
> 
>      identity sub-interface-like {
>        description
>          "The interface has sub-interface properties";
>        base interface-property-type;
>      }
> 
>      identity ethernet-like {
>        description
>          "The interface uses ethernet framing, e.g. has a MAC address
>          associated with it.";
>        base interface-property-type;
>      }
> 
>      ...
> 
> 
> Then, for example, the IANA type for atm & l2vlan (if this is the IANA
> type for an Ethernet sub-interface) would change from:
> 
> 
>   identity atmSubInterface {
>     base iana-interface-type;
>     description
>       "ATM Sub Interface.";
>   }
> 
>   identity l2vlan {
>     base iana-interface-type;
>     description
>       "Layer 2 Virtual LAN using 802.1Q.";
>   }
> 
> to:
> 
>   identity atmSubInterface {
>     base iana-interface-type;
>     base sub-interface-like;
>     description
>       "ATM Sub Interface.";
>   }
> 
>   identity l2vlan {
>     base iana-interface-type;
>     base sub-interface-like;
>     description
>       "Layer 2 Virtual LAN using 802.1Q.";
>   }
> 
> and hence the augment can just become:
> 
>      augment "/if:interfaces/if:interface" {
>        when "derived-from(if:type, 'ietf-if', 'sub-interface')"  {
>           ...
>      }
> 
> If someone wants to define a new type of sub-interface in the future
> they can.  They just need to ensure that when they define the type in
> iana-if-types it also derives from the sub-interface property, and
> then they would automatically pick up the generic sub-interface
> configuration leaf.  This would fix this issue that having when
> statements on IANA defined interface types isn't really robust or
> flexible.
> 
> Finally, adding these properties to iana-if-types.yang would be a
> backwards compatible change.
> 
> What are other peoples opinion's on this idea?

I think that this is good idea.  We have discussed adding properties
as identities before.  Having them in the iana-if-types would make
these types more useful.

But this would require a non-signinficant change to
draft-ietf-netmod-intf-ext-yang, right?  We would need an update to
iana-if-types and move the identities there.


/martin