[YANG] Underestimating the problem ([was something else])

Phil Shafer <phil@juniper.net> Wed, 16 January 2008 19:09 UTC

Return-path: <yang-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1JFDdt-0002yl-TV; Wed, 16 Jan 2008 14:09:41 -0500
Received: from yang by megatron.ietf.org with local (Exim 4.43) id 1JFDds-0002sT-NS for yang-confirm+ok@megatron.ietf.org; Wed, 16 Jan 2008 14:09:40 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1JFDds-0002nh-93 for yang@ietf.org; Wed, 16 Jan 2008 14:09:40 -0500
Received: from exprod7og104.obsmtp.com ([64.18.2.161]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1JFDdr-0006rq-Iv for yang@ietf.org; Wed, 16 Jan 2008 14:09:40 -0500
Received: from source ([66.129.224.36]) by exprod7ob104.postini.com ([64.18.6.12]) with SMTP; Wed, 16 Jan 2008 11:09:26 PST
Received: from magenta.juniper.net ([172.17.27.123]) by emailsmtp56.jnpr.net with Microsoft SMTPSVC(6.0.3790.3959); Wed, 16 Jan 2008 11:09:00 -0800
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26]) by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id m0GJ8x937394; Wed, 16 Jan 2008 11:09:00 -0800 (PST) (envelope-from phil@idle.juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1]) by idle.juniper.net (8.13.8/8.13.8) with ESMTP id m0GJ8mT8073099; Wed, 16 Jan 2008 19:08:52 GMT (envelope-from phil@idle.juniper.net)
Message-Id: <200801161908.m0GJ8mT8073099@idle.juniper.net>
To: Andy Bierman <ietf@andybierman.com>
In-reply-to: <478E1EF4.4050002@andybierman.com>
Date: Wed, 16 Jan 2008 14:08:47 -0500
From: Phil Shafer <phil@juniper.net>
X-OriginalArrivalTime: 16 Jan 2008 19:09:00.0415 (UTC) FILETIME=[405980F0:01C85873]
X-Spam-Score: -4.0 (----)
X-Scan-Signature: a7d2e37451f7f22841e3b6f40c67db0f
Cc: yang@ietf.org, Ladislav Lhotka <lhotka@cesnet.cz>
Subject: [YANG] Underestimating the problem ([was something else])
X-BeenThere: yang@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: YANG modeling Language for NETCONF <yang.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/yang>, <mailto:yang-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/yang>
List-Post: <mailto:yang@ietf.org>
List-Help: <mailto:yang-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/yang>, <mailto:yang-request@ietf.org?subject=subscribe>
Errors-To: yang-bounces@ietf.org

Andy Bierman writes:
>We will never have standard writable knobs until vendors understand
>the concept of a standard, and make an effort to define some
>standard knobs, which actually provide enough functionality
>to configure the device.

If you are looking for a constant historical line of thought that
explains the failure of standardized configuration, look no further
than this line above.  The "it's the vendor's fault" line has been
a constant albatross around such efforts.  We are better off admitting
that the problem is not simple, and studying the factors that make
it difficult.  Configuration is not simple and underestimating the
problem won't help standardization issues.

In designing configuration for a complex device, you have a
number of goals:

(a) avoid human error -- design the config to make errors
    detectable in software, and observable in "show" output.
(b) be flexible -- customer deployment scenarios exceed your
    vision when you design something.  Allowing for these
    cases is both important and painful.
(c) complexity reduction -- if it's complex to configure, it
    won't get deployed.  And if it does get deployed, the
    support costs for both the customer and the vendor will
    be high.
(d) details should be hidden where possible -- the user shouldn't
    need to fully grok hardware, software, or protocol issues to
    config them.
(e) enhancement/future proofing -- this config needs to work on
    next year's hardware running next year's software, often
    running next year's protocols.
(f) full feature support -- the config needs to fully represent
    the available features your hardware and software support.
(g) got to be consistent -- make it fit inside the rules and
    conventions of your existing syntax
(h) holistic view -- the config should look like a single description
    of a complete system, not a dog's breakfast of tokens.
(i) I'm sure there's more.....

In the fight for simplification, many of these goals cut against
each other.  For example, in trying to be flexible, I have to decide
when an odd configuration is an error and when the user is just
doing something clever (which may be an error, but is an intentional
one).

For standardization, the goals are often completely different.
Expressiveness and accuracy win over simplicity.  A single complex
method of configuration wins over a dual "common" and "advanced"
approach.  The model for a standard must be something that can
support all platforms, which leads to complexity, and the translation
between the standard's complex model and the unique abilities of
individual platforms is non-trivial.

An example is packet filtering, where the device config is more
often dictated by the hardware architecture and the layout of that
hardware (in terms of where packets can be filtered, what can be
filtered on, what can be done to them at that layer, and what
resources are consumed) is often directly visible in the configuration
in order for the customer to express their desired setup.

But a standard needs an "uber" model, where any sort of filtering
can be done at any place with any outcome without concern for
resource impact.  No vendor will implement this model, and the
translation between the model and the device config requires a
strong understanding of the performance .vs. resource utilization
tradeoffs that the customer is willing to make.

For example, some functionality may be available in hardware at
wire rate; other in hardware at lower speed; other in dedicated
CPUs; and still other in the main CPU.  Choosing the proper filtering
point is a matter of both the speed and abilities of that point,
plus chip memory and other contention issues.  And getting a correct
assignment will still be wrong if it's not the assignment the
customer wanted.

This translation must be performed in a way that avoids letting
small changes in the config from turning into large config changes
on the device.  It's not an easy problem, and to my mind it's the
key to device- independent configuration.

The fact that my bgp configuration doesn't look like the bgp
mib shouldn't be surprising, since the two configurations
serve two different masters.  The lack of any automated
translation between the two is the real killer.

A key aspect of this translation is the ability to round-trip,
turning MIBs into device config and back in a way that doesn't
lose information.

The problem isn't getting a few knobs to configure basic functionality,
but getting a solution that's complete enough to give folks sufficient
faith to move toward it.  If it solved 20% of the problem, it's
worthless.  When it solves 80-90% of the problem, it's interesting.

NETCONF gives us the ability to manipulate configuration in XML,
which is a good first step.  YANG gives us the ability to define
that XML in a way that allows extensibility and the expression of
device-specific content, which is a good second step.  The next
step will be a translation framework that allows robust translation
between a standard view and a device specific view.

So I think we are on the right road, although the pace of the journey
is disheartening.  But regressing to this "it's the vendor's fault"
line is completely unproductive.

Thanks,
 Phil


_______________________________________________
YANG mailing list
YANG@ietf.org
https://www1.ietf.org/mailman/listinfo/yang