Re: [Netconf] Does NMDA support synchronous configuration operation?

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> Tue, 26 June 2018 06:42 UTC

Return-Path: <j.schoenwaelder@jacobs-university.de>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 383B4130FCF for <netconf@ietfa.amsl.com>; Mon, 25 Jun 2018 23:42:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=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 SOZeNrRgMEme for <netconf@ietfa.amsl.com>; Mon, 25 Jun 2018 23:42:38 -0700 (PDT)
Received: from anna.localdomain (anna.eecs.jacobs-university.de [IPv6:2001:638:709:5::7]) by ietfa.amsl.com (Postfix) with ESMTP id 929FB130FBA for <netconf@ietf.org>; Mon, 25 Jun 2018 23:42:38 -0700 (PDT)
Received: by anna.localdomain (Postfix, from userid 501) id 90E5422B32B5; Tue, 26 Jun 2018 08:42:35 +0200 (CEST)
Date: Tue, 26 Jun 2018 08:42:35 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Henry Yu <hyu2010b@gmail.com>
Cc: kwatsen@juniper.net, netconf@ietf.org
Message-ID: <20180626064235.jnabmdwyc4nvg3no@anna.jacobs.jacobs-university.de>
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
Mail-Followup-To: Henry Yu <hyu2010b@gmail.com>, kwatsen@juniper.net, netconf@ietf.org
References: <CAFsbzLmF+=x7Uiru8mT_17gGxmPwaLn_k735JMDVyo3OTumZRQ@mail.gmail.com> <20180622224731.dvjo3vzcxkc46ggl@anna.jacobs.jacobs-university.de> <CAFsbzL==MsLiQznaLgjEsPV5D5tBPgpgcdG76riD4Yy_DODHOA@mail.gmail.com> <20180624082954.jboxxqxpuj732vat@anna.jacobs.jacobs-university.de> <CAFsbzLmWQ4me9=bsnJSNM6cKdHdGoh4EWNCxwobwtxbAVhqHRg@mail.gmail.com> <A2A3EF88-AA18-4E9B-857A-A0EEA83A163B@juniper.net> <CAFsbzLnEP=wQW32y_4CRriB8XxhjXtVSc1cFZ6ogg0nWs28DLg@mail.gmail.com> <20180625190014.4iysuylegm5ji6lw@anna.jacobs.jacobs-university.de> <CAFsbzLmtYAUtOMSqkhyJYqUUMUHJRkZu8zADPRWe95SV68e_Zw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CAFsbzLmtYAUtOMSqkhyJYqUUMUHJRkZu8zADPRWe95SV68e_Zw@mail.gmail.com>
User-Agent: NeoMutt/20180622
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/xrwKdBnTJ3r8Yk5MAnqE2Fg42EM>
Subject: Re: [Netconf] Does NMDA support synchronous configuration operation?
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.26
Precedence: list
List-Id: Network Configuration WG mailing list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/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: Tue, 26 Jun 2018 06:42:51 -0000

On Mon, Jun 25, 2018 at 07:11:11PM -0400, Henry Yu wrote:
> Hi Juergen,
> 
> On Mon, Jun 25, 2018 at 3:00 PM Juergen Schoenwaelder
> <j.schoenwaelder@jacobs-university.de> wrote:
> >
> [snip snip snip]
> >
> > Note that once you deal with pluggable hardware, you often loose the
> > synchronous behaviour since <running> and <operational> can deviate
> > depending on hardware resources present. (This may also be true for
> > pluggable software, i.e., software features controlled by licenses.)
> 
> You mentioned, in an earlier response as well, that "the change of
> <running>, however, does not require that all changes have propagated
> to <operational>".  I interpret it as that, in case of this pluggable
> hardware scenario, when client, for example, POST a configuration,
> server should save it into <running>, even when the target pluggable
> is unavailable. This, of course, would cause difference between
> <running> and <operational>. But the POST operation itself is
> successful and returns success to client.
> 
> The above would be my implementation of the server. However, some
> people believe a different implementation:  that the config should not
> be saved to <running> if the pluggable is unavailable. And when
> pluggable is unavailable, server should fail the POST config operation
> and return error to client. We need to know which implementation is
> correct. That's why I asked for clarification.

NMDA was designed to make it easy to expose differences between
<running> and <operational>. As said earlier, an edit-data operation
on <running> succeeds if <running> is valid after the configuration
change. It is not required that the configuration change has been
applied, i.e., is reflected in <operational>.

Systems that support pluggable hardware usually accept config for
hardware which is not present and when new hardware appears, the
config system checks whether there is matching configuration and if so
applies it. Note that the alternative where <running> always is
restricted to the (pluggable) hardware present leads to some odd
behaviour if you unplug hardware - in this case you would have to
remove config from <running> in order to keep <running> consistent
with the hardware. This will take clients by surprise and it will take
people by surprise (you unplug an interface card and you plug it back
a second later and all config has been lost).

Since you design a new implementation, I suggest you design it
following the NMDA model, i.e., the first option you describe above.
(Note that this is also the spirit of RFC 6241; the main difference
between RFC 6241 and the NMDA extension of RFC 6241 is that RFC 6241
did not expose <operational> and the notion of applied configuration.)

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <https://www.jacobs-university.de/>