[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: comments on draft-ietf-netconf-prot-09
Martin Bjorklund wrote:
Andy Bierman <ietf@andybierman.com> wrote:
IMO we can't write a super-detailed elements of procedure without knowing
many or all the problems areas, i.e., same input on 2 boxes that supposedly
support the same data model produce different sets of <rpc-error> elements.
We need real data from real implementations, indicating interoperability
problems.
I was more thinking of errors in the protocol, not data-model related
errors. As an example, I have to produce some error message if
someone tries to get-config the candidate configuration, if my
implementation does not support it. Maybe operation-not-supported?
Maybe unknown-element? Maybe your intention is that it doesn't really
matter and that it's up to the implementation. I'm just saying that
some guidelines would help.
In this case, there are plenty of standard error codes to choose from.
and that's the problem. There are 3 error-tags that apply:
Tag: invalid-value
Error-type: protocol, application
Severity: error
Error-info: none
Description: The request specifies an unacceptable value for one
or more parameters.
Tag: operation-not-supported
Error-type: rpc, protocol, application
Severity: error
Error-info: none
Description: Request could not be completed because the requested
operation is not supported by this implementation.
Tag: bad-element
Error-type: rpc, protocol, application
Severity: error
Error-info: <bad-element> : name of the element w/ bad value
Description: An element value is not correct; e.g., wrong type,
out of range, pattern mismatch
IMO, 'invalid-value' is most correct, by process of elimination.
Operation-not-supported is meant to apply to protocol operations,
data-specific RPCs, etc. so that's not it.
Bad element applies to schema errors, value-range errors, etc.
Since 'candidate' is a valid value, this can't be it either.
I agree with you that we would benefit from from developer documentation
that made it easy to decide which error to use in every possible case.
Side bar: We need a monitoring module for NETCONF, especially in
the early days, to debug the protocol. I'm working on a set of counters
(rpcs-rcvd, rpc-replies-sent, rpc-parse-errors, bad-hello-msgs-received,
etc.).
I would really appreciate your input (and all fellow implementors) on this
initial set of counters.
Are these supposed to be readable through netconf, i.e. like a
SNMPv2-MIB for SNMP? How will you specify these objects? Using
netconfmodel's guidelines?
Yes, readable through the <get> operation.
I don't know about the documentation format -- I suppose XSD because I
already
kind of know that.
4. I understand the separation between the protocol and the
underlying application data model. But wouldn't it make sense
to state when the result of an operation depends on the data
model? It's not trivial to understand how the edit-config
operation is supposed to be used without knowledge of the data
model. For example, the first example in 7.2 is
Set the MTU to 1500 on an interface named "Ethernet0/0" in
the running configuration:
<interface>
<name>Ethernet0/0</name>
<mtu>1500</mtu>
</interface>
In this example, the manager has to know that the <name> of an
interface is used as a key (or index) by the agent. If the same
command was issued to an agent which had the <mtu> as key (not
very realistic of course), the result had been quite different!
In fact, does the 'merge' operation make sense at all unless the
manager knows which element(s) are used as key/index? And if
there are no keys, does 'merge' mean anything?
Again, I understand that the draft defines the protocol and not
the model, but I think it would be helpful to at least make a
note of the problem, and that this has to be solved by
implementations (and/or the netconf modelling effort).
How much should a manager application be able to do without knowledge
of the underlying networking technology being managed? How much can
it do without even loading the domain-specific schema?
I think it's reasonable that the manager loads the domain-specific
schema in order to do useful work.
In your example, it seems the manager has no schema loaded,
or you have a schema but you want a standard way to identify instances.
Well, yes I would like that, but that wasn't my point - I just think
it would be helpful if the document mentioned that the semantics of
the edit-config operation is dependant on the data model. Unlike the
other operations.
I think it does in the discussion of the 'operation' attribute, but it's
probably
not that clear. I KNOW it's not apparent from the text that implementing
edit-config and the operation attribute in a nested, modular, yet
completely
automated fashion is non-trivial. :-) :-)
I have another comment which I forgot yesterday. I think the text
about the startup and running configurations could be improved. I did
not understand what a startup configuration was until I searched the
archives and found a good explanation.
okay -- here is the text in question:
5.1: Running Config
o Running: The complete configuration currently active on the
network device. Only one configuration datastore of this type
exists on the device, and it is always present. NETCONF protocol
operations refer to this datastore using the <running> element.
8.7.1: Distinct Startup
The device supports separate running and startup configuration
datastores. Operations which affect the running configuration will
not be automatically copied to the startup configuration. An
explicit <copy-config> operation from the <running> to the <startup>
must be invoked to update the startup configuration to the current
contents of the running configuration. NETCONF protocol operations
refer to the startup datastore using the <startup> element.
How can we make this more clear?
I guess it doesn't actually say in 8.7.1 that <startup> is the
configuration
that will be used upon the next startup of the device. I guess it shows
that the authors were pretty familiar with router CLI configuration and
may assume too often that these are well-understood terms and concepts.
/martin
Andy
--
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/>
--
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/>