YANG Module TagsDeutsche Telekomchopps@chopps.orgLabN Consulting, L.L.C.lberger@labn.netivandean@gmail.com
This document provides for the association of tags with YANG
modules. The expectation is for such tags to be used to help
classify and organize modules. A method for defining, reading
and writing a modules tags is provided, as well as an
augmentation to YANG library. Tags may be standardized and
assigned during module definition; assigned by implementations;
or dynamically defined and set by users. This document provides
guidance to future model writers and, as such, this document
updates .
The use of tags for classification and organization is fairly
ubiquitous not only within IETF protocols, but in the internet
itself (e.g., #hashtags). Tags can be usefully standardized, but
they can also serve as a non-standardized mechanism available
for users to define themselves. Our solution provides for both
cases allowing for the most flexibility. In particular, tags may
be standardized as well as assigned during module definition;
assigned by implementations; or dynamically defined and set by
users.
This document defines two modules. The first module defines a
list of module entries to allow for adding or removing of tags.
It also defines an RPC to reset a modules tags to the original
values. The second module defines an augmentation to YANG
Library to allow for reading a modules
tags.
This document also defines an IANA registry for tag prefixes
as well as a set of globally assigned tags.
provides guidelines for
authors of YANG data models. This section updates .
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 .
Note that lower case versions of these key words are used in
section where guidance is provided to
future document authors.
Each module has only one logical tag list; however, that tag
list may be accessed from multiple locations.
We define two tag list locations. The first location is used
for configuration and is a top level list of module entries
where each entry contain the list of tags. The second read-only
location is through the yang library under the module entry.
All tags have a prefix indicating who owns their definition. An
IANA registry is used to support standardizing tag prefixes.
Currently 3 prefixes are defined with all others reserved.
An IETF standard tag is a tag that has the prefix "ietf:". All
IETF standard tags are registered with IANA in a registry
defined later in this document.
A vendor tag is a tag that has the prefix "vendor:". These
tags are defined by the vendor that implements the module, and
are not standardized; however, it is recommended that the
vendor consider including extra identification in the tag name
to avoid collisions (e.g., vendor:super-duper-company:...).
A local tag is any tag that has the prefix "local:". These tags
are defined by the local user/administrator and will never be
standardized.
Any tag not starting with the prefix "ietf:", "vendor:" or
"local:" is reserved for future standardization.
Tags can become associated with a module in a number of ways. Tags
may be defined and associated at model design time, at
implementation time, or via user administrative control. As the
main consumer of tags are users, users may also remove any tag, no
matter how the tag became associated with a module.
A module definition SHOULD indicate a set of tags to be
automatically added by the module implementer. These tags MUST
be standard tags (). This does
imply that new modules may also drive the addition of new
standard tags to the IANA registry.
An implementation MAY include additional tags associated with a
module. These tags may be standard or vendor specific tags.
Tags of any kind can be assigned and removed with normal
configuration mechanisms. Additionally we define an RPC to reset
a module's tag list to the implementation default.
Implementations MUST ensure that a modules tag list is
consistent across any location from which the list is
accessible. So if a user adds a tag through configuration that
tag should also be seen when using the yang library
augmentation.
Implementations that do not support the reset rpc statement
(whether at all, or just for a particular rpc or module) MUST
respond with an YANG transport protocol-appropriate rpc layer
error when such a statement is received.
The "reset-tags" rpc statement is defined to reset a module's
tag list to the implementation default, i.e. the tags that are
present based on module definition and any that are added
during implementation time. This rpc statement takes module
identification information as input, and provides the list of
tags that are present after the reset.
The tree associated with the tags module is:
A modules tags can also be read using the yang library if a server supports both YANG library and
the augmentation defined below. If a server supports
ietf-module-tags and the YANG library it SHOULD also support the
ietf-library-tags module.
The tree associated with the defined augmentation is:
It's worth noting that a different yang module classification
document exists . That
document is classifying modules in only a logical manner and
does not define tagging or any other mechanisms. It divides yang
modules into 2 categories (service or element) and then into one
of 3 origins: standard, vendor or user. It does provide a good
way to discuss and identify modules in general. This document
defines standard tags to support style
classification.
This section updates .
A module SHOULD indicate, in the description statement of
the module, a set of tags that are to be associated with
it. This description should also include the appropriate
conformance statement or statements, using language for each tag.
One SHOULD only include conformance text if there will be tags
listed (i.e., there's no need to indicate an empty set).
The module writer may use existing standard tags, or use new
tags defined in the model definition, as appropriate. New
tags should be assigned in the IANA registry defined below,
see below.
This registry allocates tag prefixes. All YANG module tags SHOULD
begin with one of the prefixes in this registry.
The allocation policy for this registry is Specification Required
.
The initial values for this registry are as follows.
Other SDOs (standard organizations) wishing to standardize their
own set of tags could allocate a top level prefix from this
registry.
This registry allocates prefixes that have the standard prefix
"ietf:". New values should be well considered and not achievable
through a combination of already existing standard tags.
The allocation policy for this registry is IETF Review
.
The initial values for this registry are as follows.
[Editor's note: many of these tags may move to
if/when that
document is refactored to use tags.]
TagDescriptionReferenceietf:rfc8199:elementA module for a network element.ietf:rfc8199:serviceA module for a network service.ietf:rfc8199:standardA module defined by a standards organization.ietf:rfc8199:vendorA module defined by a vendor.ietf:rfc8199:userA module defined by the user.ietf:device:hardwareA module relating to device hardware (e.g., inventory).[This document]ietf:device:softwareA module relating to device software (e.g., installed OS).[This document]ietf:device:qosA module for managing quality of service.[This document]ietf:protocolA module representing a protocol.[This document]ietf:system-managementA module relating to system management (e.g., a system
management protocol).[This document]ietf:network-serviceA module relating to network service (e.g., a network
service protocol).[This document]ietf:oamA module representing Operations, Administration, and Maintenance.[This document]ietf:routingA module related to routing.[This document]ietf:routing:ribA module related to routing information bases.[This document]ietf:routing:igpAn interior gateway protocol module.[This document]ietf:routing:egpAn exterior gateway protocol module.[This document]ietf:signalingA module representing control plane signaling.[This document]ietf:lmpA module representing a link management protocol.[This document]