[Idr] BGP Yang modules and core features

Jeffrey Haas <jhaas@pfrc.org> Tue, 10 February 2015 23:28 UTC

Return-Path: <jhaas@slice.pfrc.org>
X-Original-To: idr@ietfa.amsl.com
Delivered-To: idr@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 986551A8763 for <idr@ietfa.amsl.com>; Tue, 10 Feb 2015 15:28:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.321
X-Spam-Level:
X-Spam-Status: No, score=0.321 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, IP_NOT_FRIENDLY=0.334, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=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 GLIZ94miOp19 for <idr@ietfa.amsl.com>; Tue, 10 Feb 2015 15:28:39 -0800 (PST)
Received: from slice.pfrc.org (slice.pfrc.org [67.207.130.108]) by ietfa.amsl.com (Postfix) with ESMTP id 43B781A872B for <idr@ietf.org>; Tue, 10 Feb 2015 15:28:34 -0800 (PST)
Received: by slice.pfrc.org (Postfix, from userid 1001) id DB1E7C186; Tue, 10 Feb 2015 18:28:33 -0500 (EST)
Date: Tue, 10 Feb 2015 18:28:33 -0500
From: Jeffrey Haas <jhaas@pfrc.org>
To: idr@ietf.org
Message-ID: <20150210232833.GF26053@pfrc>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
User-Agent: Mutt/1.5.21 (2010-09-15)
Archived-At: <http://mailarchive.ietf.org/arch/msg/idr/YNZe2UP24mzB74Lh5xork6hqyNo>
Subject: [Idr] BGP Yang modules and core features
X-BeenThere: idr@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Inter-Domain Routing <idr.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/idr>, <mailto:idr-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/idr/>
List-Post: <mailto:idr@ietf.org>
List-Help: <mailto:idr-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/idr>, <mailto:idr-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Feb 2015 23:28:40 -0000

IDR,

As a bit of history, I'm the editor/author on the existing BGP MIBs.  The
BGP MIBv2 work stalled out due to no one actually taking their enterprise
implementation and normalizing it with the published draft, leaving it in
limbo. 

During the MIBv2 work, one detail that churned the modeling work was the
necessary "core protocol" details to include in the MIB.  The original goal
was to pick some common core BGP features such as route reflection,
confederations, etc. and include them.  However, it later occurred that 
if implementations did not support these common, but core features that they
would not be able to implement the MIB.  This lead to an effort to
restructure the MIB to include these features as optional extension MIBs.
Eventually, that work was abandoned as simply making things too complex.

In my opinion, SNMP MIBs are awful for this type of modeling and I'm
thrilled that Yang has become a useful language in the IETF.

Why bring up the past?  IDR has recently hosted two interims covering
proposed BGP Yang modules:
https://tools.ietf.org/html/draft-zhdankin-idr-bgp-cfg-00
https://tools.ietf.org/html/draft-shaikh-idr-bgp-model-00

Discussion on the drafts was good.  IMO, there are issues in each that need
some resolution.  One issue in particular generated a bit of heated
discussion during the most recent interim and I thought it worth requesting
input from the broader Working Group.

The two models have slightly different goals: zhdankin is intended to be a
bit more of a complete model to serve as a basis for an IETF IDR model.
shaikh is intentionally covering a restricted but common subset of BGP
functionality in the networks of the authors.  Both potentially offer the
long-term option to be extended for greater completeness; Yang is very nice
about allowing extension modules.

The question I'm raising is the core features present in the modules in the
context of IDR eventually adopting a module as "the IETF BGP module".  In
the forms both of these drafts are in, there is no optional configuration.
As an example, -shaikh includes a ipv4-l3vpn-unicast container.  If you were
communicating with a netconf server implementing the module as specified,
your software would believe that l3vpn-unicast is supported.

Unlike SNMP, we're not stuck with the need for a lot of tricks to determine
if a feature that is present in the model is available on the device or not.
The "if-feature" clause in Yang (RFC 6020, sec 7.18.2) permits the module to
make some of the content conditional based on whether a management
implementation supports that feature or not.  (It is advertised in the
netconf hello statement; netconf RFC 6241, section 8.1.)

Support for various address family (AFI/SAFI) configuration and operational
state are obvious targets to make optional.  "Core" features such as route
reflection, confederations, communities?  This is a much harder argument to
make than it was when I began the BGP MIBv2 work.  Even so, anything not
tagged with if-feature becomes effectively a "mandatory to implement"
component for the management plane.  Certainly you could not implement it,
netconf would return an appropriate commit error or failure on <get> for
operational state that wasn't supported.  However, that'd be inelegant at
best.

It would be good if the WG examines these candiate Yang modules and consider
what they'd want as optional features.  

-- Jeff