[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: comments on draft-ietf-netconf-notification-01.txt



Juergen Schoenwaelder wrote:
On Wed, May 03, 2006 at 12:38:35PM -0700, Andy Bierman wrote:
There is always engineering trade-offs to consider.

I agree it will always be simpler on the NMS for
a particular task to use a specialized API that moves
complexity to the agent.  It is not simpler on the agent
to add new specialized code than it is to reuse existing code.

I am not convinced that using a verb instead of a data model makes any
difference implementation wise on the agent. I accept that your
experience might be different from mine so we do not have to agree on
this.
This approach doesn't scale well.
By the time you define 5 or 10 specialized RPCs for each
possible feature, you have 5000 special RPCs
and no reusable code.

My background is work on DISMAN MIBs and I can assure you that the
fact that we had to cast every disman operation into gets/sets on a
data model did not make things simpler. In fact, it requires some
engineering efforts to cast out verbs from many data models that can
be provided as a library to be used by applications. In some MIBs, I
started to write down procedures how the various knobs should be used
to implement a verb. Here is also a quote from RFC 3535:

   -  Several standardized MIB modules lack a description of high-level
      procedures.  It is often not obvious from reading the MIB modules
      how certain high-level tasks are accomplished, which leads to
      several different ways to achieve the same goal, which increases
      costs and hinders interoperability.

I also note that CLIs tend to have lots of verbs and even though you
might not like this approach, they have at least been successful.
Note that I am not arguing we should open up pandora's box and add
verbs for everything (e.g. "shutdown interface" vs. "set interface
status down"). But we should also not fall into the other extreme
where we strictly stick to a fixed set of verbs just for purity
reasons or not very detailed claims of "increased complexity".


Here is my concern.

We have zero standard data models now.
We have zero specialized RPCs now.

The notifications draft completely ignores all
of the write/save/reload operations in the protocol
and reinvents them with specialized RPCs instead.
Except they are under-specified and contradict
the protocol standard in some places (e.g., saying
NV-storage is optional).

I think a combined approach would be acceptable:

1) Define a data model for all the parameters that control/monitor
   the notification subscription, so that it can also be used by the
   agent without any manager subscription.  I.e., a table indexed by
   a name string containing one 'row' per parameter set.  A separate
   table for reusable filters is also needed.

   A notification target table is also needed which is completely
   independent of the session-subscription API.  Parameters such
   as the notification receiver address, user name, and user credentials
   need to be included to configure a traditional notification
   generation application.

2) Use standard operations such as <edit-config> to manipulate
   all notification parameters, even for changing profiles in use.
   <create-subscription> and all other special RPCs go away.

3) A new special RPC <start-notifications> is used
   for a manager to start receiving notifications.
   There is no subscription ID because there is only one
   stream of notifications on this session, which can be changed
   by editing the configuration.

   The <stop-notifications> RPC is used to tell the agent to
   cease notification generation for the session.

4) There is no real need for <suspend> and <resume> because
   the parameters passed in <start-notifications> are trivial.

5) mixed-mode vs. endless-RPC is very problematic.
   I could live with mixed-mode, but I don't want
   the WG coming back next year asking for a lot
   of complicated hacks to deal with the horrible
   operational characteristics of mixed-mode.
   The answer will be "don't mix operations and notifications
   if you are not prepared to deal with the delays or the lost
   notifications."



Andy




We explicitly designed a protocol to provide
a small set of powerful standard operations which can
manipulate any arbitrary data model.
IMO, it is better to stick with this architecture
than ignore it and start on a path of specialized RPCs.

I thought we would have learned from SNMP's history and the success of
CLIs and that we would be a bit more flexible this time around and
take some of the irrational factors of humans also into account when
we design things.

Anyway, I think I stated my preference wrt. notification subscriptions
and if I am just a small minority who has some unusal implementation
experiences, I am fine to accept a more data driven approach (means I
will not object against it).

/js



--
to unsubscribe send a message to netconf-request@ops.ietf.org with
the word 'unsubscribe' in a single line as the message text body.
archive: <http://ops.ietf.org/lists/netconf/>