[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
hierarchical naming
Andy> I think it is better to have automatic reuse of the hierarchical
Andy> naming (for ease-of-use and reusable code generation) than to
Andy> manually flatten out every layer into a SMIv2 table. This goes
Andy> against the very purpose of data abstraction.
Here is my view on this:
(a) The SNMP protocol operations defined in RFC 1905 operate on a
lexicographic ordered list of variables and thus they do not care
whether the conceptual model behind them is a table, nested object
structures or something else.
(b) All existing SNMP applications and tools (except primitive
snmpwalk tools) are based on the notion of conceptual tables and a
"flat" OID space. They won't work with SMI-DS nested naming. To
make them work, you have to "unfold tables" (as you say in section
8.3 in your ID).
(c) Since SMI-DS assumes RFC 1905 protocol operations, you can't
get/set "complex" objects. You still ship lists of varbinds of the
leaf attributes - the same list of attributes you would be
shipping with SMIng or SMIv2. Only the OIDs differ (usually making
the messages a bit longer, but that is not relevant here).
(d) So the question boils down to: What do you gain by having
hierarchical names in the OIDs (under the assumption of RFC 1905
protocol operations)? I did not yet find a good convincing answer
to this question. Note that a code generator which understands
SMIng does know the data organization of the nested structures
before they were flattened out and thus it can generate code to
reconstruct the nested data structure from the varbind list
without requiring the nesting information to be present in the
OID. I did not find a way to do the same thing dynamically at
run-time since you generally do not know where the OID nesting
ends and the instance identifier starts.
(e) The SMI-DS ID says in section 5.5 that hierarchical naming can
help to reduce implementation complexity for agent and application
developers for SNMP Set operations. The only benefit I can see is
that you can reduce a few RowStatus objects by the expense of
having larger set operations. I do not see how the hierarchical
naming scheme affects the complexity of having to support
arbitrariluy ordered and arbitrary complex set operations and the
issues with createAndWait and notInService states.
With my current understanding (which might miss important pieces - if
so, please correct me), weighting (b) against (d) and (e), I think
that the current SMIng approach provides a much better transition path
since we can continue to use all existing tools but we can improve
them to be much smarter in efficiently handling complex (reused) data
structures.
Sure, if you break (a) by defining new protocol operations which do
not anymore operate on a list of lexicographic variables but on
structured objects, things will be much different. But we do not have
such a protocol nor do we have proposals underway in EOS nor does the
charter tell me that we should work under the assumption that we have
such a protocol.
/js
--
Juergen Schoenwaelder <http://www.informatik.uni-osnabrueck.de/schoenw/>