Re: [netmod] YANG doctor review of draft-ietf-netmod-intf-ext-yang-04
Martin Bjorklund <mbj@tail-f.com> Tue, 11 April 2017 11:31 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 3C78A127775 for <netmod@ietfa.amsl.com>; Tue, 11 Apr 2017 04:31:26 -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 kGi3FvQbl2uY for <netmod@ietfa.amsl.com>; Tue, 11 Apr 2017 04:31:24 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 4731C126C25 for <netmod@ietf.org>; Tue, 11 Apr 2017 04:31:24 -0700 (PDT)
Received: from localhost (unknown [173.38.220.40]) by mail.tail-f.com (Postfix) with ESMTPSA id 584931AE0351; Tue, 11 Apr 2017 13:31:23 +0200 (CEST)
Date: Tue, 11 Apr 2017 13:31:33 +0200
Message-Id: <20170411.133133.535844576323902109.mbj@tail-f.com>
To: lhotka@nic.cz
Cc: rwilton@cisco.com, netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <m2mvbnw5fz.fsf@birdie.labs.nic.cz>
References: <773bc744-f147-f854-87c1-cad0d61d1ab8@cisco.com> <20170411.121313.282585946337498966.mbj@tail-f.com> <m2mvbnw5fz.fsf@birdie.labs.nic.cz>
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/2TsQtNUndgVqgUfi4lABGz2Cy8w>
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:31:26 -0000
Ladislav Lhotka <lhotka@nic.cz> wrote: > 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. I don't think it would diverge - all interface types would be there, but some have additional properies (which are not visible in the MIB). But the underlying registry somehow needs to be extended. /martin
- Re: [netmod] YANG doctor review of draft-ietf-net… Vladimir Vassilev
- Re: [netmod] YANG doctor review of draft-ietf-net… Robert Wilton
- Re: [netmod] YANG doctor review of draft-ietf-net… Martin Bjorklund
- Re: [netmod] YANG doctor review of draft-ietf-net… Ladislav Lhotka
- Re: [netmod] YANG doctor review of draft-ietf-net… Martin Bjorklund
- Re: [netmod] YANG doctor review of draft-ietf-net… Ladislav Lhotka
- [netmod] YANG doctor review of draft-ietf-netmod-… Andy Bierman
- Re: [netmod] YANG doctor review of draft-ietf-net… Robert Wilton