[NGO] Re: Why NETCONF needs a data modeling language

Andy Bierman <ietf@andybierman.com> Fri, 30 November 2007 19:27 UTC

Return-path: <ngo-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1IyBWg-0002Ae-FM; Fri, 30 Nov 2007 14:27:50 -0500
Received: from ngo by megatron.ietf.org with local (Exim 4.43) id 1IyBWe-00023P-Td for ngo-confirm+ok@megatron.ietf.org; Fri, 30 Nov 2007 14:27:48 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1IyBWe-000237-JH for ngo@ietf.org; Fri, 30 Nov 2007 14:27:48 -0500
Received: from smtp115.sbc.mail.sp1.yahoo.com ([69.147.64.88]) by ietf-mx.ietf.org with smtp (Exim 4.43) id 1IyBWd-0007Je-Jr for ngo@ietf.org; Fri, 30 Nov 2007 14:27:48 -0500
Received: (qmail 58448 invoked from network); 30 Nov 2007 19:27:40 -0000
Received: from unknown (HELO ?192.168.0.10?) (andybierman@att.net@207.215.248.215 with plain) by smtp115.sbc.mail.sp1.yahoo.com with SMTP; 30 Nov 2007 19:27:40 -0000
X-YMail-OSG: p5nTzfsVM1lWvK8VEhVUyAXZIua6kmtdlOs9Ee51fb08CbPZ
Message-ID: <475064A5.1060300@andybierman.com>
Date: Fri, 30 Nov 2007 11:29:41 -0800
From: Andy Bierman <ietf@andybierman.com>
User-Agent: Thunderbird 2.0.0.9 (Windows/20071031)
MIME-Version: 1.0
To: David Harrington <ietfdbh@comcast.net>
References: <474E0F71.2050003@andybierman.com> <241201c83366$9acf8070$6502a8c0@china.huawei.com>
In-Reply-To: <241201c83366$9acf8070$6502a8c0@china.huawei.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 963faf56c3a5b6715f0b71b66181e01a
Cc: yang@ietf.org, discuss@apps.ietf.org, 'NETCONF Goes On' <ngo@ietf.org>
Subject: [NGO] Re: Why NETCONF needs a data modeling language
X-BeenThere: ngo@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: NETCONF Goes On - discussions on future work and extensions to NETCONF <ngo.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/ngo>, <mailto:ngo-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/ngo>
List-Post: <mailto:ngo@ietf.org>
List-Help: <mailto:ngo-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/ngo>, <mailto:ngo-request@ietf.org?subject=subscribe>
Errors-To: ngo-bounces@ietf.org

David Harrington wrote:
>  
>> Hi,
>>
>> 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?
> 
> I'll take a whack at answering the same questions.
> 
> A1) Why does NETCONF need a DML at all?
> 
> to promote vendor-neutral interoperable management. 
> 
> It is much easier to develop standards when everybody uses the same
> basic language to communicate; this "common language for shared
> communication" is also reflected in the IETF decision to use English
> text and ASCII documents.
> 

This is a good point.
I always thought it was important that if I knew how
to read one MIB module, I knew how to read them all.

If though I know how to read XSD (and most of RNG),
vendors and WGs are all over the map wrt/ how they are used.

<plug>
IMO, there are language-independent issues, such as data
organization and data naming, that are discussed in
draft-bierman-ncx-smi-00.txt.  We should at least try
to understand the difference between the landscape
10 years from now, with and without any data organization
conventions.  These issues need to be dealt with consistently,
regardless of the DML being used.  Even if YANG is used,
the XSD translation needs to match in every way.
</plug>

> This is not just about being able to standardize **device
> management**; it is a basic step to permit the standardization of
> **network management** and possibly **services management". The DML is
> a basic building block.
> 
> A2) Why is NETCONF special?
> 
> It is and it isn't. Netconf is only one protocol used for network
> management. 
> 
> It has some unique requirements, such as using a document-based
> approach and differentiating the data for config versus state and for
> dealing with different time-defined contexts such as running and
> startup configs. This differs from other network management protocols,
> such as SNMP and syslog and ipfix, which use their own data formats,
> and usually deal only with the currently-running config. Netconf is a
> tool designed to meet the special requirements of configuration, and
> the DML needs to support special features not found in other NM-DMLs. 
> 
> Netconf is not special, in that any language used for network
> management is likely to have certain common requirements. NM data
> models are commonly used directly by humans, in their raw form, such
> as when they troubleshoot problems using network sniffers. NM data
> models are also commonly used by NMS applications that can handle the
> translations into a more human-readable format. Designers of NM tools
> (e.g., protocols and data models) thus need to pay close attention to
> who will use the information, and to assume that the data will be used
> both directly by humans and by applications. Operators have complained
> strongly that OIDs are very hard to work with in raw form, yet
> operators frequently need to deal with the raw form of the data.

Not just the OIDs, although they are horrible.
Also the limited data modeling capability,
primitive protocol operations, and the very
small granularity of data access.

NETCONF addresses many of the short-comings of SNMP,
which one would expect when given 15 years of hindsight
to start with.


> 
> A3) Why won't lots of other WGs want to define their own
>         protocol-specific DMLs?
> 
>.....
> A4) Why isn't XSD or RelaxNG good enough?
> 
> As mentioned in A2, NM data models need to be both machine- and
> human-readable. XSD is machine-readable, but it is a tough language
> for humans. RelaxNG seems better. 
> 
> As discussed further in a different email, Netconf will almost
> certainly need a DML suited to its requirements, and if RelaxNG is
> found to be human-friendly-enough, we would almost certainly still
> need to select a subset and adapt it to meet configuration
> requirements. So the benefit of using RelaxNG over a domain-specific
> DML may be lost by using an adapted-subset of RelaxNG.
> 
> Most operators already understand languages like Perl and C and
> Javascript, because they already need to write lots of scripts to
> manage their networks. Most implementers of NM support in
> internetworking devices work in C or a variant of C. It makes a lot of
> sense to use a language with a C-like syntax for these people, rather
> than forcing them to learn yet another language that was designed for
> some other purpose.


It is not an accident that YANG looks familiar to people
who know SMI and C.  YANG uses something similar to the
RNG-compact clause format, which is very readable, and very extensible.

YANG has some subtle improvements over SMI, besides the obvious ones.

In SMIv2 we write:

    InterfaceIndex ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "d"
        STATUS       current
        DESCRIPTION
                "A unique value, greater than zero, for each interface
                or interface sub-layer in the managed system.  It is
                recommended that values are assigned contiguously
                starting from 1.  The value for each interface sub-
                layer must remain constant at least from one re-
                initialization of the entity's network management
                system to the next re-initialization."
        SYNTAX       Integer32 (1..2147483647)

In YANG:

    typedef InterfaceIndex {
        smiext:DISPLAY-HINT "d";
        status current;
        description
                "A unique value, greater than zero, for each interface
                or interface sub-layer in the managed system.  It is
                recommended that values are assigned contiguously
                starting from 1.  The value for each interface sub-
                layer must remain constant at least from one re-
                initialization of the entity's network management
                system to the next re-initialization.";
        type int32 {
           range "1..max";
        }
     }


Note 3 things:

   1) keywords that start a clause can have a prefix,
      meaning that they are language extensions, defined
      elsewhere with the 'extension' clause.

   2) strings are usually quoted, but if they don't contain
      whitespace, or a few special tokens, they can be unquoted,
      like 'current'.

   3) The range clause has 'min' and 'max' keywords, so you don't
      have to hunt down a previous example and paste in '2147483647'
      anymore.  The compiler will fill it in for you.



> 
> [soap]
> somebody commented that the designers of XSD and RelaxNG really
> understand how to design DMLs, implying that the OPS community does
> not. Many of the people involved in the ongoing DML discussions over
> the years, and now, are MIB Doctors and operators and protocol
> designers, and have had years of experience designing and working with
> SMI and network management. They understand the requirements of a DML
> for NM far more than the designers of XSD or RelaxNG, who were not
> designing their DMLs for NM purposes.
> [end soap]
> 
> David Harrington
> dbharrington@comcast.net
> ietfdbh@comcast.net
> 
> 

Andy



_______________________________________________
NGO mailing list
NGO@ietf.org
https://www1.ietf.org/mailman/listinfo/ngo