Re: [yang-doctors] Small modules discussion from LSR [Fwd: [Lsr] When to augment LSR base YANG modules...]

"Rob Wilton (rwilton)" <> Tue, 02 April 2019 09:52 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 052FB120111 for <>; Tue, 2 Apr 2019 02:52:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -14.5
X-Spam-Status: No, score=-14.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, 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, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id csdWthv7KJu2 for <>; Tue, 2 Apr 2019 02:52:39 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 572021200D5 for <>; Tue, 2 Apr 2019 02:52:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=44630; q=dns/txt; s=iport; t=1554198758; x=1555408358; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=W+lfH370jor8dNDjBEjm8XTPDTRM30f+++mpGnAI0xk=; b=D5pmyOyTE5XWyQ4nj6s7mZNR88VcA0pTgARByUF/Vna9ORHdKXcv08KG Pgy9RrW8IQkRqm067ecmfk1cJ50TikBm4zqbnDkRyZ+PUXprHePPuGUVs lw8cwj+YKYpUw1H/cWwiJ8aJK81wElpFjNRUrD8AzopH1Nop8+qg3UUc4 Y=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-AV: E=Sophos;i="5.60,300,1549929600"; d="scan'208,217";a="253124525"
Received: from ([]) by with ESMTP/TLS/DHE-RSA-SEED-SHA; 02 Apr 2019 09:52:36 +0000
Received: from ( []) by (8.15.2/8.15.2) with ESMTPS id x329qaKg020995 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Tue, 2 Apr 2019 09:52:36 GMT
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 2 Apr 2019 04:52:35 -0500
Received: from ([]) by ([]) with mapi id 15.00.1473.003; Tue, 2 Apr 2019 04:52:35 -0500
From: "Rob Wilton (rwilton)" <>
To: Christian Hopps <>, YANG Doctors <>
CC: Yingzhen Qu <>
Thread-Topic: [yang-doctors] Small modules discussion from LSR [Fwd: [Lsr] When to augment LSR base YANG modules...]
Thread-Index: AQHU6IgFXS0x43TD+0KJTYhFZUbFPKYooAdw
Date: Tue, 2 Apr 2019 09:52:35 +0000
Message-ID: <>
References: <> <>
In-Reply-To: <>
Accept-Language: en-GB, en-US
Content-Language: en-US
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_c691b0e1a8c64b1c8a31070f0d600fc8XCHRCD007ciscocom_"
MIME-Version: 1.0
Archived-At: <>
Subject: Re: [yang-doctors] Small modules discussion from LSR [Fwd: [Lsr] When to augment LSR base YANG modules...]
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Email list of the yang-doctors directorate <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 02 Apr 2019 09:52:45 -0000

Hi Chris,

I don’t think that there is a one size fits all answer here.

If the enhancement is small, and is likely to be reasonably widely used then my view is that adding it as an optional feature to the base module is a better choice in the long term.

If the feature is larger, or esoteric, and perhaps won’t be widely deployed then I would think that putting it into a separate module might be a better choice.

I actually think that it is the IETF process that is perhaps the difficult thing here.  I.e. I think that you want to republish a new revision of the base module, but in a way that gets processed more quickly by the IESG.  E.g. request that they only review/comment on the diffs between the current revision and the previous one.  Or somehow publish an updated revision of the module on github without assigning it a new RFC number every time.


From: yang-doctors <>; On Behalf Of Christian Hopps
Sent: 01 April 2019 13:40
To: YANG Doctors <>;
Cc: Yingzhen Qu <>;
Subject: [yang-doctors] Small modules discussion from LSR [Fwd: [Lsr] When to augment LSR base YANG modules...]

Hi YANG Doctors,

So I started a thread on the LSR mailing list (included below) about including small modules to augment the base protocol modules inline with the small feature drafts that modify the protocol (typically adding TLVs and some config). We probably publish 1-4 of these per year. An opposing opinion was expressed that we should batch these features into meta-modules to avoid creating "too many" modules. I don't know what too many is, and I pointed out that to a client there's really no difference between N modules and 1 module with N optional features (they all show up as capabilities).

So to quote Acee here:

          "Let's have a discussion on YANG doctors list on the merits of a small module per feature vs an aggregate model with features."

There are process issues that are outside the scope of YANG (e.g., will it cause too many authors on a document, delays caused by batching etc).. but we're curious if there are any reasons particular to YANG to do or avoid one or the other.


Begin forwarded message:

From: "Acee Lindem (acee)" <<>>
Subject: Re: [Lsr] When to augment LSR base YANG modules...
Date: March 31, 2019 at 5:09:32 PM EDT
To: Christian Hopps <<>>, Yingzhen Qu <<>>
Cc: Susan Hares <<>>, Rob Shakir <<>>, "<>" <<>>, Tony Li <<>>

Hi Chris, Yingzhen,

Let's have a discussion on YANG doctors list on the merits of a small module per feature vs an aggregate model with features.

We can try this as an experiment. Perhaps, we can get a permanent dispensation to the 5 author rule if every draft needs someone YANG fluent and familiar with the base OSPF and ISIS models.


On 3/31/19, 3:41 PM, "Christian Hopps" <<>> wrote:

On Mar 31, 2019, at 1:31 PM, Yingzhen Qu <<>> wrote:

There are many small feature drafts in LSR, for example:  it only adds H-bit to router-lsa.

For sure we want models to be modular, but not too many tiny pieces. Maybe we should combine a few small features like H-Bit into one module?

   But why?

   Delaying the publication of the management definition until some (so far as I can tell) arbitrary number of features has been collected negatively impacts users. What do they gain in return?



From: Lsr <<>> on behalf of Susan Hares <<>>
Date: Sunday, March 31, 2019 at 7:15 AM
To: 'Rob Shakir' <<>>, "'Acee Lindem (acee)'" <<>>
Cc: "<>" <<>>, "<>" <<>>, 'Christian Hopps' <<>>
Subject: Re: [Lsr] When to augment LSR base YANG modules...

Rob and Acee:

I agree that with Rob that it is a generic problem that you must have a robust way to version and revise the Yang models.   This is true for configuration, operational data, and dynamic data stores.   The netmod modeling is focusing on configuration at this time.

It is critical to determine how the base models yang models prepare for augmentations.  OSPF, ISIS, BGP, FIB/RIB, and policy are key models.   Since our protocols are augmented based on capabilities, augmentation based on the same capabilities for models makes the most sense.   We can review info/data, and code functionality based on the key senses.

If we have good versioning of the base model, can revise both the data model and the capability independently.   If we utilize the grouping of data models based on the versioning, automatic deployment of this work can occur.

Acee and Chris has been actively participating on the versioning discussion in netmod’s work on versioning.   I’m sure they can report if they feel the support his there for this type of version.

BGP and rtgwg can integrate this type of version prior to the upcoming WG LC.


From: Lsr [] On Behalf Of Rob Shakir
Sent: Saturday, March 30, 2019 2:00 PM
To: Acee Lindem (acee)
Cc:<>;<>; Christian Hopps
Subject: Re: [Lsr] When to augment LSR base YANG modules...

I think this is a generic challenge that has to be solved across all protocols -- and relies on a robust way to version and revise YANG modules in the IETF.

In OpenConfig, as we're very lightweight for pushing a new revision, since we're just specifying new versions of modules, adding new features to an existing module is pretty trivial. They can be done as a minor revision if there's no backwards incompatible changes.  It seems better, to me, to ensure that there is common logic for how one splits up modules, to make things actually usable for developers trying to consume them, rather than needing to understand when and where in the IETF a feature was developed.

That being said -- this means one should probably expect each LSR base module to be revised with most new LSR RFCs. With the current agility of the review and publication process -- I'm not sure that is realistic either.


On Sat, 30 Mar 2019 at 09:15, Acee Lindem (acee) <<>> wrote:
Speaking as WG member:

For many of the new LSR WG documents, we are already included both OSPF and IS-IS encodings in a single document. Now, we have agreed that documents requiring simple BGP-LS changes will also include the BGP-LS encoding. Given this, I don't want to add another requirement for publication of a WG document. This would also add additional reviews to the document. You've all heard the expression "divide and conquer", while let me introduce the corollary, "consolidate and stagnate".

Additionally, I agree with Yingzhen's comment that it is not clear that we want a separate YANG module for every OSPF/IS-IS feature.


On 3/29/19, 4:33 AM, "Lsr on behalf of<>" <<> on behalf of<>> wrote:


   One concern is simply one of scale: doing this will increase the size of the document.  At what point do things become sufficiently awkward that we want to have a separate, concurrent document.

   In other words, if the requirement is for concurrent delivery, is co-location really a requirement?


On Mar 29, 2019, at 9:17 AM, Christian Hopps <<>> wrote:

The base YANG modules for IS-IS and OSPF both include operational state to describe TLV data. During the discussion about OSPFv3's version of this data, I brought up the issue of when and how the base modules should be augmented to add new TLV types to the model, suggesting it be done inline and with the RFC that adds the new feature/functionality to the protocol.

I'll go farther here and say this should apply to all the YANG required for management of the new feature, and it should all be added inline with the feature (i.e., in the same draft). In other words new features/functionality should include the YANG augment required to manage said features/functionality.

This has been suggested/tried previously with SNMP with varying (low) levels of success. The difference here is 1) YANG additions (a new module perhaps just augmenting the base) is easy, whereas SNMP wasn't. Additionally, operators weren't using SNMP to fully manage functionality (e.g., not doing configuration) so a requirement for extra work was harder to justify. Operators *do* want to fully manage their networks/servers with YANG though.

The argument against this during the meeting was that it would create many small modules. I don't find this compelling (i.e., "so"? :)

Assume I'm an operator -- the actual consumer of this management stuff:

- If I'm going to use this new feature X, I need to be able to manage it. So I need it YANG for it. Not only do I need any new TLV data in the operational state, but I need the configuration and any other operational state right along with it. Otherwise each vendor has to add new YANG to their vendor modules, or the feature is useless to me. I can't use something if I can't turn it on.

- I don't care about having many smaller modules that augment the base module -- at all. Quite the opposite actually, when new functionality is accompanied by it's own module it provides me a simple way to see if that functionality is present as the module will be present in the YANG capabilities announced by the device.

I'd be interested in hearing reasons we (as a WG) shouldn't just expect a YANG module (even if it's small) to be included with drafts that add new functionality.

Lsr mailing list<>

   Lsr mailing list<>

Lsr mailing list<>
Lsr mailing list