Re: [netmod] draft-openconfig-netmod-opstate: Changes in -01

2015-08-11 Thread Andy Bierman
On Tue, Aug 11, 2015 at 12:12 AM, Juergen Schoenwaelder 
j.schoenwael...@jacobs-university.de wrote:

 On Fri, Aug 07, 2015 at 03:21:48PM -0400, Rob Shakir wrote:
 
 
  Juergen Schoenwaelder wrote:
  But you are right, it is not just the path that is needed to identify
  data residing in configuration datastores. It is in general a tuple
  selector, path  and for configuration data the selector is a
  configuration datastore name.
 
  Thanks for the clarification. Do you have examples of other (i.e.,
  non-NETCONF) systems that utilise this convention that a path is not an
  absolute reference to a certain data node? Reviewing with various
  interested parties, I'm not sure that there are clear cases that form a
  precedent for this.

 SNMP has an even more complex naming scheme.

  If we consider that this then might drive some new behaviour where the
  systems architecture for NMS differs from elsewhere then we might want
  to question whether this is necessary complexity. Indeed, for me this
  comes back to one of the discussions about the other datastores that we
  had on an interim call.

   * 'startup' is really a property of the intended configuration - as to
  whether it has been made persistent. In general, I see very few changes
  that are made where we interact only with the persistent version of the
  intended configuration; and even fewer where the intended configuration
  is not made persistent. In both cases, it tends to be the lack of a
  declarative configuration API that drives the need to interact with
 either.

 You can have a NETCONF server without 'startup' and it still has
 persistent running config. I have no clue what 'the lack of a
 declarative configuration API' means.



The startup datastore simply represents the config that will be used
at the next reboot.

It is useful to compare the running config to candidate or startup.



   * 'candidate' is again a property of the intended configuration -
  insofar that the 'candidate' set of configuration represents a set of
  changes that have not been requested to be transitioned to the 'applied
  configuration'. This makes sense when a human is working through
  building up a transaction (configure protocol X, protocol Y .. protocol
  Z, then commit) - but isn't quite so clear when it programmatic
  interaction with the network.

 There are commercial implementations that make use of candidate
 datastores and the transaction, validation and rollback capabilities
 they provide. You may decide that you do not need them but this does
 not imply that nobody else will need them.



RFC 6241 should be clear that the candidate is a scratchpad.
It has no effect on the system unless and until a commit is attempted.
Since NETCONF (incorrectly) couples the confirmed commit procedure
with the candidate config, it is useful to programmatic APIs.
In reality, confirmed commit has absolutely nothing to do with
candidate, but there seems to be no interest in fixing that.




  It is quite trivial for me to see cases where an external NMS would
  never really need to interact with either of these datastores - such
  that it's quite tricky for me to determine that we really want to
  architect the entire NMS to be able to carry the selector,path tuple
  (stealing your terms, thanks!), especially if this means that it has to
  work entirely differently w.r.t paths than the rest of OSS.

 It is certainly up to you how you architect your NMS the way to think
 it works best. I am just trying to explain how NETCONF and YANG
 work. But I would expect that an NMS is able to integrate namespaces.


We should not dumb-down the standard to support dumb NMS software.
Datastores and namespaces are part of the standard.  Neither are
difficult to implement.

The selector, path approach allows us to use the same path in
 different datastores, this is considered to be a feature and not a
 bug.

 /js



Andy



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

 ___
 netmod mailing list
 netmod@ietf.org
 https://www.ietf.org/mailman/listinfo/netmod

___
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod


Re: [netmod] draft-openconfig-netmod-opstate: Changes in -01

2015-08-09 Thread Martin Bjorklund
Hi,

Rob Shakir r...@rob.sh wrote:
 
 
 Juergen Schoenwaelder wrote:
  But you are right, it is not just the path that is needed to identify
  data residing in configuration datastores. It is in general a tuple
  selector, path  and for configuration data the selector is a
  configuration datastore name.
 
 Thanks for the clarification. Do you have examples of other (i.e.,
 non-NETCONF) systems that utilise this convention that a path is not
 an absolute reference to a certain data node? Reviewing with various
 interested parties, I'm not sure that there are clear cases that form
 a precedent for this.

One example is SNMP, where a tuple (enginge id, context, OID) is
needed.  In general you also need a device id of some sort (address,
port).

How the necessary info is handled seems to be an implementation
detail, and it seems to be pretty trivial, but maybe I have
misunderstood something.

 If we consider that this then might drive some new behaviour where the
 systems architecture for NMS differs from elsewhere then we might want
 to question whether this is necessary complexity. Indeed, for me this
 comes back to one of the discussions about the other datastores that
 we had on an interim call.
 
  * 'startup' is really a property of the intended configuration - as to
whether it has been made persistent. In general, I see very few
changes that are made where we interact only with the persistent
version of the intended configuration; and even fewer where the
intended configuration is not made persistent. In both cases, it tends
to be the lack of a declarative configuration API that drives the need
to interact with either.

I do not understand this comment.  Are you proposing some kind of
changes to current YANG models to handle 'startup'?  Are you proposing
changing NETCONF?

  * 'candidate' is again a property of the intended configuration -
insofar that the 'candidate' set of configuration represents a set of
changes that have not been requested to be transitioned to the
'applied configuration'. This makes sense when a human is working
through building up a transaction (configure protocol X, protocol Y
.. protocol Z, then commit) - but isn't quite so clear when it
programmatic interaction with the network.

If I understand your terms correctly, 'running' would be the intended
configuration.  'candidate' is a separate structure, that is not part
of the intended configuration.

Are you proposing some YANG or NETCONF changes to handle the candidate?

 It is quite trivial for me to see cases where an external NMS would
 never really need to interact with either of these datastores - such
 that it's quite tricky for me to determine that we really want to
 architect the entire NMS to be able to carry the selector,path tuple
 (stealing your terms, thanks!), especially if this means that it has
 to work entirely differently w.r.t paths than the rest of OSS.

Even if we had the four separate datastores 'startup', 'running',
'candidate', and 'applied', it is not entirely clear to me why the
datastore would have to be carried together with the path internally
all the time.  (We do not carry the current datastores in our system
today).  Maybe this is an implementation issue?


/martin

___
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod


Re: [netmod] draft-openconfig-netmod-opstate: Changes in -01

2015-08-09 Thread Rob Shakir

Martin,

To be clear -- I'm not proposing any changes to YANG or NETCONF. I was 
merely trying to write down the discussion that we had on one of the 
interims about ways that 'datastores' may be considered by some 
implementations, particularly as this view can mean that they might be 
able to ignore them - based on the current ones that are implemented.


Martin Bjorklund wrote:

Even if we had the four separate datastores 'startup', 'running',
'candidate', and 'applied', it is not entirely clear to me why the
datastore would have to be carried together with the path internally
all the time.  (We do not carry the current datastores in our system
today).   Maybe this is an implementation issue?
Sure, it does not have to be carried all the time, but is /is/ required 
in some cases. If one wants a standardised 'path' format to be passed 
between systems then there's going to need to be space for the 
'datastore' to be carried in path references that are handed about (even 
if there is a 'default' datastore). I, for one, would find it messy if 
there needs to be context specific ways of handling what a path looks like.


I find the fact that there can be ambiguity for a certain path something 
that is quite different from all other systems, and hence consider it to 
be suboptimal when compared to having a unique path to a particular set 
of data. Having a path that can result in different values being 
returned seems fragile.


Best,
r.
___
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod


[netmod] draft-openconfig-netmod-opstate: Changes in -01

2015-08-07 Thread Rob Shakir

Hi netmod folks,

Prior to the Prague IETF, Anees, Marcus and I took some time to update 
draft-openconfig-netmod-opstate. The intent of this update was two-fold:


 * to provide clarifications of the types of data that we consider to
   exist within a YANG module. This very much reflects the discussions
   that we had both on the interim meeting calls, and subsequently on
   the list. We aimed to document the terms 'intended configuration',
   'applied configuration' and 'derived state', and record the
   relationship between them that we'd iterated on.
 o This is contained in Section 2. We would encourage interested
   parties to review these definitions to ensure that the common
   understanding that we reached has been documented.

 * add some clarifications to the requirements based on alternative
   suggestions that had been briefly mentioned during the interims.
   Particularly, it is worth mentioning:
 o Section 4.5: we added some clarification about paths within some
   of the NMS systems that we are working on.
 o Section 7: which is dedicated to covering some of the
   observations that have been made relating to the proposed
   solution. We (the authors) have tried to provide some feedback
   to some of these points (where it has been possible to do so).

The diff for this revision can be found at 
https://tools.ietf.org/rfcdiff?url2=draft-openconfig-netmod-opstate-01.txt 
- Appendix D provides a brief changelog.


Kind regards,
r.

___
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod


Re: [netmod] draft-openconfig-netmod-opstate: Changes in -01

2015-08-07 Thread Juergen Schoenwaelder
On Fri, Aug 07, 2015 at 10:40:06AM -0400, Rob Shakir wrote:
 
 
 Juergen Schoenwaelder wrote:
 I assume you meandatastore, path  instead ofRPC-call, path.
 
 /js
 Hi Juergen,
 
 Generically, the intent here is express that it is 'some-access-method, 
 path' rather than merely 'path'. The 'some-access-method' might be a 
 reference to a particular datastore, or a certain operation within the 
 access protocol (GET vs. GET-OPER maybe).


Configuration data resides in configuration datastores. This is quite
deeply wired in the NETCONF and YANG specifications.

For operations on the configuration datastores, the datastore name is
passed as an argument in RPC calls. Hence, for configuration data, the
naming model is datastore, path.

There have been many discussions over the years whether there should
be an explicitly named operational datastore since architecturally we
treat operational data somewhat differently. Some of this is hinted
at in section 4.3.3 of RFC 6244 and you can find also various I-Ds
that were posted in this context.

But you are right, it is not just the path that is needed to identify
data residing in configuration datastores. It is in general a tuple
selector, path and for configuration data the selector is a
configuration datastore name.

/js

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

___
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod


Re: [netmod] draft-openconfig-netmod-opstate: Changes in -01

2015-08-07 Thread Rob Shakir



Juergen Schoenwaelder wrote:

I assume you meandatastore, path  instead ofRPC-call, path.

/js

Hi Juergen,

Generically, the intent here is express that it is 'some-access-method, 
path' rather than merely 'path'. The 'some-access-method' might be a 
reference to a particular datastore, or a certain operation within the 
access protocol (GET vs. GET-OPER maybe).


Thanks,
r.
___
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod