Re: [Netconf] 4741bis -- :url capability issues

Andy Bierman <andyb@iwl.com> Fri, 30 April 2010 17:03 UTC

Return-Path: <andyb@iwl.com>
X-Original-To: netconf@core3.amsl.com
Delivered-To: netconf@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2CA0A3A69E1 for <netconf@core3.amsl.com>; Fri, 30 Apr 2010 10:03:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.986
X-Spam-Level:
X-Spam-Status: No, score=-1.986 tagged_above=-999 required=5 tests=[AWL=-0.987, BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ydF13tWU+7G4 for <netconf@core3.amsl.com>; Fri, 30 Apr 2010 10:03:17 -0700 (PDT)
Received: from smtp114.iad.emailsrvr.com (smtp114.iad.emailsrvr.com [207.97.245.114]) by core3.amsl.com (Postfix) with ESMTP id C30A93A6928 for <netconf@ietf.org>; Fri, 30 Apr 2010 10:03:16 -0700 (PDT)
Received: from relay21.relay.iad.mlsrvr.com (localhost [127.0.0.1]) by relay21.relay.iad.mlsrvr.com (SMTP Server) with ESMTP id 88F5A1B48B3; Fri, 30 Apr 2010 13:02:56 -0400 (EDT)
Received: by relay21.relay.iad.mlsrvr.com (Authenticated sender: andyb-AT-iwlcorp.com) with ESMTPSA id 2B1291B4163; Fri, 30 Apr 2010 13:02:56 -0400 (EDT)
Message-ID: <4BDB0D40.9050808@iwl.com>
Date: Fri, 30 Apr 2010 10:02:56 -0700
From: Andy Bierman <andyb@iwl.com>
Organization: Interworking Labs, Inc.
User-Agent: Thunderbird 2.0.0.24 (X11/20100411)
MIME-Version: 1.0
To: Phil Shafer <phil@juniper.net>
References: <201004301434.o3UEY42M068686@idle.juniper.net>
In-Reply-To: <201004301434.o3UEY42M068686@idle.juniper.net>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Cc: NETCONF <netconf@ietf.org>
Subject: Re: [Netconf] 4741bis -- :url capability issues
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: andyb@iwl.com
List-Id: Network Configuration WG mailing list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/netconf>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 30 Apr 2010 17:03:18 -0000

Phil Shafer wrote:
> Andy Bierman writes:
>   
>> Hi,
>>
>> Here are more issues for 4741bis:
>>
>> 1) :url as a source for <edit-config>
>>   (Martin already raised this issue)
>>
>>         choice edit-content {
>>           mandatory true;
>>           anyxml config {
>>             description
>>               "Inline Config content: 'config' element.
>>                This is not full 'anyxml' because the <config>
>>                element cannot directly contain a text node.";
>>           }
>>     
>
> I may be missing something, but why can't I put text in <config>?
> If my data model (which NETCONF doesn't care about) is text-based
> config, can I not put that config directly in the <config> element?
>
>   


The NETCONF database is XML.
Standard YANG modules will add child elements to
the <config> element.  Your string database will
be incompatible will all YANG modules.  None of the
filtering or editing operations work on a text <config>
element.

I don't see why the standard should support pointless
or awful data modeling practices.  We forbid XSD list
and XML attributes because they are 'bad practices'.


>>           leaf url {
>>             if-feature url;
>>             type inet:uri;
>>           }
>>         }
>>
>>   The edit-config operation allows <url> as a source,
>>   but there is no explanation what the file has to contain.
>>     
>
> The file contains data acceptable to the data model(s) supported
> by the device.  You can say "go load that file" instead of putting
> it inline with the <config> element.
>   

There is no text in the RFC that treats file contents
differently -- that means they are not different.
That means they must have correct standard contents,
exactly as if the XML was delivered on-the-wire
instead of read from a file.


>   
>>   Does it even have to be XML?
>>     
>
> If should be any content that would be acceptable in a <config>
> element.
>   

Since NETCONF forbids mixed content,
the server either has XML contents or
is a single string.  I suppose if a vendor
wanted to pretend they really support NETCONF,
then a single text string database would seem
like a good idea.  No YANG module could ever be
supported by that vendor.


>   
>>   There is no <get-config> support for a URL database,
>>   so why should there be any partial database editing?
>>     
>
> What's an "URL database"?
>   

an entry in the monitoring data model <databases> element
will exist for each <url> database.  This can be the source
or target of any copy-config operation.  Again, NETCONF
does not make any distinction between copying to <running>
or copying to file:///foo.xml.


>   
>>   Since the URL file always represents a complete database,
>>   there are no operations other than copy-config and delete-config
>>   that apply to it.
>>     
>
> You aren't editing an URL file, you are using a file as an alternative
> to <config>.  That's why it's inside a "choice".
>
>   

You can only provide URL as a source and it represents
an entire config, which is redundant -- the only thing you
can do with edit-config(url) is what you can already do
with copy-config(url).


>> 2) There is no lock support at all for URL databases, so it is 
>>   not even clear that copy and delete are properly supported.
>>
>>   Issue: Should <url> be allowed in <lock> and <unlock>
>>   operations?
>>     
>
> Again, what's an URL database?  This is a new concept not
> currently in 4741.
>
>   

User A: copy-config A to C
User B: copy-config B to C

locking applies to URL as a target just as much as
it applies to the other databases.  I don't understand
why 'hoping for the best' is an acceptable write-collision
strategy for :url, but not for other write targets.


>> 3) :url interoperability
>>
>>   It is not clear what a client application should expect
>>   for any given scheme, or what schemes a server SHOULD
>>   or even MAY support.
>>
>>   Issue: is the :url capability interoperable?
>>   If not, what should be done about it?
>>     
>
> Not sure I follow you here, but the scheme allows the server
> to tell the client what it supports.  There is no SHOULD or
> MUST, and MAY is pointless.
>   


At some point, NETCONF will attempt to advance to Draft Standard.
At that time, we will be forced to assess NETCONF interoperability.
Entire sections will be tossed out at that time, unless there are
2 independent inter-operating implementations.


>   
>>   Current text:
>>       Similarly, just because someone says "go write a configuration
>>       through the URL capability at a particular place", this does not mean
>>       that an element should do it without proper authorization.
>>     
>
> s/element/device/
>
> s/someone/a client/
>
>   
>> 5) 'file' scheme
>>
>>   It is not clear whether:
>>     - absolute path specs must be supported by the server
>>     - the path-spec represents a conceptual file-system in 
>>       the server, or the real file-system.
>>     - sub-directories must be supported
>>     - how many sub-directory levels deep are allowed
>>     - other restrictions apply, such as naming, number of files, etc.
>>     - if the internal mirrored NV-store is really a file,
>>       whether this file is accessible via the <url> parameter.
>>     - if the external :startup config is accessible via the <url> 
>>       parameter.
>>
>>   Issue: are any guidelines needed for the 'file' scheme?
>>   This is the most likely scheme to be supported by a server.
>>     
>
> There are massive interoperability issues with "file:", but
> clearly absolute paths are required (file:///), but that the
> device need not allow direct access to its native file systems,
> if any, so the device can use any file naming mechanism.  There
> are no requirements in place re: directories, etc.  Given the
> extreme range of networking gear, I'm not sure this is worth
> diving into.
>   

IMO, the :url capability is not interoperable and should
be removed from NETCONF, but since we are cycling at
Proposed Standard it is not important.

> Thanks,
>  Phil
>
>   
Andy