Network Working Group R. Presuhn, Ed.
Internet-Draft Retired
Intended status: Informational January 27, 2008
Expires: July 30, 2008
Requirements for a Configuration Data Modeling Language
draft-presuhn-rcdml-00
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on July 30, 2008.
Copyright Notice
Copyright (C) The IETF Trust (2008).
Abstract
This memo contains a compilation of requirements for a Configuration
Data Modeling Language. Although focusing on the needs of the
NETCONF Protocol, these requirements potentially have broader
applicability. Comments should be sent to ngo@ietf.org.
Presuhn Expires July 30, 2008 [Page 1]
Internet-Draft Data Modeling Language Requirements January 2008
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Taxonomy of Requirements . . . . . . . . . . . . . . . . . . . 4
2.1. Consequences of Netconf . . . . . . . . . . . . . . . . . 4
2.1.1. Notification Support . . . . . . . . . . . . . . . . . 5
2.1.2. Notification Definition #13 (Agreed) . . . . . . . . . 5
2.1.3. Notification Get #14 (NOT Agreed) . . . . . . . . . . 5
2.1.4. Define Actions (NOT Agreed) . . . . . . . . . . . . . 5
2.1.5. Locking #53 (Agreed) . . . . . . . . . . . . . . . . . 5
2.1.6. All Base Operations #56 (Agreed) . . . . . . . . . . . 5
2.1.7. Define new NETCONF Operations #60 (Agreed) . . . . . . 5
2.1.8. Separation of Operations and Payload #75 (Agreed) . . 5
2.2. Model Representation Requirements . . . . . . . . . . . . 5
2.2.1. Human Readable #3(Agreed) . . . . . . . . . . . . . . 6
2.2.2. Machine Readable #2 (Agreed) . . . . . . . . . . . . . 6
2.2.3. Textual Representation #18 (Agreed) . . . . . . . . . 6
2.2.4. Language Versioning Rules #35 (Agreed) . . . . . . . . 6
2.2.5. Document Information #34 (Agreed) . . . . . . . . . . 6
2.2.6. Ownership and Change Control #31 (Agreed) . . . . . . 6
2.2.7. Dependency Risk Reduction (Agreed) . . . . . . . . . . 6
2.2.8. Diff-Friendly #17 (Agreed) . . . . . . . . . . . . . . 6
2.2.9. Internationalization and Localization . . . . . . . . 6
2.2.10. Model Equivalence #42 (NOT agreed) . . . . . . . . . . 7
2.3. Reusability Requirements . . . . . . . . . . . . . . . . . 7
2.3.1. Modularity #20 (Agreed) . . . . . . . . . . . . . . . 7
2.3.2. Reusable Types #46 (Agreed) . . . . . . . . . . . . . 8
2.3.3. Reusable Definitions #30 (Agreed) . . . . . . . . . . 8
2.3.4. Modular extension #22 (Agreed) . . . . . . . . . . . . 8
2.4. Instance Data Requirements . . . . . . . . . . . . . . . . 8
2.4.1. Reference Pointers #7 (Agreed) . . . . . . . . . . . . 8
2.4.2. Default Values on the Wire (Agreed) . . . . . . . . . 8
2.4.3. Ordering . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.4. Validation . . . . . . . . . . . . . . . . . . . . . . 9
2.4.5. No Mixed Content #64 (Agreed) . . . . . . . . . . . . 10
2.4.6. Instance Canonicalization #69 (Agreed) . . . . . . . . 10
2.4.7. Character Set and Encoding (Agreed) . . . . . . . . . 10
2.4.8. Model Instance Localization (NOT Agreed) . . . . . . . 10
2.5. Semantic Richness Requirements . . . . . . . . . . . . . . 10
2.5.1. Human-Readable Semantics (Agreed) . . . . . . . . . . 10
2.5.2. Error Annotation #16 (Agreed) . . . . . . . . . . . . 10
2.5.3. Basic Types #45 (Agreed) . . . . . . . . . . . . . . . 11
2.5.4. Handling Opaque Data #50 (Agreed) . . . . . . . . . . 11
2.5.5. Handling Non-Opaque Data #51 (NOT Agreed) . . . . . . 11
2.5.6. Keys . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5.7. Simple Relationships . . . . . . . . . . . . . . . . . 11
2.5.8. Determine Schema Equivalence #42 (NOT Agreed) . . . . 12
2.5.9. Configuration Data and Beyond . . . . . . . . . . . . 12
Presuhn Expires July 30, 2008 [Page 2]
Internet-Draft Data Modeling Language Requirements January 2008
2.5.10. Defaults . . . . . . . . . . . . . . . . . . . . . . . 13
2.5.11. Formal Constraints . . . . . . . . . . . . . . . . . . 13
2.6. Extensibility Requirements . . . . . . . . . . . . . . . . 14
2.6.1. Language Extensibility . . . . . . . . . . . . . . . . 14
2.6.2. Model Extensibility . . . . . . . . . . . . . . . . . 14
2.6.3. Instance Data Extensibility . . . . . . . . . . . . . 15
2.7. Talking About Conformance . . . . . . . . . . . . . . . . 15
2.7.1. Conformance to the Modeling Language #74 (NOT
Agreed) . . . . . . . . . . . . . . . . . . . . . . . 15
2.7.2. Conformance to a Model #11 (Agreed) . . . . . . . . . 16
2.8. Techno-Political Constraints . . . . . . . . . . . . . . . 16
2.8.1. Standard Technology #1 (NOT Agreed) . . . . . . . . . 16
2.8.2. Translate Models to Other Forms #47 (Agreed) . . . . . 17
2.8.3. Minimize SMI Translation Pain #33 (NOT Agreed) . . . . 17
2.8.4. Generate Models from Other Forms #49 (NOT Agreed) . . 17
2.8.5. Isolate Models from Protocol #29 (NOT Agreed) . . . . 17
2.8.6. Library Support #39 (NOT Agreed) . . . . . . . . . . . 17
2.8.7. RFC 3139 Considerations . . . . . . . . . . . . . . . 17
2.8.8. RFC 3216 Considerations . . . . . . . . . . . . . . . 17
3. Requirement Interactions . . . . . . . . . . . . . . . . . . . 17
4. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1. Conformance to the Modeling Language . . . . . . . . . . . 18
4.2. Conformance to Schemas Defined Using the Modeling
Language . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.1. Client Conformance to Schemas . . . . . . . . . . . . 18
4.2.2. Server Conformance to Schemas . . . . . . . . . . . . 18
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
6. Security Considerations . . . . . . . . . . . . . . . . . . . 18
7. Character Set Considerations . . . . . . . . . . . . . . . . . 18
7.1. Character Set Considerations for Human-Readable
Descriptions . . . . . . . . . . . . . . . . . . . . . . . 19
7.2. Character Set Considerations for Element Labels . . . . . 19
7.3. Character Set Considerations for Model-specific Error
Messages . . . . . . . . . . . . . . . . . . . . . . . . . 19
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8.1. Normative References . . . . . . . . . . . . . . . . . . . 19
8.2. Informative References . . . . . . . . . . . . . . . . . . 19
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 19
Appendix B. Use Cases . . . . . . . . . . . . . . . . . . . . . . 19
B.1. Multi-Version Scenarios . . . . . . . . . . . . . . . . . 20
B.1.1. Tightly Coupled . . . . . . . . . . . . . . . . . . . 20
B.1.2. Loosely Coupled - Support Matrix . . . . . . . . . . . 20
B.1.3. Forwards Compatibility . . . . . . . . . . . . . . . . 20
B.1.4. Mixed-Mode Forwards and Backwards Compatibility . . . 20
B.1.5. Multiple Extensions . . . . . . . . . . . . . . . . . 20
Appendix C. Example Instance Documents . . . . . . . . . . . . . 21
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 21
Intellectual Property and Copyright Statements . . . . . . . . . . 22
Presuhn Expires July 30, 2008 [Page 3]
Internet-Draft Data Modeling Language Requirements January 2008
1. Introduction
THIS IS A VERY PRELIMINARY VERSION OF THIS MEMO. MOST POINTS ARE
STILL UNDER DISCUSSION BY THE DESIGN TEAM, AND MAY CHANGE AT ANY
MOMENT. IN PARTICULAR, INDICATIONS OF "AGREED" or "NOT AGREED" ARE
TO BE TAKEN CUM GRANO SALIS, AND EXAMPLES AND USE CASES ARE
FRAGMENTARY AT BEST.
Following discussions at the Vancouver IETF meeting (IETF 70), Dan
Romascanu organized a design team to work on Requirements for a
Configuration Data Modeling Language with participation from from the
Applications and the Operations and Management areas. This document
is that design team's product.
The principal goal of this document is to increase the chances for a
successful BOF in Philadelphia (IETF 71) aimed at deciding what needs
to be done to support the development of data models for
configuration in the IETF, focusing on the immediate requirements for
the NETCONF protocol [RFC4741]. To expedite the process the design
team started with existing requirements for data modeling languages
coming from the various teams working on new solutions or reusing
existing data modeling languages and tools. The team identified the
common requirements, as well as ones motivating particular choices
made in specific solutions.
The focus of the requirements described here is on the immediate
needs of the Operations and Management Area and the NETCONF protocol,
and builds on precedent work, such as [RFC3535]. The design team
recognizes that a data modeling language based on these requirements
MAY have applicability beyond NETCONF, and that consequently the
decision to support any of these requirements SHOULD always be
considered in the light of the potential impact on extensibility and
broader applicability envisioned.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
2. Taxonomy of Requirements
2.1. Consequences of Netconf
Some requirements are direct consequences of the way the NETCONF
protocol works, and might be inappropriate for a protocol-neutral
configuration data modeling language. Others relate more to the
information that NETCONF is managing.
Presuhn Expires July 30, 2008 [Page 4]
Internet-Draft Data Modeling Language Requirements January 2008
2.1.1. Notification Support
2.1.2. Notification Definition #13 (Agreed)
The solution should support defining notifications.
2.1.3. Notification Get #14 (NOT Agreed)
The solution should support defining notifications in a way such that
the same definition can also be polled. (i.e., do a get on the
instance). Some use cases are data change notifications as well as
being able to store and send alarm definitions with the same
definition. Note this makes log records much easier as well and may
simplify access control.
2.1.4. Define Actions (NOT Agreed)
The solution should provide a way to define specific actions to be
performed. Note that this is distinct from adding new operations
types to the protocol.
2.1.5. Locking #53 (Agreed)
The solution MUST NOT preclude fine grained locking. Make sure the
implications are understood.
2.1.6. All Base Operations #56 (Agreed)
It MUST be unambiguous how NETCONF [RFC4741] base operations work
with data defined under a model produced using the solution.
2.1.7. Define new NETCONF Operations #60 (Agreed)
The solution SHOULD provide a means to define new Netconf operations
and their parameters (base, vendor extensions, and so on) in the same
language as is used for defining models.
2.1.8. Separation of Operations and Payload #75 (Agreed)
If the solution provides a means for defining new NETCONF operations,
it should allow a clear separation between data model definitions and
the definition of new NETCONF operations.
2.2. Model Representation Requirements
Presuhn Expires July 30, 2008 [Page 5]
Internet-Draft Data Modeling Language Requirements January 2008
2.2.1. Human Readable #3(Agreed)
The solution MUST support a human-readable representation of data
models.
2.2.2. Machine Readable #2 (Agreed)
The solution MUST support a machine-readable representation of data
models.
2.2.3. Textual Representation #18 (Agreed)
The solution MUST support definitions which are text-based. It MAY
support other representations. It MUST be possible to represent
model definitions as ASCII text in 72 columns so standard data models
can be included in RFCs.
2.2.4. Language Versioning Rules #35 (Agreed)
The language itself MUST be versioned.
2.2.5. Document Information #34 (Agreed)
The solution MUST provide a means to specify document information for
a data model, such as when it was created, its revision history,
contact, and so on.
2.2.6. Ownership and Change Control #31 (Agreed)
It MUST be clear who owns the data modelling framework, e.g., the
IETF.
2.2.7. Dependency Risk Reduction (Agreed)
In cases where a proposed solution depends on other specifications,
there MUST be a way to reference the specific versions required, in
case that specification evolves in incompatible ways.
2.2.8. Diff-Friendly #17 (Agreed)
It MUST be possible for an operator using existing tools such as
"diff" to determine what has changed between two versions of a data
model.
2.2.9. Internationalization and Localization
There are several requirements associated with issues related to
languages and character sets.
Presuhn Expires July 30, 2008 [Page 6]
Internet-Draft Data Modeling Language Requirements January 2008
2.2.9.1. Descriptions using Local Languages #19 (Agreed)
The solution MUST be able to support the use of Unicode text in to
provide human readable descriptions of information semantics in a
model definition. This is effectively required by [RFC2277].
2.2.9.2. UTF-8 Encoding (Agreed)
It MUST be possible to encode model definitions using UTF-8. This is
effectively required by [RFC2277] as a consequence of the need for a
textual representation and the need to include description in the
model definer's language of choice.
2.2.9.3. Localization Support (Agreed)
The solution MUST outline how localization of an existing model would
proceed. The strong preference of members of the design team was to
treat model localization as a user interface issue. The solution
MUST be in alignment with the guidance given by [RFC2277].
2.2.9.4. Error String Localization #66 (Agreed)
The solution MUST NOT preclude localization of error strings for user
display.
2.2.9.5. Tag Names and Strings in Local Languages #67 (NOT agreed)
The solution SHOULD be able to support the use of Unicode text for
tag names and strings in definitions. Note that this is not a
question of internationalization and localization, but rather the use
of Unicode for what are effectively protocol elements in an instance
document for a model defined using the solution. Even if a solution
does support the use of Unicode text for tag names and strings in
definitions, it SHOULD provide guidance on the use of an ASCII subset
for tags.
2.2.10. Model Equivalence #42 (NOT agreed)
It should be possible to test the equivalence of model definitions,
even if they are not textually identical.
2.3. Reusability Requirements
2.3.1. Modularity #20 (Agreed)
The solution MUST provide a means to define data models in discrete
pieces.
Presuhn Expires July 30, 2008 [Page 7]
Internet-Draft Data Modeling Language Requirements January 2008
2.3.2. Reusable Types #46 (Agreed)
The solution MUST provide a means to define reusable types.
2.3.3. Reusable Definitions #30 (Agreed)
The solution MUST support a way to reuse definitions from another
model. An example of such a capability is IMPORTS.
2.3.4. Modular extension #22 (Agreed)
It should be possible to extend a data model without modifying the
existing models.
2.4. Instance Data Requirements
This section contains specific requirements on what an instance
document for a model defined using the solution should look like.
2.4.1. Reference Pointers #7 (Agreed)
The solution should support defining cross references between
elements in different hierarchies. This should be a formal machine
readable definition rather than the value of an implicitly known
field. Should support 1-1 and 1-many relationships.
2.4.2. Default Values on the Wire (Agreed)
The solution MUST specify how default values affect what is and is
not explicitly encoded in an instance document. Possibilities
include a default-free data modeling language, protocol-specific
default handling, or protocol-independent prescriber behavior.
2.4.3. Ordering
The requirements in this section could use a better re-factoring.
Terminological cleanup would also help.
2.4.3.1. Disordered Lists #32 (NOT Agreed)
Support the ability to send child elements in a container in any
order. (This is ambiguous. Does it mean that it should be possible
to pick any arbitrary order, and specify that that is the order to
use, or does it mean that the order of elements in a list is
specified to not be deterministic, or does it merely mean that the
order of elements has no semantic significance?)
Presuhn Expires July 30, 2008 [Page 8]
Internet-Draft Data Modeling Language Requirements January 2008
New Requirement (of instances of the same element)
1
2
(someone needs to explain what the heck this means)
2.4.3.2. Disorder Lists #62 (NOT Agreed)
Support the ability to specify that child elements in a list will be
sent in any order. (The only difference from the previous item is
"specify" rather than "send".)
2.4.3.3. Ordered Lists #61 (NOT Agreed)
Support the ability to send child elements in a list in strict order.
(Is the intent that the order should be semantically significant?)
2.4.3.4. Ordered Lists #63 (NOT Agreed)
Support the ability to specify that child elements in a list will be
sent in a strict order. (The only difference from the previous item
is "specify" rather than "send".)
2.4.3.5. Order Matters #71 (NOT Agreed)
It should be possible to specify whether order is semantically
significant. (Note there may be other reasons to order other than
semantics.)
2.4.3.6. Interleaving #48 (Agreed)
It should be possible to add new child elements anywhere in a list.
Inside a set of elements that do not have an inherent semantic order,
it should be possible to intermix new elements and existing elements
in any order underneath the common parent. (This could also belong
with the extensibility requirements.)
2.4.4. Validation
2.4.4.1. Validate Instance Data #40 (Agreed)
It should be understood how to make sure an instance of a data model
is well-formed and valid (in terms of the schema, etc.)
Presuhn Expires July 30, 2008 [Page 9]
Internet-Draft Data Modeling Language Requirements January 2008
2.4.4.2. Tools to Validate Instance Data #41 (NOT Agreed)
The solution should support a means of determining whether an
instance document is a valid instance of a model.
2.4.5. No Mixed Content #64 (Agreed)
The solution MUST NOT support mixed content, i.e., mixing tags and
data together, other than to treat it as opaque information.
2.4.6. Instance Canonicalization #69 (Agreed)
The solution should support a canonicalized version of the instance.
This is a transform which can put the data in a form which is
suitable for comparison. This means that the rules for
canonicalization needs to be specified based on something like XML
digital signature specification. Common sense should be used to not
overdo it. This does not imply that there is any requirement for
data on the wire to be sent in canonicalized form. Details to be
determined later by working group.
2.4.7. Character Set and Encoding (Agreed)
The solution should support the creation of models which can handle
human-readable information in any language in an instance document.
In keeping with [RFC2277], this means that models MUST be able to
handle UTF-8 data appropriately.
2.4.8. Model Instance Localization (NOT Agreed)
Tags and other human-readable portions of an instance of a model
should be localizable.
2.5. Semantic Richness Requirements
2.5.1. Human-Readable Semantics (Agreed)
The solution MUST provide a means for the developer of an information
model to associate human-readable text with components of that model,
in order to describe their semantics and use.
2.5.2. Error Annotation #16 (Agreed)
The solution MUST be able to define specific error messages for a
given element. Note that this could interact with support for
internationalization and localization.
Presuhn Expires July 30, 2008 [Page 10]
Internet-Draft Data Modeling Language Requirements January 2008
2.5.3. Basic Types #45 (Agreed)
The solution should define frequently used types. Note this can also
be done in the data model content.
2.5.4. Handling Opaque Data #50 (Agreed)
It should be possible to perform certain operations on opaque data.
This means that completely replacing the data should be supported,
but not merging, for example. This data potentially does not conform
to any schema definition, but is well-formed XML.
2.5.5. Handling Non-Opaque Data #51 (NOT Agreed)
It should be possible to support all NETCONF operations on non-opaque
data that is not conformant to a schema definition.
2.5.6. Keys
2.5.6.1. Define Keys #6 (Agreed)
The solution should support defining keys to data (i.e. the
collection of fields which define uniqueness for an element or a
specially created identifier ala ifIndex or xml id.)
2.5.6.2. Deep Keys #54 (NOT Agreed)
The solution SHOULD support making keys from elements which are not
the immediate descendents of the element being "keyed".
Example...
What does this example show?
2.5.7. Simple Relationships
2.5.7.1. (NOT Agreed)
define reference pointers for 1:1 and 1:n relationships
2.5.7.2. Many-to-Many Relationships #8 (NOT Agreed)
The solution should support defining many to many cross reference
relationships.
Presuhn Expires July 30, 2008 [Page 11]
Internet-Draft Data Modeling Language Requirements January 2008
2.5.7.3. Retrieve Relationships #52 (NOT Agreed)
It should be possible to retrieve the data, including relationships
between elements. Relationships SHOULD be visible in instances. For
example, "this port is associated with card 12".
2.5.7.4. Referential Integrity #25 (NOT Agreed)
It should be possible to describe in the language that validation (at
configuration create / merge time) of data cross references is
required for a given piece of the model. For example, it should be
possible to verify that related data exists, and reject a
configuration if it is does not. Note this is only performed when a
NETCONF operation is being done. There is no requirement to maintain
this integrity over time and report issues. Cross references are
only within a given device's configuration (see also extended
referential integrity requirement)
2.5.7.5. Extended Referential Integrity #58 (NOT Agreed)
It should be possible to support more complex validating of instance
data cross references. Examples, pre-provisioning, validating
against unreachable resources (not just configuration data present on
the device - non-configuration data on this device or configuration
on other devices)
2.5.7.6. Referential Integrity Recovery #73 (NOT Agreed)
It should be possible to support validating of instance data cross
references and indicating the action to be taken if expected
references are not available beyond simply erroring.
2.5.8. Determine Schema Equivalence #42 (NOT Agreed)
It should be possible to determine whether schemas are equivalent
even if they are not identical in the way they were defined.
2.5.9. Configuration Data and Beyond
2.5.9.1. Define Configuration Data #4 (Agreed)
The solution should be able to model configuration data.
2.5.9.2. Define Non-Configuration Data #5 (Agreed)
The solution should be able to model non-configuration data.
Presuhn Expires July 30, 2008 [Page 12]
Internet-Draft Data Modeling Language Requirements January 2008
2.5.9.3. Characterize Data #9 (Agreed)
The solution MUST support characterizing data definitions as
configuration or non-configuration. The solution MAY support further
characterization, such as identifying status or statistics.
2.5.10. Defaults
2.5.10.1. Default Values #10 (NOT Agreed)
The solution should support defining default values for elements. If
you do not specify this value when creating, the other end will
assume the value in the default. The solution should specify how
this feature interacts with backwards compatibility,
canonicalization. The solution should specify what conformance to
this means if you use a different default value.
2.5.10.2. Static Defaults #44 (NOT Agreed)
The solution must support static default values.
2.5.10.3. Dynamic Defaults #44 (NOT Agreed)
The solution must support dynamic default values.
2.5.11. Formal Constraints
2.5.11.1. Formal Description of Constraints #23 (Agreed)
It should be possible to specify constraints on the value of an
element such as uniqueness, ranges, patterns, etc. These constraints
can be evaluated in isolation and not related to other elements.
2.5.11.2. Multi-element Constraints #24 (NOT Agreed)
It should be possible to indicate constraints on an element which
involve another element of the configuration. If the value of an
MTU, for example depends on the ifType. (Additional cases:
dependency on some non-configuration data, such as presence of a
particular piece of hardware, or inter-system constraints.)
2.5.11.3. Non-Key Uniqueness #68 (Agreed)
It should be possible to specify constraints on uniqueness of non-key
data elements. The scope of the uniqueness must be specified parent,
device, etc.) The extent of checking and enforcement needs to be
spelled out. For a model to be valid, must this constraint always
hold true? Or is it only required to be true at the time of creation
Presuhn Expires July 30, 2008 [Page 13]
Internet-Draft Data Modeling Language Requirements January 2008
or merger?
2.6. Extensibility Requirements
2.6.1. Language Extensibility
2.6.1.1. Language Versioning #35 (Agreed)
The modeling language itself should be versioned.
2.6.1.2. #21 (NOT Agreed)
It should be possible for the NETCONF server implementer to extend
the language. This means extensibility of the language by the user
of the data modeling language, to add new statements or functionality
to the language. {Randy wonders why it talks about "server
implementer". The server really doesn't even need to know the
modeling language exists.)
It is useful for two things: - standards evolution - proprietary /
vendor-specific annotations Extensibility should be done in a way
that unknown extensions may be ignored.
2.6.1.3. Mandatory Extensions #57 (NOT Agreed)
It should be possible to label some language extensions as must-
understand. If the extension is not understood, then an error is
produced. [What is the scope of the error? How is it learned?]
2.6.1.4. Must-Understand Extensions #70 (NOT Agreed)
The solution should support defining language extensions which the
client must understand or otherwise error.
2.6.2. Model Extensibility
2.6.2.1. Model Version Identification #36 (Agreed)
Different versions of a given schema should be unambiguously
identified. This assumes that the schema itself can be uniquely
identified.
2.6.2.2. # (NOT Agreed)
define interactions with defaults
Presuhn Expires July 30, 2008 [Page 14]
Internet-Draft Data Modeling Language Requirements January 2008
2.6.2.3. # (NOT Agreed)
define interactions with conformance
2.6.2.4. Obsolete Portions of a Model #15 (Agreed)
The solution MUST provide a way to signify that elements of a schema
are obsolete.
2.6.3. Instance Data Extensibility
2.6.3.1. # (NOT Agreed)
The solution should provide a means to determine what schema version
was used to generate an instance document.
2.6.3.2. # (NOT Agreed)
define interactions with defaults
2.6.3.3. Backwards Compatibility #43 (Agreed)
The solution should support the ability to extend the model and still
be usable to use it. A NETCONF client familiar with an older version
of the schema should still be able to function. An old client should
be able to work with a new server.
2.6.3.4. Forwards Compatibility #72 (NOT Agreed)
The solution should support the ability to extend the model and still
interoperate with older versions. A NETCONF client employing a newer
version of the schema should still be able to function with a server
using an older version.
2.6.3.5. Must-Understand Extensions #77 (NOT Agreed)
The solution should support defining content extensions which the
client must understand or otherwise error. Adding mandatory objects
to an update to a Schema for example.
2.7. Talking About Conformance
2.7.1. Conformance to the Modeling Language #74 (NOT Agreed)
It must be understood how to evaluate whether or not a tool supports
the chosen solution.
Presuhn Expires July 30, 2008 [Page 15]
Internet-Draft Data Modeling Language Requirements January 2008
2.7.2. Conformance to a Model #11 (Agreed)
The solution should support indicating compliance requirements for a
Schema. Note this does not necessarily imply it needs to be separate
definition from the actual content.
2.7.2.1. Conditional Conformance #65 (NOT Agreed)
The solution should provide a means of providing conditional
compliance. If this is MPLS, then you need the following stuff
supported, for example.
2.7.2.2. Optional or Mandatory #26 (Agreed)
The solution MUST support a method of indicating whether support of
an object is required in order to claim conformance to a particular
schema.
2.7.2.3. Optional and Mandatory Instance #59 (NOT Agreed)
The solution should support a method of indicating whether presence
of an object is required in order to be a valid configuration.
[Mandatory to use (in a create) as NETCONF client as oppose to
mandatory to implement on NETCONF server]
2.7.2.4. Versioned Conformance #12 (NOT Agreed)
The solution should provide a means of specifying what is required
for compliance when the schema is updated.
2.7.2.5. (NOT Agreed)
model conformance: client
2.7.2.6. (NOT Agreed)
model conformance: server
2.8. Techno-Political Constraints
2.8.1. Standard Technology #1 (NOT Agreed)
The solution should leverage existing widely used language and tools
to define the content. [what is meant by "the content"?] Redefining
as little as possible the work that w3c and other relevant bodies
have already done.
Presuhn Expires July 30, 2008 [Page 16]
Internet-Draft Data Modeling Language Requirements January 2008
2.8.2. Translate Models to Other Forms #47 (Agreed)
The solution should support the ability to translate to Relax NG and
XML Schema. Any proposed solution will describe whether this
translation is lossy or lossless and if lossy, what information is
lost.
2.8.3. Minimize SMI Translation Pain #33 (NOT Agreed)
Minimize translation pain from SMI into Netconf content. Translation
of Netconf content into SMI is not a consideration.
2.8.4. Generate Models from Other Forms #49 (NOT Agreed)
The solution should support higher level modelling languages.
Translate from UML, for example. (Possible or existing tools?)
2.8.5. Isolate Models from Protocol #29 (NOT Agreed)
The data model should not be too tightly coupled to the NETCONF
protocol. It should be possible to evolve the NETCONF protocol and
data models independently. One use case is that it should also be
possible to transport the data model instance (NETCONF content) over
other protocols, such as FTP.
2.8.6. Library Support #39 (NOT Agreed)
The solution should have wide support from development languages C,
etc.
2.8.7. RFC 3139 Considerations
expand into other categories from final table
2.8.8. RFC 3216 Considerations
expand into other categories
3. Requirement Interactions
4. Conformance
Presuhn Expires July 30, 2008 [Page 17]
Internet-Draft Data Modeling Language Requirements January 2008
4.1. Conformance to the Modeling Language
A solution MUST spell out what is meant by "conformance" to that
particular modeling language specification.
4.2. Conformance to Schemas Defined Using the Modeling Language
When a solution is used to define specific data models, it is
important to be able to know what is meant by a claim of
"conformance" to as particular model.
4.2.1. Client Conformance to Schemas
A solution MUST spell out whether a means for specifying client
conformance to a schema exists. If such a means exists, it SHOULD
allow an automated determination of the elements (and possibly
subtypes or extensions) which MUST be processed (and not merely
ignored) by a server handling the response to NETCONF get-config
operation.
Note that one could formulate this in terms of what is sent in an
edit-config operation, but that could be problematic if the solution
supports some types of defaults.
4.2.2. Server Conformance to Schemas
A solution MUST spell out whether a means for specifying server
conformance to a schema exists. If such a means exists, it SHOULD
allow an automated determination of the elements (and possibly
subtypes or extensions) which MUST be processed (and not merely
ignored) by a server handling a NETCONF edit-config create or merge
operation.
5. IANA Considerations
This document requires no action by IANA. Specifications based upon
these requirements will specify what, if any, IANA considerations are
appropriate.
6. Security Considerations
7. Character Set Considerations
Presuhn Expires July 30, 2008 [Page 18]
Internet-Draft Data Modeling Language Requirements January 2008
7.1. Character Set Considerations for Human-Readable Descriptions
7.2. Character Set Considerations for Element Labels
7.3. Character Set Considerations for Model-specific Error Messages
8. References
8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2277] Alvestrand, H., "IETF Policy on Character Sets and
Languages", BCP 18, RFC 2277, January 1998.
8.2. Informative References
[RFC3535] Schoenwaelder, J., "Overview of the 2002 IAB Network
Management Workshop", RFC 3535, May 2003.
[RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741,
December 2006.
Appendix A. Acknowledgements
This members of the design team that produced this document were:
Martin Bjorklund
Sharon Chisholm
Alex Clemm
Rohan Mahy
Chris Newman
David Partain
Randy Presuhn
Many of the ideas gathered here were extracted from discussions held
at various IETF meetings and on IETF mailing lists.
Appendix B. Use Cases
The use cases presented here were chosen to illustrate requirements
which proved contentious or were not agreed by the members of the
design team or otherwise needed clarification. For requirements
which were not contentious, we did not specifically devise use cases.
Presuhn Expires July 30, 2008 [Page 19]
Internet-Draft Data Modeling Language Requirements January 2008
B.1. Multi-Version Scenarios
The following discusses typical deployment scenarios behind backwards
and forewords requirements.
B.1.1. Tightly Coupled
This is the simplest case. This is where the application which
manages the device is upgraded at the same time as the devices and
only needs to worry about managing a single version of a single type
of network element. Tightly coupled solutions can be costly and
impractical, so are not a realistic solution to the problem of
version management.
B.1.2. Loosely Coupled - Support Matrix
It is more typical that a single application is required to support
different types of network elements and often more than one version
of that network element. A support window of the current version and
some set of older versions is commonly assumed. It should be
possible to support multiple versions of the same schema with as few
changes to application code (including data-driven configuration) as
possible.
B.1.3. Forwards Compatibility
There are a number of reasons that the management application might
not be upgraded when network elements are upgraded, including being
developed by a third party releasing on a different cadence. In this
case, the earlier version of the management application should be
able to continue to provide the same level of support against the
newer versions of the schema as it did in the older version.
B.1.4. Mixed-Mode Forwards and Backwards Compatibility
In mixed mode, different network elements, all supporting different
versions of the schema are present. There are also different
applications in the network, which each support different versions of
the schema.
All the applications should be able to support all the versions of
the schema. As in the case of forwards compatibility, best effort
support will be provided.
B.1.5. Multiple Extensions
This case is the same as the mixed-mode case above, except that
different network element support zero, one or more extensions to the
Presuhn Expires July 30, 2008 [Page 20]
Internet-Draft Data Modeling Language Requirements January 2008
model.
Appendix C. Example Instance Documents
The instance documents presented here are examples to illustrate
specific requirements or their possible consequences.
Author's Address
Randy Presuhn (editor)
Retired
Email: randy_presuhn@mindspring.com
Presuhn Expires July 30, 2008 [Page 21]
Internet-Draft Data Modeling Language Requirements January 2008
Full Copyright Statement
Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
Presuhn Expires July 30, 2008 [Page 22]