Why NETCONF needs a data modeling language

Andy Bierman <ietf@andybierman.com> Thu, 29 November 2007 01:01 UTC

Return-path: <discuss-bounces@apps.ietf.org>
Received: from [] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1IxXmw-00025w-T3; Wed, 28 Nov 2007 20:01:58 -0500
Received: from discuss by megatron.ietf.org with local (Exim 4.43) id 1IxXmv-00025M-2m for discuss-confirm+ok@megatron.ietf.org; Wed, 28 Nov 2007 20:01:57 -0500
Received: from [] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1IxXmu-00024v-MN for discuss@apps.ietf.org; Wed, 28 Nov 2007 20:01:56 -0500
Received: from smtp117.sbc.mail.sp1.yahoo.com ([]) by ietf-mx.ietf.org with smtp (Exim 4.43) id 1IxXms-0004Fh-Vb for discuss@apps.ietf.org; Wed, 28 Nov 2007 20:01:56 -0500
Received: (qmail 26228 invoked from network); 29 Nov 2007 01:01:53 -0000
Received: from unknown (HELO ? (andybierman@att.net@ with plain) by smtp117.sbc.mail.sp1.yahoo.com with SMTP; 29 Nov 2007 01:01:53 -0000
X-YMail-OSG: lskllUoVM1kEpRYjBQCAW6.I7esQD27gQCg_xjT2Jkz9.zHsKRKiKyatICCmIWMwAQidk0mlXo3ldbs2j7O1wCg.
Message-ID: <474E0F71.2050003@andybierman.com>
Date: Wed, 28 Nov 2007 17:01:37 -0800
From: Andy Bierman <ietf@andybierman.com>
User-Agent: Thunderbird (Windows/20071031)
MIME-Version: 1.0
To: discuss@apps.ietf.org
Subject: Why NETCONF needs a data modeling language
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 6d95a152022472c7d6cdf886a0424dc6
Cc: yang@ietf.org, NETCONF Goes On <ngo@ietf.org>
X-BeenThere: discuss@apps.ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: general discussion of application-layer protocols <discuss.apps.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=unsubscribe>
List-Post: <mailto:discuss@apps.ietf.org>
List-Help: <mailto:discuss-request@apps.ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=subscribe>
Errors-To: discuss-bounces@apps.ietf.org


There are a few questions that the IESG and others have asked,
which I will try to address:

   Q1) Why does NETCONF need a DML at all?
   Q2) Why is NETCONF special?
   Q3) Why won't lots of other WGs want to define their own
       protocol-specific DMLs?
   Q4) Why isn't XSD or RelaxNG good enough?


NETCONF needs a formal description of the conceptual data
within a NETCONF configuration database, in order to facilitate
inter-operable implementations of NETCONF-related tools,
such as agents, managers, and translators.

A textual representation is needed, to easily integrate
semantic and syntactic information, in one file.  Translation
or separation would introduce errors.

A protocol-specific data model definition is much more
than an XML instance document description.  NETCONF needs
its own MIB language, just like SNMP needs SMIv2.

If vendors were given an information model instead of a data model,
then they would be free to invent their own data model mappings.
This would be a disaster for multi-vendor interoperability.
Without a single, authoritative, precise definition of the
syntax and semantics wrt/ NETCONF protocol handling, it is
impossible for 3rd party application developers to even attempt
to support NETCONF.


NETCONF is a network management protocol, like SNMP.
It happens to use XML encoding and Xpath filtering,
but it is a network management protocol.  As such,
network operators need to understand the conceptual
management data available on a device (just like the CLI or the MIBs).

XSD and RelaxNG are both complicated.
Network operators are probably not trained programmers like
protocol developers. There are way more operators than there
are protocol developers, and they are much less likely to
be involved in the standards process, than the protocol developer.

The NETCONF WG evaluated XSD and RelaxNG last year.
Examples of data models including the DIFFSERV Info Model
were examined.  Nobody got excited about RNG.  For a real
data model, RNG seemed to be just as impenetrable as XSD.

Data model development in the NETCONF WG has been brutally
slow with XSD.  XSD is a good language to use if you want
to spend a long time learning what to do, and then spend
a long time fixing what you did wrong.  Relatively few
WG members have actually been able to learn either XSD or RNG.

Unlike other protocols that might use XML, a NETCONF data model
is likely to be orders of magnitude larger.  So there is lots more data,
that needs to be understood by lots of non-programmers.


If there are other WGs in the IETF who happen to use XML
for representation of conceptual configuration databases,
then I suppose they might ask for a new DML.  I suppose they
will have to justify their request, no different than creating
a new protocol in the first place.

If they are just using XML to define fairly static protocol PDUs,
then XSD or RNG should be used instead.


A YANG data model defines conceptual data within a NETCONF agent,
just like SMIv2 does for SNMP.  It does not just define
valid PDUs, like other protocols.  Instead, the specialized DML
provides a concise description of all conceivable protocol behavior
related to the management data.

XSD and RNG do not even distinguish between read-only and read-write data.
They are clearly not intended to be used a DMLs for conceptual
datastores, like those found in SNMP or NETCONF.
Instead, they describes XML instance documents.

I have implemented a NETCONF agent, and IMO, 'standard' validation
tools are useless.  Since <get> and <edit-config> allow
an almost infinite combination of actual PDUs, the only
thing these tools can do is identify and reject 'junk'
namespaces and element names not supported by the agent.
They cannot help at all with validating or automating
NETCONF protocol operations or generating <rpc-error> responses.

YANG describes NETCONF configuration databases.
IMO, YANG is way more readable than RelaxNG, but
that is subjective.  The SMIng WG got hung up for
a long time trying to define objective criteria
to evaluate DMLs, but in the end this was a total failure.

For more information on how NETCONF uses XML, see sec. 1.2 of: