[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
End WG Last Call: draft-ietf-netconf-prot-04.txt
Hi,
The first WG Last Call for the NETCONF Configuration Protocol
document is now concluded. I'd like to thank the numerous WG
members who reviewed the document and sent comments to the mailing
list. The WGLC for the application mappings documents will
remain open a bit longer since they have not been widely reviewed
yet.
A number of issues and clarifications were raised during the
review period. The following lists identify these issues (Innn)
and clarifications (Cnnn) for further comment. The WG must
now resolve any remaining issues on the WG mailing list, so
an updated draft can be finished ASAP. [ed. - The lists have
not been scrubbed or entered into an issue tracking system yet.]
Please send separate emails for each issue, and use the
issue (or clarification) ID number in the subject line.
thanks,
Andy
I001)
Locking) 4 emails supporting requirement to allow get and get-config
even if the confitg is locked.
--------------------------
I002)
Session ID) How is this conveyed to the client?
--------------------------
I003)
1.1: "MUST support at least one, and MAY support more than one." For
security I'd really rather see the MAY be a SHOULD in that sentence.
--------------------------
I004)
4.5: pipelining: "<rpc> request are processed serially" This should
be a MUST. Doing otherwise leads to indeterminate results.
---------------------------
I005)
section 6: I don't think this section is ready to go to the IESG yet.
It needs more review and editing.
---------------------------
I006)
section 6: I have a few concerns about the filtering as defined.
1) I find it confusing that there is a subtle difference between
selection of a particular set of values vs selecting a particular
value. The difference between:
<user>
<name/>
<user>
and
<user>
<name>John</name>
<user>
Is very very subtle. Definable, certainly, but subtle as well.
This means people will get it wrong and get confused (especially
for more complex examples).
2) I don't think it's possible using the current filter system to
select empty values. IE, this:
<user>
<name><name/>
<user>
Will select all user's names, not a user with a blank name.
(please don't tell me you're going to distinguish between <name/>
and <name></name>)
3) logical and vs logical or in selections
In the document this example:
<user>
<name>root</name>
<company-info/>
</user>
<user>
<name>fred</name>
<company-info>
<id/>
</company-info>
</user>
<user>
<name>barney</name>
<type>superuser</type>
<company-info>
<dept/>
</company-info>
</user>
Indicates that there is an implicit logical OR between the
<user> tags and an implicit logical AND between the sub-tags
(name/type in the third user selection).
This is, again, subtle and subject to poor understanding by
users which will lead to errors.
One solution to some of these problems would be to separate the
selected nodes from the value matched nodes using different
groups. Or add an attribute or something. Anything that makes it
more obvious what is going on and is desired.
-----------------------
I007)
7.2: default-operation: none... "as well allowing a simple existence
test for configuration data". This statement should be stricken,
IMHO. If you want an existence test, you should write one into
the protocol (get-config will do this now). I don't think you
should cobble in a feature this way. It may be that it exists
and can be used this way, but I don't think documenting it this
way so it becomes officially supported practice is wise.
-------------------------
I008)
7.2 and others: Is it legal to specify config for non-existent
devices. IE, can I upload a config for a interface which I
haven't physically inserted yet? Or is this going to be
implementation specific? It should be at least mentioned one way
or another.
--------------------------
I009)
7.2: I fail to see how these operations are going to work in some
cases which I'm sure will come up in the future. I'm going to use the
examples enclosed in the section, but I don't think they're
necessarily the right ones to use. But you'll get the idea.
The problem comes from the assumption of the data model that I'm not
convinced will be true. Take the case of messing with an interface.
The examples all show various operations working on an interface named
"Ethernet0/0", and only in the sentences above is it sort-of-mentioned
in English text that the index when searching for things to modify are
going to be based on the name. There is no mention of this actually
in the protocol. Sure, in this particular case it is likely this may
be the only selectable method in the resulting data model and that is
yet to be determined and out of scope. However, I think it is highly
likely that we will end up with a data model(s) that will allow for
separate indexes. So, for the purposes of example, lets say that you
could select an interface by address as well (very conceivable). Is
this legal for a replace:
<top xmlns="http://example.com/schema/1.2/config">
<interface xc:operation="replace">
<mtu>1500</mtu>
<address>
<name>1.2.3.4</name>
</address>
</interface>
</top>
Would that allow you to replace the MTU just as you would if you
specified the name? Or are you going to restrict data models in the
future to only one set of unique indexes? Can I set the MTU of all
interfaces which are up using something like:
<top xmlns="http://example.com/schema/1.2/config">
<interface xc:operation="replace">
<status>up</status>
<mtu>1500</mtu>
</interface>
</top>
This is a solvable problem, obviously. My only concern is that no
where is this type of usage of the protocol discussed. It does have
implications on the resulting data models that are allowed to be
defined.
Fundamentally, this results from data to change and selectors being
intermixed, which technically I think is a mistake (they should be
marked by attributes or in a special section of the tree. I'm sure
that concept will die a horrible death and I'll get flamed for
mentioning it. So, let me just end by repeating: it needs
discussion regardless if you don't want to explicitly talk about how
to select particular values.
--------------------
I010)
7.2 replace: what happens if you replace a container with a set of
elements (say A, B, and C) but the original object also contained
a D element. Does the new one get D as well, or is that nuked (I
think is the case) if operation=replace is put on the high level
object (as opposed to each element for A B and C).
--------------------
I011)
7.3 copy from remote to remote is a "may choose not to support". I
think this is fundamentally a bad thing to ever allow. netconf
should not be a file transfer protocol. The security issues
surrounding such a notion haven't been discussed. You can't
easily specify access control rights for when you're allowed to do
so. It essentially lets any firewall implementing netconf (that
implements URL to URL copying and has access to both an internal
and external network) to be used as a transfer hole in a security
domain. I really think you should say that implementations MUST
NOT support this. It is well beyond the scope of what netconf
should do. It is highly suspect from a security point of view and
will only add more work in the future as you'll have to write
access control rights for when this is acceptable and when it is
not and by what users.
--------------------
I012)
7.3 example shows the use of ftp. Can we use something more secure in
the example please?
--------------------
I013)
7.4: #url allows a url to appear as a delete. doing remote file
management using netconf is questionable at best. From a security
point of view, it makes me cringe.
--------------------
I014)
8.8.5.1: so with #url capability supporting ftp I can force a netconf
client to remote edit files? Is this really wise?
--------------------
I015)
url summary: there are two types of urls: local and remote. Some
operations make sense for some of those, some for others. Some
operations, IMHO, should not be allowed on remote types.
--------------------
I016)
9: Implementators SHOULD also provide a well thought out authorization
scheme with NETCONF. => MUST
--------------------
I017)
9: you need to discuss that global operations MUST disallow the
changing of information that an individual does not have authorization
to perform. EG, if a user U is not allowed to configure an IP address
on an interface but someone else has configured an IP address for an
interface within the <candidate>, then the user U must not be allowed
to perform a copy-config or commit from <candidate> to <running>.
--------------------
I018)
9: Similarly, you need to discuss what happens if you don't use a
lock. Specifically, if user U1 modifies the candidate config in a way
that user U2 is not allowed to, and since U1 MUST NOT be able to
commit those changes then not using a lock could leave a system in a
state where neither U1 nor U2 can commit their changes to running.
--------------------
I019) Commit operation atomicity
[PROT, missing section number]
Proposed change:
If the device is unable to commit all of the changes in the candidate
configuration datastore, then the running configuration must
remain unchanged.
Response:
Capital "'MUST' remain unchanged" and I'm happy with the wording.
--------------------
I020)
d) The description of the error-info states that vendor specific
elements may only be added at the end of the sequence. I do not
really see the need for this rule since namespaces should be used
anyway. I would prefer to not introduce such rules, the
specification should instead spell out that any
extensions/additions must have their own namespace.
--------------------
I021)
g) I had some trouble to figure out what RPC responses can
contain. Section 4.4 says that an <ok> element is sent in
<rpc-reply> messages if no error occurred. Looking at the examples
shown later on, it looks like <ok> is only present if the RPC
was successful and no other result data was returned. I am not
sure why this <ok> is needed at all.
Things get a bit more irritating if I look at the <rpc-error>
elements. Such an element is used to signal an error or a warning.
This raises the question whether a warning can be returned even
though the RPC succeeds. Will I then get <ok> or <something>
followed by an <rpc-error> signalling a warning? Or will the
warning come first? If the RPC does not abort on error, I would
suggest that I can get multiple errors. But this does not seem to
be the case (according to the NETCONF RelaxNG spec.) The RelaxNG
spec (did not check the xsd) requires the element to be <data>
while section 4.2 shows an example which shows <some-content>.
If the idea is indeed that RPC results always show up in a <data>
element, then why not replace <ok> with an empty <data/> element?
I recall some discussion that errors/warnings may actually be
generated while an operation is processed and that they were even
supposed at some point to interleave the data portion. So I assume
there is something missing here. Perhaps the examples used later in
the document focus too much on the no error cases.
--------------------
I022)
r) Section 7.1 IMHO misses text which explain how overlapping operation
attributes are handled. What for example happens if I have:
<... operation="delete">
<... operation="merge"/>
</...>
There might be more interesting combinations. I would prefer to
have well defined rules so that all implementors do the same thing
here. If there are nested operation attribute value combinations
that do not make sense, I think it would be fair to request that
such things are checked before starting the execution of the merge.
--------------------
I023)
t) After reading the <edit-config> part of the spec, I felt that there
is in general a need to have more elements of the procedure spelled
out. I think it would help implementors tremendously if it were
spelled out which tests have to be performed, what the error codes
are that can be generated and so on. At the moment, the document
leaves it to the implementor to figure out what needs to be
checked, in which order, before are while processing an edit-config
and so on. I believe it would help interoperability if some more
guidance would be given here.
--------------------
I024)
E) Section 8.8.3 says shows the following urn format:
urn:ietf:params:xml:ns:netconf:base:1.0#url?protocol={protocol-name,...}
It is unclear what are meta characters here. I guess '{' and '}' are
meta characters if I look at the subsequent examples. Anyway, the
more general comment here is that you identity URI schemes and not
protocols. So perhaps the example should be:
urn:ietf:params:xml:ns:netconf:base:1.0#url?schemes=http,ftp,file
Perhaps life would be even easier if the schemes were announce as
separate capabilities:
urn:ietf:params:xml:ns:netconf:base:1.0#url?scheme=http
urn:ietf:params:xml:ns:netconf:base:1.0#url?scheme=ftp
urn:ietf:params:xml:ns:netconf:base:1.0#url?scheme=file
Perhaps a general discussion how to deal with parameters in
capabilties would be useful. The later version has the advantage
that I do not have to parse the full scheme to check whether the
'file' scheme is supported - a simle string match is good enough.
(But parsing this on the other hand does not seem overly complex
either).
-----------------------
C001)
BEEP, sec. 2.5 BEEP Profile for NETCONF
There are three commands in the BEEP profile. <rpc> and <rpc-reply>.
s/three/two
--------------------------
C002)
PROT, new sec.
add deferred features list appendix
-----------------------------
C003)
PROT, remove sec.
remove the netconf-state data model and all references to it
---------------------------
C004)
PROT, sec. 9
9. Security Considerations
This standard does not specify an authorization scheme, as such a
I think it is better to say
This document does not specify ....
---------------------------
C005)
1.1: "during any session" -> "during any authorized session"
---------------------------
C006)
1.1: "Session specific attributes affect only the session in which they
are changed."
It'll likely be possible to change attributes of a "target"
session? (kill-session is almost changing attributes, but I could
see other more true changes being allowed in the future).
---------------------------
C007)
1.1: for the application stack diagram, it'd be helpful if you added
the stack numbers in the left hand box to match the numbers
below. The first time I looked at it, it took a sec to realize
the numbered list below was counting bottom up.
---------------------------
C008)
1.2: "These capabilities must" -> MUST? (actually this sentence is
somewhat redundant with the first, but I'm not complaining)
---------------------------
C009)
1.2: "The capability URI" -> "A capability URI"
---------------------------
C010)
1.3: The document in general discusses configuration and state.
Discussions within the IETF in the last number of years has included
"control" objects as well. I'd at least mention them, even if you are
either excluding them or lumping them in to the other category.
---------------------------
C011)
1.3: "file would be too large" -> remove "too". subjective. Maybe
"unnecessarily" would be a better choice.
---------------------------
C012)
1.3: "Note that the NETCONF protocol is concerned only with information
required to get the system software into its desired running state."
This is not true. state information retrieval has already been
defined (and even contracts earlier sentences about "state").
---------------------------
C013)
1.3: "If a local database of user authentication..." I'd say this
sentence is beyond scope of the document. You're talking about the
data model here.
---------------------------
C014)
2.1: last p: reference the future "lock" section near the lock word.
---------------------------
C015)
2.2: Security and Privacy is an indeterminate title. How about
"Security, Authentication and Integrity" instead?
---------------------------
C016)
2.3: Authentication: "...entity can be trusted." -> "identity has been
sufficiently proven". Trust is not implied at all by merely
authentication.
---------------------------
C017)
2.3: "should use RADIUS" -> "should allow the use of RADIUS"
---------------------------
C018)
2.3: "whose permissions and capabilities are know" -> "whose
permissions are known". Authentication has nothing to do with
capability negotiation. I actually think better wording could be used
in this paragraph in general. Something that says based on the
authentication it should be possible to determine the authorization
level of the incoming session (it's 5:30AM. I can't think of better
wording at the moment)
---------------------------
C019)
somewhere: A brief intro on http vs urn's in the xmlns tags should be
mentioned somewhere so the reader understands why one is used in some
places and not in others.
---------------------------
C020)
4.1, last example: "example.net/house" -> "example.net/world"
---------------------------
C021)
4.3 "The <rpc-error> includes" should this be a MUST?
---------------------------
C022)
4.3 error-tag: ... See list below for allowed values -> see appendix A
---------------------------
C023)
4.3: error-message: "the error condition." -> "the error condition
intended for human consumption." (IE, don't expect it to be machine
parsible).
---------------------------
C024)
4.3: error-info: the list below -> the list in appendex A
---------------------------
C025)
5.1: I'd be tempted to say that though some netconf operations work on
things like state, they're not considered to be part of the
configuration datastore
---------------------------
C026)
5.1: Section 8.3 and Section 8.7 -> "Capability sections 8.3 and 8.7"
for clarity.
---------------------------
C027)
6.1-6.3: various parts of 6.2 and 6.3 are very redundant with 6.1.
EG: last P in 6.2 is same as 4th in 6.1, 6.3 is the 5th P in 6.1...
Most of the text could use a bit of clean-up. It doesn't read as well
as the rest of the document (which is very well written, so my
expectations have come to be a bit high at this point).
---------------------------
C028)
6 general: A diagram to help match terminology against parameters
would be helpful up front. By the end of the section, my head was
spinning with all the terms regarding matching nodes vs leaves vs ....
---------------------------
C029)
6.1 last p: "or modified or acted upon?" somewhere for operations that
don't just "select"?
---------------------------
C030)
6.5: "the only the content match nodes, plus"... remove "only"
---------------------------
C031)
6.6: This section probably needs to be rewritten. I could barely grok
it after staring at it for a while.
---------------------------
C032)
6.7: agent -> server. (I don't think the rest of the doc talks about
"agent"s much. I may be wrong).
---------------------------
C033)
6.8.2: type=subtree should be mentioned above somewhere first ideally
(I know it's mentioned later)
---------------------------
C034)
6.8.3: The <top> node used in the examples worries me. Is each
standard/company going to define its own "top"?
---------------------------
C035)
6.8.6: siibling -> sibling
---------------------------
C036)
6.8.8: schema/2.0 -> schema/1.2
---------------------------
C037)
6.8.8: "same results" -> "similar results". The results won't be
exactly identical, right?
---------------------------
C038)
7: move the "get" operation up the list under the "get-config"
operation for better grouping.
---------------------------
C039)
7: is "operation not supported" allowed even for the netconf core
operations? I'm not sure there is requirements anywhere (MUST/SHOULD)
for the operational sets that are required to be implemented (simply
defining them doesn't state requirement for implementing them).
---------------------------
C040)
7.1: get-config requires? the source parameter. If so, many of the
(previous, eg) examples don't contain it.
---------------------------
C041)
7.1: positive response: says element returned is contained within
<config> but many of the examples fail to meet this (frequently they
use "data" including in the example in this section!)
---------------------------
C042)
7.2: "The target configuration is not simply" -> "... not necessarily simply"
---------------------------
C043)
7.2: should probably mention that the operation tag is allowed to be
used repeatedly in the tree? It's only sort "sort of" obvious.
---------------------------
C044)
7.2 replace/create: It would be useful to explicitly talk about how
"containers" (eg users) vs "objects" (a user) is treated with
this. IE, if operation=replace is specified at the users level,
then *all* the users are replaced. If specified at the user
level, then just a single user is replaced. This is important for
the reader to understand.
---------------------------
C045)
7 general: it would be useful if potential error codes were specified in
the operation lists... Right now its sort of open in many places.
---------------------------
C046)
7.2 delete: what happens if you do this:
<users>
<user>
<name operation="delete">Fred</name>
</user>
</users>
That'll just delete the name, technically, not the user. Is that
legal? This is where a protocol without a data-model usage case
runs into problems. The concept of containers is important when
talking about operations that affect instances of those containers.
---------------------------
C047)
7.2 replace: Can I do a name change on the search index? IE, if the
interface name is configurable can I change it? There is no
operation to support this thus I must do a delete and create (or
equivelent), right?
---------------------------
C048)
7.2 delete: can I delete all interfaces with MTU of 1500? Does
multiple matches in a data model that may not have defined MTU as
a unique index allowed within the protocol?
---------------------------
C049)
7.2 "Delete the interface" -> "Delete the configuration for the interface".
---------------------------
C050)
7.3 "Otherwise, a new one is created" -> "Otherwise, a new one is
created if allowed."
---------------------------
C051)
7.3 "A device may choose not to support remote to remote copy
operations" -> add "(URL to URL)". (though see my other message
on the concern with this first).
---------------------------
C052)
7.5 "human users" -> "console users"
---------------------------
C053)
7.5: delete "lack of network connectivity". Let the transport deal
with that. If the transport looses it, thats a valid signal. I don't
think netconf should be directly tied to a lower level than the
transport.
---------------------------
C054)
7.5: "If the lock is already held, the <error-tag> element will be
LOCK_DENIED": It'd be better to distinguish between denied due
to access not allowed vs denied vs in-use by someone else.
---------------------------
C055)
7.5: most of the other examples have wording separation between them.
This section doesn't so I'd recommend adding "Example showing an
error when a lock is already in use:" in between the two examples
for better readability.
---------------------------
C056)
7.7: examples don't contain the <top> node that others do. This is
inconsistent throughout the doc. I just wrote it down here.
---------------------------
C057)
7.8: need to mention that replies to previous queries are still sent.
(processing is mentioned, but not the replies to those operations)
---------------------------
C058)
8: "... standards bodies or published as proprietary by vendors" ->
add "etc, ..." or something at the end. Current wording is too
limiting to the types of organizations that are likely to publish
specs.
---------------------------
C059)
8: it is not clear from the sentences why you specified two urns (one
with an embedded xml:ns tag and one without).
---------------------------
C060)
8: "each peer needs to understand only those capabilities that it
might use..." This is not entirely true for #validate. It affects
the results of the on-error parameter if available. In some cases
you'll potentially get errors back and in others not. Sort of
requires that you understand if the capability is there so you can
prepare for or expect errors back. Not sure you want to change
anything though.
---------------------------
C061)
8.3.1: "creating a manipulating" -> creating and manipulating
---------------------------
C062)
8.3.1: I'd use a specific example operation in the example for
"operation" rather than the generic term. It doesn't match the rest
of the examples in the document by making it generic.
---------------------------
C063)
8.3.1: for example, through another capability: Add "EG, lock")
---------------------------
C064)
8.3.4.1: why doesn't the text refer to "<running>" here? A commit is
really a copy-config from <candidate> to <running> even if
#writable-running isn't available and thus I'd make that statement so
the understanding is clear.
---------------------------
C065)
8.3.4.2: I'd state that discard-changes is essentially a copy from
running to candidate.
---------------------------
C066)
8.4.5.1: confirmed-timeout: please please please at least use seconds
rather than minutes here. You're making an assumption about
operational environments. seconds allows for rapid decisions, but
still allows for longer time periods as well (2^32 seconds is a long
time).
---------------------------
C067)
8.5.1: "to be inadvertently altered or removed": This isn't true is
it? Isn't the roll back only applied to the current operation? IE, a
single edit-config in which case it is only rolled back to the start
of the edit-config and has nothing to do with what other people have
done either before or after the current operation?
---------------------------
C068)
8.6.1: "at least for syntax errors". So the exact operation results
are indeterminate? Some devices do something things with this
capability and others do others.
---------------------------
C069)
8.7.1: if startup == running in the rest of the document without this
capability, it should probably be mentioned before this point when
first discussing running.
---------------------------
C070)
8.9.5.1: example needs top too?
---------------------------
C071)
7.7: get should explicitly specify that it only works on running?
---------------------------
C072)
7.5: second bullet: committed -> committed or rolled back
---------------------------
C073)
1. The Abstract section includes acronyms that would better be
expanded (XML, RPC)
---------------------------
C074)
2. Section 1.3 - ' Note that the NETCONF protocol is concerned
only with information required to get the system software into
its desired running state.' Isn't this too limiting?
Are other aspects of device configuration really excluded, or
should we rather say
' Note that the NETCONF protocol is concerned only with information
required to get the device behavior into its desired state (for
example getting the system software into its desired running state).'?
Response:
What about changing "system software" to "device" in this sentence
(I agree with you but want a shorter sentence):
Note that the NETCONF protocol is concerned only with information
required to get the device into its desired running state.
---------------------------
C075)
3. No DTDs - The introduction says 'The contents of both the request
and the response are fully described in XML DTDs or XML schemas,
or both, allowing both parties to recognize the syntax constraints
imposed on the exchange. while secttion 3.2 dully specifies that '
Document type declarations (DTDs) are not permitted to appear in
NETCONF content.' Is not this a contradiction?
Response:
The "No DTDs" restriction means that DTDs are not allowed to
be embedded directly inside NETCONF content. Embedded DTDs are
an official feature of XML that nobody seems to use these days,
as they are awkward and not useful or desirable in NETCONF (we
don't want to require a NETCONF entity to be able to parse DTDs,
for one thing).
The use of DTDs themselves to describe XML content that could
be used with NETCONF is fine.
---------------------------
C076)
4. Section 7.5 - what is an 'Expect script'?
From http://expect.nist.gov/ -
"Expect is a tool for automating interactive applications such as
telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really makes
this stuff trivial. Expect is also useful for testing these same
applications. [...]"
Proposed terminology change: Expect scripts -> CLI scripts
---------------------------
C077)
5. Section 9, second paragraph - what means 'unbnownest'?
This appears to be a misspelling of the word "unbeknownst",
a dictionary entry for which appears below.
---------------------------
C078)
a) The introduction makes the promise that "applications can access
both the syntactic and semantic content of the device's native user
interface" via NETCONF. I think this promise is a bit too strong.
---------------------------
C079)
b) I never liked the replacement of "transport protocol" with
"application protocol" - I think the later term is even more
confusing as the original term "transport protocol". Note that I
found a few places where the document still refers to the
"transport" (just search for it). (Transport is used in the error
reporting mechanism, see the ErrorType definition. Replacing
transport here with application would clearly cause confusion.)
As said above, I prefer the reintroduction of the term "transport"
or even "NETCONF transport" with an explanation in section 1 that
transport in this document refers to the NETCONF transport, which
is not the same as a transport layer protocol.
---------------------------
C080)
c) Section 4.3, error-tag description should refer to appendix A as
follows:
error-tag: String identifying the error condition. See Appendix A
for allowed values.
---------------------------
C081)
e) I prefer "implementor" over "vendor", "implementation-specific"
over "vendor-specific" and so on. This affects several places (just
search for vendor).
---------------------------
C082)
f) Is there any reason why error tags are ALL_CAPS and use underscores
while the other XML elements all use hyphens and lowercase?
---------------------------
C083)
h) page 15: replace "an XSD" with "a schema".
---------------------------
C084)
i) page 17: "...containment nodes the element hierarchy..." ->
"...containment nodes of the element hierarchy..."
---------------------------
C085)
j) page 18: "...get request..." -> "...get operation..."
---------------------------
C086)
k) page 19: "...the filter This..." -> "...the filter. This..."
---------------------------
C087)
l) page 22: "...siibling..." -> "...sibling..."
---------------------------
C088)
m) The title of section 6.8.8 should be changed to "Elements with
attribute naming" or something similar since NETCONF does not deal
with tables.
---------------------------
C089)
n) The first paragraph in section 6.8.8 refers to 'schema/2.0' while
the example uses 'schema/1.2'.
---------------------------
C090)
o) Section 7.1 says under "Positive Response" that the reply contains
a <config> element which I think must be a <data> element.
---------------------------
C091)
p) The description of test-option in section 7.2 says it can take two
values while the xsd says it can take three values.
---------------------------
C092)
q) Section 7.1 on page describes rollback-on-error which is however not
mentioned in the xsd.
---------------------------
C093)
s) Example on page 32: I suggest to replace <mask>255.0.0.0</mask>
with <prefix>24</prefix> as this seems to be the more general
concept.
---------------------------
C094)
u) Section 7.3 says: "The source and target parameters cannot identify
the same URL or configuration datastore." Why not say which error
code is being returned in this case and that it when this must be
checked? [This is kind of an example for comment t) shown above.]
---------------------------
C095)
v) page 36: "...Expect scripts..." -> "...CLI scripts..."
---------------------------
C096)
w) Section 7.5, star bullet two on page 37: Does this only apply if
the commit capability is present?
---------------------------
C097)
x) There are several XML lines which exceed the allowed column number
are require some re-formatting.
---------------------------
C098)
y) Section 7.7 refers to configuration and state data without saying
which configuration source is meant here. I assume it is the
<running> configuration data set. Perhaps this should be made clear
somewhere.
---------------------------
C099)
y) Section 7.9 refers to a 'Bad Value' error, which does not seem to
exist.
---------------------------
C100)
z) page 44: "...proprietary vendors." -> "...proprietary extensions."
---------------------------
C101)
A) Section 8.3.4.1: I assume it copies to <running> - perhaps this
should be spelled out.
---------------------------
C102)
B) I was wondering what the difference is between the #candidate and
just a named file://candidate scratch buffer, e.g.
lock running
lock file://candidate
copy running file://candidate
edit file://candidate ...
copy file://candidate running
unlock file://candidate
unlock running
Perhaps it is the locking? In the example in Appendix D, only the
<running> is locked - does that imply a lock on candidate as well
as it is somehow magically tied to <running>? (And is it magically
tied to <running>?)
Some more explanation might be worthwhile (perhaps in the
appendix). I would find it useful to know whether there are any
real differences here. If there are no real differences, why do we
have two different ways to achieve the same thing?
---------------------------
C103)
C) Section 8.4.5.1 talks about "a confirming commit" without really
saying what that is. I think the example should be extended to show
a confirming commit. (Right now, one has to look into the appendix
where you can find an example. It looks like the confirming commit
is a plain commit without the <commit> element. This raises the
question if it is possible to extend a confirmed commit by just
sending another confirmed commit before the timer goes off.
---------------------------
C104)
D) Section 8.6.4.1 uses the <candidate> datastore to illustrate the
<validate> operation. Since <candidate> is an optional feature,
would it not make more sense to choose a data store that is always
present? Or does #validate not make sense if there is no #startup,
no #candidate and no #url capability?
---------------------------
C105)
F) page 56: "...SHOULD also provide..." -> "...SHOULD provide..."
---------------------------
C106)
G) page 56: "...incompatable." -> "...incompatible."
---------------------------
C107)
H) page 57: "...person in the middle..." -> "...eavesdropping..."
(I don't think you have to be in the middle of the communication
to simply listed to the conversation.)
---------------------------
C108)
I) Section 10 needs to spell out the registration rules for the urn
namespace that netconf is using I think.
---------------------------
C109)
J) Reference [4] is not cited so it can't be normative.
---------------------------
C110)
K) References [9], [10] and [11] are not cited.
---------------------------
C111)
L) Appendix D assumes that either #candidate or #url?scheme=file is
present. Does it meant without these capabilities, you are
seriously restricted in the sense that you can't have a robust
scheme to configure multiple devices? If yes, this probably needs
to be spelled out somewhere clearly so that implementors understand
which capabilities are important and for what reason.
---------------------------
C112)
M) page 72: incomplete sentence "...unrelated changes while."
---------------------------
C113)
N) page 77: "...the first class of allows..." -> "...the first class
allows..."