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

Ladislav Lhotka <lhotka@nic.cz> Tue, 11 April 2017 11:26 UTC

Return-Path: <lhotka@nic.cz>
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 D4373129442 for <netmod@ietfa.amsl.com>; Tue, 11 Apr 2017 04:26:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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 gsi9cXxkW5Yz for <netmod@ietfa.amsl.com>; Tue, 11 Apr 2017 04:26:44 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 34484128C83 for <netmod@ietf.org>; Tue, 11 Apr 2017 04:26:43 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id E0E20182000E; Tue, 11 Apr 2017 13:23:48 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, rwilton@cisco.com
Cc: netmod@ietf.org
In-Reply-To: <20170411.121313.282585946337498966.mbj@tail-f.com>
References: <CABCOCHTtihJuFauSW4KmaoCHJSFYgNCR200MWsLQ_7456HsO0w@mail.gmail.com> <589a9020-b987-dbe5-d704-cf981de33b51@transpacket.com> <773bc744-f147-f854-87c1-cad0d61d1ab8@cisco.com> <20170411.121313.282585946337498966.mbj@tail-f.com>
Date: Tue, 11 Apr 2017 13:26:40 +0200
Message-ID: <m2mvbnw5fz.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/9T6lhAePZBX1XVqg5F1XxOhOonQ>
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 11:26:47 -0000

Martin Bjorklund <mbj@tail-f.com> writes:

> 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

Yes. Such use cases were actually the motivation for introducing
multiple inheritance of identities in the first place. 

> 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.

But then iana-if-type would diverge from the underlying IANA
registry, which would be confusing. It is IMO better to start a new
module (or a few of them) with a sound structure of interface types and
no reference to the IANA interface registry.

Lada

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

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